1 #include <GL/glut.h>
2 #include <ctime>
3
4 #define MULTIPLIER 0x015a4e35L
5 #define INCREMENT 1
6
7 static const unsigned char CD_UP = 24;
8 static const unsigned char CD_DOWN = 25;
9 static const unsigned char CD_RIGHT = 26;
10 static const unsigned char CD_LEFT = 27;
11
12 static const int WindowWidth = 640;
13 static const int WindowHeight = 480;
14
15 static Bottle* bottle = NULL;
16 static Capsule* capsule = NULL;
17
18 enum Connect
19 {
20 LEFT, RIGHT, UP, DOWN, NOT_CONNECTED
21 };
22
23 enum Color
24 {
25 YELLOW, BLUE, RED, BLACK
26 };
27
28 enum GridType
29 {
30 CAPSULE, WORM, NOTHING
31 };
32
33 class Bottle
34 {
35 private:
36 GridType b_grid_type[16][8];
37 Color b_color[16][8];
38 int b_x,b_y;
39 int b_seed;
40 public:
41 Bottle( int seed, int level, int xx, int yy )
42 {
43 b_seed = seed;
44 b_x = xx;
45 b_y = yy;
46 for ( int i = 0; i < 16; ++i )
47 {
48 for ( int j = 0; j < 8; ++j )
49 {
50 b_grid_type[i][j] = NOTHING;
51 b_color[16][8] = BLACK;
52 }
53 }
54 for ( int i = 0; i < level*4; ++i )
55 {
56 int x = myRand()%8;
57 int y = myRand()%16;
58 Color color = myRand()%3;
59 if ( ok( x, y, color, level ) )
60 {
61 b_grid_type[y][x] = WORM;
62 b_color[y][x] = color;
63 }
64 else
65 --i;
66 }
67 }
68 int myRand( void )
69 {
70 seed = MULTIPLIER*seed + INCREMENT;
71 return ((int)(seed>>16) & 0x7fff);
72 }
73 bool ok( int x, int y, Color color, int level )
74 {
75 if ( level < 15 && y <= 6 ) return false;
76 if ( ((level+1)>>1)+3+y < 16 ) return false;
77 if ( x-2 >= 0 && b_grid_type[x-1][y] == WORM && b_color[x-1][y] == color
78 && b_grid_type[x-2][y] == WORM && b_color[x-2][y] == color ) return false;
79 if ( x+2 < 8 && b_grid_type[x+1][y] == WORM && b_color[x+1][y] == color
80 && b_grid_type[x+2][y] == WORM && b_color[x+2][y] == color ) return false;
81 if ( y+2 < 16 && b_grid_type[x][y+1] == WORM && b_color[x][y+1] == color
82 && b_grid_type[x][y+2] == WORM && b_color[x][y+2] == color ) return false;
83 if ( b_grid_type[x][y-1] == WORM && b_color[x][y-1] == color
84 && b_grid_type[x][y-2] == WORM && b_color[x][y-2] == color ) return false;
85 return true;
86 }
87 };
88
89 class Capsule
90 {
91 private:
92 int c_x,c_y;
93 Connect c_connect;
94 Color C_color;
95 public:
96 Capsule( int xx, int yy, Connect con, int color)
97 {
98 c_x = xx; c_y = yy; c_connect = con; c_color = color;
99 }
100 };
101
102 void draw( void )
103 {
104 bottle->display();
105 }
106
107 void display( void )
108 {
109 glClear( GL_COLOR_BUFFER_BIT );
110 draw();
111 glutSwapBuffers();
112 }
113
114 void key( unsigned char key_char, int not_use, int not_use_1 )
115 {
116 capsule->setDirect( key_char );
117 }
118
119 int main( int argc, char * argv[] )
120 {
121 glutInit( &argc, argv );
122 glutInitDisplayMode( GLUT_RGBA|GLUT_DOUBLE );
123 glutInitWindowPosition( 50, 50 );
124 glutInitWindowSize( WindowWidth, WindowHeight );
125 glutCreateWindow( "Dr Mario By PureMilk" );
126 glutDisplayFunc( display );
127 glutKeyboardFunc( key );
128 glutTimerFunc( 250, timer, 0 );
129 gluOrtho2D( 0, WindowWidth, WindowHeight, 0 );
130 glutMainLoop();
131
132 return 0;
133 }
我是C++盲……
posted @
2008-10-15 13:13 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(314) |
評(píng)論 (5) |
編輯 收藏
void glutTimerFunc(int delay, (void (*func)( int
parameter),int parameter) 這個(gè)函數(shù)相當(dāng)于win32 api 中的timer 定時(shí)器,也是在delay毫秒后 放出一個(gè)定時(shí)器消息,而這里的func 則為這個(gè)消息的處理函數(shù), patameter為附加參數(shù)。 這里有一點(diǎn)要注意這個(gè)函數(shù)是一次性的, 如果要重復(fù)使用可以在func中繼續(xù)調(diào)用glutTimerFunc,而且這個(gè)功能是可以疊加的,在opengl 內(nèi)部將他們看成許多個(gè)不同的定時(shí)器,這也就是為什么我們?cè)谏厦娴睦又羞B續(xù)按下鼠標(biāo)右鍵會(huì)加快旋轉(zhuǎn)的速度
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=628504
我就暫且給今天的筆記取個(gè)靈異事件的科教解析欄目的題目吧。
和貓聊天最大的收獲是這句話:
天地之靈(402740419) 21:15:21
邏輯和顯示 分離
這是經(jīng)驗(yàn),也是教訓(xùn),也是潮流
天地之靈(402740419) 21:15:52
邏輯處理輸入,改變狀態(tài)
顯示把狀態(tài)展示到顯示器
解除了我很多困惑。貓說的很清楚,我就不再多說了
下面說說我的計(jì)劃。明天計(jì)劃找老大聊科研基地的事,順便把請(qǐng)他吃飯的諾言實(shí)現(xiàn)了,估計(jì)會(huì)聊到很晚,所以爭取中午寫學(xué)習(xí)筆記,下午有選修課。周四周五專心寫Dr Mario。很難說能寫到什么程度,因?yàn)橐郧皩慸p的很少有寫到400行的時(shí)候,基本上寫到一兩百行就夠我調(diào)試一兩天了。雖說Dr Mario的邏輯比那些古怪算法簡單多了,但是代碼量增加,調(diào)試時(shí)間恐怕要指數(shù)級(jí)增長,我爭取周五完成基本功能。周六周日又有兩場比賽,真抱歉,這周末又做不了什么了。我想Dr Mario最多拖到下周二,也就是21號(hào),完成一些附加的功能之類的。請(qǐng)大家監(jiān)督我。
殿下定的計(jì)劃里,Dr Mario持續(xù)到10月底,那么我21號(hào)到31號(hào)的時(shí)間就用來學(xué)習(xí)圖形學(xué)理論知識(shí),到時(shí)候把學(xué)到的知識(shí)每一點(diǎn)每一滴都總結(jié)出來給大家分享。另外科研基地的活動(dòng)也馬上就要大開工了,想想真煩啊,怎么總有些亂七八糟的事兒,就不能一次只做一件事。陳省身說“我一生只做一件事”,覺得很羨慕。不過這也都是我自己選擇的,我的路都是我自己走的,更何況不是什么壞事。
我覺得自己面臨很大的問題是這次得獎(jiǎng)。比失敗更難面對(duì)的是超出預(yù)計(jì)的榮譽(yù)。我找不到自己的位置了。一方面我無比怨念這成績根本沒法和我付出的努力比,另一方面,我的水平?jīng)]達(dá)到那獎(jiǎng)的程度。有些矛盾。我想還是多些感恩吧。不管經(jīng)歷什么,只要我在不斷成長就好。
posted @
2008-10-14 22:51 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(221) |
評(píng)論 (2) |
編輯 收藏
懶懶散散的已經(jīng)過了兩天了,只有偶爾得看看OpenGL。貌似已經(jīng)早早得遇到了一個(gè)瓶頸,這只能怪我學(xué)得太雜---什么東西都想學(xué)學(xué)---而不精---學(xué)過的都是一知半解。最近看看3D的基礎(chǔ)知識(shí),前面的看似很簡單,但是看過了之后才知道自己好像就沒記住什么東西。
今天網(wǎng)上找了一本書,雖然很難看懂---英文版的---但是感覺很好,至少不必再取瞎研究一個(gè)函數(shù)參數(shù)的具體意義了,《
OpenGL函數(shù)手冊(cè)》推薦大家看看。
posted @
2008-10-14 21:56 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(126) |
評(píng)論 (1) |
編輯 收藏
這篇隨筆保證只有一句廢話。
init Xiaofangkuai() //小方塊的初始化


