libgdx 中四元数的 euler getPitch()、getRoll()、getYaw() 的旋转顺序?

2024-02-02

将四元数转换为欧拉角时,通常必须有轴旋转的顺序,例如这种可视化。 http://quaternions.online/

libgdx 是如何工作的?

四元数类具有以下功能

getRoll():

Math.asin(MathUtils.clamp(2f * (w*x - z * y), -1f, 1f)) : 
     (float)pole * MathUtils.PI * 0.5f;`

getPitch():

Math.asin(MathUtils.clamp(2f * (w*x - z * y), -1f, 1f)) : 
     (float)pole * MathUtils.PI * 0.5f;`

getYaw():
`
MathUtils.atan2(2f * (y * w + x * z), 1f - 2f * (y * y + x * x)) : 0f;`

结果角度集的顺序在哪里,哪个轴首先旋转,第二个,第三个?

How are these functions related to a quaternion rotation matrix like: enter image description here

为什么这个旋转矩阵经常被给出为逆/转置(由于正交性而相等)?


轮换顺序

使用角度三元组进行定向有 12 种可能的旋转顺序。

其中六个称为真欧拉角,其余六个称为泰特-布莱恩角。

在这里阅读更多内容 https://en.wikipedia.org/wiki/Euler_angles

Libgdx 使用以下顺序。

  1. 绕 Y 偏航旋转
  2. 向 Y 方向倾斜提升
  3. 围绕获得的方向滚动旋转

旋转矩阵

旋转矩阵、四元数、欧拉角和轴角表示是编码旋转/方向的不同方式。

他们经常在存储空间和计算成本之间进行权衡。

它们可以通过明确定义的方程(您提到的其中之一)自由地相互转换。所以这些转换表达式是相互关联的。


Edit感谢您指出错误。它确实是关于 Y 轴而不是 Z 轴。

我已经从源代码 https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/math/Quaternion.java.


Libgdx 使用坐标系 http://bulletphysics.org/mediawiki-1.5.8/index.php/Coordinate_system子弹物理引擎。在该系统中,XZ 平面被视为水平,Y 平面被视为向上(而不是 Z)。这就是我错误的根源。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

