To home page

3D source code. Bicubic patch in Ferguson representation

Home page

Previous topics :
Four-component vector
Base CXMMGeometry class
Base CXMMSegment class

Bi-cubic patch in Ferguson representation

Boundaries of the patch are four Bézier segments. This list is controlled by dynamically-sized array of pointers (CXMMList) whose main functions are

  • int AddPointer(void *pointer);
  • void *GetPointer(int index);
  • int GetNumPointers();
  • The patch have two (U and V) parameters varying from 0 to 1.

    The patch is a generalization of bi-qubic segment to two-dimensions case : vectors a0, a1, a2, a3 depend on the second parameter v :

    While v is changing from 0 to 1, the curve r = r(u) moves and its shape changes to cover the surface

    In the matrix form,

    To define the surface, it is necessary to specify 16 vector coefficients. To implement this, you can set at the four corners, for example.
    Vectors ru and rv are proportional to tangent vectors Tu and Tv to parametric curves v = const and u = const. Vector ruv defines speed at which vector Tu changes with v and vector Tv with u. That is why vector ruv is called twist vector.
    Then the matrix representation for the Ferguson patch is


    © Copyright 2007..2009 MI Simulators