alternative way of obtaining rotation matrix

This commit is contained in:
matthias.ringwald 2010-06-13 20:15:46 +00:00
parent 27b69f0643
commit eace711393

View File

@ -144,14 +144,21 @@ void getRotationMatrixFromVectors(float vin[3], float vout[3], float matrix[4][4
dotprod += vin[i]*vout[i];
}
q[0] = sqrt(vin_length * vout_length) + dotprod;
q[1] = -1*(vin[1]*vout[2] - vin[2]*vout[1]);
q[2] = -1*(vin[2]*vout[0] - vin[0]*vout[2]);
q[3] = 0;//-1*(vin[0]*vout[1] - vin[1]*vout[0]);
//q[0] = sqrt(vin_length * vout_length) + dotprod;
float axis[3] = {0,0,0};
a[0] = -1*(vin[1]*vout[2] - vin[2]*vout[1]);
a[1] = -1*(vin[2]*vout[0] - vin[0]*vout[2]);
a[2] = -1*(vin[0]*vout[1] - vin[1]*vout[0]);
normalizeVector(axis,3);
float angle = acos(vin[0]*vout[0]+vin[1]*vout[1]+vin[2]*vout[2]);
quaternionFromAxis(angle, axis[3], q);
normalizeVector(q,4);
getRotationMatrixFromQuartenion(q,matrix);
}
float getRotationAngle(float matrix[4][4]){