We have 3(three) xyz points that define a circle in 3D space, this circle needs to be converted into a polyline(for further rendering). I’m looking for a ready C or C++ function or free library that can do the job.
Don’t understand why this was closed. And I can’t even answer my own question there. Shame on you guys. But you will not stop the knowledge spreading!
There is a nice article and a code sample on how to build a circle by 3 points in 2D, XY plane.
http://paulbourke.net/geometry/circlesphere/
http://paulbourke.net/geometry/circlesphere/Circle.cpp
To build a 3D circle we’ll have to:
For rotations it is best to use quaternions.
To find a correct quaternion I looked at Ogre3d source code:
void Quaternion::FromAngleAxis (const Radian& rfAngle, const Vector3& rkAxis)
There is one more useful function there:
Quaternion getRotationTo(const Vector3& dest, const Vector3& fallbackAxis = Vector3::ZERO) const
But I didn’t use it.
For quaterions and vectors I used our own classes. Here is the full source code of the function that does the job: