紧急求助!!
大家新年好!我有两问题紧急求助:
1、如何确定一个点在一个区域内,特别是不规则的多边形
2、如何求一个点到直线的距离。
谢谢各位 第1 我也问过,你先看看吧
<A href="http://mjtd.com/bbs/dispbbs.asp?boardID=4&ID=29691&page=1" target="_blank" >http://mjtd.com/bbs/dispbbs.asp?boardID=4&ID=29691&page=1</A>
第2 我也想知道哦 : ) 谢谢!我已经解决了
Public Function Fun点在指定区域内(ByVal ePnt As Variant, ByVal objPnt As AcadEntity) As Boolean<BR> Dim L As Integer, I As Integer, xPnt As Variant, sPnt(2) As Double, iPnt As Variant, xLine As AcadLine<BR> sPnt(0) = -99999: sPnt(1) = -99999<BR> Set xLine = ThisDrawing.ModelSpace.AddLine(sPnt, ePnt)<BR> xPnt = objPnt.IntersectWith(xLine, acExtendNone)<BR> xLine.Delete: I = UBound(xPnt)<BR> I = Int(I / 3) + 1<BR> L = I - Int(I / 2) * 2<BR> If L = 0 Then Fun点在指定区域内 = False Else Fun点在指定区域内 = True<BR>End Function (1)你的解决方案可能不够全面,如果点在多边形外面,有可能会跟在其内部得到的交点一致;
最后用射线多做几个角度,分别检测交点。
(2)用数学的方法来计算吧。 (2)如果你只想求点到直线的距离,可以用三角形面积法:
点到直线的距离=(三条边长求出的面积)/直线边长*2 <A name=3318><FONT color=#000066><B>tfyyf</B></FONT></A>送你花一朵呵呵 判断点a是否在n边形内,可以先将n边形的各顶点排好顺序,顺时针或逆时针都可以,然后将a点和n边形各个顶点连结起来,这样就形成n个以点a为顶点的三角形了,如果各三角形顶角之和为360度,则点a在n边形内,否则点a在n边形外!
不知道这个方法是不是最简单的!
页:
[1]