c# - 计算两点之间的距离

标签 c#

我有两个点 (x1,y1) 和 (x2,y2)。我想知道这些点之间的距离是否在 5 米以内。

最佳答案

如果您使用 System.Windows.Point数据类型来表示一个点,你可以使用

// assuming p1 and p2 data types
Point p1, p2;
// distanc can be calculated as follows
double distance = Point.Subtract(p2, p1).Length;

2017-01-08 更新:

  • 添加对 Microsoft 文档的引用
  • Point.Subtract 的结果是 System.Windows.Vector如果您只需要比较距离,它还有属性 LengthSquared 可以节省一次 sqrt 计算。
  • 在您的项目中可能需要添加对 WindowsBase 程序集的引用
  • 您也可以使用运算符

使用 LengthSquared 和运算符的示例

// assuming p1 and p2 data types
Point p1, p2;
// distanc can be calculated as follows
double distanceSquared = (p2 - p1).LengthSquared;

2021-11-15 更新:

不幸的是,System.Windows.PointWindowsBase 仅在 .Net Framework 中可用。它不是 .NET.NET standard.NET core 的一部分。

System.Drawing.PointSystem.Drawing.PointF 没有任何可用的方法和运算符,它们只是容器。

有趣的是 System.Numerics.Vector2,它可能是 System.Windows.Point 的最佳替代品。它具有类似的 API,并且在所有 .NET 漏洞中都可用。但是,语义很奇怪 - 使用 Vector 表示点。

关于c# - 计算两点之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11555355/

相关文章:

c# - 如何暂停for循环,直到DispatcherTimer结束?

c# - 正则表达式在非捕获组中包含字符?

c# - 将 DateTime 轴数据转换回 DateTime

c# - VB param ( , ) 中的奇怪参数转换为 C#

c# - 无需反射,根据类属性实现接口(interface)

c# - 访问者模式和封装

c# - 当 BoundField 为零时禁用 ButtonField

c# - 银光数据网格 : Copy & paste

c# - 将位图图像转换为字节数组

c# - 在 C# 中存储长二进制文件(最多 512 位)的最佳方法