public static MyQuat operator *(MyQuat q, MyQuat p) { MyQuat m = new MyQuat(); //q.normalize(); // p.normalize(); m.w = (p.w * q.w - p.x * q.x - p.y * q.y - p.z * q.z); m.x = (p.w * q.x + p.x * q.w - p.y * q.z + p.z * q.y); m.y = (p.w * q.y + p.x * q.z + p.y * q.w - p.z * q.x); m.z = (p.w * q.z - p.x * q.y + p.y * q.x + p.z * q.w); m.normalize(); return(m); }
public MyQuat fromAxisAngle(float angle, MyVec axis) { //angle *= Mathf.Rad2Deg; Debug.Log("angle :" + angle); MyQuat q = new MyQuat(); q.w = Mathf.Cos(angle / 2); q.x = axis.x * Mathf.Sin(angle / 2); q.y = axis.y * Mathf.Sin(angle / 2); q.z = axis.z * Mathf.Sin(angle / 2); q.normalize(); Debug.Log("q.x" + q.x); Debug.Log("q.y" + q.y); Debug.Log("q.z" + q.z); Debug.Log("q.w" + q.w); return(q); }