Aqui les dejo el codigo y el video tutorial para la graficadora, esta graficadora es muy sencilla, sin embargo para lo que sirve les dejo las 3 clases basicas que la conforman.
Para el codigo se recomienda ampliamente tener conocimientos matematicos de funciones cuadradas asi como alguna base de aplicaciones swing en Java.
Video tutorial:
Codigo fuente:
package graficadora; import javax.swing.*; import java.awt.*; /** * * @author jorge */ public class Graficadora { //Importante, plano debe ser publico y estatico public static plano plano; public static void main(String[] args) { //Creando la ventana y el plano de dibujo Ventana frame = new Ventana(); frame.setDefaultCloseOperation(Ventana.EXIT_ON_CLOSE); frame.setBounds(300, 300, 510, 600); frame.setLayout(new BorderLayout()); plano = new plano(); //Configuración del Boton JButton start = new JButton("Iniciar"); start.addActionListener(frame); start.setText("Iniciar"); //Bordes al panel frame.add( plano, BorderLayout.CENTER); frame.add(start, BorderLayout.SOUTH); frame.setVisible( true ); } }
package graficadora; import java.awt.Color; import java.awt.Graphics; import javax.swing.BorderFactory; import javax.swing.JPanel; /** * * @author jorge */ public class plano extends JPanel{ public plano() { init(); } public void init() { this.setBorder(BorderFactory.createLineBorder(Color.black)); } @Override public void paintComponent( Graphics g ) { super.paintComponent(g); g.setColor(Color.red); g.drawLine(0, this.getHeight()/2, this.getWidth(), this.getHeight()/2); g.drawLine(this.getWidth()/2, 0,this.getWidth()/2 , this.getHeight()); } // y=c*x2 +c*x +c public void paintSQRFunc(Graphics g, double x2mult, double x1mult,double cons, double x1,double x2) { for(double i=x1;i<x2;i++) { double y = ((double)Math.pow(i,2)*x2mult)+i*x1mult+cons; double xp = i+1; double yp = ((double)Math.pow(xp,2)*x2mult)+xp*x1mult+cons; g.drawLine((int)coord_x(i), (int)coord_y(y), (int)coord_x(xp), (int)coord_y(yp)); } } private double coord_x(double x) { double real_x = x+this.getWidth()/2; return real_x; } private double coord_y(double y) { double real_y = -y+this.getHeight()/2; return (real_y); } }
package graficadora; import java.awt.event.ActionEvent; import javax.swing.*; import java.awt.event.ActionListener; import graficadora.Graficadora; /** * * @author jorge */ public class Ventana extends JFrame implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { Graficadora.plano.paintSQRFunc(Graficadora.plano.getGraphics(),-0.2,2,-15,-200,200); } }
Muchas gracias, me ha servido mucho para un programa de crear patrones a medida.
Lo que dijo x2 el tercer ss jaja
Verdad que si! jsjs
Excelente explicación… Me sirvio de mucho, Graciasss c:
Esta muy bien explicado, saludos!!!
Bro de casualidad sabes co o lo paso a BlueJ?
Muchas gracias por este programa, me has ayudado mucho. Gracias y exito en todo
Saludos Jorge.
La explicación está excelente, a pesar que es un tema que cuesta a muchos tal como mencionas. Tengo tres consultas a ver si deseas ayudarme.
1. En la clase ventana escribes esta linea: Graficadora.plano.paintSQRFunc(Graficadora.plano.getGraphics(),-0.2,2,-15,-200,200);
La cual es para realizar el gráfico de la función cuadrática SQRF hace alusión a dicha función, ¿con qué lo reemplazaría si deseo la gráfica de la función lineal o la cúbica?
2. En caso que los parámetros de la función deban ser ingresados por el usario, para no tener que estar modificando el código cada vez que se desea realizar un gráfico, se que es necesario usar la lectura con Scanner sin embargo no sé como haría para asignar dichos valores a las variables (que corresponde a las coordenadas).
3. ¿cómo haría para que desde la misma JFrame pueda decidir el tipo de función a graficar (lineal, cuadrática, cúbica), sin que tenga que modificar los parámetros en el código por ejemplo no hacer x^2=0 para la función lineal?
Muchas gracias por tu ayuda.
Hola me da gusto que haces eso, oye el algoritmo de la linea DDA lo has programada alguna vez… disculpa dime como empezar
Tengo una super duda. Ando buscando la forma de aprender hacer una graficadora, pero lo que busco es que en lugar de la linea __________ que muestra la funcion, aparesca mi nombre “LEONARDO”. Como puedo hacer eso.