生命无罪,健康万岁,我是laity。
我曾七次鄙视自己的灵魂:
第一次,当它本可进取时,却故作谦卑;
第二次,当它在空虚时,用爱欲来填充;
第三次,在困难和容易之间,它选择了容易;
第四次,它犯了错,却借由别人也会犯错来宽慰自己;
第五次,它自由软弱,却把它认为是生命的坚韧;
第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;
第七次,它侧身于生活的污泥中,虽不甘心,却又畏首畏尾。
说明
基于TLE数据(
二行转六根
)计算轨道六根数(calculateOrbitElement
),再根据六根数求其经纬度(getInfo
),通过给出的经纬高求距离太阳的距离(getDistanceToSun),最后通过余弦定理求其关照角(TriangleAngles); 主要依赖为:Java类包Orekit
依赖准备
Orekit依赖下载,下载后直接引入到工程中;
再引入个依赖文件(在使用Orekit库之前,我们需要读取Orekit文件)
代码实现
/**
* @author: Laity
* @Project: JavaLaity
* @Package: Utils.TwoRowsToSixRoots.Demo
* @Date: 2024年03月14日 18:50
* @Description:
*/
public class Demo {
public static void main(String[] args) {
// tle测试数据
String tle = "USA 310\n" +
"1 46918U 20083A 23250.72167034 0.00000000 00000-0 00000-0 0 06\n" +
"2 46918 58.5225 136.1602 0006695 326.5223 33.4777 3.76176694 05";
// 计算轨道参数计算轨道参数
calculateOrbitElement(tle);
// 获取数据获取位置
getInfo();
// 三角角三角形三个角的度数
TriangleAngles();
}
/**
* 计算轨道参数 (半长轴,离心率,轨道倾角,升交点赤经,近地点幅角,真近点角)
* @param tle tle轨道参数(二行转六根)
*/
public static void calculateOrbitElement(String tle){
File orekitData = new File("D:\\Stay_up_late_champion\\dataStructure\\src\\main\\resources\\file\\orekit-data-master\\");
DataProvidersManager manager = DataContext.getDefault().getDataProvidersManager();
manager.addProvider(new DirectoryCrawler(orekitData)); // 存放orekitdata路径
String[] params = tle.split("\n");
String line1= params[1];
String line2= params[2];
TLE tleObj = new TLE(line1,line2);
TLEPropagator tlePropagator= TLEPropagator.selectExtrapolator(tleObj);
Orbit cartesianOrbit = tlePropagator.getInitialState().getOrbit(); // 笛卡尔轨道
KeplerianOrbit keplerianOrbit = new KeplerianOrbit(cartesianOrbit); // 转换为开普勒轨道
System.out.println("半长轴:"