加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – 从一个结构转换为另一个结构

发布时间:2020-12-14 05:21:56 所属栏目:百科 来源:网络整理
导读:我将一些Objective-C代码转换为 Swift代码,我有以下问题: 目标C代码是 SCNNode *textNode = [SCNNode nodeWithGeometry:text];textNode.transform = CATransform3DInvert(self.chartNode.worldTransform); 这是我尝试的转换代码: let textNode = SCNNode(g
我将一些Objective-C代码转换为 Swift代码,我有以下问题:

目标C代码是

SCNNode *textNode  = [SCNNode nodeWithGeometry:text];
textNode.transform = CATransform3DInvert(self.chartNode.worldTransform);

这是我尝试的转换代码:

let textNode = SCNNode(geometry: text)
 textNode.transform = CATransform3DInvert(self.chartNode.worldTransform)

但是,我收到一个错误:’SCNMatrix4不能转换为CATransform3D’

我认识到CATransform3DInvert采用CATransform3D类型的参数,而包含的参数类型为SCNMatrix4.

我尝试了以下的尝试:

textNode.transform = CATransform3DInvert(CATransform3D(self.chartNode.worldTransform))

但这不行.

然后我发现CATransform3D和SCNMatrix4都是结构体,我不确定如何从一个结构转换为另一个结构(或者即使可以在Swift中的结构之间转换)

也许还有一个更简单的方法?

任何帮助将不胜感激 – 谢谢.

好,

Airspeed Velocity提供的链接有一个很好的解释,很容易转换为Swift(实际上是相同的).

CATransform3D等是基于Mac OS X,不适用于iOS – 而是使用iOS SCNMatrix4等.
在链接的帖子 – 头文件中,您可以找到使用的类型为SceneKitTypes.h – 如果要在github上查找副本:https://github.com/andymatuschak/Khan-Academy-Offer-Acceptance-Toy/blob/master/§/SceneKitTypes.h

我使用SCNMatrix4Invert作为上面提到的rintaro,它的工作原理.

那么Swift代码现在是:

let textNode = SCNNode(geometry: text)
textNode.transform = SCNMatrix4Invert(self.chartNode.worldTransform)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读