public static double earthRotationCorrection(double[] svPos, double[] navPos, double[] svVel) { double num = GPSUtilsClass.getDistance(svPos, navPos); double[] a = new double[] { (svPos[0] - navPos[0]) / num, (svPos[1] - navPos[1]) / num, (svPos[2] - navPos[2]) / num }; double[] b = new double[] { svVel[0] - (navPos[1] * ComputeSVPos.NLERTE), svVel[1] + (navPos[0] * ComputeSVPos.NLERTE), svVel[2] }; return(num * (1.0 - (GPSUtilsClass.DOTPROD(a, b) / ComputeSVPos.NLC))); }
private XYZCoord LinearInterpolate(XYZCoord in1, XYZCoord in2, double percent) { XYZCoord coord; GPSUtilsClass class2 = new GPSUtilsClass(); double[] numArray = new double[] { in1.X, in1.Y, in1.Z }; double[] numArray2 = new double[] { in2.X, in2.Y, in2.Z }; double[] numArray3 = new double[3]; numArray3 = class2.LinearInterpolateXYZ(numArray, numArray2, percent); coord.X = numArray3[0]; coord.Y = numArray3[1]; coord.Z = numArray3[2]; return(coord); }
public bool LoadFromFile(string filename) { try { StreamReader reader = File.OpenText(filename); string str = ""; while (((str = reader.ReadLine()) != null) && !str.Contains("End of File")) { string[] strArray = str.Split(new char[] { ',' }); if (strArray[0] == "41") { double num9; double num10; double num11; XYZCoord coord; int index = 4; int num2 = 12; int num3 = 13; int num4 = 14; double key = double.Parse(strArray[index]) / 1000.0; double lat = double.Parse(strArray[num2]); double lng = double.Parse(strArray[num3]); double ht = double.Parse(strArray[num4]); lat *= 1E-07; lng *= 1E-07; ht *= 0.01; GPSUtilsClass.ConvertGEO2XYZ(lat * 0.017453292519944444, lng * 0.017453292519944444, ht, out num9, out num10, out num11); GPSUtilsClass.ConvertXYZ2GEO(num9, num10, num11, out lat, out lng, out ht); lat *= 57.29577951307855; lng *= 57.29577951307855; coord.X = num9; coord.Y = num10; coord.Z = num11; this.m_PositionData.Add(key, coord); } } } catch { return(false); } return(true); }
public double ComputePRerrorOneSV(int svPRN, double svTOW, double svPseudoRange, double ionoErr, double clkBias, string RinexFileName, string IMUFileName, out string strPRtrue_ClkBiasRange_txTOW) { double num6; double num7; double num = 0.0; strPRtrue_ClkBiasRange_txTOW = "-1.0,-1.0,-1.0"; this.m_SV_PRN = svPRN; this.m_SV_TOW = svTOW; double num2 = svPseudoRange / 299792458.0; this.m_SV_TxTOW = (this.m_SV_TOW - num2) - clkBias; double ionoError = 0.0; double svClkBias = 0.0; XYZCoord svVel = new XYZCoord(); XYZCoord a = this.GetRinexSVPos(RinexFileName, this.m_SV_PRN, this.m_SV_TxTOW, out ionoError, out svClkBias, out svVel); XYZCoord iMUTruePos = this.GetIMUTruePos(IMUFileName, svTOW); XYZCoord coord4 = new XYZCoord(); if ((a == coord4) || (iMUTruePos == coord4)) { return(-1.0); } double num5 = XYZCoord.getDistance(a, iMUTruePos); double[] svPos = new double[] { a.X, a.Y, a.Z }; double[] navPos = new double[] { iMUTruePos.X, iMUTruePos.Y, iMUTruePos.Z }; double[] numArray3 = new double[] { svVel.X, svVel.Y, svVel.Z }; computeTropo tropo = new computeTropo(); GPSUtilsClass.ComputeAzEl(navPos, svPos, out num6, out num7); double alt = GPSUtilsClass.ComputeApproxAltitude(navPos); double num9 = tropo.NL_ComputeTropo(alt, num7); double num10 = computeEarthRotation.earthRotationCorrection(svPos, navPos, numArray3); double num11 = num5 - num10; double num12 = (svPseudoRange - (clkBias * 299792458.0)) + (svClkBias * 299792458.0); strPRtrue_ClkBiasRange_txTOW = string.Format("{0}, {1}, {2}", num5, num12, this.m_SV_TxTOW); num = num5 - num12; return(((num - ionoErr) - num9) - num11); }
private void ConvertMousePositionToLatLong(int X, int Y, out double Lat, out double Long) { double num; double num2; double num3; double num4; bool flag = false; GPSUtilsClass class2 = new GPSUtilsClass(); int zone = class2.ComputeZone(this.CenterLatitude, this.CenterLongitude); if (this.CenterLongitude < 0.0) { flag = true; } class2.ConvertGEO2UTM(this.CenterLatitude, this.CenterLongitude, zone, out num3, out num4); this.ConvertXandYToNorthAndEastBasedOnScreenCenter(X, Y, this.PanelCircleRadius, this.PanelHeightWidth, num3, num4, out num, out num2); class2.ConvertUTM2GEO(num, num2, zone, out Lat, out Long); if (flag) { Long = 0.0 - Long; } }