2017-08-28 9 views
0

私は今日も同様の質問をしていますが、私は数学を吸っているだけです。数学:数値を別の数値にスケールする式

私は、幅/高さで画面比率を計算しています。その結果の数値を新しいスケールに変換する関数が必要です。

function convertNum(ratio) { 
    return //formula here 
} 

例:

Given a resolution of 3000x1000 = ratio of 3 (i.e. 3000/1000). 
I want it converted to 133.3 via the function, e.g. convertNum(3) spits out 133.33 

2500x1000 = 2.5 (desired result: 100) 
2000x1000 = 2 (desired result: 66.6) 
1500x1000 = 1.5 (desired result: 33.3) 
1000x1000 = 1 (desired result: 0) 

これは、1.0以上のすべての画面比率のためにこの方法をスケーリング維持する必要があります。

+0

「私はそれが133.3に変換したい」:

(ratio - 1) * 0.666 

ていますが、にすることを変更することで、より精度を得ることができます? – zerkms

+0

@ダンこのテクニックのバリエーションです:http://andyshora.com/css-image-container-padding-hack.html 私は様々な解像度で適切なパディングを行います。比は所望の結果と直線的に比例するようである。したがって、0.5倍のバンプごとに33.3%のパディングが追加されます。 – daveycroqet

+1

@daveycroqetだから((比率-1)/ 0.5)* 0.333'? – Carcigenicate

答えて

1

比率で0.5ごとに33.3%を追加する必要があります。

「パディング部分が」あなたが追加する必要がどのように多くの最初の図アウト:

// Subtracting 1 since 1 should result in a 0 
(ratio - 1)/0.5 

そして、パディング量によってパディングピースの数を掛け:

((ratio - 1)/0.5) * 0.333 

しかし、0.5で割るです2を掛けるのと同じことですので、それをさらに減らすことができます:

(ratio - 1) * 2 * 0.333 

しかし、それは明らかに同じです:どこ `から来133.3`なかった---

(ratio - 1) * (2/3) 
+0

これは非常に徹底的な内訳であり、私はそれを非常に高く評価しました。私はなぜあなたがそれをとてもシンプルに見せてくれたので、私の脳がこの数学を解読できなかったのか分かりません! – daveycroqet

+0

@daveycroqet書くコードの大部分は小さな数式を計算しています。あなたがそれを練習すれば、時間の経過とともにより良くなるでしょう。私は物事を引き出すのが好きです。視覚的な問題ではないにもかかわらず、*何か*目に見えるものを見るだけで役立ちます。あなたが書いている間に折り畳まれたグラフ紙とあなたの横のペンを持っていれば、それを奨励することができます。あなたが以前にそれを学んだとしても、基本代数を見直すことは本当に役に立ちます。 – Carcigenicate

関連する問題