明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1604|回复: 6

紧急求助!!

[复制链接]
发表于 2005-1-1 19:46:00 | 显示全部楼层 |阅读模式
大家新年好!


                         我有两问题紧急求助:


                                 1、如何确定一个点在一个区域内,特别是不规则的多边形


                                         2、如何求一个点到直线的距离。


         谢谢各位
发表于 2005-1-2 13:50:00 | 显示全部楼层
第1 我也问过,你先看看吧 http://mjtd.com/bbs/dispbbs.asp?boardID=4&ID=29691&page=1 第2 我也想知道哦 : )
 楼主| 发表于 2005-1-2 20:43:00 | 显示全部楼层
谢谢!我已经解决了 Public Function Fun点在指定区域内(ByVal ePnt As Variant, ByVal objPnt As AcadEntity) As Boolean
Dim L As Integer, I As Integer, xPnt As Variant, sPnt(2) As Double, iPnt As Variant, xLine As AcadLine
sPnt(0) = -99999: sPnt(1) = -99999
Set xLine = ThisDrawing.ModelSpace.AddLine(sPnt, ePnt)
xPnt = objPnt.IntersectWith(xLine, acExtendNone)
xLine.Delete: I = UBound(xPnt)
I = Int(I / 3) + 1
L = I - Int(I / 2) * 2
If L = 0 Then Fun点在指定区域内 = False Else Fun点在指定区域内 = True
End Function
发表于 2005-1-2 23:26:00 | 显示全部楼层
(1)你的解决方案可能不够全面,如果点在多边形外面,有可能会跟在其内部得到的交点一致;


最后用射线多做几个角度,分别检测交点。


(2)用数学的方法来计算吧。
发表于 2005-1-3 07:34:00 | 显示全部楼层
(2)如果你只想求点到直线的距离,可以用三角形面积法:


点到直线的距离=(三条边长求出的面积)/直线边长*2
发表于 2005-1-3 16:57:00 | 显示全部楼层
tfyyf送你花一朵呵呵
发表于 2005-1-4 15:38:00 | 显示全部楼层
判断点a是否在n边形内,可以先将n边形的各顶点排好顺序,顺时针或逆时针都可以,然后将a点和n边形各个顶点连结起来,这样就形成n个以点a为顶点的三角形了,如果各三角形顶角之和为360度,则点a在n边形内,否则点a在n边形外!


不知道这个方法是不是最简单的!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-27 20:28 , Processed in 0.174339 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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