ON_BOOL32 ON_AnnotationArrow::Transform( const ON_Xform& xform ) { TransformUserData(xform); m_tail = xform*m_tail; m_head = xform*m_head; return true; }
ON_BOOL32 ON_CurveOnSurface::Transform( const ON_Xform& xform ) { TransformUserData(xform); DestroyCurveTree(); return ( m_s ) ? m_s->Transform(xform) : false; }
ON_BOOL32 ON_Annotation::Transform( const ON_Xform& xform ) { // TODO: Return false if class is invalid or xform cannot be applied. // Otherwise, apply xform to geometry and return true. TransformUserData(xform); return m_plane.Transform( xform ); }
ON_BOOL32 ON_PlaneSurface::Transform( const ON_Xform& xform ) { TransformUserData(xform); ON_3dPoint p = m_plane.origin + m_extents[0][0]*m_plane.xaxis + m_extents[1][0]*m_plane.yaxis; ON_3dPoint q = m_plane.origin + m_extents[0][1]*m_plane.xaxis + m_extents[1][1]*m_plane.yaxis; bool rc = m_plane.Transform( xform )?true:false; if (rc && fabs(fabs(xform.Determinant())-1.0) > ON_SQRT_EPSILON ) { p = xform*p; q = xform*q; double x0, x1, y0, y1; rc = false; if ( m_plane.ClosestPointTo(p,&x0,&y0) && m_plane.ClosestPointTo(q,&x1,&y1) ) { if ( x0 < x1 && y0 < y1 ) { m_extents[0].Set(x0,x1); m_extents[1].Set(y0,y1); rc = true; } } } return rc; }
ON_BOOL32 ON_Light::Transform( const ON_Xform& xform ) { ON_3dVector v; double vlen; TransformUserData(xform); m_location = xform*m_location; v = xform*m_direction; vlen = v.Length(); if ( vlen > 0.0 ) { m_direction = v; } v = xform*m_length; vlen = v.Length(); if ( vlen > 0.0 ) { m_length = v; } v = xform*m_width; vlen = v.Length(); if ( vlen > 0.0 ) { m_width = v; } return true; }
ON_BOOL32 ON_LineCurve::Transform( const ON_Xform& xform ) { TransformUserData(xform); DestroyCurveTree(); return m_line.Transform( xform ); }
ON_BOOL32 ON_Hatch::Transform( const ON_Xform& xform) { if( fabs( fabs( xform.Determinant()) - 1.0) > 1.0e-4) { // xform has a scale component ON_Plane tmp( m_plane); tmp.Transform( xform); ON_Xform A, B, T; A.Rotation( ON_xy_plane, m_plane); B.Rotation( tmp, ON_xy_plane); T = B * xform * A; // kill translation and z-scaling T[0][2] = T[0][3] = 0.0; T[1][2] = T[1][3] = 0.0; T[2][0] = T[2][1] = 0.0; T[2][2] = 1.0; T[2][3] = 0.0; T[3][0] = T[3][1] = T[3][2] = 0.0; T[3][3] = 1.0; for( int i = 0; i < LoopCount(); i++) m_loops[i]->m_p2dCurve->Transform( T); } int rc = m_plane.Transform( xform); UnrotateHatch(this); TransformUserData(xform); return rc; }
ON_BOOL32 ON_PointGrid::Transform( const ON_Xform& xform ) { TransformUserData(xform); return ON_TransformPointGrid( 3, false, m_point_count[0], m_point_count[1], m_point_stride0*3, 3, Point(0,0), xform ); }
ON_BOOL32 ON_PointCloud::Transform( const ON_Xform& xform ) { TransformUserData(xform); ON_BOOL32 rc = m_P.Transform(xform); if (rc && HasPlane() ) rc = m_plane.Transform(xform); m_bbox.Destroy(); return rc; }
ON_BOOL32 ON_Point::Transform( const ON_Xform& xform ) { TransformUserData(xform); return ON_TransformPointList(3,0,1,3,&point.x,xform); }
ON_BOOL32 ON_Geometry::Transform( const ON_Xform& xform ) { TransformUserData(xform); return true; }
ON_BOOL32 ON_ArcCurve::Transform( const ON_Xform& xform ) { TransformUserData(xform); return m_arc.Transform( xform ); }