コード例 #1
0
ファイル: Krug.cs プロジェクト: withoutJ/GeoGebra
        public void Tangente(Tacka T, Prava[] Prave, ObjekatInfo[] Objekti)
        {
            if (this.Pripada(T) == 2)
            {
                return;
            }
            double a = this.R * this.R - this.Centar.X * this.Centar.X - T.X * T.X + 2 * T.X * this.Centar.X;
            double b = 2 * T.X * T.Y + 2 * this.Centar.X * this.Centar.Y - 2 * this.Centar.Y * T.X - 2 * T.Y * this.Centar.X;
            double c = this.R * this.R - this.Centar.Y * this.Centar.Y - T.Y * T.Y + 2 * this.Centar.Y * T.Y;

            if (this.Pripada(T) == 1)
            {
                double k = (-b) / (2 * a);
                double n = T.Y - k * T.X;
                GeoGebra.DodajPravu(new Prava(k, n, "p" + (Prava.NP + 1).ToString()), Prave, Objekti);
                return;
            }
            if (this.Pripada(T) == 0)
            {
                double k = ((-b) + Math.Sqrt(b * b - 4 * a * c)) / (2 * a);
                double n = T.Y - k * T.X;
                GeoGebra.DodajPravu(new Prava(k, n, "p" + (Prava.NP + 1).ToString()), Prave, Objekti);
                k = ((-b) - Math.Sqrt(b * b - 4 * a * c)) / (2 * a);
                n = T.Y - k * T.X;
                GeoGebra.DodajPravu(new Prava(k, n, "p" + (Prava.NP + 1).ToString()), Prave, Objekti);
                return;
            }
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: smoki66/Poligon-3R
            public Vektor(Duz a)
            {
                Tacka A = a.A;
                Tacka B = a.B;

                x = B.x - A.x;
                y = B.y - A.y;
            }
コード例 #3
0
ファイル: Prava.cs プロジェクト: withoutJ/GeoGebra
 public Prava Normala(Tacka T)
 {
     if (this.K == 0)
     {
         return(null);
     }
     return(new Prava((-1) / this.K, T.Y + T.X / this.K, "p" + (Prava.NP + 1).ToString()));
 }
コード例 #4
0
ファイル: Program.cs プロジェクト: smoki66/Poligon-3R
 public Poligon(Tacka[] Niz_temena)
 {
     Temena = new Tacka[Niz_temena.Length];
     for (int i = 0; i < Temena.Length; i++)
     {
         Temena[i] = new Tacka(Niz_temena[i]);
     }
 }
コード例 #5
0
ファイル: Program.cs プロジェクト: smoki66/Poligon-3R
        static void Main(string[] args)
        {
            Tacka[] ulaz = new Tacka[3];
            /* Primer prostog poligona */

            /*
             * ulaz[0] = new Tacka(2, 2);
             * ulaz[1] = new Tacka(2, 1);
             * ulaz[2] = new Tacka(1, 1);
             * ulaz[3] = new Tacka(1, 2);
             */

            ulaz[0] = new Tacka(1, 2);
            ulaz[1] = new Tacka(1, 1);
            ulaz[2] = new Tacka(2, 1);
            // ulaz[3] = new Tacka(2, 2);

            /* prost
             * ulaz[0] = new Tacka(-5.5, 0.5);
             * ulaz[1] = new Tacka(-3.5, -1.5);
             * ulaz[2] = new Tacka(-2, 0.0);
             * ulaz[3] = new Tacka(-0.2, -1.4);
             * ulaz[4] = new Tacka(0.5, 3.9);
             * ulaz[5] = new Tacka(-3.0, 4.2);
             * ulaz[6] = new Tacka(-3.3, 2.0);
             */

            /* nije prost
             * ulaz[0] = new Tacka(-5.5, 0.5);
             * ulaz[1] = new Tacka(-3.5, -1.5);
             * ulaz[2] = new Tacka(1, 0.0);
             * ulaz[3] = new Tacka(-0.2, -1.4);
             * ulaz[4] = new Tacka(0.5, 3.9);
             * ulaz[5] = new Tacka(-3.0, 4.2);
             * ulaz[6] = new Tacka(-3.3, 2.0);
             */

            Poligon poli = new Poligon(ulaz);

            poli.Stampaj();
            if (poli.Prost())
            {
                Console.WriteLine("Prost");
            }
            else
            {
                Console.WriteLine("Nije");
            }

            Poligon dva = poli.Omotac();

            dva.Stampaj();

            Console.WriteLine("Poligon");
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: smoki66/Poligon-3R
            public static int Sis(Duz a, Tacka C, Tacka D)
            {
                Vektor AB  = new Vektor(a.A, a.B);
                Vektor AC  = new Vektor(a.A, C);
                double a_C = Vektor.vektorski(AB, AC);
                Vektor AD  = new Vektor(a.A, D);
                double a_D = Vektor.vektorski(AB, AD);

                /* if (a_C * a_D > 0) return true;
                 * else return false;*/
                return(Math.Sign(a_C * a_D));
            }
コード例 #7
0
        public void CreateTacka()
        {
            List <ElementPravnogAkta> lista = PravniAktViewModel.PravniAkt.ElementiPravnogAkta.OrderBy(x => x.IdUAktu).ToList();

            for (int i = lista.Count - 1; i <= 0; i--)
            {
                if (lista[i].GetType().Name.Equals("Clan") || lista[i].GetType().Name.Equals("Stav"))
                {
                    if (lista[i].GetType().Name.Equals("Clan"))
                    {
                        var   element  = (Clan)lista[i];
                        Tacka newTacka = new Tacka(++element.BrojTacaka, Sadrzaj)
                        {
                            IdUAktu           = PravniAktViewModel.PravniAkt.ElementiPravnogAkta.Count + 1,
                            NaslovPravnogAkta = PravniAktViewModel.PravniAkt.Naslov,
                            TipNadElementa    = Common.Enumerations.EElementiPravnogAktaTypes.Clan
                        };
                        element.Elementi.Add(newTacka);
                        PravniAktViewModel.PravniAkt.ElementiPravnogAkta.Remove(element);
                        newTacka.IdNadElementa = element.IdUAktu;
                        PravniAktViewModel.PravniAkt.ElementiPravnogAkta.Add(element);
                        PravniAktViewModel.PravniAkt.ElementiPravnogAkta.Add(newTacka);
                        break;
                    }
                    else
                    {
                        var   element  = (Stav)lista[i];
                        Tacka newTacka = new Tacka(++element.BrojTacaka, Sadrzaj)
                        {
                            IdUAktu           = PravniAktViewModel.PravniAkt.ElementiPravnogAkta.Count + 1,
                            NaslovPravnogAkta = PravniAktViewModel.PravniAkt.Naslov,
                            TipNadElementa    = Common.Enumerations.EElementiPravnogAktaTypes.Stav
                        };
                        element.Elementi.Add(newTacka);
                        PravniAktViewModel.PravniAkt.ElementiPravnogAkta.Remove(element);
                        newTacka.IdNadElementa = element.IdUAktu;
                        PravniAktViewModel.PravniAkt.ElementiPravnogAkta.Add(element);
                        PravniAktViewModel.PravniAkt.ElementiPravnogAkta.Add(newTacka);
                        break;
                    }
                }
            }

            PravniAktViewModel.ZabranaStava   = false;
            PravniAktViewModel.ZabranaTacke   = false;
            PravniAktViewModel.ZabranaDela    = false;
            PravniAktViewModel.ZabranaGlava   = false;
            PravniAktViewModel.ZabranaClana   = false;
            PravniAktViewModel.ZabranaOdeljka = false;
            Window.Close();
            MessageBox.Show("Dodata nova tacka!", "Obavestenje", MessageBoxButton.OK, MessageBoxImage.Information);
        }
コード例 #8
0
ファイル: Krug.cs プロジェクト: withoutJ/GeoGebra
        public Tacka Inverzija(Tacka T)
        {
            double k1 = (this.Centar.Y - T.Y) / (this.Centar.X - T.X);

            if (this.Centar.X < T.X)
            {
                return(new Tacka(this.Centar.X + (this.R * this.R / this.Centar.Rastojanje(T)) * (Math.Cos(Math.Atan(k1))), this.Centar.Y + (this.R * this.R / this.Centar.Rastojanje(T)) * (Math.Sin(Math.Atan(k1))), "A" + (Tacka.NT + 1).ToString(), Color.DarkGray));
            }
            else
            {
                return(new Tacka(this.Centar.X - (this.R * this.R / this.Centar.Rastojanje(T)) * (Math.Cos(Math.Atan(k1))), this.Centar.Y - (this.R * this.R / this.Centar.Rastojanje(T)) * (Math.Sin(Math.Atan(k1))), "A" + (Tacka.NT + 1).ToString(), Color.DarkGray));
            }
        }
コード例 #9
0
ファイル: Kvadrat.cs プロジェクト: hwrnr/Skola
 public Kvadrat(Tacka t1, Tacka t2)
 {
     if (t1.X == t2.X || t1.X == t2.Y)
     {
         Duz temp = new Duz(t1, t2);
         this.duzina = temp.Duzina();
     }
     else
     {
         Duz temp = new Duz(t1, t2);
         duzina = temp.Duzina() / Math.Sqrt(2);
     }
     t = new Tacka(Math.Min(t1.X, t2.X), Math.Min(t1.Y, t2.Y));
 }
コード例 #10
0
ファイル: Krug.cs プロジェクト: withoutJ/GeoGebra
 public Krug(Tacka A, Tacka B, string ime)
 {
     if (A.Rastojanje(B) < GeoGebra.eps)
     {
         this.C   = null;
         this.r   = 0;
         this.ime = "-1";
     }
     else
     {
         this.C   = A;
         this.r   = A.Rastojanje(B);
         this.ime = ime;
     }
 }
コード例 #11
0
ファイル: Prava.cs プロジェクト: withoutJ/GeoGebra
 public Prava(Tacka A, Tacka B, string s)
 {
     if (Math.Abs(B.X - A.X) < GeoGebra.eps)
     {
         this.k   = -1;
         this.n   = 0;
         this.ime = "-1";
     }
     else
     {
         this.k   = (B.Y - A.Y) / (B.X - A.X);
         this.n   = B.Y - k * B.X;
         this.ime = s;
     }
 }
コード例 #12
0
ファイル: Krug.cs プロジェクト: withoutJ/GeoGebra
 public int Pripada(Tacka A)
 {
     if (this.R - A.Rastojanje(this.C) > GeoGebra.eps)
     {
         return(2);
     }
     if (Math.Abs(A.Rastojanje(this.C) - this.R) < GeoGebra.eps)
     {
         return(1);
     }
     else
     {
         return(0);
     }
 }
コード例 #13
0
ファイル: Program.cs プロジェクト: hwrnr/Skola
        static void Main(string[] args)
        {
            Tacka a1 = new Tacka(1, 2);
            Tacka a2 = new Tacka(3, 4);
            Duz   d  = new Duz(a1, a2);

            a2.X = 5;
            a2.Y = 6;

            Console.WriteLine(d);

            //Zato sto polja u duzi pokazuju na originalna polja; Tako sto cemo u konstruktoru napraviti novo polje tacke; Zavisi od slucaja do slucaja;
            //Mozemo napraviti objekat klase duz, sa istim tackama, i ta duz ce imati duzinu 0;
            //Imacemo isti slucaj kao prethodno
        }
コード例 #14
0
ファイル: Krug.cs プロジェクト: withoutJ/GeoGebra
        public Krug(Tacka A1, Tacka A2, Tacka A3, string ime)
        {
            Duz a = new Duz(A1, A2);
            Duz b = new Duz(A2, A3);

            if ((Math.Abs(b.K - a.K) < GeoGebra.eps) || (a.Ime == "-1") || (b.Ime == "-1"))
            {
                this.C   = null;
                this.r   = 0;
                this.ime = "-1";
            }
            else
            {
                this.C   = b.Simetrala().Presek(a.Simetrala());
                this.r   = C.Rastojanje(A1);
                this.ime = ime;
            }
        }
コード例 #15
0
        static void Main(string[] args)
        {
            // Tacka T1, T2;
            Tacka T1 = new Tacka(3, 4);
            Tacka T2 = new Tacka(5, 6);

            Console.WriteLine("Pre flip:\n\tT1: " + T1 + "\n\tT2: " + T2);
            T1.FlipHorizontalno();
            T1.FlipVertikalno();
            Console.WriteLine("Posle flip:\n\tT1: " + T1 + "\n\tT2: " + T2);

            Duz D1 = new Duz(T1, T2);

            Console.WriteLine("Duz: " + D1);
            D1.FlipHorizontalno();
            D1.FlipVertikalno();
            Console.WriteLine("Duz posle flip: " + D1);
            Console.WriteLine("Tacke posle flip duz: " + T1 + T2);

            double d = new Double();

            d = 12;
            Kvadrat k1 = new Kvadrat();
            Kvadrat k2 = new Kvadrat(T1, d);
            Kvadrat k3 = new Kvadrat(T1);
            Kvadrat k4 = new Kvadrat(d);
            Kvadrat k5 = new Kvadrat(T1, T2);

            Console.WriteLine(k1);
            Console.WriteLine(k2);
            k2.FlipHorizontalno();
            k2.FlipVertikalno();
            Console.WriteLine(k2);
            Console.WriteLine(k3);
            Console.WriteLine(k4);
            Console.WriteLine(k5);
            Console.WriteLine(k2.GetPovrsina());
            Console.WriteLine(k2.GetObim());
            Console.WriteLine(k2.Nacrtaj());
            Tacka t = null;

            Console.WriteLine("nesto: " + t);
        }
コード例 #16
0
ファイル: Prava.cs プロジェクト: withoutJ/GeoGebra
 public Duz(Tacka A, Tacka B) : base(A, B, A.Ime + B.Ime)
 {
     if (Math.Abs(B.X - A.X) < GeoGebra.eps)
     {
         this.k   = -1;
         this.n   = 0;
         this.ime = "-1";
         this.A   = null;
         this.B   = null;
     }
     else
     {
         this.k   = (B.Y - A.Y) / (B.X - A.X);
         this.n   = B.Y - k * B.X;
         this.ime = A.Ime + B.Ime;
         this.A   = A;
         this.B   = B;
     }
 }
コード例 #17
0
 public Duz()
 {
     t1 = new Tacka();
     t2 = new Tacka();
 }
コード例 #18
0
ファイル: Krug.cs プロジェクト: withoutJ/GeoGebra
 public Krug(Tacka A, Duz d, string ime)
 {
     this.C   = A;
     this.r   = d.Tacka1.Rastojanje(d.Tacka2);
     this.ime = ime;
 }
コード例 #19
0
ファイル: Program.cs プロジェクト: smoki66/Poligon-3R
            public Poligon Omotac()
            {
                // Domaci 5 - formiraj konveksni omotac

                List <Tacka> Omotac_lista = new List <Tacka>();

                List <Tacka> Kandidati = new List <Tacka>();

                for (int i = 0; i < Temena.Length; i++)
                {
                    Kandidati.Add(Temena[i]);
                }

                //trazimo ekstremnu tacku
                double minx           = Kandidati[0].x;
                double miny           = Kandidati[0].y;
                int    MinTackaIndeks = 0;

                for (int i = 1; i < Kandidati.Count; i++)
                {
                    if (Kandidati[i].x <= minx)
                    {
                        if (Kandidati[i].y <= miny)
                        {
                            minx           = Kandidati[i].x;
                            miny           = Kandidati[i].y;
                            MinTackaIndeks = i;
                        }
                    }
                }
                // nasli smo ekstremnu tacku
                Console.WriteLine("ekstremna tacka" + MinTackaIndeks + ":" + Kandidati[MinTackaIndeks].x + " " + Kandidati[MinTackaIndeks].y);
                Omotac_lista.Add(Kandidati[MinTackaIndeks]);
                Tacka pocetna = Kandidati[MinTackaIndeks];

                Kandidati.Remove(Kandidati[MinTackaIndeks]);
                Console.WriteLine("Kandidati pre:");
                for (int i = 0; i < Kandidati.Count; i++)
                {
                    Console.WriteLine(Kandidati[i].x + " - " + Kandidati[i].y);
                }

                // od preostalih tacaka nadji onu sa najmanjim uglom sa x osom => A1
                double Min_ugao     = 200;
                int    ind_Min_ugao = 0;
                Vektor prvi         = Vektor.jedinicni_i();
                Vektor drugi;

                for (int i = 0; i < Kandidati.Count; i++)
                {
                    Tacka polazna = Omotac_lista[Omotac_lista.Count - 1];
                    Tacka krajnja = new Tacka(Kandidati[i]);
                    drugi = new Vektor(polazna, krajnja);
                    double Ugao = Vektor.Ugao(prvi, drugi);
                    if (Ugao < Min_ugao)
                    {
                        Min_ugao     = Ugao;
                        ind_Min_ugao = i;
                    }
                }
                // Dodaj Temena[i] u Omotac

                Tacka dodajem = Kandidati[ind_Min_ugao];

                Kandidati.RemoveAt(ind_Min_ugao);
                Kandidati.Add(pocetna);

                Console.WriteLine("Kandidati posle:");
                for (int i = 0; i < Kandidati.Count; i++)
                {
                    Console.WriteLine(Kandidati[i].x + " - " + Kandidati[i].y);
                }

                Console.WriteLine("ind min ugao = " + ind_Min_ugao);

                // U odnosu na poslednje dve dodate tacke
                while (dodajem != pocetna)
                {
                    Console.WriteLine("Dodajem:" + dodajem.x + " " + dodajem.y);
                    Omotac_lista.Add(dodajem);
                    // uzmi poslednje dve tacke u omotacu i napravi vektor v_1
                    Tacka  Poslednja_u_Om     = (Tacka)Omotac_lista[Omotac_lista.Count - 1];
                    Tacka  Pretposlednja_u_Om = (Tacka)Omotac_lista[Omotac_lista.Count - 2];
                    Vektor v_1 = new Vektor(Pretposlednja_u_Om, Poslednja_u_Om);
                    // napravi vektor iz poslednje tacke omotaca sa preostalim tackama
                    Min_ugao = 200;
                    for (int i = 0; i < Kandidati.Count; i++)
                    {
                        Console.WriteLine(Poslednja_u_Om.x + "/" + Poslednja_u_Om.y + "   K:" + Kandidati[i].x + " " + Kandidati[i].y);
                        Vektor v_2  = new Vektor(Poslednja_u_Om, Kandidati[i]);
                        double Ugao = Vektor.Ugao(v_1, v_2);
                        Console.WriteLine(" Ostali " + Ugao);
                        if (Ugao < Min_ugao)
                        {
                            Min_ugao     = Ugao;
                            ind_Min_ugao = i;
                        }
                    }
                    Console.WriteLine("Pobedio " + ind_Min_ugao);
                    dodajem = Kandidati[ind_Min_ugao];
                    Kandidati.RemoveAt(ind_Min_ugao);
                }

                Tacka[] Omotac_niz = new Tacka[Omotac_lista.Count];
                for (int i = 0; i < Omotac_lista.Count; i++)
                {
                    Omotac_niz[i] = new Tacka((Tacka)Omotac_lista[i]);
                }
                Poligon Omotac = new Poligon(Omotac_niz);

                return(Omotac);
            }
コード例 #20
0
ファイル: Kvadrat.cs プロジェクト: hwrnr/Skola
 public Kvadrat()
 {
     t      = new Tacka();
     duzina = 0.0;
 }
コード例 #21
0
ファイル: Program.cs プロジェクト: smoki66/Poligon-3R
 public Tacka(Tacka _a)
 {
     x = _a.x;
     y = _a.y;
 }
コード例 #22
0
 public Tacka(Tacka t)
 {
     x = t.X;
     y = t.Y;
 }
コード例 #23
0
ファイル: Kvadrat.cs プロジェクト: hwrnr/Skola
 public Kvadrat(Tacka t)
 {
     this.t = t;
     duzina = 0;
 }
コード例 #24
0
ファイル: Program.cs プロジェクト: hwrnr/Skola
 static void Main(string[] args)
 {
     Tacka Tacka1 = new Tacka();
     Tacka Tacka2 = new Tacka(1, 2);
     Tacka Tacka3 = new Tacka(Tacka2);
 }
コード例 #25
0
 public Duz(Tacka tacka1, Tacka tacka2)
 {
     T1 = tacka1;
     T2 = tacka2;
 }
コード例 #26
0
ファイル: Program.cs プロジェクト: smoki66/Poligon-3R
 public Vektor(Tacka A, Tacka B)
 {
     x = B.x - A.x;
     y = B.y - A.y;
 }
コード例 #27
0
ファイル: Kvadrat.cs プロジェクト: hwrnr/Skola
 public Kvadrat(Tacka t, double duzina)
 {
     this.t      = t;
     this.duzina = duzina;
 }
コード例 #28
0
ファイル: Kvadrat.cs プロジェクト: hwrnr/Skola
 public Kvadrat(double duzina)
 {
     this.t      = new Tacka();
     this.duzina = duzina;
 }
コード例 #29
0
ファイル: Program.cs プロジェクト: smoki66/Poligon-3R
 public Duz(Tacka _A, Tacka _B)
 {
     A = _A;
     B = _B;
 }
コード例 #30
0
 public Duz(Tacka tacka1, Tacka tacka2)
 {
     t1 = tacka1;
     t2 = tacka2;
 }