问题标签 [rotational-matrices]

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 投票
1 回答
476 浏览

python - 相对于 z 轴旋转球体集合

我将球体中心的坐标 (x,y,z) 存储在一个 numpy 数组中。我希望能够相对于 z 轴旋转球体,但得到了奇怪的结果。我的代码进行了旋转,但它似乎也在向上和向右移动它。也许这是轮换的预期结果,但我认为不是。这是我的代码:

这是旋转前的图像:

在此处输入图像描述

这是之后的样子:

在此处输入图像描述

0 投票
2 回答
3387 浏览

matlab - simulink中的旋转矩阵

我想在 Simulink 中创建一个齐次矩阵,以模拟对象在空间中的旋转和平移。

如何创建一个 4x4 矩阵,它将给定的角度作为输入?

例如,X 轴上的平移与 Z 轴上的旋转相结合将在 MATLAB 中:

主要问题是我希望 Simulink 模型更无代码(没有 MATLAB 解释函数等),只是块。

谢谢你。

0 投票
1 回答
1194 浏览

java - 使用旋转矩阵的旋转角度如何对应度数

我正在尝试使用旋转矩阵在 java 中旋转一个框。

(我正在使用 LWJGL 和 Slick 2D 库)

我围绕中心点旋转 1 点的代码是这样的:

现在我只是像这样更新每次更新的轮换:

这很好用,除了旋转数似乎不对应从 0° 到 360° 的度数

是否有公式或东西可以将旋转数转换为可读程度,反之亦然?

0 投票
4 回答
15759 浏览

matrix - 剪切矩阵作为基本变换的组合?

我知道旋转、缩放、平移等的变换矩阵。我也知道剪切变换的矩阵。现在,我需要剪切矩阵——

以 其他 上述 变换 组合 的 形式. 尝试搜索,尝试头脑风暴,但无法罢工!谢谢!

0 投票
0 回答
1068 浏览

opengl - 计算旋转矩阵偏移

我们正在开发一个带有 HMD 的虚拟现实环境,并以四元数的形式提供连续的跟踪器数据。我们从中计算出一个旋转矩阵,然后让 OpenGL 完成剩下的工作。

现在我们想在开始时设置一个特定的方向,这意味着重置来自跟踪器的数据并始终计算偏移量。

编辑:经过更多测试后,我们认为以下是正确的,因为我们通过更改计算中的轴和源来从左手坐标系切换到右手坐标系。

然后我们将方向矩阵与模型视图矩阵相乘。这很好用,但是我们很难找到在按下回车键时重置位置的例程。

0 投票
0 回答
411 浏览

javascript - Javascript - 仅在 180 度范围内旋转的归一化向量

我正在尝试用 Javascript 创建一个小型小行星游戏,并且我已经完成了飞船在屏幕上绘制并可以四处飞行的程度。但是,每当我尝试将其旋转一定量时,它只能在 +/- PI/2 之间旋转。我需要它覆盖的范围不只是 180 度,否则船永远不会掉头。我正在尝试使用自定义 2D Vector 类从头开始执行此操作,并且有几个人在看它时不知道该怎么做。

这是我的矢量代码,或者至少是构造函数和旋转函数。

这是我的船试图旋转的代码。

如有必要,我可以重现更多代码,但据我所知,这是所有相关代码。我试过控制台打印,我试过弄乱旋转矩阵,我什至试过只使用弧度而不是每次都从度数转换(老实说,我真的应该这样做)。

对我的新手 JavaScript 有什么想法吗?

0 投票
1 回答
3010 浏览

c++ - 将局部旋转转换为全局旋转(矩阵)

[C++] {DirectX 9}

TL;DR:如何使用矩阵将表示 X 轴上局部旋转的浮点数转换为全局偏航/俯仰/滚动?

所以我正在编写一个小游戏,其中玩家被表示为一个斧头网格。玩家的视图随着鼠标的移动水平旋转(围绕 Y 轴)。[这里]是一个截图,以获得更好的想法。

所以我试图让斧头在按住鼠标时来回摆动。目前,我在 Player 类中将玩家的全局位置和旋转存储为变量(m_x、m_y、m_z、m_rotationX、m_rotationY、m_rotationZ)。

当我绘制对象时,我将所有这些坐标转换为全局空间以创建一个世界矩阵。所以,是的,这些是全球坐标。m_rotationY 会根据鼠标移动而改变。

