小美菜 发表于 2005-1-1 19:46:00

紧急求助!!

大家新年好!


                       我有两问题紧急求助:


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


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


       谢谢各位

liub1979 发表于 2005-1-2 13:50:00

第1 我也问过,你先看看吧


<A href="http://mjtd.com/bbs/dispbbs.asp?boardID=4&amp;ID=29691&amp;page=1" target="_blank" >http://mjtd.com/bbs/dispbbs.asp?boardID=4&amp;ID=29691&amp;page=1</A>


第2 我也想知道哦 : )

小美菜 发表于 2005-1-2 20:43:00

谢谢!我已经解决了


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

zfbj 发表于 2005-1-2 23:26:00

(1)你的解决方案可能不够全面,如果点在多边形外面,有可能会跟在其内部得到的交点一致;


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


(2)用数学的方法来计算吧。

tfyyf 发表于 2005-1-3 07:34:00

(2)如果你只想求点到直线的距离,可以用三角形面积法:


点到直线的距离=(三条边长求出的面积)/直线边长*2

liub1979 发表于 2005-1-3 16:57:00

<A name=3318><FONT color=#000066><B>tfyyf</B></FONT></A>送你花一朵呵呵

laoliu09 发表于 2005-1-4 15:38:00

判断点a是否在n边形内,可以先将n边形的各顶点排好顺序,顺时针或逆时针都可以,然后将a点和n边形各个顶点连结起来,这样就形成n个以点a为顶点的三角形了,如果各三角形顶角之和为360度,则点a在n边形内,否则点a在n边形外!


不知道这个方法是不是最简单的!
页: [1]
查看完整版本: 紧急求助!!