ON_Surface::ISO ON_SurfaceProxy::IsIsoparametric( // returns isoparametric status of 2d curve const ON_Curve& crv, const ON_Interval* subdomain ) const { // this is a virtual overide of an ON_Surface::IsIsoparametric const ON_Curve* pC = &crv; ON_Curve* pTranC = NULL; if(m_bTransposed) { pTranC = crv.DuplicateCurve(); pTranC->SwapCoordinates(0,1); pC = pTranC; } ON_Surface::ISO iso = m_surface->IsIsoparametric( *pC, subdomain); if (pTranC) { switch(iso) { case x_iso: iso = y_iso; break; case y_iso: iso = x_iso; break; case W_iso: iso = S_iso; break; case S_iso: iso = W_iso; break; case N_iso: iso = E_iso; break; case E_iso: iso = N_iso; break; default: // intentionally ignoring other ON_Surface::ISO enum values break; } delete pTranC; } return iso; }
ON_Curve* ON_SurfaceProxy::Pullback( const ON_Curve& curve_3d, double tolerance, const ON_Interval* curve_3d_subdomain, ON_3dPoint start_uv, ON_3dPoint end_uv ) const { ON_Curve* pullbackcurve = 0; if ( 0 != m_surface ) { pullbackcurve = m_surface->Pullback( curve_3d, tolerance, curve_3d_subdomain, start_uv, end_uv ); if ( m_bTransposed && 0 != pullbackcurve ) { pullbackcurve->SwapCoordinates(0,1); } } return pullbackcurve; }