点到线段最短距离的算法
来源:互联网 发布:电气工程师用什么软件 编辑:程序博客网 时间:2024/05/02 00:02
double computer(CPoint p1,CPoint p2,CPoint p0)
{
double S;//S表示面积
double distance1,distance2,distance3,distance;
double sdis1,sdis2,sdis3;//距离平方
double retValue ,temp;
sdis1 = (p1.x-p0.x)*(p1.x-p0.x) + (p1.y-p0.y)*(p1.y-p0.y);
sdis2 = (p2.x-p0.x)*(p2.x-p0.x) + (p2.y-p0.y)*(p2.y-p0.y);
sdis3 = (p2.x-p1.x)*(p2.x-p1.x) + (p2.y-p1.y)*(p2.y-p1.y);
distance1 = sqrt( sdis1 );//p1和p0之间的距离
distance2 = sqrt( sdis2 );//p2和p0之间的距离
distance3 = sqrt( sdis3 );//p2和p1之间的距离
if( (distance1+distance2) == distance3 )//在线段内部
distance= 0;
else if( (distance1+distance3) == distance2 )//在p2p1的延长线上
distance= distance1 ;
else if( (distance2+distance3) == distance1 )//在p1p2的延长线上
distance= distance2 ;
else if( (sdis1+sdis3) < sdis2 )
distance= distance1 ;
else if( (sdis2+sdis3) < sdis1 )
distance= distance2 ;
else
{
temp = (distance1 + distance2 +distance3)/2;
S = sqrt(temp*(temp-distance1)*(temp-distance2)*(temp-distance3));
distance= (2 * S) / distance3;
}
return distance;
}
浮点数比较按理是不应该用==的,不过似乎没出错,所以就将就了。
- 点到线段最短距离的算法
- 点到线段的最短距离算法
- 点到线段的最短距离算法
- 点到线段的最短距离算法
- 点到线段的最短距离
- 点到线段的最短距离
- 点到线段的最短距离
- 点到线段的最短距离
- 点到线段的最短距离
- 点到线段的最短距离
- 点到线段的最短距离
- 点到线段的最短距离
- java 代码 点到线段的最短距离
- 计算点到线段最短距离的代码
- UVa 10263 Railway (点到线段的最短距离)
- java 代码 点到线段的最短距离
- uva10263 Railway点到线段的最短距离
- as3 点到线段最短距离 函数
- 替换SharedUserData
- hjhjhjhgjhgj
- 正则表达式30分钟入门教程 v2.1
- 某个男性自杀者的遗书
- Linux 网络配置ifconfig
- 点到线段最短距离的算法
- 小资必看:看看在美国是怎么吃哈根达斯,买LV牛仔裤的?
- java 关于int 和byte间的转换,请教各位!
- 输出流输入流
- 在VS2005中 GridView导入Excel的两点小技巧 VerifyRenderingInServerForm
- 名词解释:拓扑结构
- dwr和spring的整合
- 压缩包的加密
- VB.net 常用函數