Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
120385
VC45
Mtra. María del Carmen Taibo Cano
GRAFICACIÓN.
Actividad de aprendizaje 2. Programación con OpenGL
Estado de México
package Graficacion;
import com.sun.opengl.util.Animator;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.media.opengl.GL;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCanvas;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.glu.GLU;
public class GraficaCartesiano implements GLEventListener {
public static void main(String[] args) {
Frame frame = new Frame("GraficaCartesiano ");
GLCanvas canvas = new GLCanvas();
canvas.addGLEventListener(new GraficaCartesiano());
frame.add(canvas);
frame.setSize(640, 480);
final Animator animator = new Animator(canvas);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
GL gl = drawable.getGL();
System.err.println("INIT GL IS: " + gl.getClass().getName());
}
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
GL gl = drawable.getGL();
GLU glu = new GLU();
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
glu.gluOrtho2D(0.0, 640.0, 0.0, 480.0);
}
public void display(GLAutoDrawable drawable) {
GL gl = drawable.getGL();
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
gl.glColor3f(1,1,1);
double x, y;
double xmin, xmax, ymin, ymax;
double xpmin, xpmax, ypmin, ypmax;
double xpc, ypc;
double xp, yp;
double deltaX, deltaY;
xpmax = 640;
xpmin = 0;
ypmax = 480;
ypmin = 0;
xpc = (xpmin + xpmax)/2;
ypc = (ypmin + ypmax)/2;
gl.glBegin(GL.GL_LINES);
gl.glVertex2d(xpmin, ypc);
gl.glVertex2d(xpmax, ypc);
gl.glVertex2d(xpc, ypmin);
gl.glVertex2d(xpc, ypmax);
gl.glEnd();
gl.glColor3f(1, 1, 0);
xmin = -10;
xmax = 10;
ymin = -10;
ymax = 10;
deltaX = xpc/xmax;
deltaY = ypc/ymax;
x = xmin;
while (x<=xmax)
{
y=x*x;
//y = Math.exp(x);
//y = Math.cos(x);
xp = xpc + x * deltaX;
yp = ypc + y * deltaY;
gl.glBegin(GL.GL_POINTS);
gl.glVertex2d(xp, yp);
gl.glEnd();
x = x + 1.0/deltaX;
}
gl.glFlush();
}
public void displayChanged(GLAutoDrawable drawable, boolean modeChanged,
boolean deviceChanged) {
}
}
CODIGO 2
package Graficacion;
import com.sun.opengl.util.Animator;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.media.opengl.GL;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCanvas;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.glu.GLU;
public class GraficaCartesiano implements GLEventListener {
public static void main(String[] args) {
Frame frame = new Frame("GraficaCartesiano ");
GLCanvas canvas = new GLCanvas();
canvas.addGLEventListener(new GraficaCartesiano());
frame.add(canvas);
frame.setSize(640, 480);
final Animator animator = new Animator(canvas);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
frame.setLocationRelativeTo(null);
frame.setVisible(true);
animator.start();
}
public void init(GLAutoDrawable drawable) {
GL gl = drawable.getGL();
System.err.println("INIT GL IS: " + gl.getClass().getName());
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
}
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
GL gl = drawable.getGL();
GLU glu = new GLU();
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
glu.gluOrtho2D(0.0, 640.0, 0.0, 480.0);
}
public void display(GLAutoDrawable drawable) {
GL gl = drawable.getGL();
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
gl.glColor3f(1,1,1);
double x, y;
double xmin, xmax, ymin, ymax;
double xpmin, xpmax, ypmin, ypmax;
double xpc, ypc;
double xp, yp;
double deltaX, deltaY;
xpmax = 640;
xpmin = 0;
ypmax = 480;
ypmin = 0;
xpc = (xpmin + xpmax)/2;
ypc = (ypmin + ypmax)/2;
gl.glBegin(GL.GL_LINES);
gl.glVertex2d(xpmin, ypc);
gl.glVertex2d(xpmax, ypc);
gl.glVertex2d(xpc, ypmin);
gl.glVertex2d(xpc, ypmax);
gl.glEnd();
gl.glColor3f(1, 1, 0);
xmin = -10;
xmax = 10;
ymin = -10;
ymax = 10;
deltaX = xpc/xmax;
deltaY = ypc/ymax;
x = xmin;
while (x<=xmax)
{
y=x*x;
//y = Math.exp(x);
//y = Math.cos(x);
xp = xpc + x * deltaX;
yp = ypc + y * deltaY;
gl.glBegin(GL.GL_POINTS);
gl.glVertex2d(xp, yp);
gl.glEnd();
x = x + 1.0/deltaX;
}
gl.glFlush();
}
public void displayChanged(GLAutoDrawable drawable, boolean modeChanged,
boolean deviceChanged) {
}
}
De acuerdo a los conceptos estudiados en el subtema 2.2 “Sistema de coordenadas
“polares”, crea un programa que grafique funciones en términos de coordenadas polares,
siguiendo el proceso que a continuación se describe:
g. Crea un proyecto en JOGL dentro de NetBeans.
h. Ponle el siguiente nombre al proyecto: “GraficaPolar”, y el nombre del paquete al que
pertenece el proyecto debe ser “Graficacion”.
i. Ya creado el código fuente realiza los pasos del algoritmo 1 y 2 (de Sistema de
coordenadas rectangulares), pero en el método “display” pon el código que aparece en el
tema de “Sistema de coordenadas polares”.
j. Compila y ejecuta el código y guarda la pantalla de ejecución del programa.
k. Modifica el programa para que grafique las siguientes funciones:
i. r = a (1 + sen θ) donde a = 100.
ii. r = a – (b cos θ) donde a = 100 y b = 150
El código utilizado para realizar este ejercicio es el siguiente:
package Graficacion;
import com.sun.opengl.util.Animator;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.media.opengl.GL;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCanvas;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.glu.GLU;
public class GraficaPolar implements GLEventListener {
public static void main(String[] args) {
Frame frame = new Frame("GraficaPolar");
GLCanvas canvas = new GLCanvas();
canvas.addGLEventListener(new GraficaPolar());
frame.add(canvas);
frame.setSize(640, 480);
final Animator animator = new Animator(canvas);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
frame.setLocationRelativeTo(null);
frame.setVisible(true);
animator.start();
}
public void init(GLAutoDrawable drawable) {
GL gl = drawable.getGL();
System.err.println("INIT GL IS: " + gl.getClass().getName());
}
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
GL gl = drawable.getGL();
GLU glu = new GLU();
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
glu.gluOrtho2D(0.0, 640.0, 0.0, 480.0);
}
public void display(GLAutoDrawable drawable) {
GL gl = drawable.getGL();
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
gl.glColor3f(1,1,1);