问题标签 [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 回答
1255 浏览

android - 将 float[] 转换为 android.graphics.Matrix

我正在开发一个 android 应用程序,我需要将 9 个元素的浮点数组转换为 android.graphics.Matrix 类型的对象。float 数组表示 SensorManager.getRotationMatrix(...) 返回的旋转矩阵。我想使用这个浮点数组将其转换为 android.graphics.Matrix 以在 canvas.drawBitmap(Bitmap, Matrix, Paint) 中使用。

如何将浮点数组的值设置为 Matrix 对象?

提前致谢。

0 投票
2 回答
5850 浏览

math - 将 2D 空间顺时针旋转角度“a”的矩阵 A

附图显示了问题和我的答案。

如果有人能告诉我它是否正确,我将不胜感激。在此处输入图像描述

0 投票
3 回答
22710 浏览

c++ - 将 OpenCV 旋转和平移向量转换为 XYZ 旋转和 XYZ 位置

似乎有 Google 结果和 stackoverflow 帖子可以回答这个问题,但简单的事实是我无法理解它们。无论我读了多少,我都无法理解四元数、欧拉角和罗德里格斯变换等等。

有人愿意像我 12 岁那样向我解释如何从 OpenCV 的 solvePnP() 方法返回的旋转和平移向量中获取我可以插入 3d 图形应用程序的 xyz Position 和 xyz Rotation 值吗?

这是用于 C++ 中的增强现实应用程序。我已经启动并运行了 OpenCV 部分,跟踪标记板并将旋转和平移矢量发送到图形程序,但我不知道如何使用这些信息来设置我的 3d 对象。

我真的很想了解这背后的数学原理,并会感谢这里对理论的任何耐心解释。但我也会接受指向一些代码的指针,我可以在另一天复制/粘贴并学习理论。事实上,通过查看具体代码并回归理论,我似乎可以更快地学习这样的东西。

编辑:就像有这个......这显然应该为我指明正确的方向,但据我所知,它也可能是时间机器的计划。我突然想到我可能会要求补习高中数学,但这不可能是第一次。

编辑:这是从solvePnP()返回的旋转向量和平移向量的示例...转换为XML以用于图形应用程序。请注意,我看到的每一个都包含三行一列。

0 投票
1 回答
781 浏览

android - 如何在android中以横向(使用TouchImageView)设置宽度适合屏幕

我正在使用MikeOrtiz TouchImageView来自 GitHub。这是链接TouchImageView

  • 我正在尝试在横向方向中将宽度设置为适合屏幕,只有这里是显示我想要做什么的图像。

  • 我要这个

横向宽度适合屏幕

  • 而不是我现在在风景中得到的这个 横向宽度不适合屏幕

这是一些代码。

谢谢

0 投票
1 回答
2460 浏览

ios - 反转CMRotationMatrix单轴的旋转

请多多包涵,我真的不擅长矩阵数学。我有一个图层,当手机旋转到其他姿态时,我想在 referenceAttitude 处保持重力“静止”。我有一个运行良好的motionManager,在当前姿态上使用multiplyByInverseOfAttitude,并使用CMRotationMatrix 将生成的增量作为旋转应用到我的图层(对俯仰、滚动和偏航进行单独的CATransform3DRotates 会导致轴附近出现相当大的古怪)。它基本上是受到像这个例子这样的代码的启发。

在将旋转应用于我的图层之前,我将它与另一个变换连接以应用 m34 透视技巧。

结果很漂亮,就像你期望的那样工作,当我移动手机时,图层保持静止,除了一个轴,y轴;将手机平放并滚动,该层会沿手机所在的方向滚动两次,而不是保持静止。

我不知道为什么在应用 multiplyByInverseOfAttitude 后,这个轴移动错误而另一个轴正确移动。当对俯仰、偏航、滚动使用单独的 CATransform3DRotates 时,我可以通过将滚动矢量乘以 -1 轻松纠正问题,但我不知道如何将其应用于旋转矩阵。显然,只有在将透视图引入方程式后,该问题才可见,所以也许我做错了。反转我的 m34 值可以修复滚动,但会在球场上产生相同的问题。我要么需要弄清楚为什么这个轴上的旋转是向后的,通过我的矩阵反转那个轴上的旋转,或者以某种方式纠正视角。

0 投票
1 回答
12177 浏览

java - 如何将 3D 矩阵逆时针旋转 90 度?

我试图在 Java 中将矩阵逆时针旋转 90 度。我找到了有关如何使用 2D 矩阵执行此操作的答案,但我的矩阵是 3D。

以下是我发现如何进行 2D 旋转的方法:

那么我将如何旋转 3D 矩阵呢?

0 投票
1 回答
145 浏览

linear-algebra - 从运动计算结构后旋转矩阵的意义

我已经完全实现了算法,我对旋转矩阵的工作方式有点困惑。所以你以一个 3xP 的“结构”矩阵结束,内容(如果我是正确的)是 P 3D 点(所以行是 x、y、z)。

然而,旋转矩阵是 2fx3。F 是帧数,因为我们最初将 3 帧跟踪的特征点堆叠成一个矩阵。它是 2f,因为上半部分是 x 坐标,下半部分是 y 坐标。

无论如何,生成的矩阵是这个 2fx3 ,看起来你有 2 个旋转矩阵,所以我有点困惑它如何对应于正常的旋转矩阵

这是算法的简短概述 http://www.cs.huji.ac.il/~csip/sfm.pdf

0 投票
1 回答
2348 浏览

matlab - 找出两个旋转矩阵之间的差异

我遇到了以下问题,我开发了用于将欧拉角的大数组转换为旋转矩阵的代码,我的数据是 phi1、phi 和 phi2 值,如下所示

.....还有其他200万个数据数组。

但我想对由第一行欧拉角形成的旋转矩阵进行逆运算,并将其乘以从第二行发展而来的矩阵。然后我必须使用结果矩阵的元素之一。有没有办法做到这一点?

这里 g1 是我想找到的第一行数据的旋转矩阵 g2 是第二行数据的旋转矩阵。瘦我要进行

然后我想提取结果矩阵的 g11 和 g13 元素。

数据取自具有以下数据的文本文件

前三列分别是欧拉角 phi1、phi 和 phi2,用于从我正在使用的文本文件中提取数据

这里 phi1 是一个 1999999X1 的数组,同样 phi 和 phi2 是相同大小的数组,我在后面使用这个。

0 投票
1 回答
503 浏览

java - OpenGL矩阵乘法导致奇怪的浮点行为

我有一个用 LWJGL 为 java 编写的基本 OpenGL 程序。在阅读了为什么使用俯仰、偏航和滚动变量是一个坏主意后,我才刚刚开始研究旋转矩阵。然而,由于矩阵更难使用,我正在编写一个函数,它接受偏航、俯仰和滚动并将它们转换为旋转矩阵,然后将其与 Modelview 矩阵相乘。我的代码如下:

首先,我传递0, 0, 0给了这个函数,我希望它对渲染的场景没有影响。但是,我正在绘制的简单正方形在函数调用后消失了。为了调试,我曾经glGetFloat访问模型视图矩阵并查看发生了什么。

这就是事情变得奇怪的地方(至少对我来说):在我调用我的函数之前,检索到的FloatBuffer存储模型视图矩阵是

或者,更具可读性,

一切正常。

在我打电话之后,矩阵变成了

我的测试方块消失了。

怎么了?我的矩阵是否创建不正确?有什么我不明白的glMultMatrix吗?有什么我需要启用或禁用的吗?为什么普通矩阵中有那些奇怪的浮点数?它不应该是单位矩阵(带1)吗?

编辑:

如果BufferUtils.createFloatBuffer(16 * Float.SIZE);使用而不是ByteBuffer.allocateDirect(16 * Float.SIZE).asFloatBuffer();,则提到的字节顺序问题消失并且4.6006E-41' 成为1.0预期的那样。但是,矩阵仍然从单位转换为纯零。

0 投票
1 回答
1933 浏览

c# - 在 C# 中实现 2x2 旋转矩阵

我使用以下代码旋转矢量:

我试图创建一个 2x2 矩阵,这样我就可以将我的归一化向量与矩阵相乘。结果将是新的旋转矢量而不是坐标。

旋转矩阵

不幸System.Windows.Media.Matrix的是不支持 2x2 矩阵。到目前为止,我找不到这个旋转矩阵的任何实现。你将如何实现这一点?