/// <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()); } }
/// <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()); }
/// <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(); }
/// <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); }
/// <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; }
/// <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; }
/// <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; }
/// <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; }
/// <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()); }