C++ 通过对立方体应用变换来创建三维方形平截头体?
我想知道是否可以通过对C++ 通过对立方体应用变换来创建三维方形平截头体?,c++,opengl,graphics,glut,glu,C++,Opengl,Graphics,Glut,Glu,我想知道是否可以通过对glutSolidCube(GLDouble size)应用某种转换来构建一个三维方形平截头体。我猜其中包含了某种剪切矩阵,从我所知,它不是一个内置的转换 请注意,我一点也不关心视锥体(正如您可能想象的那样,它会使任何谷歌搜索出现偏差)。我只想在我的场景中使用一个3D方形平截头体。任何关于如何从立方体制作一个立方体的想法都将不胜感激 它不是剪切矩阵,而是透视投影的投影矩阵。将单位立方体顶点的坐标乘以逆投影矩阵,以获得平截头体顶点的坐标。要获得世界空间中的平截头体坐标,还需要
glutSolidCube(GLDouble size)
应用某种转换来构建一个三维方形平截头体。我猜其中包含了某种剪切矩阵,从我所知,它不是一个内置的转换
请注意,我一点也不关心视锥体(正如您可能想象的那样,它会使任何谷歌搜索出现偏差)。我只想在我的场景中使用一个3D方形平截头体。任何关于如何从立方体制作一个立方体的想法都将不胜感激
它不是剪切矩阵,而是透视投影的投影矩阵。将单位立方体顶点的坐标乘以逆投影矩阵,以获得平截头体顶点的坐标。要获得世界空间中的平截头体坐标,还需要通过反转摄影机矩阵(视图矩阵)将顶点进行多重化 有关详细公式,请参见此处: 要使立方体变形,最好使用所需的顶点创建VBO,或者只渲染多个变形的四边形,如果您希望使用固定的函数管道进行快速“脏”实现的话 附言
有一个用于计算平截头体角点的代码提取:是的,在给定非常精确的投影矩阵的情况下,可以将立方体转换为平截头体。首先定义焦距d,即平截头体边缘会聚的点。然后将体积的所有角乘以该矩阵:
P = [ 1 0 0 0
0 1 0 0
0 1 1/d 0
0 0 1 0 ]
我的一个朋友告诉我,还有一种剪切变换,可以将立方体转换为平截体。他谈到了剪切矩阵中的负系数。但是现在我找不到这个矩阵。有人帮我们吗?他明确要求不要进行OpenGL转换。我认为一个更简单的转换是为了将立方体转换成梯形。