1

私は3つの角度abcを持っています

a = 315 b = 20 c = 45

わかりました。bがaとcの間にある場合、3つすべてを与えることを知りたいです。

私はこれを足し算と引き算をする長い道のりを持っていますが、それはうまくいくようです。もっと小さく、もっと効率的にしたいのですが。

ありがとう

編集

これが私が言おうとしている写真です。

ここに画像の説明を入力してください

角度L(現在は0)があります。45(または任意の角度)を加算し、45(または任意の角度)を減算して、aとb(私のビュー角度)を取得します。

ここで、緑色の点がaとbの間にあるかどうかを知る必要があります

(g> a || g> 0)&&(g <b)

したがって、この写真では、一番上の緑色の点だけが真になります。

自分のことをはっきりさせていないと申し訳ありませんが、私の母国語は英語ではありません

4

4 に答える 4

3

同様の問題がありました。わかった。すべての計算は度単位です。GPSの位置が長方形の内側にあるIDを計算する必要がありました。

または、角度が angleと anglexの間にあるかどうかを確認する必要がありました。check+rcheck-r

check-r<x<check+r.

必要に応じて、との中間のa<x<b角度を見つけてから、またはからの距離 ( ) を求めます。checkabrcheckab

メソッド normalize は、角度を -infinity...infinity から -180...180 に変更します。メソッド check は、引数 x: 角度 check-r と check+r の間にあるかどうかを確認する必要がある角度をとります。 check: チェックする角度。 r: 角度チェックの周囲の半径。

private static double normalize(double x) {
        x = x % 360;
        if (x>=180) {
            return x-360;
        }
        if (x<-180) {
            return x+360;
        }
        return x;
}
public static boolean check(double x, double check, double r) {
        x = x - check;
        x = normalize(x);
        return x<r && x>-r;
}
于 2013-02-25T15:39:20.137 に答える
-1

を仮定するとa > c、実際には次を使用します。

( b < a ) && ( b > c )

これは、値が下限と上限の間にあるかどうかを確認することと同じです。405円を一周するとき、 の角度は の角度と同じであるという事実を考慮に入れたい場合を除き、それらが角度であることに違いはありません45。その場合、 とa % 360の間の角度を取得するために0使用できます360

于 2012-04-19T21:24:38.790 に答える