Нужно провести вторую линию под 90 градусов относительно этой линии длиной r - Pascal ABC

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

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

дано линию с координатами (х1, у1) начало, (х2, у2) конец, радиусом r нужно провести вторую линию под 90 градусов относительно этой линии длиной r.

Решение задачи: «Нужно провести вторую линию под 90 градусов относительно этой линии длиной r»

textual
Листинг программы
uses graphABC,crt;
var x0,y0,i:integer;
    x1,y1,x2,y2,xc,yc,x3,y3,x4,y4,r,m,u:real;
begin
repeat
writeln('Введите координаты концов отрезка от -10 до 10');
readln(x1,y1,x2,y2);
until(x1>=-10)and(x1<=10)and(y1>=-10)and(y1<=10)
and  (x2>=-10)and(x2<=10)and(y2>=-10)and(y2<=10);
repeat
write('Введите длину перпендикулярного отрезка от -10 до 10');
readln(r);
until(r>=-10)and(r<=10);
setwindowsize(600,600);
centerwindow;
clearwindow;
hidecursor;
x0:=windowwidth div 2;//начало координат
y0:=x0;
line(0,y0,2*x0,y0); //оси
line(x0,0,x0,2*y0);
m:=(x0-20)/20; //мастаб
for i:=1 to 20 do //разграфка осей
if i mod 2=0 then
 begin
  line(x0+round(i*m),y0+3,x0+round(i*m),y0-3);
  line(x0-round(i*m),y0+3,x0-round(i*m),y0-3);
  textout(x0+round(i*m),y0+10,inttostr(i));
  textout(x0-round(i*m),y0+10,inttostr(-i));
  line(x0+3,y0-round(i*m),x0-3,y0-round(i*m));
  line(x0+3,y0+round(i*m),x0-3,y0+round(i*m));
  textout(x0-20,y0-round(i*m),inttostr(i));
  textout(x0-25,y0+round(i*m),inttostr(-i));
 end;
textout(2*x0-10,y0-15,'X');
textout(x0+5,5,'Y');
textout(x0+5,y0+10,'0');
x3:=(x1+x2)/2;//координаты центра 1 отрезка
y3:=(y1+y2)/2;
if x1=x2 then //1 отрезок вертикальный
 begin
  x4:=x3+r;
  y4:=yc;
 end
else
 begin
  u:=arctan((y2-y1)/(x2-x1));
  x4:=x3+r*cos(u-pi/2);
  y4:=y3+r*sin(u-pi/2);
 end;
setpenwidth(3);//рисуем оба отрезка
setpencolor(clRed);
line(x0+round(x1*m),y0-round(y1*m),x0+round(x2*m),y0-round(y2*m));
setpencolor(clBlue);
line(x0+round(x3*m),y0-round(y3*m),x0+round(x4*m),y0-round(y4*m));
end.

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

  1. Используется библиотека graphABC и crt.
  2. Задаются начальные значения переменных x0, y0, i, x1, y1, x2, y2, x3, y3, x4, y4, r, m, u.
  3. В цикле повторяется запрос координат концов отрезка от -10 до 10.
  4. В цикле повторяется запрос длины перпендикулярного отрезка от -10 до 10.
  5. Устанавливается размер окна приложения.
  6. Вычисляется мастаб (m).
  7. Запускается цикл разграфки осей, который повторяется 20 раз.
  8. В каждой итерации цикла вычисляются координаты точек на осях и их текстовые метки.
  9. Вычисляются координаты центра первого отрезка (x3, y3).
  10. Если первый отрезок вертикальный, то вычисляются координаты его конца (x4, y4).
  11. Устанавливается ширина пера.
  12. Устанавливается цвет пера.
  13. Рисуются оба отрезка.
  14. Завершается программа.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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