这意味着如果我增加 m_rotationX(即通过某个动画增量的 sin 值),则对象将全局旋转,这意味着如果我向左或向右看,斧头会在屏幕上摆动而不是远离它。

我的问题:我必须做什么样的矩阵变换才能将一些“局部”x 旋转值转换为“全局”x、y 和 z 旋转值。

到目前为止,我的想法是创建一个 X 旋转矩阵,然后使用它转换某种矢量,但我所有的实验都非常不成功。

谢谢你的时间:D

编辑:

更多图表!

这就是我这样做时发生的事情m_rotationX = rotationAmount;

http://imgur.com/a/yZqzx

编辑2:

因此,根据 Federico 的回答,我设置了以下代码:

这应该给我一个旋转矩阵,表示 X 轴上的局部旋转。但是我可能完全错了。

无论如何,我怎样才能把它放回全局rotationX、rotationY和rotationZ浮动

*编辑3:*

这是我从矩阵中提取旋转角度的尝试。不幸的是,结果完全关闭。斧头从视野中消失,角色随机移动。

从数学上讲,这对我来说似乎是合理的。不知道从这里去哪里。

正如 Frederico 建议的那样,我想我会尝试仅使用矩阵来实现它。

0 投票
0 回答
627 浏览

c# - 矩阵旋转度数

对于我为 3D 游戏制作的屏幕叠加层,我需要在 3D 世界中的某些位置上显示图标。我已经设法从游戏中获得了几个使这成为可能的变量:

  • 玩家位置 (x,y,z)
  • 相机位置 (x,y,z)
  • 点位置 (x,y,z)
  • 相机角度(FOV)

使用这些变量,我设法获得了相机视图的左右边缘。使用这 2 个变量,我可以获得 0 到 1 之间的点,该点应在 x 轴上显示图标。(0 在左边缘,1 在右边缘)这似乎工作得很好,但前提是我与 X 或 Z 轴对齐,如下例所示:

在此处输入图像描述

我一直在尝试使用以下旋转矩阵来解决这个问题:

我所做的是,我将玩家位置、相机位置和相机边缘位置放在矩阵中,并以世界点作为旋转点。问题是,只要我将角度量设为 90 度,X 和 Y 就会被翻转。几天来我一直在努力寻找解决方案,但我找不到它,所以我希望任何人都可以在这里推动我朝着正确的方向前进。以下是我的代码的一些部分,可能有助于找到解决方案:

注意:我已将一些变量的名称更改为更易于理解的名称,因此名称可能存在不一致。

编辑:我发现了视图和投影矩阵。我也许可以使用它们将 3D 位置转换为屏幕。我不确定是否可以用我所拥有的有限信息制作这个矩阵。

0 投票
1 回答
752 浏览

c# - 奇怪的第一人称相机旋转 XNA

我正在尝试在 XNA 4.0 中创建第一人称视角相机。我让相机正常工作,我的场景渲染得很好。我的 W、A、S、D 移动也很好,但我不知道为什么我的鼠标旋转搞砸了。

当我尝试用相机向上看时,它会倾斜我的整个世界,向左和向右看做同样的事情,并且都朝同一个方向看。最终,我的整个世界都翻转了:S。

我已经尝试了各种示例代码并遵循了我能找到的所有教程,但它们都没有我遇到的相同问题。他们要么不工作,要么落后很多!

任何想法我做错了什么?

0 投票
1 回答
2525 浏览

c++ - 旋转几何图形以对齐方向向量

我一直试图让我生成的几何图形与方向向量对齐。为了说明我目前的问题是:

  • A = 正确对齐的几何图形(只是一个用于测试的三角形)
  • B = 不正确对齐的几何图形

问题示例

我当前在此三角形示例的代码中的解决方案(此代码针对您在屏幕上从拆分开始看到的所有节点运行,我使用的是 GLM 数学库):

点 A 的方向向量值:

  • x 0.000000000 浮点数
  • y 0.788205445 浮动
  • z 0.615412235 浮点数

B点的方向向量值:

  • x 0.0543831661 浮点数
  • y 0.788205445 浮动
  • z -0.613004684 浮点数

编辑 1 (24/11/2013 @ 20:36) : A 和 B 没有任何关系,两者都是单独生成的。在生成 A 或 B 时,仅知道位置和方向。

我一直在查看此处发布的解决方案:

但我无法成功旋转我的几何图形以与我的方向矢量对齐。我觉得我在做一些相当基本的错误。

任何帮助将不胜感激!