2D変換マトリックスを使用して別のCGPointの中心を中心にCGPointを回転させる例を見つけようとしていますが、最近は何も見つかりませんでした。中心点を中心にCGPointを回転する
誰でもこれを達成できましたか? CGAffineTransformの使用は、このユースケースではポイントを必要とするためオプションではありません。予め
2D変換マトリックスを使用して別のCGPointの中心を中心にCGPointを回転させる例を見つけようとしていますが、最近は何も見つかりませんでした。中心点を中心にCGPointを回転する
誰でもこれを達成できましたか? CGAffineTransformの使用は、このユースケースではポイントを必要とするためオプションではありません。予め
で
おかげで任意の点の周りを回転する最も簡単な方法は、ゼロにその点を移動させる所望の角度だけ回転させ、バック原点に移動させることです。 CGAffineTransform
は非常によくCGPoint
で動作することができますCGAffineTransformを使用して
let transform = CGAffineTransform(translationX:-center.x y:-center.y)
.rotate(by:angle)
.translateBy(x:center.x, y:center.y)
let newPoint = point.applying(transform)
は本当に私のユースケースではオプションではありませんでしたが、私は正常にこの答えhttps://stackoverflow.com/a/35683523/3591202からメソッドを使用してCGPointsのシリーズを回転させることができました。以下は、CGPointを回転させるために使用した拡張機能です。
func rotate(around center: CGPoint, with degrees: CGFloat) -> CGPoint {
let dx = self.x - center.x
let dy = self.y - center.y
let radius = sqrt(dx * dx + dy * dy)
let azimuth = atan2(dy, dx) // in radians
let newAzimuth = azimuth + degrees * CGFloat(M_PI/180.0) // convert it to radians
let x = center.x + radius * cos(newAzimuth)
let y = center.y + radius * sin(newAzimuth)
return CGPoint(x: x, y: y)
}
この方法は実際には私の使用例では機能しませんでした。 ここからの方法は完全に機能しました! http://stackoverflow.com/a/1595337/3591202 – bevbomb
実際に動作していないものは何ですか?平方根と逆タンジェントを使用しているため、あなたの解は不要なことがあります。注:angleは度ではないラジアンです。 – clemens