




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、VS軟件設計實驗報告-通過廣播星歷計算衛星位置 學院:地理科學學院 專業:地理信息系統 成員:吳久福、張剛、陳志成一、設計背景:在GPS測量中,計算出衛星在空間中的位置是一個極其重要的步驟,但由于計算參數的數量多、數值大、精度高等原因,所以手工計算過程復雜,時間較長。二、設計目的:設計開發一個小軟件用于通過廣播星歷所給數據計算衛星在空間中的位置,減少手工計算,提高工作效率三、設計工具:Microsoft Visual Studio 2010類庫:File類-提供用于創建、復制、刪除、移動和打開文件的靜態方法,并協助創建 FileStream 對象。命名空間是System.I
2、O。本軟件設計過程主要使用了OpenFileDialog、System.IO.File.ReadAllLines等,用于直接讀取txt文檔中的計算參數。 Math類-提供數學運算的方法。本軟件設計過程中主要使用了Math.Sqrt(開方)、Math.Abs(絕對值)、Math.Cos(余弦值)、Math.Sin(正弦值)等。四、用廣播星歷計算衛星位置的計算過程 1 1.計算衛星運動的平均角速度2.計算觀測瞬間衛星的平近點角其中,為觀測瞬間衛星的平近點角。為參考時刻的平近點角,和 由廣播星歷給出。3 計算偏近點角E234 計算真近點角5 計算升交角距46 計算衛星向徑7 計算攝動項56通過上述的
3、計算過程可知手工計算衛星位置不僅過程復雜繁瑣而且很容易出錯,中在迭代計算時很難達到精度要求。所以比起手工計算,通過計算機軟件計算更符合計算要求和未來發展需求。 7五、軟件設計實現用廣播星歷計算衛星位置1.軟件界面:軟件參數可以直接在填空處輸入,也可單機“打開”按鈕,選擇TXT文檔.但TXT文檔中的參數需要按下圖所示書寫:8計算結果除了可以在界面中顯示出來還可以單機“輸出”按鈕,選擇一個TXT文檔進行保存。保存結果如下圖所示:2.軟件代碼:using System;using System.Collections.Generic;using System.ComponentModel;using
4、 System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;namespace 用廣播星歷計算衛星位置 public partial class txti : Form public txti() InitializeComponent(); private void btnOk_Click(object sender, EventArgs e) double GM;/GM是萬有引力常數G與地球的總質量M的乘積,值為3.98600
5、5E+14 double a;/衛星軌道長半徑 double re;/衛星軌道橢圓扁心率e double sqrt_A;/根號A,廣播星歷中給定的參數9 double no;/參考時刻toe的平均角速度no double gz_n;/廣播星歷中給定的攝動參數n double n;/觀測時刻衛星的平均角速度n double toe;/廣播星歷給定的參考時刻toe double Mo;/參考時刻toe時的平近點角Mo double t;/觀測時刻t double M;/觀測時刻衛星的平近點角M double E;/偏近點角E double E0;/E的迭代初值 double f;/真近點角f do
6、uble w;/近地點角 double u;/升交角距 double r;/衛星向徑 double i;/衛星軌道傾角 double Cuc, Cus, Crc, Crs, Cic, Cis;/攝動力影響系數 double s_u, s_r, s_i;/攝動項 double sg_u, sg_r,sg_i;/經攝動改正的升交角距和衛星向徑 double x, y;/GPS在軌道平面直角坐標系中的坐標(x,y) double RAo, RA;/。和 double L;/觀測瞬間升交點的經度L double We;/地球自轉角速度We double X, Y, Z;/衛星在瞬時地球坐標系中的位置(
7、X,Y,Z) double Xcts, Ycts, Zcts;/衛星在協議地球坐標系中的位置(Xcts, Ycts, Zcts) double Xp, Yp;/極移值 /計算衛星運動的平均角速度GM=Convert.ToDouble(lblGM.Text); re = Convert.ToDouble(txte.Text); sqrt_A = Convert.ToDouble(txtGA.Text); no = System.Math.Sqrt(GM)/(sqrt_A * sqrt_A * sqrt_A); lblno.Text = Convert.ToString(no); gz_n = C
8、onvert.ToDouble(txtgzN.Text); n = no + gz_n; lbln.Text = Convert.ToString(n); /計算衛星的長半徑 a = sqrt_A * sqrt_A; lbla.Text = Convert.ToString(a); /計算觀測瞬間衛星的平近點角 toe = Convert.ToDouble(txtToe.Text); Mo = Convert.ToDouble(txtMo.Text); t = Convert.ToDouble(txtT.Text);10 M = Mo + n * (t - toe); lblM.Text =
9、Convert.ToString(M); /計算偏近點角 E0 = 0; E = M; for (;System.Math.Abs(E - E0) >= 0.1e-30;) E0 = E; E = M + re * System.Math.Sin(E0); lblE.Text = Convert.ToString(E); /計算真近點角 f=System.Math.Atan(System.Math.Sqrt(1-(re*re)*System.Math.Sin(E)/(System. Math.Cos(E)-re); lblf.Text = Convert.ToString(f); /計算
10、升交角距(未改正) w = Convert.ToDouble(txtW.Text); u = w + f; lblu.Text = Convert.ToString(u); /計算衛星向徑(未改正) r = a*(1 - re * System.Math.Cos(E); lblr.Text = Convert.ToString(r); /計算攝動項 Cus = Convert.ToDouble(txtCus.Text); Cuc = Convert.ToDouble(txtCuc.Text); Crs = Convert.ToDouble(txtCrs.Text); Crc = Convert
11、.ToDouble(txtCrc.Text); Cis = Convert.ToDouble(txtCis.Text); Cic = Convert.ToDouble(txtCic.Text); s_u = Cuc * System.Math.Cos(2 * u) + Cus * System.Math.Sin(2 * u); s_r = Crc * System.Math.Cos(2 * u) + Crs * System.Math.Sin(2 * u); s_i = Cic * System.Math.Cos(2 * u) + Cis * System.Math.Sin(2 * u); l
12、bls_u.Text = Convert.ToString(s_u); lbls_r.Text = Convert.ToString(s_r); lbls_i.Text = Convert.ToString(s_i); 11/計算經攝動改正的升交角距和衛星向徑 i = Convert.ToDouble(txtGDi.Text); sg_u = u + s_u; sg_r = r + s_r; sg_i = i + s_i; lblsg_u.Text = Convert.ToString(sg_u); lblsg_r.Text = Convert.ToString(sg_r); lblsg_i.
13、Text = Convert.ToString(sg_i); /計算GPS在軌道平面直角坐標系中的坐標 x = sg_r * System.Math.Cos(sg_u); y= sg_r * System.Math.Sin(sg_u); lblx.Text = Convert.ToString(x); lbly.Text = Convert.ToString(y); /計算觀測瞬間升交點的經度 RAo = Convert.ToDouble(txtRAo.Text); RA = Convert.ToDouble(txtRA.Text); We = Convert.ToDouble(lblWe.T
14、ext); L = RAo + (RA - We) * t - RA * toe; lblL.Text = Convert.ToString(L); /計算衛星在瞬時地球坐標系中的位置 X = x * System.Math.Cos(L) - y * System.Math.Cos(sg_i) * System.Math.Sin(L); Y = x * System.Math.Sin(L) + y * System.Math.Cos(sg_i) * System.Math.Cos(L); Z = y * System.Math.Sin(i); lbl_X.Text = Convert.ToSt
15、ring(X); lbl_Y.Text = Convert.ToString(Y); lbl_Z.Text = Convert.ToString(Z); /計算衛星在協議地球坐標系中的位置 Xp = Convert.ToDouble(txtXp.Text); Yp = Convert.ToDouble(txtYp.Text); Xcts = X + Xp * Z; Ycts = Y - Yp * Z; Zcts = -Xp * X + Yp * Y + Z; lblXcts.Text = Convert.ToString(Xcts); lblYcts.Text = Convert.ToStri
16、ng(Ycts); lblZcts.Text = Convert.ToString(Zcts); 12 /讀取TXT文檔中的數據 private void button1_Click(object sender, EventArgs e) OpenFileDialog fileName = new OpenFileDialog(); fileName.Filter = "記事本|*.txt" if (fileName.ShowDialog() = DialogResult.OK) string path = fileName.FileName.ToString(); fil
17、eName.OpenFile(); /打開文件 String allLine = System.IO.File.ReadAllLines(path);/讀TXT所有行,分行/存在數組中 txte.Text = allLine0.Substring(allLine0.LastIndexOf(":") + 1); txtGA.Text = allLine1.Substring(allLine1.LastIndexOf(":") + 1); txtgzN.Text = allLine2.Substring(allLine2.LastIndexOf("
18、:") + 1); txtToe.Text = allLine3.Substring(allLine3.LastIndexOf(":") + 1); txtMo.Text = allLine4.Substring(allLine4.LastIndexOf(":") + 1); txtT.Text = allLine5.Substring(allLine5.LastIndexOf(":") + 1); txtW.Text = allLine6.Substring(allLine6.LastIndexOf(":&quo
19、t;) + 1); txtRAo.Text = allLine7.Substring(allLine7.LastIndexOf(":") + 1); txtRA.Text = allLine8.Substring(allLine8.LastIndexOf(":") + 1); txtGDi.Text = allLine9.Substring(allLine9.LastIndexOf(":") + 1); txtCuc.Text = allLine10.Substring(allLine10.LastIndexOf(":&qu
20、ot;) + 1); txtCus.Text = allLine11.Substring(allLine11.LastIndexOf(":") + 1); txtCic.Text = allLine12.Substring(allLine12.LastIndexOf(":") + 1); txtCis.Text = allLine13.Substring(allLine13.LastIndexOf(":") + 1); txtCrc.Text = allLine14.Substring(allLine14.LastIndexOf(&q
21、uot;:") + 1); txtCrs.Text = allLine15.Substring(allLine15.LastIndexOf(":") + 1); /把計算結果輸出到TXT文檔中 private void button2_Click(object sender, EventArgs e) OpenFileDialog fileName = new OpenFileDialog(); fileName.Filter = "記事本|*.txt" if (fileName.ShowDialog() = DialogResult.OK)
22、string path = fileName.FileName.ToString(); String allLine = new String50; allLine0 = label24.Text+lbla.Text; allLine1 = label11.Text + lblno.Text; allLine2 = label12.Text + lbln.Text; allLine3 = label14.Text + lblM.Text;13 allLine4 = label19.Text + lblE.Text; allLine5 = label20.Text + lblf.Text; allLine6 = label21.Text + lblu.Text; allLine7 = label22.Text + lblr.Text; allLine8 = label50.Text + label31.Text + lbls_u.Text+
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《課件欣賞評講》教案
- 礦山安全生產管理
- 2024年09月河南新華區事業單位招聘175人(含醫療崗)筆試歷年專業考點(難、易錯點)附帶答案詳解
- 銀行信貸管理模式試題及答案2025年解析
- 勞務合同范本(2篇)(2篇)
- 電工作業安全風險管控
- 手工香皂花藝考核試卷
- 建設工程項目經理責任制
- 大學課件電力工程基礎電力網
- 扣件式鋼管腳手架
- 2025年中國光伏電池市場發展現狀調研及投資趨勢前景分析報告
- 2025年元宇宙+游戲行業新興熱點、發展方向、市場空間調研報告
- 問題等于機會的培訓
- 人教版 七年級英語下冊 第二學期 期中綜合測試卷(2025年春)
- 《疥瘡的防治及治療》課件
- 建筑施工大型機械設備安全使用與管理培訓
- 技術轉讓合同備忘錄協議備忘錄(2024年版)
- 注冊會計師財務成本管理章節練習題三
- 第十一單元課題1化學與人體健康-2024-2025學年九年級化學人教版(2024)下冊
- 《子宮內膜異位》課件
- 文旅場所安全培訓課件
評論
0/150
提交評論