您的位置:首页 > 其它

点到线段之间的距离

2013-07-30 09:59 155 查看
double dis(node a,node b)
{
return sqrt(pow(a.x-b.x,2)+pow(a.y-b.y,2));
}
double solve(node pa,node pb,node pc)
{
double sum;
double b,c,d;
d=dis(pa,pc);
b=dis(pb,pc);
c=dis(pa,pb);
if(d<exp) sum=0;
else if(b<exp) sum=0;
else if(c<exp) sum=d;
else
{
if(d*d>=b*b+c*c) sum=b;
else if(b*b>=d*d+c*c) sum=d;
else
{
float l=(d+b+c)/2;
float s=sqrt(l*(l-d)*(l-b)*(l-c));
sum=2*s/c;
}
}
return sum;
}

点到直线的距离

double dis(node pa,node pb,node pc)
{
if(fabs(pa.x-pb.x)<exp) return fabs(pc.x-pa.x);
double k=(pa.y-pb.y)/(pa.x-pb.x);
double b=pa.y-k*pa.x;
return fabs(k*pc.x-pc.y+b)/sqrt(k*k+1);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: