计算机图形学 实验二 OpenGL简单动画
生活随笔
收集整理的這篇文章主要介紹了
计算机图形学 实验二 OpenGL简单动画
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、 實驗目的
二、 實驗環境
操作系統:Windows 10 1909版本 64位 語言開發環境:Microsoft Visual Studio 2017 程序框架:Win32 桌面應用程序。三、 實驗要求與內容
實驗步驟:
閑置函數的使用與簡單動畫
觀察到六邊形按照程序視窗中心點逆時針旋轉,要更改旋轉速度,可通過更改myidle()閑置函數的屬性值theta大小實現。
2) 添加多邊形模式設置與線寬設置觀看效果
觀察到旋轉的多邊形變成空心線框模式。
回到多邊形填充模式修改代碼:
觀察到“Hello”字符串在設定的坐標點定位顯示
設置全局變量 int k = 0;
在myidle函數添加代碼
效果如圖:觀察到六邊形靜止,直線單獨旋轉
思考:要使直線保持與及其時鐘秒針拍溫和,可在myidle函數中設置Sleep(1000)延時一秒,并設置theta=+= 6*PI/180; 使得每秒轉過6°,一分鐘轉一周。
}
觀察到時間函數的作用效果,即每隔1000ms變換一次圖形,使直線旋轉theta度。
3.簡單時鐘設計
1) 在程序頭部定義系統時間變量、時分秒變量
2)定義PI變量
#define PI 3.14159263)引入數學文件、時間頭文件
#include<cmath> #include<ctime>4)在初始化函數中獲取系統時間,分別獲取時分秒數據。
void init() {GetLocalTime(&timeNow); //獲取系統時間hh = timeNow.wHour;mm = timeNow.wMinute;ss = timeNow.wSecond; }5)繪制函數display()中計算時、分、秒,確定繪制時分秒針的起始點坐標。
//xc,yc為時針中心點坐標//xs,ys為秒針終止點坐標//xm,ym為分針終止點坐標float xs, ys, xm, ym, xh, yh;float xc = 0, yc = 0;//Calculatexs = xc + R * cos(PI / 2.0 - ss / 60 * 2 * PI);ys = yc + R * sin(PI / 2.0 - ss / 60 * 2 * PI);xm = xc + R * cos(PI / 2.0 - (mm + ss / 60.0) / 60.0*2.0*PI);ym = yc + R * sin(PI / 2.0 - (mm + ss / 60.0) / 60.0*2.0*PI);xh = xc + (R - 5)*cos(PI / 2.0 - (hh + (mm + ss / 60.0) / 60.0) / 12.0*2.0*PI); yh = yc + (R - 5)*sin(PI / 2.0 - (hh + (mm + ss / 60.0) / 60.0) / 12.0*2.0*PI); 6)以直線方式繪制時、分、秒針。glColor3f(1, 0, 0);glBegin(GL_LINES);glVertex2f(xc, yc);glVertex2f(xs, ys);glEnd();glColor3f(1, 1, 0);glBegin(GL_LINES);glVertex2f(xc, yc);glVertex2f(xm, ym);glEnd();glColor3f(0, 1, 1);glBegin(GL_LINES);glVertex2f(xc, yc);glVertex2f(xh, yh);glEnd();7)繪制靜止正六邊形
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);glLineWidth(2.0);glColor3f(1, 1, 1);glBegin(GL_POLYGON);for (int i = 0; i < n; i++) { //繪制正六邊形glVertex2f(R*cos(theta + i * 2 * PI / n), R*sin(theta + i * 2 * PI / n));}glEnd();8)在時間函數mytime(t)中設置重復獲取系統當前時間。
void idletime(int t) {GetLocalTime(&timeNow); //獲取系統時間hh = timeNow.wHour;mm = timeNow.wMinute;ss = timeNow.wSecond;glutTimerFunc(1000, idletime, 10);glutPostRedisplay(); //重繪函數 }觀察到簡單時鐘的顯示,時分針秒針以時鐘的形式呈現在視區中,并以當前的時間正確顯示。
效果圖
完整代碼:
總結
以上是生活随笔為你收集整理的计算机图形学 实验二 OpenGL简单动画的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 各硬盘编号含义
- 下一篇: 5G NR标准协议架构-5G协议应该怎么