Example #1
0
 public void Constructors()
 {
     {
         var v = new hvec2(new Half(7.5));
         Assert.AreEqual(new Half(7.5), v.x);
         Assert.AreEqual(new Half(7.5), v.y);
     }
     {
         var v = new hvec2(new Half(-8), new Half(6.5));
         Assert.AreEqual(new Half(-8), v.x);
         Assert.AreEqual(new Half(6.5), v.y);
     }
     {
         var v = new hvec2(new hvec2(new Half(-3.5), new Half(-2.5)));
         Assert.AreEqual(new Half(-3.5), v.x);
         Assert.AreEqual(new Half(-2.5), v.y);
     }
     {
         var v = new hvec2(new hvec3(new Half(8.5), new Half(-0.5), new Half(7.5)));
         Assert.AreEqual(new Half(8.5), v.x);
         Assert.AreEqual(new Half(-0.5), v.y);
     }
     {
         var v = new hvec2(new hvec4(new Half(3), new Half(4), new Half(4), new Half(-0.5)));
         Assert.AreEqual(new Half(3), v.x);
         Assert.AreEqual(new Half(4), v.y);
     }
 }
Example #2
0
 /// <summary>
 /// Constructs this matrix from a series of column vectors. Non-overwritten fields are from an Identity matrix.
 /// </summary>
 public hmat2(hvec2 c0, hvec2 c1)
 {
     this.m00 = c0.x;
     this.m01 = c0.y;
     this.m10 = c1.x;
     this.m11 = c1.y;
 }
Example #3
0
 /// <summary>
 /// Constructs this matrix from a series of column vectors. Non-overwritten fields are from an Identity matrix.
 /// </summary>
 public hmat3x2(hvec2 c0, hvec2 c1)
 {
     this.m00 = c0.x;
     this.m01 = c0.y;
     this.m10 = c1.x;
     this.m11 = c1.y;
     this.m20 = Half.Zero;
     this.m21 = Half.Zero;
 }
Example #4
0
 /// <summary>
 /// Constructs this matrix from a series of column vectors. Non-overwritten fields are from an Identity matrix.
 /// </summary>
 public hmat3x2(hvec2 c0, hvec2 c1, hvec2 c2)
 {
     this.m00 = c0.x;
     this.m01 = c0.y;
     this.m10 = c1.x;
     this.m11 = c1.y;
     this.m20 = c2.x;
     this.m21 = c2.y;
 }
Example #5
0
        public void PropertyValues()
        {
            var v    = new hvec2(new Half(-6.5), Half.Zero);
            var vals = v.Values;

            Assert.AreEqual(new Half(-6.5), vals[0]);
            Assert.AreEqual(Half.Zero, vals[1]);
            Assert.That(vals.SequenceEqual(v.ToArray()));
        }
Example #6
0
 /// <summary>
 /// Constructs this matrix from a series of column vectors. Non-overwritten fields are from an Identity matrix.
 /// </summary>
 public hmat2x3(hvec2 c0, hvec2 c1)
 {
     this.m00 = c0.x;
     this.m01 = c0.y;
     this.m02 = Half.Zero;
     this.m10 = c1.x;
     this.m11 = c1.y;
     this.m12 = Half.Zero;
 }
Example #7
0
        public void SerializationJson()
        {
            var v0 = new hvec2(new Half(-6.5), new Half(6));
            var s0 = JsonConvert.SerializeObject(v0);

            var v1 = JsonConvert.DeserializeObject <hvec2>(s0);
            var s1 = JsonConvert.SerializeObject(v1);

            Assert.AreEqual(v0, v1);
            Assert.AreEqual(s0, s1);
        }
Example #8
0
 /// <summary>
 /// Constructs this matrix from a series of column vectors. Non-overwritten fields are from an Identity matrix.
 /// </summary>
 public hmat4x2(hvec2 c0, hvec2 c1, hvec2 c2)
 {
     this.m00 = c0.x;
     this.m01 = c0.y;
     this.m10 = c1.x;
     this.m11 = c1.y;
     this.m20 = c2.x;
     this.m21 = c2.y;
     this.m30 = Half.Zero;
     this.m31 = Half.Zero;
 }
Example #9
0
 /// <summary>
 /// Constructs this matrix from a series of column vectors. Non-overwritten fields are from an Identity matrix.
 /// </summary>
 public hmat4x2(hvec2 c0, hvec2 c1, hvec2 c2, hvec2 c3)
 {
     this.m00 = c0.x;
     this.m01 = c0.y;
     this.m10 = c1.x;
     this.m11 = c1.y;
     this.m20 = c2.x;
     this.m21 = c2.y;
     this.m30 = c3.x;
     this.m31 = c3.y;
 }
