紧急求助!!
大家新年好!我有两问题紧急求助:
1、如何确定一个点在一个区域内,特别是不规则的多边形
2、如何求一个点到直线的距离。
谢谢各位 第1 我也问过,你先看看吧
第2 我也想知道哦 : ) 谢谢!我已经解决了
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 (1)你的解决方案可能不够全面,如果点在多边形外面,有可能会跟在其内部得到的交点一致;
最后用射线多做几个角度,分别检测交点。
(2)用数学的方法来计算吧。 (2)如果你只想求点到直线的距离,可以用三角形面积法:
点到直线的距离=(三条边长求出的面积)/直线边长*2 tfyyf送你花一朵呵呵 判断点a是否在n边形内,可以先将n边形的各顶点排好顺序,顺时针或逆时针都可以,然后将a点和n边形各个顶点连结起来,这样就形成n个以点a为顶点的三角形了,如果各三角形顶角之和为360度,则点a在n边形内,否则点a在n边形外!
不知道这个方法是不是最简单的!
页:
[1]