summaryrefslogtreecommitdiff
path: root/src/sims
diff options
context:
space:
mode:
Diffstat (limited to 'src/sims')
-rw-r--r--src/sims/collision/AABB.scala2
-rw-r--r--src/sims/collision/CircleCollision.scala4
-rw-r--r--src/sims/collision/Collision.scala4
-rw-r--r--src/sims/collision/Detector.scala2
-rw-r--r--src/sims/collision/GridDetector.scala3
-rw-r--r--src/sims/collision/PolyCollision.scala1
-rw-r--r--src/sims/dynamics/World.scala15
-rw-r--r--src/sims/dynamics/joints/DistanceJoint.scala1
-rw-r--r--src/sims/dynamics/joints/SpringJoint.scala1
-rw-r--r--src/sims/dynamics/joints/test/PrismaticJoint.scala2
-rw-r--r--src/sims/dynamics/joints/test/UnitCircleJoint.scala1
11 files changed, 18 insertions, 18 deletions
diff --git a/src/sims/collision/AABB.scala b/src/sims/collision/AABB.scala
index ea696f2..f3a0b71 100644
--- a/src/sims/collision/AABB.scala
+++ b/src/sims/collision/AABB.scala
@@ -6,7 +6,7 @@
package sims.collision
-import geometry._
+import sims.geometry._
/**
* Axis Aligned Bounding Boxes (AABBs) are rectangles that frame a shape.
diff --git a/src/sims/collision/CircleCollision.scala b/src/sims/collision/CircleCollision.scala
index e77c8e2..04cf2d7 100644
--- a/src/sims/collision/CircleCollision.scala
+++ b/src/sims/collision/CircleCollision.scala
@@ -6,8 +6,8 @@
package sims.collision
-import geometry._
-import dynamics._
+import sims.geometry._
+import sims.dynamics._
/**Collision between two circles.*/
case class CircleCollision(c1: Circle, c2: Circle) extends Collision {
diff --git a/src/sims/collision/Collision.scala b/src/sims/collision/Collision.scala
index ce09ac2..540081a 100644
--- a/src/sims/collision/Collision.scala
+++ b/src/sims/collision/Collision.scala
@@ -6,8 +6,8 @@
package sims.collision
-import dynamics._
-import geometry._
+import sims.dynamics._
+import sims.geometry._
/**Collision between two shapes. Contains methods to compute the collision response.*/
abstract class Collision extends Constraint {
diff --git a/src/sims/collision/Detector.scala b/src/sims/collision/Detector.scala
index 0a3ad5b..96af5dc 100644
--- a/src/sims/collision/Detector.scala
+++ b/src/sims/collision/Detector.scala
@@ -9,8 +9,6 @@ package sims.collision
import sims.geometry._
import sims.dynamics._
-import scala.collection._
-import scala.collection.mutable._
/**A world detects its collisions through concrete implementations of this class.*/
abstract class Detector {
diff --git a/src/sims/collision/GridDetector.scala b/src/sims/collision/GridDetector.scala
index f5ed99a..abc40f2 100644
--- a/src/sims/collision/GridDetector.scala
+++ b/src/sims/collision/GridDetector.scala
@@ -9,7 +9,8 @@ package sims.collision
import sims.dynamics._
import sims.geometry._
import scala.collection._
-import scala.collection.mutable._
+import scala.collection.mutable.ArrayBuffer
+import scala.collection.mutable.HashMap
/**A conrete implementation of <code>Detector</code>. <code>GridDetector</code> divides the world into a grid
* for faster collision detection.*/
diff --git a/src/sims/collision/PolyCollision.scala b/src/sims/collision/PolyCollision.scala
index b4fa917..5296f41 100644
--- a/src/sims/collision/PolyCollision.scala
+++ b/src/sims/collision/PolyCollision.scala
@@ -9,7 +9,6 @@ package sims.collision
import sims.geometry._
import sims.dynamics._
import scala.collection.mutable.Map
-import scala.collection.mutable._
/**Collision between two convex polygons.*/
case class PolyCollision(p1: ConvexPolygon, p2: ConvexPolygon) extends Collision {
diff --git a/src/sims/dynamics/World.scala b/src/sims/dynamics/World.scala
index 0230a50..f24a3fd 100644
--- a/src/sims/dynamics/World.scala
+++ b/src/sims/dynamics/World.scala
@@ -9,7 +9,7 @@ package sims.dynamics
import sims.geometry._
import sims.collision._
import sims.dynamics.joints._
-import scala.collection.mutable._
+import scala.collection.mutable.ArrayBuffer
/**A world contains and simulates a system of rigid bodies and joints.*/
class World {
@@ -35,7 +35,7 @@ class World {
* Example usage: monitors += ("Y-Position", _.pos.y.toString)
* This will calculate all bodies - whose <code>monitor</code> field is set to
* <code>true</code> - second position components.*/
- val monitors = new ArrayBuffer[(String, Body => String)]
+ val monitors = new ArrayBuffer[(String, Body => Any)]
/**Collsion detector who manages collision detection in this world.*/
val detector: Detector = new GridDetector(this)
@@ -65,7 +65,7 @@ class World {
def +=(joint: Joint): Unit = joints += joint
/**Adds the given prefabricated system of bodies and joints to this world.*/
- def +=(p: prefabs.Prefab): Unit = {
+ def +=(p: sims.prefabs.Prefab): Unit = {
for (b <- p.bodies) this += b
for (j <- p.joints) this += j
}
@@ -80,7 +80,7 @@ class World {
def -=(joint: Joint): Unit = joints -= joint
/**Removes the given prefabricated system of bodies and joints from this world.*/
- def -=(p: prefabs.Prefab): Unit = {
+ def -=(p: sims.prefabs.Prefab): Unit = {
for (b <- p.bodies) this -= b
for (j <- p.joints) this -= j
}
@@ -113,12 +113,9 @@ class World {
//integration of acclerations, yields velocities
for (b <- bodies) {
- val m = b.mass
b.applyForce(gravity * b.mass)
- val a = b.force / b.mass
- val alpha = b.torque / b.I
- b.linearVelocity = b.linearVelocity + a * timeStep
- b.angularVelocity = b.angularVelocity + alpha * timeStep
+ b.linearVelocity = b.linearVelocity + (b.force / b.mass) * timeStep
+ b.angularVelocity = b.angularVelocity + (b.torque / b.I) * timeStep
}
//correction of velocities
diff --git a/src/sims/dynamics/joints/DistanceJoint.scala b/src/sims/dynamics/joints/DistanceJoint.scala
index efb49e5..1bf9b46 100644
--- a/src/sims/dynamics/joints/DistanceJoint.scala
+++ b/src/sims/dynamics/joints/DistanceJoint.scala
@@ -6,6 +6,7 @@
package sims.dynamics.joints
+import sims.dynamics._
import sims.geometry._
/** DistanceJoints keep their connection points at a constant distance.
diff --git a/src/sims/dynamics/joints/SpringJoint.scala b/src/sims/dynamics/joints/SpringJoint.scala
index 1267ccf..4d44864 100644
--- a/src/sims/dynamics/joints/SpringJoint.scala
+++ b/src/sims/dynamics/joints/SpringJoint.scala
@@ -6,6 +6,7 @@
package sims.dynamics.joints
+import sims.dynamics._
import sims.geometry._
/**A spring obeying Hooke's law.
diff --git a/src/sims/dynamics/joints/test/PrismaticJoint.scala b/src/sims/dynamics/joints/test/PrismaticJoint.scala
index d4b43b2..040647d 100644
--- a/src/sims/dynamics/joints/test/PrismaticJoint.scala
+++ b/src/sims/dynamics/joints/test/PrismaticJoint.scala
@@ -1,5 +1,7 @@
package sims.dynamics.joints.test
+import sims.dynamics._
+import sims.dynamics.joints._
import sims.geometry._
case class PrismaticJoint(node1: Body, anchor1: Vector2D, node2: Body, anchor2: Vector2D) extends Joint{
diff --git a/src/sims/dynamics/joints/test/UnitCircleJoint.scala b/src/sims/dynamics/joints/test/UnitCircleJoint.scala
index 64f613c..09e72d9 100644
--- a/src/sims/dynamics/joints/test/UnitCircleJoint.scala
+++ b/src/sims/dynamics/joints/test/UnitCircleJoint.scala
@@ -7,6 +7,7 @@
package sims.dynamics.joints.test
import sims.dynamics._
+import sims.dynamics.joints._
import sims.geometry._
class UnitCircleJoint(body: Body, anchor: Vector2D) extends Joint{