{
color=random(RED,GREEN,BLUE);
x=x0;y=y0; //動(dòng)態(tài)坐標(biāo),幾何中心坐標(biāo)
}
XiaofangkuanKuMade() //構(gòu)建一個(gè)小方塊庫,容積1000,超過500膠囊還沒死那就過關(guān)吧


{
for(i=0;i<1000;i++)
ku[i]=Xiaofangkuai;
}
JiaonangMade() //創(chuàng)建膠囊 if (key.isdown(key.DOWN)) {


{
left=ku[i];right=ku[i+1]; //膠囊分兩塊兒,左右各為一個(gè)小方塊
ku[i+1].x=ku[i].x+a; //兩個(gè)小方塊的橫坐標(biāo)之間相差邊長a
}
init Pingzi(); //用小方塊構(gòu)建瓶子


{
for()
{
ku[i].color=WHITE; //為以后不與普通小方塊產(chǎn)生混淆,更改顏色為白色
ku[i];
}
}
上面是元件的構(gòu)建,應(yīng)該沒落下什么東西吧。下面實(shí)現(xiàn)函數(shù)。
int hitTest() //檢測(cè)碰撞


{
for(m=0;m<i;m++) //比較ku[i]小方塊和之前所有小方塊的橫縱坐標(biāo)。

{
Mx[m]=ku[m].x;
My[m]=ku[m].y;
if(ku[i].x==Mx[m]&&ku[i].y==My[m]+a) //如果ku[i]的橫坐標(biāo)和之前的小方塊的橫坐標(biāo)相等,縱坐標(biāo)相差一個(gè)邊長
break;return ture; //跳出這個(gè)函數(shù),直接返回真
else continue;
}
return false; //最后如果都不符合,返回假,即沒有遇到
}
drop()


