]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/geometry/ElbowGeometryProvider.java
White space clean-up
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / geometry / ElbowGeometryProvider.java
index 46aea58cded408d0cc172090f5299387bae5cdb0..d4428e495ae91fc615f6c113ce89892d2154e5b8 100644 (file)
@@ -4,12 +4,18 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
 
+import javax.vecmath.Point3d;
+import javax.vecmath.Vector3d;
+
 import org.jcae.opencascade.jni.TopoDS_Shape;
 import org.simantics.db.Resource;
 import org.simantics.g3d.math.MathTools;
+import org.simantics.g3d.shape.ArcCylinder;
+import org.simantics.g3d.shape.Mesh;
 import org.simantics.opencascade.OccTriangulator;
 
-public class ElbowGeometryProvider extends BuiltinGeometryProvider  {
+//public class ElbowGeometryProvider extends BuiltinGeometryProvider  {
+public class ElbowGeometryProvider extends BuiltinMeshProvider {
        
        public ElbowGeometryProvider(Resource resource) {
                super(resource);
@@ -19,8 +25,10 @@ public class ElbowGeometryProvider extends BuiltinGeometryProvider  {
        private double turnRadius = 0.05;
        private double turnAngle = Math.PI * 0.5;
        
-       @Override
+//     @Override
        public Collection<TopoDS_Shape> getModel() throws Exception {
+               if (radius < MathTools.NEAR_ZERO || turnRadius < MathTools.NEAR_ZERO)
+                       return Collections.emptyList();
                double t = Math.tan((Math.PI - turnAngle) * 0.5);
                double R = 0.0;
                if (t > MathTools.NEAR_ZERO)
@@ -30,6 +38,20 @@ public class ElbowGeometryProvider extends BuiltinGeometryProvider  {
                return Collections.singletonList(shape);
        }
        
+//     @Override
+       public Mesh getMesh() {
+               if (radius < MathTools.NEAR_ZERO || turnRadius < MathTools.NEAR_ZERO)
+                       return null;
+               double t = Math.tan((Math.PI - turnAngle) * 0.5);
+               double R = 0.0;
+               if (t > MathTools.NEAR_ZERO)
+                       R = turnRadius / t;
+               ArcCylinder cyl = new ArcCylinder();
+               
+               //return cyl.create(new Point3d(-R, 0.0, -turnRadius), new Point3d(0.0,turnRadius,0.0), new Point3d(-R, 0.0, turnRadius), radius, 16, 0.2);
+               return cyl.create(new Point3d(-R, 0.0, -turnRadius), new Vector3d(0.0,1.0,0.0), new Vector3d(0.0,0.0, 1.0),turnRadius, radius, turnAngle,16, 0.2);
+       }
+       
        @Override
        public void setProperties(Map<String, Object> props) {
                if (props.containsKey("turnRadius"))
@@ -42,6 +64,15 @@ public class ElbowGeometryProvider extends BuiltinGeometryProvider  {
                if (radius < MathTools.NEAR_ZERO)
                        radius = MathTools.NEAR_ZERO;
        }
+       
+       @Override
+       public void updateCalculatedProperties(Map<String, Object> returnProps) {
+               double t = Math.tan((Math.PI - turnAngle) * 0.5);
+               double R = 0.0;
+               if (t > MathTools.NEAR_ZERO)
+                       R = turnRadius / t;
+               returnProps.put("length", R);
+       }
 
 }