muzi2005888 发表于 2007-12-14 10:27:00

[求助]如何判断一个点是否位于一个封闭的多段线多边形内?

如何判断一个点是否位于一个封闭的多段线多边形内?
谢谢!!

兰州人 发表于 2007-12-14 11:35:00

建立多义线数组坐标,通过数组坐标判断该点坐标是否在闭合多义线面域内。

muzi2005888 发表于 2007-12-18 15:47:00


谢谢,关键就是如何通过数组坐标判断该点坐标是否在闭合多义线面域内??
我倒是有个思路:就是面域有多个线段组成(应该是面域的端点数-1条),然后分别进行判断该点是否垂直于其中的线段,
                           如果有两个或两个以上的垂直,则该点在面域内
不过我以为:上述方法缺点就是运算量较大,还有就是只适合凸多边形
请高人指正!
还有,谢谢兰州人!

雪山飞狐_lzh 发表于 2007-12-19 13:15:00


以点为圆心画很小的圆并做成面域,原面域与该面域作差集再判断

muzi2005888 发表于 2007-12-20 18:15:00


谢谢!!
能否给点关于如何“以点为圆心画很小的圆并做成面域”以及如何做差集判断的资料或者代码什么的?
不胜感激!!!

sailor 发表于 2007-12-20 21:32:00

是否可以通过从点发射线,计算与多段线的交点个数来判断,好像图形学里有这个算法

muzi2005888 发表于 2007-12-21 18:03:00

???????.....

雪山飞狐_lzh 发表于 2007-12-21 23:28:00



PrivateFunction PointInRegion(ByVal TlsRegion, ByVal Point)As Boolean
'判断点是否在面域内
   Dim pCopy As AcadRegion, pRegion As AcadRegion
   Dim pobjs(0)    As    AcadEntity
   Set pCopy = TlsRegion.Copy
   Set pobjs(0) = pWorkSpace.AddCircle(Point, 0.0001)
   Set pRegion = pWorkSpace.AddRegion(pobjs)(0)
   pRegion.Boolean acIntersection, pCopy
   If pRegion.Area > 0 Then PointInRegion = True
   pRegion.Delete
   pobjs(0).Delete
   
End Function

青青20 发表于 2007-12-25 13:33:00

在周培德的几何算法中有,与楼上sailor说的相似,
当出现交点是1,3,7...代表点在闭合多义线面域内。

木个木 发表于 2015-11-21 16:31:00


涉及到相交多少判断是在线的哪一边,
页: [1]
查看完整版本: [求助]如何判断一个点是否位于一个封闭的多段线多边形内?