Example #1
0
 public SpObject(
     Double m = default(Double),
     SpVector p = default(SpVector),
     SpVector s = default(SpVector),
     SpVector a = default(SpVector),
     IEnumerable<SpVector> fs = null)
 {
     Forces = new List<SpVector>(fs ?? new List<SpVector>());
     M = m;
     P = p ?? new SpVector();
     S = s ?? new SpVector();
     A = a ?? new SpVector();
 }
        public void TestAlmostEquals()
        {
            Double x = 5;
            Assert.IsTrue(x.AlmostEquals(4, 1.5));
            Assert.IsTrue(x.AlmostEquals(6, 1.5));
            Assert.IsFalse(x.AlmostEquals(3, 1.5));
            Assert.IsFalse(x.AlmostEquals(7, 1.5));

            SpVector v = new SpVector(100, 200, 300);
            Assert.IsTrue(v.AlmostEquals(new SpVector(110, 220, 330), v * 0.1));
            Assert.IsTrue(v.AlmostEquals(new SpVector(90, 180, 270), v * 0.1));
            Assert.IsFalse(v.AlmostEquals(new SpVector(110, 220, 330), v * 0.05));
            Assert.IsFalse(v.AlmostEquals(new SpVector(90, 180, 270), v * 0.05));

            v = new SpVector(100, 0, 0);
            Assert.IsTrue(v.AlmostEquals(new SpVector(100, 10, 0), v * 0.1));
            Assert.IsTrue(v.AlmostEquals(new SpVector(105, 5, 0), v * 0.1));
            Assert.IsFalse(v.AlmostEquals(new SpVector(100, 10, 0), v * 0.05));
            Assert.IsFalse(v.AlmostEquals(new SpVector(105, 5, 0), v * 0.05));
        }
Example #3
0
 public SpVector(SpVector copy)
     : this(copy != null ? copy.X : default(Double),
     copy != null ? copy.Y : default(Double),
     copy != null ? copy.Z : default(Double))
 {
 }
Example #4
0
 protected bool Equals(SpVector obj)
 {
     if (obj == null)
         return false;
     else
         return this.X.Equals(obj.X)
             && this.Y.Equals(obj.Y)
             && this.Z.Equals(obj.Z);
 }
Example #5
0
        public virtual void CalulateAcceleration()
        {
            // On calcule l'accelerations du tour selon la loi "somme des forces = M * a"
            SpVector sumF = new SpVector();
            foreach (var f in Forces)
                sumF += f;

            this.A = sumF / M;
        }
Example #6
0
 public virtual void Move()
 {
     // On calcule l'accelerations du tour selon la loi "somme des forces = M * a"
     CalulateAcceleration();
     // On applique le mouvement
     this.S += this.A;
     this.P += this.S;
 }
Example #7
0
 public static Double AlmostRatio(this SpVector v, SpVector v2)
 {
     return (v2 - v).Length2 / v.Length2;
 }
Example #8
0
 public static bool AlmostEquals(this SpVector v, SpVector v2, SpVector approx)
 {
     return (v2 - v).Length2 <= approx.Length2;
 }