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; } }
public Vektor(Duz a) { Tacka A = a.A; Tacka B = a.B; x = B.x - A.x; y = B.y - A.y; }
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())); }
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]); } }
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"); }
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)); }
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); }
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)); } }
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)); }
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; } }
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; } }
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); } }
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 }
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; } }
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); }
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; } }
public Duz() { t1 = new Tacka(); t2 = new Tacka(); }
public Krug(Tacka A, Duz d, string ime) { this.C = A; this.r = d.Tacka1.Rastojanje(d.Tacka2); this.ime = ime; }
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); }
public Kvadrat() { t = new Tacka(); duzina = 0.0; }
public Tacka(Tacka _a) { x = _a.x; y = _a.y; }
public Tacka(Tacka t) { x = t.X; y = t.Y; }
public Kvadrat(Tacka t) { this.t = t; duzina = 0; }
static void Main(string[] args) { Tacka Tacka1 = new Tacka(); Tacka Tacka2 = new Tacka(1, 2); Tacka Tacka3 = new Tacka(Tacka2); }
public Duz(Tacka tacka1, Tacka tacka2) { T1 = tacka1; T2 = tacka2; }
public Vektor(Tacka A, Tacka B) { x = B.x - A.x; y = B.y - A.y; }
public Kvadrat(Tacka t, double duzina) { this.t = t; this.duzina = duzina; }
public Kvadrat(double duzina) { this.t = new Tacka(); this.duzina = duzina; }
public Duz(Tacka _A, Tacka _B) { A = _A; B = _B; }
public Duz(Tacka tacka1, Tacka tacka2) { t1 = tacka1; t2 = tacka2; }