/// <summary> /// gets box polygons for min max values /// </summary> /// <param name="values"></param> /// <returns></returns> public static List <Point3D> GetBoxPolygonsForMinMaxValues(MinMaxAlongAxes values) { if (!values.MinX.HasValue || !values.MaxX.HasValue || !values.MinY.HasValue || !values.MaxY.HasValue || !values.MinZ.HasValue || !values.MaxZ.HasValue) { throw new Exception("Cannot create Box Polygon for the supplied min max values. Min Max Values not set."); } //front points var front = new Point3D[4]; front[0] = new Point3D(values.MinX.Value, values.MinY.Value, values.MaxZ.Value); front[1] = new Point3D(values.MaxX.Value, values.MinY.Value, values.MaxZ.Value); front[2] = new Point3D(values.MaxX.Value, values.MaxY.Value, values.MaxZ.Value); front[3] = new Point3D(values.MinX.Value, values.MaxY.Value, values.MaxZ.Value); //back points var back = new Point3D[4]; back[0] = new Point3D(front[0].X, front[0].Y, values.MinZ.Value); back[1] = new Point3D(front[1].X, front[1].Y, values.MinZ.Value); back[2] = new Point3D(front[2].X, front[2].Y, values.MinZ.Value); back[3] = new Point3D(front[3].X, front[3].Y, values.MinZ.Value); return(GetBoxPolygonsForFrontAndBackFace(front, back)); }
public static Point3D GetCenterOfMinMaxRange(MinMaxAlongAxes minMax) { var xRange = minMax.MaxX - minMax.MinX; var yRange = minMax.MaxY - minMax.MinY; var zRange = minMax.MaxZ - minMax.MinZ; return(new Point3D((minMax.MinX + xRange / 2.0).Value, (minMax.MinY + yRange / 2.0).Value, (minMax.MinZ + zRange / 2.0).Value)); }
/// <summary> /// whether a triangle is within the min max range /// </summary> /// <param name="triangle"></param> /// <param name="allowedRange"></param> /// <returns></returns> public static bool WithinRange(Triangle triangle, MinMaxAlongAxes allowedRange) { if (!WithinRange(triangle.V1, allowedRange)) { return(false); } if (!WithinRange(triangle.V2, allowedRange)) { return(false); } return(WithinRange(triangle.V3, allowedRange)); }
public static Point3D GetCenterPosition(IList <Point3D> existingLoop) { var minMax = new MinMaxAlongAxes(null, existingLoop); return(GetCenterOfMinMaxRange(minMax)); }
//whether a point is within the min max range public static bool WithinRange(Point3D p, MinMaxAlongAxes allowedRange) { return(p.X >= allowedRange.MinX && p.X <= allowedRange.MaxX && p.Y >= allowedRange.MinY && p.Y <= allowedRange.MaxY && p.Z >= allowedRange.MinZ && p.Z <= allowedRange.MaxZ); }