您好我想查询Mysql DB 5.1版本。必须存在从给定点到DB内部两点定义的段的距离计算。 我有一个与距离算法非常相似的距离算法:
Shortest distance between a point and a line segment
这是JS,但可以作为一个例子:
function sqr(x) { return x * x }
function dist2(v, w) { return sqr(v.x - w.x) + sqr(v.y - w.y) }
function distToSegmentSquared(p, v, w) {
var l2 = dist2(v, w);
if (l2 == 0) return dist2(p, v);
var t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;
if (t < 0) return dist2(p, v);
if (t > 1) return dist2(p, w);
return dist2(p, { x: v.x + t * (w.x - v.x),
y: v.y + t * (w.y - v.y) });
}
function distToSegment(p, v, w) { return Math.sqrt(distToSegmentSquared(p, v, w)); }
数据库查询的想法如下:
SELECT
id, (
//should it calculate the distance here?
)
) AS distance
FROM markers
ORDER BY distance
LIMIT 0 , 20;
我应该申报手续吗?
非常感谢任何帮助。感谢
编辑: 数据结构:
Table markers:
id | x1 | y1 | x2 | y2
----------------------
| | | |