卫星位置计算小程序(Java版)

一、程序介绍

(1)程序布置:我在创建了一个名为“SatellitePositionCalculationSystem”的包,在包内又创建了一个名为“wx”的类。
(2)开发工具:Eclipse

二、Java源码:

package SatellitePositionCalculationSystem;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Font;

public class wx extends JFrame {
	private JPanel contentPane;
	private JLabel lblln;
	private JLabel lblNewLabel_0;
	private JLabel lblNewLabel_1;
	private JLabel lblNewLabel_2;
	private JLabel lblNewLabel_3;
	private JLabel lblNewLabel_4;
	private JLabel lblNewLabel_5;
	private JLabel lblNewLabel_6;
	private JLabel lblNewLabel_7;
	private JLabel lblNewLabel_8;
	private JLabel lblNewLabel_9;
	private JLabel lblNewLabel_10;
	private JLabel lblNewLabel_11;
	private JLabel lblNewLabel_12;
	private JLabel lblNewLabel_13;
	private JLabel lblNewLabel_14;
	private JLabel lblNewLabel_15;
	private JLabel lblNewLabel_16;
	private JLabel lbltk;
	private JLabel lblNewLabel_17;
	private JLabel lbla;
	private JLabel lblmk;
	private JLabel lblNewLabel_18;
	private JLabel lblvk;
	private JLabel lblvk1;
	private JLabel lblvk2;
	private JLabel lblNewLabel_19;
	private JLabel lblNewLabel_20;
	private JLabel lblNewLabel_21;
	private JLabel lblNewLabel_22;
	private JLabel lblNewLabel_23;
	private JLabel lblNewLabel_24;
	private JLabel lblNewLabel_25;
	private JLabel lblNewLabel_26;
	private JLabel lblNewLabel_27;
	private JLabel lblNewLabel_28;
	private JLabel lblNewLabel_29;
	private JLabel lblNewLabel_30;
	private JLabel lblNewLabel_31;
	private JLabel lblNewLabel_32;
	private JLabel lblNewLabel_33;
	private JLabel lblNewLabel_34;
	private JLabel lblNewLabel_35;
	
	private JTextField a_1;//a_1是表示sqrtA的变量
	private JTextField a__1;//a__1是表示μ的变量
	private JTextField ln_2;
	private JTextField a0_1;
	private JTextField a1_1;
	private JTextField a2_1;
	private JTextField tk_1;
	private JTextField u_2;	
	private JTextField n_2;
	private JTextField n0_2;
	private JTextField toc_1;
	private JTextField t1_1;
	private JTextField toe_1;
	private JTextField M0_1;
	private JTextField e_1;
	private JTextField Mk_1;
	private JTextField Ek_1;
	private JTextField Vk_1;
	private JTextField Vk1_1;
	private JTextField Vk2_1;
	private JTextField w_1;
	private JTextField u0_1;
	private JTextField Crs_1;
	private JTextField Crc_1;
	private JTextField Cuc_1;
	private JTextField Cus_1;
	private JTextField Cic_1;
	private JTextField Cis_1;
	private JTextField i0_1;
	private JTextField I_1;
	private JTextField u_k_1;
	private JTextField r_k_1;
	private JTextField i_k_1;
	private JTextField uk_1;
	private JTextField rk_1;
	private JTextField ik_1;
	private JTextField xk_1;
	private JTextField yk_1;
	private JTextField omega_1;
	private JTextField omega0_1;
	private JTextField we_1;
	private JTextField omegak_1;
	private JTextField xk1_1;
	private JTextField yk1_1;
	private JTextField zk1_1;
	
