|
1
7
事先注意: 我下载了您的示例repo并将我的更改应用到它上,它运行得非常完美。这里有一段录音:
(供参考,GIF记录为
一个简单易行的解决方案是
不比较角度
(
“规格化”角度可以通过加/减来实现
这是一个简单的规格化器函数:
在你的
你可以在这项工作中使用它 Go Playground 演示。
请注意,如果存储归一化的角度(在范围内
还要注意的是
|
|
|
2
2
前言:这个答案假设有一些线性代数、三角学和旋转/变换的知识。
您的问题源于旋转角度的使用。由于逆三角函数的不连续性,对于相对接近的输入,很难消除函数值中的“跳跃”(如果不是完全不可能的话)。具体而言,当
因此,直接使用向量、旋转矩阵和/或四元数通常更好。他们使用角度作为三角函数的参数,三角函数是连续的,可以消除任何不连续性。就我们而言, spherical linear interpolation (slerp) 应该做到这一点。
由于您的代码测量鼠标相对位置与对象绝对旋转形成的角度,因此我们的目标归结为旋转对象,使
地方的
轴
slerp是如何在这里发挥作用的?考虑到上述声明,我们必须
slerp geometrically
从…起
现在我们已经奠定了基础,我们可以继续实际计算新的旋转。根据slerp公式,
哪里
就我们而言,
避免计算
我们现在有了需要计算的一切
现在的问题是从
|
|
|
Saijo-Shi · PLpgsql中的更新触发器 1 年前 |
|
|
user26814368 · Oracle在触发器中过滤错误数据 1 年前 |
|
|
robertspierre · 在多对多关系中自动删除未引用的行 2 年前 |
|
|
Martin · 由于活动触发器,无法登录到SQL Server 2 年前 |
|
|
gonzalo2000 · 脚本在手动运行时有效,但触发器不起作用 2 年前 |
|
|
yessoos · 在触发的处理程序中使用类属性 2 年前 |