2017-07-06 10 views
0

-infから+infまでの角度値が入力されているとします。値を特定の範囲にマップする

-180+180の間でのみマップしたいと思います。

どうすれば適切に達成できますか?それが正常に動作します

(i-180)%360-180 

が、それは+180私が+180になりたい-180にマップする - >+180

は、ここで私はこれまでに発見したものです。

技術的には私の目的と同じですので、それほど大したことではありませんが、審美的には良いでしょう。

私はPythonで作業していますが、ここでは問題ありません。

答えて

1

あなたはできるだけ多くの数学的な美学を重視していない場合、私は、これは

def f(i): 
    x = i % 360 
    if x > 180: 
     x -= 360 
    elif x == 180 and i < 0: 
     x = -x 
    return x 
+0

これは機能していますが、+180 - > + 180と-180 - > + 180を送信します。私は本当に欲しい:-180-> 180と+180 - > + 180。 –

+0

これは機能ではありませんか?スケールが-180から+180までの範囲で実行される場合は、361度になります。または私の数学はオフですか? – Kraay89

+1

私はそれが特徴だと思います。さて、私はその答えを編集しました。 180°→180°、-180°→-180°である。 – dbokers

1

仕事ができると思いますが、リストsampleList[]infの範囲-infの値があるとします。 sampleList []内の値を範囲-180180にマップする必要があります。 mappedList[]

の要素としてyを検討sampleList[]

の要素としてxを検討mappedList[]

としてマッピングされた要素の新しいリストに名前を付けsampleList[]の最小値としてsampleList[]の最大値と

minSLとしてmaxSLを検討することができ

したがって、

 y = ((x - minSL)(((180-(-180))/(maxSL - minSL))) + (-180) 
関連する問題