- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
从三维笛卡尔坐标中,对象 A 的坐标可以表示为 xyzwpr(绿色箭头)。而从对象A的坐标世界来看,对象B也可以表示为xyzwpr(蓝色箭头)。
那么谁能写出计算物体B相对于原始坐标系(红色箭头)的xyzwpr的C#代码吗?
假设 A 的坐标为 (30,50,70, -15,44,-80) B (60,90,110, 33,150,-90)。
假设旋转的顺序是 yaw(z)->itch(x)->roll(y)
--- 编辑 ---
任何人都可以验证以下假设吗?
假设 B 点的 xyz。
较小飞机 B 点的 xyz 可以通过将第一架飞机 A 点的 xyz 和 B 的 xyz 相加,然后将 A 的 wpr 的 3d 旋转应用到 A 的 xyz 上来计算。
执行此操作的顺序是;
1)将A点平移到原点(减去-Ax、-Ay、-Az平移的A)
2)绕原点旋转(可以使用A的3×3矩阵R0)
3) 然后翻译回来。 (添加A,由+Ax,+Ay,+Az翻译)
B点wpr的假设只是两点旋转的连续。 AwApArBwBpBr。
--- 已解决。一些带有详细解释和代码的引用资料 ---
Global frame-of-reference VS Local frame-of-reference
最佳答案
这个问题有一些问题。
首先,我认为直接请求代码并不是一个好的做法。相反,显示您尝试过的代码,询问代码中的错误,或者更好的方法,或者可能对您有帮助的库。
我建议重新表述你的问题。现在看起来就像“有人可以帮我做作业吗?”。
您面临什么问题?也许您不想实现矩阵乘法,并且想了解已经实现矩阵乘法的库,或者您不知道如何调用 atan2。
一旦你获得了矩阵乘法、平移矩阵构建、旋转矩阵构建和atan2(由你自己或库制作),你只需要(伪代码):
Matrix c = a;
Matrix yaw, pitch, roll;
Matrix pos;
buildTranslationMatrix(pos, x, y, z);
buildRotationZMatrix(yaw, w);
buildRotationXMatrix(pitch, p);
buildRotationYMatrix(roll, r);
mult (c, c, pos); //c = c*pos
mult (c, c, yaw); //c = c*yaw
mult (c, c, pitch);
mult (c, c, roll);
decomposePos(c, x, y, z); // obtain final xyz from c
decomposeAngles(c, w, p, r); // obtain final wpr from c
注意后乘法。
希望我提出了建设性的批评。 :)
第二个假设是正确的。
也许我误解了第一个,但我认为这是错误的。由于我更习惯于变换矩阵而不是欧拉角(并且您指出了该链接),所以我这样理解:
为了获得 xyz(以及 wpr),我将计算包含所有值的变换矩阵。最终第二平面的变换矩阵在原坐标系下的计算公式为:
M = TA * RA * TB * RB
(TA
是平面A的平移矩阵,RA
是它的旋转矩阵)
变换矩阵可以这样理解:
r r r t
r r r t
M = r r r t
s s s w
我们只关心旋转和平移。如果乘以 TA*RA
:
1 0 0 x r r r 0 r r r x
0 1 0 y r r r 0 r r r y
0 0 1 z * r r r 0 = r r r z
0 0 0 1 0 0 0 1 0 0 0 1
这就是我们理解 A 坐标系的方式。记住,这意味着首先旋转,就像它在原点一样,然后平移到位置 x、y、z。后乘意味着内部变换,即移动坐标系中的变换。因此,如果我们继续后乘,我们将合成最终的变换矩阵。
此外,矩阵是结合的,所以
M = (TA * RA) * (TB * RB)
与
相同M = ((TA * RA) * TB) * RB
xyz 将位于 M
的最后一列,而 wpr 必须从 M
的 3*3 子矩阵分解。
关于rotation - 欧拉角旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21849386/
我有这部分代码将 div 围绕一个圆圈对齐: angle = 0; mangle = 0; for(i = 1; i<= count; i++) { $("#p" +i).css
为什么平衡得到一个AVL树的过程叫做旋转 ? (当你在它时,什么是 单 和 双 旋转?) 我的每一本教科书都公然使用这个词,没有任何解释。 最佳答案 这是在你的树的子树中改变根的操作,这是非常简单的操
作为进入处理的一个小作业,我必须编写一些代码才能获得以下内容: 使用 public void setup() { size(300,200); noFill(); rect(100,
我遇到了 Google Chrome 控制台报告的问题。我使用的是 Ubuntu 12.04。控制台中的问题是: Uncaught TypeError: Cannot read propert
在统一编辑器中,当我启用“Pivot”时,游戏对象将围绕“枢轴点”位置旋转,当我启用“Center”时,游戏对象将围绕“中心点”旋转 但是如果我使用脚本旋转,它总是围绕“中心点”旋转,例如,这是我的场
rotate() 算法会从左边选择序列的元素。它的工作机制如图 1 所示。 图 1 rotate()算法的工作方式(点此查看大图) 为了理解如何旋转序列,可以将序列中的元素想象成手镯上的珠子。rota
在三个JS中,是否可以用鼠标旋转对象而不是用OrbitControls.js旋转相机( https://threejs.org/docs/#examples/controls/OrbitControl
我正在学习 CSS 过渡和转换。这是 HTML: Transformatons and Transitions animate animate2 d
我们有一个图像,它似乎在旋转时消失了一秒钟。这个问题存在于 IE8 中,但在 IE9 和其他支持 HTML5 的浏览器中工作正常。我们使用了 jQuery 旋转插件。 HTML CSS #obj {
作为评估的一部分,我被赋予了这项任务......“‘旋转’按钮应该翻转元素的纵横比。” 为了完成这个,我定位了元素并切换了一个类名(旋转),然后添加了这个 CSS... .main-inner.rot
我从 Unity 插件 Final IK 中看到了这行代码。 整个函数是这样的: //Limits rotation to a single degree of freedom (along axis
我正在尝试在动画关键帧内同时应用 -webkit-filter:hue-rotate() 和 -webkit-transform:rotate()。不幸的是,即使是 Chrome Canary 也无法
我正在尝试制作看起来像这样的波斯尼亚和黑塞哥维那国旗。 我正在努力实现星星的排列方式。它们位于 45 度倾斜轴上,但星星本身没有旋转。 以下是我正在尝试的最低限度代码,但它也会旋转星星。 有什么办法可
我正在尝试使用 ratcave for python 创建一个项目。但是当我导入 ratcave 时,出现以下错误: AttributeError: 'scipy.spatial.transform.
我正在尝试使用 ratcave for python 创建一个项目。但是当我导入 ratcave 时,出现以下错误: AttributeError: 'scipy.spatial.transform.
我的问题是我使用支持 CSS2 和 javascript 但不支持 css3 的 html 到 pdf 生成器 (acts_as_flying_saucer),所以我不能使用 transform: r
我做了以下转换: // Translate my cube to origin myCubeModelMatrix = glm::translate( myCubeModelMatrix, vec3(
我正在将一些基于 PIL 的代码转换为 NumPy,但我发现 skimage.transform.rotate函数比 PIL 的 Image.rotate 慢显着。 作为一个粗略的比较,使用 skim
前言 .我知道过去曾多次问过这个问题,但没有一个解决方案实际上对我有用。自从提出类似问题(根据耗时过滤的 Google 搜索)以来,也已经有好几年了,因此大多数较旧的答案都已过时。如果有任何方法可以让
我试图将元素从其起始旋转点旋转 360 度,而不是从 0deg。例如,如果起点是 90deg,它会从 90deg 旋转到 90deg(整圈)。 我的目标是使用简单的@keyframes 动画来旋转元素
我是一名优秀的程序员,十分优秀!