/// <summary>
 /// Takes a list of corner points and rotates them
 /// </summary>
 protected virtual List<StroMoHab_Matrix.PointMatrix> RotateCuboidCorners(List<StroMoHab_Matrix.PointMatrix> pointMatrixList, StroMoHab_Matrix.RotationMatrix rotationMatrix)
 {
     List<StroMoHab_Matrix.PointMatrix> rotatedPointMatrixList = new List<StroMoHab_Matrix.PointMatrix>();
     foreach (StroMoHab_Matrix.PointMatrix pointMatrix in pointMatrixList)
     {
         StroMoHab_Matrix.PointMatrix rotatedPointMatrix = StroMoHab_Matrix.Operations.Rotate(pointMatrix, rotationMatrix);
         rotatedPointMatrixList.Add(rotatedPointMatrix);
     }
     return rotatedPointMatrixList;
 }
        /// <summary>
        /// Rotates the given point by the given rotation matrix and returns a point matrix
        /// </summary>
        /// <param name="pointMatrix">The 1x3 point matrix</param>
        /// <param name="rotationMatrix">The 3 3x3 rotation matricies</param>
        /// <returns>The new 1x3 point matrix</returns>
        public static StroMoHab_Matrix.PointMatrix Rotate(StroMoHab_Matrix.PointMatrix pointMatrix, StroMoHab_Matrix.RotationMatrix rotationMatrix)
        {
            Matrix newPointMatrix = newPointMatrix = rotationMatrix.rotationMatrixZ * pointMatrix.pointMatrix;
            newPointMatrix = rotationMatrix.rotationMatrixY *  newPointMatrix;
            newPointMatrix = rotationMatrix.rotationMatrixX *  newPointMatrix;

            StroMoHab_Matrix.PointMatrix returnedPointMatrix = new PointMatrix();
            returnedPointMatrix.pointMatrix = newPointMatrix;
            return returnedPointMatrix;
        }