42 template <
typename TKSpace,
typename TImplicitFunction,
typename TEmbedder >
48 template <
typename TKSpace,
typename TImplicitFunction,
typename TEmbedder >
52 : myPtrK( 0 ), myPtrFct( 0 ), myPtrEmbedder( 0 )
55 template <
typename TKSpace,
typename TImplicitFunction,
typename TEmbedder >
59 : myPtrK( other.myPtrK ),
60 myPtrFct( other.myPtrFct ),
61 myPtrEmbedder( other.myPtrEmbedder )
64 template <
typename TKSpace,
typename TImplicitFunction,
typename TEmbedder >
79 template <
typename TKSpace,
typename TImplicitFunction,
typename TEmbedder >
90 template <
typename TKSpace,
typename TImplicitFunction,
typename TEmbedder >
96 ASSERT( myPtrEmbedder != 0 );
97 return myPtrEmbedder->embed( p );
100 template <
typename TKSpace,
typename TImplicitFunction,
typename TEmbedder >
106 return this->operator()( cell );
109 template <
typename TKSpace,
typename TImplicitFunction,
typename TEmbedder >
115 ASSERT( this->isValid() );
117 Point p1( myPtrK->uCoords( cell ) );
120 for (
typename KSpace::DirIterator qit = myPtrK->uOrthDirs( cell );
125 Point p2( p1 ); --p2[ k ];
128 x1[ k ] -= y1 * ( x2[ k ] - x1[ k ] ) / ( y2 - y1 );
133 template <
typename TKSpace,
typename TImplicitFunction,
typename TEmbedder >
139 ASSERT( this->isValid() );
141 Point p1( myPtrK->sCoords( scell ) );
144 for (
typename KSpace::DirIterator qit = myPtrK->sOrthDirs( scell );
149 Point p2( p1 ); --p2[ k ];
152 x1[ k ] -= y1 * ( x2[ k ] - x1[ k ] ) / ( y2 - y1 );
165 template <
typename TKSpace,
typename TImplicitFunction,
typename TEmbedder >
171 out <<
"[ImplicitFunctionLinearCellEmbedder]";
178 template <
typename TKSpace,
typename TImplicitFunction,
typename TEmbedder >
184 return ( myPtrK != 0 ) && ( myPtrFct != 0 ) && ( myPtrEmbedder != 0 );
192 template <
typename TKSpace,
typename TImplicitFunction,
typename TEmbedder >
198 object.selfDisplay( out );