public GregoryPatch(BezierSurfaceGregoryExt b1, BezierSurfaceGregoryExt b2, BezierSurfaceGregoryExt b3)
        {
            b1.ControlPoints[0, 3] = b2.ControlPoints[0, 0];
            b2.ControlPoints[0, 3] = b3.ControlPoints[0, 0];
            b3.ControlPoints[0, 3] = b1.ControlPoints[0, 0];

            BezierSurfaces[0] = b1;
            BezierSurfaces[1] = b2;
            BezierSurfaces[2] = b3;

            gregorySubpatches[0] = new GregorySubpatch(b1, b2);
            gregorySubpatches[1] = new GregorySubpatch(b2, b3);
            gregorySubpatches[2] = new GregorySubpatch(b3, b1);
        }
 public GregorySubpatch(BezierSurfaceGregoryExt b1, BezierSurfaceGregoryExt b2)
 {
     left  = b1;
     right = b2;
     for (int i = 0; i < 20; i++)
     {
         ControlPoints[i] = new MyPoint();
     }
     for (int i = 0; i < 4; i++)
     {
         for (int j = 0; j < 6; j++)
         {
             ControlP[i, j] = new MyPoint();
         }
     }
     points = new List <List <MyPoint> >();
     x      = new BernsteinPolynomial(3);
     y      = new BernsteinPolynomial(3);
     z      = new BernsteinPolynomial(3);
     tx     = new BernsteinPolynomial(3);
     ty     = new BernsteinPolynomial(3);
     tz     = new BernsteinPolynomial(3);
 }