PROGRAM 6 Earth E. Angel.

Slides:



Advertisements
Similar presentations
面向对象与设计模式 RD 常见编程范式介绍  并行编程 - Process-orientedProcess-oriented  组件编程 - Component-basedComponent-based  事件驱动 - Service-oriented,Time-drivenService-orientedTime-driven.
Advertisements

「國土資訊系統自然環境基本資料庫分組─ 經濟地理資訊圖資建置第1期計畫」
第1单元 操作系统概论 第一节 绪论 操作系统定义.
一、平面点集 定义: x、y ---自变量,u ---因变量. 点集 E ---定义域, --- 值域.
四資二甲 第三週作業 物件導向程式設計.
管理学基本知识.
滁州学院首届微课程教学设计竞赛 课程名称:高等数学 主讲人:胡贝贝 数学与金融学院.
教囝篇.
项目二 网店运营 2.2 网店日常运营管理.
河南理工大学 计算机学院 徐文鹏 教学博客 Opengl.cnblogs.com
计算机图形学 授课教师:陈荣钦 短号: 单位:数信学院.
拾貳、 教育行政 一、教育行政的意義 教育行政,可視為國家對教育事務的管理 ,以增進教育效果。 教育行政,乃是一利用有限資源在教育參
課程銜接 九年一貫暫行綱要( )  九年一貫課程綱要( ) 國立台南大學數學教育系 謝 堅.
2.4 二元一次方程组的应用(1).
第三章 控制结构.
第8章 字元與字串處理 8-1 C語言的字元檢查函數 8-2 C語言的字串 8-3 字串的輸入與輸出 8-4 指標與字串
计算机图形学 讲 授:董兰芳 研究方向:科学计算可视化 图形、图像处理 模式识别 中国科学技术大学 视觉计算与可视化实验室
OpenGL常见问题.
OpenGL (7) 靜宜大學資工系 蔡奇偉 副教授
C 程式設計— 指標.
Viewing 靜宜大學資工系 蔡奇偉 副教授
ANDROID 中的 3D 繪圖 作者:陳鍾誠.
C 程式設計— 指標 台大資訊工程學系 資訊系統訓練班.
OpenGL使用简介.
Function.
程序设计期末复习 黎金宁
第三章 C++中的C 面向对象程序设计(C++).
程式撰寫流程.
類別(class) 類別class與物件object.
(Circular Linked Lists)
Linux操作系统分析 中国科学技术大学计算机系 陈香兰(0512- )
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
Introduction to OpenGL (2)
第6章 图形几何变换.
第4讲 C++程序控制结构(二) 4.1 循环结构 4.2 转向控制 4.3 综合案例分析.
C++ 程式設計 基礎篇 張啟中 Chang Chi-Chung.
鄧姚文 資料結構 第一章:基本概念 鄧姚文
鄧姚文 資料結構 第五章:遞迴 鄧姚文
第二章 Java基本语法 讲师:复凡.
Chapter 5 Attributes of Output Primitives (图元的属性)
安裝 / 操作 flashget SOP (以Win 7 作業系統為範例)
Module - pyopengl 應用於2d,3d圖形繪製.
OpenGL几何变换程序.
一用就上手3D列印設計 AUTODESK 123D Tinkercad 3D 設計網站
Oop8 function函式.
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
CVPlayer下載及安裝& IVS操作說明
7.1 C程序的结构 7.2 作用域和作用域规则 7.3 存储属性和生存期 7.4 变量的初始化
GLUT 事件處理函式 靜宜大學資管系 蔡奇偉 副教授
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
現代專案管理教材 第一章 專案與專案管理 博碩文化出版發行.
第二章 类型、对象、运算符和表达式.
本节内容 引用类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Pthread.
第二章 基本数据类型 ——数据的表示.
PROGRAM 7 SQUARE E. Angel.
OpenGL 基础 计算机科学与技术系.
C程序设计.
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
挑戰C++程式語言 ──第9章 函數.
本节内容 指针类型.
Chapter 6 函數.
第6章 嵌入式软件开发基础.
基本資料型態 變數與常數 運算子 基本的資料處理 授課:ANT 日期:2014/03/03.
光照模型 计算机科学与技术系.
PROGRAM 1 Simple E. Angel, Interactive Computer Graphics A Top-Down Approach with OpenGL, Third Edition Addison-Wesley Longman, 2003.
自由曲线与曲面(II) 计算机科学与技术.
本节内容 指针类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
用加減消去法解一元二次聯立方程式 台北縣立中山國中 第二團隊.
方法(Method) 函數.
Presentation transcript:

