summaryrefslogtreecommitdiff
path: root/src/tesseract/objects
diff options
context:
space:
mode:
authorPhillip <pacardon@u.washington.edu>2011-02-18 04:55:23 +0000
committerPhillip <pacardon@u.washington.edu>2011-02-18 04:55:23 +0000
commitaf467cea40b760221244a6ce23c4e04ca2d3f37a (patch)
treeb08779430ead8551c210872b0b47404d46b3cedc /src/tesseract/objects
parent8c310d25ab2ce359b2e5383fbac937ac58f7feff (diff)
Toroid @ origion!
Diffstat (limited to 'src/tesseract/objects')
-rw-r--r--src/tesseract/objects/Toroid.java26
1 files changed, 19 insertions, 7 deletions
diff --git a/src/tesseract/objects/Toroid.java b/src/tesseract/objects/Toroid.java
index 7f88fcb..581ce7d 100644
--- a/src/tesseract/objects/Toroid.java
+++ b/src/tesseract/objects/Toroid.java
@@ -41,12 +41,14 @@ public class Toroid extends PhysicalObject {
arcRadius, arcDivisions));
if (inverseMass != 0) {
float a = sliceRadius * sliceRadius;
- float c = arcRadius * arcRadius;
- inverseInertiaTensor.m00 = 5f * a / 8f + c / 2f;
- inverseInertiaTensor.m11 = 5f * a / 8f + c / 2f;;
- inverseInertiaTensor.m22 = 3f * a / 4 + c;
+ float b = arcRadius * arcRadius;
+ inverseInertiaTensor.m00 = ((4f * a + 5f * b) / 8f) * mass;
+ inverseInertiaTensor.m11 = ((4f * a + 5f * b) / 8f) * mass;
+ inverseInertiaTensor.m22 = (a + (3f/4f) * b) * mass;
inverseInertiaTensor.invert();
}
+
+
}
@@ -62,11 +64,13 @@ public class Toroid extends PhysicalObject {
Point3f[][] coordinates = new Point3f[arcDivisions][sliceDivisions];
final float arcAngle = (float) (Math.PI * 2.0);
final float sliceDivisionAngle = 2 * (float) Math.PI / sliceDivisions;
-
+ Transform3D center = new Transform3D();
+ center.setTranslation(new Vector3f(-(arcRadius), 0, 0));
for (int i = 0; i < sliceDivisions; i++) {
coordinates[0][i] = new Point3f(sliceRadius
* (float) Math.cos(i * sliceDivisionAngle), 0f, sliceRadius
- * (float) Math.sin(i * sliceDivisionAngle));
+ * (float) Math.sin(i * sliceDivisionAngle));
+
}
Transform3D trans3D = new Transform3D();
@@ -77,12 +81,20 @@ public class Toroid extends PhysicalObject {
tmp.setIdentity();
tmp.setTranslation(new Vector3f(-arcRadius, 0, 0));
trans3D.mul(tmp);
+ //trans3D.mul(center);
for (int j = 1; j < arcDivisions; j++) {
for (int i = 0; i < sliceDivisions; i++) {
coordinates[j][i] = new Point3f(coordinates[j - 1][i]);
trans3D.transform(coordinates[j][i]);
- coordinates[j][i].scale(scale);
+ //center.transform(coordinates[j][i]);
+ //coordinates[j][i].scale(scale);
+
+ }
+ }
+ for (int j = 0; j < arcDivisions; j++) {
+ for (int i = 0; i < sliceDivisions; i++) {
+ center.transform(coordinates[j][i]);
}
}