我正在尝试在两个向量之间放置一个平面。但是,平面的方向很重要,因为我将箭头从第一个节点“指向”第二个节点。这是我尝试过的:
private func placeArrows(source: SCNVector3, destination: SCNVector3) {
let height = source.distance(vector: destination)
let plane = SCNPlane(width: CGFloat(0.4), height: CGFloat(height))
plane.firstMaterial?.diffuse.contents = UIImage(named: "Arrow")
plane.firstMaterial?.isDoubleSided = true
plane.firstMaterial?.diffuse.contentsTransform = SCNMatrix4MakeScale(1,-height,1)
plane.firstMaterial?.diffuse.wrapT = SCNWrapMode.repeat
plane.firstMaterial?.diffuse.wrapS = SCNWrapMode.repeat
let node = SCNNode(geometry: plane)
node.position = SCNVector3((source.x + destination.x) / 2, floor_pos_y, (source.z + destination.z) / 2)
let dirVector = SCNVector3Make(destination.x - source.x, destination.y - source.y, destination.z - source.z)
let yAngle = atan(dirVector.x / dirVector.z)
node.eulerAngles.x = -.pi / 2
node.eulerAngles.y = yAngle
route_nodes.append(node)
ARView.scene.rootNode.addChildNode(node)
}
这些平面最终指向两个方向,即有些指向第二节点,有些指向第一节点。而且我还无法弄清楚这一点。任何帮助将不胜感激。谢谢!
编辑:
Here is a screenshot of the result
如您所见,一个箭头指向左侧,另一个箭头指向右侧。期望的结果是两个箭头都指向相同的方向,即向左
答案 0 :(得分:0)
尝试从不同角度解决此问题后,我终于找到了问题。
1px solid transparent;
此行实际上应替换为以下行:
let yAngle = atan(dirVector.x / dirVector.z)