【问题标题】:How i can calculate 2d bounding box with 3d transformation我如何用 3d 变换计算 2d 边界框
【发布时间】:2010-07-27 05:41:30
【问题描述】:

我正在开发 opengl 项目。 我设置透视投影并渲染一个变换的矩形(旋转、缩放)

如何计算矩形的边界框(矩形位置、大小)

谢谢

【问题讨论】:

  • 你所说的平面是指一个表面,或者更确切地说是一个真正的平面(那个飞行的东西)?
  • 平面是无限的...没有边界...

标签: c# c++ math opengl geometry


【解决方案1】:

您将通过 OpenGL 将 3D 点转换为 2D 屏幕空间点的相同矩阵运行矩形。获取您的输入向量,将它们乘以您想要应用于对象的任何向量、模型视图矩阵、投影矩阵,然后您就有了屏幕空间坐标。然后检查生成的坐标是否在屏幕上,然后您可以计算最小/最大 X 和 Y 坐标,并且您有边界矩形。

如果您有可用的 GLU 实用程序库函数,请参见此处 (9.100):

http://www.opengl.org/resources/faq/technical/transformations.htm

希望对您有所帮助。

【讨论】:

  • 要获得正确的屏幕边界框,还需要 3d 剪辑(想想相机飞过矩形)。正确的通用方法是使用四个平面,但如果相机不会太靠近矩形,那么只需一个 z=epsilon 平面就足够了。
猜你喜欢
  • 2017-08-20
  • 1970-01-01
  • 2015-03-14
  • 1970-01-01
  • 2021-03-17
  • 2021-02-20
  • 1970-01-01
  • 2019-01-05
  • 1970-01-01
相关资源
最近更新 更多