Я работаю над приложением для iOS и пытаюсь повернуть UIImageView с изображением стрелки. У меня есть свое местоположение в комнате как CGPoint, и я хочу показать направление, в котором вам нужно двигаться, чтобы добраться до другого CGPoint. Как создать угол между двумя точками и убедиться, что стрелка указывает правильное направление, а также как лучше всего повернуть UIImageView?
- (CGFloat) pointPairToBearingDegrees:(CGPoint)startingPoint secondPoint:(CGPoint) endingPoint
{
CGPoint originPoint = CGPointMake(endingPoint.x - startingPoint.x, endingPoint.y - startingPoint.y); // get origin point to origin by subtracting end from start
float bearingRadians = atan2f(originPoint.y, originPoint.x); // get bearing in radians
float bearingDegrees = bearingRadians * (180.0 / M_PI); // convert to degrees
bearingDegrees = (bearingDegrees > 0.0 ? bearingDegrees : (360.0 + bearingDegrees)); // correct discontinuity
return bearingDegrees;
}
CGAffineTransform transform = CGAffineTransformMakeRotation([self pointPairToBearingDegrees:yourLocation secondPoint:CGPointMake(0, 0)]);
self.arrow.transform = transform;
Проблема в том, что это просто заставляет стрелку дико прыгать вместо того, чтобы указывать на начало координат (0,0) из моей позиции (yourLocation.x, yourLocation.y).