PROGRAM 6 Earth E. Angel

程式敘述 利用OpengGL 中 quad strips 和 triangle fans畫出一具有經緯度的圓球體 在視窗上按下滑鼠左鍵,從視角觀看地球繞著圓心由上往下旋轉 按下滑鼠右鍵,地球繞著圓心水平方向順時鐘旋轉

void earth() { double x, y, z, thet, phi; int nlat, nlong; double c; x=y=0; z=1; glBegin(GL_TRIANGLE_FAN);//指定的座標用來畫出三角扇形串列,第一個座標點當作原點,而每個後續的點會與前面一個點及原點構成三角形 glVertex3d(x,y,z); c=3.14159/180.0; z=sin(c*80.0); for(thet=-180.0; thet<=180.0;thet+=20.0) x=sin(c*thet)*cos(c*80.0); y=cos(c*thet)*cos(c*80.0); } glEnd(); z=-1;

glBegin(GL_TRIANGLE_FAN); glVertex3d(x,y,z); z=-sin(c*80.0); for(thet=-180.0; thet<=180.0;thet+=20.0) { x=sin(c*thet)*cos(c*80.0); y=cos(c*thet)*cos(c*80.0); } glEnd(); for(phi=-80.0; phi<=80.0; phi+=20.0) glBegin(GL_QUAD_STRIP);//指定的座標會建立四邊形串列 x=sin(c*thet)*cos(c*phi); y=cos(c*thet)*cos(c*phi); z=sin(c*phi); x=sin(c*thet)*cos(c*(phi+20.0)); y=cos(c*thet)*cos(c*(phi+20.0)); z=sin(c*(phi+20.0));

static GLfloat theta[] = {0.0,0.0,0.0}; static GLint axis = 2; void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glRotatef(theta[0], 1.0, 0.0, 0.0);//將現有的矩陣乘上一個旋轉矩陣,繞著向後面三參數所成的座標,和原點所形成的法向量,旋轉第一個參數角度 glRotatef(theta[1], 0.0, 1.0, 0.0); glRotatef(theta[2], 0.0, 0.0, 1.0); earth(); glFlush(); glutSwapBuffers();//在雙重緩衝區模式下進行緩衝區的切換 }

void spinEarth() { theta[axis] += 2.0; if( theta[axis] > 360.0 ) theta[axis] -= 360.0; glutPostRedisplay();//通知GLUT 更新現在視窗 } void mouse(int btn, int state, int x, int y) if(btn==GLUT_LEFT_BUTTON && state == GLUT_DOWN) theta[0]+=2; if(btn==GLUT_MIDDLE_BUTTON && state == GLUT_DOWN) theta[1]+=2; if(btn==GLUT_RIGHT_BUTTON && state == GLUT_DOWN) theta[2]+=2; glutPostRedisplay();

void myReshape(int w, int h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if (w <= h) glOrtho(-2.0, 2.0, -2.0 * (GLfloat) h / (GLfloat) w, 2.0 * (GLfloat) h / (GLfloat) w, -10.0, 10.0); else glOrtho(-2.0 * (GLfloat) w / (GLfloat) h, 2.0 * (GLfloat) w / (GLfloat) h, -2.0, 2.0, -10.0, 10.0); glMatrixMode(GL_MODELVIEW); }

void main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(500, 500); glutCreateWindow("sphere"); glutReshapeFunc(myReshape); glutDisplayFunc(display); glutIdleFunc(NULL); glutMouseFunc(mouse); glEnable(GL_DEPTH_TEST); glClearColor(1.0, 1.0, 1.0, 1.0); glColor3f(0.0, 0.0, 0.0); glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);//此函數讓程式設計者可以變更畫出多邊形的方式,在此指出多邊形的前面與後面會因為模式變更而改變. GL_LINE會產生多邊形的輪廓 glutMainLoop(); }

執行結果