[求助]如何判断一个点是否位于一个封闭的多段线多边形内?
<p>如何判断一个点是否位于一个封闭的多段线多边形内?</p><p>谢谢!!</p> 建立多义线数组坐标,通过数组坐标判断该点坐标是否在闭合多义线面域内。 兰州人发表于2007-12-14 11:35:00static/image/common/back.gif建立多义线数组坐标,通过数组坐标判断该点坐标是否在闭合多义线面域内。<p></p><p>谢谢,关键就是如何通过数组坐标判断该点坐标是否在闭合多义线面域内??</p><p>我倒是有个思路:就是面域有多个线段组成(应该是面域的端点数-1条),然后分别进行判断该点是否垂直于其中的线段,</p><p> 如果有两个或两个以上的垂直,则该点在面域内</p><p>不过我以为:上述方法缺点就是运算量较大,还有就是只适合凸多边形</p><p>请高人指正!</p><p>还有,谢谢兰州人!</p> 本帖最后由 作者 于 2007-12-19 13:15:58 编辑
以点为圆心画很小的圆并做成面域,原面域与该面域作差集再判断 lzh741206发表于2007-12-19 13:15:00static/image/common/back.gif以点为圆心画很小的圆并做成面域,原面域与该面域作差集再判断
<p>谢谢!!</p><p>能否给点关于如何“以点为圆心画很小的圆并做成面域”以及如何做差集判断的资料或者代码什么的?</p><p>不胜感激!!!</p> 是否可以通过从点发射线,计算与多段线的交点个数来判断,好像图形学里有这个算法 ???????..... 本帖最后由 作者 于 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
<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> 雪山飞狐_lzh 发表于 2007-12-19 13:15 static/image/common/back.gif
以点为圆心画很小的圆并做成面域,原面域与该面域作差集再判断
涉及到相交多少判断是在线的哪一边,
页:
[1]