2017-10-09 2 views
0

私は、中心から離れていくほど、要素のサイズに合わせて調整する必要があるUIを作成しています。対数要件に基づいてサイジング式を作成する方法

特に、他の要素は中心から離れている必要があります。 CSS transform: scale(x)でこれを行います。

距離単位のような来る:これはちょうどある

1 = 0.85 
2 = 0.65 
3 = 0.4 
4 = 0.25 

0 (at the centre, no adjust needed) 
1 
2 
3 
4 
... and so on 

私はscale(x)を使用していますのでれるように、私は、0.8, 0.65, 0.4, 0.25、などのような値に1, 2, 3, 4..を変換する必要があります近似値では、出力数は正確ではなく、単なる素敵な曲線です。

どのようにJavaScriptでこれを行うことができますか?私はそれが簡単な数学的な質問であることを知っていますが、私はそれの周りに私の頭を包むことはできません。

+0

'1 - リニアまたは' 1 * 0.5 ** i' –

+0

@Jonaswのインデックス/ length' "だけの素敵な曲線" ...リニア –

+1

を探していませんが厳しいことはありません、線状であることができ"素敵なカーブ"あまりにも彼らの感情を傷つけない!ちなみに、あなたが言うことは、「さらなる要素は中心から来て、もっと小さく...」は直線関係に収まります。中心からの最大位置の最小縮小率など、より正確なルールがあれば、式を見つける方が簡単かもしれません。 – Kaddath

答えて

0

なぜMath.exp(-x)を使用しないでください。それはトリックを行います

0

あなたは任意の数学的関数を選ぶことができますし、右の境界を得るために少し実験。

たとえば、cos関数を使用します。 cos(0)= 1; cos(pi/2)= 0;この場合の は、長さとインデックスをpi/2に補間することでそのトリックを行います。

var calcScale = (index, length) => { 
    let x = ((Math.PI/2) * index)/length; 
    return Math.cos(x); 
}; 
関連する問題