判断一个点是否在多边形内部 如何判断一个点是否在一个多边形内?
如何判断一个点是否在一个多边形内?
假设多边形的坐标存储在一个数组中。首先,我们需要得到阵列在横坐标和纵坐标上的最大值和最小值,并根据这四个点计算出一个四边形。首先要判断目标坐标点是否在四边形内。如果在四边形之外,我们可以跳过更复杂的计算,直接返回false。
//我不能通过这个测试。。。直接返回false;
下一步是核心算法部分:
首先,参数nvert表示多边形的几个点。浮点数testx和testy分别表示待测点的横坐标和纵坐标,*vertx和*verty分别表示多边形横坐标和纵坐标数组的第一个地址。
我们注意到每个计算都涉及两个相邻点和要测试的点,然后考虑两个问题:verty[J]<testy< verty[i
]2?如果你不明白If语句的后半部分,请在纸上写下I和j之间的斜率公式。在初中阶段你需要运用一点解析几何和不等式的知识。对于大多数代码农民来说,这是小菜一碟。
速求c语言编程,给定n个点的坐标,这n个点依次围成一闭合多边形,再给一点(x,y),判断它是否在多边形中?
程序代码如下(直接应用函数pnpoly):
int pnpoly(int nvert,float*vertx,float*verty,float testx,float testy)
{
int i,J,C=0
for(i=0,J=nvert-1,i
if((verty[i]>testy)!=(verty[J]>testy))&
](testx
C=!C
}
]返回C
}
]参数说明:
nvert:多边形的顶点数
vertx,Verty:顶点的X和Y坐标数组
testx,testy:被测点的X和Y坐标
扩展数据
]判断一个点是否在多边形内最简单的方法是使用射线法,因为它可以应用于所有类型的多边形,而不考虑特殊情况,而且速度相对较快。
该算法的思想非常简单:在多边形外的任意点向P(x,y)绘制一条虚拟光线,然后计算光线与多边形边缘相交的次数。如果阶数是偶数,则P(x,y)在多边形之外。如果是奇数,P(x,y)在多边形内。
怎么利用多边形顶点坐标求多边形面积?
第31章,第1节,问题8。只要是边不相交的简单多边形,即不仅是凸多边形,而且是各种奇形凹多边形,就可以用格林公式计算面积。格林公式:如果函数P(x,y),q(x,y)在由一条或多条光滑曲线围成的封闭区域D内是连续的,且具有连续的一阶偏导数,则l是区域D的边界曲线,取正方向。边不相交的简单多边形是一个由多条线段包围的闭合区域,因此可以使用格林公式。设P=0,q=x,面积s=i点的坐标为,i点的坐标为,则线段的参数表达式为,so,so,面积。上面的公式可以计算任何简单多边形的面积,包括三角形、四边形和六边形。Python实现:
判断一个点是否在多边形内部 判断点是否在多边形内算法 点是否在多边形内算法
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。