#include "LoadBMP.h"
void myinit(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D); //启用二维纹理
GLfloat light0_ambient[] = {1, 1, 1, 1}; //环境光
GLfloat light0_diffuse[] = {1, 1, 1, 1}; //散射光
GLfloat light0_position[] = {0, 0, 0, 1}; //光源位置
glLightfv(GL_LIGHT0,GL_AMBIENT,light0_ambient);
glLightfv(GL_LIGHT0,GL_DIFFUSE,light0_diffuse);
glLightfv(GL_LIGHT0,GL_POSITION,light0_position);
LoadAllTextures(); //调入纹理
}
void myidle()
{
day+=angle;
glutPostRedisplay();
}
void mymouse(int button,int state,int x,int y)
{
if(state==GLUT_DOWN && button==GLUT_LEFT_BUTTON){
if(first)
{
glutIdleFunc(myidle);
first=!first;
}
else
{
glutIdleFunc(0);
first=!first;
}
}
}
void mykeyboard(unsigned char key, int x, int y)
{
if (key == 27)
exit(0);
}
void mydisplay(void)
{
year=day/365;
month=day/30;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
GLfloat mat_ambient1[] = {1,0,0,1};
GLfloat mat_emission[] = {1,1,1,0};
GLfloat mat_ambient2[] = {0.4,0.4,0.8,1};
GLfloat no_emission[] = {0,0,0,1};
glPushMatrix();
glBindTexture(GL_TEXTURE_2D,sun->texID);
glRotatef (month, 0.0, 1.0, 0.0); //太阳自转
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient1);
glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission);
glRotatef (90, -1, 0, 0);
gltDrawSphere(1.0, 40, 40); //绘制太阳
glPopMatrix();
glPushMatrix();
glRotatef (year, 0.0, 1.0, 0.0); //月亮与地球一起绕太阳转(地球公转)
glPushMatrix();
glBindTexture(GL_TEXTURE_2D,earth->texID);
glTranslatef (3.0, 0.0, 0.0);
glRotatef (month, 0.0, 1.0, 0.0); //地球自转
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient2);
glMaterialfv(GL_FRONT, GL_EMISSION, no_emission);
glRotatef (90, -1, 0, 0);
gltDrawSphere(0.4, 40, 40); //绘制地球
glPopMatrix();
glPushMatrix();
glBindTexture(GL_TEXTURE_2D,moon->texID);
glTranslatef (3.0, 0.0, 0.0);
glRotatef (60, -1, 1, 0);
glRotatef (month, 0, 1.0, 0); //月球绕地球转
glTranslatef (0.6, 0.0, 0.0);
glRotatef (90, -1, 0, 0);
gltDrawSphere(0.07, 20, 20); //绘制月球
glPopMatrix();
glPopMatrix();
glFlush();
glutSwapBuffers();
}
void myreshape (int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h); //指定视口大小
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1, 20); //透视投影
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); //指定照相机的位置
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize (1000, 600);
glutInitWindowPosition (100, 100);
glutCreateWindow (argv[0]);
myinit ();
glutDisplayFunc(mydisplay);
glutReshapeFunc(myreshape);
glutIdleFunc(myidle);
glutMouseFunc(mymouse);
glutKeyboardFunc(mykeyboard);
glutMainLoop();
return 0;
}
_古怪
- 粉丝: 35
- 资源: 8
最新资源
- VMware虚拟机安装、备份与恢复全攻略
- 昆仑通态MCGS与3台英威腾GD变频器通讯 器件:昆仑通态触摸屏,3台英威腾GD系列变频器,附送接线说明和设置说明 功能:实现频率设定,启停控制,实际频率读取等,状态指示
- 机会约束最优潮流:不确定性下的风险感知网络控制 python源代码,代码按照高水平文章复现,保证正确 当不可控制的资源波动时,电力行业通常使用最优潮流(OPF)在输电网络的控制区域重新调度每小时可控的
- 最优控制电池储能模型 蓄电池储能模型的最优控制python源代码,代码按照高水平文章复现 包含五个python脚本,它从data .csv读取价格、负载和温度数据 然后用本文中描述的决策变量、目标和
- 项目管理表格,用来管理项目进度以及把控项目过程
- 一种分布式鲁棒优化的微电网单元分配方法 python源代码,代码按照高水平文章复现,保证正确 针对电网负荷和电力市场价格不确定的情况,提出了一种分布式鲁棒单元承诺方法 提出的关键推力的方法是利用Ku
- 不同操作系统下Node.js安装与环境配置教程:涵盖Windows、macOS和Linux系统
- VMware虚拟机安装与备份恢复全解析:覆盖下载、安装、配置到高级数据保护策略
- 变压器励磁模型 Matlab simulink 质量过硬 可用于模拟电压暂降等电能质量问题,适配于本家的IEEE 33节点模型
- 微信小程序开发全流程解析:从账号注册到API调用与发布
- 利用插电式电动汽车提高电网暂态稳定性 python联合PSS E源代码,代码按照高水平文章复现,保证正确 插电式电动汽车(pev)在放电模式下可以作为分布式能源和电力资源,作为车到网(V2G)设备运行
- 基于自适应在线学习的概率负荷预测python联合matlab源代码 负荷预测对于多种能源管理任务是至关重要的,例如调度发电能力,规划供应和需求,最小化能源交易成本 近年来,由于可再生能源、电动汽车和
- 示例:在 Python 中定义链表
- 平台采用小米1代扫地机 目前只有32端代码能实现延边避障防跌 落充电等功能 适合需要学习项目与代码规范的工程师 硬件驱动包含 陀螺仪姿态传感器bmi160、电源管理bq24733等 软件驱
- 电网经济和频率控制的多层,多时间尺度模型方法 Julia源代码,代码按照高水平文章复现,保证正确,可先发您文章看是否满足您的要求 由于分散的可再生能源和存储的不断增加,电力系统受到根本性变化的影响
- java将八进制转换为十进制的自定义方法
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
- 4
- 5
- 6
前往页