summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Morgan <jesse@jesterpm.net>2011-02-16 07:24:16 +0000
committerJesse Morgan <jesse@jesterpm.net>2011-02-16 07:24:16 +0000
commit5e9f617bdfea01d0bd5e66daf7a5e55f8f94dbf0 (patch)
tree31fe45fdbe6096a933c905c0a210fb8dcb66f4f1
parent0c31bb464e6a2ebe782b8dd6e18b36b366ee14f8 (diff)
Started working on some inertia tensors for the chainlink. Made an adjustment to rotations in the ui.
-rw-r--r--src/tesseract/TesseractUI.java5
-rw-r--r--src/tesseract/objects/ChainLink2.java8
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();
+ }
}
/**