Can I use Quaternions to get from one point to another?

I have one sphere at 1,0,0 and another at 0,1,0 it would be a rotation of 90 degrees around the Z axis to get from one to another. How would I do this for any two points in unity using quaternions?

How would I apply that rotation to the first point to test it to see if it gives back the second point?


If you use Quaternion.FromToRotation, you can create a Quaternion that contains the desired rotation. Just pass in the coordinates of the two spheres in the order you want the rotation to take place.

The returned quaternion can thus be multiplied into the coordinates of the first sphere to yield the coordinates of the second; this corresponds to simply rotating a Vector3 around the coordinate system origin.

Please beware, however, that this applies only to the specific case you described because the two spheres are both at unit vector lengths from the origin. Quaternion.FromToRotation is usually used to rotate the direction of one of a single object's axes. It works in this case because your spheres are located at the positions corresponding to an object's local transform.right/transform.up, if you imagine an object located at 0,0,0.

If the position vectors of the two objects have unequal magnitudes, it isn't possible to rotate one to the position of the other, because rotation takes place in a circle of uniform radius, naturally. ;)