[原创] 请教:如何判断一坐标点在四边形内还是在四边形外?
已知条件:四边形的顶点坐标,另一坐标点的坐标。判 断:该点和四边形的关系,内,外还是在边上?
在这给个算法
如上图,要判断点E是否在四边形ABCD内部或外部或在某条边上。
可以判断点E是否在三角形ABC及三角形BCD内。若点E在三角形ABC内部,则三角形ABE的面积+三角形BCE的面积+三角形ACE的面积=三角形ABC的面积。反之则点E在三角形ABC外部。若点E的三角形的某条边上,则相应面积为零。根据点E与三角形ABC和BCD的位置关系不难得出点E与四边形ABCD的位置关系。
附上三角形面积计算:
设a,b,c为三角形三条边长,令s=(a+b+c)/2,则面积为
sqrt(s(s-a)(s-b)(s-c))
千万要注意:
leeyeafu大虾的算法非常好,但千万要注意一点:即E点在BC线上的情况。当E点在BC线上,且不是点B或C时,E点应在四边形内。不能因为按说明“若点E在三角形的某条边上,则相应面积为零”,得出点E在两三角形的边上,而判断出点E在四边形的边上。Re: 判断点的位置
在CAD基础技术中,有一种算法是用射线法来判断一点与多边形的位置,可以参考一下。对于四边形更简单,如果点与四边形的交点为奇数,那么位于四边形的内部,如果交点为偶数,那么位于外部,在四边形的边上的算法就是依次判断点在直线上的问题。如何判断一坐标点在四边形内还是在四边形外?
《电脑爱好者》发表过有关点与多边形关系的擂台比赛文章。要注意的还不止这些
要保证BC边确是四边形的对角线,另外还要注意四边形是凹四边形的情况。另外,ysf505朋友是否可以介绍《电脑爱好者》的获奖算法?
非常感谢,我明白了?
请教!!
请教,对于“射线法”还是有些不解,比如:如何用将要判断的那个点的坐标表示成射线?请帮忙解答,谢谢!那一年的电脑爱好者呢
页:
[1]