我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何理解C++实现程序方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何理解C++实现程序方法

这篇文章将为大家详细讲解有关如何理解C++实现程序方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

C++实现程序解决问题,本程序采用射线法,由待测试点(v)水平引出一条射线B(v,w),计算B与vl边线的交点数目,判断点是否落在外包矩形内。

采用射线法判断点是否在多边形内的C++语言程序。多年前,我自己实现了这样一个算法。但是随着时间的推移,我决定重写这个代码。

这是个C++语言的小算法的C++实现程序,本来不想放到这里。可是,当我自己要实现这样一个算法的时候,想在网上找个现成的,考察下来竟然一个符合需要的也没有。我对自己大学读书时写的代码没有信心,所以,决定重新写一个,并把它放到这里,以飨读者。也增加一下BLOG的点击量。

本算法里所指的多边形,是指由一系列点序列组成的封闭简单多边形。它的首尾点可以是或不是同一个点(不强制要求首尾点是同一个点)。这样的多边形可以是任意形状的,包括多条边在一条绝对直线上。因此,定义多边

为加快判别速度,首先计算多边形的外包矩形(rect_t),判断点是否落在外包矩形内,只有满足落在外包矩形内的条件的点,才进入下一步的计算。为此,引入外包矩形结构rect_t和求点集合的外包矩形内的方法vertices_get_extent。

int pt_in_poly ( const vertex_t* vl, int np,    const vertex_t* v)   {   int i, j, k1, k2, c;   rect_t rc;   vertex_t w;   if (np < 3)   return 0;   vertices_get_extent(vl, np, &rc);   if (v->x < rc.min_x || v->x > rc.max_x || v->y < rc.min_y || v->y > rc.max_y)   return 0;      w.x = rc.max_x + DBL_EPSILON;   w.y = v->y;   c = 0;    for(i=0; i    {   j = (i+1) % np;   if(is_intersect(vl+i, vl+j, v, &w))   {   c++;   }   else if(vl[i].y==w.y)   {   k1 = (np+i-1)%np;   while(k1!=i && vl[k1].y==w.y)   k1 = (np+k1-1)%np;   k2 = (i+1)%np;   while(k2!=i && vl[k2].y==w.y)   k2 = (k2+1)%np;   if(k1 != k2 && is_same(v, &w, vl+k1, vl+k2)==0)   c++;   if(k2 <= i)   break;   i = k2;   }   }   return c%2;   }

本想配些插图说明问题,但是,C++实现程序的文章里放图片我还没用过。实践证明,本程序算法的适应性极强。但是,对于点正好落在多边形边上的极端情形,有可能得出2种不同的结果。

关于如何理解C++实现程序方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何理解C++实现程序方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何理解C++实现程序方法

这篇文章将为大家详细讲解有关如何理解C++实现程序方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++实现程序解决问题,本程序采用射线法,由待测试点(v)水平引出一条射线B(v,w),计
2023-06-17

如何理解Python绑定C++程序的具体实现方法

本篇文章给大家分享的是有关如何理解Python绑定C++程序的具体实现方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Python编程语言的应用范围比较广泛,应用方式灵活,可
2023-06-17

C#如何实现简单订单管理程序

这篇文章主要介绍“C#如何实现简单订单管理程序”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C#如何实现简单订单管理程序”文章能帮助大家解决问题。订单管理的控制台程序,能够实现添加订单、删除订单、修
2023-06-30

C#中程序自删除实现方法

这篇文章主要介绍了C#程序自删除实现方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-01-28

C++如何实现二分法求方程

这篇文章将为大家详细讲解有关C++如何实现二分法求方程,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。二分法是一种求解方程近似根的方法。对于一个函数 f(x)f(x),使用二分法求 f(x)f(x) 近似解
2023-06-15

如何理解Python程序转为EXE文件的正确实现方法

这篇文章给大家介绍如何理解Python程序转为EXE文件的正确实现方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在Python编程语言中,开发出的程序可以转换成EXE文件来实现一些特定的操作。在这里我们将会为大家详
2023-06-17

C#WinForm实现自动更新程序的方法详解

这一篇就着重写一下客户端的代码,客户端主要实现的有:启动后检测本地的xml文件,然后发送到服务器获取需要更新的文件以及版本列表,感兴趣的小伙伴可以了解一下
2022-11-13

C++如何实现聊天小程序

今天小编给大家分享一下C++如何实现聊天小程序的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。涉及的技术:c++网络编程c++
2023-06-08

C++如何实现Stack方法

这篇“C++如何实现Stack方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++如何实现Stack方法”文章吧。sta
2023-07-02

VS2019如何实现C++的MFC程序

这篇文章主要介绍了VS2019如何实现C++的MFC程序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、创建项目然后点下一步,配置项目,这里我命名的是myfisrtmfc点
2023-06-15

如何理解C++多态的实现过程

如何理解C++多态的实现过程,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。多态描述的是使用基类的指针或引用操作多个类型的能力。我们知道,子类的指针是可以隐式转化为父类的,所
2023-06-17

详解C#WinForm如何实现自动更新程序

在C/S这种模式中,自动更新程序就显得尤为重要,它不像B/S模式,直接发布到服务器上,浏览器点个刷新就可以了。本文就为大家准备了WinForm实现自动更新程序的示例代码,需要的可以参考一下
2022-11-13

c语言如何实现排序算法

小编给大家分享一下c语言如何实现排序算法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.选择排序-简单选择排序选择排序是最简单的一种基于O(n2)时间复杂度的排
2023-06-15

C++如何实现希尔排序算法

这篇“C++如何实现希尔排序算法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++如何实现希尔排序算法”文章吧。1.代码模
2023-06-26

如何理解C#虚拟方法

这期内容当中小编将会给大家带来有关如何理解C#虚拟方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。当类中的方法声明前加上了virtual修饰符,我们称之为C#虚拟方法 ,反之为非虚。使用了virtual
2023-06-17

C++如何实现归并排序算法

这篇文章将为大家详细讲解有关C++如何实现归并排序算法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。归并算法开始首先要对一段要有序的数字进行排序void merg_sort(int* a, int fbe
2023-06-25

如何实现C#扩展方法

这篇文章将为大家详细讲解有关如何实现C#扩展方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在我们的编程生涯中我们要使用很多很多类库,这些类库有的是我们自己开发的,我们有她的代码,有的是第三方发布的,我
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录