private void setMidPlane() { List <Point3d> facePts = new List <Point3d>(); //plane normals follow caveface foreach (Point3d p in caveFace.Vertices) { facePts.Add(p); } foreach (Vector3d mf in caveFace.FaceNormals) { toOutside += mf; } Point3d planeOrigin = MeshTools.averagePoint(facePts); toOutside.Unitize(); Plane.FitPlaneToPoints(facePts, out midPlane); midPlane.Origin = planeOrigin; if (Vector3d.VectorAngle(midPlane.Normal, toOutside) > Math.PI / 2) { midPlane.Flip(); } }