Ejemplo n.º 1
0
        /// <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));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
 /// <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));
 }
Ejemplo n.º 4
0
        public static Point3D GetCenterPosition(IList <Point3D> existingLoop)
        {
            var minMax = new MinMaxAlongAxes(null, existingLoop);

            return(GetCenterOfMinMaxRange(minMax));
        }
Ejemplo n.º 5
0
 //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);
 }