URL: Visual C# 2015網路程式設計
【參考資料】
float C0 = length * (float) (1.0 + Math.sqrt(5.0)) / 4.0f;
float C1 = length * (float) (3.0 + Math.sqrt(5.0)) / 4.0f;
float C2 = length * (float) (1.0 + Math.sqrt(5.0)) / 2.0f;
float C3 = length * 0.5f;
// 建立TriangleMesh
TriangleMesh trianglemesh = new TriangleMesh();
// 設定頂點座標
trianglemesh.getPoints().addAll(
0.0f, 0.0f, C2,
0.0f, 0.0f, -C2,
C2, 0.0f, 0.0f,
-C2, 0.0f, 0.0f,
0.0f, C2, 0.0f,
0.0f, -C2, 0.0f,
C3, C0, C1,
C3, C0, -C1,
C3, -C0, C1,
C3, -C0, -C1,
-C3, C0, C1,
-C3, C0, -C1,
-C3, -C0, C1,
-C3, -C0, -C1,
C1, C3, C0,
C1, C3, -C0,
C1, -C3, C0,
C1, -C3, -C0,
-C1, C3, C0,
-C1, C3, -C0,
-C1, -C3, C0,
-C1, -C3, -C0,
C0, C1, C3,
C0, C1, -C3,
C0, -C1, C3,
C0, -C1, -C3,
-C0, C1, C3,
-C0, C1, -C3,
-C0, -C1, C3,
-C0, -C1, -C3
);
// 設定貼圖座標
trianglemesh.getTexCoords().addAll(
0.50f, 1.0f,
0.75f, (float) (1.0-Math.sqrt(3.0)/4.0f),
0.25f, (float) (1.0-Math.sqrt(3.0)/4.0f),
1.00f, 1.0f,
0.50f, (float) (1.0-Math.sqrt(3.0)/2.0f),
0.00f, 1.0f
);
// 設定各三角形的面
trianglemesh.getFaces().addAll(
0, 2, 6, 1, 10, 4,
0, 2, 12, 1, 8, 4,
1, 2, 9, 1, 13, 4,
1, 2, 11, 1, 7, 4,
14, 2, 16, 1, 2, 4,
14, 2, 22, 1, 6, 4,
17, 2, 15, 1, 2, 4,
17, 2, 25, 1, 9, 4,
19, 2, 21, 1, 3, 4,
19, 2, 27, 1, 11, 4,
20, 2, 18, 1, 3, 4,
20, 2, 28, 1, 12, 4,
23, 2, 4, 1, 22, 4,
23, 2, 15, 1, 7, 4,
24, 2, 5, 1, 25, 4,
24, 2, 16, 1, 8, 4,
26, 2, 4, 1, 27, 4,
26, 2, 18, 1, 10, 4,
29, 2, 5, 1, 28, 4,
29, 2, 21, 1, 13, 4,
0, 0, 8, 1, 16, 2,
0, 0, 16, 1, 14, 2,
0, 0, 14, 1, 6, 2,
0, 0, 10, 1, 18, 2,
0, 0, 18, 1, 20, 2,
0, 0, 20, 1, 12, 2,
1, 0, 7, 1, 15, 2,
1, 0, 15, 1, 17, 2,
1, 0, 17, 1, 9, 2,
1, 0, 13, 1, 21, 2,
1, 0, 21, 1, 19, 2,
1, 0, 19, 1, 11, 2,
2, 0, 15, 1, 23, 2,
2, 0, 23, 1, 22, 2,
2, 0, 22, 1, 14, 2,
2, 0, 16, 1, 24, 2,
2, 0, 24, 1, 25, 2,
2, 0, 25, 1, 17, 2,
3, 0, 18, 1, 26, 2,
3, 0, 26, 1, 27, 2,
3, 0, 27, 1, 19, 2,
3, 0, 21, 1, 29, 2,
3, 0, 29, 1, 28, 2,
3, 0, 28, 1, 20, 2,
4, 0, 23, 1, 7, 2,
4, 0, 7, 1, 11, 2,
4, 0, 11, 1, 27, 2,
4, 0, 26, 1, 10, 2,
4, 0, 10, 1, 6, 2,
4, 0, 6, 1, 22, 2,
5, 0, 24, 1, 8, 2,
5, 0, 8, 1, 12, 2,
5, 0, 12, 1, 28, 2,
5, 0, 29, 1, 13, 2,
5, 0, 13, 1, 9, 2,
5, 0, 9, 1, 25, 2
);
// 設定各面的平滑參數
trianglemesh.getFaceSmoothingGroups().addAll(
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
);
// 建立MeshView
MeshView meshview;
meshview = new MeshView(createMesh(100));
...
【參考資料】