Определить, пересекаются ли окружности, в этом случае вычислить координаты точек их пересечения - Pascal
Формулировка задачи:
Даны две окружности одинакового радиуса R , заданные координатами их центров (X1Y1) (X2Y2) -целыми числами. Определить пересекаются ли они, в этом случае вычислить координаты, (вещественные числа)точек их пересечения
Решение задачи: «Определить, пересекаются ли окружности, в этом случае вычислить координаты точек их пересечения»
textual
Листинг программы
- const e=0.0001;
- var x1,y1,x2,y2,r:integer;
- x,y,a,h,d,x3,y3,x4,y4:real;
- begin
- writeln('Введите координаты центра 1 окружности, целые цисла');
- write('x1=');readln(x1);
- write('y1=');readln(y1);
- writeln('Введите координаты центра 2 окружности, целые числа');
- write('x2=');readln(x2);
- write('y2=');readln(y2);
- repeat
- write('Введите радиус окружностей r>0 r=');
- readln(r);
- until r>0;
- if (x1=x2)and(y1=y2)then write('Окружности совпадают')
- else
- begin
- d:=sqrt(sqr(x1-x2)+sqr(y1-y2));//расстояние между центрами
- if d>2*r then write('Точек пересечения нет')
- else if abs(d-2*r)<e then
- begin
- writeln('Окружности касаются в точке:');
- x3:=(x1+x2)/2;
- y3:=(y1+y2)/2;
- writeln('x=',x3:0:2,' y=',y3:0:2);
- end
- else
- begin
- a:=d/2;
- h:=sqrt(sqr(r)-sqr(a));
- x:=x1+a*(x2-x1)/d;
- y:=y1+a*(y2-y1)/d;
- x3:=x-(y2-y1)*h/d;
- y3:=y+(x2-x1)*h/d;
- x4:=x+(y2-y1)*h/d;
- y4:=y-(x2-x1)*h/d;
- writeln('Точки пересечения:');
- writeln('1:x=',x3:0:2,' y=',y3:0:2);
- writeln('2:x=',x4:0:2,' y=',y4:0:2);
- end;
- end;
- end.
Объяснение кода листинга программы
- Константа
e
устанавливается равной0.0001
; - Объявляются переменные:
x1, y1, x2, y2, r
- целочисленные координаты центров и радиус окружностей;x, y, a, h, d, x3, y3, x4, y4
- вещественные переменные для вычислений координат точек пересечения;
- Вводятся координаты центра первой и второй окружностей
x1, y1, x2, y2
; - Вводится радиус окружностей
r
(проверяется, что он больше 0); - Проверяется, совпадают ли центры окружностей. Если да, то выводится сообщение
Окружности совпадают
; - Если центры окружностей не совпадают, то вычисляется расстояние между центрами
d
; - Если расстояние между центрами больше чем сумма радиусов, выводится сообщение
Точек пересечения нет
; - Если расстояние между центрами равно сумме радиусов с погрешностью
e
, выводятся координаты точки касания; - Во всех остальных случаях вычисляются координаты двух точек пересечения и выводятся эти координаты.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д