How best to transform 2d parametric curves between surfaces?


I have a 2d curve corresponding to a parametric curve on surface (a brep trim curve). I use the surface’s isPlanar function to return an equivalent plane surface. What is the recommended approach to transform the 2d curve so that for the new plane surface the corresponding 3d space curve is unchanged (exact when the original surface can exactly be described by a plane, and to within a tolerance when the original surface is only approximated by a plane surface)?

One approach I can think of is to use the original surface’s pushup function to determine the 3d space curve, then determine the plane surface, then use the plane surface’s pullback function to determine the new 2d parametric curve, but I was wondering if there was a better/more elegant approach?


Hi @stephen.banks,

The only way to do this is as you describe.

ON_Surface::IsPlanar determines if the surface is flat, but it may not be rectangular. There is not, generally, a natural relationship between the two parameterizations.

ON_Surface::Pullback to a true plane is instantaneous and exact.

– Dale

Thanks, @dale.