在给定时间内插值欧拉角/旋转矩阵
Interpolating euler angles/rotation matrices with a given time
如何在给定时间(或速度)的2个欧拉角之间正确插值
例如,我想实现一个简单的眨眼,先向下旋转盖子,然后再向上旋转。眨眼的时间应该在50到500毫秒之间。目前,我只是简单地计算x值(向下):
Eigen::Vector3f rotateLeftLidDown(float step)
{
return Eigen::Vector3f(-step*COMPLETE_CLOSURE,0,0);
}
//INTERPOLATION
float duration =gen_random_float(0.05f,0.5f);
for(float i=0;i<1;i=i+(duration))
{
LeftLid.push_back(rotateLeftLidDown(i));
}
for(float i=1;i>0;i=i-(duration))
{
LeftLid.push_back(rotateLeftLidUp(i));
}
每个计算步骤稍后都会从麻袋中弹出,并以100赫兹的速率应用于节点。。这种方法有快有慢,但似乎并不正确。我不认为眼睑的速度和这里的"插值"真的很脏。。。将euler变换为四元数还是旋转矩阵更好?
像眨眼(500ms)这样的功能,考虑到在70ms内向下280mm/s的峰值速度,并以大约100mm/s的速度打开眼睑,真的会对我有帮助。
我假设这是3d?在这种情况下,使用四元数来表示你在空间中的方向。那么插值就是四元数的简单插值。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 从持续时间构造std::chrono::system_clock::time_point
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 与互斥锁相比,旋转锁可以保证上下文切换
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- while循环中while循环的时间复杂度是多少
- 按时间自动旋转形状,同时在 OpenGL 中使用C++移动它们
- 相机的旋转方向在一段时间后反转
- C++ Poco SQL 查询不返回具有'between'和'and'日期时间绑定的结果
- 我如何仅使用一个Arduino uno才能在同一时间和同一方向上旋转两个步进电动机
- C++17:是编译器为(静态存储持续时间)const引用绑定创建的可修改的临时对象(和存储)
- 模板变量的绑定时间
- 如何判断约束绑定编码的时间限制
- 制作旋转器的功能,每天每分钟创建一个时间戳
- 在给定时间内插值欧拉角/旋转矩阵
- OpenGL的平移和旋转在同一时间
- 不违反标准的近恒定时间旋转
- 基于时间的旋转
- 特征:围绕轴 W 执行 3D 旋转并锚定在点 P 处
- 在不占用CPU时间的非阻塞应用程序中旋转