明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4190|回复: 9

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

[复制链接]
发表于 2007-12-14 10:27:00 | 显示全部楼层 |阅读模式

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

谢谢!!

发表于 2007-12-14 11:35:00 | 显示全部楼层
建立多义线数组坐标,通过数组坐标判断该点坐标是否在闭合多义线面域内。
 楼主| 发表于 2007-12-18 15:47:00 | 显示全部楼层
兰州人发表于2007-12-14 11:35:00建立多义线数组坐标,通过数组坐标判断该点坐标是否在闭合多义线面域内。

谢谢,关键就是如何通过数组坐标判断该点坐标是否在闭合多义线面域内??

我倒是有个思路:就是面域有多个线段组成(应该是面域的端点数-1条),然后分别进行判断该点是否垂直于其中的线段,

                           如果有两个或两个以上的垂直,则该点在面域内

不过我以为:上述方法缺点就是运算量较大,还有就是只适合凸多边形

请高人指正!

还有,谢谢兰州人!

发表于 2007-12-19 13:15:00 | 显示全部楼层
本帖最后由 作者 于 2007-12-19 13:15:58 编辑

以点为圆心画很小的圆并做成面域,原面域与该面域作差集再判断
 楼主| 发表于 2007-12-20 18:15:00 | 显示全部楼层
lzh741206发表于2007-12-19 13:15:00以点为圆心画很小的圆并做成面域,原面域与该面域作差集再判断

谢谢!!

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

不胜感激!!!

发表于 2007-12-20 21:32:00 | 显示全部楼层
是否可以通过从点发射线,计算与多段线的交点个数来判断,好像图形学里有这个算法
 楼主| 发表于 2007-12-21 18:03:00 | 显示全部楼层
???????.....
发表于 2007-12-21 23:28:00 | 显示全部楼层
本帖最后由 作者 于 2007-12-21 23:30:43 编辑

  1. Private  Function PointInRegion(ByVal TlsRegion, ByVal Point)  As Boolean
  2. '判断点是否在面域内
  3.      Dim pCopy As AcadRegion, pRegion As AcadRegion
  4.      Dim pobjs(0)    As    AcadEntity
  5.      Set pCopy = TlsRegion.Copy
  6.      Set pobjs(0) = pWorkSpace.AddCircle(Point, 0.0001)
  7.      Set pRegion = pWorkSpace.AddRegion(pobjs)(0)
  8.      pRegion.Boolean acIntersection, pCopy
  9.      If pRegion.Area > 0 Then PointInRegion = True
  10.      pRegion.Delete
  11.      pobjs(0).Delete
  12.      
  13. End Function
发表于 2007-12-25 13:33:00 | 显示全部楼层

在周培德的几何算法中有,与楼上sailor说的相似,

当出现交点是1,3,7...代表点在闭合多义线面域内。

发表于 2015-11-21 16:31:37 | 显示全部楼层
雪山飞狐_lzh 发表于 2007-12-19 13:15
以点为圆心画很小的圆并做成面域,原面域与该面域作差集再判断

涉及到相交多少判断是在线的哪一边,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 10:05 , Processed in 0.167891 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表