Visualization Library v1.0.3A lightweight C++ OpenGL middleware for 2D/3D graphics |
[Download] [Tutorials] [All Classes] [Grouped Classes] |
Defines one or more concatenated bicubic Bézier patches to be used with the BezierSurface class. More...
#include <BezierSurface.hpp>
Public Types | |
typedef std::vector< vec3 > | Points |
The control points grid defining the bicubic Bézier patch(es). | |
Public Member Functions | |
BezierPatch () | |
Constructor. | |
BezierPatch (int x, int y) | |
Constructor. | |
void | resize (int x, int y) |
Defines the x and y dimensions of the control point grid defining the patch. | |
int | x () const |
Returns the x dimension of the patch as specified by resize(). | |
int | y () const |
Returns the y dimension of the patch as specified by resize(). | |
Points & | points () |
The control points grid defining the bicubic Bézier patch(es). | |
const Points & | points () const |
The control points grid defining the bicubic Bézier patch(es). | |
vec3 & | at (int i, int j) |
Returns the i/j control point. | |
const vec3 & | at (int i, int j) const |
Returns the i/j control point. | |
Protected Attributes | |
Points | mControlPoints |
int | mX |
int | mY |
Defines one or more concatenated bicubic Bézier patches to be used with the BezierSurface class.
See also:
Definition at line 44 of file BezierSurface.hpp.
typedef std::vector< vec3 > vl::BezierPatch::Points |
The control points grid defining the bicubic Bézier patch(es).
Definition at line 50 of file BezierSurface.hpp.
vl::BezierPatch::BezierPatch | ( | ) | [inline] |
vl::BezierPatch::BezierPatch | ( | int | x, |
int | y | ||
) | [inline] |
void BezierPatch::resize | ( | int | x, |
int | y | ||
) |
Defines the x and y dimensions of the control point grid defining the patch.
The x
and y
parameters must be of the form 3*n+1 with n
integer positive, i.e 4 (n=1), 7 (n=2), 10 (n=3) and so on.
- The simplest bicubic Bézier patch requires 4x4 = 16 control points: A, B, C, D, E, F, G, H, I, L, M, N, O, P, Q, R - The Bézier surface is guaranteed to touch only the 4 corner control points A, D, O and R. A---B---C---D | | | | E---F---G---H | | | | I---L---M---N | | | | O---P---Q---R In this case we would call "resize(4,4)" - You can concatenate two bicubic Bézier patches to form a larger suface by sharing their control points like this: patch 1 patch 2 A---+---+---B---+---+---G | | | | | | | +---+---+---C---+---+---+ | | | | | | | +---+---+---D---+---+---+ | | | | | | | F---+---+---E---+---+---H In this case we would call "resize(7,4)" - In this case the two patches share the control points B, C, D and E. - As we can see the total control points needed are 28 = (2 (patches along x) * 3 + 1) * (1 (patches along y) * 3 + 1) - Also in this case the Bézier surface is guaranteed to touch only the 6 corner control points A, B, E, F, G and H.
Definition at line 70 of file BezierSurface.cpp.
References vl::Log::error(), mControlPoints, mX, mY, VL_CHECK, x(), and y().
int vl::BezierPatch::x | ( | ) | const [inline] |
Returns the x
dimension of the patch as specified by resize().
Definition at line 66 of file BezierSurface.hpp.
Referenced by resize(), and vl::BezierSurface::updateBezierSurface().
int vl::BezierPatch::y | ( | ) | const [inline] |
Returns the y
dimension of the patch as specified by resize().
Definition at line 68 of file BezierSurface.hpp.
Referenced by resize(), and vl::BezierSurface::updateBezierSurface().
Points& vl::BezierPatch::points | ( | ) | [inline] |
The control points grid defining the bicubic Bézier patch(es).
Definition at line 70 of file BezierSurface.hpp.
const Points& vl::BezierPatch::points | ( | ) | const [inline] |
The control points grid defining the bicubic Bézier patch(es).
Definition at line 72 of file BezierSurface.hpp.
vec3& vl::BezierPatch::at | ( | int | i, |
int | j | ||
) | [inline] |
Returns the i/j control point.
Definition at line 74 of file BezierSurface.hpp.
Referenced by vl::BezierSurface::updateBezierSurface().
const vec3& vl::BezierPatch::at | ( | int | i, |
int | j | ||
) | const [inline] |
Returns the i/j control point.
Definition at line 76 of file BezierSurface.hpp.
Points vl::BezierPatch::mControlPoints [protected] |
Definition at line 78 of file BezierSurface.hpp.
Referenced by resize().
int vl::BezierPatch::mX [protected] |
Definition at line 79 of file BezierSurface.hpp.
Referenced by resize().
int vl::BezierPatch::mY [protected] |
Definition at line 80 of file BezierSurface.hpp.
Referenced by resize().