public Vector3D(Location3D loc1, Location3D loc2) { X = loc2.X - loc1.X; Y = loc2.Y - loc1.Y; Z = loc2.Z - loc1.Z; lengthFound = false; }
public Vector3D(Location3D loc) { X = loc.X; Y = loc.Y; Z = loc.Z; lengthFound = false; }
public Sphere(Location3D centre, Location3D point) { A = centre.X; B = centre.Y; C = centre.Z; R = centre.DistanceTo(point); }
public Sphere(Location3D centre, Plane tangent) { A = centre.X; B = centre.Y; C = centre.Z; R = centre.DistanceTo(tangent); }
public Sphere(Location3D centre, double radius) { A = centre.X; B = centre.Y; C = centre.Z; R = radius; }
/// <summary> /// Plane from two vectors that lie in the plane and a point /// </summary> /// <param name="vec1"></param> /// <param name="vec2"></param> /// <param name="loc"></param> public Plane(Vector3D vec1, Vector3D vec2, Location3D loc) { OrthogonalVector = vec1.CrossProduct(vec2); A = OrthogonalVector.X; B = OrthogonalVector.Y; C = OrthogonalVector.Z; D = -(A * loc.X + B * loc.Y + C * loc.Z); }
/// <summary> /// Plane from órthogonal vector and point. /// </summary> /// <param name="vector"></param> /// <param name="loc"></param> public Plane(Location3D loc, Vector3D vector) { OrthogonalVector = vector; A = OrthogonalVector.X; B = OrthogonalVector.Y; C = OrthogonalVector.Z; D = -(vector * loc); }
/// <summary> /// Creates two vectors that lie in the plane, and then uses the above. /// </summary> /// <param name="loc1"></param> /// <param name="loc2"></param> /// <param name="loc3"></param> public Plane(Location3D loc1, Location3D loc2, Location3D loc3) { Vector3D vec1 = new Vector3D(loc1, loc2); Vector3D vec2 = new Vector3D(loc1, loc3); OrthogonalVector = vec1.CrossProduct(vec2); A = OrthogonalVector.X; B = OrthogonalVector.Y; C = OrthogonalVector.Z; D = -(A * loc1.X + B * loc1.Y + C * loc1.Z); }
public Plane Tangent(Location3D loc) { if (PointIsPartOf(loc)) { Vector3D vecPC = new Vector3D(loc, new Location3D(A, B, C)); return(new Plane(loc, vecPC)); } else { throw new Exception("The point is not part of the sphere"); } }
public bool PointIsPartOf(Location3D loc) { return(Math.Pow(loc.X - A, 2) + Math.Pow(loc.Y - B, 2) + Math.Pow(loc.Z - C, 2) == Math.Pow(R, 2)); }
public LinearParamater3D(Location3D loc, Vector3D vec) { B = new Vector3D(loc); A = vec; }
public LinearParamater3D(Location3D loc1, Location3D loc2) { B = new Vector3D(loc1); A = new Vector3D(loc1, loc2); }
public double AreaOfTriangle(Location3D loc1, Location3D loc2) { return(new Vector3D(this, loc1).CrossProduct(new Vector3D(this, loc2)).Length / 2); }
public double DistanceTo(Location3D loc) { return(Math.Sqrt(DistanceToSquared(loc))); }
public double DistanceToSquared(Location3D loc) { return(Math.Pow(loc.X - X, 2) + Math.Pow(loc.Y - Y, 2) + Math.Pow(loc.Z - Z, 2)); }