chuankay 发表于 2013-9-21 00:29:16

点到线段的最短距离。。。。

最近需要用一个计算 “ 点 到 线段的最短距离 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      

ASDK 发表于 2020-1-3 21:54:27

学习学习

ASDK 发表于 2020-1-3 21:57:53

学习学习

ASDK 发表于 2020-1-3 22:00:22

学习学习
页: [1]
查看完整版本: 点到线段的最短距离。。。。