Let's say I have an object made of three (or as many is necessary to solve this) points in space.
- think of it like a collection of drones - each with a position, each outputting a point of light, but no connection between them. They may vary in distance from each other at any one time, but what I want to do is determine their overall rotation as a unit.
As far as I understand it, I can form two vectors say from A to B and A to C - normalize those vectors, making them unit vectors - and then take the cross product. THREE.Vector3.cross().
That should give me a unit vector AD pointing in the direction perpendicular to AB and AC.
If I designate a unit vector UP as (0, 0, 1) (z being up) - I should be able to get a quaternion rotation by THREE.Quaternion.fromUnitVectors() - which should give me a quaternion representing the rotation from UP to AD.
Please check my logic there.
Now if all of the above is correct, I should have a quaternion rotation - but with no guarantee that we haven't added some sort of spin to UP on the way to AD?
I understand I am likely misunderstanding something fundamental here, but I can't quite grok where my confusion lies, nor how to correct for that spin.