freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于opengl的臺球游戲的設(shè)計論文-資料下載頁

2025-06-18 16:20本頁面
  

【正文】 loat angle ,GLfloat x, GLfloat y, GLfloat z);將一個矩陣與當(dāng)前矩陣相乘,該矩陣將物體(或局部坐標(biāo)系)繞原點到點(x,y,z)直線逆時針旋轉(zhuǎn)angle度。(3)投影變換投影變換旨在定義視景體,視景體決定了物體將被如何投影到屏幕上,即使使用透視投影還是正交投影;另外還決定了哪些物體或物體的那些部分將被裁減掉。● 透視投影函數(shù):void glFrustum(GLdouble left,GLdouble right, GLdouble bottom,GLdouble top,GLdouble znear,GLdouble zfar);該函數(shù)創(chuàng)建一個透視投影矩陣相乘。其中的參數(shù)定義了視景體:(left,bottom,near)和(right,top,near)定義了近裁剪面左下角和右上角的(x,y,z)坐標(biāo);是znear和zfar分別是近裁剪面和遠裁剪面離視點的距離,它們必須大于0?!?正交投影函數(shù):void glOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top);創(chuàng)建一個將二維坐標(biāo)投影到屏幕上的矩陣,并將其與當(dāng)前投影矩陣相乘。裁剪區(qū)域是一個左下角坐標(biāo)為(left,bottom),右上角坐標(biāo)為(right,top)的矩形。(4)視口變換窗口系統(tǒng)負(fù)責(zé)在屏幕上打開窗口。默認(rèn)情況下,視口為窗口中的整個像素矩形。要指定更小的繪畫區(qū)域,可以使用函數(shù)glViewport()。void glViewport(GLint x,GLint y,Glsizei width,Glsizei height);在窗口中指定一個用于顯示圖像的像素矩陣。參數(shù)(x,y)是視口左下角的坐標(biāo),而參數(shù)width和height為視口的大小,視口的初始值為(0,0,winWidth,winHeight),其中winWidth和winHeight為窗口的大小。 數(shù)學(xué)模型實現(xiàn)下面的結(jié)構(gòu)體是定義一個矢量速度:struct Velocity{ char type。 float fvalue0。 float fvalue1。 float fvalue2。}。//控制球體運動的速度下面是數(shù)學(xué)模型中矩陣的計算的操作:● 矢量坐標(biāo)的運算void VectorCopy(VECTOR amp。 V, float x, float y, float z)。//V=(x,y,z)void VectorCopy(VECTOR amp。 V, VECTOR A)。//V=A void VectorAdd(VECTOR amp。 V, VECTOR A, VECTOR B)。//V=A+Bvoid VectorSub(VECTOR amp。 V, VECTOR A, VECTOR B)。//V=ABvoid VectorScale(VECTOR amp。 V, float s)。//V=s*Vvoid VectorCross(VECTOR amp。 V, VECTOR A, VECTOR B)。 // V = A x Bvoid VectorDot(float amp。 dot, VECTOR A, VECTOR B)。 // dot = A . Bvoid VectorLength(float amp。 len, VECTOR V)。 // len = |V|void VectorNormalize(VECTOR amp。 V)。 // V = V/(|V|)● 矢量的矩陣運算void MultMatrixf( float *M, float *M1, float *M2,int m1Row, int m1Col, int m2Row, int m2Col)。//M1*M2void TransMatrix( float *M, int row, int col)。 // transpose matrixint InvMatrixf(float *M, int n)。 // inverse of matrix M● World 坐標(biāo)的運算// 坐標(biāo)點從Object到World轉(zhuǎn)換void ObjectToWorld(float point[3], float result[3])。//坐標(biāo)點從World到Object轉(zhuǎn)換void WorldToObject(float point[3], float result[3])。void WorldTranslate(float d[3])。 //坐標(biāo)在World轉(zhuǎn)換● Eye 坐標(biāo)的運算//計算Eye坐標(biāo)軸的點void SetEyeStruct(float eyeX, float eyeY, float eyeZ, float centerX, float centerY, float centerZ, float upX, float upY, float upZ,EYE amp。 eye)。//坐標(biāo)點從World到Eye轉(zhuǎn)換void WorldToEye(float point[3], float result[3], EYE eye)。// 坐標(biāo)點從Eye到World轉(zhuǎn)換void EyeToWorld(float point[3], float result[3], EYE eye)。// 坐標(biāo)點在Eye中的轉(zhuǎn)換void EyeTranslate(float d[3], EYE eye)。// 坐標(biāo)點在Eye中的旋轉(zhuǎn)void EyeRotate(float point[3], float normal[3], float angle, EYE eye)?!?三維操作void Translate(float d[])。//平移void Zoom(float scale)。//縮放void Project()。//投影void SpinGlobal(float axes[],float angle)。//旋轉(zhuǎn)上述基本的初始化完成,: 游戲場景1Figure game scene 1 運動模型實現(xiàn)(1)利用鼠標(biāo)交互對視點和箭頭的控制視圖旋轉(zhuǎn)函數(shù)定義:MouseSpinGlobal(UINT nFlags,int x,int y,int init);該函數(shù)是將獲得客戶區(qū)的矩形區(qū)域進行視圖旋轉(zhuǎn)變換。視圖縮放函數(shù)定義:MouseZoom(UINT nFlags,int x,int y);該函數(shù)是將獲得的客戶區(qū)的矩形區(qū)域進行視圖的縮小或者放大。與之相關(guān)的函數(shù)是Zoom和project。視圖平移函數(shù)定義:MouseTranslate(UINT nFlags,int x,int y);該函數(shù)是將獲得的客戶區(qū)的矩形區(qū)域進行視圖的平移。與之相關(guān)的函數(shù)是Translate和EyeTranslate。箭頭選取的函數(shù)定義:MouseSelect(int x,int y);該函數(shù)是用于完成對箭頭整個客戶區(qū)的旋轉(zhuǎn)、平移、縮放、反射、正交投射和透視投射。通常,可以使用多種變換的數(shù)組來繪制場景。用戶選擇了其中的任意的一個按鈕后,用戶可以在視圖上單擊鼠標(biāo),然后鼠標(biāo)控制視圖的顯示。在程序中利用Class Wizard添加鼠標(biāo)的WM_LBUTTONDOWN, WM_LBUTTONUP和WM_MOUSEMOVE的消息響應(yīng)函數(shù),其中偽代碼如下:在OnLButtonDown消息響應(yīng)函數(shù)中代碼: if (m_nMouseAct == MOUSE_SPIN) {//視圖旋轉(zhuǎn) MouseSpinGlobal(nFlags, , , 1)。 } else if (m_nMouseAct == MOUSE_ZOOM) {//視圖縮放 MouseZoom(nFlags, , )。 } else if (m_nMouseAct == MOUSE_TRANSLATE) {//視圖平移 MouseTranslate(nFlags, , )。 } else if (m_nMouseAct == MOUSE_SELECT) { if (m_bCanHit) {//箭頭選取,擊球的方向和力度 int hit = MouseSelect(, )。 if (hit0) { GLuint name[3]。 m_nSelectObject = GetSelectObjFront(hit, name)。}} 在OnMouseMove中的關(guān)鍵代碼:if ( nFlags amp。 MK_LBUTTON ){ 處理的是視圖旋轉(zhuǎn),平移,縮放 ………………………//代碼省略 else if (m_nMouseAct == MOUSE_SELECT) { if (m_nSelectObject == 1) { int x,y。 int j。 float length=INFINITY。 //當(dāng)無窮大用; GLdouble modelMatrix[16]。 GLdouble projMatrix[16]。 GLint viewport[4]。 RECT rect。 GLdouble dx,dy,dz。 GLdouble sx,sy,sz。 GLdouble ox,oy,oz。 float tmpf。 x = 。 y = glMatrixMode(GL_MODELVIEW)。//當(dāng)前矩陣方式 glPushMatrix()。 glTranslatef(, TABLE_HEIGHT/+*BALL_RADIUS, )。 glTranslatef(m_fPosition[0][0],m_fPosition[0][1],m_fPosition[0][2])。 GetClientRect(amp。rect)。 y = 。 glGetDoublev(GL_MODELVIEW_MATRIX,modelMatrix)。 glGetDoublev(GL_PROJECTION_MATRIX,projMatrix)。 glGetIntegerv(GL_VIEWPORT,viewport)。 gluProject(m_fDirection[0],m_fDirection[2], modelMatrix,projMatrix,viewport, amp。sx,amp。sy,amp。sz)。 gluProject(, modelMatrix,projMatrix,viewport, amp。ox,amp。oy,amp。oz)。 tmpf = sqrt(((float)xox)*((float)xox)+((float)yoy)*((float)yoy))/ sqrt((sxox)*(sxox)+(syoy)*(syoy))。 gluProject(tmpf*m_fDirection[0],tmpf*m_fDirection[2], modelMatrix,projMatrix,viewport, amp。sx,amp。sy,amp。sz)。 gluUnProject((float)x,(float)y,sz, modelMatrix,projMatrix,viewport, amp。dx,amp。dy,amp。dz)。 m_fDirection[0] = dx。 m_fDirection[2] = dz。 m_fStrength = tmpf = sqrt(dx*dx+dz*dz)。(2)運動和碰撞球體運動時候,跟蹤每個球體的運動的位置,下面定義一個跟蹤球體的結(jié)構(gòu)體:struct TrackballStruct{ float centerX, centerY。 // 球體中心 float radius 。 // 球體的半徑 float pointX1, pointY1。 // 第一次鼠標(biāo)開始的位置 float pointX2, pointY2。 // 第二次鼠標(biāo)結(jié)束的位置 float pointX3, pointY3。 // 釋放鼠標(biāo)的位置}。跟蹤球體函數(shù)的具體代碼:void Trackball(int event, float radius , float centerX, float centerY, float mouseX, float mouseY, float amp。axisX , float amp。axisY , float amp。axisZ, float amp。angle ){ static TrackballStruct TB。 if(event==0) // 臺球開始的位置 {………….//代碼省略 } if(event0) // 臺球運動時候需要計算數(shù)據(jù) { ...................//代碼需要計算的數(shù)據(jù)類型 // 計算 sinTao, cosTao dx = 。 dy = 。 VectorCopy(V1, dx, dy, )。 dx = 。 dy = 。 VectorCopy(V2, dx, dy, )。 VectorCro
點擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1