Широта / долгота в SCNVector3 для ARSCNView
Я пытаюсь создать приложение AR, которое помещает объект в сцену ARSCNView на основе его долготы и широты.
Мне нужно преобразовать значения широты и долготы в точку в трехмерном пространстве относительно широты и долготы моего телефона. Я пробую это около 2 часов, но не получаю правильных результатов.
Используя CoreLocation, я могу найти широту / долготу телефона при запуске сеанса AR, и я знаю свое местоположение (широта \ долгота) объекта, который я хочу разместить. Я предполагаю, что высота постоянна в 1 м над землей и что я нахожусь в пределах не менее 20 м от физического местоположения моего объекта.
Вот мой код:
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
}
У меня вопрос: нужно ли преобразовывать градусы широты и долготы в радианы и правильно ли выглядят математические вычисления?
благодаря