public override void _Ready() { var size = GetViewportRect().Size; var pendulum = new SimplePendulum() { Angle = Mathf.Pi / 4, RopeLength = size.y / 2, Position = new Vector2(size.x / 2, 0) }; AddChild(pendulum); }
public void TestSimplePendulum() { SimplePendulum p = new SimplePendulum(1, 1, Math.PI / 10); p.LocalGravity = 9.8; double period = p.Period; double expected = 2.007; Assert.IsTrue(Helpers.WithinTolerance(period, expected)); double frequency = p.Frequency; double expected2 = 0.4983; Assert.IsTrue(Helpers.WithinTolerance(frequency, expected2)); }
public override void _Ready() { var size = GetViewportRect().Size; const float angleStep = BaseAngle / ChildrenPerParent; var ropeLength = (size.y * 0.95f) / Steps; var parents = new List <SimplePendulum>(); for (int step = 0; step < Steps; ++step) { var newParents = new List <SimplePendulum>(); if (parents.Count == 0) { // Root pendulum var plm = new SimplePendulum() { Position = new Vector2(size.x / 2, 0), RopeLength = ropeLength, Angle = Mathf.Pi / 2 }; AddChild(plm); newParents.Add(plm); } else { // Child pendulums for (int pIndex = 0; pIndex < parents.Count; ++pIndex) { for (int cIndex = 0; cIndex < ChildrenPerParent; ++cIndex) { var plm = new SimplePendulum() { ShowBehindParent = true, RopeLength = ropeLength, Angle = angleStep * cIndex }; parents[pIndex].AddPendulumChild(plm); newParents.Add(plm); } } } parents = newParents; } }