예제 #1
0
 /// <summary>
 /// Izracunava slobodan clan
 /// </summary>
 /// <param name="stajaliste">Tocka stajalista instrumenta</param>
 /// <param name="vizura">Tocka vizure instrumenta</param>
 /// <param name="izmjereniPravac">Pravac izmjeren na terenu</param>
 /// <param name="orijentacija">Pravac orijentacije (nule) limba</param>
 /// <param name="tolerancija">Tolerancija kada je izmjereni pravac plus orijentacija blizu 2 PI, ali je manji</param>
 /// <returns>Radians</returns>
 private Radians slobodanClan(ITockaProjekcija stajaliste, ITockaProjekcija vizura, IRadian izmjereniPravac, IRadian orijentacija, IRadian tolerancija)
 {
     if ((orijentacija.ToRadians() + stajaliste.SmjerniKut(vizura)) - izmjereniPravac.ToRadians() > 2 * Math.PI - tolerancija.ToRadians())
     {
         return(new Radians((orijentacija.ToRadians() + stajaliste.SmjerniKut(vizura) - izmjereniPravac.ToRadians() - 2 * Math.PI)));
     }
     else
     {
         return(orijentacija.ToRadians() + stajaliste.SmjerniKut(vizura) - izmjereniPravac.ToRadians());
     }
 }
예제 #2
0
        /// <summary>
        /// Izracunava slobodan clan
        /// </summary>
        /// <param name="stajaliste">Tocka stajalista instrumenta</param>
        /// <param name="vizura">Tocka vizure instrumenta</param>
        /// <param name="izmjereniPravac">Pravac izmjeren na terenu</param>
        /// <param name="orijentacija">Pravac orijentacije (nule) limba</param>
        /// <returns>Rad</returns>
        private Radians slobodanClan(ITockaProjekcija stajaliste, ITockaProjekcija vizura, IRadian izmjereniPravac, IRadian orijentacija)
        {
            if ((orijentacija.ToRadians() + stajaliste.SmjerniKut(vizura)) - izmjereniPravac.ToRadians() > new Radians(3 * Math.PI / 2))
            {
                return(new Radians((orijentacija.ToRadians() + stajaliste.SmjerniKut(vizura) - izmjereniPravac.ToRadians() - 2 * Math.PI)));
            }
            else if (((orijentacija.ToRadians() + stajaliste.SmjerniKut(vizura)) - izmjereniPravac.ToRadians()).Angle < -3 * Math.PI / 2)
            {
                return(new Radians((orijentacija.ToRadians() + stajaliste.SmjerniKut(vizura) - izmjereniPravac.ToRadians() + 2 * Math.PI)));
            }

            return(orijentacija.ToRadians() + stajaliste.SmjerniKut(vizura) - izmjereniPravac.ToRadians());
        }
예제 #3
0
        /// <summary>
        ///     <para/>Inicijalizira novu instancu klase Geodezija.MetodaNajmanjihKvadrata.SlobodanClanKut
        ///     <para/>Racunanje slobodnog clana za matricu slobodnih clanova, preko izmjerenog kuta i smjernih kuta (direkcionih ugla) izracunatih iz koordinata
        /// </summary>
        /// <param name="stajaliste">Tocka stajalista instrumenta</param>
        /// <param name="Od">Tocka prve vizure koja cini kut (lijevi pravac)</param>
        /// <param name="Do">Tocka druge vizure koja cini kut (desni pravac)</param>
        /// <param name="izmjereniKut">izmjereni kut</param>
        /// <exception cref="ArgumentException">Baca se kada su koordinate obe tocke iste</exception>
        /// <exception cref="ArgumentOutOfRangeException">Baca se kada mjereni kut nije u intervalu od 0 do 2*PI</exception>
        public KutSlobodanClan(ITockaProjekcija stajaliste, ITockaProjekcija Od, ITockaProjekcija Do, IRadian izmjereniKut)
        {
            exceptionIsteKoordinateTocke(stajaliste, Od);
            exceptionIsteKoordinateTocke(stajaliste, Do);
            exceptionIsteKoordinateTocke(Do, Od);
            exceptionOdNulaDo2PI(izmjereniKut);

            Radians koordinate = stajaliste.SmjerniKut(Do) - stajaliste.SmjerniKut(Od);

            if (koordinate < 0)
            {
                koordinate = koordinate + 2 * Math.PI;
            }

            f = koordinate - izmjereniKut.ToRadians();
        }
예제 #4
0
        /// <summary>
        /// Izracunava slobodan clan (prikraceno mjerenje) kuta
        /// </summary>
        /// <param name="stajaliste">Tocka stajalista instrumenta</param>
        /// <param name="Od">Tocka prve vizure (Od) </param>
        /// <param name="VizuraOd">Pravac vizure prema prvoj tocki</param>
        /// <param name="Do">Tocka druge vizure(Do)</param>
        /// <param name="VizuraDo">Pravac vizure prema drugoj tocki</param>
        /// <returns>Radians</returns>
        private Radians slobodanClan(ITockaProjekcija stajaliste, ITockaProjekcija Od, IRadian VizuraOd, ITockaProjekcija Do, IRadian VizuraDo)
        {
            Radians koordinate = stajaliste.SmjerniKut(Do) - stajaliste.SmjerniKut(Od);

            if (koordinate < 0)
            {
                koordinate = koordinate + 2 * Math.PI;
            }

            Radians mjerenje = VizuraDo.ToRadians() - VizuraOd.ToRadians();

            if (mjerenje < 0)
            {
                mjerenje = mjerenje + 2 * Math.PI;
            }

            return(koordinate - mjerenje);
        }