{
if(!hitTest)

{Jiaonang.left.y-=a;
Jiaonang.right.y-=a;}
}
下面推出的是按鍵檢測(cè)函數(shù)
按鍵檢測(cè)函數(shù)先不要寫了,弄不明白它跟鍵盤是怎么交互的。
下面說這個(gè)難度最大的四塊相消吧。
fourinvisiable()


{
for(m=i;m>0;m--) //判斷四個(gè)相接的色塊是不是同色

{
M[m]=ku[m].color;

if(M[m]==ku[i].color&&Mx[m]==k[i].x&&My[m]=ku[i].y+a)
{ //判斷最新的色塊和與其相接的色塊是不是同色
for(n=m;n>0;n--)

{
if(M[n]==ku[m].color&&Mx[n]==k[m].x&&My[n]=ku[m].y+a) //如果同色判斷該色塊和與其相接的色塊是不是同色

{
for(p=n;p>0;p--) //如果同色判斷該色塊和與其相接的色塊是不是同色

{
if(M[p]==ku[n].color&&Mx[p]==k[n].x&&My[p]=ku[n].y+a) //如果同色判斷該色塊和與其相接的色塊是不是同色

{ //至此四個(gè)色塊同色,消掉
delet M[i],M[m],M[n],M[p];
}
}
}
}
}
if(剩下兩種情況) ; //其他兩種情況為最新的色塊落在一排三個(gè)同色色塊的右面以及落在一排三個(gè)同色色塊的左面
}
}
結(jié)束判斷
bool GameOver()
{
if (ku[i].y>=hight)
return ture;
}
bool GameFinished()
{
if (i>1000)
return ture;
}
主函數(shù)
main()


