Retroceder   Foros del Web > Programación para sitios web > Java y JSP

Respuesta
 
Herramientas Desplegado
Antiguo 15-mar-2005, 20:47   #1 (permalink)
XDerekX ha deshabilitado el karma
 
Fecha de Ingreso: enero-2005
Mensajes: 22
Pregunta Ayuda para Graficar Funciones trigonométricas.

Deseo graficar la función Seno y la Coseno.

Se que es posible graficar funciones trigonométricas en Java, pero la verdad no se por donde comenzar, ni como crear el plano para comenzar.

¿Será que Java tiene funciones predeterminadas para hacer esto?.
XDerekX está desconectado   Responder Citando
Antiguo 25-mar-2005, 23:31   #2 (permalink)
XDerekX ha deshabilitado el karma
 
Fecha de Ingreso: enero-2005
Mensajes: 22
De acuerdo AYUDA con esto de las gráficas

Encontré este código excelente, que grafica velocidades moléculas, la verdad estoy intentando guiarme de el para crear algo parecido que me grafique las funciones del seno y coseno, pero la verdad, creo que es muy avanzado para mis conocimientos, ya que solo deseo hacer dos graficas, solo que quiero una presentación igual, ósea graficar los ejes de coordenadas X, coordenadas Y, y la escala que la quiero con dichos valores.
Espero alguien me pueda ayudar.

Colocare el código de programa: esta en 2 clases bueno aquí van:

import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class GraficaApplet extends Applet {
MiCanvas canvas;
boolean isStandalone = false;
Panel panel1 = new Panel();
Panel panel2 = new Panel();
Panel panel3 = new Panel();
Panel panel4 = new Panel();
FlowLayout flowLayout1 = new FlowLayout();
FlowLayout flowLayout2 = new FlowLayout();
FlowLayout flowLayout3 = new FlowLayout();
BorderLayout borderLayout1 = new BorderLayout();
BorderLayout borderLayout2 = new BorderLayout();
Label label1 = new Label();
Choice chGases = new Choice();
Label label2 = new Label();
TextField tTemperatura = new TextField();
Button btnGrafica = new Button();
Button btnBorrar = new Button();

//Construct the applet
public GraficaApplet() {
}

//Initialize the applet
public void init() {
try { jbInit(); } catch (Exception e) { e.printStackTrace(); }
}

//Component initialization
public void jbInit() throws Exception{
int ancho = Integer.parseInt(this.getParameter("WIDTH"));
int alto = Integer.parseInt(this.getParameter("HEIGHT"));
this.setSize(new Dimension(ancho, alto));
canvas=new MiCanvas();
panel1.setBackground(Color.lightGray);
panel4.setBackground(Color.gray);
panel1.setLayout(borderLayout1);
panel4.setLayout(flowLayout3);
panel3.setLayout(flowLayout2);
panel2.setLayout(flowLayout1);
flowLayout1.setVgap(1);
flowLayout2.setVgap(1);
flowLayout3.setVgap(1);
this.setLayout(borderLayout2);

String str[]={"Hidrógeno (H2)", "Oxígeno (O2)", "Nitrógeno (N2)", "Helio (He)", "Neón (Ne)", "Argón (Ar)"};
for(int i=0; i<str.length; i++){
chGases.addItem(str[i]);
}
label1.setText("Gas");
label2.setText("Temperatura (ºK)");
tTemperatura.setColumns(5);
tTemperatura.setText("500");
ValidaDouble valDouble=new ValidaDouble();
tTemperatura.addFocusListener(valDouble);

btnGrafica.setFont(new Font("Dialog", 1, 12));
btnGrafica.setLabel("Gráfica");
btnGrafica.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
btnGrafica_actionPerformed(e);
}
});
btnBorrar.setLabel("Borrar");
btnBorrar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
btnBorrar_actionPerformed(e);
}
});

this.add(panel1, BorderLayout.SOUTH);
this.add(canvas, BorderLayout.CENTER);
panel1.add(panel2, BorderLayout.WEST);
panel2.add(label1, null);
panel2.add(chGases, null);
panel1.add(panel3, BorderLayout.CENTER);
panel3.add(label2, null);
panel3.add(tTemperatura, null);
panel1.add(panel4, BorderLayout.EAST);
panel4.add(btnGrafica, null);
panel4.add(btnBorrar, null);
}

