45 #ifndef CLIPPER_DERIVS
46 #define CLIPPER_DERIVS
70 Vec3<T>( dx, dy, dz ) {}
71 const T&
dx()
const {
return (*
this)[0]; }
72 const T&
dy()
const {
return (*
this)[1]; }
73 const T&
dz()
const {
return (*
this)[2]; }
81 template<
class T>
class Grad_frac :
public Vec3<T>
88 Vec3<T>( du, dv, dw ) {}
89 const T&
du()
const {
return (*
this)[0]; }
90 const T&
dv()
const {
return (*
this)[1]; }
91 const T&
dw()
const {
return (*
this)[2]; }
101 template<
class T>
class Grad_map :
public Vec3<T>
108 Vec3<T>( du, dv, dw ) {}
109 const T&
du()
const {
return (*
this)[0]; }
110 const T&
dv()
const {
return (*
this)[1]; }
111 const T&
dw()
const {
return (*
this)[2]; }
119 template<
class T>
class Curv_orth :
public Mat33<T>
131 template<
class T>
class Curv_frac :
public Mat33<T>
145 template<
class T>
class Curv_map :
public Mat33<T>
212 c(0,0) = (*this)(0,0) / T(g.
nu()*g.
nu());
213 c(0,1) = (*this)(0,1) / T(g.
nu()*g.
nv());
214 c(0,2) = (*this)(0,2) / T(g.
nu()*g.
nw());
215 c(1,0) = (*this)(1,0) / T(g.
nv()*g.
nu());
216 c(1,1) = (*this)(1,1) / T(g.
nv()*g.
nv());
217 c(1,2) = (*this)(1,2) / T(g.
nv()*g.
nw());
218 c(2,0) = (*this)(2,0) / T(g.
nw()*g.
nu());
219 c(2,1) = (*this)(2,1) / T(g.
nw()*g.
nv());
220 c(2,2) = (*this)(2,2) / T(g.
nw()*g.
nw());
229 c(0,0) = (*this)(0,0) * T(g.
nu()*g.
nu());
230 c(0,1) = (*this)(0,1) * T(g.
nu()*g.
nv());
231 c(0,2) = (*this)(0,2) * T(g.
nu()*g.
nw());
232 c(1,0) = (*this)(1,0) * T(g.
nv()*g.
nu());
233 c(1,1) = (*this)(1,1) * T(g.
nv()*g.
nv());
234 c(1,2) = (*this)(1,2) * T(g.
nv()*g.
nw());
235 c(2,0) = (*this)(2,0) * T(g.
nw()*g.
nu());
236 c(2,1) = (*this)(2,1) * T(g.
nw()*g.
nv());
237 c(2,2) = (*this)(2,2) * T(g.
nw()*g.
nw());