Найти координаты точек пересечения двух окружностей - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Найти координаты пунктов пересечения двух окружностей радиусами и с центрами в пунктах (;) и (;) соответственно.

Решение задачи: «Найти координаты точек пересечения двух окружностей»

textual
Листинг программы
const t=0.0001;
var x1,y1,r1,x2,y2,r2:integer;
    x,y,a,b,h,d,x3,y3,x4,y4:real;
begin
writeln('Введите параметры 1 окружности x,y,R');
readln(x1,y1,r1);
writeln('Введите параметры 2 окружности x,y,R');
readln(x2,y2,r2);
{x1:=-1;y1:=1;r1:=13;
x2:=5;y2:=1;r2:=12;}
d:=sqrt(sqr(x1-x2)+sqr(y1-y2));
if (d>r1+r2)or(d<abs(r1-r2)) then write('Точек пересечения нет')
else if abs(d-(r1+r2))<t then
  begin
   writeln('Окружности касаются в точке:');
   x3:=(x1+x2)/2;
   y3:=(y1+y2)/2;
   writeln('x=',x3:0:2,'  y=',y3:0:2);
  end
else
 begin
  b:=(sqr(r2)-sqr(r1)+sqr(d))/(2*d);
  a:=d-b;
  h:=sqrt(sqr(r2)-sqr(b));
  x:=x1+(x2-x1)/(d/a);
  y:=y1+(y2-y1)/(d/a);
  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('Точки пересечения:');
  writeln('1:x=',x3:0:2,'  y=',y3:0:2);
  writeln('2:x=',x4:0:2,'  y=',y4:0:2);
 end;
end.

Объяснение кода листинга программы

  1. В начале кода объявляются переменные t, x1, y1, r1, x2, y2, r2:integer; и x, y, a, b, h, d, x3, y3, x4, y4:real.
  2. Затем происходит чтение параметров первой окружности из стандартного ввода и сохранение их в соответствующие переменные x1, y1, r1. Аналогично читаются параметры второй окружности и сохраняются в переменные x2, y2, r2.
  3. Далее вычисляется расстояние между центрами окружностей, а также проверяется, пересекаются ли они или нет. Если расстояние больше или равно сумме радиусов окружностей или меньше разности между ними, то выводится сообщение о том, что точек пересечения нет.
  4. Если же расстояние меньше заданной величины t, то выполняется дальнейший расчет. Для этого вычисляется среднее значение координат x и y от двух окружностей и выводится сообщение о том, что окружности касаются в точке.
  5. Если же расстояние больше или равно t, то вычисляются точки пересечения. Для этого вычисляются значения x3, y3, x4, y4 по формулам, которые зависят от радиусов окружностей и расстояния между ними. Выводится сообщение о том, что точки пересечения найдены.
  6. Код завершается без использования вложенных списков.

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы