计算点到线段最短距离的代码
2011-02-23 15:01
1271 查看
下面这个计算点到线段最短距离算法是先计算线段上距离点最近的点,然后求出 2 点距离。在计算用户到当前位置到某条公路的最短距离等实际情况中,可以先用这个算法,然后根据结果坐标使用 CLLocation 类的函数计算实际距离。
代码
double x1, y1, x2, y2, x3, y3;
double px = x2 - x1;
double py = y2 - y1;
double som = px * px + py * py;
double u = ((x3 - x1) * px + (y3 - y1) * py) / som;
if (u > 1) {
u = 1;
}
if (u < 0) {
u = 0;
}
//the closest point
double x = x1 + u * px;
double y = y1 + u * py;
double dx = x - x3;
double dy = y - y3;
double dist = sqrt(dx*dx + dy*dy);
代码
double x1, y1, x2, y2, x3, y3;
double px = x2 - x1;
double py = y2 - y1;
double som = px * px + py * py;
double u = ((x3 - x1) * px + (y3 - y1) * py) / som;
if (u > 1) {
u = 1;
}
if (u < 0) {
u = 0;
}
//the closest point
double x = x1 + u * px;
double y = y1 + u * py;
double dx = x - x3;
double dy = y - y3;
double dist = sqrt(dx*dx + dy*dy);
相关文章推荐
- 计算点到线段最短距离的代码
- java 代码 点到线段的最短距离
- [Java]一个简单的计算有向赋权图最短距离的代码
- java 代码 点到线段的最短距离
- 三维空间两直线/线段最短距离、线段计算算法 【转】
- BUAA 1033 (三分枚举计算 点到线段的最短距离)
- 三维空间两直线/线段最短距离、线段计算算法
- VBA学习笔记(二):由经纬度计算距离VBA代码
- 3种求点到线段最短距离的算法
- Robot(计算最短距离,用Dijkstra算法)
- 经纬度距离计算Java实现代码
- 计算空间中两条线段的最小距离
- 根据两点经纬度计算距离 附C#和PHP代码
- 移动微小的距离,线段相交,计算几何(怪物陷阱,LA 2797)
- Ruby实现的最短编辑距离计算方法
- Codeforces Round #339 (Div. 2)-C(点到线段的最短距离)
- 计算几何 点到线段的距离 点在简单多边形内 点到凸多边形的距离
- 点到线段的距离计算方法
- 求空间中2条线段的最短距离(用osg+C++写的)
- 地球上两点间最短距离及计算方法