We have to vector OA' and OB' in first position of object
OA and OB in second position
Q vector part quaternion Q0 scalar part
fig.1
COMMENT
OAOB - dot vector product
OAxOB - cross vector product
Quaternion of rotation object from first positon to second was:
1 case
If OAOB'-OBOA' not equal zero, then
Q=Q0[(OA-OA')x(OB-OB')]/[OA*OB'-OA'OB],
where Q0-2=([(OA-OA')x(OB-OB')]/[OAOB'-OA'OB])2+1
If OAOB'-OBOA'=0, then
2 case
if [OA'+OA]x[OB'+OB] not equal zero and OB-OB' not equal zero,
then
exist m that OA-OA'=m(OB-OB'). Search it.
Q=n*(mOB'+OA'),
where n=Q0(OB-OB')2/(2*OB*[OA'xOB'])
Q0-2=(OB-OB')4*(OB'+OA')2/(2*OB*[OA'xOB'])2+1
If OAOB'-OBOA'=0 and [OA+OA']x[OB+OB']=0
3 case
If OB+OB'not equal zero, then
Q=(OB+OB')/|OB+OB'|, Q0=0
else
4 case
OB+OB'=0
Q=([OB']x[OA'])/|[OB']x[OA']|, Q0=0
From quaternion we can calculate rotation matrix or Euler angles