|
最近需要用一个计算 “ 点 到 线段的最短距离 Dis” 的小函数,按照自己理解写的,有些地方不严谨,贴上脚本行大家来指正。LA, LB, LC是一个点与线段形成的三角形的三边长(也可能不是三角形,这里假设LA, LB,LC任意两个之和大于第三个)。Dis是最小距离,Arc#是对边角度,单位是弧度。- defun( getDistance (LA LB LC)
-
- ArcA = acos((LC**2 + LB**2 - LA**2)/(2*LB*LC))
- ArcB = acos((LA**2 + LC**2 - LB**2)/(2*LA*LC))
- ArcC = acos((LA**2 + LB**2 - LC**2)/(2*LA*LB))
- cond(
- (ArcB >= pi/2 Dis = LC )
- (ArcC >= pi/2 Dis = LB )
- (ArcB < pi/2 && ArcC < pi/2 Dis = sin(ArcB)*LC)
- );cond
- Dis = round(Dis)
- );defun
复制代码 |
|