对ACNCN的SCNVector3纬度/经度

问题描述

我正在尝试构建一个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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...