void btnGrafica_actionPerformed(ActionEvent e) {
double temperatura=Double.valueOf(tTemperatura.getText()) .doubleValue();
int indice=chGases.getSelectedIndex();
canvas.setNuevo(temperatura, indice);
}

void btnBorrar_actionPerformed(ActionEvent e) {
canvas.repaint();
}
}

class ValidaDouble extends FocusAdapter{
public void focusLost(FocusEvent ev){
TextField tEntrada=(TextField)(ev.getSource());
try{
Double.valueOf(tEntrada.getText()).doubleValue();
}catch(NumberFormatException e){
tEntrada.requestFocus();
tEntrada.selectAll();
}
}
}

y la otra clase es:

import java.awt.*;
public class MiCanvas extends Canvas {
//anchura y altura del canvas
int anchoCanvas, altoCanvas;
//origenes
int orgY, orgX;
//escalas
double escalaX, escalaY;
//masas de las moléculas en u.m.a
final int masa[]={2, 32, 28, 4, 10, 18};
double cociente;
//número de partículas
final int N=10000;
//colores de las funciones
int nGrafica=-1;
static final Color color[]={new Color(255,0,0), new Color(0, 255,0), new Color(0, 0, 255),
new Color(0, 255, 255), new Color(255, 0, 255), new Color(255, 255, 0),
new Color(128, 0, 0), new Color(255, 128, 0), new Color(0, 64, 64),
new Color(128, 128, 255), new Color(128, 0, 64), new Color(255, 0, 128),
new Color(192, 192, 192), new Color(128, 128, 0)};

public MiCanvas() {
setBackground(Color.white);
}
void setNuevo(double temperatura, int indice){
cociente=(1.67e-27*masa[indice])/(2*temperatura*1.38e-23);
nGrafica++;
if(nGrafica>13){
nGrafica=0;
}
dibujaFuncion();
}

void origen(Graphics g){
anchoCanvas=getSize().width;
altoCanvas=getSize().height;
FontMetrics fm=g.getFontMetrics();
int charAlto=fm.getHeight();
int charAncho=fm.stringWidth("0");
//orígenes
orgX=5*charAncho;
orgY=altoCanvas-2*charAlto;
//escalas
escalaX=(double)(anchoCanvas-orgX-3*charAncho)/3000;
escalaY=(double)(altoCanvas-3*charAlto)/20;
}

void dibujaEjes(Graphics g){
FontMetrics fm=g.getFontMetrics();
int descent=fm.getDescent();
int charAlto=fm.getHeight();
int charAncho=fm.stringWidth("0");
//borra el canvas
g.setColor(getBackground());
g.fillRect(0,0, anchoCanvas, altoCanvas);
g.setColor(Color.black);
//eje horizontal
g.drawLine(orgX-charAncho, orgY, anchoCanvas, orgY);
g.drawString("v(m/s)", anchoCanvas-4*charAncho, orgY);
int x1, y1;
for(int i=0; i<=3; i++){
x1=orgX+(int)(1000*i*escalaX);
g.drawLine(x1, orgY+charAncho/2, x1, orgY-charAncho/2);
String str=String.valueOf(i*1000);
g.drawString(str, x1-fm.stringWidth(str)/2, orgY+charAlto);
if(i==3) break;
for(int j=1; j<5; j++){
x1=orgX+(int)((1000*i+(double)(1000*j)/5)*escalaX);
g.drawLine(x1, orgY+charAncho/4, x1, orgY-charAncho/4);
}
}

//eje vertical
g.drawLine(orgX, 0, orgX, altoCanvas-charAlto);
g.drawString("dn/dv", orgX+charAncho, charAlto);
for(int i=0; i<=20; i+=5){
y1=orgY-(int)(i*escalaY);
g.drawLine(orgX+charAncho/2, y1, orgX-charAncho/2, y1);
String str=String.valueOf(i);
g.drawString(str, orgX-fm.stringWidth(str)-charAncho/2, y1+charAlto/2-descent);
if(i==20) break;
for(int j=1; j<5; j++){
y1=orgY-(int)((i+(double)(j))*escalaY);
g.drawLine(orgX+charAncho/4, y1, orgX-charAncho/4, y1);
}
}
}
double f(double v){
double y=4*N*Math.PI*Math.pow(cociente/Math.PI, 1.5)*Math.exp(-cociente*v*v)*v*v;
return y;
}

void dibujaFuncion(){
Graphics g=getGraphics();
int x1=orgX, y1=orgY, x2, y2;
g.setColor(color[nGrafica]);

for(double v=0; v<3000; v+=10){
y2=orgY-(int)(f(v)*escalaY);
x2=orgX+(int)(v*escalaX);
g.drawLine(x1, y1, x2, y2);
x1=x2; y1=y2;
}
g.dispose();
}

public void paint(Graphics g){
origen(g);
dibujaEjes(g);
}
}
XDerekX está desconectado   Responder Citando
Antiguo 17-abr-2005, 19:26   #3 (permalink)
elkronos ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2004
Mensajes: 66
talvez te sirva chartdirector busca en google
elkronos está desconectado   Responder Citando
Antiguo 18-abr-2005, 19:16   #4 (permalink)
stock tiene algunos puntos positivos de karma
 
