问题描述
我正在尝试构建一个AR应用程序,该应用程序将根据对象的经度和纬度将其与ARSCNView场景一起放置。
我需要将纬度和经度值转换为3维空间中相对于手机纬度和经度的点。我已经尝试了大约2个小时,但是没有得到正确的结果。
使用CoreLocation,当AR会话启动时,我可以找到手机的经/纬度,并且知道我要放置的对象的位置(经\纬度)。我假设海拔高度是离地面1m的常数,并且我距离我的物体物理位置至少20m。
这是我的代码:
func latlongToSCNVector3(phone: CLLocation,object: CLLocationCoordinate2D) -> SCNVector3 {
let rad : Double = 6378.137 // Radius of the Earth (in kilometers)
let xPhone = rad * cos(phone.coordinate.latitude) * cos(phone.coordinate.longitude)
let yPhone = rad * cos(phone.coordinate.latitude) * sin(phone.coordinate.longitude)
let zPhone = rad * sin(phone.coordinate.latitude)
let xObject = rad * cos(object.latitude) * cos(object.longitude)
let yObject = rad * cos(object.latitude) * sin(object.longitude)
let zObject = rad * sin(object.latitude)
let vector : SCNVector3 = .init( (xObject - xPhone),(yObject - yPhone),(zObject - zPhone) )
return vector
}
我的问题是,我是否需要将经度/纬度转换为弧度,并且数学看起来正确吗?
谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)