Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5209|回复: 3

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

[复制链接]
发表于 2013-9-21 00:29:16 | 显示全部楼层 |阅读模式
最近需要用一个计算 “ 点 到 线段的最短距离 Dis” 的小函数,按照自己理解写的,有些地方不严谨,贴上脚本行大家来指正。LA, LB, LC是一个点与线段形成的三角形的三边长(也可能不是三角形,这里假设LA, LB,LC任意两个之和大于第三个)。Dis是最小距离,Arc#是对边角度,单位是弧度。
  1. defun( getDistance (LA LB LC)
  2.       
  3.         ArcA = acos((LC**2 + LB**2 - LA**2)/(2*LB*LC))
  4.         ArcB = acos((LA**2 + LC**2 - LB**2)/(2*LA*LC))
  5.         ArcC = acos((LA**2 + LB**2 - LC**2)/(2*LA*LB))

  6.         cond(
  7.                 (ArcB >= pi/2 Dis = LC )
  8.                 (ArcC >= pi/2 Dis = LB )
  9.                 (ArcB < pi/2 && ArcC < pi/2 Dis = sin(ArcB)*LC)
  10.         );cond
  11.         Dis = round(Dis)
  12. );defun        
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|网站地图|Cadence Skill 论坛 ( 蜀ICP备13024417号 )

GMT+8, 2024-11-23 19:41 , Processed in 0.119392 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表