Avatar de stock
 
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 1.995
Ok, quieres hacer una grafica de la funcion SIN(x) ?? si eso es lo que deseas hacer pues este codigo te puede ayudar, es un applet que grafica una funcion sin(x), igual puedes modificarle la ecuacion y ponerle la funcion que tu quieras!!

Código:
/*
* Author: Crysfel Villa
* Created: Monday, April 18, 2005 7:45:59 PM
* Modified: Monday, April 18, 2005 7:45:59 PM
*/

import java.applet.*;
import java.net.*;
import java.awt.*;
import java.math.*;

public class Graficos extends Applet
{	
	Button btnGraficar;
	TextField txtNum1,txtNum2;
	int num1,num2;
	
	public void init(){
		setLayout(null);
		
		btnGraficar = new Button("Graficar");
		txtNum1 = new TextField("-5");
		txtNum2 = new TextField("5");
		
		txtNum1.reshape(10,10,90,20);
		txtNum2.reshape(110,10,90,20);
		btnGraficar.reshape(310,10,60,20);
		add(txtNum1);
		add(txtNum2);
		add(btnGraficar);
		show();
	}
	
	public void paint (Graphics p)
	{	
		p.drawString ("Ejemplo de Graficas en Applets", 110,50);
		p.drawString ("-- By Crysfel Villa", 130, 80);
		hacerGrafica();
		
	}
	
	public void hacerGrafica(){
		Graphics p = getGraphics();
		double punto,y;
		p.setColor(new Color(255,255,255));
		p.fillRect(51,100,299,200);		//Fondo para que borre a las anteriores
		p.setColor(new Color(0,0,0));
		p.drawLine(50,300,300,300); //eje horizontal
		p.drawLine(150,100,150,350);  //eje vertical
		
		p.setColor(new Color(255,0,0));
		for(double x=num1;x < num2;x+=0.01){
			punto = 150 + x*30;
			y = 300 - Math.sin(x)*30;
			p.drawLine((int)punto,(int)y,(int)punto + 1,(int)y + 1);
		}
	}
		
	public boolean getDatos(){
		boolean temp = true;
		try
		{
			num1 = Integer.parseInt(txtNum1.getText());
			num2 = Integer.parseInt(txtNum2.getText());
		}
		catch(Exception exc)
		{
			System.out.println("Error :)" + exc);
			temp = false;
		}
		return temp;
	}
	
	public boolean action(Event e, Object o){
		if (e.target == btnGraficar){
			if(getDatos())
				hacerGrafica();
		}	
		return true;
	}
		

}
__________________
Don't hate the languaje, hate the runtime environment
Crysfel's Blog :: Blog de programación, JAVA,PHP, AJAX, JavaScript, CSS y otras hierbas
stock está desconectado   Responder Citando
Respuesta

Calificación: Calificación de Tema: 2 votos, 1,00 de promedio.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Desactivado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 14:34.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93