diff options
Diffstat (limited to 'src/tesseract')
-rw-r--r-- | src/tesseract/objects/Ellipsoid.java | 7 | ||||
-rw-r--r-- | src/tesseract/objects/Particle.java | 2 | ||||
-rw-r--r-- | src/tesseract/objects/PlanarPolygon.java | 16 |
3 files changed, 22 insertions, 3 deletions
diff --git a/src/tesseract/objects/Ellipsoid.java b/src/tesseract/objects/Ellipsoid.java index c3199ab..25c924e 100644 --- a/src/tesseract/objects/Ellipsoid.java +++ b/src/tesseract/objects/Ellipsoid.java @@ -110,12 +110,13 @@ public class Ellipsoid extends PhysicalObject { private TransformGroup createDefaultEllipsoid(final float radius, final float a,
final float b, final float c) {
- Sphere sphere = new Sphere(radius, new Sphere().getPrimitiveFlags(), DEFAULT_DIVISIONS);
- // | Sphere.ENABLE_GEOMETRY_PICKING,
- // DEFAULT_DIVISIONS);
+ Sphere sphere = new Sphere(radius, new Sphere().getPrimitiveFlags() | Sphere.ENABLE_GEOMETRY_PICKING,
+ DEFAULT_DIVISIONS);
Transform3D tmp = new Transform3D();
tmp.set(new Matrix3f(a, 0.0f, 0.0f, 0.0f, b, 0.0f, 0.0f, 0.0f, c));
TransformGroup tg = new TransformGroup(tmp);
+ tg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
+ tg.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
tg.addChild(sphere);
return tg;
}
diff --git a/src/tesseract/objects/Particle.java b/src/tesseract/objects/Particle.java index b3b6274..b8bbd08 100644 --- a/src/tesseract/objects/Particle.java +++ b/src/tesseract/objects/Particle.java @@ -78,6 +78,8 @@ public class Particle extends PhysicalObject { Sphere sphere = new Sphere(RADIUS, Sphere.ENABLE_GEOMETRY_PICKING, DIVISIONS, appearance); TransformGroup tg = new TransformGroup(); + tg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); + tg.setCapability(TransformGroup.ENABLE_PICK_REPORTING); tg.addChild(sphere); return tg; } diff --git a/src/tesseract/objects/PlanarPolygon.java b/src/tesseract/objects/PlanarPolygon.java index 0abda1b..0521062 100644 --- a/src/tesseract/objects/PlanarPolygon.java +++ b/src/tesseract/objects/PlanarPolygon.java @@ -73,6 +73,14 @@ public class PlanarPolygon extends PhysicalObject { super(position, mass);
setShape(createShape(radius, divisions));
+
+ if (inverseMass != 0) {
+ inverseInertiaTensor.m00 = 1f / 4 / inverseMass * radius * radius;
+ inverseInertiaTensor.m11 = 2 * inverseInertiaTensor.m00;
+ inverseInertiaTensor.m22 = inverseInertiaTensor.m00;
+ inverseInertiaTensor.invert();
+ }
+ updateTransformGroup();
}
/**
* Create a new Ellipsoid.
@@ -84,6 +92,14 @@ public class PlanarPolygon extends PhysicalObject { super(position, DEFAULT_MASS);
setShape(createShape(radius, DEFAULT_DIVISIONS));
+
+ if (inverseMass != 0) {
+ inverseInertiaTensor.m00 = 1f / 4 / inverseMass * radius * radius;
+ inverseInertiaTensor.m11 = 2 * inverseInertiaTensor.m00;
+ inverseInertiaTensor.m22 = inverseInertiaTensor.m00;
+ inverseInertiaTensor.invert();
+ }
+ updateTransformGroup();
}
|