- 浏览: 38646 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
qian3313:
好!非常好!
hibernate中lazy="false"理解 -
雪韧梅:
...
hibernate和struts2心得 -
xycdgc:
是啊,在自学struts,书上的一个例子,自己尝试着敲了下, ...
struts2+hibernate实现简单登录与注册 -
pweffort:
看到好熟悉哦.
struts2+hibernate实现简单登录与注册
今天,把小时钟在黑夜模式下添加了探照灯,完成了我电脑图学的第三个作业。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Tao.OpenGl; using Tao.FreeGlut; namespace homework3 { public partial class Form1 : Form { double second_rot = 0.0; double minit_rot = 0.0; double hour_rot = 0.0; double rot = 0.0; int status = 0; int light1_status = 1; int light2_status = 1; int light3_status = 1; int light4_status = 1; DateTime mydatetime = new DateTime(); public Form1() { InitializeComponent(); this.simpleOpenGlControl1.InitializeContexts(); Glut.glutInit(); } private void setVolume() { Gl.glMatrixMode(Gl.GL_PROJECTION); Gl.glLoadIdentity(); double aspect = (double)this.simpleOpenGlControl1.Size.Width / (double)this.simpleOpenGlControl1.Size.Height; Glu.gluPerspective(45.0, aspect, 0.1, 100.0); Gl.glViewport(0, 0, this.simpleOpenGlControl1.Width, this.simpleOpenGlControl1.Height); } private void myInit() { Gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); float[] global_ambient = new float[] { 0.2f, 0.2f, 0.2f }; float[] light0_ambient = new float[4] {0.2f,0.2f,0.2f,1.0f }; float[] light0_diffuse = new float[4] {0.7f,0.7f,0.7f,1.0f }; float[] light0_specular = new float[4] {0.9f,0.9f,0.9f,1.0f}; Gl.glLightModelfv(Gl.GL_LIGHT_MODEL_AMBIENT, global_ambient); Gl.glLightfv(Gl.GL_LIGHT0 , Gl.GL_AMBIENT, light0_ambient); Gl.glLightfv(Gl.GL_LIGHT0, Gl.GL_DIFFUSE, light0_diffuse); Gl.glLightfv(Gl.GL_LIGHT0, Gl.GL_SPECULAR, light0_specular); Gl.glLightfv(Gl.GL_LIGHT1, Gl.GL_AMBIENT, light0_ambient); Gl.glLightfv(Gl.GL_LIGHT1, Gl.GL_DIFFUSE, light0_diffuse); Gl.glLightfv(Gl.GL_LIGHT1, Gl.GL_SPECULAR, light0_specular); Gl.glLightfv(Gl.GL_LIGHT2, Gl.GL_AMBIENT, light0_ambient); Gl.glLightfv(Gl.GL_LIGHT2, Gl.GL_DIFFUSE, light0_diffuse); Gl.glLightfv(Gl.GL_LIGHT2, Gl.GL_SPECULAR, light0_specular); Gl.glLightfv(Gl.GL_LIGHT3, Gl.GL_AMBIENT, light0_ambient); Gl.glLightfv(Gl.GL_LIGHT3, Gl.GL_DIFFUSE, light0_diffuse); Gl.glLightfv(Gl.GL_LIGHT3, Gl.GL_SPECULAR, light0_specular); Gl.glLightfv(Gl.GL_LIGHT4, Gl.GL_AMBIENT, light0_ambient); Gl.glLightfv(Gl.GL_LIGHT4, Gl.GL_DIFFUSE, light0_diffuse); Gl.glLightfv(Gl.GL_LIGHT4, Gl.GL_SPECULAR, light0_specular); Gl.glColorMaterial(Gl.GL_FRONT_AND_BACK, Gl.GL_AMBIENT_AND_DIFFUSE); Gl.glEnable(Gl.GL_COLOR_MATERIAL); Gl.glEnable(Gl.GL_LIGHTING); Gl.glEnable(Gl.GL_LIGHT0); Gl.glEnable(Gl.GL_DEPTH_TEST); Gl.glEnable(Gl.GL_NORMALIZE); status = 0; } private void simpleOpenGlControl1_Load(object sender, EventArgs e) { myInit(); setVolume(); mydatetime = DateTime.Now; second_rot = mydatetime.Second * 6.0; minit_rot = mydatetime.Minute * 6.0; hour_rot = mydatetime.Hour * 30+mydatetime.Minute*0.5; } private void simpleOpenGlControl1_Paint(object sender, PaintEventArgs e) { Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); Gl.glMatrixMode(Gl.GL_MODELVIEW); Gl.glLoadIdentity(); Glu.gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); float[] material_ambient = new float[4] { 0.2f, 0.2f, 0.2f, 1.0f }; float[] material_diffuse = new float[4] { 0.7f, 0.7f, 0.7f, 1.0f }; float[] material_specular = new float[4] { 0.8f, 0.8f, 0.8f, 1.0f }; float[] light0_position = new float[4] { 0.0f, 0.0f, 5.0f,1.0f}; float[] light0_direction = new float[3] { 0.0f, 0.0f, 0.0f }; light0_direction[0] = light0_direction[0] - light0_position[0]; light0_direction[1] = light0_direction[1] - light0_position[1]; light0_direction[2] = light0_direction[2] - light0_position[2]; Gl.glLightfv(Gl.GL_LIGHT0, Gl.GL_POSITION, light0_position); Gl.glLightfv(Gl.GL_LIGHT0, Gl.GL_SPOT_DIRECTION, light0_direction); Gl.glMaterialfv(Gl.GL_FRONT_AND_BACK, Gl.GL_AMBIENT, material_ambient); Gl.glMaterialfv(Gl.GL_FRONT_AND_BACK, Gl.GL_DIFFUSE, material_diffuse); Gl.glMaterialfv(Gl.GL_FRONT_AND_BACK, Gl.GL_SPECULAR, material_specular); Gl.glMaterialf(Gl.GL_FRONT_AND_BACK, Gl.GL_SHININESS, 100.0f); Gl.glRotated(rot, 0.0, 1.0, 0.0); Gl.glColor3ub(0, 255, 0); Glut.glutSolidTorus(0.15, 1.5, 40, 40); Gl.glPushMatrix(); Gl.glColor3ub(255, 255, 0); Gl.glScaled(1.0, 1.0, 0.1); Glut.glutSolidSphere(1.35, 40, 40); Gl.glPopMatrix(); Gl.glPushAttrib(Gl.GL_LIGHTING_BIT); Gl.glTranslated(0.0, 0.0, 0.15); if (rot < 90 && rot > -90) { Gl.glPushMatrix(); Gl.glColor3ub(255, 0, 0); Gl.glTranslated(0.0, 1.15, 0.0); Gl.glScaled(0.1, 1.0, 0.01); Glut.glutSolidCube(0.3); Gl.glPopMatrix(); Gl.glPushMatrix(); Gl.glColor3ub(255, 0, 0); Gl.glTranslated(-1.15 * Math.Sin(30 * Math.PI / 180.0), 1.15 * Math.Cos(30 * Math.PI / 180.0), 0.0); Gl.glRotated(30.0, 0.0, 0.0, 1.0); Gl.glScaled(0.1, 1.0, 0.01); Glut.glutSolidCube(0.3); Gl.glPopMatrix(); Gl.glPushMatrix(); Gl.glColor3ub(255, 0, 0); Gl.glTranslated(-1.15 * Math.Sin(60 * Math.PI / 180.0), 1.15 * Math.Cos(60 * Math.PI / 180.0), 0.0); Gl.glRotated(60.0, 0.0, 0.0, 1.0); Gl.glScaled(0.1, 1.0, 0.01); Glut.glutSolidCube(0.3); Gl.glPopMatrix(); Gl.glPushMatrix(); Gl.glColor3ub(255, 0, 0); Gl.glTranslated(-1.15, 0.0, 0.0); Gl.glRotated(90.0, 0.0, 0.0, 1.0); Gl.glScaled(0.1, 1.0, 0.01); Glut.glutSolidCube(0.3); Gl.glPopMatrix(); Gl.glPushMatrix(); Gl.glColor3ub(255, 0, 0); Gl.glTranslated(-1.15 * Math.Sin(120 * Math.PI / 180.0), 1.15 * Math.Cos(120 * Math.PI / 180.0), 0.0); Gl.glRotated(120.0, 0.0, 0.0, 1.0); Gl.glScaled(0.1, 1.0, 0.01); Glut.glutSolidCube(0.3); Gl.glPopMatrix(); Gl.glPushMatrix(); Gl.glColor3ub(255, 0, 0); Gl.glTranslated(-1.15 * Math.Sin(150 * Math.PI / 180.0), 1.15 * Math.Cos(150 * Math.PI / 180.0), 0.0); Gl.glRotated(150.0, 0.0, 0.0, 1.0); Gl.glScaled(0.1, 1.0, 0.01); Glut.glutSolidCube(0.3); Gl.glPopMatrix(); Gl.glPushMatrix(); Gl.glColor3ub(255, 0, 0); Gl.glTranslated(0, -1.15, 0.0); Gl.glRotated(180.0, 0.0, 0.0, 1.0); Gl.glScaled(0.1, 1.0, 0.01); Glut.glutSolidCube(0.3); Gl.glPopMatrix(); Gl.glPushMatrix(); Gl.glColor3ub(255, 0, 0); Gl.glTranslated(-1.15 * Math.Sin(210 * Math.PI / 180.0), 1.15 * Math.Cos(210 * Math.PI / 180.0), 0.0); Gl.glRotated(210.0, 0.0, 0.0, 1.0); Gl.glScaled(0.1, 1.0, 0.01); Glut.glutSolidCube(0.3); Gl.glPopMatrix(); Gl.glPushMatrix(); Gl.glColor3ub(255, 0, 0); Gl.glTranslated(-1.15 * Math.Sin(240 * Math.PI / 180.0), 1.15 * Math.Cos(240 * Math.PI / 180.0), 0.0); Gl.glRotated(240.0, 0.0, 0.0, 1.0); Gl.glScaled(0.1, 1.0, 0.01); Glut.glutSolidCube(0.3); Gl.glPopMatrix(); Gl.glPushMatrix(); Gl.glColor3ub(255, 0, 0); Gl.glTranslated(-1.15 * Math.Sin(270 * Math.PI / 180.0), 1.15 * Math.Cos(270 * Math.PI / 180.0), 0.0); Gl.glRotated(270.0, 0.0, 0.0, 1.0); Gl.glScaled(0.1, 1.0, 0.01); Glut.glutSolidCube(0.3); Gl.glPopMatrix(); Gl.glPushMatrix(); Gl.glColor3ub(255, 0, 0); Gl.glTranslated(-1.15 * Math.Sin(300 * Math.PI / 180.0), 1.15 * Math.Cos(300 * Math.PI / 180.0), 0.0); Gl.glRotated(300.0, 0.0, 0.0, 1.0); Gl.glScaled(0.1, 1.0, 0.01); Glut.glutSolidCube(0.3); Gl.glPopMatrix(); Gl.glPushMatrix(); Gl.glColor3ub(255, 0, 0); Gl.glTranslated(-1.15 * Math.Sin(330 * Math.PI / 180.0), 1.15 * Math.Cos(330 * Math.PI / 180.0), 0.0); Gl.glRotated(330.0, 0.0, 0.0, 1.0); Gl.glScaled(0.1, 1.0, 0.01); Glut.glutSolidCube(0.3); Gl.glPopMatrix(); Gl.glPushMatrix(); Gl.glColor3ub(0, 0, 255); Gl.glRotated(-hour_rot, 0.0, 0.0, 1.0); Gl.glTranslated(0.0, 0.3, 0.0); Gl.glScaled(0.1, 1.0, 0.05); Glut.glutSolidCube(1.0); Gl.glPopMatrix(); Gl.glPushMatrix(); Gl.glColor3ub(0, 0, 255); Gl.glRotated(-minit_rot, 0.0, 0.0, 1.0); Gl.glTranslated(0.0, 0.45, 0.0); Gl.glScaled(0.1, 1.8, 0.05); Glut.glutSolidCube(0.8); Gl.glPopMatrix(); Gl.glPushMatrix(); Gl.glColor3ub(255, 0, 255); Gl.glRotated(-second_rot, 0.0, 0.0, 1.0); Gl.glTranslated(0.0, 0.5, 0.0); Gl.glScaled(0.05, 2.4, 0.05); Glut.glutSolidCube(0.6); Gl.glPopMatrix(); Gl.glPopAttrib(); if (light1_status == 0) { float[] light_position = new float[4] { (float)(-1.4 * Math.Sin(120 * Math.PI / 180.0)), (float)(-1.4 * Math.Cos(120 * Math.PI / 180.0)), 0.1f, 1.0f }; float[] light_direction = new float[3] { 0.0f, 0.0f, 0.0f }; light_direction[0] = light_direction[0] - light_position[0]; light_direction[1] = light_direction[1] - light_position[1]; light_direction[2] = light_direction[2] - light_position[2]; Gl.glLightfv(Gl.GL_LIGHT1, Gl.GL_POSITION, light_position); Gl.glLightfv(Gl.GL_LIGHT1, Gl.GL_SPOT_DIRECTION, light_direction); Gl.glLightf(Gl.GL_LIGHT1, Gl.GL_SPOT_CUTOFF, (float)(Math.Atan(0.25) * 180.0 / Math.PI)); Gl.glLightf(Gl.GL_LIGHT1, Gl.GL_SPOT_EXPONENT, 1.0f); Gl.glEnable(Gl.GL_LIGHT1); } if (light2_status == 0) { float[] light_position = new float[4] { (float)(-1.4 * Math.Sin(60 * Math.PI / 180.0)), (float)(-1.4 * Math.Cos(60 * Math.PI / 180.0)), 0.1f, 1.0f }; float[] light_direction = new float[3] { 0.0f, 0.0f, 0.0f }; light_direction[0] = light_direction[0] - light_position[0]; light_direction[1] = light_direction[1] - light_position[1]; light_direction[2] = light_direction[2] - light_position[2]; Gl.glLightfv(Gl.GL_LIGHT2, Gl.GL_POSITION, light_position); Gl.glLightfv(Gl.GL_LIGHT2, Gl.GL_SPOT_DIRECTION, light_direction); Gl.glLightf(Gl.GL_LIGHT2, Gl.GL_SPOT_CUTOFF, (float)(Math.Atan(0.25) * 180.0 / Math.PI)); Gl.glLightf(Gl.GL_LIGHT2, Gl.GL_SPOT_EXPONENT, 1.0f); Gl.glEnable(Gl.GL_LIGHT2); } if (light3_status == 0) { float[] light_position = new float[4] { (float)(-1.4 * Math.Sin(240 * Math.PI / 180.0)), (float)(-1.4 * Math.Cos(240 * Math.PI / 180.0)), 0.1f, 1.0f }; float[] light_direction = new float[3] { 0.0f, 0.0f, 0.0f }; light_direction[0] = light_direction[0] - light_position[0]; light_direction[1] = light_direction[1] - light_position[1]; light_direction[2] = light_direction[2] - light_position[2]; Gl.glLightfv(Gl.GL_LIGHT3, Gl.GL_POSITION, light_position); Gl.glLightfv(Gl.GL_LIGHT3, Gl.GL_SPOT_DIRECTION, light_direction); Gl.glLightf(Gl.GL_LIGHT3, Gl.GL_SPOT_CUTOFF, (float)(Math.Atan(0.25) * 180.0 / Math.PI)); Gl.glLightf(Gl.GL_LIGHT3, Gl.GL_SPOT_EXPONENT, 1.0f); Gl.glEnable(Gl.GL_LIGHT3); } if (light4_status == 0) { float[] light_position = new float[4] { (float)(-1.4 * Math.Sin(300 * Math.PI / 180.0)), (float)(-1.4 * Math.Cos(300 * Math.PI / 180.0)), 0.1f, 1.0f }; float[] light_direction = new float[3] { 0.0f, 0.0f, 0.0f }; light_direction[0] = light_direction[0] - light_position[0]; light_direction[1] = light_direction[1] - light_position[1]; light_direction[2] = light_direction[2] - light_position[2]; Gl.glLightfv(Gl.GL_LIGHT4, Gl.GL_POSITION, light_position); Gl.glLightfv(Gl.GL_LIGHT4, Gl.GL_SPOT_DIRECTION, light_direction); Gl.glLightf(Gl.GL_LIGHT4, Gl.GL_SPOT_CUTOFF, (float)(Math.Atan(0.25) * 180.0 / Math.PI)); Gl.glLightf(Gl.GL_LIGHT4, Gl.GL_SPOT_EXPONENT, 1.0f); Gl.glEnable(Gl.GL_LIGHT4); } } } private void timer1_Tick(object sender, EventArgs e) { second_rot += 6.0; if (second_rot % 360 == 0) { minit_rot += 6.0; hour_rot += 0.5; } this.simpleOpenGlControl1.Refresh(); } private void simpleOpenGlControl1_KeyDown(object sender, KeyEventArgs e) { switch (e.KeyCode) { case Keys .D0: if (status == 0) { Gl.glDisable(Gl.GL_LIGHT0); status = 1; } else { Gl.glEnable(Gl.GL_LIGHT0); Gl.glDisable(Gl.GL_LIGHT1); status = 0; } break; case Keys.Left: if (rot >= 270 ) rot = -90; rot += 5; break; case Keys.Right: if (rot <= -270) rot = 90; rot -= 5; break; case Keys .D1: if (light1_status == 1) { light1_status = 0; } else { Gl.glDisable(Gl.GL_LIGHT1); light1_status = 1; } break; case Keys.D2: if (light2_status == 1) { light2_status = 0; } else { Gl.glDisable(Gl.GL_LIGHT2); light2_status = 1; } break; case Keys.D3: if(light3_status==1) { light3_status = 0; } else { Gl.glDisable(Gl.GL_LIGHT3); light3_status = 1; } break; case Keys.D4: if (light4_status == 1) { light4_status = 0; } else { Gl.glDisable(Gl.GL_LIGHT4); light4_status = 1; } break; } this.simpleOpenGlControl1.Refresh(); } private void 设定闹钟ToolStripMenuItem_Click(object sender, EventArgs e) { } } }
相关推荐
强力探照灯原理与电路图 工作原理:这张图分3部份,控制部份;过压保护部份;亮度部份,高亮和低亮。 【在讲述之前,我一直怀疑这张图是否R12错了,应该是一颗电容,不然就不能工作。HEF4017应该是HEF4017一个...
flash探照灯很好的资源有原代码希望大家好好利用珍惜
flash动画的源代码,探照灯,希望大家喜欢
遮罩动画(探照灯效果)
flash魔方转动和探照灯源文件。里面包含完整的源文件
根据flash制作的动画探照灯的文字效果的实验报告,
js探照灯效果.rar。。。。。。。。。。
html5 canvas绘制的一款五角星探照灯文字动画特效,通过自动放大缩小五角星形状显示探照灯区域。
利用light滤镜和javascript实现更随鼠标的探照灯效果
flash cs3 探照灯,这是一次作业,所以免费提供需要的同学,希望你能喜欢。
HTML5五角星探照灯文字效果是一款HTML5基于canvas绘制五角星形状的探照灯文字,通过自动放大缩小显示区域效果。
flash遮罩动画,里面有文字遮罩,探照灯,渐变文字
灯光晃动照射显示文字。不停的摆动,照射的文字显示,其他的不显示。
探照灯行业(2021-2026)企业市场突围战略分析与建议.docx
一种探照灯用智能控制遥控器的制作方法.docx
注意影子的变化!
PPT探照灯效果
10.3.3可控探照灯.swf
关于flash制作的探照灯效果请下载学习一下有帮助