JAVA: GUI Implementation of the remote Intersection Algorithm
Compiling environment:
Operating System: Win8.1 64-bit
IDE platform: Visual Studio 2013 Ultimate
I. Principles
Observe the distance S1, S2, and S3 on the P to be tested, and then determine the plane coordinates of P:
Ii. Code Implementation
Frontend rendezvous. java
Package text; import java. awt. *; import java. awt. event. *; import java. math. *; import javax. swing. *; import javax. swing. border. border; public class: The frontend intersection: extends JFrame {public static final int TEXTAREA_ROWS = 20; public static final int TEXTAREA_COLUMNS = 40; public: The frontend intersection () {final JTextField A_X = new JTextField ("37477"); final JTextField A_Y = new JTextField ("16307"); final JTextField B _X = new JTextField ("37327 "); final JTextField B _Y = new JTextField ("16078"); final JTextField C_X = new JTextField ("37163"); final JTextField C_Y = new JTextField ("16046 "); final JTextField S_1 = new JTextField ("200"); final JTextField S_2 = new JTextField ("200"); final JTextField S_3 = new JTextField ("200 "); JPanel northPanel = new JPanel (); JPanel WestPanel = new JPanel (); JLabel pic = new JLabel (); pic. setIcon (new ImageIcon ("G:/workplace/remote intersection/4.png"); WestPanel. add (pic); getContentPane (). add (WestPanel, BorderLayout. WEST); JPanel northPane2 = new JPanel (); // distance from the frontend intersection northPane2.setLayout (new GridLayout (3, 4); northPane2.add (new JLabel ("A_X:", SwingConstants. CENTER); northPane2.add (A_X); northPane2.add (new JLabel ("A_Y:", SwingConstants. CENTER); northPane2.add (A_Y); northPane2.add (new JLabel ("B _X:", SwingConstants. CENTER); northPane2.add (B _X); northPane2.add (new JLabel ("B _Y:", SwingConstants. CENTER); northPane2.add (B _Y); northPane2.add (new JLabel ("C_X:", SwingConstants. CENTER); northPane2.add (C_X); northPane2.add (new JLabel ("C_Y:", SwingConstants. CENTER); northPane2.add (C_Y); northPane2.add (new JLabel ("S1:", SwingConstants. CENTER); northPane2.add (S_1); northPane2.add (new JLabel ("S2:", SwingConstants. CENTER); northPane2.add (S_2); northPane2.add (new JLabel ("S3:", SwingConstants. CENTER); northPane2.add (S_3); Border etched = BorderFactory. createEtchedBorder (); Border titled = BorderFactory. createTitledBorder (etched, "intersection"); northPanel. setBorder (titled); getContentPane (). add (northPane2, BorderLayout. NORTH); final JTextArea textArea = new JTextArea (20, 40); JScrollPane scrollPane = new JScrollPane (textArea); getContentPane (). add (scrollPane, BorderLayout. CENTER); // add button to append text into the text area JPanel southPanel = new JPanel (); JButton insertButton = new JButton (" pp "); insertButton. addActionListener (new ActionListener () {public void actionreceivmed (ActionEvent event) {// initialize the Double X1 = Double coordinate. valueOf (A_X.getText ()). doubleValue (); Double Y1 = Double. valueOf (A_Y.getText ()). doubleValue (); Double X2 = Double. valueOf (B _X.getText ()). doubleValue (); Double Y2 = Double. valueOf (B _Y.getText ()). doubleValue (); Double X3 = Double. valueOf (C_X.getText ()). doubleValue (); Double Y3 = Double. valueOf (C_Y.getText ()). doubleValue (); Double S1 = Double. valueOf (S_1.getText ()). doubleValue (); Double S2 = Double. valueOf (S_2.getText ()). doubleValue (); Double S3 = Double. valueOf (S_3.getText ()). doubleValue (); // A, B, P Double D_ AB = Math. sqrt (Math. pow (X1-X2), 2) + Math. pow (Y1-Y2), 2); Double α _ AB = Math. acos (D_ AB * D_ AB + S1 * S1-S2 * S2)/(2 * D_ AB * S1); Double α _ 1 = Math. atan (Math. abs (Y2-Y1)/Math. abs (X2-X1); Double α _ 2 = α _ AB-α _ 1; Double XP1 = X1 + S1 * Math. cos (α _ 2); Double YP1 = Y1-S1 * Math. sin (α _ 2); // B, C, P Double D_BC = Math. sqrt (Math. pow (X3-X2), 2) + Math. pow (Y3-Y2), 2); Double α _ BC = Math. acos (D_BC * D_BC + S2 * S2-S3 * S3)/(2 * D_BC * S2); Double α _ 3 = Math. atan (Math. abs (Y3-Y2)/Math. abs (X3-X2); Double α _ 4 = α _ BC-α _ 3; Double XP2 = X1 + S1 * Math. cos (α _ 4); Double YP2 = Y1-S1 * Math. sin (α _ 4); textArea. append ("==== distance to the backend intersection ====" + "\ n" + "reference value 1:" + "(" + XP1 + ", "+ YP1 +") "+" \ n "+" reference value 2: "+" ("+ XP2 +", "+ YP2 + ") "+" \ n "+" error distance: "+ Math. round (miss (XP1, YP1, XP2, YP2) + "meter"); // textArea. append ("test:" + β _ 2);} public double miss (double XP1, double YP1, double XP2, double YP2) {return Math. sqrt (Math. pow (XP1-XP2), 2) + Math. pow (YP1-YP2), 2);} public double convert (String input) {Double a = Double. valueOf (input. split ("°") [0]). doubleValue (); Double B = Double. valueOf (input. split ("°") [1]. split ("'") [0]). doubleValue (); return a + B/60 ;}}); add (insertButton, BorderLayout. SOUTH); pack ();}}
Test. java
Package text; import java. awt. *; import javax. swing. *; public class Test {public static void main (String [] args) {EventQueue. invokeLater (new Runnable () {public void run () {JFrame frame = new (); frame. setTitle ("intersection after distance"); frame. setdefaclocloseoperation (JFrame. EXIT_ON_CLOSE); frame. setVisible (true );}});}}
Iii. Running results
Download: the JAVA project package of the remote Intersection Algorithm