MatrixD.fromQuaternion constructor
MatrixD.fromQuaternion()
Implementation
factory MatrixD.fromQuaternion(QuaternionD q) {
MatrixD result = .identity();
final a2 = q.x*q.x;
final b2 = q.y*q.y;
final c2 = q.z*q.z;
final ac = q.x*q.z;
final ab = q.x*q.y;
final bc = q.y*q.z;
final ad = q.w*q.x;
final bd = q.w*q.y;
final cd = q.w*q.z;
result.m0 = 1 - 2*(b2 + c2);
result.m1 = 2*(ab + cd);
result.m2 = 2*(ac - bd);
result.m4 = 2*(ab - cd);
result.m5 = 1 - 2*(a2 + c2);
result.m6 = 2*(bc + ad);
result.m8 = 2*(ac + bd);
result.m9 = 2*(bc - ad);
result.m10 = 1 - 2*(a2 + b2);
return result;
}