【问题标题】:Point is close to the diagonal点靠近对角线
【发布时间】:2013-05-15 12:53:59
【问题描述】:

我想计算该点是否靠近矩形的对角线。 矩形表示为两个点(最小值和最大值)。现在我有了第三点,我想检查是否靠近对角线。

if (minBound < pointVector2 && pointVector2 < maxBound) {
    CheckIfIsNearTheDiagonal(50, true);
}

minBoundmaxBound 是边界点 (Vector2)

我想检查点pointVector2 与(特定)对角线的距离。距离与参数 maxDistance 比较,如果在对角线周围的范围内,则返回。

bool CheckIfIsNearTheDiagonal(float maxDistance, bool isLeftDownToRightUp ){
   // Somehow count distance
   return distance < maxDistance
}

有什么简单的方法或者我必须计算直线方程的一般形式和点到直线的距离吗?

【问题讨论】:

  • 好像你已经描述了简单的方法。
  • 好吧,如果这是最简单的方法。 =(
  • 这是另一种方式:画一个三角形,从矩形的角到所讨论的点,再到沿对角线测量距离的点。您知道一侧的长度(三角形的斜边,即从角到相关点的线)。使用点积来获得从角到对角线另一点的线的长度。现在你有了三角形的两条边,使用勾股定理得到第三条边的长度。这个最终长度是您正在寻找的距离。
  • 其实第二个选项不需要用到勾股定理。一旦你知道从矩形的角开始的两条边的长度,你就可以从斜边向量中减去沿对角线的向量,得到距离向量。您仍然需要平方根来获得距离向量的大小。
  • 在学校里,我们称其为粗麻布正常距离(公式另见 Fransco 的回答)

标签: c# math geometry


【解决方案1】:

这给出了到点 p0 和通过 p1 和 p2 的线的距离:

    public double Distance(Point p1, Point p2, Point p0)
    {
        double m = (p2.Y - p1.Y) / (p2.X - p1.X);
        double q = (p1.Y * p2.X - p2.Y * p1.X) / (p2.X - p1.X);
        return Math.Abs((p0.Y - m * p0.X - q) / Math.Sqrt(1 + m * m));
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2023-01-26
    • 1970-01-01
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多