summaryrefslogtreecommitdiff
path: root/src/sims/prefabs/Pylon.scala
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2009-11-05 21:02:40 +0000
committerJakob Odersky <jodersky@gmail.com>2009-11-05 21:02:40 +0000
commit9d20024aa35cd7f923ebfc1ed9a2ffbf2731da70 (patch)
tree4e97fadc391b310ee1cc7156fda590dff414b2c3 /src/sims/prefabs/Pylon.scala
parent034bc5930ea6f01745f64a6070711d899d2c27ae (diff)
downloadsims-9d20024aa35cd7f923ebfc1ed9a2ffbf2731da70.tar.gz
sims-9d20024aa35cd7f923ebfc1ed9a2ffbf2731da70.tar.bz2
sims-9d20024aa35cd7f923ebfc1ed9a2ffbf2731da70.zip
Initial import.
Diffstat (limited to 'src/sims/prefabs/Pylon.scala')
-rw-r--r--src/sims/prefabs/Pylon.scala47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/sims/prefabs/Pylon.scala b/src/sims/prefabs/Pylon.scala
new file mode 100644
index 0000000..7f3211f
--- /dev/null
+++ b/src/sims/prefabs/Pylon.scala
@@ -0,0 +1,47 @@
+/*
+ * Simple Mechanics Simulator (SiMS)
+ * copyright (c) 2009 Jakob Odersky
+ * made available under the MIT License
+*/
+
+package sims.prefabs
+
+import sims.geometry._
+import sims.dynamics._
+import sims.dynamics.joints._
+
+class Pylon extends Prefab{
+ val position: Vector2D = Vector2D(2,1)
+ val nodeDensity: Double = 100
+ val beamHeight: Double = 1
+ val beamWidth: Double = 0.5
+ val beamNumber: Int = 10
+
+ private val nodeRow1 = (for (i <- 0 to beamNumber) yield (new Circle(0.01, nodeDensity) {
+ pos = position + Vector2D(0, i * beamHeight)}).asBody).toList
+ private val nodeRow2 = (for (i <- 0 to beamNumber) yield (new Circle(0.01, nodeDensity) {
+ pos = position + Vector2D(beamWidth, i * beamHeight)}).asBody).toList
+
+ private val beamRow1 = (for (i <- 0 until nodeRow1.length - 1) yield
+ new DistanceJoint(nodeRow1(i), nodeRow1(i).pos, nodeRow1(i+1), nodeRow1(i + 1).pos)).toList
+ private val beamRow2 = (for (i <- 0 until nodeRow1.length - 1) yield
+ new DistanceJoint(nodeRow2(i), nodeRow2(i).pos, nodeRow2(i+1), nodeRow2(i + 1).pos)).toList
+
+ private val latBeams = (for (i <- 0 to beamNumber) yield
+ new DistanceJoint(nodeRow1(i), nodeRow2(i))).toList
+ private val diagBeams1 = (for (i <- 0 until beamNumber) yield
+ new DistanceJoint(nodeRow1(i), nodeRow2(i + 1))).toList
+ private val diagBeams2 = (for (i <- 0 until beamNumber) yield
+ new DistanceJoint(nodeRow2(i), nodeRow1(i + 1))).toList
+
+
+
+
+ lazy val nodes = nodeRow1 ++ nodeRow2
+ lazy val beams = beamRow1 ++ beamRow2 ++ latBeams ++ diagBeams1 ++ diagBeams2
+
+ override val bodies = nodes
+ override val joints = beams
+
+
+}