如何从objective-c中的simd_float4获取值
Posted
技术标签:
【中文标题】如何从objective-c中的simd_float4获取值【英文标题】:How to get values from simd_float4 in objective-c 【发布时间】:2018-12-04 00:16:37 【问题描述】:我从 ARKit 获得了一个 simd_float4*4 矩阵。我想检查矩阵的值,但发现自己不知道如何在 Objective-C 中做到这一点。在 Swift 中,这可以写成 matrix.columns.3 来获取一个值向量。但我不知道如何在 Objective-C 中做到这一点。有人可以指点我一个方向吗?谢谢!
【问题讨论】:
使用来自苹果开发者的矩阵,developer.apple.com/documentation/accelerate/simd/… 【参考方案1】:simd_float4x4 是一个结构体(类似 4 simd_float4),你可以使用
simd_float4x4.columns[index]
访问矩阵中的列。
/*! @abstract A matrix with 4 rows and 4 columns.*/
struct simd_float4x4
public var columns: (simd_float4, simd_float4, simd_float4, simd_float4)
public init()
public init(columns: (simd_float4, simd_float4, simd_float4, simd_float4))
苹果文档链接:https://developer.apple.com/documentation/simd/simd_float4x4?language=objc
希望有帮助!
【讨论】:
【参考方案2】:这是一个例子——来自这个项目,是 Obj-C ARKit 冒险的一个很好的参考——https://github.com/markdaws/arkit-by-example/blob/part3/arkit-by-example/ViewController.m
- (void)insertGeometry:(ARHitTestResult *)hitResult
// Right now we just insert a simple cube, later we will improve these to be more
// interesting and have better texture and shading
float dimension = 0.1;
SCNBox *cube = [SCNBox boxWithWidth:dimension height:dimension length:dimension chamferRadius:0];
SCNNode *node = [SCNNode nodeWithGeometry:cube];
// The physicsBody tells SceneKit this geometry should be manipulated by the physics engine
node.physicsBody = [SCNPhysicsBody bodyWithType:SCNPhysicsBodyTypeDynamic shape:nil];
node.physicsBody.mass = 2.0;
node.physicsBody.categoryBitMask = CollisionCategoryCube;
// We insert the geometry slightly above the point the user tapped, so that it drops onto the plane
// using the physics engine
float insertionYOffset = 0.5;
node.position = SCNVector3Make(
hitResult.worldTransform.columns[3].x,
hitResult.worldTransform.columns[3].y + insertionYOffset,
hitResult.worldTransform.columns[3].z
);
[self.sceneView.scene.rootNode addChildNode:node];
[self.boxes addObject:node];
【讨论】:
以上是关于如何从objective-c中的simd_float4获取值的主要内容,如果未能解决你的问题,请参考以下文章
如何从Objective-C中的异步内部函数内部返回外部函数
如何从Objective-C中的异步内部函数内部返回外部函数
Objective-C/iOS:如何从 CoreData 中的属性中删除“值”?
如何从objective-c中的simd_float4获取值