⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 本人的毕业设计 提供给大家 共同学习
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	}	

	glEnable( GL_AUTO_NORMAL );
	glEnable( GL_NORMALIZE );


//	glRotatef( g_RotateWhole, 0.0f, 1.0f, 0.0f );
	if( bChangeCamera )
	{
		gluLookAt( eyex, eyey, eyez, atx, aty, atz, 0.0f, 1.0f, 0.0f );/*设定视点位置*/
	}
	
	if( !bChangeCamera )
	{
		glRotatef( g_RotateWhole, 0.0f, 1.0f, 0.0f );
	}
	
	if( iSceneFlag == 1 )
	{
		displayAllScene();
	}


//	glCallList( iList_SphereSandAll );//粒子系统测试
	/*绘制挖掘机*/
	glPushMatrix();
	    glTranslatef( xpos, 0.0f, zpos );

		if( bChangeCamera )
		{
			glTranslatef( -0.524f, 0.0f, 1.5f );
			glRotatef( g_RotateWhole, 0.0f, 1.0f, 0.0f );
			glTranslatef( 0.524f, 0.0f, -1.5f );
		}
		else
		{
			glRotatef( g_RotateWhole, 0.0f, 1.0f, 0.0f );
		}

	    glScalef( 0.001f, 0.001f, 0.001f );/*将挖掘机缩小1000倍*/
		
		if( !bChangeCamera )
		{
			glCallList( iList_grab );/*绘制底座*/
		}
		

	    glPushMatrix();
		    if( bChangeCamera )
			{
				glTranslatef( -524.0f, 0.0f, 1500.0f );
				glRotatef( g_RotatePingtai, 0.0f, 1.0f, 0.0f );
				glTranslatef( 524.0f, 0.0f, -1500.0f );
			}
			else
			{
				glTranslatef( 0.0f, 0.0f, 1173.085f );
				glRotatef( g_RotatePingtai, 0.0f, 1.0f, 0.0f );
				glTranslatef( 0.0f, 0.0f, -1173.085f );
			}
			
		    
		    glCallList( iList_grab + 1 );/*绘制平台*/
	    
			if( !bChangeCamera )
			{
				glCallList( iList_grab + 2 );/*绘制玻璃*/
			}	    

			glPushMatrix();
			    glCallList( iList_grab + 3 );/*绘制弯臂连接座*/
				glCallList( iList_grab + 4 );/*绘制弯臂旋转推杆大端*/
				glCallList( iList_grab + 5 );/*绘制弯臂旋转推杆小端*/

				glPushMatrix();
				    glTranslatef( 0.0f, -702.497f, 206.118f );
					glRotatef( g_RotateWanbixiayouganda, 1.0f, 0.0f, 0.0f );
					glTranslatef( 0.0f, 702.497f, -206.118f );
				    glCallList( iList_grab + 7 );/*绘制弯臂下油杆大端*/
				glPopMatrix();

				glPushMatrix();
				    glTranslatef( 0.0f, -500.845f, 450.916f );
		            glRotatef( g_RotateWanbi, 1.0f, 0.0f, 0.0f );
			        glTranslatef( 0.0f, 500.845f, -450.916f );
				    glCallList( iList_grab + 6 );/*绘制弯臂*/

					glPushMatrix();
					    glTranslatef(0.0f, 495.025f, -482.886f );
						glRotatef(g_RotateWanbixiayouganxiao, 1.0f, 0.0f, 0.0);
						glTranslatef(0.0f, -495.025f, 482.886f);
					    glCallList( iList_grab + 8 );/*绘制弯臂下油杆小端*/
					glPopMatrix();

					glPushMatrix();
					    glTranslatef(0.0f, 1136.3f, -651.074f);
						glRotatef( g_RotateWanbishangyouganda, 1.0f, 0.0f, 0.0f);
						glTranslatef(0.0f, -1136.3f, 651.074f);
					    glCallList( iList_grab + 9 );/*绘制弯臂上油杆大端*/
					glPopMatrix();

					glPushMatrix();
					    glTranslatef( 0.0f, 1122.591f, -2027.993f );
						glRotatef( g_RotateQianbi, 1.0f, 0.0f, 0.0f );
						glTranslatef( 0.0f, -1122.591f, 2027.993f );

					    glCallList( iList_grab + 11 );/*绘制前臂*/

						glPushMatrix();
						    glTranslatef(0.0f, 1501.416f, -2543.906f);
							glRotatef( g_RotateWanbishangyouganxiao, 1.0f, 0.0f, 0.0f);
							glTranslatef(0.0f, -1501.416f, 2543.906f);
					        glCallList( iList_grab + 10 );/*绘制弯臂上油杆小端*/
						glPopMatrix();

						glPushMatrix();
						    glTranslatef( 0.0f, 1043.418f, -2510.224f );
							glRotatef( g_RotateQianyouganda, 1.0f, 0.0f, 0.0f );
							glTranslatef( 0.0f, -1043.418f, 2510.224f );
						    glCallList( iList_grab + 12 );/*绘制前油杆大端*/
						glPopMatrix();

						glPushMatrix();	
						    glTranslatef( 0.0f, -287.509f, -1744.321f );
							glRotatef( g_RotateLiangan1, 1.0f, 0.0f, 0.0f );
							glTranslatef( 0.0f, 287.509f, 1744.321f );
							glCallList( iList_grab + 14 );/*绘制连杆1*/	
						glPopMatrix();
						
						glPushMatrix();
						    glTranslatef( 0.0f, -545.868f, -1648.629f );
							glRotatef( g_RotateDou, 1.0f, 0.0f, 0.0f );
							glTranslatef( 0.0f, 545.868f, 1648.629f );

							glPushMatrix();
							    glTranslatef( 0.0f, -844.684f, -1652.246f );
								glRotatef( g_RotateLiangan2, 1.0f, 0.0f, 0.0f );
								glTranslatef( 0.0f, 844.684f, 1652.246f );
						        glCallList( iList_grab + 15 );/*绘制连杆2*/

								glPushMatrix();
							        glTranslatef( 0.0f, -622.111f, -1977.631f );
								    glRotatef( g_RotateQianyouganxiao, 1.0f, 0.0f, 0.0f );
								    glTranslatef( 0.0f, 622.111f, 1977.631f );
							        glCallList( iList_grab + 13 );/*绘制前油杆小端*/
								glPopMatrix();

							glPopMatrix();

						    glCallList( iList_grab + 16 );/*绘制铲斗*/

												

						glPopMatrix();

					glPopMatrix();

				glPopMatrix();
				
			glPopMatrix();

		glPopMatrix();

	glPopMatrix();/*挖掘机绘制结束*/
	
	glDisable( GL_NORMALIZE );/*关闭法向自动计算*/
	glDisable( GL_AUTO_NORMAL );
	
	SwapBuffers(g_hDC);									/* 交换缓冲区*/
}

