16 template <
int N,
typename Real>
32 inline operator bool()
const;
51 void Evaluate(Real u, Real
v, Real
w,
unsigned int maxOrder,
57 unsigned int wOrder,
int iumin,
int iumax,
int ivmin,
int ivmax,
58 int iwmin,
int iwmax)
const;
67 template <
int N,
typename Real>
73 for (
int i = 0; i < 3; ++i)
91 std::copy(controls, controls + numControls,
mControls.begin());
100 template <
int N,
typename Real>
106 template <
int N,
typename Real>
112 template <
int N,
typename Real>
118 template <
int N,
typename Real>
124 template <
int N,
typename Real>
130 template <
int N,
typename Real>
136 template <
int N,
typename Real>
142 template <
int N,
typename Real>
154 template <
int N,
typename Real>
169 template <
int N,
typename Real>
176 for (
int i = 0; i < 10; ++i)
183 int iumin, iumax, ivmin, ivmax, iwmin, iwmax;
189 values[0] =
Compute(0, 0, 0, iumin, iumax, ivmin, ivmax, iwmin, iwmax);
194 Compute(1, 0, 0, iumin, iumax, ivmin, ivmax, iwmin, iwmax);
196 Compute(0, 1, 0, iumin, iumax, ivmin, ivmax, iwmin, iwmax);
198 Compute(0, 0, 1, iumin, iumax, ivmin, ivmax, iwmin, iwmax);
203 Compute(2, 0, 0, iumin, iumax, ivmin, ivmax, iwmin, iwmax);
205 Compute(0, 2, 0, iumin, iumax, ivmin, ivmax, iwmin, iwmax);
207 Compute(0, 0, 2, iumin, iumax, ivmin, ivmax, iwmin, iwmax);
209 Compute(1, 1, 0, iumin, iumax, ivmin, ivmax, iwmin, iwmax);
211 Compute(1, 0, 1, iumin, iumax, ivmin, ivmax, iwmin, iwmax);
213 Compute(0, 1, 1, iumin, iumax, ivmin, ivmax, iwmin, iwmax);
218 template <
int N,
typename Real>
220 unsigned int vOrder,
unsigned int wOrder,
int iumin,
int iumax,
int ivmin,
221 int ivmax,
int iwmin,
int iwmax)
const 232 for (
int iw = iwmin; iw <= iwmax; ++iw)
235 int jw = (iw >= numControls2 ? iw - numControls2 : iw);
236 for (
int iv = ivmin; iv <= ivmax; ++iv)
239 Real tmpvw = tmpv * tmpw;
240 int jv = (iv >= numControls1 ? iv - numControls1 : iv);
241 for (
int iu = iumin; iu <= iumax; ++iu)
244 int ju = (iu >= numControls0 ? iu - numControls0 : iu);
245 result += (tmpu * tmpvw) *
246 mControls[ju + numControls0*(jv + numControls1*jw)];
Real GetMaxDomain(int dim) const
void Evaluate(Real u, Real v, Real w, unsigned int maxOrder, Vector< N, Real > values[10]) const
Real GetMinDomain(int dim) const
std::array< int, 3 > mNumControls
void SetControl(int i0, int i1, int i2, Vector< N, Real > const &control)
Vector< N, Real > const * GetControls() const
GLenum GLsizei GLsizei GLint * values
int GetNumControls(int dim) const
BSplineVolume(BasisFunctionInput< Real > const input[3], Vector< N, Real > const *controls)
GLubyte GLubyte GLubyte GLubyte w
std::array< BasisFunction< Real >, 3 > mBasisFunction
Vector< N, Real > Compute(unsigned int uOrder, unsigned int vOrder, unsigned int wOrder, int iumin, int iumax, int ivmin, int ivmax, int iwmin, int iwmax) const
GLenum GLenum GLenum input
Vector< N, Real > const & GetControl(int i0, int i1, int i2) const
std::vector< Vector< N, Real > > mControls
BasisFunction< Real > const & GetBasisFunction(int dim) const