From ca82b8a601c67e6731bc06d212fb2153a4170c0c Mon Sep 17 00:00:00 2001 From: Steve Date: Fri, 18 Feb 2011 09:52:15 +0000 Subject: Fixed picking of ellipsoid Particle had same problem fixed They were both returning a TG instead of a Node so added pick coded to both Added InertiaTensor to Planar polygon --- src/tesseract/objects/Ellipsoid.java | 7 ++++--- src/tesseract/objects/Particle.java | 2 ++ src/tesseract/objects/PlanarPolygon.java | 16 ++++++++++++++++ 3 files changed, 22 insertions(+), 3 deletions(-) (limited to 'src/tesseract/objects') 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(); } -- cgit v1.2.3