Long time ago i wrote function, which creates quaternion for rotation from 0,0,1 to any unit vector. Function was very long, contained asin, acos, several conditions etc... So today i returned and after some time:
// dir should be unit
void Quaternion::from_direction(const vec3& dir)
{
x = dir.y;
y = -dir.x;
z = 0;
w = 1 + dir.z; // simplified dot product with 0,0,1
normalize();
};
Комментариев нет:
Отправить комментарий