2017-07-12 100 views
0

ゲージを作成しています。今、このすべてのルックスと作品円弧上の点の位置を計算する

percToDeg: function (perc) { 
     return perc * 360; 
     }, 
percToRad: function (perc) { 
     return this.degToRad(this.percToDeg(perc)); 
     }, 

degToRad: function (deg) { 
     return deg * Math.PI/180; 
     }, 

:オリジナルチャートはこれらの3つの機能を持っていた角度に比率を変換するに Original version

:私はイメージから見る、半円た例から離陸しました偉大な、しかし私は、アークが両方向で別の45度を拡張するようにゲージを調整したい、これを参照してください。

Desired gauge

今しかし

percToDegのfuそれ以上のことはできません。あなたは、特定のパーセンテージで円弧上のポイント(私の場合は針の先端)を正確に配置する機能を理解するのを助けてください - 0%は225度、50%90度、100%-45度でなければなりませんか?

おかげ

+0

ここで質問しようとしましたか? https://math.stackexchange.com/ –

答えて

2

あなたの開始範囲は[0、100]であることと、あなたの目的地の範囲があることで、linear interpolationと呼ばれるものを使用したい[225、-45]。

範囲の[a、b]は、Yの範囲のxについて、このための一般式、[C、D]

あなたのケースで
y = c + (x - a) * (d - c)/(b - a) 

例えば
a = 0 
b = 100 
c = 225 
d = -45 

、範囲内のどこに50のマップがあるかを調べたい場合:

y = 225 + (50 - 0) * (-45 - 225)/(100 - 0) 
y = 225 + 50 * -270/100 
y = 225 - 135 
y = 90 
+0

Funnily、私はコード内の別の場所でlerpを使用しています。私はちょうどこれが他の、ゴニオメトリックな解決策を持っていると思った:) –

関連する問題