如果我在画布上有两个System.Drawing.Rectangle
个对象和Point
,最佳方法计算哪个Rectangle
(Rectangle
的任何部分{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) { }
答案 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