aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/sims/dynamics/constraints/Constraining.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/sims/dynamics/constraints/Constraining.scala')
-rw-r--r--src/main/scala/sims/dynamics/constraints/Constraining.scala28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/main/scala/sims/dynamics/constraints/Constraining.scala b/src/main/scala/sims/dynamics/constraints/Constraining.scala
new file mode 100644
index 0000000..f1834a2
--- /dev/null
+++ b/src/main/scala/sims/dynamics/constraints/Constraining.scala
@@ -0,0 +1,28 @@
+/* _____ _ __ ________ ___ *\
+** / ___/(_) |/ / ___/ |__ \ Simple Mechanics Simulator 2 **
+** \__ \/ / /|_/ /\__ \ __/ / copyright (c) 2011 Jakob Odersky **
+** ___/ / / / / /___/ / / __/ **
+** /____/_/_/ /_//____/ /____/ **
+\* */
+
+package sims.dynamics.constraints
+
+import sims.dynamics._
+
+/**A base trait implemented by objects representing constraints (such as joints or collisions).
+ * @see sims.dynamics.constraints.Constraint
+ */
+trait Constraining {
+
+ /**All constraints represented by this constraining object.*/
+ def constraints: Seq[Constraint]
+
+ /**Invoke `preSolve()` on each constraint.
+ * @see sims.dynamics.constraints.Constraint*/
+ def preSolve() = for (c <- constraints) c.preSolve()
+
+ /**Solves all constraints of this constraining object.
+ * @see sims.dynamics.constraints.Constraint*/
+ def correctVelocity(h: Double, erp: Double): Unit = for (c <- constraints) c.correctVelocity(h, erp)
+
+} \ No newline at end of file