这个java3d代码是如何工作的?

时间:2013-11-15 03:53:14

标签: java java-3d

我不确定如何在此程序中使用数组。任何人都可以向我解释这个程序中的两个数组是如何使用的?

import javax.vecmath.*;
import javax.media.j3d.*;

public class Tetrahedron extends IndexedTriangleArray {
    public Tetrahedron() {
        super(4, TriangleArray.COORDINATES | TriangleArray.NORMALS, 12);
        setCoordinate(0, new Point3f(1f, 1f, 1f));
        setCoordinate(1, new Point3f(1f, -1, -1f));
        setCoordinate(2, new Point3f(-1f, 1f, -1f));
        setCoordinate(3, new Point3f(-1f, -1f, 1f));
        int[] coords = { 0, 1, 2, 0, 3, 1, 1, 3, 2, 2, 3, 0 };
        float n = (float) (1.0 / Math.sqrt(3));
        setNormal(0, new Vector3f(n, n, -n));
        setNormal(1, new Vector3f(n, -n, n));
        setNormal(2, new Vector3f(-n, -n, -n));
        setNormal(3, new Vector3f(-n, n, n));
        int[] norms = { 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3 };
        setCoordinateIndices(0, coords);
        setNormalIndices(0, norms);
    }
}

1 个答案:

答案 0 :(得分:0)

代码首先创建一个点数组和一个法线数组,然后再引用它们来创建数字。对setCoordinate()的四次调用设置了每个顶点的位置。

int[] coords存储构成4个面的4个三角形的顶点位置(每个三角形有3个顶点,总共12个顶点)。第一个三角形由第0个,第1个和第2个顶点组成,下一个三角形包括第0个,第3个和第1个顶点等。

法线的代码以与顶点

类似的方式工作