Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios ARKit变换矩阵中的值代表什么?_Ios_Iphone_Arkit - Fatal编程技术网

Ios ARKit变换矩阵中的值代表什么?

Ios ARKit变换矩阵中的值代表什么?,ios,iphone,arkit,Ios,Iphone,Arkit,现在,我正试图理解ARKit变换矩阵中的值,以便量化SCNNode的移动。从上一篇关于堆栈溢出的文章中,我了解到矩阵包含有关节点当前平移、缩放、旋转和位置的信息 我不理解的是,哪些价值观与这四件事具体相关。例如,我计算出第三列的第一个元素表示屏幕上的X(水平)移动,第三列的第二个值表示Y(垂直)移动。但除此之外,我不确定矩阵中其余的值是什么意思 谢谢你的帮助 在变换矩阵中,平移信息位于最后一列。 给定一个转换矩阵,您可以从最后一列中提取转换,如下所示: let translation = SCN

现在,我正试图理解ARKit变换矩阵中的值,以便量化SCNNode的移动。从上一篇关于堆栈溢出的文章中,我了解到矩阵包含有关节点当前平移、缩放、旋转和位置的信息

我不理解的是,哪些价值观与这四件事具体相关。例如,我计算出第三列的第一个元素表示屏幕上的X(水平)移动,第三列的第二个值表示Y(垂直)移动。但除此之外,我不确定矩阵中其余的值是什么意思


谢谢你的帮助

在变换矩阵中,平移信息位于最后一列。 给定一个转换矩阵,您可以从最后一列中提取转换,如下所示:

let translation = SCNVector3(transform.columns.3.x, transform.columns.3.y, transform.columns.3.z)
旋转和缩放使用前三列,更加复杂。 Scale是前三列向量的长度,要提取旋转,需要将前三列向量除以刚才提到的比例因子。
为了更好地理解比例和旋转以及如何提取它们,您可以参考。

Mohammadf的回答为我澄清了最好的问题。但是,ARKit的矩阵是按行大顺序排列的,因此,如果您将矩阵从他提供的信息中转置,那么它将应用于ARKit。

感谢您提供的信息。我现在意识到这一点后,我看了一些旧的图形笔记。然而,对于ARKit,变换矩阵是按行大顺序排列的。所以,如果你要转置你在帖子中告诉我的所有信息,那么它将适用于ARKit变换矩阵。@NFarrell很好。这个链接对我很有用,当然也很有帮助。我试图量化我的SCNNode的旋转,因为它通过使用变换矩阵移动,但结果表明,SCNNode有一个eulerAngle属性,可以给出每个轴的旋转角度,所以我不必做任何数学计算。简单多了,省去了很多麻烦