Adobe Flash非公式テクニカルノート 角度の値を換算して一定範囲に収める
0から始まる度数の角度は、360度で1周します。したがって、360を超える角度やマイナスの角度は、0から360の範囲の値に換算できます。本稿では、この換算の仕方についてご説明します。 まず、正の値にかぎれば、0から360の値に換算するのは簡単です。剰余演算子%を使えば、指定した値で割った余りが求まりますので、360の剰余をとればよいでしょう。
マイナスの値の剰余は、その絶対値の剰余にマイナスをつけた(-1を掛合わせた)値になります。ですから、角度がマイナスであるとわかっていれば、剰余に360を足せば導けます。
すると、剰余をとった後、その値がマイナスだったら360を加えることにすれば、すべての実数値に対応できます。その処理を関数として定義したのが、以下のスクリプト001です。テスト結果は、つぎのようになります。 trace(xGetDegrees(90)); // 出力: 90スクリプト001■すべての実数値を0から360までの範囲の角度に換算する関数
もっとも、値がマイナスかどうかに関わらず360を加えても、もう1度剰余をとれば範囲内の値に納まります(スクリプト002)。 スクリプト002■すべての実数値を0から360までの範囲の角度に換算する関数2
ActionScriptでは、角度を±180の範囲で扱うことも少なくありません。その場合には上記スクリプト1または2の処理で、予め角度の値に180を加え、求めた値から改めて180を引けばよいでしょう。 スクリプト003■すべての実数値を-180から180までの範囲の角度に換算する関数
作成者: 野中文雄 Copyright © 2001-2009 Fumio Nonaka. All rights reserved. |
|||||||||||