Converts the angles to a quaternion q = exp((roll/2)*e_x)*exp((elev/2)*e_y)*exp((-azim/2)*e_z) i.e., the angles are a kind of Tait-Bryan angles, -z,y',x". The angles should be given in radians, not degrees.
(cls, elev, azim, roll)
| 4405 | |
| 4406 | @classmethod |
| 4407 | def from_cardan_angles(cls, elev, azim, roll): |
| 4408 | """ |
| 4409 | Converts the angles to a quaternion |
| 4410 | q = exp((roll/2)*e_x)*exp((elev/2)*e_y)*exp((-azim/2)*e_z) |
| 4411 | i.e., the angles are a kind of Tait-Bryan angles, -z,y',x". |
| 4412 | The angles should be given in radians, not degrees. |
| 4413 | """ |
| 4414 | ca, sa = np.cos(azim/2), np.sin(azim/2) |
| 4415 | ce, se = np.cos(elev/2), np.sin(elev/2) |
| 4416 | cr, sr = np.cos(roll/2), np.sin(roll/2) |
| 4417 | |
| 4418 | qw = ca*ce*cr + sa*se*sr |
| 4419 | qx = ca*ce*sr - sa*se*cr |
| 4420 | qy = ca*se*cr + sa*ce*sr |
| 4421 | qz = ca*se*sr - sa*ce*cr |
| 4422 | return cls(qw, [qx, qy, qz]) |
| 4423 | |
| 4424 | def as_cardan_angles(self): |
| 4425 | """ |
no outgoing calls