问题标签 [euler-angles]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2093 浏览

rotation - 将四元数转换回欧拉

我试图弄清楚如何将 Collada(来自 Assimp)四元数转换为动画旋转,回到 FBX 的欧拉旋转。我确信这是一个简单的算法,我只是找不到正确的算法......我尝试的所有算法都是错误的,通常称为 ToEulerXYZ。也许是因为这些旋转是 X,然后是 Y,然后是 Z,而不是同时旋转?知道的人可能很容易提供帮助。

这是我的测试样本 - 我输入欧拉角,然后导出 collada 并获得等效的四元数。我想做相反的事情(从四元数开始,得到欧拉)。请注意,我知道不会总是得到相同的值,但只需要产生相同旋转的值。

样本值:欧拉 X、Y、Z 四元数 X、Y、Z、W

0,0,0-> 0,0,0,1

0.000000,0.000000,45.000000-> 0,0,0.38268346,0.92387956

45,0,45-> 0.35355338, 0.14644660, 0.35355338,0.85355341

45,45,0 0.35355338,0.35355338,-0.14644660,0.85355341

45,45,45-> 0.19134171,0.46193978,0.19134171,0.84462321

30,45,60-> 0.022260016,0.43967974,0.36042345,0.82236314

如果这有帮助,Assimp 会以这种方式生成四元数(在 Assimp 许可下):

0 投票
1 回答
708 浏览

javascript - javascript中带有欧拉角的CSS三次全景控制

我目前正在构建一个查看器来显示全景照片。我将图像放置在 CSS 立方体的内部,并且正在研究如何利用 javascript 中的 deviceorientation 事件来控制它。

我已经找到并实现了一种算法,将来自 deviceorientation 事件的原始数据转换为欧拉角,但我不确定如何使用 CSS 3d 旋转变换来连接这些数据以旋转立方体。

我的目标是能够让用户举起手机环顾四周,类似于一些商业软件。

我正在考虑使用 three.js 来做到这一点,但是对于这个特定的项目来说,库的大小太大了。我们希望保持低开销。

这是我目前拥有的代码笔:

[已编辑]

任何帮助将不胜感激!谢谢!

更新

我现在有一些基本功能正在工作。这是更新的代码:

[已编辑]

您需要关闭屏幕旋转,并且必须将手机倾斜到横向视图。我现在的新问题是如何在手机处于纵向位置以及打开屏幕旋转时使这一切正常工作。

0 投票
0 回答
1342 浏览

matlab - 在 Matlab 中使用线条动画制作棒图动画

我正在尝试使用Matlabdrawow函数和线图为运动文件制作动画。运动文件具有 3x3 欧拉角(yaw-pitch-roll)和 XYZ 坐标值,我计划使用线条绘图来创建简笔画动画,其中每个身体段都被动画为简笔画。

目前我的代码是:

上面的代码仅包含直线的 X、Y 和 Z 值,但不包含使用欧拉角的方向。

如何将 3x3 欧拉角添加到正在绘制的线?我想将坐标和欧拉角值添加到线图中。我是否将欧拉角转换为旋转矩阵并创建一个 4x4 矩阵(带有 XYZ 值)并用它绘制?任何输入都会有所帮助。

我的目标是使用上述方法创建一个用动画线条表示的简笔画,但我不介意尝试其他方法。还有其他更有效的方法来创建和动画一个简笔画吗?

感谢所有贡献的人。

0 投票
1 回答
1731 浏览

javascript - 用欧拉角或旋转矩阵平均旋转

我一直在开发一个小应用程序,它通过移动设备或平板电脑的陀螺仪控制立体地图全景的旋转。我终于让它工作了,虽然很粗略。我的解决方案包括将来自陀螺仪的欧拉角转换为旋转矩阵,并将这些矩阵通过各种修改矩阵。

现在我有了这个工作,我正在寻找平滑动画。我在想最好是在一个数组中收集旋转数据,然后取它们的平均值。但是,我完全不确定如何做到这一点。

我可以平均旋转矩阵或欧拉角本身吗?还是我需要将数据转换为四元数,然后应用某种平均函数?

任何帮助都会很棒。谢谢!

0 投票
2 回答
7332 浏览

c++ - 如何从正向、向上和向右向量计算欧拉角?

因为这是一个复杂的问题,通常会导致很多混乱(我之前已经问过这个问题的变体,但从来没有以正确的方式问过这个问题,也没有得到答案),我会尽量让这个问题变得清晰可能的。

