顏色間的簡易插值

2021-04-07 03:11:28 字數 1815 閱讀 7723

顏色間的簡易插值

emilmatthew(

[email protected])1

前言:

在繪製山體圖形的時候,渲染階段需要對山體進行著色,通過在關鍵節點著色,其餘結點與關鍵節點間進行線性插值的方法,可以使得著色渲染達到比較良好的視覺效果。同樣的思路還可以用在漸變色的製作上。 2

顏色間插值的實現思路

:

假設需要在p1和

p2兩個結點間進行顏色插值,設:

p1座標

(x1,y1),

其rgb

值(r1,g1,b1) p2

座標(x2,y2).

其rgb

值(r2,g2,b2)

則可計算出關於每個最小繪製步長中

r,g,b

各畫素的改變值,

如stepr=(r2-r1)/|p2p1|

在著色的主過程中,則只要根據當前的畫素值,渲染相應的點、線、面即可,下一步迭代中,則各畫素值依次增加相應的增量值即可,直至迭代結束。

3as2

實現的**

:

_root.createemptymovieclip("gbrush",_root.getnexthighestdepth());

_root.gbrush.linestyle(1,0x000000,100);

var rgbnum1:number=0;

var rgbnum2:number=0;

p1x=50;p1y=50;

p2x=300;p2y=50;

bandheight=30;

var steppixel:number=3;

pn_x=0;pn_y=0;

pn_r=0;pn_g=0;pn_b=0;

//get rgb

rgbnum1=0xffcc00;

rgbnum2=0x009900;

stepr=0;

r2=0;r1=0;

stepg=0;

g1=0;g2=0;

stepb=0;

b1=0;b2=0;

len_p2p1=math.sqrt((p2x-p1x)*(p2x-p1x)+(p2y-p1y)*(p2y-p1y));

//parse the rgb num.

r1=(rgbnum1>>16)&0xff;

g1=(rgbnum1>>8)&0xff;

b1=(rgbnum1>>0)&0xff;

r2=(rgbnum2>>16)&0xff;

g2=(rgbnum2>>8)&0xff;

b2=(rgbnum2>>0)&0xff;

//cal step val.

var stepr:number=(r2-r1)/len_p2p1;

var stepg:number=(g2-g1)/len_p2p1;

var stepb:number=(b2-b1)/len_p2p1;

pn_x=p1x;

pn_y=p1y;

var pn_r:number=r1;

var pn_g:number=g1;

var pn_b:number=b1;

//trace(pn_r+" "+pn_g+" "+pn_b);

while(pn_x

//move pixel

if(pn_x

if(pn_y

} 4

效果展示圖1

(紅色à藍)

圖2

(土黃à

草地綠)

完成日

:

06/05/13

C 中一個關於不同窗體間的顏色引數的傳遞

1目標是 在彈出選單中選擇顏色,在主選單中對控制元件進行操作 彈出選單選擇的顏色就是主選單控制元件的顏色 2顏色屬性需要來回轉換 也許不用轉換,暫時還不會,有會的提醒下,tks 3用到一個顏色控制元件 colordialog 否則的 太冗繁,在彈出選單中作為選擇顏色和顏色屬性之間傳遞的橋樑 4彈出窗...