Если я правильно понимаю, переворачивание происходит на оси север-юг.Полезно иметь enum
для переворачивания:
enum Direction { //image flipping
case left, right
}
. Вы можете использовать это для отслеживания состояния переворачивания
var direction: Direction = .right // east
. Это курс Double
, который выполняетсяот 0 до 360 градусов.
var course = CLLocation.course
Буферная зона - все, что вам нравится
var buffer:Double = 5 // 5 degrees each side of north or south
Вы можете настроить переворачивание изображения на основе текущего состояния direction
.
func setImage(_ course: course) {
switch(direction){
case .right: // east
if(course < 360 - buffer || course > 180 + buffer){
direction = .left
// flip image to left
}
case .left: // west
if(course > buffer || course < 180 - buffer){
direction = .right
// flip image to right
}
}
}
Обратите внимание, что есть мертвая зона, созданная buffer
, например, на севере между 355 и 5 градусами, где direction
- это то, что было установлено последним.Это означает, что когда ваш курс перемещается с востока на запад, изображение переворачивается на запад, только когда вы пересекаете границу буфера.