私は iOS アプリに取り組んでおり、矢印のグラフィックを持つ UIImageView を回転させようとしています。私は自分の部屋の位置を CGPoint として持っており、別の CGPoint に到達するために向かわなければならない方向を示したいと考えています。2 点間の角度を生成し、矢印が正しい方向を向いていることを確認するにはどうすればよいですか?また、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;
問題は、自分の位置 (yourLocation.x,yourLocation.y) から原点 (0,0) を指すのではなく、矢印が激しくジャンプすることです。