Esempio n. 1
0
        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)));
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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;
            }
        }