1. 程式人生 > >10.4.3 程式設計例項-太陽系動畫

10.4.3 程式設計例項-太陽系動畫

clip_image002

#include <gl/glut.h>

float fEarth = 2.0f; //地球繞太陽的旋轉角度

float fMoon = 24.0f; //月球繞地球的旋轉角度

void Init()

{

glEnable(GL_DEPTH_TEST); //啟用深度測試

glClearColor(0.0f, 0.0f, 0.0f, 0.8f); //背景為黑色

}

void Reshape(int w, int h)

{

if (0 == h)

h = 1;

glViewport(0, 0, w, h); //設定視區尺寸

glMatrixMode(GL_PROJECTION); //指定當前操作投影矩陣堆疊

glLoadIdentity(); //重置投影矩陣

//指定透視投影的觀察空間

gluPerspective(45.0f, (float)w / (float)h, 1.0f, 1000.0f);

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

}

void Display(void)

{

//清除顏色和深度緩衝區

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glMatrixMode(GL_MODELVIEW); //指定當前操作模型檢視矩陣堆疊

glLoadIdentity(); //重置模型檢視矩陣

glTranslatef(0.0f, 0.0f, -500.0f); //將圖形沿z軸負向移動

glColor3f(1.0f, 0.0f, 0.0f); //畫太陽

glutSolidSphere(50.0f, 20, 20);

glColor3f(0.0f, 0.0f, 1.0f);

glRotatef(23.27,0.0,0.0,1.0); //地球與太陽的黃赤交角

glRotatef(fEarth, 0.0f, 1.0f, 0.0f);

glTranslatef(200.0f, 0.0f, 0.0f);

glutSolidSphere(20.0f, 20, 20); //畫地球

glPopMatrix();

glPopMatrix();

glRotatef(6.0f, 1.0f, 1.0f, 1.0f);

glRotatef(fMoon, 0.0f, 1.0f, 0.0f);

glColor3f(1.0f, 1.0f, 0.0f);

glTranslatef(30.0f, 0.0f, 0.0f);

glutSolidSphere(5.0f, 20, 20); //畫月球

glLoadIdentity();

glFlush();

glutSwapBuffers();

}

void myIdle(void) //在空閒時呼叫,達到動畫效果

{

fEarth += 0.03f; //增加旋轉步長,產生動畫效果

if (fEarth > 360.0f)

fEarth = 2.0f;

fMoon += 0.24f;

if (fMoon > 360.0f)

fMoon = 24.0f;

Display();

}

int main(int argc, char *argv[])

{

glutInit(&argc, argv);

//視窗使用RGB顏色,雙快取和深度快取

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);

glutInitWindowPosition(100,100);

glutInitWindowSize(600, 400);

glutCreateWindow("太陽系動畫");

glutReshapeFunc(Reshape);

glutDisplayFunc(Display);

glutIdleFunc(&myIdle);

Init();

glutMainLoop();

return 0;

}

相關推薦

10.4.3 程式設計例項太陽系動畫

#include <gl/glut.h> float fEarth = 2.0f; //地球繞太陽的旋轉角度 float fMoon = 24.0f; //月球繞地球的旋轉角度 void Init() { glEnable(GL_DEPTH_TEST); //

macOS Final Cut Pro X for Mac 10.4.3 破解版

macOS Final Cut Pro X for Mac 10.4.3 破解版 1,macOS系統版本 2,Final Cut Pro X for Mac 10.4.3 破解版 下載 1,macOS系統版本 $ sw_vers Pro

中雨 104.3

昨天和今天,雨很大,天氣很冷,早上7點去駕校練車,5點多回來,說真的,有點煩躁,感覺每天也學不到什麼東西。 整個人被下的和落湯雞一樣,有時候會想,這樣到底為了什麼。 這樣努力,到底為了誰! 我不知道!

10.4.3反向迭代器Reverse_iterator筆記

反向迭代器就是在容器中從尾元素向首元素反向移動的迭代器。對於反向攜帶器,遞增(以及遞減)操作的含義會顛倒過來。遞增一個反向迭代器(++it)會移動到前一個元素;遞減一個迭代器(--it)會移動到下一個元素。反向輸出經過排序後的vectorostream_iterator<

0.1 使用w查看系統負載 - 10.2 vmstat命令 - 10.3 top命令 - 10.4 sar命令 - 10.5 nload命令

使用 查看 系統負載 - 10.1 使用w查看系統負載 - 10.2 vmstat命令 - 10.3 top命令 - 10.4 sar命令 - 10.5 nload命令 # 10.1 使用w查看系統負載 ![mark](http://oqxf7c508.bkt.clouddn.com/blo

postgresql-10.1-3-windows-x64 安裝之後,起動pgAdmin 4問題(win10)

appdata clas config name program log users can brush 運行pgAdmin出現”pgAdmin 4 the application server could not be contant“ 窗口。

10.1 使用w查看系統負載 10.2 vmstat命令 10.3 top命令 10.4 sar命令

分享圖片 mark tle bold 被攻擊 margin src 攻擊 top 10.1-使用w查看系統負載10.2 vmstat命令1、vmstat命令Vmstat 1 表示每1秒,顯示一次Vmstat 1 5 表示每1秒顯示,共顯示5次10.3 top命令92個進程,