libgdx 中四元数的 euler getPitch()、getRoll()、getYaw() 的旋转顺序? 的相关文章

  • Libgdx - 制作下拉菜单/设置屏幕

    我正在寻找制作一个下拉菜单和下拉设置屏幕 但我找不到任何在 Libgdx 中制作这些的资源 想要一些针对这种特定类型的界面的良好资源的指针或一个简单的示例 Thanks 选择框 https github com libgdx libgdx
  • 如何将 Sprite 纹理更改为动画

    我有一个每秒生成的精灵 我不想做的是将精灵纹理更改为动画 并且当它被触摸时它将恢复为正常纹理 public void draw SpriteBatch batch enemyIterator enemies iterator arrayli
  • 需要指南针陀螺仪帮助

    我需要一个游戏对象指向北方 并且我想将其与 gyro attitude 输入结合起来 我曾尝试一步完成此任务 但没有成功 也就是说 我无法制作任何我在网上找到的陀螺仪脚本 以满足始终指向北方的额外要求 相信我 我已经尝试了所有能找到的关于这
  • 使用四元数的最近邻

    给定一个四元数值 我想在一组四元数中找到它的最近邻居 为此 我显然需要一种方法来比较两个四元数之间的 距离 这种比较需要什么距离表示以及如何计算 Thanks Josh 这是一个老问题 但似乎需要更多答案 如果四元数是用于表示旋转的单位长度
  • 画一条平滑的线

    我正在使用 libgdx 开发游戏 我想使用形状渲染器绘制一条平滑的线条 shaperenderer begin ShapeType Line shaperenderer line fisrstVec2 secondVec2 shapere
  • 如何生成多个apk(使用gradle,libGDX)

    我试试这个 http tools android com tech docs new build system user guide apk splits 我想生成一些APK x86 armeabi v7a 为了减少Google Play中
  • 使用四元数进行 OpenGL 旋转[重复]

    这个问题在这里已经有答案了 因此 我正在编写一个程序 其中对象以 spacesim 方式移动 以便学习如何在 3D 空间中平滑地移动对象 在对欧拉角进行了一番研究之后 它们似乎并不真正适合任意方向上的自由形式 3D 运动 因此我决定继续使用
  • 在模拟器中运行时,libgdx 在 helloworld 应用程序上抛出异常

    我已经按照教程进行了操作并使用 libgdx 库创建了一个简单的应用程序 该应用程序具有红色背景 当我将其作为独立的桌面应用程序运行时 效果很好 但是当我运行 android 版本时 会引发以下异常 并且应用程序无法启动 02 04 18
  • 计算沿 y 轴方向(角度测量)的变化率?

    我想计算 iPhone 沿 y 轴方向的变化率 1 最初我需要将参考定义为y轴 2 然后测量相对于定义参考的方向变化率 角度测量 CMAttitude 是否提供可靠的角度测量来实现此目的 或者我可以使用旋转矩阵或积分陀螺仪数据 我实现了这种
  • 创建/渲染 scene2d 舞台后重置视口

    在我的游戏中 我正在绘制一个 scene2dStage使用自定义世界坐标系 然后 我想绘制一个调试 UI 上面包含一些文本 例如 FPS 但只需使用屏幕坐标 即文本位于屏幕右上角的位置 我的主要渲染方法如下所示 Override publi
  • 旋转相机与旋转场景点(仅该点,而不是整个场景)之间有什么不同?

    我认为旋转相机并拍摄场景照片与保持相机稳定并反向旋转场景会产生相同的结果 假设原始相机旋转矩阵为R1 旋转相机意味着我们应用另一个旋转矩阵 R12 因此 R2 R12 R1 是新的旋转矩阵 假设X是场景点的真实世界坐标 以反向方式旋转场景点
  • 四元数到欧拉角算法 - 如何转换为“Y = Up”和旋手性之间的转换?

    我有一个在四元数和欧拉角之间转换的算法 public static Vector3 ToEulerAngles this Quaternion q Store the Euler angles in radians Vector3 pitc
  • 如何在 libgdx scene2d 上拖放演员?

    我正在使用 libGDX 开发游戏 我想知道如何拖放 Actor 我已经搭建了舞台并绘制了演员 但我不知道如何触发该事件 请尝试帮助我使用我自己的架构 public class MyGame implements ApplicationLi
  • 实现移动运动体

    Project 我正在制作一个简单的项目 其中我希望能够制作一个运动体并将其从 x 点移动到 y 点 创建运动体 似乎没有太多直接内容 我一直在关注一些关于实现运动体的不同教程 因为我找不到指定如何正确执行此操作的教程 Problem 这似
  • 单击 libGDX 中的 Actor

    我的游戏中有一个覆盖层 其中包含屏幕图像和屏幕 上 的一组按钮 截屏 My Screen有一个Stage The Stage有一组Group对象 我将其视为图层 第一组具有背景 中间的组具有游戏元素 最前面的组具有屏幕覆盖 覆盖层由一个Im
  • 使用 libGDX 写入 Json

    我是 Json 和 libGDX 的新手 但我创建了一个简单的游戏 我想将玩家姓名及其分数存储在 Json 文件中 有没有办法做到这一点 我想创建一个 Json 文件Gdx files localStorage如果它不存在 如果存在 则向其
  • 将 TextField 与 LibGDX 结合使用

    我正在使用 LibGDX 开发一款 Android 游戏 并且想要实现两个TextFields 登录到服务器 据我所知我需要使用Stage https libgdx badlogicgames com nightlies docs api
  • 3D 数学:根据“向上”和“向上”正交向量计算倾斜(滚动)角度

    我希望这是提出这个问题的正确位置和这个一样 https stackoverflow com questions 3035590 bank angle from up vector and look at vector 但表示为纯数学而不是图
  • 使用 libgdx 裁剪图像

    I need to crop image like this 我需要从中心绘制部分图像 我知道有一个带有很多参数的批处理的draw 方法 但是没有关于所有这些参数的良好文档 所以我不知道如何使用它 这是我实现的 public class T
  • 将四元数旋转转换为旋转矩阵?

    基本上 给定一个四元数 qx qy qz qw 我如何将其转换为OpenGL旋转矩阵 我也对哪个矩阵行是 向上 向右 向前 等感兴趣 我有一个四元数的相机旋转 我需要在向量中 以下代码基于四元数 qw qx qy qz 其中顺序基于 Boo

