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;
}
示例#2
0
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;
}