All pastes #621776 Raw Edit

Stuff

public text v1 · immutable
·published 2007-07-16 12:09 UTC
rendered paste body
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;
        }