Advertisement
Guest User

Untitled

a guest
Jul 12th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.03 KB | None | 0 0
  1.     //屏幕上的点转化为场景中的点
  2.     func convertToScenOf(point: CGPoint) -> SCNVector3{
  3.         let Z_Far:CGFloat = 1 + CGFloat(randomFloat(min: 0.0, max: 1.0))
  4.         var Screen_Aspect : CGFloat = UIScreen.main.bounds.size.width > 400 ? 0.3 : 0.0
  5.         // 计算屏幕边缘的距离
  6.         let Y = tan(Double(self.sceneView.pointOfView!.camera!.fieldOfView/180/2)*Double.pi) * Double(Z_Far-Screen_Aspect)
  7.         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)
  8.         let alphaX = 2 *  CGFloat(X) / self.sceneView.bounds.size.width
  9.         let alphaY = 2 *  CGFloat(Y) / self.sceneView.bounds.size.height
  10.         let x = -CGFloat(X) + point.x * alphaX
  11.         let y = CGFloat(Y) - point.y * alphaY
  12.         let target = SCNVector3Make(Float(x), Float(y), Float(-Z_Far))
  13.         return self.sceneView.pointOfView!.convertPosition(target, to:self.sceneView.scene.rootNode)
  14.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement