【问题标题】:With knowing just 2 points that represent opposing corners, how to determine if a point input by the user is inside the rectangle只知道代表对角的 2 个点,如何确定用户输入的点是否在矩形内
【发布时间】:2015-01-18 16:36:15
【问题描述】:

我搜索了已经问过的问题,但如果知道 3 点,它们似乎只是涵盖了。但是,如果您只有两个点并且您知道这两个点代表矩形上的对角,该怎么办?知道这一点,如果该点在矩形内,您如何确定用户是否输入了任何点?谢谢

【问题讨论】:

    标签: java eclipse position coordinates rectangles


    【解决方案1】:

    基本上这是您需要做的:

    1. 根据您的第 1 点和第 3 点,构建其他两个点 2 和 4 完成矩形定义。
    2. 获取用户输入点,我们将其称为 5。
    3. 计算所有 P(1,2,5), P(1,4,5), P(2,3,5), P(3,4,5) 的三角形的面积并将这些面积相加在一起。
    4. 如果这些区域中的任何一个为 0,那么您就知道该点位于矩形周长上。如果面积总和大于 矩形,点在矩形之外。如果它等于 矩形区域,在里面。

    【讨论】:

    • 好吧,有道理,你为什么要计算三角形的面积呢?
    • 这是一种常用于检查点是否在矩形范围内的技术。矩形的面积应等于所描述的四个三角形的面积(您可以在一张纸上检查)。如果面积不相等(考虑到一些舍入误差),那么您的点不在矩形内。
    • 好的,明白了。点也可以是任意的,只要它与您在计算三角形面积时使用的组合基本相同?
    • 是的。只要您定义哪两个点定义了您的矩形以及您要确定的点位于矩形内,就可以了。所有点都可以是任意的。我会在我的帖子中放一张图片来说明。
    • 你去 - 希望这会有所帮助。
    【解决方案2】:

    我假设它是 2D 的。所以你有两个点代表左下角和右上角。您现在可以计算缺失的点。 例如这里的一些随机点:

    blc(1,1) and trc(4,2)
    

    您现在可以计算高度和宽度差并构建缺失点。

    topleftcorner(1,2) and bottomrightcorner(4,1)
    

    现在您有了一个完整的矩形,您可以检查给定的输入是否在该区域内。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-01
      • 2020-03-20
      • 1970-01-01
      • 2015-11-30
      • 2013-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多