如何判断点在某个封闭的区域内部?
如何判断点在某个封闭的区域内部?请高手指教q
q树形控件
想请教高手两个问题:1用OBJECTARX如何实现在AUTOCAD主画面上实现树形控件
2如何使用OBJECTARX向导的CLASS WIZARD
谢谢
我的邮箱:wyxcs@163.com
请大家不吝赐教。
顺便问一下:
我为什么不能发贴子啊? ⑴ 对于任意一点可以用射线法判断该点是否在闭合区域内,如图1所示:从该点引一条与多边形相交的水平线并计算与多边形的交点个数,如果交点个数为偶数或零,则该点在区域外,如点A;如果交点个数为奇数,则该点在区域内,如点B,点C。 BOOL ifPointinPolyline(ads_point point, AcDbPolyline *pPl)
{
AcDbPolyline * pPline=pPl;
AcGePoint3d point3d;
point3d=point;
point3d=point;
point3d=point;
AcDbRay *pRay = new AcDbRay();
pRay->setBasePoint(point3d);
pRay->setUnitDir(AcGeVector3d(1,0,0));
AcGePoint3dArray pts;
pts.setLogicalLength(0);
//用过线段起点的射线与图框求交
Acad::ErrorStatus es = pRay->intersectWith
(pPline,AcDb::kOnBothOperands,pts);
if(es!=Acad::eOk){
delete pRay;
return 0;
}
Adesk::Boolean bSt = Adesk::kTrue,bEd = Adesk::kTrue;
//如果交点数为ji数,说明点在图框内部
if(pts.length()%2!=0){
delete pRay;
return 1;
}
delete pRay;
return 0;
} 好像还有一种情况:
顶点在线上,这时候也有一个交点吧? "某个封闭的区域",这个区域是已知的还是未知的?这两种的算法是不相同的! 仅是抛砖引玉,还望各位大虾不吝丰富小函数,使之圆满 我的代码又贴这了?!
不过有个问题我一直没处理,就是交点正好在区域的一个定点时。用的时候注意啦!! 以上代码没有考虑到凹多边形,自相交的多边形更难判断.
页:
[1]
2