编译环境:

操作系统:Win8.1  64位

IDE平台:Visual Studio 2013 Ultimate

一、原理与步骤

二、代码实现

距离前方交会.java

package text;

import java.awt.*;

import java.awt.event.*;

import java.math.*;

import javax.swing.*;

import javax.swing.border.Border;

/**

* A frame with sample text components.

*/

public class 距离前方交会 extends JFrame

{

public static final int TEXTAREA_ROWS = 20;

public static final int TEXTAREA_COLUMNS = 40;

public 距离前方交会()

{

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");

JPanel northPanel = new JPanel();

final JTextField DAP = new JTextField("200");

final JTextField DBP = new JTextField("200");

final JTextField DCP = new JTextField("200");

JPanel WestPanel = new JPanel();

JLabel pic= new JLabel();

pic.setIcon(new ImageIcon("G:/workplace/距离前方交会/2.png"));

WestPanel.add(pic);

getContentPane().add(WestPanel, BorderLayout.WEST);

JPanel northPane2 = new JPanel();

//距离前方交会

northPane2.setLayout(new GridLayout(3, 8));

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("DAP: ", SwingConstants.CENTER));

northPane2.add(DAP);

northPane2.add(new JLabel("DBP: ", SwingConstants.CENTER));

northPane2.add(DBP);

northPane2.add(new JLabel("DCP: ", SwingConstants.CENTER));

northPane2.add(DCP);

Border etched = BorderFactory.createEtchedBorder();

Border titled = BorderFactory.createTitledBorder(etched, "距离前方交会");

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("计算P点坐标");

insertButton.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent event)

{

//坐标初始化

Double X1=Double.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 D_AP=Double.valueOf(DAP.getText()).doubleValue();

Double D_BP=Double.valueOf(DBP.getText()).doubleValue();

Double D_CP=Double.valueOf(DCP.getText()).doubleValue();

//A、B、P

Double D_AB=Math.sqrt( Math.pow((X1-X2),2)+Math.pow((Y1-Y2),2));

Double α_BAP=Math.acos((D_AB*D_AB+D_AP*D_AP-D_BP*D_BP)/(2*D_AB*D_AP));

//Double α_ABP=Math.acos((D_AB*D_AB+D_BP*D_BP-D_AP*D_AP)/2*D_AB*D_BP);

Double α_AB=90-Math.atan(Math.abs(Y2-Y1)/Math.abs(X2-X1));

Double α_AP=α_AB-α_BAP;

Double XP1=X1+D_AP*Math.cos(α_AP);

Double YP1=Y1+D_AP*Math.sin(α_AP);

//B、C、P

Double D_BC=Math.sqrt( Math.pow((X3-X2),2)+Math.pow((Y3-Y2),2));

Double α_CBP=Math.acos((D_BC*D_BC+D_BP*D_BP-D_CP*D_CP)/(2*D_BC*D_BP));

//Double α_BCP=Math.acos((D_BC*D_BC+D_CP*D_CP-D_BP*D_BP)/2*D_BC*D_CP);

Double α_BC=90-Math.atan(Math.abs(Y2-Y3)/Math.abs(X2-X3));

Double α_BP=α_BC-α_CBP;

Double XP2=X1+D_BP*Math.cos(α_BP);

Double YP2=Y1+D_BP*Math.sin(α_BP);

textArea.append("=====距离前方交会===="+"\n"+"参考值1:"+ "( " +XP1+","+YP1+")"

+  "\n"+"参考值2:"+"( " +XP2+","+YP2+")"

+  "\n"+"误差距离约:"+Math.round(miss(XP1,YP1,XP2,YP2))+"米");

}

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("距离前方交会");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

});

}

}

三、运行结果

原文:http://blog.csdn.net/cooelf/article/details/40627249

