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); }
public Vect2(Vect2 v) { X = v.X; Y = v.Y; }
public static Vect2 Lerp(Vect2 start, Vect2 end, double percent) { return (start + percent * (end - start)); }
public Vect2(Vect2 v) { X = v.X; Y = v.Y; }
public static Vect2 Lerp(Vect2 start, Vect2 end, double percent) { return(start + percent * (end - start)); }
public Swizzle(Vect2 v) { _members.Add('X', v.X); _members.Add('Y', v.Y); }
public Vect2 Lerp(Vect2 end, double t) { return((1 - t) * this + t * end); }
protected bool Equals(Vect2 other) { return(X.NearlyEquals(other.X) && Y.NearlyEquals(other.Y)); }
/// <summary> /// Calculate the Dot Product /// </summary> /// <param name="v"></param> /// <returns></returns> public double DotProduct(Vect2 v) { return(X * v.X + Y * v.Y); }