正文

游戲數(shù)學(xué)(20)

精通C#游戲編程 作者:(英)斯庫(kù)勒


 

圓通過(guò)使用10個(gè)頂點(diǎn)繪制而成,所以看上去不是十分平滑。為了增加圓的平滑度,應(yīng)增加Circle類的Draw方法中使用的頂點(diǎn)數(shù)。

為了演示相交性,最好能夠?yàn)閳A上色。使用白色的圓表示沒(méi)有相交的圓,使用紅色的圓表示圓與某個(gè)東西相交。實(shí)現(xiàn)這種功能很簡(jiǎn)單。在Circle類中,修改代碼,添加一個(gè)在Draw函數(shù)中使用的顏色成員。

Color _color = new Color(1, 1, 1, 1);

public Color Color

{

get { return _color; }

set { _color = value; }

}

public void Draw()

{

Gl.glColor3f(_color.Red, _color.Green, _color.Blue);

默認(rèn)情況下,所有的圓都將被渲染成白色,但是顏色可以隨時(shí)改變。

介紹向量的部分已經(jīng)解釋了如何進(jìn)行圓與點(diǎn)的相交性測(cè)試,方法是:計(jì)算點(diǎn)與圓心的距離,如果這個(gè)距離大于圓的半徑,那么點(diǎn)位于圓之外。為了以圖形化的方式進(jìn)行測(cè)試,可以把鼠標(biāo)指針作為一個(gè)點(diǎn)。

獲得鼠標(biāo)指針位置的操作稍微有點(diǎn)棘手,因?yàn)檫@涉及了不同的坐標(biāo)系。OpenGL原點(diǎn)位于窗體的中心,但是光標(biāo)的位置使用不同的坐標(biāo)系確定,它的原點(diǎn)是窗體的左上角。也就是說(shuō),OpenGL認(rèn)為窗體的中心是位置(0,0),但光標(biāo)認(rèn)為窗體的左上角才是[0,0]。圖8-19顯示了3個(gè)不同的坐標(biāo)系。窗體的坐標(biāo)原點(diǎn)標(biāo)記為a,控件的坐標(biāo)原點(diǎn)標(biāo)記為b,OpenGL的坐標(biāo)原點(diǎn)標(biāo)記為c。為了將鼠標(biāo)指針從窗體坐標(biāo)系轉(zhuǎn)換為OpenGL坐標(biāo)系,需要向窗體中再添加一些代碼。

 


上一章目錄下一章

Copyright ? 讀書(shū)網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)