Curve and Surface Frames

I’m trying to understand the exact meaning of the output of the Curve.FrameAt and Surface.FrameAt methods. Both return planes - what do these planes represent?

A quick google of the term curve frame yields the Frenet Frame: https://en.wikipedia.org/wiki/Differential_geometry_of_curves#Frenet_frame
Which I know as the moving trihedron of a curve, which could be expressed as a set of 3 vectors.

I’m guessing here, but as the Curve.FrameAt function returns a plane, is it returning the plane constructed from the unit principal normal vector and unit binormal vector? This plane + the Curve.TangentAt method would give enough information to construct the trihedron/Frenet Frame. Alternatively Curve.FrameAt(t).Normal would give the same as the tangent if I am correct.

Similarly for the Surface.FrameAt function, does the plane it returns represent the tangent plane to the surface at that point?

Thanks in advance.

For curves, a frame at a particular parameter is calculated from the tangent (x-axis) and curvature (y-axis). The z-axis is the cross product of the other two axes.

For surfaces, a frame is calculated from the first partial derivatives and unit normal at the parameter.

You can view the full calculations by downloading the openNURBS toolkit.