Você está na página 1de 20

De acuerdo a los conceptos del subtema 2.

1 “Sistema de coordenadas rectangulares”, crea


un programa que grafique funciones en términos de coordenadas cartesianas, siguiendo el
proceso que a continuación se describe:
a. Crea un proyecto en JOGL dentro de NetBeans.
b. Ponle el siguiente nombre al proyecto: “GraficaCartesiano”, y el nombre del paquete al
que pertenece el proyecto debe ser “Graficacion”.
c. Ya creado el código fuente, realiza los pasos del algoritmo 1 y 2, pero en el método
“display” pon el código que aparece en el subtema de 2.1.4 “Rastreo de otras curvas”.
d. Compila y ejecuta el código y guardar la pantalla de ejecución del programa.
e. Modifica el programa para que grafique las siguientes funciones:
i. y = ecos(x)
ii. y = ex^2
 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 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) {
}
}

Você também pode gostar