Example #10
0
 /// <summary>
 /// Constructs this matrix from a series of column vectors. Non-overwritten fields are from an Identity matrix.
 /// </summary>
 public hmat3(hvec2 c0, hvec2 c1, hvec2 c2)
 {
     this.m00 = c0.x;
     this.m01 = c0.y;
     this.m02 = Half.Zero;
     this.m10 = c1.x;
     this.m11 = c1.y;
     this.m12 = Half.Zero;
     this.m20 = c2.x;
     this.m21 = c2.y;
     this.m22 = Half.One;
 }
Example #11
0
 public void InvariantCommutativeNeg()
 {
     {
         var v0 = new hvec2(new Half(-1), new Half(7.5));
         var v1 = new hvec2(new Half(2.5), new Half(-7.5));
         Assert.AreEqual(v0 - v1, -(v1 - v0));
     }
     {
         var v0 = new hvec2(new Half(-9), Half.One);
         var v1 = new hvec2(new Half(3.5), new Half(-9));
         Assert.AreEqual(v0 - v1, -(v1 - v0));
     }
     {
         var v0 = new hvec2(new Half(3.5), new Half(3));
         var v1 = new hvec2(new Half(-8.5), new Half(7.5));
         Assert.AreEqual(v0 - v1, -(v1 - v0));
     }
     {
         var v0 = new hvec2(new Half(-1.5), new Half(-7));
         var v1 = new hvec2(new Half(7.5), new Half(5));
         Assert.AreEqual(v0 - v1, -(v1 - v0));
     }
     {
         var v0 = new hvec2(new Half(8.5), new Half(-1));
         var v1 = new hvec2(new Half(9), new Half(7.5));
         Assert.AreEqual(v0 - v1, -(v1 - v0));
     }
     {
         var v0 = new hvec2(new Half(2.5), new Half(-4.5));
         var v1 = new hvec2(new Half(-5), new Half(7));
         Assert.AreEqual(v0 - v1, -(v1 - v0));
     }
     {
         var v0 = new hvec2(new Half(6), new Half(-2.5));
         var v1 = new hvec2(Half.Zero, new Half(-3.5));
         Assert.AreEqual(v0 - v1, -(v1 - v0));
     }
     {
         var v0 = new hvec2(new Half(-0.5), new Half(-1.5));
         var v1 = new hvec2(new Half(-5.5), new Half(2));
         Assert.AreEqual(v0 - v1, -(v1 - v0));
     }
     {
         var v0 = new hvec2(new Half(2), new Half(-9));
         var v1 = new hvec2(new Half(2.5), new Half(7.5));
         Assert.AreEqual(v0 - v1, -(v1 - v0));
     }
     {
         var v0 = new hvec2(new Half(2.5), new Half(9.5));
         var v1 = new hvec2(new Half(3), new Half(6));
         Assert.AreEqual(v0 - v1, -(v1 - v0));
     }
 }
