如何测量对角距离点?

Posted

技术标签:

【中文标题】如何测量对角距离点?【英文标题】:How can I measure diagonal distance points? 【发布时间】:2011-04-18 16:15:27 【问题描述】:

我可以计算水平点和垂直点,但我不知道如何使用对角点计算距离。有人可以帮我解决这个问题吗?

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

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 = e.X;
        _endPoint.Y = e.Y;

        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 已经设置。

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

【问题讨论】:

Math.Sqrt(sol1 * sol1) == Math.Abs​​(sol1) 【参考方案1】:

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

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

【讨论】:

这个是毕达哥拉斯的,等我试试这个。【参考方案2】:

我认为您正在寻找Euclidean distance 公式。

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

【讨论】:

+1 指出实际上有很多计算距离的方法,欧几里得距离可能是这里想要的。【参考方案3】:

你可以看看:https://en.wikipedia.org/wiki/Pythagorean_theorem

【讨论】:

【参考方案4】:

很久以后...我想补充一点,您可以使用 .NET 的一些内置功能:

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;

【讨论】:

以上是关于如何测量对角距离点?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Allegro中测量距离?

请问Cad制图测量两点间的距离如何操作?谢谢啦!

百度地图如何测量距离?

在CAD梦想画图中如何测量两点之间的距离呢

百度地图如何测量两个地点的距离

allegro 16.2中怎样测量任意两点的距离