首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从点到几何学的距离

从点到几何学的距离
EN

Stack Overflow用户
提问于 2014-05-14 06:12:45
回答 1查看 1.4K关注 0票数 1

我有System.Windows.Media.Geometry gSystem.Windows.Point p

我想知道点和几何轮廓之间的最短距离。我怎么发动汽车呢?

以下是我的努力:

  1. Geometry.GetOutlinedPathGeometry()返回PathGeometry。
  2. PathGeometry.Figures返回PathFigure。
  3. PathFigure.Segments返回PathSegment。
  4. 在PathSegment上没有任何有用的方法。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-14 06:29:20

基本上,你需要做的是遍历从几何学得到的路径上的每一个点,并测量其中一个点与隔离点之间的距离。

上面有一个帖子,可以找到离隔离点最近的点:

https://stackoverflow.com/a/19031758/2006048

还有一个C++算法来测量距离。您只需将其转换为C#:

https://stackoverflow.com/a/1501725/2006048

您可能还可以使用Point.Subtract()方法获取和比较这些点之间的Vectors

如果您可以从该形状中获得一个数组或点列表,那么您可能可以这样做(请注意,这并不像我提供的链接那样详细。这将为您提供到一个可用点的最短距离,而不是段本身):

代码语言:javascript
复制
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++算法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23646904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档