Example #12
0
 public void TriangleInequality()
 {
     {
         var v0 = new hvec2(new Half(-7), new Half(3));
         var v1 = new hvec2(new Half(-8), new Half(2));
         Assert.GreaterOrEqual(v0.NormMax + v1.NormMax, (v0 + v1).NormMax);
     }
     {
         var v0 = new hvec2(new Half(-6), new Half(9.5));
         var v1 = new hvec2(new Half(-1.5), new Half(-4.5));
         Assert.GreaterOrEqual(v0.NormMax + v1.NormMax, (v0 + v1).NormMax);
     }
     {
         var v0 = new hvec2(new Half(-6.5), new Half(-6));
         var v1 = new hvec2(new Half(-6), new Half(7));
         Assert.GreaterOrEqual(v0.NormMax + v1.NormMax, (v0 + v1).NormMax);
     }
     {
         var v0 = new hvec2(new Half(0.5), new Half(4.5));
         var v1 = new hvec2(new Half(9), new Half(7.5));
         Assert.GreaterOrEqual(v0.NormMax + v1.NormMax, (v0 + v1).NormMax);
     }
     {
         var v0 = new hvec2(new Half(0.5), new Half(-8.5));
         var v1 = new hvec2(new Half(5), new Half(8));
         Assert.GreaterOrEqual(v0.NormMax + v1.NormMax, (v0 + v1).NormMax);
     }
     {
         var v0 = new hvec2(new Half(-2.5), new Half(-7));
         var v1 = new hvec2(new Half(3.5), new Half(-5));
         Assert.GreaterOrEqual(v0.NormMax + v1.NormMax, (v0 + v1).NormMax);
     }
     {
         var v0 = new hvec2(new Half(-9.5), new Half(-5.5));
         var v1 = new hvec2(new Half(-7), new Half(7.5));
         Assert.GreaterOrEqual(v0.NormMax + v1.NormMax, (v0 + v1).NormMax);
     }
     {
         var v0 = new hvec2(new Half(-0.5), Half.Zero);
         var v1 = new hvec2(new Half(8.5), new Half(-3));
         Assert.GreaterOrEqual(v0.NormMax + v1.NormMax, (v0 + v1).NormMax);
     }
     {
         var v0 = new hvec2(new Half(4.5), new Half(-2.5));
         var v1 = new hvec2(new Half(6.5), new Half(-1));
         Assert.GreaterOrEqual(v0.NormMax + v1.NormMax, (v0 + v1).NormMax);
     }
     {
         var v0 = new hvec2(new Half(-2), new Half(-4));
         var v1 = new hvec2(new Half(9.5), Half.Zero);
         Assert.GreaterOrEqual(v0.NormMax + v1.NormMax, (v0 + v1).NormMax);
     }
 }
Example #13
0
 public void InvariantCommutative()
 {
     {
         var v0 = new hvec2(new Half(-6), new Half(-7));
         var v1 = new hvec2(new Half(9.5), new Half(-5));
         Assert.AreEqual(v0 * v1, v1 * v0);
     }
     {
         var v0 = new hvec2(new Half(-3), new Half(9.5));
         var v1 = new hvec2(new Half(5.5), new Half(-1));
         Assert.AreEqual(v0 * v1, v1 * v0);
     }
     {
         var v0 = new hvec2(new Half(-7), new Half(5.5));
         var v1 = new hvec2(new Half(-2), new Half(8.5));
         Assert.AreEqual(v0 * v1, v1 * v0);
     }
     {
         var v0 = new hvec2(new Half(2.5), new Half(8));
         var v1 = new hvec2(new Half(-7), new Half(-8));
         Assert.AreEqual(v0 * v1, v1 * v0);
     }
     {
         var v0 = new hvec2(new Half(-2.5), new Half(-5));
         var v1 = new hvec2(new Half(5.5), new Half(-4));
         Assert.AreEqual(v0 * v1, v1 * v0);
     }
     {
         var v0 = new hvec2(new Half(4), new Half(4.5));
         var v1 = new hvec2(new Half(9), new Half(3));
         Assert.AreEqual(v0 * v1, v1 * v0);
     }
     {
         var v0 = new hvec2(new Half(-9.5), Half.Zero);
         var v1 = new hvec2(new Half(-1), Half.Zero);
         Assert.AreEqual(v0 * v1, v1 * v0);
     }
     {
         var v0 = new hvec2(new Half(-2.5), new Half(4.5));
         var v1 = new hvec2(new Half(-0.5), new Half(4));
         Assert.AreEqual(v0 * v1, v1 * v0);
     }
     {
         var v0 = new hvec2(Half.One, new Half(-5));
         var v1 = new hvec2(new Half(9), new Half(3));
         Assert.AreEqual(v0 * v1, v1 * v0);
     }
     {
         var v0 = new hvec2(Half.One, new Half(-0.5));
         var v1 = new hvec2(new Half(4.5), new Half(-6.5));
         Assert.AreEqual(v0 * v1, v1 * v0);
     }
 }
Example #14
0
        public void Operators()
        {
            var v1 = new hvec2(new Half(-4), new Half(2.5));
            var v2 = new hvec2(new Half(-4), new Half(2.5));
            var v3 = new hvec2(new Half(2.5), new Half(-4));

            Assert.That(v1 == new hvec2(v1));
            Assert.That(v2 == new hvec2(v2));
            Assert.That(v3 == new hvec2(v3));
            Assert.That(v1 == v2);
            Assert.That(v1 != v3);
            Assert.That(v2 != v3);
        }
Example #15
0
        public void StringInterop()
        {
            var v = new hvec2(new Half(-9), new Half(5));

            var s0 = v.ToString();
            var s1 = v.ToString("#");

            var v0 = hvec2.Parse(s0);
            var v1 = hvec2.Parse(s1, "#");

            Assert.AreEqual(v, v0);
            Assert.AreEqual(v, v1);

            var b0 = hvec2.TryParse(s0, out v0);
            var b1 = hvec2.TryParse(s1, "#", out v1);

            Assert.That(b0);
            Assert.That(b1);
            Assert.AreEqual(v, v0);
            Assert.AreEqual(v, v1);

            b0 = hvec2.TryParse(null, out v0);
            Assert.False(b0);
            b0 = hvec2.TryParse("", out v0);
            Assert.False(b0);
            b0 = hvec2.TryParse(s0 + ", 0", out v0);
            Assert.False(b0);

            Assert.Throws <NullReferenceException>(() => { hvec2.Parse(null); });
            Assert.Throws <FormatException>(() => { hvec2.Parse(""); });
            Assert.Throws <FormatException>(() => { hvec2.Parse(s0 + ", 0"); });

            var s2 = v.ToString(";", CultureInfo.InvariantCulture);

            Assert.That(s2.Length > 0);

            var s3 = v.ToString("; ", "G");
            var s4 = v.ToString("; ", "G", CultureInfo.InvariantCulture);
            var v3 = hvec2.Parse(s3, "; ", NumberStyles.Number);
            var v4 = hvec2.Parse(s4, "; ", NumberStyles.Number, CultureInfo.InvariantCulture);

            Assert.AreEqual(v, v3);
            Assert.AreEqual(v, v4);

            var b4 = hvec2.TryParse(s4, "; ", NumberStyles.Number, CultureInfo.InvariantCulture, out v4);

            Assert.That(b4);
            Assert.AreEqual(v, v4);
        }
Example #16
0
 /// <summary>
 /// Constructs this matrix from a series of column vectors. Non-overwritten fields are from an Identity matrix.
 /// </summary>
 public hmat4x3(hvec2 c0, hvec2 c1, hvec2 c2, hvec2 c3)
 {
     this.m00 = c0.x;
     this.m01 = c0.y;
     this.m02 = Half.Zero;
     this.m10 = c1.x;
     this.m11 = c1.y;
     this.m12 = Half.Zero;
     this.m20 = c2.x;
     this.m21 = c2.y;
     this.m22 = Half.One;
     this.m30 = c3.x;
     this.m31 = c3.y;
     this.m32 = Half.Zero;
 }
Example #17
0
 /// <summary>
 /// Constructs this matrix from a series of column vectors. Non-overwritten fields are from an Identity matrix.
 /// </summary>
 public hmat3x4(hvec2 c0, hvec2 c1)
 {
     this.m00 = c0.x;
     this.m01 = c0.y;
     this.m02 = Half.Zero;
     this.m03 = Half.Zero;
     this.m10 = c1.x;
     this.m11 = c1.y;
     this.m12 = Half.Zero;
     this.m13 = Half.Zero;
     this.m20 = Half.Zero;
     this.m21 = Half.Zero;
     this.m22 = Half.One;
     this.m23 = Half.Zero;
 }
Example #18
0
        public void InlineRGBA()
        {
            {
                var v0 = new hvec2(new Half(6), new Half(6.5));
                var v1 = new Half(new Half(-7));
                var v2 = v0.r;
                v0.r = v1;
                var v3 = v0.r;

                Assert.AreEqual(v1, v3);

                Assert.AreEqual(new Half(-7), v0.x);
                Assert.AreEqual(new Half(6.5), v0.y);

                Assert.AreEqual(new Half(6), v2);
            }
            {
                var v0 = new hvec2(new Half(6), new Half(-0.5));
                var v1 = new Half(new Half(-6));
                var v2 = v0.g;
                v0.g = v1;
                var v3 = v0.g;

                Assert.AreEqual(v1, v3);

                Assert.AreEqual(new Half(6), v0.x);
                Assert.AreEqual(new Half(-6), v0.y);

                Assert.AreEqual(new Half(-0.5), v2);
            }
            {
                var v0 = new hvec2(new Half(1.5), Half.One);
                var v1 = new hvec2(new Half(6.5), new Half(-8));
                var v2 = v0.rg;
                v0.rg = v1;
                var v3 = v0.rg;

                Assert.AreEqual(v1, v3);

                Assert.AreEqual(new Half(6.5), v0.x);
                Assert.AreEqual(new Half(-8), v0.y);

                Assert.AreEqual(new Half(1.5), v2.x);
                Assert.AreEqual(Half.One, v2.y);
            }
        }
