Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //屏幕上的点转化为场景中的点
- func convertToScenOf(point: CGPoint) -> SCNVector3{
- let Z_Far:CGFloat = 1 + CGFloat(randomFloat(min: 0.0, max: 1.0))
- var Screen_Aspect : CGFloat = UIScreen.main.bounds.size.width > 400 ? 0.3 : 0.0
- // 计算屏幕边缘的距离
- let Y = tan(Double(self.sceneView.pointOfView!.camera!.fieldOfView/180/2)*Double.pi) * Double(Z_Far-Screen_Aspect)
- let X = tan(Double(self.sceneView.pointOfView!.camera!.fieldOfView/2/180)*Double.pi) * Double(Z_Far-Screen_Aspect) * Double(self.sceneView.bounds.size.width/self.sceneView.bounds.size.height)
- let alphaX = 2 * CGFloat(X) / self.sceneView.bounds.size.width
- let alphaY = 2 * CGFloat(Y) / self.sceneView.bounds.size.height
- let x = -CGFloat(X) + point.x * alphaX
- let y = CGFloat(Y) - point.y * alphaY
- let target = SCNVector3Make(Float(x), Float(y), Float(-Z_Far))
- return self.sceneView.pointOfView!.convertPosition(target, to:self.sceneView.scene.rootNode)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement