-5

我不确定该程序中如何使用数组。谁能向我解释一下这个程序中的两个数组是如何使用的?

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);
    }
}
4

1 回答 1

0

该代码首先创建一个点数组以及一个法线数组,然后稍后引用它们来创建图形。四个调用setCoordinate()设置每个顶点的位置。

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

法线代码的工作方式与顶点代码类似

于 2013-11-15T04:10:08.457 回答