Ejemplos java y C/linux

Google
 

Tutoriales

Enlaces

Licencia

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Para reconocer la autoría debes poner el enlace http://www.chuidiang.com

Ejemplo de gráfico polar

Antes de nada, que quede claro que la parte de gráficos polares está todavía un poco en el aire. Hay métodos sin implementar y posiblemente cambie bastantes cosas en versiones futuras. De todas formas, aquí tienes un ejemplo de lo que se puede conseguir con lo que hay.

Un ejemplo de uso de la librería gráfica. En unos ejes polares, radio y ángulo, vamos a dibujar una función definida por varios puntos. Esta función por puntos es exactamente el mismo objeto gráfico que usamos para el ejemplo de gráfico cartesiano. Esta vez no lo haremos variar en el tiempo.

También añadiremos un gráfico de puntos, en el que las coordenadas de radio y ángulo varían al azar. Este da lugar a la "corona" de puntos amarillos que se ven en el gráfico..

Como objetos gráficos adicionales, añadiremos una mano que permite arrastrar el gráfico con el botón derecho del ratón, una botonería de zoom para acercar y alejar el gráfico, así como una rejilla polar, para tener una especie de escala. También un cursor, de forma que al mover el ratón sobre el gráfico tendremos un radio y un circulo que acompañan al ratón. Haciendo click con el botón izquierdo o el derecho fijaremos esos cursores.

CÓDIGO PARA LA CREACIÓN DE ESTE GRÁFICO

El gráfico se inicializa como un gráfico polar con el radio entre 0 y 100 y el ángulo entre 0 y 2*PI. Los extemos deben darse como los dos puntos del rectángulo que quiere dibujarse, pero en coordenadas polares, es decir (100, -3*PI/4) y (100, PI/4). Esto es algo que no me gusta demasiado y que posiblemente cambie en futuras versiones.

lienzo = new Lienzo();
lienzo.setBackground(Color.BLACK);
eg = new EscalaGraficaPolar2();
eg.tomaExtremos(100.0,-Math.PI*3.0/4.0,100.0,Math.PI/4.0);

Se le añade un objeto gráfico que es el que pinta los puntos amarillos. Ponemos 1000 puntos al azar en un radio entre 25 y 30 y con cualquier angulo entre 0 y 2*PI.

puntos = new Point2D.Double[1000];
for (int i=0;i<1000;i++)
{
    puntos[i] = new Point2D.Double(Math.random()*5.0+25,i*2.0*Math.PI/1000.0);
}        
gp = new GraficoPuntos(puntos);
lienzo.tomaObjetoGrafico(gp);

También añadimos un gráfico por puntos, el mismo que añadimos en el ejemplo de cartesianas. 100 puntos con el radio entre 0 y 100 equiespaciados y el ángulo aleatorio entre -0.25 y 0.25 radianes.

double [] puntos2 = new double[100];
for (int i=0;i<100;i++)
    puntos2[i]=Math.random()*0.5-0.25;
GraficoFuncionPorPuntos gp2 = new GraficoFuncionPorPuntos(0.0,100.0,puntos2);
lienzo.tomaObjetoGrafico(gp2);

Se le añaden otros objetos gráficos

// Una mano para poder arrastrar el gráfico con el botón derecho del ratón
Mano mano = new Mano(eg,lienzo);
lienzo.anhadeObservadorRaton(mano);
       
// Un cursor para que se mueva sobre el gráfico junto con el ratón.
CursorHilo cursor = new CursorHilo(true,true);
lienzo.anhadeObservadorRaton(cursor);
       
// Una rejilla.
Rejilla rej=new Rejilla();
lienzo.tomaObjetoGrafico(rej);

Y esto es todo. Tienes disponible lo siguiente:

Estadísticas y comentarios

Numero de visitas desde el 4 Feb 2007: