私はスプライトキットでいくつかのコードを実行しており、開始位置に基づいてスプライトの位置を計算し、それを所定の方向と距離に移動したいと考えています。たとえば、0を意味する直線を上にして度を使用していると仮定して、スプライトを現在の位置から45度(上と下)の10ポイントの方向に移動したいとします。新しい点x y方向の距離を計算する
三角法は私の強みではなく、私はそれをどのように適用するかを考え出すのに苦労してきました。 45度方向への移動はかなりストレートなようですが、110(右下)や225(下り左)などの計算方法はわかりません。
public func offset(byDistance distance:CGFloat, inDirection degrees:CGFloat) {
let vertical = sin(degrees) * distance
let horizontal = sqrt(pow(distance, 2.0) + pow(vertical, 2.0))
self.position = self.position.applying(CGAffineTransform(translationX:horizontal, y:vertical))
}
しかし、私はそれが結果として働いているとは思わないが、このようになります:
私の最初の試みは、このようになります
Direction 45, distance 88.26 -> New location {75.10, 115.88}
Direction 135, distance 88.26 -> New location {7.79, 88.60}
Direction 225, distance 88.26 -> New location {-82.09, 120.53}
Direction 315, distance 88.26 -> New location {65.76, 110.06}
誰も私のようにいくつかの手がかりを与えることができる場所I間違った?ここで
ありがとうございました。 Trigはいつも私は学校で苦労していました。なぜなら、私はいつもそれがどのように働いているのか理解しようとすると問題があったからです。私は今30年以上コーディングしてきましたが、それでも私はそれを理解しようとしています。私はまだ数学上のインターネットサイトを読んでいるので、私は忘れてしまいます:-) – drekka
私が逃した大きなものは、関数がラジアンで動作することでした。私が見ていたすべての数学のサイトは度で働いていました。私はOS X計算機を使用した場合、OS XのSpotlite検索で 'sin(45)'やそれに類するものを入力した場合と同じように、度数を使用することに注意しました。 – drekka
iOSとMac OSのtrig関数は常にラジアンを使用します。 trig関数を記述するほとんどのサイトでは、より直感的なので、度数を使用します。円の円周が2π•半径であることを理解している場合、半径が1単位であると仮定すると、円の外側に沿って歩いているアリを考えることができます。それがΠ/ 2ユニットを歩くと、円の周りに1/4の距離移動します。 Πユニットを歩くと、円の途中にあります。それが2Πユニットを歩いたとき、完全な円を完成させるでしょう。それがラジアンの仕組みです。 –