0

私はd3jsを使用しているプロジェクトを持っています.私は線をプロットする必要があります.しかし、ねじれは線の色が配列値ごとに異なることです(線の20pxごとに次の配列の1つの要素が保持されます). 、色の濃さの問題に直面しています。ループについて考えましたが、正確な結果が得られません。ある色から別の色に切り替えることができないと思います。

(例: 薄暗い赤から→明るい赤→少し濃い赤→濃い赤)

10,000 個を超える値を持つ json があります。目的を理解するために配列を単純化しました。

var array_1=[0.0,0.1,0.3,0.5,0.7,0.9]

var array_2=[0.02,0.04,0.06,0.08,0.09]

var array_3=[0.001,0.002,0.004,0.007,0.008]

MyQuestion:任意の色(赤、青、緑、黄色など)について、これらの配列値に従って、数値が大きくなり、色が強くなるようにプロットできるはずです。

任意の色の RGB 値を数値の配列値で操作できるアルゴリズムを作成することは可能ですか?可能であれば、サンプルを提供していただけると大変助かります。

4

1 に答える 1

1

YUV の Y は発光であるため、YCbCr (YUV) から RGB に変換するだけで、色の強度を変更できます。

式はウィキペディアのこちらにあります: http://en.wikipedia.org/wiki/YCbCr

JavaScript で実装された例もここにあります: http://www.mikekohn.net/file_formats/yuv_rgb_converter.php

たとえば、Micael Kohn のページでは、RGB で色を設定して、それを YUV に変換することができます。その後、Y 値を増減して RGB に変換します。強度を変えるようなものであることに気付くでしょう。

編集:

どうぞ、例を書いてください。divをクリックするだけです

function yuv2rgb(Y,U,V){
    R = Y + 1.4075 * (V - 128)
    G = Y - 0.3455 * (U - 128) - (0.7169 * (V - 128))
    B = Y + 1.7790 * (U - 128)
    return { r:Math.floor(R) , g:Math.floor(G) , b:Math.floor(B)}
}

function rgb2yuv(R,G,B){
    Y = R *  0.299000 + G *  0.587000 + B *  0.114000
    U = R * -0.168736 + G * -0.331264 + B *  0.500000 + 128
    V = R *  0.500000 + G * -0.418688 + B * -.081312 + 128
    return { y:Math.floor(Y) , u:Math.floor(U) , v:Math.floor(V)}
}

http://jsfiddle.net/b3FCK/

于 2013-06-24T16:17:54.607 に答える