【发布时间】:2013-05-15 12:53:59
【问题描述】:
我想计算该点是否靠近矩形的对角线。 矩形表示为两个点(最小值和最大值)。现在我有了第三点,我想检查是否靠近对角线。
if (minBound < pointVector2 && pointVector2 < maxBound) {
CheckIfIsNearTheDiagonal(50, true);
}
minBound 和 maxBound 是边界点 (Vector2)
我想检查点pointVector2 与(特定)对角线的距离。距离与参数 maxDistance 比较,如果在对角线周围的范围内,则返回。
bool CheckIfIsNearTheDiagonal(float maxDistance, bool isLeftDownToRightUp ){
// Somehow count distance
return distance < maxDistance
}
有什么简单的方法或者我必须计算直线方程的一般形式和点到直线的距离吗?
【问题讨论】:
-
好像你已经描述了简单的方法。
-
好吧,如果这是最简单的方法。 =(
-
这是另一种方式:画一个三角形,从矩形的角到所讨论的点,再到沿对角线测量距离的点。您知道一侧的长度(三角形的斜边,即从角到相关点的线)。使用点积来获得从角到对角线另一点的线的长度。现在你有了三角形的两条边,使用勾股定理得到第三条边的长度。这个最终长度是您正在寻找的距离。
-
其实第二个选项不需要用到勾股定理。一旦你知道从矩形的角开始的两条边的长度,你就可以从斜边向量中减去沿对角线的向量,得到距离向量。您仍然需要平方根来获得距离向量的大小。
-
在学校里,我们称其为粗麻布正常距离(公式另见 Fransco 的回答)