]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.g3d/src/org/simantics/g3d/shape/Cone.java
Mesh API to use Tuple3d instead of Vector3d
[simantics/3d.git] / org.simantics.g3d / src / org / simantics / g3d / shape / Cone.java
index 2f37840537cb1c7c051fe3d5ff7a43a14531c531..5283eb444fac8785023648c3fe351e53a3cdd5a3 100644 (file)
@@ -1,75 +1,75 @@
-/*******************************************************************************\r
- * Copyright (c) 2012, 2013 Association for Decentralized Information Management in\r
- * Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- *     VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.g3d.shape;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import javax.vecmath.AxisAngle4d;\r
-import javax.vecmath.Vector3d;\r
-\r
-import org.simantics.g3d.math.MathTools;\r
-\r
-public class Cone {\r
-\r
-       public static Mesh create(double radius, int s) {\r
-               if (s < 3 || radius < MathTools.NEAR_ZERO)\r
-                       throw new IllegalArgumentException();\r
-               List<Vector3d> vertices = new ArrayList<Vector3d>(s+2);\r
-               List<Vector3d> normals = new ArrayList<Vector3d>(vertices.size());\r
-               List<Integer> indices = new ArrayList<Integer>();\r
-               \r
-               vertices.add(new Vector3d(0.0,0.0,0.0));\r
-               normals.add(new Vector3d(0.0,-1.0,0.0));\r
-               vertices.add(new Vector3d(0.0,radius*2.0,0.0));\r
-               normals.add(new Vector3d(0.0,1.0,0.0));\r
-               \r
-               Vector3d v = new Vector3d(radius,0,0);\r
-               for (int i = 0; i < s; i++) {\r
-                       AxisAngle4d aa = new AxisAngle4d(0,1,0,((double)i/(double)s)*Math.PI * 2);\r
-                       Vector3d t = new Vector3d();\r
-                       MathTools.rotate(MathTools.getQuat(aa), v, t);\r
-                       vertices.add(t);\r
-                       Vector3d n = new Vector3d(t);\r
-                       n.normalize();\r
-                       normals.add(n);\r
-               }\r
-               \r
-               for (int i = 0; i < s; i++) {\r
-                       indices.add(0);\r
-                       \r
-                       if (i < s - 1)\r
-                               indices.add(i + 3);\r
-                       else\r
-                               indices.add(2);\r
-                       indices.add(i + 2);\r
-               }\r
-               \r
-               for (int i = 0; i < s; i++) {\r
-                       indices.add(1);\r
-                       indices.add(i + 2);\r
-                       if (i < s - 1)\r
-                               indices.add(i + 3);\r
-                       else\r
-                               indices.add(2);\r
-                       \r
-               }\r
-               return new Mesh(vertices,normals,indices);\r
-               \r
-       }\r
-       \r
-       public static void main(String arg[]) {\r
-               Mesh s1 = create(1.0, 3);\r
-               Mesh s2 = create(1.0, 4);\r
-               System.out.println("debug " + s1 + "\n" + s2);\r
-       }\r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2012, 2013 Association for Decentralized Information Management in
+ * Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.g3d.shape;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.vecmath.AxisAngle4d;
+import javax.vecmath.Vector3d;
+
+import org.simantics.g3d.math.MathTools;
+
+public class Cone {
+
+       public static Mesh create(double radius, int s) {
+               if (s < 3 || radius < MathTools.NEAR_ZERO)
+                       throw new IllegalArgumentException();
+               List<Vector3d> vertices = new ArrayList<Vector3d>(s+2);
+               List<Vector3d> normals = new ArrayList<Vector3d>(vertices.size());
+               List<Integer> indices = new ArrayList<Integer>();
+               
+               vertices.add(new Vector3d(0.0,0.0,0.0));
+               normals.add(new Vector3d(0.0,-1.0,0.0));
+               vertices.add(new Vector3d(0.0,radius*2.0,0.0));
+               normals.add(new Vector3d(0.0,1.0,0.0));
+               
+               Vector3d v = new Vector3d(radius,0,0);
+               for (int i = 0; i < s; i++) {
+                       AxisAngle4d aa = new AxisAngle4d(0,1,0,((double)i/(double)s)*Math.PI * 2);
+                       Vector3d t = new Vector3d();
+                       MathTools.rotate(MathTools.getQuat(aa), v, t);
+                       vertices.add(t);
+                       Vector3d n = new Vector3d(t);
+                       n.normalize();
+                       normals.add(n);
+               }
+               
+               for (int i = 0; i < s; i++) {
+                       indices.add(0);
+                       
+                       if (i < s - 1)
+                               indices.add(i + 3);
+                       else
+                               indices.add(2);
+                       indices.add(i + 2);
+               }
+               
+               for (int i = 0; i < s; i++) {
+                       indices.add(1);
+                       indices.add(i + 2);
+                       if (i < s - 1)
+                               indices.add(i + 3);
+                       else
+                               indices.add(2);
+                       
+               }
+               return Mesh.create(vertices,normals,indices);
+               
+       }
+       
+       public static void main(String arg[]) {
+               Mesh s1 = create(1.0, 3);
+               Mesh s2 = create(1.0, 4);
+               System.out.println("debug " + s1 + "\n" + s2);
+       }
+}