Filtro CPL Polarizado ventajas

Programa que calcula el vector resultante y angulo de n vectores en el plano (Hecho en JAVA)

En esta ocasión les comparto un pequeño programa hecho en el lenguaje JAVA, que calcula la resultante de n vectores y su respectivo angulo en el plano.

Utilice arreglos unidimensionales, y algunos métodos para convertir a radianes y a angulos con ayuda de   la librería Math.

La interfaz principal del programa es la siguiente:


Este programa puede resolver dudas como:
-¿Como convertir decimales a grados en JAVA?
-¿Como convertir decimales a radianes en  JAVA?
-¿Como calcular tangente a la menos 1 en JAVA?
entre otras dudas mas.

Les dejo una captura del programa funcionando y su respectivo código:



import java.awt.Color;
import java.text.DecimalFormat;
import javax.swing.JOptionPane;

/**
 * 
 * @author Iván Luis Jiménez
 */

public class Menu extends javax.swing.JFrame {

    double Fx = 0, Fy = 0;
    double Resultante = 0;
    double angulo = 0;
    int total_vectores = 0;

    public Menu() {

        initComponents();
        setSize(410, 500);
        setTitle("Calcula Fuerza Resultante y Angulo");
        setLocationRelativeTo(null);

    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        Minutos = new javax.swing.JTextField();
        Segundos = new javax.swing.JTextField();
        Grados = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        Direccionn = new javax.swing.JPanel();
        Magnitudd = new javax.swing.JPanel();
        Magnitud = new javax.swing.JTextField();
        Ingresar = new javax.swing.JButton();
        Temaa = new javax.swing.JPanel();
        Tema = new javax.swing.JComboBox();
        Vectorr = new javax.swing.JPanel();
        fx1 = new javax.swing.JLabel();
        fy = new javax.swing.JLabel();
        fx = new javax.swing.JLabel();
        Area_Salida = new javax.swing.JLabel();
        Resultadoss = new javax.swing.JPanel();
        Salida2 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        Final = new javax.swing.JLabel();
        jLabel7 = new javax.swing.JLabel();
        V = new javax.swing.JLabel();
        Fondo = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenu2 = new javax.swing.JMenu();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setResizable(false);
        getContentPane().setLayout(null);

        jLabel1.setText("Grados");
        getContentPane().add(jLabel1);
        jLabel1.setBounds(160, 110, 50, 15);

        jLabel2.setText("Minutos");
        getContentPane().add(jLabel2);
        jLabel2.setBounds(240, 110, 50, 15);
        getContentPane().add(Minutos);
        Minutos.setBounds(220, 130, 74, 30);
        getContentPane().add(Segundos);
        Segundos.setBounds(300, 130, 74, 30);
        getContentPane().add(Grados);
        Grados.setBounds(140, 130, 74, 30);

        jLabel3.setText("Segundos");
        getContentPane().add(jLabel3);
        jLabel3.setBounds(310, 110, 60, 15);

        Direccionn.setBorder(javax.swing.BorderFactory.createTitledBorder("Dirección"));

        javax.swing.GroupLayout DireccionnLayout = new javax.swing.GroupLayout(Direccionn);
        Direccionn.setLayout(DireccionnLayout);
        DireccionnLayout.setHorizontalGroup(
            DireccionnLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 250, Short.MAX_VALUE)
        );
        DireccionnLayout.setVerticalGroup(
            DireccionnLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 58, Short.MAX_VALUE)
        );

        getContentPane().add(Direccionn);
        Direccionn.setBounds(130, 90, 260, 80);

        Magnitudd.setBorder(javax.swing.BorderFactory.createTitledBorder("Magnitud"));
        Magnitudd.setLayout(null);

        Magnitud.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                MagnitudActionPerformed(evt);
            }
        });
        Magnitudd.add(Magnitud);
        Magnitud.setBounds(10, 40, 74, 30);

        getContentPane().add(Magnitudd);
        Magnitudd.setBounds(10, 90, 110, 80);

        Ingresar.setText("Ingresar");
        Ingresar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                IngresarActionPerformed(evt);
            }
        });
        getContentPane().add(Ingresar);
        Ingresar.setBounds(150, 180, 90, 25);

        Temaa.setBorder(javax.swing.BorderFactory.createTitledBorder("Tema"));

        Tema.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Rosa", "Amarillo", "Verde" }));
        Tema.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                TemaActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout TemaaLayout = new javax.swing.GroupLayout(Temaa);
        Temaa.setLayout(TemaaLayout);
        TemaaLayout.setHorizontalGroup(
            TemaaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(TemaaLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(Tema, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        TemaaLayout.setVerticalGroup(
            TemaaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(TemaaLayout.createSequentialGroup()
                .addComponent(Tema, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(0, 24, Short.MAX_VALUE))
        );

        getContentPane().add(Temaa);
        Temaa.setBounds(10, 10, 130, 70);

        Vectorr.setBorder(javax.swing.BorderFactory.createTitledBorder("Vector"));

        fx1.setText("Fx");

        fy.setText("Fy");

        fx.setText("Magnitud");

        javax.swing.GroupLayout VectorrLayout = new javax.swing.GroupLayout(Vectorr);
        Vectorr.setLayout(VectorrLayout);
        VectorrLayout.setHorizontalGroup(
            VectorrLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(VectorrLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(VectorrLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(VectorrLayout.createSequentialGroup()
                        .addComponent(Area_Salida, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addContainerGap())
                    .addGroup(VectorrLayout.createSequentialGroup()
                        .addComponent(fx, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(69, 69, 69)
                        .addComponent(fx1, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(fy, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(23, 23, 23))))
        );
        VectorrLayout.setVerticalGroup(
            VectorrLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(VectorrLayout.createSequentialGroup()
                .addGroup(VectorrLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(fx, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(fx1, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(fy, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(Area_Salida, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        getContentPane().add(Vectorr);
        Vectorr.setBounds(10, 220, 380, 80);

        Resultadoss.setBorder(javax.swing.BorderFactory.createTitledBorder("Resultados"));

        jLabel6.setText("Resultante:");

        jLabel7.setText("Angulo:");

        javax.swing.GroupLayout ResultadossLayout = new javax.swing.GroupLayout(Resultadoss);
        Resultadoss.setLayout(ResultadossLayout);
        ResultadossLayout.setHorizontalGroup(
            ResultadossLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(ResultadossLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(ResultadossLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(V, javax.swing.GroupLayout.PREFERRED_SIZE, 117, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(ResultadossLayout.createSequentialGroup()
                        .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(0, 0, 0)
                        .addComponent(Final, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(30, 30, 30)
                        .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(0, 0, 0)
                        .addComponent(Salida2, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(18, Short.MAX_VALUE))
        );
        ResultadossLayout.setVerticalGroup(
            ResultadossLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, ResultadossLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(V, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(ResultadossLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(Final, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(Salida2, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        getContentPane().add(Resultadoss);
        Resultadoss.setBounds(10, 310, 380, 100);

        Fondo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/naranja.jpg"))); // NOI18N
        getContentPane().add(Fondo);
        Fondo.setBounds(-10, -20, 420, 470);

        jLabel4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/po.png"))); // NOI18N
        getContentPane().add(jLabel4);
        jLabel4.setBounds(180, 0, 200, 90);

        jMenu1.setText("Información");
        jMenu1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jMenu1MouseClicked(evt);
            }
        });
        jMenuBar1.add(jMenu1);

        jMenu2.setText("Ayuda");
        jMenu2.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jMenu2MouseClicked(evt);
            }
        });
        jMenuBar1.add(jMenu2);

        setJMenuBar(jMenuBar1);

        pack();
    }// </editor-fold>                        

    private void MagnitudActionPerformed(java.awt.event.ActionEvent evt) {                                         

    }                                        


    private void IngresarActionPerformed(java.awt.event.ActionEvent evt) {                                         

        if ((Magnitud.getText().isEmpty()) || (Grados.getText().isEmpty())
                || (Minutos.getText().isEmpty()) || (Segundos.getText().isEmpty())) {
            JOptionPane.showMessageDialog(null, "Campos vacios!", "Atención", 1);
        } else {
            DecimalFormat decimales = new DecimalFormat("0.0000");

            double[] arreglo = new double[3];
            double cant = 0;
            double magnitud = Float.parseFloat(Magnitud.getText());

            double gra = Float.parseFloat(Grados.getText());
            double grados = Math.toRadians(gra);
            double min = Float.parseFloat(Minutos.getText());
            double minutos = Math.toRadians(min);
            double seg = Float.parseFloat(Segundos.getText());
            double segundos = Math.toRadians(seg);

            cant = (grados + (minutos / 60) + (segundos / 3600));

            double x = Math.cos(cant);
            double y = Math.sin(cant);

            arreglo[0] = magnitud;
            arreglo[1] = x * magnitud;
            arreglo[2] = y * magnitud;
            String mostrar = arreglo[0] + ""
                    + "                                 " + String.valueOf(decimales.format(arreglo[1])) + ""
                    + "                                 " + String.valueOf(decimales.format(arreglo[2]));

            Fx = ((arreglo[1]) + (Fx));
            Fy = ((arreglo[2]) + (Fy));

            Area_Salida.setText(mostrar);

            Magnitud.setText("");
            Grados.setText("");
            Minutos.setText("");
            Segundos.setText("");

            Resultante = Math.sqrt((Fx * Fx) + (Fy * Fy));
            double po = (Fy) / (Fx);
            Math.toDegrees(Math.atan(po));

            Final.setText(String.valueOf(decimales.format(Resultante)));
            Salida2.setText(String.valueOf(decimales.format(Math.toDegrees(Math.atan(po)))) + "°");
            total_vectores++;

            if (total_vectores == 1) {
                V.setText(total_vectores + " vector");
            } else {
                V.setText(total_vectores + " vectores");
            }

        }

    }                                        

    private void jMenu2MouseClicked(java.awt.event.MouseEvent evt) {                                    
        Ayuda objeto = new Ayuda();
        objeto.setVisible(true);
    }                                   

    private void jMenu1MouseClicked(java.awt.event.MouseEvent evt) {                                    
        Informacion objeto = new Informacion();
        objeto.setVisible(true);
    }                                   

    private void TemaActionPerformed(java.awt.event.ActionEvent evt) {                                     

        if (Tema.getSelectedItem().toString() == "Rosa") {
            Tema.setBackground(Color.PINK);
            Temaa.setBackground(Color.PINK);
            Magnitudd.setBackground(Color.PINK);
            Direccionn.setBackground(Color.PINK);
            Vectorr.setBackground(Color.PINK);
            Ingresar.setBackground(Color.PINK);
            Resultadoss.setBackground(Color.PINK);
        }
        if (Tema.getSelectedItem().toString() == "Amarillo") {
            Tema.setBackground(Color.yellow);
            Temaa.setBackground(Color.yellow);
            Magnitudd.setBackground(Color.yellow);
            Direccionn.setBackground(Color.yellow);
            Vectorr.setBackground(Color.yellow);
            Ingresar.setBackground(Color.yellow);
            Resultadoss.setBackground(Color.yellow);

        }
        if (Tema.getSelectedItem().toString() == "Verde") {
            Tema.setBackground(Color.green);
            Temaa.setBackground(Color.green);
            Magnitudd.setBackground(Color.green);
            Direccionn.setBackground(Color.green);
            Vectorr.setBackground(Color.green);
            Ingresar.setBackground(Color.green);
            Resultadoss.setBackground(Color.green);

        }
    }                                    

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Menu().setVisible(true);

            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JLabel Area_Salida;
    private javax.swing.JPanel Direccionn;
    public static javax.swing.JLabel Final;
    private javax.swing.JLabel Fondo;
    private javax.swing.JTextField Grados;
    public static javax.swing.JButton Ingresar;
    private javax.swing.JTextField Magnitud;
    private javax.swing.JPanel Magnitudd;
    private javax.swing.JTextField Minutos;
    private javax.swing.JPanel Resultadoss;
    public static javax.swing.JLabel Salida2;
    private javax.swing.JTextField Segundos;
    private javax.swing.JComboBox Tema;
    private javax.swing.JPanel Temaa;
    private javax.swing.JLabel V;
    private javax.swing.JPanel Vectorr;
    private javax.swing.JLabel fx;
    private javax.swing.JLabel fx1;
    private javax.swing.JLabel fy;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    // End of variables declaration                   
}


Link de descargar del proyecto completo 

Espero y les sea de utilidad.
Saludos!
From:Iván Luis Jiménez

Comentarios

  1. utilizas programacion orientada a objeto???

    ResponderBorrar
  2. Si, pero muy básica, se implementa más la programación estructurada.

    ResponderBorrar
  3. hola amigo me podrias pasar tu sistema por correo?? con la interfaz grafica igual

    ResponderBorrar

Publicar un comentario