/// <param name="dolzinaTraku">Dolzina traku podana v milimetrih</param>
        /// <param name="sirinaTraku">Sirina traku podana v milimetrih</param>
        /// <param name="polmer">Polmer rondelice podan v milimetrih</param>
        /// <param name="razMedSos">Razdalja med sosednjima rondelicama, podana v milimetrih</param>
        /// <param name="razMedStran">Razdalja med rondelico in robom traku, podana v milimetrih</param>
        public static List <OkroglaRondelica> Izracunaj(double dolzinaTraku, double sirinaTraku, double polmer, double razMedSos, double razMedStran)
        {
            List <OkroglaRondelica> ret = new List <OkroglaRondelica>();

            if (PrviTest(polmer, razMedStran, sirinaTraku, dolzinaTraku) == false)
            {
                return(ret);
            }

            double           x    = polmer + razMedStran; // koordinate prve rondelice na traku
            double           y    = x;                    //
            OkroglaRondelica rond = new OkroglaRondelica(x, y, polmer);

            ret.Add(rond);
            bool postavljena = false; // Spremenljivka za glavno zanko, true, dokler je možno postaviti rondelico na trak
            bool gorAliDol   = true;  // true, da postavlja rondelice visje, false, da jih postavlja nizje

            do
            {
                rond        = new OkroglaRondelica(x, y, polmer);
                postavljena = PostaviRondelico(ret, ref rond, sirinaTraku, dolzinaTraku, razMedSos, razMedStran, ref gorAliDol);
                if (postavljena)
                {
                    x = rond.XPos;
                    y = rond.YPos;
                    ret.Add(rond);
                }
            } while (postavljena);

            return(ret);
        }
        public bool SeDotika(OkroglaRondelica rond, double zamik = 0)
        {
            double xRazlika = (rond.XPos - this.XPos) * (rond.XPos - this.XPos);
            double yRazlika = (rond.YPos - this.YPos) * (rond.YPos - this.YPos);
            double rRazlika = (rond.RRond + zamik + this.RRond) * (rond.RRond + zamik + this.RRond);

            return(xRazlika + yRazlika < rRazlika);
        }
        private static bool PostaviRondelico(List <OkroglaRondelica> ret, ref OkroglaRondelica rond, double sirinaTraku, double dolzinaTraku, double razMedSos, double razMedStran, ref bool gorAliDol)
        {
            // Rondelico postavimo po Y - osi
            if (gorAliDol) // true - gremo visje, false - gremo nizje
            {
                rond.YPos += 2 * rond.RRond + razMedSos;
                double zgMeja = rond.YPos + rond.RRond + razMedStran;
                if (zgMeja > sirinaTraku) // v visino vec ne gre, smo prek traku
                {
                    rond.YPos = sirinaTraku - rond.RRond - razMedStran;
                    gorAliDol = false;
                }
                else // na trak gre po sirini vec rondelic
                {
                    return(true);
                }
            }

            else
            {
                rond.YPos -= 2 * rond.RRond + razMedSos;
                double spMeja = rond.YPos - rond.RRond - razMedStran;
                if (spMeja < 0) // ne gre vec nizje, smo prek traku
                {
                    rond.YPos = rond.RRond + razMedStran;
                    gorAliDol = true;
                }
                else
                {
                    return(true);
                }
            }

            // Rondelico postavimo po X - osi

            //OkroglaRondelica last = ret[ret.Count - 1];
            foreach (OkroglaRondelica last in ret)
            {
                while (rond.SeDotika(last, razMedSos))
                {
                    rond.XPos++;
                }
            }

            // Preverimo se, da nismo ze cez rob traku po dolzini
            double desnaMeja = rond.XPos + rond.RRond + razMedStran;

            if (desnaMeja > dolzinaTraku)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }