[OpenGL]图形学课程设计:二维卡通人脸交互设计与控制

本文介绍了一项使用OpenGL进行图形学课程设计的实践,通过直线和多边形绘制,实现鼠标交互控制的卡通人脸。该设计允许用户通过左键拖拽移动人脸,上键旋转,右键点击选定区域并改变颜色。实验步骤包括选择、染色及旋转操作。
摘要由CSDN通过智能技术生成

实验名称:二维卡通人脸交互设计与控制

实验要求:

  1. 根据OpenGL提供的直线,多边形绘制算法,实现基于鼠标交互的卡通人物设计与绘制。
  2. 使用颜色填充与反走样技术对人脸进行绘制。
  3. 实现对卡通人脸的交互控制,点击鼠标左键可以对人脸进行拖拽移动。
  4. 按“↑”按键能够实现卡通人脸绕坐标原点进行旋转。
  5. 附加要求:选中其中的一个多边形区域,点击鼠标右键,弹出一个菜单,可以对该区域进行不同颜色的选择。

实验步骤:左击选择对象,右击染色。按住向上箭头逆时针旋转,按住向下箭头顺时针旋转。


实验截图:


实验源码:


#include <Windows.h>
#include <gl\glut.h>
#include <stdio.h>  
#include<math.h>


#define PI 3.14
#define SIZE 512  

#define FACE 1
#define NOSE 2
#define MOUTH 3
#define HAIR 4
#define BROW 5
#define EYES 6

static int FACE_COLOR = 7;
static int NOSE_COLOR = 6;
static int MOUTH_COLOR = 1;
static int HAIR_COLOR = 4;
static int BROW_COLOR = 5;
static int EYES_COLOR = 0;

static GLfloat theta = 0;  
static GLfloat t_x = 0;
static GLfloat t_y = 0;

int select_part = 0;

static int o_x = 0;
static int o_y = 0;

#define WIN_WIDTH 500
#define WIN_HEIGHT 500
#define VIEW_WIDTH 2.2
#define VIEW_HEIGHT 2.2

static GLfloat colors[8][3] = { 
	{ 0.0, 0.0, 0.0 }, { 1.0, 0.0, 0.0 },  { 0.0, 1.0, 0.0 }, { 0.0, 0.0, 1.0 }, 
	{ 0.0, 1.0, 1.0 }, { 1.0, 0.0, 1.0 }, { 1.0, 1.0, 0.0 }, { 1.0, 1.0, 1.0 } };  


//画眼睛
void drawEyes(){
	glBegin(GL_POLYGON); 
	glVertex2f( -0.27, 0.12);
	glVertex2f( -0.27, 0.18);
	glVertex2f( -0.33,
  • 8
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值