Example #19
0
        public void InlineXYZW()
        {
            {
                var v0 = new hvec2(new Half(-4.5), new Half(-9.5));
                var v1 = new hvec2(new Half(-6.5), new Half(9));
                var v2 = v0.xy;
                v0.xy = v1;
                var v3 = v0.xy;

                Assert.AreEqual(v1, v3);

                Assert.AreEqual(new Half(-6.5), v0.x);
                Assert.AreEqual(new Half(9), v0.y);

                Assert.AreEqual(new Half(-4.5), v2.x);
                Assert.AreEqual(new Half(-9.5), v2.y);
            }
        }
Example #20
0
 public void InvariantNorm()
 {
     {
         var v0 = new hvec2(new Half(9), new Half(-6.5));
         Assert.LessOrEqual(v0.NormMax, v0.Norm);
     }
     {
         var v0 = new hvec2(new Half(-0.5), new Half(-3));
         Assert.LessOrEqual(v0.NormMax, v0.Norm);
     }
     {
         var v0 = new hvec2(new Half(5.5), new Half(4.5));
         Assert.LessOrEqual(v0.NormMax, v0.Norm);
     }
     {
         var v0 = new hvec2(Half.One, new Half(3));
         Assert.LessOrEqual(v0.NormMax, v0.Norm);
     }
     {
         var v0 = new hvec2(new Half(4.5), new Half(7.5));
         Assert.LessOrEqual(v0.NormMax, v0.Norm);
     }
     {
         var v0 = new hvec2(new Half(-6), Half.One);
         Assert.LessOrEqual(v0.NormMax, v0.Norm);
     }
     {
         var v0 = new hvec2(new Half(1.5), new Half(-4.5));
         Assert.LessOrEqual(v0.NormMax, v0.Norm);
     }
     {
         var v0 = new hvec2(new Half(-1), new Half(5));
         Assert.LessOrEqual(v0.NormMax, v0.Norm);
     }
     {
         var v0 = new hvec2(new Half(4), new Half(-6));
         Assert.LessOrEqual(v0.NormMax, v0.Norm);
     }
     {
         var v0 = new hvec2(new Half(-7), new Half(3.5));
         Assert.LessOrEqual(v0.NormMax, v0.Norm);
     }
 }
Example #21
0
 public void InvariantIdNeg()
 {
     {
         var v0 = new hvec2(new Half(5), new Half(-3));
         Assert.AreEqual(v0, -(-v0));
     }
     {
         var v0 = new hvec2(new Half(-7), new Half(-7));
         Assert.AreEqual(v0, -(-v0));
     }
     {
         var v0 = new hvec2(Half.One, new Half(8.5));
         Assert.AreEqual(v0, -(-v0));
     }
     {
         var v0 = new hvec2(new Half(9.5), new Half(8));
         Assert.AreEqual(v0, -(-v0));
     }
     {
         var v0 = new hvec2(new Half(5), new Half(-9.5));
         Assert.AreEqual(v0, -(-v0));
     }
     {
         var v0 = new hvec2(new Half(3.5), new Half(9.5));
         Assert.AreEqual(v0, -(-v0));
     }
     {
         var v0 = new hvec2(new Half(-1), new Half(-1));
         Assert.AreEqual(v0, -(-v0));
     }
     {
         var v0 = new hvec2(new Half(-8), new Half(-0.5));
         Assert.AreEqual(v0, -(-v0));
     }
     {
         var v0 = new hvec2(new Half(-0.5), new Half(5.5));
         Assert.AreEqual(v0, -(-v0));
     }
     {
         var v0 = new hvec2(new Half(3.5), new Half(-1.5));
         Assert.AreEqual(v0, -(-v0));
     }
 }
Example #22
0
 public void InvariantTriple()
 {
     {
         var v0 = new hvec2(new Half(-2), new Half(-4));
         Assert.AreEqual(v0 + v0 + v0, 3 * v0);
     }
     {
         var v0 = new hvec2(new Half(7), new Half(1.5));
         Assert.AreEqual(v0 + v0 + v0, 3 * v0);
     }
     {
         var v0 = new hvec2(Half.One, new Half(2.5));
         Assert.AreEqual(v0 + v0 + v0, 3 * v0);
     }
     {
         var v0 = new hvec2(new Half(-5), new Half(-1.5));
         Assert.AreEqual(v0 + v0 + v0, 3 * v0);
     }
     {
         var v0 = new hvec2(new Half(6.5), new Half(-2.5));
         Assert.AreEqual(v0 + v0 + v0, 3 * v0);
     }
     {
         var v0 = new hvec2(new Half(-8.5), new Half(-5.5));
         Assert.AreEqual(v0 + v0 + v0, 3 * v0);
     }
     {
         var v0 = new hvec2(new Half(-1.5), new Half(6.5));
         Assert.AreEqual(v0 + v0 + v0, 3 * v0);
     }
     {
         var v0 = new hvec2(new Half(4.5), new Half(-4.5));
         Assert.AreEqual(v0 + v0 + v0, 3 * v0);
     }
     {
         var v0 = new hvec2(new Half(-1.5), new Half(4.5));
         Assert.AreEqual(v0 + v0 + v0, 3 * v0);
     }
     {
         var v0 = new hvec2(new Half(-2), new Half(8));
         Assert.AreEqual(v0 + v0 + v0, 3 * v0);
     }
 }
