正文

游戲數(shù)學(20)

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


 

圓通過使用10個頂點繪制而成,所以看上去不是十分平滑。為了增加圓的平滑度,應增加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);

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

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

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

 


上一章目錄下一章

Copyright ? 讀書網 www.afriseller.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號