计算机图形学之简易太阳系

本文介绍了作者在学习计算机图形学时完成的一个大作业——创建一个简易的太阳系模型,包括纹理和光照效果。虽然原本要求地球和月亮有不同的旋转方向,但作者将其简化为在同一平面上。提供了代码分享,需要glut库支持,适用于Visual Studio 2017环境。

前言

最近学Computer Graphics的时候,第一次大作业是写一个太阳系。由于老师要求松,自己又一直拖着没交,最后干脆直接总写了一个带纹理、光照的太阳系。交上去之后发现有点问题:题目要求月亮和地球绕着不同的方向旋转,这里没想到直接把它们平面化了。。。不过这也好,直接放上来间接防抄袭了。。。所以现在把代码发布如下,希望能对各位同袍有一些帮助。

注意复制代码后不能直接运行,需要glut库。可自行前往官网下载配置即可。

运行环境 Visual Studio 2017,语言C++。

MySolar

#include <stdlib.h>
#include<cmath>
#include<stdlib.h>
#include "glut.h"
#include <windows.h>

using namespace std;
bool bPersp = false;
bool bWire = false;
int year = 0, day = 0, marsYear = 0;
int speed = 12;
int wHeight = 0;
int wWidth = 0;
int state = 1;
float light_angle = 0;
float light_radius = 8.0;
float eye[] = {
   
    5.5, 1.7, 1.7 };
float center[] = {
   
    0, 0, 0 };
GLUquadricObj *g_g;

void lightPosition()
{
   
   
	float y, z;
	y = light_radius*cos(light_angle);
	z = light_radius*sin(light_angle);
	float light_position[] = {
   
    3.1, y, z, 0.0 };
	glLightfv(GL_LIGHT0, GL_POSITION, light_position);
}

void init(void)
{
   
   
	glClearColor(0.0, 0.0, 0.0, 0.0);
	lightPosition();
	glShadeModel(GL_SMOOTH);
	glEnable(GL_LIGHTING);
	glEnable(GL_LIGHT0);
	glEnable(GL_DEPTH_TEST);
	glEnable(GL_COLOR_MATERIAL);
	g_g = gluNewQuadric();
}

void
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值