0

我和我的朋友在学校的 VB 课上从头开始制作一个 3d 渲染引擎,但我不确定形成立方体的数学是如何工作的。给定六个变量:

    rotX
    rotY
    rotZ
    lenX
    lenY
    lenZ

分别代表 x,y,z 上的旋转和 x,y,z 上的长度,制作立方体的公式是什么?我知道我所要做的就是计算三个段,然后从这些段中创建三个平行四边形,所以我只需要数学来找出这三个段是什么。谢谢!

4

1 回答 1

1

如果您的数据不足,则两者都有 2 个基本的 3D 对象表示。

  1. 表面表示

    • 对象是一组表面多边形/顶点/...
    • 对于立方体,它是一组 8 个点 + 6 个面的三角形/四边形
  2. 分析表示

    • 对象是描述对象的一组方程
    • 对于立方体,它是 6 个平面的交点

我认为您正在使用选项 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
    };

对于大小和方向,您可以应用变换矩阵
或直接通过方向向量重新计算点

  • 所以你需要记住位置(点)和方向(3个向量)和大小(标量)
  • 以上所有内容都可以存储在单个变换矩阵 4x4 中
  • 但如果你想要向量,那么点将是这样的:

P(+a,-a,+a) -> +a*I -a*J +a*K

  • 其中 I,J,K 是方向向量
  • a 是立方体大小
  • P(+a,-a,+a) 是上表中的原始轴对齐点

选项 2 实现起来更棘手,除非你真的需要它(光线追踪渲染)然后忘记它。

于 2013-10-30T12:54:09.360 回答