void displayAllScene( void )
{
	/*绘制总场景*/
	glPushMatrix();
	    glScalef( 0.001f, 0.001f, 0.001f );
		glTranslatef( 0.0f, -1564.4f, 0.0f );
		glCallList( iList_AllScene );
	glPopMatrix();/*总场景绘制结束*/
}



void ClearScene( void )
{
	if( !bFirstEntryAll )
	{
		ClearAllScene();
	}

	if( !bFirstEntryLoad )
	{
		ClearLoadScene();
	}

}

void ClearAllScene( void )
{
	/*删除总场景的数据*/
	for(int i = 0; i < g_3DModelAllScene.numOfObjects; i++)
	{
		/*删除所有的变量*/
		delete [] g_3DModelAllScene.pObject[i].pFaces;
		delete [] g_3DModelAllScene.pObject[i].pNormals;
		delete [] g_3DModelAllScene.pObject[i].pVerts;
		delete [] g_3DModelAllScene.pObject[i].pTexVerts;
	}
}



void ClearLoadScene( void )
{
}



void ClearStatus( void )
{
	g_RotateWhole = 0.0f;
    g_RotateWanbi = 0.0f;
    g_RotateWanbishangyouganda = 0.0f;
    g_RotateWanbishangyouganxiao = 0.0f;
    g_RotateWanbixiayouganda = 0.0f;
    g_RotateWanbixiayouganxiao = 0.0f;
    g_RotateQianyouganda = 0.0f;
    g_RotateQianyouganxiao = 0.0f;
    g_RotateLiangan1 = 0.0f;
    g_RotateLiangan2 = 0.0f;

	bChangeCamera = true;
	bHasObject = false;


    g_RotatePingtai = 0.0f;
    g_RotateQianbi = 0.0f;	
    g_RotateDou = 0.0f;	
	xpos = 0;
	zpos = 0;

	eyex = -0.524f;
	eyez = 1.5f;
}



BOOL CALLBACK HelpDlgProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam) 
{ 
    switch (message) 
    { 
        case WM_COMMAND: 
            {
				switch( wParam )
				{
				case IDOK:
					SetCursor( false );
					EndDialog( hwndDlg, wParam );					
					break;
				}
			}
			break;

		case WM_KEYDOWN:
			switch( wParam )
			{
			case VK_ESCAPE:
				exit( 1 );
				EndDialog( hwndDlg, wParam );
				break;
			}
			
			break;
    } 
    return FALSE; 
} 

