美文网首页ARVR
SCNNode的方向和夹角

SCNNode的方向和夹角

作者: loongod | 来源:发表于2020-12-21 14:50 被阅读0次

在三维坐标系中,有些时候我们需要知道一个平面(Node)与世界坐标系中某个轴(x、y、z)的夹角。然后做一些额外操作。

因为没有直接的属性,只能间接求得。

SCNNode 有属性

  • simdOrientation : 节点的方向,表示为四元数。 可动画的。
  • simdWorldOrientation: 节点相对于场景的世界坐标空间的方向。

simdRotationsimdEulerAnglessimdOrientation属性都会影响节点simdTransform属性的旋转角度。 这些属性之一的任何更改都会反映在其他属性中。

如果你要设置此属性:

// 创建一个新的四元数,该四元数的动作是围绕指定轴的指定旋转。
node.simdOrientation = simd_quatf(angle: .pi / 2.0 , axis: [0, 1, 0])

上面代码是把node沿Y轴正方向顺时针旋转90°

rotate90.png
  • angle : 弧度
  • axis : SIM3<Float>[x, y, z] 分别代表x, y, z
  1. angle * x 表示沿X轴的正方向顺时针(结果为正时,负则逆时针),旋转的弧度
  2. angle * y 表示沿Y轴的正方向顺时针(结果为正时,负则逆时针),旋转的弧度
  3. angle * z 表示沿Z轴的正方向顺时针(结果为正时,负则逆时针),旋转的弧度

了解了orientation方向的设置后,如何计算一个Node相对于世界坐标系Y轴的夹角呢?

通过上面例子,可以看出,如果要计算与Y轴的夹角,那不管验Y轴是顺时针还是逆时针,不管旋转多少弧度,对计算与世界坐标系Y轴的夹角没有任何影响。

我们再看下在保持Z轴不变,沿X轴的旋转,比如下面沿X轴正方向旋转90°后,与世界坐标系Y轴的夹角就是90°

rotateX.png

同样的,X 轴不变,如果沿Z轴旋转角度后,与世界坐标系Y轴的夹角也是Z轴的旋转角度。

可知,要计算与 Y 轴的夹角,就是 XZ 的最大角。

x弧度 :simdWorldOrientation.axis.x * simdWorldOrientation.angle
z弧度 :simdWorldOrientation.axis.z * simdWorldOrientation.angle

需要度数:再乘以 180.0 / .pi

同理,如果需要计算旋转后与XZ的夹角,分别得到其他两轴的旋转弧度,计算即可。

相关文章

  • SCNNode的方向和夹角

    在三维坐标系中,有些时候我们需要知道一个平面(Node)与世界坐标系中某个轴(x、y、z)的夹角。然后做一些额外操...

  • SceneKit框架之SCNode

    SCNNode是什么 苹果文档原话:SCNNode是场景图的结构元素,表示3D坐标空间中的位置和变换,可以将几何图...

  • turf

    bearing 与正北方向夹角,顺时针方向the angle measured in degrees from t...

  • SCNNode

    场景图的结构元素,表示3D坐标空间中的位置和变换,您可以在其中附加几何图形,灯光,照相机或其他可显示内容。 局部坐...

  • 时针和分针的角度问题

    时针和分针的角度问题:三点多少分的时候,时针和分针方向正好相反? 方向相反意味着二者夹角为 180 度。 3点整的...

  • 六章 光照

    光源 我们可以使用光源方向L和表面法线n 之间的夹角的余弦值来得到。需要注意的是,这里默认方向矢量的模都为1 。图...

  • SceneKit 相关

    SceneKit SCNNode 结构图 通过两张图片,更好地了解SCNNode的结构 一个渲染循环 渲染循环内做...

  • S弯道

    1、车身正驶入弯道,挂一档前行。 2、当右侧导流线对准黄线时向右打一圈方向,如图所示车辆左侧这个夹角,通过夹角若不...

  • SCNNode类

    SCNNode 被称为节点,一个大型的游戏场景结构就是由无数个小的节点组成,它有自己的位置和自身坐标系统,我们可以...

  • SCNNode类

    SCNNode 被称为节点,一个大型的游戏场景结构就是由无数个小的节点组成,它有自己的位置和自身坐标系统,我们可以...

网友评论

    本文标题:SCNNode的方向和夹角

    本文链接:https://www.haomeiwen.com/subject/pddrnktx.html