The Bezier tensor product polynomial surface has the form

(1) |

where is a point on the surface, are Bezier control points (16 in case of bicubic surface), and stand for Bernstein polynomials (order four for bicubic surface) and and denote independent parameters varying in range from 0 to 1. The stretch induced by the mapping given in Equation (1) can be expressed as a relation between the length of differentials of the original and the transformed curves. Let us consider a differential of a curve passing through point in the parametric space with its components and (Fig. 1). The transformed differential is defined by

(2) |

where and are the components of the gradient of the surface at the point in and direction respectively. The squared length of is

(3) |

while the square of the length of comes from

(4) |

The terms = of the surface metric tensor represent the angle (more precisely its cosine multiplied by and ) between parametric curves at point . If we manage to find such orthogonal directions and in the parametric space (Fig. 1) for which the term vanishes then the roots of diagonal terms of the tensor

(5) |

directly correspond to the stretches in and direction respectively. The squared length of the transformed differential then becomes

(6) |

(7) |

The problem thus reduces to finding the eigenvalues and of the tensor . According to the well known relationships for tensor spectral decomposition we get the declination between the and directions from

(8) |

The inverse stretching for the elements in the parametric space can be then evaluated as

(9) |

where and are given by

(10) |

(11) |

where is the value extracted from the global mesh size control function operating upon the original surface. Thus the complete description of mesh control function for triangulation of parametric space consists of three values - orientation of the principal directions, required element size in the direction and required element size in the direction.

This information is provided in a set of discrete points (vertices of a background triangular net) covering the parametric space. In the current implementation these points coincide with nodes of a quadtree built in the parametric space. The depth of the quadtree is driven by the rate of the ``size'' of individual quadrants (deformed due to mapping) to the desired element spacing at a given location in physical space. The interpolation on individual triangles of background control mesh is then used to approximate the relevant values of mesh control function in the rest of the parametric space.

*Daniel Rypl
2005-12-03*