计算机图形学 交互式项目(鼠标,键盘,菜单)

本文介绍了一个使用Visual Studio 2019 C++开发的交互式计算机图形学项目。用户可以通过键盘上下左右控制小车移动,鼠标左键实现倒车功能,鼠标右键则可以打开菜单进行更多操作。
摘要由CSDN通过智能技术生成

环境介绍:

visual studio 2019 c++

键盘上下左右可控制小车移动,鼠标左键可倒车,鼠标右键可打开菜单

源代码:

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include <iostream>
#include<graphics.h>
#include <glut.h>

using namespace std;


float delta_v = 0.0;
float r = 1.0, g = 1.0, b = 0.0;
float r1 = 0.0, g1 = 0.0, b1 = 0.0;
float P[16];
float M[16];

#define N 10			//线段最大条数


//************ 光线及材质的定义**************

GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 };
GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat light_position[] = { 20.0, 20.0, 20.0, 0.0 };
GLfloat mat_specular1[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat mat_diffuse1[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat mat_ambient1[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat mat_shininess1 = { 10.0 };
GLfloat global_ambient[] = { 0.1,0.1,0.1,0.1 };
GLfloat vertices[][3] = { {-0.7,0,1},{0.7,0,1},{0.7,0,-1},{-0.7,0,-1},{-0.5,1,0.8},{0.5,1,0.8},{0.5,1,-0.8}, {-0.5,1,-0.8} };



void menu(int id) {
    switch (id)
    {
    case (1):
        exit(0);
        break;
    }
    glutPostRedisplay();
}

void mouseMotion(GLint button, GLint state, GLint x, GLint y)     //鼠标交互
{
    if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
    {
        glTranslatef(0, 0, 0.1 + delta_v);
        glutPostRedisplay();
    }
}



//***********车身颜色变化菜单************

void color_car_body_menu(int id)
{

    switch (id) {

    case(1):
        r = 1.0; g = 0.0; b = 0.0;
        break;

    case(2):
        r = 0.0; g = 1.0; b = 0.0;
        break;

    case(3):
        r = 0.0; g = 0.0; b = 1.0;
        break;

    case(4):
        r = 0.9; g = 0.1; b = 0.6;
        break;

    case(5):
        r = 0.7; g = 0.5; b = 0.1;
        break;

    case(6):
        r = 1.0; g = 0.0; b = 0.0;
        break;
    }
    glutPostRedisplay();

}


//************车轮颜色变化菜单***************

void color_car_wheel_menu(int id)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小yuan不搜题

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值