示例#1
0
        public override bool TryGetMember(GetMemberBinder binder, out object result)
        {
            var array = binder.Name.Select(c =>
            {
                double value;
                if (_members.TryGetValue(c, out value))
                {
                    return(value);
                }
                throw new Exception(String.Format("Member Does Not Exist: {0}", c));
            }).ToArray();

            switch (binder.Name.Length)
            {
            case 4:
                result = new Vect4(array);
                break;

            case 3:
                result = new Vect3(array);
                break;

            case 2:
                result = new Vect2(array);
                break;

            case 1:
                result = array[0];
                break;

            default:
                throw new Exception("Invalid Length Swizzle");
            }
            return(true);
        }
示例#2
0
 public Swizzle(Vect4 v)
 {
     _members.Add('X', v.X);
     _members.Add('Y', v.Y);
     _members.Add('Z', v.Z);
     _members.Add('W', v.W);
 }
示例#3
0
 public Vect4 ExteriorProduct(Vect4 v)
 {
     throw new NotImplementedException();
 }
示例#4
0
 public double DotProduct(Vect4 v)
 {
     return(X * v.X + Y * v.Y + Z * v.Z + W * v.W);
 }
示例#5
0
 public Vect4 Lerp(Vect4 end, double t)
 {
     return((1 - t) * this + t * end);
 }
示例#6
0
 protected bool Equals(Vect4 other)
 {
     return(X.NearlyEquals(other.X) && Y.NearlyEquals(other.Y) && Z.NearlyEquals(other.Z) && W.NearlyEquals(other.W));
 }