private void button7_Click(object sender, EventArgs e) { Pen blackPen = new Pen(Color.Black); Pravac p = new Pravac(AA, BB); AA.Draw(drawArea, blackPen); BB.Draw(drawArea, blackPen); p.Draw(drawArea, blackPen); Pravac ort = new Pravac(p, BB); Tocka OB = new Tocka(new Point((int)ort.IzracunajXza(AA.t.Y), AA.t.Y)); OB.Draw(drawArea, blackPen); int udaljenost_AB = BB.t.X - AA.t.X; int udaljenost_na_X_osi = OB.t.X - AA.t.X; float korak = (float)udaljenost_na_X_osi / (float)udaljenost_AB; int broj_ponavljanja = (int)(Math.Round(udaljenost_na_X_osi / korak)); //skenopostav lista_crta.Clear(); drawArea.Clear(Color.White); Random r = new Random(); niz_Tocaka = new Tocka[10]; lista_crta.Add(p); for (int i = 0; i < 10; i++) { niz_Tocaka[i] = new Tocka(new Point(r.Next(50, 400), r.Next(0, 260))); lista_crta.Add(new Pravac(AA, niz_Tocaka[i])); lista_crta.Add(new Pravac(niz_Tocaka[i], BB)); niz_Tocaka[i].Draw(drawArea, blackPen); } foreach (Pravac prav in lista_crta) { prav.Draw(drawArea, blackPen); } Tocka[] niz_tocaka_izbivenog_vektora = new Tocka[udaljenost_AB]; float X_os = AA.t.X; for (int i = 0; i < udaljenost_AB; i++) { float finalna_udaljenost = 0; bool unutra; int koliko = 0; X_os += korak; Pravac ort_virtualna = new Pravac(p, new Tocka(new Point((int)Math.Round(X_os), AA.t.Y))); Tocka sjec_na_kosini = ort_virtualna.sjeciste_pravaca(p); foreach (Pravac virt_prav in lista_crta) { unutra = false; Tocka virt_sjeciste = ort_virtualna.sjeciste_pravaca(virt_prav); Pravac gran_ort_a = new Pravac(p, virt_prav.T1); Pravac gran_ort_b = new Pravac(p, virt_prav.T2); float granica_A_vrijednost = gran_ort_a.IzracunajXza(virt_sjeciste.t.Y); float granica_B_vrijednost = gran_ort_b.IzracunajXza(virt_sjeciste.t.Y); if (virt_sjeciste.t.X > granica_A_vrijednost && virt_sjeciste.t.X <= granica_B_vrijednost) { unutra = true; } if (unutra) { koliko++; if (virt_sjeciste.t.X < sjec_na_kosini.t.X) { finalna_udaljenost += sjec_na_kosini.Distanca(virt_sjeciste); } else { finalna_udaljenost -= sjec_na_kosini.Distanca(virt_sjeciste); } } } if (koliko != 11) { MessageBox.Show(koliko.ToString()); } finalna_udaljenost = finalna_udaljenost / koliko; double finalni_X; double finalni_Y; if (finalna_udaljenost > 0) { finalna_udaljenost *= finalna_udaljenost; //Math.Round(test3.T1.t.X+Math.Sqrt(test3.cos*10000)),(int)Math.Round(test3.T1.t.Y+Math.Sqrt(test3.sin*10000))) finalni_X = sjec_na_kosini.t.X - Math.Sqrt(ort_virtualna.cos * finalna_udaljenost); finalni_Y = sjec_na_kosini.t.Y - Math.Sqrt(ort_virtualna.sin * finalna_udaljenost); } else { finalna_udaljenost *= finalna_udaljenost; finalni_X = sjec_na_kosini.t.X + Math.Sqrt(ort_virtualna.cos * finalna_udaljenost); finalni_Y = sjec_na_kosini.t.Y + Math.Sqrt(ort_virtualna.sin * finalna_udaljenost); } niz_tocaka_izbivenog_vektora[i] = new Tocka(new Point((int)Math.Round(finalni_X), (int)Math.Round(finalni_Y))); } Tocka min = niz_Tocaka[0]; float mini = 200; foreach (Tocka t in niz_Tocaka) { foreach (Tocka s in niz_tocaka_izbivenog_vektora) { if (s.Distanca(t) < mini) { mini = s.Distanca(t); min = t; } } } min.DrawZuto(drawArea, blackPen); foreach (Tocka t in niz_tocaka_izbivenog_vektora) { t.DrawManje(drawArea, blackPen); } }
public void button1_Click(object sender, EventArgs e) { lista_crta.Clear(); drawArea.Clear(Color.White); Random r = new Random(); Pen blackPen = new Pen(Color.Black); Tocka[] niz_Tocaka = new Tocka[5]; AA.Draw(drawArea, blackPen); BB.Draw(drawArea, blackPen); Pravac p = new Pravac(AA, BB); lista_crta.Add(p); for (int i = 0; i < 5; i++) { niz_Tocaka[i] = new Tocka(new Point(r.Next(50, 600), r.Next(0, 260))); lista_crta.Add(new Pravac(AA, niz_Tocaka[i])); lista_crta.Add(new Pravac(niz_Tocaka[i], BB)); niz_Tocaka[i].Draw(drawArea, blackPen); } foreach (Pravac prav in lista_crta) { prav.Draw(drawArea, blackPen); } int udaljenost_AB = BB.t.X - AA.t.X; Tocka[] niz_tocaka_izbivenog_vektora = new Tocka[udaljenost_AB]; for (int i = 0; i < udaljenost_AB; i++) { niz_tocaka_izbivenog_vektora[i] = new Tocka(new Point(AA.t.X + i, (int)Prosjecni_Y(lista_crta, i, AA))); } Tocka min = niz_Tocaka[0]; float mini = 200; foreach (Tocka t in niz_Tocaka) { foreach (Tocka s in niz_tocaka_izbivenog_vektora) { if (s.Distanca(t) < mini) { mini = s.Distanca(t); min = t; } } } min.DrawZuto(drawArea, blackPen); foreach (Tocka t in niz_tocaka_izbivenog_vektora) { t.DrawManje(drawArea, blackPen); } }