October 29, 2010

Blend Color










色を混ぜて遊ぶのはとても楽しいのですが、変化率に一次関数しか使ったことないな、とはずっと思っていたのです。

Line1 は1次関数。Line2 は3次関数。Line3 は10次関数での変化率になっています。次数を上げるほど色が変わり始めるのが遅くなり、変わり方が急激になります。ちょこっと計算してはいますが、最後はちゃんと RGB に入るように Round() で integer にしてあります。

仕事で役に立つのでしょうか... 知りません知りません。




'blend color with polynomial function
'---------------------------------------
Dim aR, aG, aB 'factor for polynomial function
Dim dbl_xR_step, dbl_xG_step, dbl_xB_step
Dim t 'function
t = 3

dbl_xR_step = (gR-sR)/((UBound(arr_str_tangent)))
dbl_xG_step = (gG-sG)/((UBound(arr_str_tangent)))
dbl_xB_step = (gB-sB)/((UBound(arr_str_tangent)))

aR = (gR-sR)/ (UBound(arr_str_tangent))^t
aG = (gG-sG)/ (UBound(arr_str_tangent))^t
aB = (gB-sB)/ (UBound(arr_str_tangent))^t

'with quadratic
R = sR + Round(aR * k^t)
G = sG + Round(aG * k^t)
B = sB + Round(aB * k^t)

Call Rhino.ObjectColor( str_tangent, RGB(R,G,B) )
Call Rhino.EnableRedraw( True )
'---------------------------------------

No comments: