Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INGENIERÍA EN SISTEMAS
COMPUTACIONALES
Graficación.
ESTUDIANTE:
Esferas.
YUCATÁN. 28/Noviembre/2023
COMENTARIOS:
Mi experiencia desarrollando este programa fue bastante gratificante y relajada. Aunque este
proyecto marcó mi primera incursión en el diseño de esferas específicamente, mi experiencia
previa en trabajos en 3D me proporcionó una base sólida.
Lo más destacado fue el desarrollo de un método único que simplificó enormemente la tarea de
dibujar esferas. Al diseñar una función (DivEsfera) que acepta parámetros como el número de
divisiones, el radio y la posición, pude reutilizar este método para crear y visualizar fácilmente
esferas en diversas partes de la aplicación.
Además, la incorporación de botones para alternar entre modos ("Esferas" y "Rebote") hizo que la
visualización de las esferas y su comportamiento fuera muy intuitiva. Esta característica facilitó la
interacción con la aplicación y proporcionó una forma sencilla de cambiar entre diferentes
escenarios de visualización.
Seis Esferas.
Esferas Revotando.
Código Fuente.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using SharpGL;
namespace Esferas_AngelAdolfoLavadoresMis
{
public partial class Form1 : Form
{
float rotx;
float roty;
float rotz;
float a=-2.0f;
float b=2.0f;
int ban=0;
int Caso = 3;
public Form1()
{
InitializeComponent();
SharpGL.OpenGL gl = this.openGLCtrl1.OpenGL;
float[] light_ambient = { 0.2f, 0.2f, 0.2f, 1.0f };
float[] light_diffuse = { 1, 0, 1, 0, 1, 0, 1, 0 };
float[] light_specular = { 1, 0, 1, 0, 1, 0, 1, 0 };
float[] light_position = { 5.5f, 0.0f, 1.5f, 1.0f };
gl.ClearColor(0.0f, 0.0f, 0.0f, 0.0f);
gl.Light (OpenGL.LIGHT0, OpenGL.SPECULAR, light_specular);
gl.Enable(OpenGL.LIGHTING);
gl.Enable(OpenGL.LIGHT0);
gl.Enable(OpenGL.DEPTH_TEST);
}
Esfera.Material.Ambient = System.Drawing.Color.Blue;
Esfera.QuadricDrawStyle = SharpGL.SceneGraph.Quadrics.Quadric.DrawStyle.Silhouette;
Vertex Rotacion2 = new Vertex(0.0f, roty, 0.0f);
Esfera.Rotate = Rotacion2;
DivEsfera(50, 16, 0.4f, -2.0f, 0.5f, 0.0f, lavadores, Esfera);
Esfera.Material.Ambient = System.Drawing.Color.Orange;
Esfera.QuadricDrawStyle = SharpGL.SceneGraph.Quadrics.Quadric.DrawStyle.Line;
Vertex Rotacion3 = new Vertex(rotx, roty, rotz);
Esfera.Rotate = Rotacion3;
DivEsfera(50, 16, 0.4f, +2.0f, 0.5f, 0.0f, lavadores, Esfera);
Esfera.Material.Ambient = System.Drawing.Color.Orange;
Esfera.QuadricDrawStyle = SharpGL.SceneGraph.Quadrics.Quadric.DrawStyle.Line;
Vertex Rotacion4 = new Vertex(0.0f, 0.0f, rotz);
Esfera.Rotate = Rotacion4;
DivEsfera(50, 16, 0.4f, 0.0f, -0.5f, 0.0f, lavadores, Esfera);
Esfera.Material.Ambient = System.Drawing.Color.Red;
Esfera.QuadricDrawStyle = SharpGL.SceneGraph.Quadrics.Quadric.DrawStyle.Point;
Vertex Rotacion5 = new Vertex(rotx, roty, rotz);
Esfera.Rotate = Rotacion5;
DivEsfera(50, 16, 0.4f, -2.0f, -0.5f, 0.0f, lavadores, Esfera);
Esfera.Material.Ambient = System.Drawing.Color.Blue;
Esfera.QuadricDrawStyle = SharpGL.SceneGraph.Quadrics.Quadric.DrawStyle.Silhouette;
Vertex Rotacion6 = new Vertex(rotx, 0.0f, 0.0f);
Esfera.Rotate = Rotacion6;
DivEsfera(50, 16, 0.4f, +2.0f, -0.5f, 0.0f, lavadores, Esfera);
rotx += 0.2f;
roty += 0.2f;
rotz += 0.2f;
}
if (Caso == 0)
{
Esfera.Material.Ambient = System.Drawing.Color.Red;
Esfera.QuadricDrawStyle = SharpGL.SceneGraph.Quadrics.Quadric.DrawStyle.Point;
DivEsfera(50, 16, 0.4f, a, 0.0f, 0.0f, lavadores, Esfera);
Esfera.Material.Ambient = System.Drawing.Color.Blue;
Esfera.QuadricDrawStyle = SharpGL.SceneGraph.Quadrics.Quadric.DrawStyle.Silhouette;
DivEsfera(50, 16, 0.4f, b, 0.0f, 0.0f, lavadores, Esfera);
//*********************************************************
if (a < -0.4f && ban == 0)
{
a += 0.02f;
}
else
{
ban = 1;
if (a > -2.0f)
{
a -= 0.02f;
}
else
{ ban = 0; }
}
//*********************************************************
if (b > 0.4f && ban == 0)
{
b -= 0.02f;
}
else
{
ban = 1;
if (b < 2.0f)
{
b += 0.02f;
}
else
{ ban = 0; }
}
//*********************************************************
}
private void DivEsfera(int SLI, int STA, float RAD, float POSX, float POSY, float POSZ,
SharpGL.OpenGL gl,SharpGL.SceneGraph.Quadrics.Sphere Esfera)
{
Esfera.Draw(gl);
}
}
}