/// <summary> /// /// </summary> /// <param name="point0"></param> /// <param name="point1"></param> /// <param name="point2"></param> /// <returns></returns> public static double AreaTriangle(CartesianPoint point0, CartesianPoint point1, CartesianPoint point2) { GeometricVector side01 = point1.Subtract(point0); GeometricVector side02 = point2.Subtract(point0); GeometricVector crossProduct = side01.CrossProduct(side02); double quadArea = crossProduct.Norm(2); return(quadArea * 0.5); }
public override bool IsOnLine(CartesianPoint pointToCheck) { GeometricVector normalizedVector = this.Vector.Normalize(2); GeometricVector vectorToPointToCheck = this.Start.VectorTo(pointToCheck); if (vectorToPointToCheck.X == 0 && vectorToPointToCheck.Y == 0 && vectorToPointToCheck.Z == 0) { // the pointToCheck is at the start of the bounded line return(true); } GeometricVector normalizedVectorToPointToCheck = vectorToPointToCheck.Normalize(2); if (!normalizedVector.Equals(normalizedVectorToPointToCheck)) { return(false); } double norm = this.Vector.Norm(2); double normToPointToCheck = vectorToPointToCheck.Norm(2); return(normToPointToCheck <= norm); }