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

Publicar un comentario