/// <summary>
        /// Tessellates the specified bezier patch.
        /// </summary>
        private void TessellatePatch(BezierPatch patch, Vector3D scale)
        {
            // Look up the 16 control points for this patch.
            Point3D[] controlPoints = new Point3D[16];

            for (int i = 0; i < 16; i++)
            {
                int index = patch.Indices[i];
                controlPoints[i] = ControlPoints[index] * scale;
            }

            // Is this patch being mirrored?
            bool isMirrored = Math.Sign(scale.X) != Math.Sign(scale.Z);

            // Create the index and vertex data.
            CreatePatchIndices(isMirrored);
            CreatePatchVertices(controlPoints, isMirrored);
        }
        /// <summary>
        /// Tessellates the specified bezier patch.
        /// </summary>
        private void TessellatePatch(BezierPatch patch, Vector3D scale)
        {
            // Look up the 16 control points for this patch.
            Point3D[] controlPoints = new Point3D[16];

            for (int i = 0; i < 16; i++)
            {
                int index = patch.Indices[i];
                controlPoints[i] = ControlPoints[index] * scale;
            }

            // Is this patch being mirrored?
            bool isMirrored = Math.Sign(scale.X) != Math.Sign(scale.Z);

            // Create the index and vertex data.
            CreatePatchIndices(isMirrored);
            CreatePatchVertices(controlPoints, isMirrored);
        }