Also, just to complement a little here, it really just depends what kind of orientation you are looking for. Remember that planes are just data about orientation in Cartesian space.
You can construct them in different ways, and you also have to consider 2 important things:
- The direction of the curve matters
- The order in which you compute the Cross product matters, because it does not obey the commutative law.
Those two points complement each other because if you first compute the Cross product that has a tangent with one direction and then do it again but with a reversed tangent ( aka, your curve is flipped) you will get a plane with a different orientation.
Just to illustrate a little, and the drawing convention:
Green vectors where used to compute the third vector shown in red
Here the plane is created by calculating the Dot product between the vector with origin at 0,0,0 ending at the point with the curves tangent, given rise to the third vector shown in red. So here you have a plane with a totally different orientation.
This plane is how Andrew was suggesting you to calculate it. The Cross product between a unit Z vector and the tangent, which gives the third vector, in red, which its also the planes Y-Axis
This is the same as the above picture EXCEPT the tangent has a different direction. So the orientation of the plane changes completely.
And finally, this plane. Which in Grasshopper language its a plane perpendicular to a vector. Which basically is the Cross product between the tangent and the Unit Z vector and then the Cross product of that result with the tangent once again.
So, the conclusion is:
Be careful with how you calculate your Cross products, and hence be in control of the type of plane that you need/want .