【问题标题】:Check if point inside a rotated box C++检查点是否在旋转框 C++ 内
【发布时间】:2016-06-07 00:49:17
【问题描述】:

我一直在寻找一种算法,它可以告诉我一个点是否在一个盒子里,但我仍然没有找到我要找的东西。

基本上我有一个 2D 矩形 [Upper_X, Lower_X, Upper_Y and Lower_Y] 在 3D 世界中平移和旋转(我有世界和方向矩阵),我想从这个矩形构建一个盒子(为了考虑某种检查时的 epsilon 边距)并检查点 P 是否在其中。

我怎样才能做到这一点?真的很抱歉,请耐心等待我在代数和几何方面不是很好,所以写一个c ++示例代码我会更容易理解。

【问题讨论】:

  • 如果你擅长代数,那么不要只检查盒子的所有 6 个平面并检查 point in front of the plane (或平面背面......取决于你如何获得平面信息)。
  • 顺便说一句,如果您有转换矩阵,请将框转换回原点(因此框与轴对齐).. 以相同的方式转换点,然后检查该点是否在内部带有simple if 的框。
  • 如果box由OX,OY,OZ定义,你的点是P,可以勾选0
  • 我投票结束这个问题,因为它是关于几何的。

标签: c++ algorithm geometry


【解决方案1】:

解决此问题的最佳方法是拿起纸和铅笔,用 lower_X、upper_X 和 lower_Y、upper_Y 绘制矩形。然后在框中随机选择一个点。检查什么条件使这种情况成立。例如,如果您的点在框中,那么您的点位于 lower_X 和 upper_x 之间的某个位置,如果是这样,则检查点是否也在您的 lower_Y 和 upper_y 之间。如果这两种情况都是正确的,那么您就知道您的观点位于框中。希望我让你更清楚一点。

【讨论】:

    猜你喜欢
    • 2013-06-12
    • 2018-02-02
    • 2017-11-19
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 2016-02-08
    相关资源
    最近更新 更多