Example #23
0
 public void InvariantDouble()
 {
     {
         var v0 = new hvec2(new Half(5.5), new Half(-3));
         Assert.AreEqual(v0 + v0, 2 * v0);
     }
     {
         var v0 = new hvec2(new Half(-2.5), new Half(-2));
         Assert.AreEqual(v0 + v0, 2 * v0);
     }
     {
         var v0 = new hvec2(new Half(-8), new Half(4.5));
         Assert.AreEqual(v0 + v0, 2 * v0);
     }
     {
         var v0 = new hvec2(new Half(5), new Half(8));
         Assert.AreEqual(v0 + v0, 2 * v0);
     }
     {
         var v0 = new hvec2(new Half(-6.5), new Half(7));
         Assert.AreEqual(v0 + v0, 2 * v0);
     }
     {
         var v0 = new hvec2(new Half(-6.5), new Half(1.5));
         Assert.AreEqual(v0 + v0, 2 * v0);
     }
     {
         var v0 = new hvec2(new Half(-9), new Half(-7.5));
         Assert.AreEqual(v0 + v0, 2 * v0);
     }
     {
         var v0 = new hvec2(new Half(7.5), new Half(-9.5));
         Assert.AreEqual(v0 + v0, 2 * v0);
     }
     {
         var v0 = new hvec2(new Half(-2.5), new Half(8.5));
         Assert.AreEqual(v0 + v0, 2 * v0);
     }
     {
         var v0 = new hvec2(new Half(9), new Half(-5.5));
         Assert.AreEqual(v0 + v0, 2 * v0);
     }
 }
Example #24
0
 public void InvariantId()
 {
     {
         var v0 = new hvec2(new Half(7.5), new Half(-5));
         Assert.AreEqual(v0, +v0);
     }
     {
         var v0 = new hvec2(new Half(-4), new Half(-1));
         Assert.AreEqual(v0, +v0);
     }
     {
         var v0 = new hvec2(new Half(4), new Half(3));
         Assert.AreEqual(v0, +v0);
     }
     {
         var v0 = new hvec2(new Half(4), new Half(3.5));
         Assert.AreEqual(v0, +v0);
     }
     {
         var v0 = new hvec2(new Half(0.5), new Half(0.5));
         Assert.AreEqual(v0, +v0);
     }
     {
         var v0 = new hvec2(new Half(-1), new Half(5));
         Assert.AreEqual(v0, +v0);
     }
     {
         var v0 = new hvec2(new Half(8), new Half(-0.5));
         Assert.AreEqual(v0, +v0);
     }
     {
         var v0 = new hvec2(new Half(-3.5), new Half(-2));
         Assert.AreEqual(v0, +v0);
     }
     {
         var v0 = new hvec2(new Half(2), new Half(-8.5));
         Assert.AreEqual(v0, +v0);
     }
     {
         var v0 = new hvec2(new Half(5), new Half(-6));
         Assert.AreEqual(v0, +v0);
     }
 }
Example #25
0
 /// <summary>
 /// OuterProduct treats the first parameter c as a column vector (matrix with one column) and the second parameter r as a row vector (matrix with one row) and does a linear algebraic matrix multiply c * r, yielding a matrix whose number of rows is the number of components in c and whose number of columns is the number of components in r.
 /// </summary>
 public static hmat2x4 OuterProduct(hvec4 c, hvec2 r) => hvec4.OuterProduct(c, r);
Example #26
0
 /// <summary>
 /// Returns a bvec2 from component-wise application of NotEqual (lhs != rhs).
 /// </summary>
 public static bvec2 NotEqual(hvec2 lhs, hvec2 rhs) => hvec2.NotEqual(lhs, rhs);
