示例#1
0
        public void ThetaHat()
        {
            var c = new coordinates(2d, math.PI_DBL / 2d);
            // Increasing theta is in the negative-x direction.
            var expected = new double2(-1d, 0d);
            var actual   = c.ThetaHat();

            Assert.AreEqual(expected.x, actual.x, tolerance);
            Assert.AreEqual(expected.y, actual.y, tolerance);
        }
示例#2
0
    public void Convert(
        Entity entity,
        EntityManager manager,
        GameObjectConversionSystem conversionSystem
        )
    {
        this._entity  = entity;
        this._manager = manager;

        var position3 = GetComponent <Transform>().position;
        var position2 = new Vector2(position3.x, position3.y);

        var polarPosition = new coordinates(new double2(position2));
        var polarVelocity = polarPosition.PolarTransform(polarPosition.ThetaHat() * velocity);

        var vectors = new Newtonian.Vectors {
            Position = polarPosition,
            Velocity = polarVelocity
        };

        if (this.regime == Regime.Newtonian)
        {
            manager.AddComponentData(entity, vectors);
            logInitialState(gameObject.name, vectors);
        }
        else if (this.regime == Regime.Keplerian)
        {
            var elements = new Keplerian.Elements(vectors);
            manager.AddComponentData(entity, elements);
            logInitialState(gameObject.name, elements);
        }
        else
        {
            throw new NotImplementedException();
        }
    }