void init_patch() const { if (bilinear_patch_) { return; } bilinear_patch_.reset( BilinearPatch<VertexType>( bottom_(static_cast<ScalarType>(0.0)), bottom_(static_cast<ScalarType>(1.0)), top_(static_cast<ScalarType>(0.0)), top_(static_cast<ScalarType>(1.0)) ) ); }
VertexType operator () (ScalarType u, ScalarType v) const { VertexType a = interpolate(u, left_(v), right_(v)), b = interpolate(v, bottom_(u), top_(u)), c = get_patch_value(u, v); return interpolate(.5, interpolate(-1, a, c), interpolate(-1, b, c) ); }
void Element:: long_pre (Type const&) { push_ (::XSCRT::XML::Element< wchar_t > (L"long", top_ ())); }
void Element:: el_pre (Type const&) { push_ (::XSCRT::XML::Element< wchar_t > (L"el", top_ ())); }
void Element:: value_pre (Type const&) { push_ (::XSCRT::XML::Element< wchar_t > (L"value", top_ ())); }