예제 #5
0
파일: Kut.cs 프로젝트: hgugic/Geodezija-2
        /// <summary>
        /// <para/>Razvoj u Taylorov red funkcije kuta uz odbacivanje clanova viseg reda (Linearizacija)
        /// <para/>Vrijednost razvoja u red data je u radijanima
        /// </summary>
        /// <param name="stajaliste">Priblizne koordinate tocke stajalista prilikom mjerenja</param>
        /// <param name="Od">Priblizne koordinate prve tocke vizure Od koje se mjeri kut</param>
        /// <param name="Do">Priblizne koordinate druge tocke vizure Do koje se mjeri kut</param>
        public Kut(ITockaProjekcija stajaliste, ITockaProjekcija Od, ITockaProjekcija Do)
        {
            Radians smjerniKutOd = stajaliste.SmjerniKut(Od);
            double  duzinaOd     = stajaliste.Duzina(Od);

            Radians smjerniKutDo = stajaliste.SmjerniKut(Do);
            double  duzinaDo     = stajaliste.Duzina(Do);


            yOd = new Radians(-Matematika.Cos(smjerniKutOd) / duzinaOd);
            xOd = new Radians(Matematika.Sin(smjerniKutOd) / duzinaOd);

            yDo = new Radians(Matematika.Cos(smjerniKutDo) / duzinaDo);
            xDo = new Radians(-Matematika.Sin(smjerniKutDo) / duzinaDo);

            yStajaliste = (-yDo) - yOd;
            xStajaliste = (-xDo) - xOd;
        }
예제 #6
0
        /// <summary>
        /// <para/>Razvoj u Taylorov red funkcije duzine uz odbacivanje clanova viseg reda (Linearizacija)
        /// </summary>
        /// <param name="stajaliste">Priblizne koordinate tocke stajalista prilikom mjerenja</param>
        /// <param name="vizura">Priblizne koordinate tocke vizure</param>
        public Duzina(ITockaProjekcija stajaliste, ITockaProjekcija vizura)
        {
            Radians smjerniKut = stajaliste.SmjerniKut(vizura);

            yStajaliste = -Matematika.Sin(smjerniKut);
            xStajaliste = -Matematika.Cos(smjerniKut);

            yVizura = -yStajaliste;
            xVizura = -xStajaliste;
        }
예제 #7
0
        /// <summary>
        /// <para/>Razvoj u Taylorov red funkcije pravca uz odbacivanje clanova viseg reda (Linearizacija)
        /// <para/>Vrijednost razvoja u red data je u radijanima
        /// </summary>
        /// <param name="stajaliste">Priblizne koordinate tocke stajalista prilikom mjerenja (Od)</param>
        /// <param name="vizura">Priblizne koordinate tocke vizure (Do)</param>
        public Azimut(ITockaProjekcija stajaliste, ITockaProjekcija vizura)
        {
            Radians smjerniKut = stajaliste.SmjerniKut(vizura);
            double  duzina     = stajaliste.Duzina(vizura);

            yStajaliste = new Radians(-Matematika.Cos(smjerniKut) / duzina);
            xStajaliste = new Radians(Matematika.Sin(smjerniKut) / duzina);

            yVizura = -yStajaliste;
            xVizura = -xStajaliste;
        }
예제 #8
0
        /// <summary>
        /// <para/>Razvoj u Taylorov red funkcije pravca uz odbacivanje clanova viseg reda (Linearizacija)
        ///     <para/>Vrijednost razvoja u red data je u radijanima
        /// </summary>
        /// <param name="stajaliste">Priblizne koordinate tocke stajalista prilikom mjerenja (Od)</param>
        /// <param name="vizura">Priblizne koordinate tocke vizure (Do)</param>
        public Pravac(ITockaProjekcija stajaliste, ITockaProjekcija vizura) : base(stajaliste, vizura)
        {
            Radians smjerniKut = stajaliste.SmjerniKut(vizura);
            double  duzina     = stajaliste.Duzina(vizura);

            yStajaliste = new Radians(-Matematika.Cos(smjerniKut) / duzina);
            xStajaliste = new Radians(Matematika.Sin(smjerniKut) / duzina);

            yVizura = -yStajaliste;
            xVizura = -xStajaliste;

            zNepoznanicaOrijentacije = 1;
        }
예제 #9
0
 /// <summary>
 /// Izracunava slobodan clan (prikraceno mjerenje)
 /// </summary>
 /// <param name="stajaliste">Tocka stajalista instrumenta</param>
 /// <param name="vizura">Tocka vizure instrumenta</param>
 /// <param name="izmjereniAzimut">Azimut (smjerni kut, direkcioni ugao) izmjeren na terenu</param>
 /// <returns>Rad</returns>
 private Radians slobodanClan(ITockaProjekcija stajaliste, ITockaProjekcija vizura, IRadian izmjereniAzimut)
 {
     return(stajaliste.SmjerniKut(vizura) - izmjereniAzimut.ToRadians());
 }