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

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

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

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

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

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

兰州人发表于2007-12-14 11:35:00static/image/common/back.gif建立多义线数组坐标,通过数组坐标判断该点坐标是否在闭合多义线面域内。

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

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

本帖最后由 作者 于 2007-12-19 13:15:58 编辑

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

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

lzh741206发表于2007-12-19 13:15:00static/image/common/back.gif以点为圆心画很小的圆并做成面域,原面域与该面域作差集再判断

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

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

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

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

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

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

本帖最后由 作者 于 2007-12-21 23:30:43 编辑

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

<p>在周培德的几何算法中有,与楼上<strong><font face="Verdana" color="#61b713">sailor说的相似,</font></strong></p><p><font face="Verdana" color="#61b713"><strong>当出现交点是1,3,7...代表点在</strong><font color="#000000">闭合多义线面域内。</font></font></p>

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

雪山飞狐_lzh 发表于 2007-12-19 13:15 static/image/common/back.gif
以点为圆心画很小的圆并做成面域,原面域与该面域作差集再判断

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