如何找到哪个矩形最接近某个点

时间:2010-11-22 22:13:14

标签: c# geometry system.drawing

如果我在画布上有两个System.Drawing.Rectangle个对象和Point最佳方法计算哪个RectangleRectangle的任何部分{1}},而不只是Location Point)最接近Point

单元测试的一个例子:

Rectangle one = new Rectangle (0, 0, 10, 10);

Rectangle two = new Rectangle (20, 20, 10, 10);

Point point = new Point(14, 14);

Rectangle actual = ClosestToPoint(point, one, two);

// should be closer to one since one's bottom right is at (10, 10)
Assert.That(actual, Is.SameAs(one));

// method to write
public Rectangle ClosestToPoint(Point p, params Rectangle[] rectangles) { } 

4 个答案:

答案 0 :(得分:4)

  

到矩形的距离= min(距离   对于4个线段中的每一个   是矩形的边缘)

有关距离线段的距离,请参阅this question

答案 1 :(得分:0)

这是用于测量2个点之间的距离,所以从矩形中取出坐标点(由您决定是因为我不知道最接近您的位置):

   public int Distance2D(int x1, int y1, int x2, int y2)
   {

    int result = 0;
    double part1 = Math.Pow((x2 - x1), 2);

    double part2 = Math.Pow((y2 - y1), 2);
    double underRadical = part1 + part2;
    result = (int)Math.Sqrt(underRadical);

     return result;
   }

答案 2 :(得分:0)

嗯。我正在考虑循环你的矩形数组并将每个X和Y索引存储在一个列表中。然后你可以遍历列表并做一些abs(min(i.getX() - point))。如果它们相等,则检查min(y)。

答案 3 :(得分:0)

我认为你想要从所有矩形边找到最近的线段。此链接可能会有助Shortest distance between a point and a line segment