From 5e9f617bdfea01d0bd5e66daf7a5e55f8f94dbf0 Mon Sep 17 00:00:00 2001 From: Jesse Morgan Date: Wed, 16 Feb 2011 07:24:16 +0000 Subject: Started working on some inertia tensors for the chainlink. Made an adjustment to rotations in the ui. --- src/tesseract/TesseractUI.java | 5 +++-- src/tesseract/objects/ChainLink2.java | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/tesseract/TesseractUI.java b/src/tesseract/TesseractUI.java index da31971..1e8ff9c 100644 --- a/src/tesseract/TesseractUI.java +++ b/src/tesseract/TesseractUI.java @@ -380,10 +380,11 @@ public class TesseractUI extends JFrame { t3d.transform(p); if (e.isAltDown()) { - myCurrentObject.getOrientation().x += p.x; - myCurrentObject.getOrientation().y += p.y; + myCurrentObject.getOrientation().y += p.x; + myCurrentObject.getOrientation().x += p.y; myCurrentObject.getOrientation().z += p.z; myCurrentObject.getOrientation().w = 1; + myCurrentObject.getOrientation().normalize(); } else { myCurrentObject.getPosition().x += p.x; diff --git a/src/tesseract/objects/ChainLink2.java b/src/tesseract/objects/ChainLink2.java index 0678c69..23a8097 100644 --- a/src/tesseract/objects/ChainLink2.java +++ b/src/tesseract/objects/ChainLink2.java @@ -83,6 +83,14 @@ public class ChainLink2 extends PhysicalObject { setShape(createShape(SLICE_COUNT, SLICE_DIVISIONS, diameter, length, width)); + + if (inverseMass != 0) { + final float radius2 = diameter / 2.0f * diameter / 2.0f; + inverseInertiaTensor.m00 = 1 / (8.0f * inverseMass) * (4 * radius2 + 5 * (length * length + width * width)); + inverseInertiaTensor.m11 = inverseInertiaTensor.m00; + inverseInertiaTensor.m22 = 1 / (inverseMass) * (radius2 + 0.75f * (length * length + width * width)); + inverseInertiaTensor.invert(); + } } /** -- cgit v1.2.3