"ARKit в приложении Афиша Рестораны”, Меджлумян Самвел, Антышев Дмитрий, Rambler&Co
- 20. КОД АЗИМУТА
20
func azimuthBetween(_ firstLocation: CLLocation, secondLocation: CLLocation) -> CGFloat {
var azimuth: CGFloat = 0.0
// переводим координаты в радианы
let firstLatitude: CGFloat = GLKMathDegreesToRadians(firstLocation.coordinate.latitude)
let firstLongitude: CGFloat = GLKMathDegreesToRadians(firstLocation.coordinate.longitude)
let secondLatitude: CGFloat = GLKMathDegreesToRadians(secondLocation.coordinate.latitude)
let secondLongitude: CGFloat = GLKMathDegreesToRadians(secondLocation.coordinate.longitude)
// считаем корректный радиан
let resultLongitude: CGFloat = secondLongitude - firstLongitude
let y: CGFloat = sin(resultLongitude) * cos(secondLatitude)
let x: CGFloat = cos(firstLatitude) * sin(secondLatitude) - sin(firstLatitude) * cos(secondLatitude) *
cos(resultLongitude)
let radiansBearing: CGFloat = atan2(y, x)
// переводим радиан в градусы
azimuth = GLKMathRadiansToDegrees(radiansBearing)
return azimuth
}
- 21. КОД АЗИМУТА
21
let firstLatitude: CGFloat =
GLKMathDegreesToRadians(firstLocation.coordinate.latitude)
let firstLongitude: CGFloat =
GLKMathDegreesToRadians(firstLocation.coordinate.longitude)
let secondLatitude: CGFloat =
GLKMathDegreesToRadians(secondLocation.coordinate.latitude)
let secondLongitude: CGFloat =
GLKMathDegreesToRadians(secondLocation.coordinate.longitude)
func azimuthBetween(_ firstLocation: CLLocation, secondLocation: CLLocation) -> CGFloat {
var azimuth: CGFloat = 0.0
// переводим координаты в радианы
let firstLatitude: CGFloat = GLKMathDegreesToRadians(firstLocation.coordinate.latitude)
let firstLongitude: CGFloat = GLKMathDegreesToRadians(firstLocation.coordinate.longitude)
let secondLatitude: CGFloat = GLKMathDegreesToRadians(secondLocation.coordinate.latitude)
let secondLongitude: CGFloat = GLKMathDegreesToRadians(secondLocation.coordinate.longitude)
// считаем корректный радиан
let resultLongitude: CGFloat = secondLongitude - firstLongitude
let y: CGFloat = sin(resultLongitude) * cos(secondLatitude)
let x: CGFloat = cos(firstLatitude) * sin(secondLatitude) - sin(firstLatitude) * cos(secondLatitude) *
cos(resultLongitude)
let radiansBearing: CGFloat = atan2(y, x)
// переводим радиан в градусы
azimuth = GLKMathRadiansToDegrees(radiansBearing)
return azimuth
}
- 22. КОД АЗИМУТА
22
let resultLongitude: CGFloat = secondLongitude -
firstLongitude
let y: CGFloat = sin(resultLongitude) * cos(secondLatitude)
let x: CGFloat = cos(firstLatitude) * sin(secondLatitude) -
sin(firstLatitude) * cos(secondLatitude) * cos(resultLongitude)
let radiansBearing: CGFloat = atan2(y, x)
func azimuthBetween(_ firstLocation: CLLocation, secondLocation: CLLocation) -> CGFloat {
var azimuth: CGFloat = 0.0
// переводим координаты в радианы
let firstLatitude: CGFloat = GLKMathDegreesToRadians(firstLocation.coordinate.latitude)
let firstLongitude: CGFloat = GLKMathDegreesToRadians(firstLocation.coordinate.longitude)
let secondLatitude: CGFloat = GLKMathDegreesToRadians(secondLocation.coordinate.latitude)
let secondLongitude: CGFloat = GLKMathDegreesToRadians(secondLocation.coordinate.longitude)
// считаем корректный радиан
let resultLongitude: CGFloat = secondLongitude - firstLongitude
let y: CGFloat = sin(resultLongitude) * cos(secondLatitude)
let x: CGFloat = cos(firstLatitude) * sin(secondLatitude) - sin(firstLatitude) * cos(secondLatitude) *
cos(resultLongitude)
let radiansBearing: CGFloat = atan2(y, x)
// переводим радиан в градусы
azimuth = GLKMathRadiansToDegrees(radiansBearing)
return azimuth
}
- 23. 23
КОД АЗИМУТА
azimuth = GLKMathRadiansToDegrees(radiansBearing)
func azimuthBetween(_ firstLocation: CLLocation, secondLocation: CLLocation) -> CGFloat {
var azimuth: CGFloat = 0.0
// переводим координаты в радианы
let firstLatitude: CGFloat = GLKMathDegreesToRadians(firstLocation.coordinate.latitude)
let firstLongitude: CGFloat = GLKMathDegreesToRadians(firstLocation.coordinate.longitude)
let secondLatitude: CGFloat = GLKMathDegreesToRadians(secondLocation.coordinate.latitude)
let secondLongitude: CGFloat = GLKMathDegreesToRadians(secondLocation.coordinate.longitude)
// считаем корректный радиан
let resultLongitude: CGFloat = secondLongitude - firstLongitude
let y: CGFloat = sin(resultLongitude) * cos(secondLatitude)
let x: CGFloat = cos(firstLatitude) * sin(secondLatitude) - sin(firstLatitude) * cos(secondLatitude) *
cos(resultLongitude)
let radiansBearing: CGFloat = atan2(y, x)
// переводим радиан в градусы
azimuth = GLKMathRadiansToDegrees(radiansBearing)
return azimuth
}
- 28. ФОРМИРУЕМ NODE
28
func view(_ view: ARSKView, nodeFor anchor: ARAnchor) -> SKNode?
var configuration = ARWorldTrackingConfiguration()
configuration.worldAlignment = .gravityAndHeading
skView.session.run(with: configuration)
НАСТРОЙКА
ARSKViewDelegate