问题标签 [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 投票
0 回答
245 浏览

rotation - Unity 中的大旋转/定向任务

我正在开发一个统一的出口商/进口商(学校项目)的定制搅拌机,我有一个更大的问题:旋转。

我可以从搅拌机中获得欧拉旋转和/或四元数,但是当我希望它们应用于 Unity 的一个对象时,它只会完全打乱旋转。

我已经尝试交换 Y 和 Z 坐标,但它似乎也不起作用。

我试过了,但统一应用旋转矩阵是不可能的......但如果我们能以某种方式弄清楚,也许这就是解决方案?

我需要尽快找到一个通用的解决方案。谢谢。

...有关进一步的描述,请阅读下面的评论。

0 投票
2 回答
473 浏览

c++ - 旋转矩阵 - 围绕旋转框旋转球

我有一个 3D 盒子:center point = (a,b,c), width = w, height = h, depth = d.

中心点不是原点。

我在盒子上有一个球(互相接触),它的centerradius

我可以旋转盒子(围绕 X 轴,但它的中心保持不变..),我希望球粘在盒子上。所以球需要和盒子一起旋转。

旋转角度为 45 度。

我试图这样做:

我定义了围绕 X 轴的旋转矩阵:

并乘以球中心向量:

所以我得到了:

当盒子旋转但太远时,球确实旋转了。我该如何解决?

0 投票
1 回答
1074 浏览

opencv - 使用 cvRodrigues2() 在 opencv 中查找旋转矩阵和平移矩阵

我试图找到通过相机查看的平面对象的真实世界坐标。我正在使用棋盘进行相机校准。我正在为棋盘拍摄大约 10 个快照(每个快照彼此不同),并且我在 opencv 中使用 cvCalibrateCamera2(....) 函数。这里我得到的输出之一是 rotation_vectors ,它是 Nx3 矩阵。我已经看过文档,它说查看 cvRodrigues2() 函数以获取更多详细信息。而且我知道 cvRodrigues2() 函数将 1x3 旋转向量转换为 3x3 旋转矩阵。我的问题是 N 中的哪个 1x3 旋转向量应该输入到 cvRodrigues2() 函数以计算旋转矩阵?

我认为 10 个快照中的每一个都有不同的旋转向量。我应该使用哪个旋转向量来计算旋转矩阵,这可以用于获取世界坐标的最初目的?

0 投票
2 回答
1726 浏览

d3.js - 在 D3 地理投影中组合两个旋转?

根据我找到的所有优秀示例,玩 D3 地理正交投影来构建交互式地球仪。

你可以在http://bl.ocks.org/patricksurry/5721459看到我的简单模型

我希望用户像轨迹球一样操纵地球(http://www.opengl.org/wiki/Trackball)。我从 Mike 的一个示例(http://mbostock.github.io/d3/talk/20111018/azimuthal.html)开始,并稍微改进以使用画布坐标并以“轨迹球坐标”表示鼠标位置(即绕画布水平和垂直轴),以便固定的鼠标移动在地球边缘附近提供更多旋转(如果您使用上面解释的双曲线扩展,则可以在地球之外工作),而不是迈克的一对一对应。

当地球开始于未旋转的位置(北极垂直)时,它工作得很好,但是当地球已经旋转(操纵示例使北极面向页面外)时,轨迹球控件变得不直观,因为你可以不要简单地将轨迹球坐标的变化表示为 d3.geo.rotate 纬度/经度坐标中的增量。D3 的 3 轴旋转包括应用经度旋转(围绕北极旋转),然后是纬度旋转(围绕画布平面中的水平轴旋转),然后是“偏航”旋转(围绕垂直于平面的轴旋转) - 见http://bl.ocks.org/mbostock/4282586

我想我需要的是一种组合我的两个旋转矩阵的方法(当前在投影中的一个,用一个新的来稍微旋转轨迹球),但是除了挖掘之外,我在 D3 中看不到这样做的方法进入源代码(https://github.com/mbostock/d3/blob/master/src/geo/rotation.js)并尝试进行数学运算来定义旋转矩阵。代码看起来很优雅但没有注释,我不确定我是否可以正确地用正交投影实例破译闭包。

最后一点,如果有人知道 d3.geo.projection 的旋转矩阵形式,那也可能解决我的问题。

有任何想法吗?

0 投票
1 回答
190 浏览

javascript - 让节点层次结构中的节点面向相机(广告牌)

我需要使节点层次结构中的一个节点面向相机,或者换句话说,成为一个广告牌。对于每个节点,我将其世界矩阵和世界旋转存储为四元数。根据我对四元数的了解,我想要的操作是获取相机四元数和节点的旋转四元数之间的差异,并通过所述差异简单地旋转节点。

我的相机存储为欧拉角,所以我通过首先创建 X 轴旋转,然后是 Z 轴旋转(我没有 Y 轴旋转)并将它们相乘来构造相机四元数。

从那里它只是一些数学来获得差异并最终从中创建一个旋转矩阵,并将节点的世界矩阵与它相乘。

然而,这最终导致节点像疯子一样旋转,并且决不面向相机。

以下是相关的 JavaScript 代码:

我犯了一些明显的错误吗?

0 投票
1 回答
388 浏览

rotation - 为什么这两个代表四元数和欧拉角的旋转矩阵不一样?

以下是围绕单位四元数 {q0,q1,q2,q3} 旋转角度 alpha 的表示:

这里,beta_x、beta_y 和 beta_z 是单位四元数的方向余弦,即我旋转的轴。

与this对应的旋转矩阵如下:我们称它为R1

现在,假设我的旋转矩阵用欧拉角来表示:我们称之为R2

在此处输入图像描述

R2 首先围绕 x 轴旋转 phi,然后围绕 y 轴旋转 theta,最后围绕 z 轴旋转 psi。现在,假设我的旋转轴在 yz 平面上。这意味着没有围绕 x 轴的旋转,只有围绕 y 轴和 z 轴的旋转组合。这意味着 phi 为零,这意味着R2(3,2) 为零。

或者,这也意味着 cos(beta_x) 为零,因为没有绕 x 轴旋转。这意味着 q_1 为零。但是,如果我们看 R1(3,2),它不是零,不像 R2(3,2)。为什么这两个表示不一样?我错过了什么?

0 投票
1 回答
9877 浏览

android - TYPE_ROTATION_VECTOR, TYPE_ORIENTATION 给出不同的结果,也有偏差

我已经为 Rotation Vector 和 Orientation Vector 实现了监听器,虽然我知道它已经贬值了,但我想测试两者。

我知道 Rotation Vector 是一种融合传感器并被推荐,但根据它, NORTH(由 getOrientation(rotationMatrix,value) geaving bearing 0 返回的 value[0])与来自 Orientation 传感器的 NORTH 不匹配。我还从 Playstore 的不同应用程序中进行了统计,方向传感器的值似乎更接近它们。

此外,很多时候我的 Rotation_Vector 方位角值 [0] 然后 getOrientation 会突然上升并保持在 -180 到 180 之间振荡

PS "getRotationMatrix(float[] R, float[] I, float[] gravity, float[] geomagnetic)" 也给出与旋转向量相同的结果。

我想确定手机的 Y 轴和指向北方的向量之间的角度,这是我最初的实现。请建议。

0 投票
2 回答
791 浏览

matlab - matlab 代码优化 - 将大型元胞数组中的所有 3x3 矩阵相乘

概括

希望提高我的代码的时间效率,在 3x3 矩阵和逆 3x3 矩阵之间重复执行矩阵乘法 - 使用 mldivide。

背景

我正在尝试实现矢量量化方法,然后在步态分析中使用方向数据在连接到受试者下肢的传感器之间 进行手眼校准"Data Selection for Hand-eye Calibration: A Vector Quantization Approach"......我正在遵循的算法来自论文这就是你可能不知道的背景需要...

要优化的代码

我希望找到一种更快的方法来解决所有可能的“相对运动”(A 或 B),这需要太长时间(C 和 D 大约有 2000 个元素长,因此 A 或 B 的大小将达到 =2000*(2000-1)/2=1999000):

希望这是正确的地方,我无法找到可以申请的先前解决方案。另外,我没有真正的经验,所以我不确定在处理大型矩阵时计算时间是否是不可避免的。

-------------------------------------------------- ------------------------------------------

*编辑*

矩阵属性:旋转,如下所述 - 它们“很好”,而不是单数。它们在特殊正交群中,SO(3) [transpose=inverse]。见http://en.wikipedia.org/wiki/Rotation_matrix#Properties_of_a_rotation_matrix

测试方法:要创建随机旋转矩阵 R,请使用以下代码:

SpinConv:我只是用它来将 3x3 方向余弦矩阵转换为轴角表示。它涉及更多,并且转换为稳定性所需的更多(首先转换为四元数)。这是链接: http: //www.mathworks.com/matlabcentral/fileexchange/41562-spinconv/content/SpinConv.m 这是所有需要做的事情(不在 SpinConv 中 - 只是快速实施该方法):

*编辑 #2 * 刚刚意识到,或者,我可以使用四元数来避免使用 3x3 矩阵:

所以四元数是一个 1x4 向量。原始代码可以更改为(在 else 语句中):

其中qconjqmultqnorm是四元数运算。


好吧,很抱歉 - 这就是我所拥有的所有信息和可能性。

0 投票
0 回答
883 浏览

coordinates - 二维坐标变换

我有一个全局坐标系,需要将其转换为局部坐标系。新旧坐标系如下图所示。

在此处输入图像描述

使用转换规则,我带来了新系统中的坐标。这些公式如下所示。

在此处输入图像描述

这些公式不起作用,我不确定为什么?作为测试点,我尝试了这些,

旧系统 (0,-1.11270165)

新系统 (5.88729835,-10)

如果有人能启发我,将不胜感激。谢谢。

0 投票
1 回答
555 浏览

android - 如何在 min3d 中使用传感器旋转矩阵来旋转解析的对象

我想旋转从 min3d 中的 .obj 文件解析的对象。我需要使用从传感器获得的旋转矩阵。我知道如何在纯 OpenGL 中执行此操作,但我不知道该使用什么(可能是 min3d.core.Renderer?)以及如何在 min3d 中使用。
我喜欢 min3d,它可以很好地解析 .obj 文件,所以我真的不想放弃它并使用纯 openGL。我知道我可以使用 rotate() 方法,但它使用欧拉角,我需要使用旋转矩阵。这是代码: