as3 点到线段最短距离 函数

public function pointToLineDistance( p1:Point, p2:Point, p3:Point ) : Number 
{
var xDelta: Number = p2. x - p1. x ;
var yDelta: Number = p2. y - p1. y ;
if ( ( xDelta == 0 ) && ( yDelta == 0 ) ) {
// p1 and p2 cannot be the same point
p2. x += 1 ;
p2. y += 1 ;
xDelta = 1 ;
yDelta = 1 ;
}
var u: Number = ( ( p3. x - p1. x ) * xDelta + ( p3. y - p1. y ) * yDelta ) / ( xDelta * xDelta + yDelta * yDelta ) ;
var closestPoint:Point;
if ( u < 0 ) {
closestPoint = p1 ;
} else if ( u > 1 ) {
closestPoint = p2 ;
} else {
closestPoint = new Point ( p1. x + u * xDelta, p1. y + u * yDelta ) ;
}
return Point.distance ( closestPoint, p3 ) ;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值