/// <summary> /// Creates a new Vector from locA to locB /// </summary> /// <param name="locA">Start location</param> /// <param name="locB">End location</param> public Vector2D(Location2D locA, Location2D locB) { X = locB.X - locA.X; Y = locB.Y - locA.Y; Length = Math.Sqrt(LengthSquared()); Radians = Y < 0 ? 2 * Math.PI - Math.Acos(X / Length) : Math.Acos(X / Length); }
public Vector2D(Location2D coords) { X = coords.X; Y = coords.Y; Length = Math.Sqrt(LengthSquared()); Radians = Y < 0 ? 2 * Math.PI - Math.Acos(X / Length) : Math.Acos(X / Length); }
/// <summary> /// MAY NOT WORK /// </summary> /// <param name="loc1"></param> /// <param name="loc2"></param> public LineEquation(Location2D loc1, Location2D loc2) { Vector2D vector = new Vector2D(loc1, loc2); A = vector.Y; B = vector.X; C = -(A * loc1.X + B * loc1.Y); }
public LineEquation(Location2D coordinate, double slope) { double a = slope; double b = coordinate.Y - (coordinate.X * slope); A = a; B = -1; C = b; }
public LineEquation(Location2D coordinate, Vector2D orthogonalVector) { A = -orthogonalVector.X / orthogonalVector.Y; B = -1; C = coordinate.Y - (coordinate.X * A); /* * A = orthogonalVector.X; * B = orthogonalVector.Y; * C = coordinate.Y - coordinate.X*B/A; */ }
public LineEquation Tangent(Location2D loc) { if (PointIsPartOf(loc)) { Vector2D vecPC = new Vector2D(loc, new Location2D(A, B)); return(new LineEquation(loc, vecPC)); } else { throw new Exception("The point is not part of the circle"); } }
public Location2D Midpoint(Location2D loc) { return(new Location2D((loc.X + X) / 2, (loc.Y + Y) / 2)); }
public double DistanceTo(Location2D loc) { return(Math.Sqrt(DistanceToSquared(loc))); }
public double DistanceToSquared(Location2D loc) { return(Math.Pow(loc.X - X, 2) + Math.Pow(loc.Y - Y, 2)); }
public Location2D(Location2D loc) { X = loc.X; Y = loc.Y; }
public bool PointIsPartOf(Location2D loc) { return(Math.Pow(loc.X - A, 2) + Math.Pow(loc.Y - B, 2) == Math.Pow(R, 2)); }
/// <summary> /// Creates a circle function with loc as centre and lf as tangent. /// /// </summary> /// <param name="loc"></param> /// <param name="lf"></param> public Circle(Location2D loc, LineEquation lf) { A = loc.X; B = loc.Y; R = loc.DistanceTo(lf); }
public LinearParameter2D(Location2D loc1, Location2D loc2) { B = new Vector2D(loc1); A = new Vector2D(loc1, loc2); }