java前方交会_JAVA:距离前方交会算法GUI实现相关推荐

  1. 基于界面的银行家算法java实现_java实现银行家算法(Swing界面)

    java代码实现了银行家算法,界面写的个人认为还是较为细致的,完整的实现了找安全序列等算法功能,可作为参考学习银行家算法. 直接上代码:①界面展示方法: public void ShowFrame() ...

  2. 高斯模糊java代码_Java实现高斯模糊算法处理图像

    高斯模糊(英语:Gaussian Blur),也叫高斯平滑,是在Adobe Photoshop.GIMP以及Paint.NET等图像处理软件中广泛使用的处理效果,通常用它来减少图像噪声以及降低细节层次 ...

  3. 质量不同的球java编程_Java 实现小球碰撞GUI

    最后一次更新于2019/07/08 修复问题: 错误输入未提醒问题 碰撞小球的图形重叠问题 高速小球越界问题 感谢 大一暑假拜读学姐的一篇文章:我说这是一篇很严肃的技术文章你信吗,本篇在她的基础上加以 ...

  4. java 有穷自动机_Java实现雪花算法(snowflake)

    本文主要介绍了Java实现雪花算法(snowflake),分享给大家,具体如下: 简单描述 最高位是符号位,始终为0,不可用. 41位的时间序列,精确到毫秒级,41位的长度可以使用69年.时间位还有一 ...

  5. ls算法java实现_Java API之算法 | 学步园

    本节中所描述的多态 排序(Sorting) 排序算法可为一个 List 重新排序,以使它的元素按照某种排序关系成上升式排序.有两种形式的操作被提供.简单形式的操作只采用一个 List 并按照它的元素的 ...

  6. java雪花_Java实现雪花算法(snowflake)

    本文主要介绍了Java实现雪花算法(snowflake),分享给大家,具体如下: 简单描述 最高位是符号位,始终为0,不可用. 41位的时间序列,精确到毫秒级,41位的长度可以使用69年.时间位还有一 ...

  7. 高斯模糊java代码_Java 实现高斯模糊算法

    接上篇文章<高斯模糊算法的原理>,本文我们借助 java 来实现高斯模糊算法,并使用高斯模糊算法处理实际图片. 高斯模糊就是图像和高斯函数的卷积.等价于傅里叶变换后乘上高斯函数再逆变换回来 ...

  8. java轮盘赌_java人工蜂群算法求解TSP问题

    初始化: 重复以下过程: 将采蜜蜂与蜜源一一对应,根据上面第一个公式更新蜜源信息,同时确定蜜源的花蜜量: 观察蜂根据采蜜蜂所提供的信息采用一定的选择策略选择蜜源,根据第一个公式更新蜜源信息,同时确定蜜 ...

  9. java 标记_java的标记算法

    1.三色标记法 (1)基本算法:要找出存活对象,根据可达性分析,从GC Roots开始进行遍历访问,可达的则为存活对象. (2)三色:我们把遍历对象图过程中遇到的对象,按"是否访问过&quo ...

  10. md5 算法java实现_java实现MD5算法

    import java.security.MessageDigest; /** 加密工具* @author 刘彦青 * **/ public class EncryptUtil { /** MD5加密 ...

最新文章

  1. VTK:帧率用法实战
  2. Eclipse插件开发入门
  3. jaccard相似度_如何计算两个字符串之间的文本相似度?
  4. Java通过反射访问构造方法
  5. matlab fft函数说明_关于“如何使用FFT计算天线阵列方向图”学习资料总结
  6. Unreal Engine 4添加自定义Settings到项目设置
  7. mysql monitor怎么用_MySQL 监控工具 mysql-monitor 详解
  8. Skyline软件二次开发初级——2如何在WEB页面中控制三维地图的观察点坐标和角度...
  9. numpy 求向量夹角 区间 [-pi, +pi]
  10. @interface List
  11. 要求用缓冲流:有如下字符串“If you want to change your fate I think you must come to the dark horse to learn java“
  12. python-字符串练习1
  13. 苹果市场金融类app上架ios1.2 ,5.2.1或3.21被拒原因解析
  14. 【降维打击】希尔伯特曲线
  15. 什么样的人适合学习嵌入式开发
  16. Ant Design of Vue - 让 Message 组件支持手动点击关闭
  17. 损失惨重!数据中心失火,360万个网站下线,Rust游戏25台服务器数据永久丢失...
  18. iOS动画-CAAnimation使用详解
  19. 洛谷P1897 电梯里的爱情
  20. 计算机网络实用知识,计算机网络实用技术知识点之ISDN的定义及特性

热门文章

  1. cannot add foreign key constraint mysql_解决1215 - cannot add foreign key constraint
  2. 线程通讯(wait方法、notify方法、notifyAll方法)
  3. 各银行ATM(自动柜员机) 取款费用+信用卡收费标准+网上银行收费标准
  4. Consul2-使用consul作为服务注册和发现中心
  5. face - Cross-lingual Language Model Pretraining ---- XLM
  6. SecureCRT中文乱码解决方法(6)
  7. 单片机滤波算法之一阶滤波
  8. 系小米前测试总监告诉你手工与自动化的区别,我们为什么要学习它们
  9. 2021牛客暑期多校训练营2-I(Penguins)
  10. 长宁区对发明专利授权后给予每件不超过3000元的资助