随机推荐

  • PHP发送邮件附件

    我找到了post https stackoverflow com questions 3092821 php send e mail with attachment关于向邮件添加附件 问题是如何将上传的文件与该功能连接起来 我必须通过什么
  • 在执行测试之前等待自己的函数(返回一个承诺)

    我有自己的函数 调用测试控制器服务器来重置数据库 它返回一个承诺 该承诺在数据库成功重置后完成 function resetDatabase returns a promise for my REST api call 我的目标是能够在所有
  • 防止Python中的函数覆盖[重复]

    这个问题在这里已经有答案了 有什么方法可以防止子类覆盖基类中的方法吗 我的猜测是没有 但我来自 NET 世界 并且我正在努力使我的 API 尽可能强大 因此非常感谢任何输入 class Parent def do something sel
  • Angular 2 错误:尝试使用被破坏的视图:DetectChanges 错误:尝试使用被破坏的视图:ViewDestroyedError 处的 detectorChanges

    我正在使用 ng2 toastr 并收到以下错误 https www npmjs com package ng2 toastr https www npmjs com package ng2 toastr Attempt to use a
  • 如何防止请求返回304

    浏览器什么时候不向服务器发出文件请求 换句话说 我有一个正在提供服务的 JavaScript 文件 它的 HTTP 响应头有一个ETag Cache Control public and Expires Tue 19 Jan 2038 03
  • 如何解决 VS Code 不支持车把部分的问题?

    我使用车把作为我的项目的模板引擎 我正在使用 Prettier 进行格式化 但在格式化 hbs 文件期间我收到错误 SyntaxError 不支持车把部分 我尝试在互联网上寻找解决方案但失败了 这是完整的错误日志 SyntaxError 不
  • 断言两个 java bean 是等价的

    这个问题 https stackoverflow com questions 472626 how to generically compare entire java beans很接近 但仍然不是我想要的 我想以通用的方式断言两个 bea
  • 有没有办法让 ANT 任务在 Windows Vista 中以管理员身份运行?

    作为安装程序的一部分 我需要从 ANT 运行批处理文件 如果我以管理员身份运行 cmd exe 并运行批处理文件 一切都会很好 因为它具有适当的管理权限 当从 ant 执行批处理文件时 它会失败 就像我在没有管理权限的情况下运行批处理文件一
  • Angular 跨服务通信

    我有一个统计应用程序 在我的页面左侧有主题列表 顶部有组列表 主要部分包含与主题和组相关的统计项目 我还有几个服务为我的应用程序提供业务逻辑 为了简单起见 我们来谈谈其中的三个 主题服务 群组服务 and 统计服务 最终用户可以操作主题和组
  • 如何让 Android Studio 指向我的 SDK 源代码?

    Android Studio 调试器指向错误版本的 SDK 源代码 因此我无法单步执行系统代码 如何让它使用特定的 SDK 源路径 需要明确的是 它指向正确的 SDK 但 SDK 源代码的版本错误 16 而不是 17 提前致谢 这有点令人困
  • Magento:订购可配置产品后,由于缺货而被取消

    我的问题是 我有一个产品 里面有简单的产品 也许 T 恤白色尺码 S XL 和一些颜色 现在 如果我订购其中之一 则会通过订单确认电子邮件取消该订单 我认为这是库存的问题 但我不知道 每种商品有 99 种库存 全部已激活并准备发货 有谁遇到
  • NHibernate:多对多关系不起作用

    我有以下数据库架构 http lh4 ggpht com SDci0Pf3tzU SdM3XnAmmxI AAAAAAAAEps Ie3xW3ZVNfQ s400 styleerror png http picasaweb google c
  • 如何找出 Django 中出现的 500 错误?

    当我访问由 Django 生成的服务器上的 Django 应用程序中的页面 http 68 123 151 234 static quickstart html 时 该页面显示 A server error occurred Please
  • 无法在android的webview中使用javascript播放音频

    在 Android 手机上 当我在 html 文件中使用以下代码时 音频正在播放 但是当我删除 自动播放 属性时 我无法在 webview 上播放音频 有人有解决方案吗
  • 如何在 Oracle 中“打开”XML 数据

    下面是我想用 PL SQL 重写的一些 TSQL 的示例 DECLARE xml XML SET xml
  • 使用 ButterKnife 库在 1 个片段中包含 2 个不同的视图

    我目前正在尝试使用 Android 的 ButterKnife 库来处理一些样板代码 https github com JakeWharton butterknife https github com JakeWharton butterk
  • 如何跟踪用户在网站上的时间

    我希望跟踪用户在网站上的平均时间 与谷歌分析的方式相同 以进行内部管理 做到这一点最简单的方法是什么 您可以通过以下方式获取时间 用户访问您的网站后 将 cookie 中的当前时间保存为 已访问 并且在下次访问时您可以获取它 如果已设置 更
  • 同时滚动多个div

    我正在尝试滚动多个div同时 当我滚动其中一个时div 我想报告所有div中的滚动 我动态创建 div 所以我使用这个功能document getElementsByClassName sub category container得到我所有
  • 在网格视图内填充下拉列表

    我在 Gridview 中有一个下拉列表 我必须显示与每个 id 关联的记录 并且该 ID 包含超过 10 条记录 那么我如何显示它们 protected void GridView1 RowDataBound object sender
  • libgdx 中四元数的 euler getPitch()、getRoll()、getYaw() 的旋转顺序?

    将四元数转换为欧拉角时 通常必须有轴旋转的顺序 例如这种可视化 http quaternions online libgdx 是如何工作的 四元数类具有以下功能 getRoll Math asin MathUtils clamp 2f w