实验名称:二维卡通人脸交互设计与控制
实验要求:
- 根据OpenGL提供的直线,多边形绘制算法,实现基于鼠标交互的卡通人物设计与绘制。
- 使用颜色填充与反走样技术对人脸进行绘制。
- 实现对卡通人脸的交互控制,点击鼠标左键可以对人脸进行拖拽移动。
- 按“↑”按键能够实现卡通人脸绕坐标原点进行旋转。
- 附加要求:选中其中的一个多边形区域,点击鼠标右键,弹出一个菜单,可以对该区域进行不同颜色的选择。
实验步骤:左击选择对象,右击染色。按住向上箭头逆时针旋转,按住向下箭头顺时针旋转。
实验截图:
实验源码:
#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,