- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OpenGL5.ppt-静宜大学.ppt
viewport 的縮放效果 Viewing 靜宜大學資工系 蔡奇偉 副教授 2003-2005 大綱 簡介 端點座標的轉換 簡介 底下我們比較用 OpenGL 程式產生場景畫面和用相機拍照的過程: 相機 OpenGL 1. 選定相機位置和拍攝的角度 viewing transformation 2. 安排場景中物件的位置 modeling transformation 3. 選擇鏡頭或調整縮放度 projection transformation 4. 決定沖印的尺吋 viewport transformation 端點座標的轉換 Model/View Transformation 由於相機和物件的座標變換是彼此相對的,譬如:物件固定不動而相機往左移 10 單位等同於相機不動而物件往右移 10 單位,所以 OpenGL 把兩者合併在一起,稱為 Model/View Transformation。 由於 OpenGL 使用矩陣堆疊,因此我們應該按照下列順序來安排程式碼: 設定相機的位置、角度、與拍攝方向。 物件的座標變換,如平移、旋轉、或放大縮小。 建立物件模型(用物件座標系統) 經過這一道座標變換我們得到物件在相機座標系統下的座標,稱之為 eye coordinates。 Projection Transformation 若指定了剪裁面(clipping planes),OpenGL 先截除掉落在剪裁面以外的物件部分,然後再實施透視(perspective)投影或正交(orthogonal)投影的轉換。此外,落在視體( viewing volume)之外的物件部分也會自動地被截除。 經過這一道轉換所得的座標稱為 clip coordinates。 Perspective division 這一個階段把 clip coordinate 的齊次座標 (x, y, z, w) 改成三維座標 (x/w, y/w, z/w),稱之為 normalized device coordinates(正規化裝置座標)。 Viewport Transformation 所謂 viewport(視埠)是指視窗上的一塊矩形區域。透過 viewport transformation,normalized device coordinates 被轉換成視窗座標。 你可以設定 viewpot 的原點位置、寬度、和高度。調整寬和高之間的比例可以產生放大、縮小、壓扁、拉長的效果。 範例 /* * cube.c * This program demonstrates a single modeling transformation, * glScalef() and a single viewing transformation, gluLookAt(). * A wireframe cube is rendered. */ #include GL/glut.h void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_FLAT); } void display(void) { glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glLoadIdentity (); /* clear the matrix */ /* viewing transformation */ gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); /* modeling transformation */ glScalef (1.0, 2.0, 1.0); /* model */ glutWireCube (1.0); glFlush (); } 相機位置的座標 up 方向 注視點的座標 void reshape (int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); glLoadIdentity (); /* perspective projection */ glFrustum (-1.0, 1.0, -1.0, 1.0, 1.5, 20.0); glMatrixMode (GL_MODELVIEW); } int main(int ar
您可能关注的文档
- IPTV网路电视平台建置与应用.ppt
- IP管理系统(单位管理者功能).doc
- IP网络主机电子屏调试攻略.ppt
- ISOIEC17025认可证书CNAS-PD2009-B1机构名称麦格纳汽车.doc
- ISOIEC17025认可证书CNAS-PD2009-B3机构名称陕西省电.doc
- ISOIEC17025认可证书CNAS-PD2009-B4机构名称中国化工.doc
- ISOIEC17025认可证书CNAS-PD2009-B4机构名称汕头市.doc
- JF99A粉体接触角测量仪使用说明书.doc
- Joomla网站架构简介-电算中心.ppt
- KYN61-40.5高压开关柜技术规范-电气.doc
- OpenGL中的纹理映射.ppt
- OvidSP系列资料库教育训练MedlineGlobalHealthPsycINFO.ppt
- P6室内表贴全彩主要设备和材料的品牌及规格1.doc-衡阳市中心医院.doc
- PACS、RIS及病理系统升级技术要求要求本次PACS、RIS及病理系统.doc
- Part3.6气缸的工作特性及计算1.气缸的压力特性图3-33气缸的压力.ppt
- Part4-南京大学计算机系.ppt
- PCB工艺设计规范目的规范产品的PCB工艺设计,规定PCB工艺设计.doc
- Petri网的应用.ppt
- PE复合土工膜施工粘接技术在防渗工程中的应用研究(2008-09-0111.doc
- PHP中的面向对象开发.ppt
文档评论(0)