Sunteți pe pagina 1din 14

Andrea Meneses Ramírez

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) {

new Thread(new Runnable() {


public void run() {
animator.stop();
System.exit(0);
}
}).start();
}
});
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) {
}
}
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) {

new Thread(new Runnable() {


public void run() {
animator.stop();
System.exit(0);
}
}).start();
}
});

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) {

new Thread(new Runnable() {


public void run() {
animator.stop();
System.exit(0);
}
}).start();
}
});

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, a, pi, r, theta, i, b;


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;
a = 100;
b = 150;
pi = Math.PI;
for (i=0; i<360; i++)
{
theta = i*pi/180;
r = a -b * Math.cos(theta);
x = r * Math.cos(theta);
y = r * Math.sin(theta);
xp = xpc + x;
yp = ypc + y;
gl.glBegin(GL.GL_POINTS);
gl.glVertex2d(xp, yp);
gl.glEnd();
}
gl.glFlush();
}
public void displayChanged(GLAutoDrawable drawable, boolean modeChanged,
boolean deviceChanged) {
}
}