[Algorytmy][C#] Wyznaczenie puntu przeciecia dwóch okręgów

pdusp
Użytkownik
Użytkownik
Posty: 1
Rejestracja: 22 sty 2018, o 23:06
Płeć: Mężczyzna
Lokalizacja: katowice

[Algorytmy][C#] Wyznaczenie puntu przeciecia dwóch okręgów

Post autor: pdusp »

Witam.
Muszę napisać algorytm C# wyznaczający punkt przecięcia dwóch okręgów.
Zrobiłem to tak jak niżej – niestety nie dla każdej kombinacji weryfikacja czyli ponowne wyliczenie promieni daje poprawny wynik.
Algorytm C# oparłem na opracowaniu ze strony:

Kod: Zaznacz cały

 double r =  3;
            double R =  7;
            double x1 = 1;
            double y1 = 1;
            double x2 = 8;
            double y2 = 1;

            double dl = Math.Sqrt(Math.Pow(x2 - x1, 2) + Math.Pow(y2 - y1, 2));
            Console.WriteLine(dl);
            double cosA = (dl*dl+r*r-R*R) / (2*dl*r);
            double sinA = Math.Sqrt(1 - Math.Pow(cosA,2));
            double vpx = (x1 - x2)*r/dl;
            double vpy = (y1 - y2)*r/dl;
            //
            double V1x = vpx * cosA - vpy * sinA + x1;
            double V1y = vpx * sinA + vpy * cosA + y1;
            Console.WriteLine("V1x {0}:", V1x);
            Console.WriteLine("V1y {0}:", V1y);
            Console.WriteLine("sprawdzam:");
            Console.WriteLine("r {0}:", Math.Sqrt(Math.Pow(vpx-x1,2) + Math.Pow(vpy-y1,2)));
            Console.WriteLine("R {0}:", Math.Sqrt(Math.Pow(x2-vpx,2) + Math.Pow(y2-vpy,2)));

            Console.ReadKey();
Dziękuje za wskazówki i pozdrawiam.
Piotr
Ostatnio zmieniony 23 sty 2018, o 05:44 przez Afish, łącznie zmieniany 2 razy.
Powód: Temat umieszczony w złym dziale. Błędny sposów publikacji kodu programu.
ODPOWIEDZ