{
JiaonangMade();
PingziMade();
for(i=0;i<1000;i++)

{
if(GameOver)
cout<<"You Lose"<<endl;
if(GameFinished)
cout<<"YouPass"<<endl;
if(!hitTest)

{
Jiaonang[i].drop();
Jiaonang.key();
FourInvisiable();
}
else break;
}
}
posted @
2008-10-14 18:59 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(149) |
評(píng)論 (1) |
編輯 收藏
我昨晚回來第一件事開電腦,本想寫點(diǎn)啥的,結(jié)果真是兩天不學(xué)習(xí),趕不上咱們小組的好童鞋們。我高估了我的體力,今下午睡了整整一下午才休息過來,這學(xué)期少有的逃課啊。果然腦力勞動(dòng)對(duì)體力的耗費(fèi)是不可估量的。本想今下午休息好了晚上可以大干一場了,結(jié)果又被弄去采訪,到十點(diǎn)才回來,馬上斷網(wǎng)了,俺先隨便寫點(diǎn)兒。
不過在南京的時(shí)候,比賽的前一天晚上睡覺前,學(xué)習(xí)了一節(jié)OpenGL教程,在去南京和回南京的汽車火車上看完了貪食蛇的全部代碼,總算是沒有落下太多,還望大家多提攜俺。接下來俺會(huì)趕緊的趕上大家的進(jìn)度不會(huì)拖后腿兒的。俺今天晚上斷網(wǎng)以后還要再學(xué)一會(huì)兒,明天筆記多寫點(diǎn)兒。
posted @
2008-10-13 22:54 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(77) |
評(píng)論 (0) |
編輯 收藏
雖然給人又說了一遍啰嗦了,但是咱最起碼先把這個(gè)題目解釋清了。于是,這段就不叫啰嗦了。本來今天的計(jì)劃是要繼續(xù)研究貪食蛇呢,可是,兩天了都沒找到那個(gè)聚精會(huì)神的狀態(tài),于是乎,還沒有看。本來瑪麗醫(yī)生是要明天討論的,但是今天上網(wǎng)絡(luò)忍了又忍之后還是想了一下。綜上,不務(wù)正業(yè)。既然都不務(wù)正業(yè)了,那咱得把成果拿出來,于是,請(qǐng)回車。
小分析了一下實(shí)現(xiàn)瑪麗醫(yī)生通俗意義上的基本功能,理論上需要這么些函數(shù)。來,換行。
墜落函數(shù),還是叫它墮落函數(shù)吧。功能:實(shí)現(xiàn)膠囊的勻速下落。
檢測(cè)障礙物函數(shù):碰到膠囊和瓶壁或者瓶底了要止步。
檢測(cè)按鍵函數(shù):跟蹤鍵盤按鍵,實(shí)現(xiàn)翻轉(zhuǎn)和加速。
同色檢驗(yàn):用于判斷兩個(gè)膠囊顏色是否相同。
四塊相消函數(shù):凡是能用直線串起來的四塊同色膠囊消掉。聯(lián)系坐標(biāo)檢測(cè),因?yàn)槭侵本€,所以某坐標(biāo)是定值。檢測(cè)坐標(biāo)是否相同即可。
隨機(jī)產(chǎn)生函數(shù):用于膠囊的隨機(jī)產(chǎn)生。
基礎(chǔ)功能之上還需要積分換算函數(shù)用以計(jì)算分?jǐn)?shù)。
下面貼流程設(shè)計(jì)。
沒看到流程圖的按鈕,還是用文字來表達(dá)吧。
大體分三步:1.元件構(gòu)建;2.各種函數(shù)書寫;3.整合測(cè)試。
由于考慮到元件的性質(zhì)決定了后面的過程,所以這個(gè)流程是我們開發(fā)的流程,也就是說做完一步才能走下一步。
1.元件構(gòu)建:
1〉色塊
如果有三種顏色的話需要九種圖形。前提是我們把每個(gè)膠囊作為一個(gè)最基本的結(jié)構(gòu)單元,現(xiàn)在想來完全可以把每個(gè)色塊作為最基本的結(jié)構(gòu)單元。
這個(gè)色塊需要存儲(chǔ)的信息:動(dòng)態(tài)坐標(biāo),靜態(tài)色塊代碼。
2〉瓶子
瓶子可以作為獨(dú)立的結(jié)構(gòu)單元,如果覺得繁瑣的話可以用第四種顏色的色塊拼成瓶子,這樣少構(gòu)建一個(gè)元件但需要一個(gè)靜態(tài)的構(gòu)造瓶子的函數(shù)。
2.各種函數(shù):(按順序設(shè)計(jì))
1〉隨機(jī)產(chǎn)生函數(shù)
2〉墮落函數(shù)
1)檢測(cè)障礙物
2)檢測(cè)按鍵
1*旋轉(zhuǎn)測(cè)試
2*加速測(cè)試
3)勻速墮落
3〉同色檢驗(yàn)
4〉四塊相消
1) 檢測(cè)
2)消去
3)檢測(cè)障礙物繼續(xù)墮落
5〉結(jié)束判斷(判斷Y坐標(biāo))
6〉預(yù)視窗添加
7〉積分添加
8〉聲音添加
哦了,按著寫的草稿網(wǎng)上貼了,都忘記什么意思了,快要停止思考了。我餓啊~~
要斷網(wǎng)了,明天貼偽碼。
posted @
2008-10-13 22:26 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(174) |
評(píng)論 (0) |
編輯 收藏
早晨起來驚奇地發(fā)現(xiàn)留言板居然有內(nèi)容,更驚奇的是還是私人留言,更更驚奇的是私人留言也沒說什么私人的內(nèi)容,更更更驚奇的是這個(gè)人是傳說中的tdzl。傳說中的二師傅現(xiàn)身了。咱也不了解這個(gè)傳說有多邪乎,隱約感覺這是一個(gè)知名度不小的同志。那個(gè)神奇啊。感謝感謝。
需要感謝的還有陳梓翰同志,一直實(shí)名評(píng)論,給出一些很中肯的建議,推動(dòng)著推動(dòng)著。話說這個(gè)人俺自然也不認(rèn)識(shí)的,畢竟才在這里呆了兩天。就像一男人搬家到了新幾內(nèi)亞的一所房子里,雖然兩天了,但是他也沒出去啊,沒串門就不知道鄰居啥樣子。不過隱約感覺這也是圈內(nèi)一個(gè)知名度不小的同志。那個(gè)神奇啊。感謝感謝。
下面說恭喜。俺們的PureMilk拿了江蘇ACM大賽的一等獎(jiǎng),那個(gè)神奇啊。恭喜恭喜。
不能破壞已有結(jié)構(gòu),結(jié)尾了。明天貪食蛇的研究就要結(jié)束了,改寫報(bào)告的寫報(bào)告,咋就能沒有感想呢?俺媽說偷懶不是好孩子。
posted @
2008-10-12 22:11 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(250) |
評(píng)論 (3) |
編輯 收藏
有些人活著,可他已經(jīng)死了——》說的就是白天的我。大學(xué)以來,因?yàn)樨澩嬉幌虬褜W(xué)習(xí)時(shí)間逼到夜里,久而久之我的生物鐘真的顛倒了。。。以前數(shù)據(jù)結(jié)構(gòu)做作業(yè)都是夜里通宵寫程序調(diào)程序的,夜里身子累的不行,思維卻異常的興奮。。。今天因?yàn)橐估餂]有時(shí)間。。。只好白天學(xué)習(xí)。。。很不習(xí)慣。。。沒有激情,只有噪音。。。
貪食蛇。。。為了看懂那個(gè)丑陋(不,是簡陋)的EXE的源代碼,我把C語言和C++的書都給扒出來了,找書實(shí)在是個(gè)體力活。。。看書也是。。。冗長的代碼,for循環(huán)很暈人,調(diào)試錯(cuò)誤很揪心(調(diào)出來自然很得意,調(diào)不出來就得那么一直揪著。。。揪著。。。),偷偷展望了一下今后(工作以后)要是真的天天對(duì)對(duì)著這些。。。以后找工作,希望最后可以做筱筱殿下那個(gè),主策劃輔編程,不用整天整天的琢磨代碼,不會(huì)未老先衰;偶一為之,還可以鍛煉腦力,預(yù)防老年癡呆。。。當(dāng)然,這種職位是不會(huì)屬于剛畢業(yè)的小孩的。。。
所以。。。還得繼續(xù)打著哈欠看glutMainLoop();很欽佩殿下的氣定神閑,顯然這只屬于作息正常的孩子的。。。
posted @
2008-10-11 21:56 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(224) |
評(píng)論 (7) |
編輯 收藏
做東西得沉得住氣,也就是說要?dú)舛ㄉ耖e地去做,切不可浮躁。這就是今天的體會(huì),哦,其實(shí)是老早就想明白的一個(gè)道理,今天又重新體會(huì)了一遍。
按照計(jì)劃今天和明天是研究貪食蛇的時(shí)間,那個(gè)程序?qū)τ谖襾碚f很長,雖然也有很多注解,看得我還是眼花繚亂。其實(shí),我個(gè)人感覺我是可以看明白的,不就是幾個(gè)英文單詞嗎,都寫那么明白了,再說不會(huì)的還可以百度和谷歌呢。現(xiàn)在都晚上了,其實(shí)看那個(gè)程序加起來的時(shí)間也就不到10分鐘,認(rèn)真地看這個(gè)程序的時(shí)間也就是一兩分鐘,這樣子想看懂?癡人說夢(mèng),嗯,也是吃人說孟。明天逮個(gè)精神好的時(shí)間段,吭哧吭哧把丫撂平了。
之前一直在做一個(gè)Flash的小游戲,因?yàn)槭菑?到10的過程,所以比較艱難,也沒有系統(tǒng)地去學(xué)AS,只是用到哪里看哪里,這樣只有架構(gòu),沒有真正理解了Flash這個(gè)軟件以及AS的核心思想,也就是他的套路。我覺得弄明白一個(gè)軟件的概念和套路,這個(gè)軟件你就拿下了。到現(xiàn)在我只是大概了解了它的思路,結(jié)構(gòu)層次。一步一步的實(shí)現(xiàn),前一陣子做得焦頭爛額,陷了進(jìn)去,越掙扎陷得越深,漿糊效應(yīng)(這個(gè)是自個(gè)兒起的名字),也就是說一頭扎下去了,拼了老命的往前沖,不撞墻才怪呢,所以需要做得就是冷靜一下,站在一個(gè)更高的位子看下自己走過的路,哪里是正確的,哪里出問題了。于是,停手了一段時(shí)間,不過不是主動(dòng)停手去找問題的,而是忙別的事情,這個(gè)就暫時(shí)耽擱了。今天早晨比較靠譜地分析了一下,然后吭哧吭哧就解決了兩個(gè)問題,現(xiàn)在從0走到4了吧,走到6的時(shí)候這個(gè)游戲的需求就滿足了。嘿嘿,小得意一個(gè)。繼續(xù)加油。
總之~~做事情就像挖地道,挖的時(shí)候要用力還要用心,挖不動(dòng)的時(shí)候就跑到地面上看看哪里堵墻了。不管怎么著就是一個(gè)核心思想,像一個(gè)將軍一樣去分析和規(guī)劃,像一個(gè)士兵一樣去實(shí)踐和戰(zhàn)斗。
大家好運(yùn),我也好運(yùn)~~明兒見~
posted @
2008-10-11 20:53 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(207) |
評(píng)論 (0) |
編輯 收藏
今天仔細(xì)研究了一下glRotatef()函數(shù)參數(shù)的具體意義。angle毋庸置疑就是旋轉(zhuǎn)的角度,而x,y,z三個(gè)參數(shù)則應(yīng)該看成一個(gè)整體表示一個(gè)向量,表示物體圍繞向量[x,y,z]旋轉(zhuǎn)。下面就具體談?wù)勛约喊l(fā)現(xiàn)這幾個(gè)參數(shù)意義的過程。
剛看glRotatef()函數(shù)的時(shí)候?qū)Ω鱾€(gè)參數(shù)的意義很是不明白,自己上網(wǎng)查了一查,但發(fā)現(xiàn)網(wǎng)上說的卻不是我想要的答案。于是潛下心來研究了一番。剛開始看的時(shí)候在參數(shù)angle上根本就沒花什么時(shí)間,對(duì)于x,y,z三個(gè)參數(shù)的研究主要分為了如下幾個(gè)個(gè)過程。初看的時(shí)候是對(duì)三個(gè)參數(shù)分個(gè)來研究的,發(fā)現(xiàn)如果x,y,z中僅有一個(gè)不為0的話,例如x不為0,若x>0,則表示繞x軸正方向旋轉(zhuǎn)angle度,若x<0,則表示繞x軸負(fù)方向旋轉(zhuǎn)angle度,不論x的值是多大,即1.0和0.1代表的都是繞x軸正方向旋轉(zhuǎn)angle度。于是就初步下了一個(gè)結(jié)論,即x,y,z只表示了三個(gè)狀態(tài),即大于0表示繞該軸正方向旋轉(zhuǎn),小于0表示繞該軸負(fù)方向旋轉(zhuǎn),等于0就表示繞該軸不旋轉(zhuǎn)。但是當(dāng)x,y,z三個(gè)參數(shù)中至少有兩個(gè)不為0的時(shí)候發(fā)現(xiàn)根本不是那么回事,因?yàn)楫?dāng)x不為0且為一個(gè)定值的時(shí)候,y取不同值物體旋轉(zhuǎn)的狀態(tài)根本就不一樣,這就推翻了我第一次的假想。到了這里似乎就遇到了一個(gè)瓶頸,任我如何想都想不明白,到了吃飯的時(shí)間居然都感覺不到餓。后來實(shí)在沒有辦法的時(shí)候還是打算先去吃飯,剛穿上外衣的時(shí)候突然一個(gè)想法閃進(jìn)我的腦海,為什么不把x,y,z看成一個(gè)整體呢?帶著這個(gè)疑問我思考了一路,越想越興奮,最后才向x,y,z應(yīng)該表示一個(gè)向量,即物體旋轉(zhuǎn)時(shí)所圍繞的那個(gè)向量。回來后測(cè)試了一下發(fā)現(xiàn)[0,1,1]和[0,2,2]所產(chǎn)生的旋轉(zhuǎn)效果是一樣的,后來又測(cè)試了幾組值,我對(duì)自己的猜想更加地肯定了。
雖然更加肯定了自己的想法,但還是不能說明它是百分之百正確的,還希望各位找找看看能不能再補(bǔ)充一點(diǎn)或者添加一些其他函數(shù)參數(shù)意義的說明。
posted @
2008-10-11 18:57 正牌的天地之靈和他的徒兒們肖赫_王婷婷_王冠_鄭燚_孫婷 閱讀(12108) |
評(píng)論 (13) |
編輯 收藏