10.1 使用w查看系統負載 10.2 vmstat命令 10.3 top命令 10.4 sar命令 10.5 nload命令

僵屍進程 line 一行 uptime rtp ica blog lis png [root@lizhipeng01 ~]# w 17:43:46 up 6 min, 1 user, load average: 0.00, 0.04, 0.05 負載,1

用正則表達式實現 運算 express = '1 -2* ((60-30 +(-40/5) *(9-2*5/3 +7 /3*99 /4*2998 +10 *568 /14))-(-4*3)/(16-3*2))'

repl bsp val 實現 strip expr 運算 lac spl #!/usr/bin/env python # coding:utf-8 import re def dealwith(express): express.replace(‘+-‘,‘

4.4.3 邏輯程式設計是數學的邏輯嗎

4.4.3 邏輯程式設計是數學的邏輯嗎 在查詢語言中被使用的組合的方法首先可能與數學邏輯的與或非操作相同,查詢語言的規則的應用 在事實上是由推理的方法來完成的。查詢語言與數學邏輯的標識性並不是真正的有效的,因為查詢 語言提供了一個控制結構來程式化的解釋邏輯語句。我們能夠常常利用這種控制結構。例如,為

OpenCV3.4.3最新版本安裝詳解!VS2013平臺下,解決X86沒有問題。《OpenCV3程式設計入門》第1章基本知識--學習筆記2

第一步開啟opencv官方網站,下載opencv最新穩定版本: https://opencv.org/releases.html 點選以後,會跳轉網頁,進入網頁後,會等待下載,大概5秒鐘就會提示你下載。    (我的網頁下載比較慢,所以複製了下載連結,在迅雷

《OpenCV3程式設計入門》——4.3 基本影象繪製

目錄 1、DrawEllipse()函式的寫法 2、DrawFilledCircle()函式的寫法 3、DrawPolygon()函式的寫法 4、DrawLine()函式的寫法 基本繪製圖形程式碼: moveWindow函式 基本影象繪製涉及到的繪製函式如下:

《精通Windows API-函式、介面、程式設計例項》——第4章檔案系統

第4章檔案系統 4.2 磁碟和驅動器管理 檔案系統的基本概念: 包括磁碟分割槽,卷,目錄,檔案物件,檔案控制代碼,檔案對映 1.磁碟分割槽: 物理磁碟,邏輯磁碟 2.卷: 也稱邏輯驅動器,是NTFS,FAT32等檔案系統組織結構的最高層. 卷是

2018.10.24 ——10.3定製操作10.4再探迭代器

10.22 #include <iostream> #include <fstream> #include <vector> #include <string> #include <algorithm>

1194: C語言程式設計教程(第三版)課後習題10.4

題目描述 有n個整數,使前面各數順序向後移m個位置,最後m個數變成前面m個數,見圖。寫一函式:實現以上功能,在主函式中輸入n個數和輸出調整後的n個數。 輸入 輸入資料的個數n n個整數 移動的位置m 輸出 移動後的n個數 程式碼如下: #includ

4.4Android程式設計權威指南(第3版)————R類的問題

對於引用還未新增的資源,或者刪除仍被引用的資源而導致的編譯錯誤,通常,在新增資源或刪除引用後重新儲存檔案,Android Studio會準確無誤地重新編譯專案。不過,資源編譯錯誤有時會一直存在或莫名其妙地出現。如遇這種情況,請嘗試如下操作。 1、重新檢查資原始檔中XML檔案的有效性 如果最近

4.3Android程式設計權威指南(第3版)————Android特有的除錯工具Android Lint

Android Lint是Android應用程式碼的靜態分析器(static analyzer)。作為一個特殊程式,它能在不執行程式碼的情況下檢查程式碼錯誤。憑著Android框架的熟練掌握,Android Lint能深入檢查程式碼,找出編譯器無法發現的問題。在大多數情況下,Android

4.2Android程式設計權威指南(第3版)————應用除錯二:設定斷點

如圖,可以在某一行程式碼左側打上斷點,斷點會在斷點設定行的前一行處停止程式碼執行,然後可以逐行檢查程式碼,為啟用程式碼偵錯程式並觸發已設定的斷點,需要除錯執行而不是直接執行應用。要除錯執行應用,單擊Run按鈕旁邊的Debug按鈕,或選擇Run → Debug ‘app’ 選單項。應用啟動並

3.4 列表程式設計-erlang集合及素數

-module(sets). -export([new/0, add_element/2, del_element/2, is_element/2, is_empty/1, union/2, intersection/2]). new() -> []. add_ele

4.2.3 程式設計題《將一筆錢換算成1分、2分和5分的硬幣組合》

將一筆錢(大於8分,小於1元,精確到分)換算成1分、2分和5分的硬幣組合。輸入金額,問有幾種換算方法?要求每種硬幣至少有一枚。【輸入形式】從鍵盤輸入一個正整數n。【輸入輸出樣例1】(下劃線部分表示輸入)Input money: 10count=2【樣例說明】輸入提示符後要加一