Пример #1
0
        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);
        }
Пример #2
0
        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));
        }
Пример #3
0
        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;
            }
        }