LRESULT CALLBACK WinProc(HWND hWnd,UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    LONG    lRet = 0; 
    PAINTSTRUCT    ps;

    switch (uMsg)
	{ 

	case WM_CREATE:

    case WM_SIZE:							
		if( !g_bFullScreen )				
		{
			SizeOpenGLScreen(LOWORD(lParam),HIWORD(lParam));
			GetClientRect(hWnd, &g_rRect);				
		}
        break; 
 
	case WM_PAINT:									
		BeginPaint(hWnd, &ps);						
		EndPaint(hWnd, &ps);					
		break;

	case WM_KEYDOWN:									/* 键盘响应*/
		keys[wParam] = true;
		switch(wParam) {								
			case VK_ESCAPE:								/* 按下ESC键*/
				if( MessageBox(g_hWnd, "确定退出吗?", "退出", MB_YESNO | MB_ICONQUESTION ) == IDYES )
				{
					PostQuitMessage(0);	
				}
								
				break;

			case 0x41:                                  /* 'a'*/
				if( g_RotatePingtai >= 90.0 )
				{
				}
				else
				{
					g_RotatePingtai += 3.0f;
				}				
				break;

			case 0x44:
				if( g_RotatePingtai <= -90.0 )
				{
				}
				else
				{
					g_RotatePingtai -= 3.0f;
				}
				
				break;


			case 0x43:
				bChangeCamera = bChangeCamera ? false : true;
				break;

			case 0x52:
				ClearStatus();
				break;

			case VK_F1:
				ShowCursor( true );
				DialogBox( NULL, MAKEINTRESOURCE(IDD_DIALOG_HELP), g_hWnd, (DLGPROC)HelpDlgProc );
//				SetFocus( IDOK );
//				ShellExecute(NULL, "open", "help.chm", NULL, ".\\", SW_SHOW );
//				ShellExecute(NULL, "Open", "help.txt", NULL, ".\\", SW_SHOW );/*显示帮助文档*/
				break;

			case VK_F2:
				ShowCursor( true );
				DialogBox( NULL, MAKEINTRESOURCE(IDD_DIALOG_SCENESELECT), g_hWnd, (DLGPROC)SceneSelectProc );
				break;

			case 0x47:
				if( g_RotateQianbi < -10.0f )
				{
				}
				else
				{
					g_RotateQianbi -= 3.0f;
					if( g_RotateQianbi < 0.0f )
					{
						g_RotateWanbishangyouganda = 0.3f*g_RotateQianbi;
						g_RotateWanbishangyouganxiao = -0.7*g_RotateQianbi;
					}
					else
					{
						g_RotateWanbishangyouganda = 0.24f*g_RotateQianbi;
						if( g_CountWanbishangyouganxiao > 13 )
						{
							g_RotateWanbishangyouganxiao = -0.73*g_RotateQianbi;
						}
						else
						{
							g_RotateWanbishangyouganxiao = -0.70*g_RotateQianbi;
						}

						g_CountWanbishangyouganxiao --;
					}
				}
				break;

			case 0x46:
				if( g_RotateQianbi >= 60.0f )
				{
				}
				else
				{
					g_RotateQianbi += 3.0f;
					if( g_RotateQianbi > 0.0f )
					{
						g_RotateWanbishangyouganda = 0.24f*g_RotateQianbi;
						
						if ( g_CountWanbishangyouganxiao > 13 )
						{
							g_RotateWanbishangyouganxiao = -0.73*g_RotateQianbi;
						}
						else
						{
							g_RotateWanbishangyouganxiao = -0.7*g_RotateQianbi;
						}
						g_CountWanbishangyouganxiao ++;						
					}
					else
					{
						g_RotateWanbishangyouganda = 0.3f*g_RotateQianbi;
						g_RotateWanbishangyouganxiao = -0.7*g_RotateQianbi;
					}
					
				}
				break;

			case 0x48:
				if( g_RotateDou < -30.0f )
				{
				}
				else
				{
					if(  g_RotateDou >= 27.0f )
					{
						bHasObject = false;
//						MessageBox( NULL, "SUCCESS", "NOTE", MB_OK );
					}
					else
					{
						bHasObject = true;
					}

					g_RotateDou -= 3.0f;
					g_RotateLiangan2 = -0.6*g_RotateDou;
					g_RotateLiangan1 = 0.6*g_RotateDou;
					g_RotateQianyouganxiao = 0.5*g_RotateLiangan2;
					
					if( g_RotateQianyouganda > 0 )
					{
						g_RotateQianyouganda = 0.05*g_RotateDou;
					}
					else
					{
						g_RotateQianyouganda = 0.1*g_RotateDou;
					}
				}
				break;

			case 0x4A:
				if( g_RotateDou > 30.0f )
				{
				}
				else
				{
					if(  g_RotateDou >= 27.0f )
					{
						bHasObject = false;
//						MessageBox( NULL, "SUCCESS", "NOTE", MB_OK );
					}
					else
					{
						bHasObject = true;
					}

					g_RotateDou += 3.0f;
					g_RotateLiangan2 = -0.6f*g_RotateDou;
					g_RotateLiangan1 = 0.6f*g_RotateDou;
					g_RotateQianyouganxiao = 0.5*g_RotateLiangan2;

					if( g_RotateQianyouganda > 0 )
					{
						g_RotateQianyouganda = 0.05*g_RotateDou;
					}
					else
					{
						g_RotateQianyouganda = 0.1*g_RotateDou;
					}
					
				}
				break;

			case 0x4C:				

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -