c怎么判断点在不规则的四边形内,c 怎么判断1个点在一个不规则的四边形内

2021-03-11 07:32:55 字数 1604 阅读 3768

1楼:匿名用户

这个是属来于计算几何算法了,判

源断一个点是否属于任意多边形,就要以这个点为横坐标,画一条横向射线,如果和多边形的交点个数为奇数则在多边形内,否则就在外,特殊情况:

1、当射线与其中一条边重合,那么边忽略不计;

2、当射线与其中一顶点相交(外凸),交点只能计算一个;

3、当射线与其中一顶点相交(内凹),交点不应被计算;

下面为伪**:

count ← 0;

以(x,y)为端点,作从右向左的射线l;

for 多边形的每条边s

do if (x,y)在边s上

then return true;

if s不是水平的

then if s的一个端点在l上

if 该端点是s两端点中纵坐标较大的端点

then count ← count+1

else if s和l相交

then count ← count+1;

if count mod 2 = 1

then return true;

else return false;

2楼:匿名用户

你好 我认为判断一个点是不是在一

个不规则的多边形内,

可用面积相等法;内

设此多容边形的面积为s;

然后将该点与多边形的个定点连起来;

于是便将这个多边形分成了许多小三角形;

若这些小三角形的面积之和等于s;则说明该点在多边形里。

mfc:判断点是否在某一区域

3楼:小逸纱布

1.判断一点是否在矩形区域内的方法:

crect rc (point_1,point_2);//构造矩形区域

调用crect::ptinrect

bool flag = rc.ptinrect(point_key);if (flag)else点point_key不在构造的矩形区域内;

2.判断一点是否在否个多边形区域内的方法:

用crgn::createpolygonrgn

这个函数,构造一个区域

crgn rgna ;

cpoint ptvertex[3];

ptvertex[0] = point_1;

ptvertex[1] = point_2;

ptvertex[2] = point_3;

//这里只说明三角形的情况,其他类比即可!

rgna.createpolygonrgn(ptvertex , 3 , alternate);

然后再调用ptinregion去判断

bool flag= rgna.ptinregion(point_key);if (flag)else点point_key不在构造的多边形区域内;

3.判断一点是否在椭圆形区域内crgn rgnb;rgnb.createellipticrgn(point_1.

x,point_1.y,point_2.x,point_2.

y);bool flag = rgnb.ptinregion(point_key);if (flag)else点point_key不在rgnb区域内;

怎么判断点是否在圆内,怎么判断一个点是否在一个圆内

1楼 匿名用户 连接这个点和圆心,若这个点和圆心的距离小于圆的半径,则该点在圆内。 2楼 匿名用户 根据点到圆心距离与半径比较大小 怎样计算一个点是否在圆内? 3楼 匿名用户 一个点的xy坐标能满足圆方程 的,表示这个点在这个圆方程所在的曲线上 假设圆方程是 中心为 0,0 半径为1的圆的方程 x ...