OpenGL【2 坐标变换】

// OpenGL.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
#include <GL/glut.h>
#include <GL/glaux.h>
using namespace std;

void init(void)
{
	glClearColor(1.0,1.0,1.0,1.0);
	glClear(GL_COLOR_BUFFER_BIT);
	glShadeModel(GL_SMOOTH);
}
void drawTriangle(void)
{
	glBegin(GL_TRIANGLES);//开始画三角形
	glShadeModel(GL_SMOOTH);//设置为光滑明暗模式
	glColor3f(1.0,0.0,0.0);//设置第一个顶点为红色
	glVertex2f(-1.0,-1.0);//设置第一个顶点的坐标为(-1.0,-1.0)
	glColor3f(0.0,1.0,0.0);//设置第二个顶点为绿色
	glVertex2f(0.0,-1.0);//设置第二个顶点的坐标为(0.0,-1.0)
	glColor3f(0.0,0.0,1.0);//设置第三个顶点为蓝色
	glVertex2f(-0.5,1.0);//设置第三个顶点的坐标为(-0.5,1.0)
	glEnd();//三角形结束
}

void myDisplay(void)
{
	glClear(GL_COLOR_BUFFER_BIT);//buffer设置为颜色可写
	drawTriangle();
	glTranslatef(1,0,0);//坐标变换

	drawTriangle();
	glFlush();//强制OpenGL函数在有限时间内运行
}
void CALLBACK reshape(GLsizei w,GLsizei h)
{
	glViewport(0,0,w,h);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPerspective(100,1,1,20);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	glTranslatef(0,0,-15);
}
void CALLBACK display(void)
{
	myDisplay();
	glFlush();
}

void main()
{
	auxInitDisplayMode(AUX_SINGLE|AUX_INDEX);
	auxInitPosition(100,100,500,500);
	auxInitWindow(L"draw the color sphere");
	init();
	auxReshapeFunc(reshape);
	auxMainLoop(display);

}

glTranslate是对坐标进行平移,glRotate对坐标进行旋转,glScale实际上是对坐标的缩放。

OpenGL【2 坐标变换】

时间: 2024-10-07 05:26:32

OpenGL【2 坐标变换】的相关文章

Android OpenGL ES(十二):三维坐标系及坐标变换初步 .

OpenGL ES图形库最终的结果是在二维平面上显示3D物体(常称作模型Model)这是因为目前的打部分显示器还只能显示二维图形.但我们在构造3D模型时必须要有空间现象能力,所有对模型的描述还是使用三维坐标.也就是使用3D建模,而有OpenGL ES库来完成从3D模型到二维屏幕上的显示. 这个过程可以分成三个部分: 坐标变换,坐标变换通过使用变换矩阵来描述,因此学习3D绘图需要了解一些空间几何,矩阵运算的知识.三维坐标通常使用齐次坐标来定义.变换矩阵操作可以分为视角(Viewing),模型(Mo

OpenGL坐标系介绍

OpenGL坐标系介绍 OpenGL可以分成四种坐标系,分别是世界坐标系,模型坐标系,眼坐标系,设备坐标系. 数学的观点:向量空间和仿射空间 仿射空间(affine space)是向量空间的扩展,除了标量和向量,它还包含另外一种对象-点. 尽管在仿射空间中对两个点以及一个点和一个标量没有定义运算,但对一个向量和一个点定义了一种运算--向量-点加法,它的结果是一个点.也可以说有一种称为点-点减法的运算,这种运算由两个点得到一个向量. 计算机科学的观点 把标量.点和向量看做是集合中的元素,并且可以按

OpenCASCADE Coordinate Transforms

OpenCASCADE Coordinate Transforms [email protected] Abstract. The purpose of the OpenGL graphics processing pipeline is to convert 3D descriptions of objects into a 2D image that can be displayed. In many ways, this process is similar to using a came

图像处理学习过程——网站,视频,书籍(长期更新)

网站: http://www.linuxgraphics.cn/home/index.html 图像处理编程相关的网站,也讲到了一些基础知识.特点是比较全,关于图形处理各方面的知识都有涉及到,但是比较粗浅.可以从这里延伸深入研究某个领域. http://pippin.gimp.org/image_processing/ 图像处理位图和矢量图相关基础知识介绍,英文网站,决定以翻译的形式放到博客中来. 视频: http://v.163.com/special/opencourse/daishu.ht

OpenGl学习之坐标变换(上)

      坐标变换是深入理解三维世界的基础,非常重要.学习这部分首先要清楚几个概念:视点变换.模型变换.投影变换.视口变换. 在现实世界中,所有的物体都具有三维特征,但计算机本身只能处理数字,显示二维的图形,因此我们要将三维物体用二维数据表示出来,这一联系的点就是坐标.在OpenGL三维空间中坐标的形式有两种:世界坐标系和局部坐标系. ①世界坐标系:始终固定不变.举例,以太阳系中心太阳为中心原点,建立世界坐标系的话,地球绕太阳的公转运动是世界坐标的变换. ②局部坐标系:物体本身的中心.地球的自

说说我对OpenGL坐标变换几个关键点的理解

刚接触OpenGL的朋友们,可能对坐标变换不太理解. 本人不才, 接触了三维一段时间后,冒昧说说我的理解, 如有偏差, 请指正. 一:  首先说说什么是世界坐标. 每个三维模型都有自己的局部坐标, 这个大家都好理解,  这个称作模型坐标, 坐标原点可以是模型的中心.   但是一个场景中如果有许多个三维模型,  那要想标准其每个位置, 就需要一个统一的坐标来标定,  那么这个坐标就叫世界坐标.  这都好理解对吧,  下面说点难的. 二:  再说说世界坐标怎么转换到摄像机坐标. 我们知道,  观察三

OpenGL图形管线和坐标变换[转]

1. OpenGL 渲染管线 OpenGL渲染管线分为两大部分,模型观测变换(ModelView Transformation)和投影变换(Projection Transformation).做个比喻,计算机图形开发就像我们照相一样,目的就是把真实的场景在一张照相纸上表现出来.那么观测变换的过程就像是我们摆设相机的位置,选择好要照的物体,摆好物体的造型.而投影变换就像相机把真实的三维场景显示在相纸上一样.下面就分别详细的讲一下这两个过程. 1.1模型观测变换 让我们先来弄清楚OpenGL中的渲

OpenGL ES总结(二)OpenGL坐标变换之平移及旋转

世界坐标系: 在OpenGL中,世界坐标系是以屏幕中心为原点(0, 0, 0),且是始终不变的.你面对屏幕,你的右边是x正轴,上面是y正轴,屏幕指向你的为z正轴.长度单位这样来定:窗口范围按此单位恰好是(-1,-1)到(1,1),即屏幕左下角坐标为(-1,-1),右上角坐标为(1,1). openGL使用右手坐标 从左到右,x递增 从下到上,y递增 从远到近,z递增 当前绘图坐标系: 是绘制物体时的坐标系.程序刚初始化时,世界坐标系和当前绘图坐标系是重合的.当用glTranslatef(),gl

OpenGL坐标变换专题

OpenGL坐标变换专题(转) OpenGL通过相机模拟.可以实现计算机图形学中最基本的三维变换,即几何变换.投影变换.裁剪变换.视口变换等,同时,OpenGL还实现了矩阵堆栈等.理解掌握了有关坐标变换的内容,就算真正走进了精彩地三维世界. 一.OpenGL中的三维物体的显示 (一)坐标系统 在现实世界中,所有的物体都具有三维特征,但计算机本身只能处理数字,显示二维的图形,将三维物体及二维数据联系在一起的唯一纽带就是坐标. 为了使被显示的三维物体数字化,要在被显示的物体所在的空间中定义一个坐标系