1

カラー ピッカーがあり、返される色相の値は 0 から 1 の間の数値です。色相のバリエーションを作成するには、20% の場合は .2、80% の場合は .8 などを追加します。

数値が 1 を超えたときに 1 を減算するように、数値を円の周りに維持するにはどうすればよいですか。この数値をこの数値にする方法は次のとおりです:

「cents」javascript (http://www.irt.org/script/6.htm) を使用してみましたが、これは 1 より大きい値を返しました: http://jsfiddle.net/Se9Dn/

1.2 を .2 にしたいので、Math.min を使用できません (色が 1 に達したときにすべての色が赤にならないようにするため)。

ありがとう。:)


編集: 丸めを追加して、ソリューションを確認しています。Farbtastic から返された HSL カラー (色相、彩度、明度) があり、色相を数学的に調整したいとします。

hslcolor  = (.73802938, .59832908, .948987);
colorStep = .2;
newcolor[0] = Math.round ( ((1*colorStep +hslcolor[0])%1)*10000 ) /10000;

これらの括弧は非常に扱いにくいので注意してください。

4

2 に答える 2

5

モジュロ演算子%( MDN docu ) を使用できます。

たとえば、0.8次のように追加します。

result = (result + 0.8) % 1;

編集

JavaScript のモジュロ演算子は、実際には剰余演算子に近いものです。

ECMAScript仕様セクション5.2を引用:

「x modulo y」(y は有限かつ非ゼロでなければならない) という表記は、abs(k) < abs(y) および x−k = q × y となるような y (またはゼロ) と同じ符号の値 k を計算します。整数 q。

于 2012-08-10T12:00:05.467 に答える
1

整数を減算するだけです:

function cent(amount) { return (+amount) - Math.floor(+amount); }

数値が負になる可能性がある場合、それは必要なセマンティクスに依存します。私はそれを練習として残します:-)

于 2012-08-10T12:01:47.297 に答える