如何测量对角线距离点?

我可以计算水平和垂直点,但我无法弄清楚如何使用对角点计算距离。 有人可以帮我弄这个吗。

这是我的水平和垂直测量的代码:

private float ComputeDistance(float point1, float point2) { float sol1 = point1 - point2; float sol2 = (float)Math.Abs(Math.Sqrt(sol1 * sol1)); return sol2; } protected override void OnMouseMove(MouseEventArgs e) { _endPoint.X = eX; _endPoint.Y = eY; if (ComputeDistance(_startPoint.X, _endPoint.X) <= 10) { str = ComputeDistance(_startPoint.Y, _endPoint.Y).ToString(); } else { if (ComputeDistance(_startPoint.Y, _endPoint.Y) <= 10) { str = ComputeDistance(_startPoint.X, _endPoint.X).ToString(); } } } 

假设已经设置了_startPoint。

替代文字

在这张图片中,对角点显然是错误的。

你需要使用毕达哥拉斯定理。

 d = Math.Sqrt(Math.Pow(end.x - start.x, 2) + Math.Pow(end.y - start.y, 2)) 

我想你正在寻找欧几里德距离公式。

在数学中,欧几里得距离或欧几里德度量是人们用尺子测量的两点之间的“普通”距离,由毕达哥拉斯公式给出。

那你可以看一下: http : //en.wikipedia.org/wiki/Pythagorean_theorem

很久以后……我想补充一点,你可以使用.NET的一些内置function:

 using System.Windows; Point p1 = new Point(x1, y1); Point p2 = new Point(x2, y2); Vector v = p1 - p2; double distance = v.Length; 

或者干脆:

 static double Distance(double x1, double x2, double y1, double y2) { return (new Point(x1, y1) - new Point(x2, y2)).Length; }