Example #27
0
 public void InvariantAssociativeNeg()
 {
     {
         var v0 = new hvec2(new Half(-5), new Half(-9.5));
         var v1 = new hvec2(new Half(2), Half.One);
         var v2 = new hvec2(new Half(-0.5), new Half(9));
         Assert.AreEqual(v0 * (v1 - v2), v0 * v1 - v0 * v2);
     }
     {
         var v0 = new hvec2(new Half(9), new Half(-4.5));
         var v1 = new hvec2(Half.Zero, new Half(-7));
         var v2 = new hvec2(new Half(-4.5), new Half(5));
         Assert.AreEqual(v0 * (v1 - v2), v0 * v1 - v0 * v2);
     }
     {
         var v0 = new hvec2(new Half(-1.5), new Half(4));
         var v1 = new hvec2(new Half(-4.5), new Half(-6));
         var v2 = new hvec2(new Half(4.5), new Half(-6.5));
         Assert.AreEqual(v0 * (v1 - v2), v0 * v1 - v0 * v2);
     }
     {
         var v0 = new hvec2(new Half(7.5), new Half(8));
         var v1 = new hvec2(new Half(6), Half.One);
         var v2 = new hvec2(new Half(-9.5), new Half(1.5));
         Assert.AreEqual(v0 * (v1 - v2), v0 * v1 - v0 * v2);
     }
     {
         var v0 = new hvec2(new Half(5.5), new Half(-4));
         var v1 = new hvec2(new Half(-6.5), new Half(0.5));
         var v2 = new hvec2(new Half(7), new Half(-3.5));
         Assert.AreEqual(v0 * (v1 - v2), v0 * v1 - v0 * v2);
     }
     {
         var v0 = new hvec2(new Half(5), new Half(5));
         var v1 = new hvec2(new Half(-6), new Half(5.5));
         var v2 = new hvec2(new Half(-4), new Half(8.5));
         Assert.AreEqual(v0 * (v1 - v2), v0 * v1 - v0 * v2);
     }
     {
         var v0 = new hvec2(new Half(-8.5), new Half(-1.5));
         var v1 = new hvec2(new Half(7.5), Half.One);
         var v2 = new hvec2(new Half(-4.5), new Half(2.5));
         Assert.AreEqual(v0 * (v1 - v2), v0 * v1 - v0 * v2);
     }
     {
         var v0 = new hvec2(Half.One, new Half(2));
         var v1 = new hvec2(new Half(-5), new Half(9));
         var v2 = new hvec2(new Half(9), new Half(-4.5));
         Assert.AreEqual(v0 * (v1 - v2), v0 * v1 - v0 * v2);
     }
     {
         var v0 = new hvec2(new Half(9.5), Half.Zero);
         var v1 = new hvec2(new Half(-4), new Half(-1.5));
         var v2 = new hvec2(new Half(-2.5), new Half(-5));
         Assert.AreEqual(v0 * (v1 - v2), v0 * v1 - v0 * v2);
     }
     {
         var v0 = new hvec2(new Half(-5.5), new Half(-4));
         var v1 = new hvec2(new Half(9.5), new Half(-1));
         var v2 = new hvec2(new Half(6), new Half(-5));
         Assert.AreEqual(v0 * (v1 - v2), v0 * v1 - v0 * v2);
     }
 }
Example #28
0
 /// <summary>
 /// Returns a bvec2 from component-wise application of Equal (lhs == rhs).
 /// </summary>
 public static bvec2 Equal(hvec2 lhs, hvec2 rhs) => hvec2.Equal(lhs, rhs);
