📄 backend.cc
字号:
}//opt for a line with the same v.voidBackend::tmeshvertNOGE_BV(TrimVertex *t){#ifdef USE_OPTTT surfaceEvaluator.inDoEvalCoord2NOGE_BV( t->param[0], t->param[1], t->cache_point, t->cache_normal); #endif}voidBackend::preEvaluateBU(REAL u){ surfaceEvaluator.inPreEvaluateBU_intfac(u);}void Backend::preEvaluateBV(REAL v){ surfaceEvaluator.inPreEvaluateBV_intfac(v);}/*------------------------------------------------------------------------- * tmeshvert - evaluate a point on a triangle mesh *------------------------------------------------------------------------- */voidBackend::tmeshvert( TrimVertex *t ){#ifndef NOWIREFRAME const long nuid = t->nuid;#endif const REAL u = t->param[0]; const REAL v = t->param[1];#ifndef NOWIREFRAME npts++; if( wireframetris ) { if( npts >= 3 ) { surfaceEvaluator.bgnclosedline(); if( mesh[0][2] == 0 ) surfaceEvaluator.evalcoord2f( mesh[0][3], mesh[0][0], mesh[0][1] ); else surfaceEvaluator.evalpoint2i( (long) mesh[0][0], (long) mesh[0][1] ); if( mesh[1][2] == 0 ) surfaceEvaluator.evalcoord2f( mesh[1][3], mesh[1][0], mesh[1][1] ); else surfaceEvaluator.evalpoint2i( (long) mesh[1][0], (long) mesh[1][1] ); surfaceEvaluator.evalcoord2f( nuid, u, v ); surfaceEvaluator.endclosedline(); } mesh[meshindex][0] = u; mesh[meshindex][1] = v; mesh[meshindex][2] = 0; mesh[meshindex][3] = nuid; meshindex = (meshindex+1) % 2; } else { surfaceEvaluator.evalcoord2f( nuid, u, v ); }#else surfaceEvaluator.evalcoord2f( 0, u, v );//for uninitial memory read surfaceEvaluator.evalcoord2f( nuid, u, v );#endif}//the same as tmeshvert(trimvertex), for efficiency purposevoidBackend::tmeshvert( REAL u, REAL v ){#ifndef NOWIREFRAME const long nuid = 0; npts++; if( wireframetris ) { if( npts >= 3 ) { surfaceEvaluator.bgnclosedline(); if( mesh[0][2] == 0 ) surfaceEvaluator.evalcoord2f( mesh[0][3], mesh[0][0], mesh[0][1] ); else surfaceEvaluator.evalpoint2i( (long) mesh[0][0], (long) mesh[0][1] ); if( mesh[1][2] == 0 ) surfaceEvaluator.evalcoord2f( mesh[1][3], mesh[1][0], mesh[1][1] ); else surfaceEvaluator.evalpoint2i( (long) mesh[1][0], (long) mesh[1][1] ); surfaceEvaluator.evalcoord2f( nuid, u, v ); surfaceEvaluator.endclosedline(); } mesh[meshindex][0] = u; mesh[meshindex][1] = v; mesh[meshindex][2] = 0; mesh[meshindex][3] = nuid; meshindex = (meshindex+1) % 2; } else { surfaceEvaluator.evalcoord2f( nuid, u, v ); }#else surfaceEvaluator.evalcoord2f( 0, u, v );#endif}/*------------------------------------------------------------------------- * tmeshvert - evaluate a grid point of a triangle mesh *------------------------------------------------------------------------- */voidBackend::tmeshvert( GridVertex *g ){ const long u = g->gparam[0]; const long v = g->gparam[1];#ifndef NOWIREFRAME npts++; if( wireframetris ) { if( npts >= 3 ) { surfaceEvaluator.bgnclosedline(); if( mesh[0][2] == 0 ) surfaceEvaluator.evalcoord2f( (long) mesh[0][3], mesh[0][0], mesh[0][1] ); else surfaceEvaluator.evalpoint2i( (long) mesh[0][0], (long) mesh[0][1] ); if( mesh[1][2] == 0 ) surfaceEvaluator.evalcoord2f( (long) mesh[1][3], mesh[1][0], mesh[1][1] ); else surfaceEvaluator.evalpoint2i( (long) mesh[1][0], (long) mesh[1][1] ); surfaceEvaluator.evalpoint2i( u, v ); surfaceEvaluator.endclosedline(); } mesh[meshindex][0] = u; mesh[meshindex][1] = v; mesh[meshindex][2] = 1; meshindex = (meshindex+1) % 2; } else { surfaceEvaluator.evalpoint2i( u, v ); }#else surfaceEvaluator.evalpoint2i( u, v );#endif}/*------------------------------------------------------------------------- * swaptmesh - perform a swap of the triangle mesh pointers *------------------------------------------------------------------------- */voidBackend::swaptmesh( void ){#ifndef NOWIREFRAME if( wireframetris ) { meshindex = 1 - meshindex; } else { surfaceEvaluator.swaptmesh(); }#else surfaceEvaluator.swaptmesh();#endif}/*------------------------------------------------------------------------- * endtmesh - postamble to triangle mesh *------------------------------------------------------------------------- */voidBackend::endtmesh( void ){#ifndef NOWIREFRAME if( ! wireframetris ) surfaceEvaluator.endtmesh();#else surfaceEvaluator.endtmesh();/* surfaceEvaluator.polymode( N_MESHFILL );*/#endif}/*------------------------------------------------------------------------- * bgnoutline - preamble to outlined rendering *------------------------------------------------------------------------- */voidBackend::bgnoutline( void ){ surfaceEvaluator.bgnline();}/*------------------------------------------------------------------------- * linevert - evaluate a point on an outlined contour *------------------------------------------------------------------------- */voidBackend::linevert( TrimVertex *t ){ surfaceEvaluator.evalcoord2f( t->nuid, t->param[0], t->param[1] );}/*------------------------------------------------------------------------- * linevert - evaluate a grid point of an outlined contour *------------------------------------------------------------------------- */voidBackend::linevert( GridVertex *g ){ surfaceEvaluator.evalpoint2i( g->gparam[0], g->gparam[1] );}/*------------------------------------------------------------------------- * endoutline - postamble to outlined rendering *------------------------------------------------------------------------- */voidBackend::endoutline( void ){ surfaceEvaluator.endline();}/*------------------------------------------------------------------------- * triangle - output a triangle *------------------------------------------------------------------------- */voidBackend::triangle( TrimVertex *a, TrimVertex *b, TrimVertex *c ){/* bgntmesh( "spittriangle" );*/ bgntfan(); tmeshvert( a ); tmeshvert( b ); tmeshvert( c ); endtfan();/* endtmesh();*/}void Backend::bgncurv( void ){ curveEvaluator.bgnmap1f( 0 );}voidBackend::segment( REAL ulo, REAL uhi ){ curveEvaluator.domain1f( ulo, uhi );} void Backend::curvpts( long type, /* geometry, color, texture, normal */ REAL *pts, /* control points */ long stride, /* distance to next point */ int order, /* parametric order */ REAL ulo, /* lower parametric bound */ REAL uhi ) /* upper parametric bound */{ curveEvaluator.map1f( type, ulo, uhi, stride, order, pts ); curveEvaluator.enable( type );}void Backend::curvgrid( REAL u0, REAL u1, long nu ){ curveEvaluator.mapgrid1f( nu, u0, u1 );}void Backend::curvmesh( long from, long n ){ curveEvaluator.mapmesh1f( N_MESHFILL, from, from+n );}void Backend::curvpt(REAL u){ curveEvaluator.evalcoord1f( 0, u );}void Backend::bgnline( void ) { curveEvaluator.bgnline();}void Backend::endline( void ){ curveEvaluator.endline();}void Backend::endcurv( void ){ curveEvaluator.endmap1f();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -