安大计算机图形学实验——二维图形变换

本次实验基于C++和OpenGL,介绍了如何使用变换矩阵进行二维图形的平移、旋转和比例变换。实验中详细讲解了设置投影参数、视景体裁剪等关键函数的用法,并通过绘制三角形和矩形来演示这些变换。实验要求包括绘制变换后的三角形,以及根据鼠标点击位置动态绘制矩形。
摘要由CSDN通过智能技术生成

实验原理

1.本次实验着重学习以下常用函数,在实验报告中的实验原理部分对下列函数进行参数介绍和用法介绍。
glLoadIdentity();
变换矩阵:
glRotatef(theta, vx, vy, vz)
glTranslatef(dx, dy, dz)
glScalef( sx, sy, sz)
在屏幕坐标系下指定矩阵视区的函数:
glViewport(x, y, w, h);
设置投影参数:
glMatrixMode(GL_PROJECTION);
glMatrixMode(GL_MODELVIEW);
视景体裁剪(创建一个正交平行的视景体,即正投影):
glOrtho(left, right, bottom, top, near, far);
2.对顶点为V1V2V3的三角形进行平移、旋转、比例变换;并分别用不同的颜色填充变换后的三角形。三角形顶点的坐标为:V1(0.0,0.0),V2(40.0,0.0),V3(20.0,20.0)。
3.将V1V2V3三角形相对点(20.0,20.0)进行旋转,角度自己设定。
4.编写一个程序,实现如下的功能:连续两次单击鼠标左键,以两次单击的位置作为矩形的对角线来绘制一个矩形,且该矩形各边与屏幕对齐。鼠标右键用于程序的退出。
(1)将绘制矩形的函数放在鼠标回调函数中完成。
(2)修改(1)中的程序,将绘制矩形的函数放在显示回调函数中完成。鼠标回调函数用于状态的修改,并调用显示回调函数(利用glutPostRedisplay())。

(2、3)

以下的平移、缩放、旋转均为对世界坐标系变换

#include<gl/glut.h>
#include<cmath>
void tra1(void) {
   
	glBegin(GL_TRIANGLES);
	glColor3f(1.0, 0.0, 0.0);
	glVertex3f(0.0f, 0.0f, 0.0f);
	glVertex3f(0.2f, 0.2f, 0.0f);
	glVertex3f(0.4f, 0.0f, 0.0f);
	glEnd();
}
void tra2(void) {
   
	glColor3f(1.0, 1.0, 0.0);
	glTranslatef(-0.4f, 0.0f, 0.0f);
	glScalef(0.5f, 1.0f, 1.0f);
	glBegin(GL_TRIANGLES);
	glVertex3f(0.0f, 0.0f, 0.0f);
	glVertex3f(0.2f, 0.2f, 0.0f);
	glVertex3f(0.4f, 0.0f, 0.0f);
	glEnd();
	// 抵消世界坐标系的变换,注意顺序
	glScalef(2.0f, 1.0f, 1.0f);
	glTranslatef(0.4f, 0.0f, 0.0f);
}
void tra3() {
   
	glColor3f(0.0, 1.0, 0.0);
	glTranslatef(0.0f
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值