Даны координаты центров и радиусы 2-ух окружностей. Найти координаты точек пересечения. Pascal, C, или четкий алгоритм.

Даны координаты центров и радиусы 2-ух окружностей. Найти координаты точек пересечения. Pascal, C, или четкий алгоритм.
Гость
Ответ(ы) на вопрос:
Гость
var x1, x2, y1, y2, r1, r2, d, b, x3, x4, y3,y4,x,y, h, a: real; begin readln(x1, y1, r1, x2, y2, r2); d := sqrt(sqr(x1 - x2) + sqr(y1 - y2)); if (d > r1 + r2) or (d < abs(r1 - r2)) then writeln('No intersection point') else if (x1 = x2) and (y1 = y2) then if (r1 = r2) then writeln('Infinity') else writeln('No intersection point') else begin b := (r2 * r2 - r1 * r1 + d * d) * 0.5 / d; a := d - b; h := sqrt(abs(r1 * r1 - sqr(b))); x := x1 + (x2 - x1) * a / d; y := y1 + (y2 - y1) * a / d; X3 := X - (Y - Y2) * H / B; Y3 := Y + (X - X2) * H / B; X4 := X + (Y - Y2) * H / B; Y4 := Y - (X - X2) * H / b; writeln(x3, ' ', y3); if(x3<>x4)or(y3<>y4) then writeln(x4, ' ', y4); end; end.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы