private void findIntersectionPoints(double x1, double y1, double r1, double x2, double y2, double r2, ref int numSolves, ref double[] resultTab) { //zmienne pomocnicze double a = (y1 - y2) / (x1 - x2); double b = (Math.Pow(x1, 2) + Math.Pow(y1, 2) - Math.Pow(x2, 2) - Math.Pow(y2, 2) - Math.Pow(r1, 2) + Math.Pow(r2, 2)) / (2 * (x1 - x2)); //parametry równania kwadratowego double A = Math.Pow(a, 2) + 1; double B = 2 * a * b + (2 * x1 * a) - (2 * y1); double C = Math.Pow(x1, 2) + Math.Pow(y1, 2) - Math.Pow(r1, 2) - (2 * x1 * b) + Math.Pow(b, 2); //liczba rozwiązań równania kwadratowego int numberOfSolves = 0; //zmienna do przechowywania rozwiązań równania kwadratowego double [] result = new double [2]; //rozwiązanie równania solveSquareEquation(A, B, C, ref numberOfSolves, ref result); //zapisanie wyniku to tablicy wyjściowej funkcji if (numberOfSolves == 2) { //pierwszy punkt resultTab[0] = -a * result[0] + b; resultTab[1] = result[0]; //drugi punkt resultTab[2] = -a * result[1] + b; resultTab[3] = result[1]; numSolves = 2; } else if (numberOfSolves == 1) { resultTab[0] = -a * result[0] + b; resultTab[1] = result[0]; numSolves = 1; } else numSolves = 0; }