Пример #1
0
        /// <summary>
        /// Udaljenost izmedu tocaka - Pripazite da su jedinice duzine u metrima
        /// </summary>
        /// <param name="vizura">Koordinate tocke preka kojoj se zeli odrediti udaljenost</param>
        /// <remarks>Racunanje se bazira na pitagorinom poucku</remarks>
        /// <returns>double</returns>
        public double Duzina(ITocka vizura)
        {
            double dy = vizura.Y - y;
            double dx = vizura.X - x;

            double d = Math.Sqrt(dy * dy + dx * dx);

            return(d);
        }
Пример #2
0
        /// <summary>
        /// Kut u ravnini projekcije između paralele s apscisnom osi (os x) u zadanoj točki i pravca prema nekoj drugoj točki.
        /// Mjeri se od sjevernog dijela paralele u smjeru kretanja kazaljke na satu.
        /// </summary>
        /// <param name="vizura">Koordinate tocke prema kojoj se zeli odrediti smjerni kut</param>
        /// <returns>Radians</returns>
        public Radians SmjerniKut(ITocka vizura)
        {
            double dy = vizura.Y - y;
            double dx = vizura.X - x;

            // Prva 4. slucaja odgovaraju za vise 99% racunanja
            if (dy >= 0 && dx > 0)
            {
                return(new Radians(Math.Atan(dy / dx)));                 // 1. kvadrant
            }
            else if (dy > 0 && dx < 0)
            {
                return(new Radians(Math.Atan(dy / dx) + Math.PI));       // 2. kvadrant
            }
            else if (dy <= 0 && dx < 0)
            {
                return(new Radians(Math.Atan(dy / dx) + Math.PI));       // 3. kvadrant
            }
            else if (dy < 0 && dx > 0)
            {
                return(new Radians(Math.Atan(dy / dx) + 2 * Math.PI));   // 4. kvadrant
            }
            // Posebni slucajevi po y-osi, javlja se problem dijeljenja sa nulom
            else if (dy > 0 && dx == 0)
            {
                return(new Radians(Math.PI / 2));
            }

            else if (dy < 0 && dx == 0)
            {
                return(new Radians(3 * Math.PI / 2));
            }

            // Obe tocke imaju iste koordinate
            else
            {
                throw new ArgumentException("Nije moguce izracunati smjerni kut izmedu dvije tocke s istim koordinatama");
            }
        }