平面三點插值算法
瀏覽:205131
如:pt1(100,200) pt2(300,200) pt3(200,400)
三個頂點的顏色分別為:c1(255,0,0) c2(0,255,0) c3(0,0255)
要求在三個頂點維成的三角區域里三種顏色平滑過渡。
如何用分割小矩形的方法單色填充達到漸變效果。
---------------------------------------------------------------
用這個我最近剛研究的平面三點表示法試試,看看可以么。
就是用一個公式(我稱它為平面定比分點公式):
已知平面的不同的三點A(x1,y1)B(x2,y2)C(x3,y3),則他們就把整個平面唯一確定了,也就是說平面上的任意一點P都可以用ABC這三點來表示。這如何表示我們不管,我們只要找到他們之間的關系就可以了。直線上的兩點也唯一地確定了這條直線,我們有直線的定比分點公式來得到直線上的點與這兩點之間的關系,同樣我們也可以找到平面定比分點公式。
定義:平面上三點ABC的面積矢量S(A,B,C)為
|x1 x2 x3 |
S(A,B,C) = |y1 y2 y3 |
|1 1 1 |
有了這個定義我們就可以得到平面定比分點公式了:
已知平面的不同的三點A(x1,y1)B(x2,y2)C(x3,y3),則該平面上的任意一點Z與ABC之間有如下的關系:
S(Z,B,C) S(A,Z,C) S(A,B,Z)
Z = -------- (x1,y1)+ --------(x2,y2) + -------- (x3,y3)
S(A,B,C) S(A,B,C) S(A,B,C)
稱三個點前面的系數為定比,很顯然定比表示了ABC三點對Z的貢獻大小,如果我們把這種貢獻也用在他們的某種屬性的話,也一樣唯一的確定了一個屬性平面。例如題目中的RGB也一樣可以,就是
S(Z,pt2,pt3) S(pt1,Z,pt3) S(pt1,pt2,Z)
Z(R,G,B)= ------------- c1 + -------------- c2 + -------------- c3
S(pt1,pt2,pt3) S(pt1,pt2,pt3) S(pt1,pt2,pt3)
Z點取遍平面上的每一個點,整個平面的顏色也就都出來了。
其實平面定比分點公式可以推廣到N維空間,這里就不說了。
其實你看公式好象很繁,其實因為你的c1,c2,c3三個向量很特殊(都有兩個坐標分量為0),所以這個公式
S(Z,pt2,pt3) S(pt1,Z,pt3) S(pt1,pt2,Z)
Z(R,G,B)= ------------- c1 + -------------- c2 + -------------- c3
S(pt1,pt2,pt3) S(pt1,pt2,pt3) S(pt1,pt2,pt3)
其實化簡一下是很簡單的,就是
S(Z,pt2,pt3)
Z(R)= ------------- * 255
S(pt1,pt2,pt3)
S(pt1,Z,pt3)
Z(G)= ------------- * 255
S(pt1,pt2,pt3)
S(pt1,pt2,z)
Z(B)= ------------- * 255
S(pt1,pt2,pt3)
三個頂點的顏色分別為:c1(255,0,0) c2(0,255,0) c3(0,0255)
要求在三個頂點維成的三角區域里三種顏色平滑過渡。
如何用分割小矩形的方法單色填充達到漸變效果。
---------------------------------------------------------------
用這個我最近剛研究的平面三點表示法試試,看看可以么。
就是用一個公式(我稱它為平面定比分點公式):
已知平面的不同的三點A(x1,y1)B(x2,y2)C(x3,y3),則他們就把整個平面唯一確定了,也就是說平面上的任意一點P都可以用ABC這三點來表示。這如何表示我們不管,我們只要找到他們之間的關系就可以了。直線上的兩點也唯一地確定了這條直線,我們有直線的定比分點公式來得到直線上的點與這兩點之間的關系,同樣我們也可以找到平面定比分點公式。
定義:平面上三點ABC的面積矢量S(A,B,C)為
|x1 x2 x3 |
S(A,B,C) = |y1 y2 y3 |
|1 1 1 |
有了這個定義我們就可以得到平面定比分點公式了:
已知平面的不同的三點A(x1,y1)B(x2,y2)C(x3,y3),則該平面上的任意一點Z與ABC之間有如下的關系:
S(Z,B,C) S(A,Z,C) S(A,B,Z)
Z = -------- (x1,y1)+ --------(x2,y2) + -------- (x3,y3)
S(A,B,C) S(A,B,C) S(A,B,C)
稱三個點前面的系數為定比,很顯然定比表示了ABC三點對Z的貢獻大小,如果我們把這種貢獻也用在他們的某種屬性的話,也一樣唯一的確定了一個屬性平面。例如題目中的RGB也一樣可以,就是
S(Z,pt2,pt3) S(pt1,Z,pt3) S(pt1,pt2,Z)
Z(R,G,B)= ------------- c1 + -------------- c2 + -------------- c3
S(pt1,pt2,pt3) S(pt1,pt2,pt3) S(pt1,pt2,pt3)
Z點取遍平面上的每一個點,整個平面的顏色也就都出來了。
其實平面定比分點公式可以推廣到N維空間,這里就不說了。
其實你看公式好象很繁,其實因為你的c1,c2,c3三個向量很特殊(都有兩個坐標分量為0),所以這個公式
S(Z,pt2,pt3) S(pt1,Z,pt3) S(pt1,pt2,Z)
Z(R,G,B)= ------------- c1 + -------------- c2 + -------------- c3
S(pt1,pt2,pt3) S(pt1,pt2,pt3) S(pt1,pt2,pt3)
其實化簡一下是很簡單的,就是
S(Z,pt2,pt3)
Z(R)= ------------- * 255
S(pt1,pt2,pt3)
S(pt1,Z,pt3)
Z(G)= ------------- * 255
S(pt1,pt2,pt3)
S(pt1,pt2,z)
Z(B)= ------------- * 255
S(pt1,pt2,pt3)
技術鄰APP
工程師必備
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















