static void Main(string[] args) { Vector2D vec1 = new Vector2D(1.0, 3.0); Vector2D vec2 = new Vector2D(2.0, 4.0); Vector2D vec3 = new Vector2D(1.0, 3.0); Vector2D vec4 = new Vector2D(3.0, 1.0); Matrix2x2 m = new Matrix2x2(vec1, vec2); Matrix2x2 n = new Matrix2x2(vec3, vec4); Matrix2x2 p; Console.WriteLine("m is"); m.WriteMatrix(); Console.WriteLine("n is"); n.WriteMatrix(); Console.WriteLine("Transpose matrix m"); m.Transpose(); m.WriteMatrix(); Console.WriteLine("Add matrix m and n"); m.AddMatrix(n); m.WriteMatrix(); Console.WriteLine("subtract matrix m-n"); m.SubtractMatrix(n); m.WriteMatrix(); Console.WriteLine("Multiply m and n"); p = m.MultiplyMatrix(n); p.WriteMatrix(); m.SetScalingMatrix(4, 4); m.WriteMatrix(); m.SetRotationMatrixInDegrees(60.0); m.WriteMatrix(); m.SetIdentityMatrix(); m.WriteMatrix(); Console.ReadLine(); }
//Gets the dot product of two Vector2D objects public double GetDotProduct(Vector2D otherVector) { return ((X * otherVector.X) + (Y * otherVector.Y)); }
//Gets the angle between two Vector2D objects in radians public double GetAngleBetweenVector(Vector2D otherVector) { return Math.Acos(GetDotProduct(otherVector) / (GetMagnitude() * otherVector.GetMagnitude())); }
//Finds the linear interpolation Vector2D between two Vector2D objects //Using t, to determine the position of the linear interpolation vector is oriented between the two Vector2D objects //t=0 LerpVector = Vector2D being used to call the method Lerp(otherVector,t) , t=1 LerpVector = otherVector public void Lerp(Vector2D otherVector, double t) { //0 <= t <= 1 //New vector = (1 - t)A + tB //A-tA + tB if(0 <= t && t <= 1) { Vector2D scaledVA = new Vector2D(X, Y); Vector2D scaledVB = new Vector2D(otherVector.X, otherVector.Y); scaledVA.ScalarMultiplication(t); scaledVB.ScalarMultiplication(t); SubtractVector(scaledVA.X, scaledVA.Y); AddVector(scaledVB.X, scaledVB.Y); } else { Console.WriteLine("Invalid value for t"); } }