我和我的朋友在学校的 VB 课上从头开始制作一个 3d 渲染引擎,但我不确定形成立方体的数学是如何工作的。给定六个变量:
rotX
rotY
rotZ
lenX
lenY
lenZ
分别代表 x,y,z 上的旋转和 x,y,z 上的长度,制作立方体的公式是什么?我知道我所要做的就是计算三个段,然后从这些段中创建三个平行四边形,所以我只需要数学来找出这三个段是什么。谢谢!
如果您的数据不足,则两者都有 2 个基本的 3D 对象表示。
表面表示
分析表示
我认为您正在使用选项 1,所以您需要的是: - 位置 - 方向 - 大小
通常一个轴对齐的立方体看起来像这样:
const double a=1.0; //cube size;
double pnt[8][3]= //cube points
{
+a,-a,+a,
+a,+a,+a,
-a,+a,+a,
-a,-a,+a,
+a,-a,-a,
+a,+a,-a,
-a,+a,-a,
-a,-a,-a
};
int tab[24]=
{
0,1,2,3, // 1st.quad
7,6,5,4, // 2nd.quad
4,5,1,0, // 3th.quad ...
5,6,2,1,
6,7,3,2,
7,4,0,3
};
对于大小和方向,您可以应用变换矩阵
或直接通过方向向量重新计算点
P(+a,-a,+a) -> +a*I -a*J +a*K
选项 2 实现起来更棘手,除非你真的需要它(光线追踪渲染)然后忘记它。