|
template<typename T> |
T | pi () |
| 返回 float 或 double 类型的 \(\pi\) 值。
|
|
template<typename T> |
constexpr T | radians (T degrees) |
| 将角度转换为弧度。
|
|
template<typename T> |
constexpr T | degrees (T radians) |
| 将弧度转换为角度。
|
|
template<typename T> |
constexpr T | squ (T x) |
| 求一个数的平方。
|
|
template<typename T> |
constexpr T | clamp (T low, T high, T value) |
| 将一个数截断在给定的上下界之间
|
|
template<typename T> |
constexpr Eigen::Vector< T, 4 > | to_vec4 (Eigen::Vector< T, 3 > vec3) |
| 将代表方向的三维向量转换为它的齐次坐标形式。
|
|
Eigen::Vector3f | reflect (const Eigen::Vector3f &I, const Eigen::Vector3f &N) |
| 求向量 \(\mathbf{I}\) 关于向量 \(\mathbf{N}\) 的反射。
|
|
template<typename T> |
constexpr T | sign (T x) |
| 符号函数,正数的求值结果为 1,负数为 -1,零的求值结果是 0.
|
|
template<typename T> |
std::tuple< T, T, T > | quaternion_to_ZYX_euler (T w, T x, T y, T z) |
| 将旋转的四元数表示形式转换为 ZYX 欧拉角表示形式。
|
|
constexpr unsigned int | vertex_position_location = 0 |
|
constexpr unsigned int | vertex_color_location = 1 |
|
constexpr unsigned int | vertex_normal_location = 2 |
|
template<typename T>
std::tuple< T, T, T > quaternion_to_ZYX_euler |
( |
T | w, |
|
|
T | x, |
|
|
T | y, |
|
|
T | z ) |
|
inline |
将旋转的四元数表示形式转换为 ZYX 欧拉角表示形式。
这个函数采用 ZYX 顺规(即依次绕自身 \(z, y, x\) 轴旋转)。在 Dandelion 的坐标系约定下,ZYX 顺规对应 roll-yaw-pitch 旋转顺序(滚转、航向、俯仰)。
由于欧拉角固有的缺陷,这个函数并不能消除航向角(或称方向角 yaw)在 \(\pm 90^\circ\) 附近时产生的万向锁和抖动问题。
虽然函数的返回值是 tuple
,但使用 tuple
接受返回值并不方便,建议用结构化绑定
std::tuple< T, T, T > quaternion_to_ZYX_euler(T w, T x, T y, T z)
将旋转的四元数表示形式转换为 ZYX 欧拉角表示形式。
定义 math.hpp:150
或 std::tie
来接受返回值。
- 返回
- 一个元组,它的三个分量依次是绕 x 轴、绕 y 轴和绕 z 轴的旋转角(角度制)。