2017年11月8日 星期三

JavaFX 3D - Tetrahedron

以下是以JavaFX 8的TriangleMesh類別建構之Tetrahedron (正四面體),屬於Platonic Solid (柏拉圖多面體)。

float p0 = length*1.0f;
float p1 = 0.0f;
float p2 = (float) (length*Math.sqrt(2.0)/2.0f);

// 建立TriangleMesh
TriangleMesh trianglemesh = new TriangleMesh();

// 設定頂點座標
trianglemesh.getPoints().addAll(
   p0, p1, -p2,
  -p0, p1, -p2,
   p1, p0, p2,
   p1, -p0, p2
);

// 設定貼圖座標
trianglemesh.getTexCoords().addAll(
  0.50f, 1.00f,
  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.00f, 
  0.50f, (float) (1.0-Math.sqrt(3.0)/2.0f),  
  0.00f, 1.00f 
);

// 設定各三角形的面
trianglemesh.getFaces().addAll(
  0, 0, 1, 1, 2, 2,
  1, 1, 0, 0, 3, 3,
  2, 2, 1, 1, 3, 4, 
  0, 0, 2, 2, 3, 5  
);

// 設定各面的平滑參數
trianglemesh.getFaceSmoothingGroups().addAll(0, 2, 4, 8);

// 建立MeshView
MeshView meshview;

meshview = new MeshView(createMesh(150));
...
【參考資料】

[1] Java Official Web Site:http://www.oracle.com/technetwork/java/index.html
[2] JavaFX:http://www.oracle.com/technetwork/java/javafx
[3] JavaFX 8.0 API Specification.
[4] Java Platform, Standard Edition 8 API Specification.
[5] JDK 8 Certified System Configurations.
[6] H. M. Cundy, A. P. Rollett, Mathematical Models, Tarquin Publications, 1981.
[7] G. Sellers, R. S. Wright, N. Haemel, OpenGL SuperBible: Comprehensive Tutorial and Reference (6th Edition), Addison-Wesley Professional, 2013.
[8] 黃嘉輝, JavaFX 8技術手冊, ISBN: 9789863474050, 碁峰資訊, 2014.

© Chia-Hui Huang

沒有留言:

張貼留言