我的朋友和我正在学校的VB课程中从头开始制作一个3d渲染引擎,但我不确定形成多维数据集的数学运算是如何工作的。鉴于六个变量:
rotX
rotY
rotZ
lenX
lenY
lenZ
分别表示x,y,z上的旋转以及x,y,z上的长度,制作立方体的公式是什么?我知道我所要做的就是计算三个段,并从这些段中创建三个平行四边形,所以我只需要数学来找到这三个段是什么。 谢谢!
答案 0 :(得分:1)
两种基本的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实现起来比较棘手,除非你真的需要它(光线追踪渲染),否则就忘了它。
答案 1 :(得分:0)
嗯,首先我们可以考虑如果事情更接近我们的愿景会发生什么。 它似乎偏向一边。 并且进一步思考,我们得出视觉是实际位置的线性函数。 所以让z越大,越接近某些东西。然后我们将x和z相乘以获得要渲染的x位置,并与y相同。然后通过将屏幕上的位置在一行中渲染到另一个预定义的位置来定义一条线,然后用它们定义实体。 我不知道旋转,但是)= 我希望这至少有助于理解。