正文

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

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


 

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

為了演示相交性,最好能夠為圓上色。使用白色的圓表示沒有相交的圓,使用紅色的圓表示圓與某個東西相交。實現(xiàn)這種功能很簡單。在Circle類中,修改代碼,添加一個在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)情況下,所有的圓都將被渲染成白色,但是顏色可以隨時改變。

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

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

 


上一章目錄下一章

Copyright ? 讀書網(wǎng) www.autoforsalebyowners.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號