我有System.Windows.Media.Geometry g和System.Windows.Point p。

我想知道点和几何轮廓之间的最短距离。我怎么发动汽车呢?
以下是我的努力:
发布于 2014-05-14 06:29:20
基本上,你需要做的是遍历从几何学得到的路径上的每一个点,并测量其中一个点与隔离点之间的距离。
上面有一个帖子,可以找到离隔离点最近的点:
https://stackoverflow.com/a/19031758/2006048
还有一个C++算法来测量距离。您只需将其转换为C#:
https://stackoverflow.com/a/1501725/2006048
您可能还可以使用Point.Subtract()方法获取和比较这些点之间的Vectors。
如果您可以从该形状中获得一个数组或点列表,那么您可能可以这样做(请注意,这并不像我提供的链接那样详细。这将为您提供到一个可用点的最短距离,而不是段本身):
public static double GetShortestDistance(Point target, Point[] points)
{
var dist = 0;
foreach (var point in points)
{
var xDist = target.X - point.X;
var yDist = target.Y - point.Y;
var nDist = Math.Sqrt(xDist * xDist + yDist * yDist);
if (nDist < dist)
{
dist = nDist;
}
}
return dist;
}我建议在第二个链接中使用C++算法。
https://stackoverflow.com/questions/23646904
复制相似问题