通过广播星历文件计算过卫星的轨迹并与精密星历作比较,计算残差并绘图,具体效果参看下图。
// 全局变量
public static class SystemConstant
{
public static double omegae = 7.2921151467e-5; //地球自转角速度
public static double mu = 3.986005e14; //地球引力常数
}
//精密星历Reader
using System;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
public class PrecisionEphemerisReader
{
public PrecisionEphemerisReader(int headline=22)
{
FileHeadLine = headline;
}
private int FileHeadLine;
/// <summary>
/// 加载精密星历文件
/// </summary>
public PrecisionEphemerisFile LoadPrecisionEphemerisFile(string Path)
{
PrecisionEphemerisFile PrecisionEphemerisFile = new PrecisionEphemerisFile();
using (StreamReader reader = File.OpenText(Path))
{
//加载文件头{
PrecisionEphemerisFile.FileHead.Clear(); //清空数据
for (int i = 0; i < FileHeadLine; i++)
{
PrecisionEphemerisFile.FileHead.Add(reader.ReadLine());
}
while (true)
{
string value = reader.ReadLine();
if (value != "EOF")
{
PrecisionEphemerisModle modle = new PrecisionEphemerisModle();
modle.TimeStamp = ResloveTimeStamp(value);
// Debug.Log(ResloveTimeStamp(value).ToString());
for (int i = 0; i < 32; i++)
{
SatelliteInfo info = ResolveSatelliteInfo(reader.ReadLine());
modle.SatelliteInfos.Add(info);
// Debug.Log(info.LogSatelliteInfo());
}
PrecisionEphemerisFile.Modles.Add(modle);
}
else
{
break;
}
}
return PrecisionEphemerisFile;
}
}
/// <summary>
/// 解析时间戳
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
private DateTime ResloveTimeStamp(string info)
{
string[] infos = info
.Split(new string[] {" "}, StringSplitOptions.RemoveEmptyEntries);
int year = int.Parse(infos[1]);
int mouth = int.Parse(infos[2]);
int day = int.Parse(infos[3]);
int hour = int.Parse(infos[4]);
int minnute = int.Parse(infos[5]);
//Int32 seconds=Int32.Parse(infos[6]);;
return new DateTime(year, mouth, day, hour, minnute, 0);
}
/// <summary>
/// 解析卫星信息
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
private SatelliteInfo ResolveSatelliteInfo(string info)
{
string[] infos = info
.Split(new string[] {" "}, StringSplitOptions.RemoveEmptyEntries);
if (infos.Length == 9)
{
SatelliteInfo m_SatelliteInfo=new SatelliteInfo();
m_SatelliteInfo.SatelliteID = infos[0];
m_SatelliteInfo.X_Coordinate =double.Parse(infos[1])*1000;
m_SatelliteInfo.Y_Coordinate =double.Parse(infos[2])*1000;
m_SatelliteInfo.Z_Coordinate =double.Parse(infos[3])*1000;
m_SatelliteInfo.Clock_Microsec =double.Parse(infos[4]);
m_SatelliteInfo.X_sdev =int.Parse(infos[5]);
m_SatelliteInfo.Y_sdev =int.Parse(infos[6]);
m_SatelliteInfo.Z_sdev =int.Parse(infos[7]);
m_SatelliteInfo.C_sdev = int.Parse(infos[8]);
return m_SatelliteInfo;
}
if(infos.Length == 5)
{
SatelliteInfo m_SatelliteInfo=new SatelliteInfo();
m_SatelliteInfo.SatelliteID = infos[0];
m_SatelliteInfo.X_Coordinate =double.Parse(infos[1])*1000;
m_SatelliteInfo.Y_Coordinate =double.Parse(infos[2])*1000;
m_SatelliteInfo.Z_Coordinate =double.Parse(infos[3])*1000;
m_SatelliteInfo.Clock_Microsec =double.Parse(infos[4]);
return m_SatelliteInfo;
}
return new SatelliteInfo();
}
}
public class PrecisionEphemerisFile
{
public List<string> FileHead = new List<string>();
public List<PrecisionEphemerisModle> Modles = new List<PrecisionEphemerisModle>();
/// <summary>
/// 返回头文件的字符串
/// </summary>
/// <returns></returns>
public string FileHeadInfo()
{
if (FileHead.Count > 0)
{
string temp = String.Empty;
foreach (var item in FileHead)
{
temp = temp + item + "\r\n";
}
return temp;
}
else
{
return "没有文件头信息";
}
}
public string ContentInfo()
{
if (Modles.Count>0)
{
string temp = string.Empty;
foreach (var item in Modles)
{
temp = temp + item.TimeStamp + "\r\n";
temp = temp + item.LogInfos() + "\r\n";
}
return temp;
}
else
{
return "数据为空";
}
}
}
public class PrecisionEphemerisModle
{
public DateTime TimeStamp = new DateTime();
public List<SatelliteInfo> SatelliteInfos = new List<SatelliteInfo>();
public string LogInfos()
{
string temp=String.Empty;
foreach (var item in SatelliteInfos)
{
temp = temp + item.LogSatelliteInfo()+"\r\n";
}
return temp;
}
}
public class SatelliteInfo
{
public string SatelliteID=String.Empty;
public double X_Coordinate;
public double Y_Coordinate;
public double Z_Coordinate;
public double Clock_Microsec;
public int X_sdev;
public int Y_sdev;
public int Z_sdev;
public int C_sdev;
public string LogSatelliteInfo()
{
if (SatelliteID != String.Empty)
{
return String.Format
("卫星ID:{0}; X坐标:{1},Y坐标:{2}, Z坐标:{3}, Clock_Microsec:{4},X_sdev:{5},Y_sdev:{6},Z_sdev:{7},C_sdev:{8} "
,SatelliteID,X_Coordinate,Y_Coordinate,Z_Coordinate,Clock_Microsec,X_sdev,Y_sdev,Z_sdev,C_sdev);
}
return "卫星信息为空";
}
}
//广播星历Reader
using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
public class BroadcastEphemerisReader
{
public BroadcastEphemerisReader(int fileHeadLine=8)
{
FileHeadLine = fileHeadLine;
}
private int FileHeadLine ;
public BroadcaseEphemerisFile LoadBroadcastEphemerisFile( string Path)
{
BroadcaseEphemerisFile m_BroadcaseEphemerisFile=new BroadcaseEphemerisFile();
using (StreamReader reader = File.OpenText(Path))
{
//读文件头
for (int i = 0; i < FileHeadLine; i++)
{
string temp = reader.ReadLine();
m_BroadcaseEphemerisFile.FileHead.Add(temp);
}
int lineNum = 8;
while (true)
{
string temp01=reader.ReadLine();
if (temp01!=null)
{
lineNum += 8;
/*
* 处理第一行数据
*/
//雷达编号
BroadcaseEphemerisModle modle=new BroadcaseEphemerisModle();
modle.SatelliteID = int.Parse(temp01.Substring(0, 2));
//时间戳
string[] infos = temp01.Substring(2,20)
.Split(new string[] {" "}, StringSplitOptions.RemoveEmptyEntries);
modle.TimeStamp=new DateTime(int.Parse(infos[0])+2000,int.Parse(infos[1]),int.Parse(infos[2]),
int.Parse(infos[3]),int.Parse(infos[4]),(int)float.Parse(infos[5]));
//卫星时钟的偏移 毫秒
modle.卫星时钟的偏移=Double.Parse(temp01.Substring(22, 19));
//卫星时钟的漂移
modle.卫星时钟的漂移=Double.Parse(temp01.Substring(41, 19));
//卫星时钟的漂移速度
modle.卫星时钟的漂移速度=Double.Parse(temp01.Substring(60, 19));
/*
* 处理第二行数据
*/
string temp02= reader.ReadLine();
modle.IODE = Double.Parse(temp02.Substring(3, 19));
modle.Crs = Double.Parse(temp02.Substring(22, 19));
modle.Delta_R = Double.Parse(temp02.Substring(41, 19));
modle.Mo = Double.Parse(temp02.Substring(60, 19));
/*
* 处理第三行数据
*/
string temp03= reader.ReadLine();
modle.Cuc=Double.Parse(temp03.Substring(3, 19));
modle.e = Double.Parse(temp03.Substring(22, 19));
modle.Cus=Double.Parse(temp03.Substring(41, 19));
modle.根号a=Double.Parse(temp03.Substring(60, 19));
/*
* 处理第四行数据
*/
string temp04= reader.ReadLine();
modle.Toe=Double.Parse(temp04.Substring(3, 19));
modle.Cic= Double.Parse(temp04.Substring(22, 19));
modle.OUo=Double.Parse(temp04.Substring(41, 19));
modle.Cis=Double.Parse(temp04.Substring(60, 19));
/*
* 处理第五行数据
*/
string temp05= reader.ReadLine();
modle.I0=Double.Parse(temp05.Substring(3, 19));
modle.Crc= Double.Parse(temp05.Substring(22, 19));
modle.w=Double.Parse(temp05.Substring(41, 19));
modle.OU=Double.Parse(temp05.Substring(60, 19));
/*
* 处理第六行数据
*/
string temp06= reader.ReadLine();
modle.I=Double.Parse(temp06.Substring(3, 19));
modle.L2上的码= Double.Parse(temp06.Substring(22, 19));
modle.GPS周数=Double.Parse(temp06.Substring(41, 19));
modle.L2码数据标记=Double.Parse(temp06.Substring(60, 19));
/*
* 处理第七行数据
*/
string temp07= reader.ReadLine();
modle.卫星精度=Double.Parse(temp07.Substring(3, 19));
modle.卫星健康= Double.Parse(temp07.Substring(22, 19));
modle.Tgd=Double.Parse(temp07.Substring(41, 19));
modle.IODC=Double.Parse(temp07.Substring(60, 19));
/*
* 处理第八行数据
*/
string temp08= reader.ReadLine();
modle.电文发送时刻=Double.Parse(temp08.Substring(3, 19));
modle.拟合区间= Double.Parse(temp08.Substring(22, 19));
modle.Unuse01=Double.Parse(temp08.Substring(41, 19));
modle.Unuse02=Double.Parse(temp08.Substring(60, 19));
// Debug.Log(modle.LogBroadcaseEphemerisModle());
m_BroadcaseEphemerisFile.modles.Add(modle);
}
else
{
break;
}
}
return m_BroadcaseEphemerisFile;
}
}
}
public class BroadcaseEphemerisFile
{
public List<string> FileHead=new List<string>();
public List<BroadcaseEphemerisModle> modles=new List<BroadcaseEphemerisModle>();
//public
public string LogFileHead()
{
if (FileHead.Count > 0)
{
string temp=String.Empty;
foreach (var item in FileHead)
{
temp = temp + item + "\r\n";
}
return temp;
}
return "文件头为空";
}
}
public class BroadcaseEphemerisModle
{
public string LogBroadcaseEphemerisModle()
{
return String.Format("卫星编号:{0},时间戳:{1},卫星时钟的偏移:{2},卫星时钟的漂移:{3},卫星时钟的漂移速度:{4},IODE:{5},Crs:{6},Delta_R:{7}," +
"Mo:{8},Cuc:{9}, e:{10}, Cus:{11}, 根号a:{12}, Toe:{13}, Cic:{14}, OUo:{15}, Cis:{16}, I0:{17}, Crc:{18}, w:{19}, OU:{20}, I:{21}, L2上的码:{22}, GPS周数:{23}, L2码数据标记:{24}," +
"卫星精度:{25}, 卫星健康:{26}, Tgd:{27}, IODC:{28}, 电文发送时刻:{29}, 拟合区间:{30}, Unuse01:{31}, Unuse02:{32}"
, SatelliteID,TimeStamp,卫星时钟的偏移,卫星时钟的漂移,卫星时钟的漂移速度,
IODE,Crs,Delta_R,Mo,Cuc,e,Cus,根号a,Toe,Cic,OUo,Cis,I0,Crc,w,OU,I,L2上的码,
GPS周数,L2码数据标记,卫星精度,卫星健康,Tgd,IODC,电文发送时刻,拟合区间,Unuse01,Unuse02);
}
public int SatelliteID;
public DateTime TimeStamp;
public double 卫星时钟的偏移;
public double 卫星时钟的漂移;
public double 卫星时钟的漂移速度;
public double IODE;
public double Crs;
public double Delta_R;
public double Mo;
public double Cuc;
public double e;
public double Cus;
public double 根号a;
public double Toe;
public double Cic;
public double OUo;
public double Cis;
public double I0;
public double Crc;
public double w;
public double OU;
public double I;
public double L2上的码;
public double GPS周数;
public double L2码数据标记;
public double 卫星精度;
public double 卫星健康;
public double Tgd;
public double IODC;
public double 电文发送时刻;
public double 拟合区间;
public double Unuse01;
public double Unuse02;
}
//主程序
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using UnityEngine;
using UnityEngine.UI;
using XCharts;
using Application = UnityEngine.Application;
using Button = UnityEngine.UI.Button;
public class RootMsg : MonoBehaviour
{
private int ID = 1;
private static Text m_text;
private LineChart PrecisionEphemerisChart;
private LineChart BroadcaseEphemerisChart;
private LineChart ResidualChart;
private Dropdown SateliteID;
private Button Btn_PrecisionImg;
private Button Btn_BroadcaseImg;
private Button Btn_ResidualImg;
private string bPath=String.Empty;
private string pPath=String.Empty;
public PrecisionEphemerisFile m_PrecisionEphemerisFile=new PrecisionEphemerisFile();
public BroadcaseEphemerisFile m_BroadcaseEphemerisFile=new BroadcaseEphemerisFile();
//private string bPath=@"D:\Users\30721\Desktop\广播星历源码及PPT-曹勃杨\广播星历源码及PPT-曹勃杨\brdc0010.20n";
//private string pPath=@"D:\Users\30721\Desktop\广播星历源码及PPT-曹勃杨\广播星历源码及PPT-曹勃杨\igs20863.sp3";
private List<double> PrecisionEphemerisPos_X=new List<double>();
private List<double> PrecisionEphemerisPos_Y=new List<double>();
private List<double> PrecisionEphemerisPos_Z=new List<double>();
private List<double> BroadcaseEphemerisPos_X=new List<double>();
private List<double> BroadcaseEphemerisPos_Y=new List<double>();
private List<double> BroadcaseEphemerisPos_Z=new List<double>();
private List<double> ResidualPos_X = new List<double>();
private List<double> ResidualPos_Y=new List<double>();
private List<double> ResidualPos_Z=new List<double>();
/// <summary>
/// 获取广播星历文件路径
/// </summary>
public void GetBroadcastEphemerPath()
{
bPath=String.Empty;
OpenFileDialog dialog = new OpenFileDialog();
dialog.InitialDirectory = "D:\\";
if (dialog.ShowDialog() == DialogResult.OK)
{
bPath = dialog.FileName;
LogInfo(String.Format("广播星历文件路径:{0}",bPath));
}
}
/// <summary>
/// 获取精密星历文件路径
/// </summary>
public void GetPrecisionEphemerPath()
{
pPath=String.Empty;
OpenFileDialog dialog = new OpenFileDialog();
dialog.InitialDirectory = "D:\\";
if (dialog.ShowDialog() == DialogResult.OK)
{
pPath = dialog.FileName;
LogInfo(String.Format("精密星历文件路径:{0}",pPath));
}
}
/// <summary>
/// 加载星历
/// </summary>
public void LoadFile()
{
if (bPath != String.Empty && pPath != String.Empty)
{
m_PrecisionEphemerisFile= new PrecisionEphemerisReader().LoadPrecisionEphemerisFile(pPath);
m_BroadcaseEphemerisFile=new BroadcastEphemerisReader().LoadBroadcastEphemerisFile(bPath);
LogInfo(string.Format("精密星历加载文件{0}组,广播星历加载文件{1}组",m_PrecisionEphemerisFile.Modles.Count,
m_BroadcaseEphemerisFile.modles.Count));
}
else
{
LogInfo("需要先选择星历路径");
}
}
/// <summary>
/// 绘制精密星历图像
/// </summary>
public void PrecisionEphemerisImage()
{
PrecisionEphemerisChart.gameObject.SetActive(true);
BroadcaseEphemerisChart.gameObject.SetActive(false);
ResidualChart.gameObject.SetActive(false);
PrecisionEphemerisChart.title.text = string.Format("{0}号卫星精密星历图", ID);
for (int i = 0; i < 24; i++)
{
PrecisionEphemerisChart.UpdateData("X", i, (float) PrecisionEphemerisPos_X[i]);
PrecisionEphemerisChart.UpdateData("Y", i, (float) PrecisionEphemerisPos_Y[i]);
PrecisionEphemerisChart.UpdateData("Z", i, (float) PrecisionEphemerisPos_Z[i]);
}
}
/// <summary>
/// 绘制广播星历图像
/// </summary>
public void BroadcaseEphemerisImage()
{
PrecisionEphemerisChart.gameObject.SetActive(false);
BroadcaseEphemerisChart.gameObject.SetActive(true);
ResidualChart.gameObject.SetActive(false);
BroadcaseEphemerisChart.title.text = string.Format("{0}号卫星广播星历图", ID);
for (int i = 0; i < 24; i++)
{
BroadcaseEphemerisChart.UpdateData("X", i, (float) BroadcaseEphemerisPos_X[i]);
BroadcaseEphemerisChart.UpdateData("Y", i, (float) BroadcaseEphemerisPos_Y[i]);
BroadcaseEphemerisChart.UpdateData("Z", i, (float) BroadcaseEphemerisPos_Z[i]);
}
}
/// <summary>
/// 绘制残差图像
/// </summary>
public void ResidualImage()
{
PrecisionEphemerisChart.gameObject.SetActive(false);
BroadcaseEphemerisChart.gameObject.SetActive(false);
ResidualChart.gameObject.SetActive(true);
ResidualChart.title.text = string.Format("{0}号卫星残差图", ID);
for (int i = 0; i < 7; i++)
{
ResidualChart.UpdateData("X", i, (float) ResidualPos_X[i]);
ResidualChart.UpdateData("Y", i, (float) ResidualPos_Y[i]);
ResidualChart.UpdateData("Z", i, (float) ResidualPos_Z[i]);
}
}
/// <summary>
/// 选择卫星ID
/// </summary>
public void SelectSatelite()
{
ID = int.Parse(SateliteID.captionText.text);
LogInfo("卫星编号:"+ID);
}
/// <summary>
/// 数据处理
/// </summary>
public void CalculateDraw()
{
if (m_BroadcaseEphemerisFile.FileHead.Count == 0)
{
LogInfo("请先加载文件");
return;
}
ProcessPrecisionEphemeris();
ProcessBroadcaseEphemeris();
ProvessResidualEphemeris();
Btn_BroadcaseImg.interactable = true;
Btn_PrecisionImg.interactable = true;
Btn_ResidualImg.interactable = true;
}
/// <summary>
/// 处理精密星历数据
/// </summary>
private void ProcessPrecisionEphemeris()
{
List<PrecisionEphemerisModle> temp=new List<PrecisionEphemerisModle>();
for (int i = 0; i < 24; i++)
{
temp.Add(m_PrecisionEphemerisFile.Modles[i*4]);
}
List<double> result_X=new List<double>();
List<double> result_Y=new List<double>();
List<double> result_Z=new List<double>();
foreach (var item in temp)
{
result_X.Add(item.SatelliteInfos[ID-1].X_Coordinate);
result_Y.Add(item.SatelliteInfos[ID-1].Y_Coordinate);
result_Z.Add(item.SatelliteInfos[ID-1].Z_Coordinate);
}
PrecisionEphemerisPos_X = result_X;
PrecisionEphemerisPos_Y = result_Y;
PrecisionEphemerisPos_Z = result_Z;
}
/// <summary>
/// 处理广播星历数据
/// </summary>
private void ProcessBroadcaseEphemeris()
{
List<BroadcaseEphemerisModle> modles =
m_BroadcaseEphemerisFile.modles.FindAll((modle => modle.SatelliteID == ID));
CalculatePos(modles);
}
private void CalculatePos(List<BroadcaseEphemerisModle> modles)
{
List<double> result_X=new List<double>();
List<double> result_Y=new List<double>();
List<double> result_Z=new List<double>();
for (int i = 0; i < 24; i++)
{
DateTime time=new DateTime(modles[0].TimeStamp.Year,modles[0].TimeStamp.Month,
modles[0].TimeStamp.Day,i,0,0);
BroadcaseEphemerisModle modle = modles[0];
TimeSpan span = time - modles[0].TimeStamp;
double second = Math.Abs(span.TotalSeconds);
foreach (var item in modles)
{
TimeSpan span01 = time - item.TimeStamp;
double second01 = Math.Abs(span01.TotalSeconds);
if (second > second01)
{
modle = item;
second = second01;
}
}
//Debug.LogFormat("最接近{0}的时刻是{1}",time,modle.TimeStamp);
//卫星的平均角速度
double tk = (time - modle.TimeStamp).TotalSeconds;
double A = Math.Pow(modle.根号a, 2);
double n0=Math.Sqrt(SystemConstant.mu/Math.Pow(A,3));
double n = n0 + modle.Delta_R * tk;
//平近点角(迭代法)
double Mk = modle.Mo + n * tk;
if (Mk < 0)
{
Mk += 2 * Math.PI;
}
if (Mk > 2 * Math.PI)
{
Mk -= 2 * Math.PI;
}
//偏近点角
double Eold = Mk;
double Enew = Mk+modle.e*Math.Sin(Eold);
int j = 1;
while (Math.Abs(Enew-Eold)>1e-8)
{
Eold = Enew;
Enew = Mk+modle.e*Math.Sin(Eold);
j += 1;
if (j > 10)
{
break;
}
}
double EK = Enew;
// 真近点角
double cosNuk=(Math.Cos(EK)-modle.e)/(1-modle.e*Math.Cos(EK));
double sinNuk = (Math.Sqrt(1 - Math.Pow(modle.e, 2))*Math.Sin(EK))/(1-modle.e*Math.Cos(EK));
double NK = Math.Atan(sinNuk / cosNuk);
//结局真近点角象限不同出现的取值异常情况
if (cosNuk < 0)
{
NK += Math.PI;
}
//升交点角距
double PK = NK + modle.w;
double deltauk = modle.Cus * Math.Sin(2 * PK) + modle.Cuc * Math.Cos(2 * PK);
double deltark = modle.Crs * Math.Sin(2 * PK) + modle.Crc * Math.Cos(2 * PK);
double deltaik = modle.Cis * Math.Sin(2 * PK) + modle.Cic * Math.Cos(2 * PK);
//摄动改正后升交点角距、卫星矢径长度、轨道倾角
double uk = PK + deltauk;
double rk = A * (1 - modle.e * Math.Cos(EK)) + deltark;
double ik = modle.I0 + modle.I * tk + deltaik;
//极坐标转化为直角坐标
double x1k = rk * Math.Cos(uk);
double y1k= rk * Math.Sin(uk);
//升交点赤经
double omegak = modle.OUo + (modle.OU - SystemConstant.omegae) * tk - SystemConstant.omegae * modle.Toe;
//最终WGS84坐标
double x = x1k * Math.Cos(omegak) - y1k * Math.Cos(ik) * Math.Sin(omegak);
double y = x1k * Math.Sin(omegak) + y1k * Math.Cos(ik) * Math.Cos(omegak);
double z = y1k * Math.Sin(ik);
result_X.Add(x);
result_Y.Add(y);
result_Z.Add(z);
}
BroadcaseEphemerisPos_X = result_X;
BroadcaseEphemerisPos_Y = result_Y;
BroadcaseEphemerisPos_Z = result_Z;
}
/// <summary>
/// 处理残差数据
/// </summary>
private void ProvessResidualEphemeris()
{
ResidualPos_X.Clear();
ResidualPos_Y.Clear();
ResidualPos_Z.Clear();
for (int i = 0; i < 14; i+=2)
{
ResidualPos_X.Add(PrecisionEphemerisPos_X[i] - BroadcaseEphemerisPos_X[i]);
ResidualPos_Y.Add(PrecisionEphemerisPos_Y[i] - BroadcaseEphemerisPos_Y[i]);
ResidualPos_Z.Add(PrecisionEphemerisPos_Z[i] - BroadcaseEphemerisPos_Z[i]);
}
}
/// <summary>
/// 清空数据
/// </summary>
public void ClearData()
{
PrecisionEphemerisPos_X.Clear();
PrecisionEphemerisPos_X.Clear();
PrecisionEphemerisPos_X.Clear();
PrecisionEphemerisPos_X.Clear();
PrecisionEphemerisPos_X.Clear();
PrecisionEphemerisPos_X.Clear();
PrecisionEphemerisPos_X.Clear();
PrecisionEphemerisPos_X.Clear();
PrecisionEphemerisPos_X.Clear();
Btn_BroadcaseImg.interactable = false;
Btn_PrecisionImg.interactable = false;
Btn_ResidualImg.interactable = false;
PrecisionEphemerisChart.gameObject.SetActive(false);
BroadcaseEphemerisChart.gameObject.SetActive(false);
ResidualChart.gameObject.SetActive(false);
}
/// <summary>
/// 程序退出
/// </summary>
public void QuitApp()
{
Application.Quit();
}
/// <summary>
/// 程序开始
/// </summary>
void Start()
{
m_text = GameObject.Find("InfoTip").GetComponent<Text>();
PrecisionEphemerisChart= GameObject.Find("PrecisionEphemerisChart").GetComponent<LineChart>();
BroadcaseEphemerisChart= GameObject.Find("BroadcaseEphemerisChart").GetComponent<LineChart>();
ResidualChart= GameObject.Find("ResidualChart").GetComponent<LineChart>();
PrecisionEphemerisChart.gameObject.SetActive(false);
BroadcaseEphemerisChart.gameObject.SetActive(false);
ResidualChart.gameObject.SetActive(false);
SateliteID = GameObject.Find("SatelliteID").GetComponent<Dropdown>();
Btn_BroadcaseImg= GameObject.Find("广播星历图像").GetComponent<Button>();
Btn_PrecisionImg= GameObject.Find("精密星历图像").GetComponent<Button>();
Btn_ResidualImg= GameObject.Find("残差图").GetComponent<Button>();
Btn_BroadcaseImg.interactable = false;
Btn_PrecisionImg.interactable = false;
Btn_ResidualImg.interactable = false;
}
/// <summary>
/// log日志
/// </summary>
/// <param name="info"></param>
public static void LogInfo(string info)
{
m_text.text = info;
}
}