	/*
	 * 启动程序代码部分
	 */
		public static void main(String[] args) {
			EventQueue.invokeLater(new Runnable() {
				public void run() {
					try {
						wx frame = new wx();
						frame.setVisible(true);
						frame.setTitle("			卫星位置计算小程序(Java版)   ");//程序名称
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			});
		}
	
	/**
	 *创建主体框架
	 */
	public wx() {
		//窗口设置
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 1144, 721);//窗口大小
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		//第一部分:结果输入
		//sqrtA部分
		JLabel lblasqrt = new JLabel("sqrtA:\r\n");
		lblasqrt.setBounds(34, 26, 203, 21);
		contentPane.add(lblasqrt);
        //sqrtA的填空模块设置
		a_1 = new JTextField();
		a_1.setBounds(137, 26, 183, 21);//填空位置大小
		contentPane.add(a_1);
		a_1.setColumns(10);//设置填空的最大字符数为10
		
		//摄政改正数Deltan部分
		lblln = new JLabel("Deltan:");
		lblln.setBounds(34, 66, 203, 15);
		contentPane.add(lblln);
		//摄政改正数Deltan的填空模块设置
		ln_2 = new JTextField();
		ln_2.setColumns(10);
		ln_2.setBounds(137, 61, 183, 21);
		contentPane.add(ln_2);
		
		//椭球引力常数μ部分
		lblNewLabel_17 = new JLabel("μ:");
		lblNewLabel_17.setBounds(34, 100, 203, 15);
		contentPane.add(lblNewLabel_17);
		//椭球引力常数μ的填空模块设置
		u_2 = new JTextField();
		u_2.setColumns(10);
		u_2.setBounds(137, 96, 183, 21);
		contentPane.add(u_2);
		
		//卫星钟飘参数a0部分
		lblNewLabel_1 = new JLabel("a0:");
		lblNewLabel_1.setBounds(34, 137, 203, 15);
		contentPane.add(lblNewLabel_1);
		//卫星钟飘参数a0的填空模块设置
		a0_1 = new JTextField();
		a0_1.setColumns(10);
		a0_1.setBounds(137, 131, 183, 21);
		contentPane.add(a0_1);

		//卫星钟飘参数a1部分
		lblNewLabel_2 = new JLabel("a1:");
		lblNewLabel_2.setBounds(34, 168, 203, 15);
		contentPane.add(lblNewLabel_2);
		//卫星钟飘参数a1的填空模块设置
		a1_1 = new JTextField();
		a1_1.setColumns(10);
		a1_1.setBounds(137, 166, 183, 21);
		contentPane.add(a1_1);
		
		//卫星钟飘参数a2部分
		lblNewLabel_3 = new JLabel("a2:");
		lblNewLabel_3.setBounds(34, 202, 203, 15);
		contentPane.add(lblNewLabel_3);
		//卫星钟飘参数a2的填空模块设置
		a2_1 = new JTextField();
		a2_1.setColumns(10);
		a2_1.setBounds(137, 201, 183, 21);
		contentPane.add(a2_1);
		
		//toc部分
		lblNewLabel_4 = new JLabel("toc:");
		lblNewLabel_4.setBounds(34, 236, 203, 15);
		contentPane.add(lblNewLabel_4);
		//toc的填空模块设置
		toc_1 = new JTextField();
		toc_1.setBounds(137, 236, 183, 21);
		contentPane.add(toc_1);
		toc_1.setColumns(10);
		
		//toe部分
		lblNewLabel_7 = new JLabel("toe:");
		lblNewLabel_7.setBounds(34, 270, 203, 15);
		contentPane.add(lblNewLabel_7);
		//toe的填空模块部分
		toe_1 = new JTextField();
		toe_1.setColumns(10);
		toe_1.setBounds(137, 271, 183, 21);
		contentPane.add(toe_1);
		
		//t'部分
		lblNewLabel_8 = new JLabel("t':");
		lblNewLabel_8.setBounds(390, 32, 109, 15);
		contentPane.add(lblNewLabel_8);
		//t'的填空模块部分
		t1_1 = new JTextField();
		t1_1.setBounds(489, 29, 207, 21);
		contentPane.add(t1_1);
		t1_1.setColumns(10);
		
		//M0部分
		lblNewLabel_6 = new JLabel("M0:");
		lblNewLabel_6.setBounds(390, 67, 109, 15);
		contentPane.add(lblNewLabel_6);
		//M0的填空模块部分
		M0_1 = new JTextField();
		M0_1.setBounds(489, 64, 207, 21);
		contentPane.add(M0_1);
		M0_1.setColumns(10);
		
		//轨道离心率e部分
		lblNewLabel_5 = new JLabel("e:");
		lblNewLabel_5.setBounds(390, 102, 109, 15);
		contentPane.add(lblNewLabel_5);
		//轨道离心率e的填空模块部分
		e_1 = new JTextField();
		e_1.setColumns(10);
		e_1.setBounds(489, 99, 207, 21);
		contentPane.add(e_1);
		
		//ω近地点角距部分
		lblNewLabel_12 = new JLabel("ω近地点角距:");
		lblNewLabel_12.setBounds(390, 137, 109, 15);
		contentPane.add(lblNewLabel_12);
		//ω近地点角距的填空模块部分
		w_1 = new JTextField();
		w_1.setBounds(489, 134, 207, 21);
		contentPane.add(w_1);
		w_1.setColumns(10);
		
		//Crs部分
		lblNewLabel_11 = new JLabel("Crs:");
		lblNewLabel_11.setBounds(390, 172, 109, 15);
		contentPane.add(lblNewLabel_11);
		//Crs的填空模块部分
		Crs_1 = new JTextField();
		Crs_1.setColumns(10);
		Crs_1.setBounds(489, 169, 207, 21);
		contentPane.add(Crs_1);

		//Crc部分
		lblNewLabel_20 = new JLabel("Crc:");
		lblNewLabel_20.setBounds(390, 207, 109, 15);
		contentPane.add(lblNewLabel_20);
		//Crc的填空模块部分
		Crc_1 = new JTextField();
		Crc_1.setColumns(10);
		Crc_1.setBounds(489, 204, 207, 21);
		contentPane.add(Crc_1);
		
		//Cuc部分
		lblNewLabel_21 = new JLabel("Cuc:");
		lblNewLabel_21.setBounds(390, 242, 109, 15);
		contentPane.add(lblNewLabel_21);
		//Cuc的填空模块部分
		Cuc_1 = new JTextField();
		Cuc_1.setColumns(10);
		Cuc_1.setBounds(489, 239, 207, 21);
		contentPane.add(Cuc_1);
		
		//Cus部分
		lblNewLabel_22 = new JLabel("Cus:");
		lblNewLabel_22.setBounds(390, 277, 109, 15);
		contentPane.add(lblNewLabel_22);
		//Cus的填空模块部分
		Cus_1 = new JTextField();
		Cus_1.setColumns(10);
		Cus_1.setBounds(489, 274, 207, 21);
		contentPane.add(Cus_1);
		
		//Cic部分
		lblNewLabel_10 = new JLabel("Cic:");
		lblNewLabel_10.setBounds(772, 32, 154, 15);
		contentPane.add(lblNewLabel_10);
		//Cic的填空模块部分
		Cic_1 = new JTextField();
		Cic_1.setColumns(10);
		Cic_1.setBounds(874, 26, 207, 21);
		contentPane.add(Cic_1);
		
		//Cis部分
		lblNewLabel_9 = new JLabel("Cis:");
		lblNewLabel_9.setBounds(772, 68, 154, 15);
		contentPane.add(lblNewLabel_9);
		//Cis的填空模块部分
		Cis_1 = new JTextField();
		Cis_1.setColumns(10);
		Cis_1.setBounds(874, 62, 207, 21);
		contentPane.add(Cis_1);
		
		//I0部分
		lblNewLabel_16 = new JLabel("I0:");
		lblNewLabel_16.setBounds(772, 104, 164, 15);
		contentPane.add(lblNewLabel_16);
		//I0的填空模块部分
		i0_1 = new JTextField();
		i0_1.setColumns(10);
		i0_1.setBounds(874, 98, 207, 21);
		contentPane.add(i0_1);
		
		//I部分
		lblNewLabel_15 = new JLabel("I:");
		lblNewLabel_15.setBounds(772, 140, 164, 15);
		contentPane.add(lblNewLabel_15);
		//I的填空模块部分
		I_1 = new JTextField();
		I_1.setColumns(10);
		I_1.setBounds(874, 134, 207, 21);
		contentPane.add(I_1);

		//Ω部分
		lblNewLabel_29 = new JLabel("Ω:");
		lblNewLabel_29.setBounds(772, 176, 164, 15);
		contentPane.add(lblNewLabel_29);
		//Ω的填空模块部分
		omega_1 = new JTextField();
		omega_1.setBounds(874, 170, 207, 21);
		contentPane.add(omega_1);
		omega_1.setColumns(10);
		
		//Ω0部分
		lblNewLabel_30 = new JLabel("Ω0:");
		lblNewLabel_30.setBounds(772, 212, 164, 15);
		contentPane.add(lblNewLabel_30);
		//Ω0的填空模块部分
		omega0_1 = new JTextField();
		omega0_1.setColumns(10);
		omega0_1.setBounds(874, 206, 207, 21);
		contentPane.add(omega0_1);
		
		//ω地球角速度部分
		lblNewLabel_31 = new JLabel("ω地球角速度:");
		lblNewLabel_31.setBounds(772, 248, 264, 15);
		contentPane.add(lblNewLabel_31);
		//ω地球角速度的填空模块部分
		we_1 = new JTextField();
		we_1.setColumns(10);
		we_1.setBounds(874, 242, 207, 21);
		contentPane.add(we_1);
		
		
		//第二部分:结果输出
		//卫星轨迹半长轴a部分
		lbla = new JLabel("卫星轨道的半长轴a:");
		lbla.setBounds(34, 395, 172, 15);
		contentPane.add(lbla);
		//卫星轨迹半长轴a的填空模块部分
		a__1 = new JTextField();
		a__1.setBounds(187, 389, 183, 21);//填空位置
		contentPane.add(a__1);
		a__1.setColumns(10);
		
		//卫星平均角速度n0部分
		JLabel lblNewLabel_0 = new JLabel("卫星平均角速度n0:");
		lblNewLabel_0.setBounds(34, 437, 172, 15);
		contentPane.add(lblNewLabel_0);
		//卫星平均角速度n0的填空模块设置
		n0_2 = new JTextField();
		n0_2.setBounds(187, 431, 183, 21);
		contentPane.add(n0_2);
		n0_2.setColumns(10);
				
		//计算历元开始时间tk部分
		lbltk = new JLabel("历元开始时间tk:");
		lbltk.setBounds(34, 479, 172, 15);
		contentPane.add(lbltk);
		//计算历元开始时间tk的填空模块设置
		tk_1 = new JTextField();
		tk_1.setColumns(10);
		tk_1.setBounds(187, 473, 183, 21);
		contentPane.add(tk_1);
		
		//卫星平均角速度n部分
		JLabel lblNewLabel = new JLabel("改正后卫星平均角速度n:");
		lblNewLabel.setBounds(34, 521, 172, 15);
		contentPane.add(lblNewLabel);
		//卫星平均角速度的填空模块设置
		n_2 = new JTextField();
		n_2.setBounds(187, 515, 183, 21);
		contentPane.add(n_2);
		n_2.setColumns(10);
		
		//平近点角Mk部分
		lblmk = new JLabel("平近点角Mk:");
		lblmk.setBounds(34, 563, 172, 15);
		contentPane.add(lblmk);
		//平近点角Mk的填空模块设置
		Mk_1 = new JTextField();
		Mk_1.setBounds(187, 557, 183, 21);
		contentPane.add(Mk_1);
		Mk_1.setColumns(10);
		
		//偏近点角Ek部分
		lblNewLabel_18 = new JLabel("偏近点角Ek:");
		lblNewLabel_18.setBounds(34, 605, 172, 15);
		contentPane.add(lblNewLabel_18);
		//偏近点角Ek的填空模块设置
		Ek_1 = new JTextField();
		Ek_1.setBounds(187, 599, 183, 21);
		contentPane.add(Ek_1);
		Ek_1.setColumns(10);
		
		//cosfk
		lblvk2 = new JLabel("cosfk:");
		lblvk2.setBounds(395, 395, 54, 15);
		contentPane.add(lblvk2);
		//cosfk的填空模块设置
		Vk2_1 = new JTextField();
		Vk2_1.setColumns(10);
		Vk2_1.setBounds(489, 389, 207, 21);
		contentPane.add(Vk2_1);
		
		//sinfk部分
		lblvk1 = new JLabel("sinfk:");
		lblvk1.setBounds(395, 437, 54, 15);
		contentPane.add(lblvk1);
		//sinfk的填空模块设置
		Vk1_1 = new JTextField();
		Vk1_1.setColumns(10);
		Vk1_1.setBounds(489, 431, 207, 21);
		contentPane.add(Vk1_1);
		
		//升交距角Фk部分
		lblNewLabel_19 = new JLabel("Фk :");
		lblNewLabel_19.setBounds(395, 479, 54, 15);
		contentPane.add(lblNewLabel_19);
		//升交距角的填空模块设置
		u0_1 = new JTextField();
		u0_1.setBounds(489, 473, 207, 21);
		contentPane.add(u0_1);
		u0_1.setColumns(10);
		
		//u_k部分
		lblNewLabel_23 = new JLabel("δu:");
		lblNewLabel_23.setBounds(395, 521, 54, 15);
		contentPane.add(lblNewLabel_23);
		//u_k的填空模块设置
		u_k_1 = new JTextField();
		u_k_1.setBounds(489, 515, 207, 21);
		contentPane.add(u_k_1);
		u_k_1.setColumns(10);
		
		//r_k部分
		lblNewLabel_24 = new JLabel("δr:");
		lblNewLabel_24.setBounds(395, 563, 54, 15);
		contentPane.add(lblNewLabel_24);
		//r_k的填空模块设置
		r_k_1 = new JTextField();
		r_k_1.setColumns(10);
		r_k_1.setBounds(489, 557, 207, 21);
		contentPane.add(r_k_1);
		
		//i_k部分
		lblNewLabel_25 = new JLabel("δi:");
		lblNewLabel_25.setBounds(395, 605, 54, 15);
		contentPane.add(lblNewLabel_25);
		//i_k的填空模块设置
		i_k_1 = new JTextField();
		i_k_1.setColumns(10);
		i_k_1.setBounds(489, 605, 207, 21);
		contentPane.add(i_k_1);
		
		//uk部分
		lblNewLabel_26 = new JLabel("u':");
		lblNewLabel_26.setBounds(775, 395, 62, 15);
		contentPane.add(lblNewLabel_26);
		//uk的填空模块设置
		uk_1 = new JTextField();
		uk_1.setColumns(10);
		uk_1.setBounds(874, 389, 207, 21);
		contentPane.add(uk_1);
		
		//rk部分
		lblNewLabel_27 = new JLabel("r:");
		lblNewLabel_27.setBounds(775, 437, 62, 15);
		contentPane.add(lblNewLabel_27);
		//rk的填空模块设置
		rk_1 = new JTextField();
		rk_1.setColumns(10);
		rk_1.setBounds(874, 431, 207, 21);
		contentPane.add(rk_1);
		
		//ik部分
		lblNewLabel_28 = new JLabel("i:");
		lblNewLabel_28.setBounds(775, 479, 62, 15);
		contentPane.add(lblNewLabel_28);
		//ik的填空模块设置
		ik_1 = new JTextField();
		ik_1.setColumns(10);
		ik_1.setBounds(874, 473, 207, 21);
		contentPane.add(ik_1);
		
		//Ωk的部分
		lblNewLabel_32 = new JLabel("Ω:");
		lblNewLabel_32.setBounds(775, 521, 62, 15);
		contentPane.add(lblNewLabel_32);
		//Ωk的填空模块设置
		omegak_1 = new JTextField();
		omegak_1.setColumns(10);
		omegak_1.setBounds(874, 515, 207, 21);
		contentPane.add(omegak_1);
		
		//Xk的部分
		lblNewLabel_14 = new JLabel("x轨道:");
		lblNewLabel_14.setBounds(775, 563, 62, 15);
		contentPane.add(lblNewLabel_14);
		//Xk的填空模块设置
		xk_1 = new JTextField();
		xk_1.setColumns(10);
		xk_1.setBounds(874, 560, 207, 21);
		contentPane.add(xk_1);
		
		//Yk的部分
		lblNewLabel_13 = new JLabel("y轨道:");
		lblNewLabel_13.setBounds(775, 605, 62, 15);
		contentPane.add(lblNewLabel_13);
		//Yk的填空模块设置
		yk_1 = new JTextField();
		yk_1.setColumns(10);
		yk_1.setBounds(874, 605, 207, 21);
		contentPane.add(yk_1);

		//X的部分
		lblNewLabel_33 = new JLabel("X:");
		lblNewLabel_33.setBounds(90, 589, 62, 145);
		contentPane.add(lblNewLabel_33);
		//Xk1的填空模块设置
		xk1_1 = new JTextField();
		xk1_1.setColumns(10);
		xk1_1.setBounds(135, 645, 237, 31);
		contentPane.add(xk1_1);
		
		//Y的部分
		lblNewLabel_34 = new JLabel("Y:");
		lblNewLabel_34.setBounds(426, 611, 162, 100);
		contentPane.add(lblNewLabel_34);
		//Yk1的填空模块设置
		yk1_1 = new JTextField();
		yk1_1.setColumns(10);
		yk1_1.setBounds(469, 646, 245, 31);
		contentPane.add(yk1_1);
		
		//Z的部分
		lblNewLabel_35 = new JLabel("Z:");
		lblNewLabel_35.setBounds(755, 653, 342, 15);
		contentPane.add(lblNewLabel_35);
		//Zk1的填空模块设置
		zk1_1 = new JTextField();
		zk1_1.setColumns(10);
		zk1_1.setBounds(794, 645, 237, 31);
		contentPane.add(zk1_1);

		
		JButton btnNewButton1 = new JButton("点击此处自动填充示例数据");//计算按钮的设置
		btnNewButton1.setActionCommand("btnNewButton1");
		btnNewButton1.setFont(new Font("SimSun", Font.PLAIN, 10));
		btnNewButton1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				a_1 = new JTextField("5153.7127704599998");
				ln_2 = new JTextField("4.1115998360700002e-009");
				u_2 = new JTextField("3.986005e14");
				a0_1 = new JTextField("0.00028600683435800001");
				a1_1 = new JTextField("1.7053025658199999e-012");
				a2_1 = new JTextField("0");
				toc_1 = new JTextField("0.00000000000000000");
				toe_1 = new JTextField("0.00000000000000000");
				t1_1 = new JTextField("4800.0");
				M0_1 = new JTextField("1.2263973009600000");
				e_1 = new JTextField("0.0053100715158500003");
				w_1 = new JTextField("-1.6819446292500000");
				Crs_1 = new JTextField("-105.43750000000000");
				Crc_1 = new JTextField("175.34375000000000");
				Cuc_1 = new JTextField("-5.5264681577700003e-006");
				Cus_1 = new JTextField("1.1192634701700000e-005");
				Cic_1 = new JTextField("-9.6857547759999998e-008");
				Cis_1 = new JTextField("-7.8231096267699997e-008");
				i0_1 = new JTextField("0.97432927738800001");
				I_1 = new JTextField("1.8643633724999999e-010");
				omega_1 = new JTextField("-7.7124641122299999e-009");
				omega0_1 = new JTextField("-2.9080127721900002");
				we_1 = new JTextField("7.2921151467e-5");
			}
		});
		btnNewButton1.setBounds(772, 274, 150, 25);
		contentPane.add(btnNewButton1);
	
		JButton btnNewButton2 = new JButton("点击此处手动输入数据");//计算按钮的设置
		btnNewButton2.setFont(new Font("SimSun", Font.PLAIN, 10));
		btnNewButton2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			}
		});
		btnNewButton2.setBounds(932, 274, 150, 25);
		contentPane.add(btnNewButton2);
		
		//第三部分:卫星位置计算具体步骤
		JButton btnNewButton = new JButton("o(( >ω< ))o>  <<<<----请点击此处进行计算,计算过程值及最终结果如下所示:---->>>>  <o(* ̄▽ ̄*)o");//计算按钮的设置
		btnNewButton.setFont(new Font("SimSun", Font.PLAIN, 18));
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// 计算卫星轨道半长轴a
				double a_sqrt = Double.parseDouble(a_1.getText().trim());
				double a = a_sqrt * a_sqrt;
				String Sa = "" + a;
				a__1.setText(Sa);
				//计算卫星运动的平均角速度n0
				double u = Double.parseDouble(u_2.getText().trim());
				double n0 = Math.pow(u / Math.pow(a, 3), 0.5);
				String Sn0 = "" + n0;
				n0_2.setText(Sn0);
				// 计算卫星运动的平均角速度n
				double ln = Double.parseDouble(ln_2.getText().trim());
				//double u = Double.parseDouble(u_2.getText().trim());
				//double n0 = Math.pow(u / Math.pow(a, 3), 0.5);
				double n = n0 + ln;
				String Sn = "" + n;
				n_2.setText(Sn);
				
				// 计算规划时间
				double toe = Double.parseDouble(toe_1.getText().trim());
				double toc = Double.parseDouble(toc_1.getText().trim());
				double t1 = Double.parseDouble(t1_1.getText().trim());
				double a0 = Double.parseDouble(a0_1.getText().trim());
				double a1 = Double.parseDouble(a1_1.getText().trim());
				double a2 = Double.parseDouble(a2_1.getText().trim());
				double lt = a0 + a1 * (t1 - toc) + a2 * ((t1 - toc) * (t1 - toc));// 计算卫星钟差
				double t = t1 - lt;
				double tk = t - toe;
				String Stk = "" + tk;
				tk_1.setText(Stk);
				
				// 计算真近点角
				double M0 = Double.parseDouble(M0_1.getText().trim());
				double e1 = Double.parseDouble(e_1.getText().trim());
				double Mk = M0 + n * tk;
				String SMk = "" + Mk;
				Mk_1.setText(SMk);

				double Ek_old = Mk;
				double Ek_new = Mk + e1 * Math.sin(Ek_old);
				int i = 1;
				while (Math.abs(Ek_new - Ek_old) > 10e-8) {
					Ek_old = Ek_new;
					Ek_new = Mk + e1 * Math.sin(Ek_old);
					i += 1;
					if (i > 10)
						break;
				}
				double Ek = Ek_new;
				String SEk = "" + Ek;
				Ek_1.setText(SEk);

				double Vk1 = (Math.pow(1 - e1 * e1, 0.5) * Math.sin(Ek)) / (1 - e1 * Math.cos(Ek));// sinVk
				String SVk1 = "" + Vk1;
				Vk1_1.setText(SVk1);
				
				double Vk2 = (Math.cos(Ek) - e1) / (1 - e1 * Math.cos(Ek)); // cosVk
				String SVk2 = "" + Vk2;
				Vk2_1.setText(SVk2);
				
				double Vk;
				if (Vk2 == 0) {
					if (Vk1 > e1)
						Vk = Math.PI / 2;
					else
						Vk = -Math.PI / 2;
				} else {
					Vk = Math.atan(Vk1 / Vk2);
					if (Vk2 < 0) {
						if (Vk1 >= 0)
							Vk += Math.PI;
						else
							Vk -= Math.PI;
					}
				}

				// 计算升交距角
				double w = Double.parseDouble(w_1.getText().trim());
				double u0 = Vk + w;
				String Su0 = "" + u0;
				u0_1.setText(Su0);

				// 计算经过摄动改正的升交距角uk、卫星的地心距离rk、轨道倾角ik
				double Crs = Double.parseDouble(Crs_1.getText().trim());
				double Crc = Double.parseDouble(Crc_1.getText().trim());
				double Cuc = Double.parseDouble(Cuc_1.getText().trim());
				double Cus = Double.parseDouble(Cus_1.getText().trim());
				double Cic = Double.parseDouble(Cic_1.getText().trim());
				double Cis = Double.parseDouble(Cis_1.getText().trim());
				double i0 = Double.parseDouble(i0_1.getText().trim());
				double I = Double.parseDouble(I_1.getText().trim());
				double u_k = Cus * Math.sin(2 * u0) + Cuc * Math.cos(2 * u0);
				double r_k = Crs * Math.sin(2 * u0) + Crc * Math.cos(2 * u0);
				double i_k = Cis * Math.sin(2 * u0) + Cic * Math.cos(2 * u0);

				String Su_k = "" + u_k;
				u_k_1.setText(Su_k);
				String Sr_k = "" + r_k;
				r_k_1.setText(Sr_k);
				String Si_k = "" + i_k;
				i_k_1.setText(Si_k);

				double uk = u0 + u_k;
				double rk = a * (1 - e1 * Math.cos(Ek)) + r_k;
				double ik = i0 + i_k + I * tk;

				String Suk = "" + uk;
				uk_1.setText(Suk);
				String Srk = "" + rk;
				rk_1.setText(Srk);
				String Sik = "" + ik;
				ik_1.setText(Sik);

				// 计算卫星的轨道平面直角坐标
				double xk = rk * Math.cos(uk);
				double yk = rk * Math.sin(uk);

				String Sxk = "" + xk;
				xk_1.setText(Sxk);
				String Syk = "" + yk;
				yk_1.setText(Syk);

				// 坐标转换
				double omega = Double.parseDouble(omega_1.getText().trim());
				double omega0 = Double.parseDouble(omega0_1.getText().trim());
				double we = Double.parseDouble(we_1.getText().trim());
				double omegak = omega0 + omega * (t - toe) - we * t;
				String Somegak = "" + omegak;
				omegak_1.setText(Somegak);

				double xk1 = xk * Math.cos(omegak) - yk * Math.cos(ik) * Math.sin(omegak);
				double yk1 = xk * Math.sin(omegak) + yk * Math.cos(ik) * Math.cos(omegak);
				double zk1 = yk * Math.sin(ik);

				String Sxk1 = "" + xk1;
				xk1_1.setText(Sxk1);
				String Syk1 = "" + yk1;
				yk1_1.setText(Syk1);
				String Szk1 = "" + zk1;
				zk1_1.setText(Szk1);
			}
		});
		btnNewButton.setBounds(30, 326, 1067, 29);
		contentPane.add(btnNewButton);
	}
}

三、程序运行画面:
在这里插入图片描述

注意:

此代码纯自己手打,鉴于经验不足,故此不太完善,如有借用可以在【自动填充示例数据】模块上精益求精,请不要按部就班。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值