rendered paste bodyprivate 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;
}