Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.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 SceneKit轨道变换_Ios_Geometry_Swift_Geometric Arc_Scenekit - Fatal编程技术网

Ios SceneKit轨道变换

Ios SceneKit轨道变换,ios,geometry,swift,geometric-arc,scenekit,Ios,Geometry,Swift,Geometric Arc,Scenekit,因此,从SceneKit开始,到目前为止一切都进展顺利,直到我偶然发现了转换,我认为这就像层上的CA3d*转换 然而,就Z轴的工作方式而言,我似乎完全错了,变换的工作方式也完全不同 例如,我试图完成3d轨道式运动,类似于旋转木马的外观。这段CA3D代码出色地实现了这一点: var trans = CATransform3DIdentity trans = CATransform3DRotate(trans, deg * (Float(M_PI)/180), 1, 1, 0) trans = CA

因此,从SceneKit开始,到目前为止一切都进展顺利,直到我偶然发现了转换,我认为这就像层上的CA3d*转换

然而,就Z轴的工作方式而言,我似乎完全错了,变换的工作方式也完全不同

例如,我试图完成3d轨道式运动,类似于旋转木马的外观。这段CA3D代码出色地实现了这一点:

var trans = CATransform3DIdentity
trans = CATransform3DRotate(trans, deg * (Float(M_PI)/180), 1, 1, 0)
trans = CATransform3DTranslate(trans, 0, 0, 100)
layer.transform = trans
如果应用于具有不同“deg”值的多个对象,则可以获得漂亮的圆形三维动态观察

与SceneKit相同,会产生不同的结果:

var trans = SCNMatrix4Identity
trans = SCNMatrix4Rotate(trans,Float(angleTemp*(M_PI/180)), 1, 1, 0)
trans = SCNMatrix4Translate(trans, 0, 0, 100)
node.transform = transform
实际情况是,旋转后,Z值轴会发生变化,并根据CAT3D+层中应用的旋转进行平移,但是在SceneKit上,Z轴始终保持不变,因此平移只会将它们全部移动到一起,因此您只需获得挤压的外观

所以我知道这在真正的3d空间中是可行的,但现在看来我不得不用球面和椭圆数学来做同样的事情

所以任何人都可以给我一些建议如何做我想做的事?我现在正在尝试球形数学和使用SCNMatrix4Translate,但我还没有完全掌握数学知识

我想我需要的是计算椭圆xyz的公式,我想要的是非常类似的东西:

使用上面的CAT3D代码段可以在层上实现这种环绕


长话短说,我需要得到一个如上图所示的轨道布局,并需要一些SceneKit和/或几何数学方面的帮助。所有对象都应该围绕一个中心原点旋转,就像轨道一样

很难说你在问什么,但也许两个代码片段的结果之间的部分差异在于它们没有使用相同的旋转轴?CA版本正在围绕
(1,1,0)
旋转,而SCN版本正在围绕
(0,1,0)
旋转。我已经对其进行了修改以更正它,我之前做过一些试验,但我使用了相同的旋转。这里的区别似乎是Z平移的工作方式,在CA3D中,Z在上一次旋转的基础上移动。