事实:

  • 我正在使用统一。
  • 我可以从任何四元数旋转中轻松获得 Forward、Up 和 Right 向量。
  • 我不能简单地记录自己的欧拉角,修改它们并通过新的四元数应用旋转,因为对象是由物理控制的。
  • 除非它是用代码(或伪代码)编写的,否则我根本不懂数学,所以这对我最有利。
  • C++ 风格的答案对我来说是最容易理解的,但我几乎可以编写任何类型的代码。
  • 我不是想让任何人为我编写代码!我只在代码或伪代码中寻求答案,因为我从未学会阅读普通的数学曲线;我是程序员,不是数学家。
  • Unity 使用左手坐标系。X = 右,Y = 上,Z = 前。

我正在尝试做的事情:

我正在尝试在人形骨骼结构上播放动画,并使用扭矩(旋转力)将物理布娃娃推入与骨骼结构大致相同的姿势。

问题:

我可以在四元数中完全工作,直到我需要将扭矩施加到刚体上。该AddTorque 函数在欧拉角中有效工作,这意味着我不能使用四元数。我可以很容易地从四元数中提取欧拉角,但它们不可靠并且会导致布娃娃严重喷出。

我需要的:

我需要从 Forward、Up 和 Right 向量计算可靠的 3D Euler 角(例如,不会从 + 翻转到 - “随机”的那些)。我意识到这有点复杂,但这就是我在这里问的原因:我缺乏自己解决这个问题的知识和经验。

鉴于向量本身是可靠的,我认为没有理由不能从它们中计算出可靠的欧拉角。另外,我不知道欧拉角我想要或需要什么旋转顺序,但我相信以后修改它会相当容易。

任何帮助将非常感激!

0 投票
1 回答
1157 浏览

opencv - 如何使用远距离的一点计算相机方向(使用opencv)?

假设我有一个针孔相机,它具有已知的内在值,如相机矩阵和失真系数。假设有一个点距离相机足够远,所以我们可以说它被放置在无穷远处。

给定该点的图像坐标(以像素为单位),我想计算相机相对于连接相机和该点的轴的旋转(因此,如果相机指向该点并且它位于图像的光学中心,则旋转为 0,0 )。

使用opencv如何做到这一点?

非常感谢!

0 投票
1 回答
2805 浏览

opengl - Quaternion rotations, trying to rotate an object around his axis

I display caracters in Opengl, i have them rotate around axis with quaternions, what i want to achieve is make them rotate around their own axis but when using quaternions, if i rotate an object according to one axe, the others don't take in consideration this rotation will rotate around a fix world axe. Given a Quaternion Qaccumulative (former rotations) and 3 angles AngleX, AngleY and AngleZ. First i thought Euler's rotation was the thing to try and i tried several techniques :

None of them have worked so far...i don't think my implementations of rotations are the problems but if someone does i will post the code. Isn't Euler what i thought it was ? What can of rotation should i use to achieve my goal ?

EDIT : i have tried this, suggested by a post :

The character still rotates around fix axis.

EDIT : I applied the pseudo code given by a post and it worked :

0 投票
1 回答
565 浏览

accelerometer - 如何制作欧拉罗盘?

我想构建类似于欧拉指南针的东西,我需要一些指导。使用加速度计和磁传感器,我设法计算了偏航角、俯仰角和滚动角(弧度)。现在,下一步应该是什么?我在互联网上搜索了几个小时,但找不到相关的东西。我应该根据参考轴组成角度吗?

0 投票
0 回答
124 浏览

rotation - 3d L 系统分形代码,具有三角误差

我正在重写一个树分形代码来绘制 L-Systems,只有 1 条长线用于 3d 螺旋图、3d 架构等。

我有旋转错误: 90° 角 Sin/Cos 使某些角度变为 45° 和 135° 而不是 90° 为什么?

为什么有些角度在开始和结束时不是 90°: 非 90' 角问题

0 投票
1 回答
1797 浏览

python - VPython中的显示框知道滚动俯仰和偏航

我试图在 VPython 中可视化一个盒子问题是:我知道它是滚动俯仰和偏航,但 Vpython 的盒子 有属性“轴”和“向上”。如何将我的角度转换为这两个所需的向量?

这是一个显示 3 个轴和一个框的短代码。函数 setOrientation 应该改变盒子属性“向上”和“轴”提供的滚动、俯仰和偏航。

描述飞机的方向时,轴和方向应该匹配

X - 指向前方

Y - 指向右边

Z - 向下

roll - 正方向是顺时针

pitch - 积极向上

yaw - 正是顺时针

我发现的最接近的是Mike Smorto的代码

这个解决方案的问题是它的轴与我的问题不匹配,我无法修改它以满足我的需要。