示例#1
0
        private void button5_Click_2(object sender, EventArgs e)
        {
            Pen    blackPen = new Pen(Color.Black);
            Pravac test1    = new Pravac(new Tocka(new Point(200, 100)), new Tocka(new Point(300, 150)));
            Pravac test2    = new Pravac(new Tocka(new Point(200, 200)), new Tocka(new Point(350, 50)));
            Pravac test3    = new Pravac(test2, new Tocka(new Point(100, 50)));

            Tocka sjec = test3.sjeciste_pravaca(test2);

            sjec.Draw(drawArea, blackPen);

            //Tocka z = test1.sjeciste_pravaca(test2);

            //test1.Draw(drawArea, blackPen);
            //test2.Draw(drawArea, blackPen);
            //test3.Draw(drawArea, blackPen);
            //test3.T1.Draw(drawArea, blackPen);
            Tocka testna = new Tocka(new Point((int)Math.Round(test3.T1.t.X + Math.Sqrt(test3.cos * 10000)), (int)Math.Round(test3.T1.t.Y + Math.Sqrt(test3.sin * 10000))));

            MessageBox.Show(test3.T1.Distanca(testna).ToString());


            //testna.DrawZuto(drawArea, blackPen);

            //z.Draw(drawArea, blackPen);
        }
示例#2
0
        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);
            }
        }
示例#3
0
        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);
            }
        }