c++ - 旋转立方体,使正面保持正方形

标签 c++ c opengl 3d transformation

在 OpenGL 中,我必须旋转一个立方体(并平移它),使其看起来像这两张图像中的样子。 cubes

在没有任何变换的情况下,只有正面的红色脸是可见的。我只是不明白如何旋转它(以便顶部和右侧像图像中那样可见)并使红色的脸保持完全正方形。

我考虑过将它翻译到左下角,但这只会移动红色方 block ,不会使其他面孔可见。

我正在使用 glFrustum(-20, 20, -20, 20, -1, -10);

最佳答案

如果您使用的是透视投影(您就是这样)并且立方体的正面平行于 x-y 平面,那么如果立方体完全位于眼睛空间的一个象限内,您将只能看到另外两个面;也就是说,如果有水平线和垂直线将窗口切成两半,则立方体必须完全位于四个生成的矩形之一内。

显示另外两张脸的其他选项是

  • 使用等距投影
  • 旋转立方体以使其他面进入视野。

为了帮助形象化,请尝试播放 Minecraft (比方说)并以不同的方式四处移动,看看不同方 block 的不同侧面是如何进入视野的。

关于c++ - 旋转立方体,使正面保持正方形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10672768/

相关文章:

c++ - 这种精度损失发生在哪里以及如何防止它发生?

c - 参数如何有类型但没有名称?

c - 如何重新设计此代码以避免转到

java - 隐藏魔方内部接线

opengl - 更新统一值是否会拖延整个渲染管道?

c++ - 多生产者单消费者 - 段错误

c++ - 在指针中存储无符号整数

android - 针对 android 工具链上的 C++ 标准库进行编译

c - 如何从终端分离程序并将其附加回去?

opengl - 从 Cygwin 下的 OpenGL 开始