Example #29
0
        public void Indexer()
        {
            var v = new hvec2(new Half(8.5), new Half(5.5));

            Assert.AreEqual(new Half(8.5), v[0]);
            Assert.AreEqual(new Half(5.5), v[1]);

            Assert.Throws <ArgumentOutOfRangeException>(() => { var s = v[-2147483648]; });
            Assert.Throws <ArgumentOutOfRangeException>(() => { v[-2147483648] = Half.Zero; });
            Assert.Throws <ArgumentOutOfRangeException>(() => { var s = v[-1]; });
            Assert.Throws <ArgumentOutOfRangeException>(() => { v[-1] = Half.Zero; });
            Assert.Throws <ArgumentOutOfRangeException>(() => { var s = v[2]; });
            Assert.Throws <ArgumentOutOfRangeException>(() => { v[2] = Half.Zero; });
            Assert.Throws <ArgumentOutOfRangeException>(() => { var s = v[2147483647]; });
            Assert.Throws <ArgumentOutOfRangeException>(() => { v[2147483647] = Half.Zero; });
            Assert.Throws <ArgumentOutOfRangeException>(() => { var s = v[5]; });
            Assert.Throws <ArgumentOutOfRangeException>(() => { v[5] = Half.Zero; });

            v[1] = Half.Zero;
            Assert.AreEqual(Half.Zero, v[1]);
            v[1] = Half.One;
            Assert.AreEqual(Half.One, v[1]);
            v[1] = new Half(2);
            Assert.AreEqual(new Half(2), v[1]);
            v[1] = new Half(3);
            Assert.AreEqual(new Half(3), v[1]);
            v[0] = new Half(4);
            Assert.AreEqual(new Half(4), v[0]);
            v[1] = new Half(5);
            Assert.AreEqual(new Half(5), v[1]);
            v[1] = new Half(6);
            Assert.AreEqual(new Half(6), v[1]);
            v[0] = new Half(7);
            Assert.AreEqual(new Half(7), v[0]);
            v[0] = new Half(8);
            Assert.AreEqual(new Half(8), v[0]);
            v[0] = new Half(9);
            Assert.AreEqual(new Half(9), v[0]);
            v[1] = new Half(-1);
            Assert.AreEqual(new Half(-1), v[1]);
            v[1] = new Half(-2);
            Assert.AreEqual(new Half(-2), v[1]);
            v[0] = new Half(-3);
            Assert.AreEqual(new Half(-3), v[0]);
            v[0] = new Half(-4);
            Assert.AreEqual(new Half(-4), v[0]);
            v[0] = new Half(-5);
            Assert.AreEqual(new Half(-5), v[0]);
            v[0] = new Half(-6);
            Assert.AreEqual(new Half(-6), v[0]);
            v[1] = new Half(-7);
            Assert.AreEqual(new Half(-7), v[1]);
            v[1] = new Half(-8);
            Assert.AreEqual(new Half(-8), v[1]);
            v[1] = new Half(-9);
            Assert.AreEqual(new Half(-9), v[1]);
            v[1] = new Half(-9.5);
            Assert.AreEqual(new Half(-9.5), v[1]);
            v[1] = new Half(-8.5);
            Assert.AreEqual(new Half(-8.5), v[1]);
            v[0] = new Half(-7.5);
            Assert.AreEqual(new Half(-7.5), v[0]);
            v[1] = new Half(-6.5);
            Assert.AreEqual(new Half(-6.5), v[1]);
            v[0] = new Half(-5.5);
            Assert.AreEqual(new Half(-5.5), v[0]);
            v[0] = new Half(-4.5);
            Assert.AreEqual(new Half(-4.5), v[0]);
            v[0] = new Half(-3.5);
            Assert.AreEqual(new Half(-3.5), v[0]);
            v[0] = new Half(-2.5);
            Assert.AreEqual(new Half(-2.5), v[0]);
            v[1] = new Half(-1.5);
            Assert.AreEqual(new Half(-1.5), v[1]);
            v[0] = new Half(-0.5);
            Assert.AreEqual(new Half(-0.5), v[0]);
            v[0] = new Half(0.5);
            Assert.AreEqual(new Half(0.5), v[0]);
            v[1] = new Half(1.5);
            Assert.AreEqual(new Half(1.5), v[1]);
            v[1] = new Half(2.5);
            Assert.AreEqual(new Half(2.5), v[1]);
            v[1] = new Half(3.5);
            Assert.AreEqual(new Half(3.5), v[1]);
            v[1] = new Half(4.5);
            Assert.AreEqual(new Half(4.5), v[1]);
            v[0] = new Half(5.5);
            Assert.AreEqual(new Half(5.5), v[0]);
            v[1] = new Half(6.5);
            Assert.AreEqual(new Half(6.5), v[1]);
            v[0] = new Half(7.5);
            Assert.AreEqual(new Half(7.5), v[0]);
            v[1] = new Half(8.5);
            Assert.AreEqual(new Half(8.5), v[1]);
            v[0] = new Half(9.5);
            Assert.AreEqual(new Half(9.5), v[0]);
        }
Example #30
0
 /// <summary>
 /// Returns a bvec2 from component-wise application of GreaterThan (lhs &gt; rhs).
 /// </summary>
 public static bvec2 GreaterThan(hvec2 lhs, hvec2 rhs) => hvec2.GreaterThan(lhs, rhs);