Изобразить на экране прямую, вращающуюся в плоскости экрана вокруг одной из своих точек - Turbo Pascal
Формулировка задачи:
Turbo Pascal Изобразить на экране прямую, вращающуюся плоскости экрана вокруг одной из своих точек, при этом центр вращения с постоянной скорость перемещается от одного края экрана до другого параллельно горизонтально оси экрана. Составить программу что бы цвет прямой изменялся при переходе от предыдущего положения к следующему.
Решение задачи: «Изобразить на экране прямую, вращающуюся в плоскости экрана вокруг одной из своих точек»
textual
Листинг программы
uses crt,graph;
var d,x,y,x1,y1,x2,y2,c:integer;
a:real;
begin
initgraph(x,y,'');
d:=50;{треть длины отрезка}
x:=0;
y:=getmaxY div 2;
outtextXY(270,20,'Quit - any key...');
a:=0;
c:=9;
repeat
x1:=x+round(d*cos(a));
y1:=y-round(d*sin(a));
x2:=x-round(2*d*cos(a));
y2:=y+round(2*d*sin(a));
setcolor(c);
setlinestyle(0,0,3);
line(x1,y1,x2,y2);
delay(50);
setcolor(0);
setlinestyle(0,0,3);
line(x1,y1,x2,y2);
a:=a+0.2;
if a>=2*pi then
begin
inc(c);
if c=16 then c:=9;
a:=0;
end;
x:=x+2;
if x>getmaxX then x:=0;
until keypressed;
end.
Объяснение кода листинга программы
- Используется библиотека crt для работы с графиком и функция initgraph для настройки параметров графика.
- Переменная d инициализируется значением 50, что представляет треть длины отрезка.
- Переменные x и y инициализируются значениями, полученными от функции getmaxY, которая возвращает максимальное значение Y, которое может быть отображено на графике. Значение y делится на 2, чтобы получить среднее значение Y.
- Функция outtextXY используется для вывода текста на график. В данном случае текст
Quit - any key...выводится в позиции (270,20). - Переменная a инициализируется значением 0.
- Переменная c инициализируется значением 9.
- Запускается цикл repeat, который будет выполняться до тех пор, пока пользователь не нажмет клавишу.
- Внутри цикла переменные x1, y1, x2, y2 и setcolor(c) используются для рисования прямой на экране. Функция line используется для рисования линии между точками (x1,y1) и (x2,y2).
- Задержка в 50 миллисекунд вызывается с помощью функции delay, чтобы линия была видна на экране.
- Переменная a инициализируется значением 0.
- Если значение a превышает 2*pi (что эквивалентно 360 градусам), то увеличивается значение переменной c. Если значение c достигает 16, то оно сбрасывается обратно на 9. Это позволяет создавать эффект вращения прямой вокруг одной из своих точек.
- Переменная x инициализируется значением, полученным от функции getmaxX, которая возвращает максимальное значение X, которое может быть отображено на графике. Если значение x превышает это максимальное значение, то оно сбрасывается обратно на 0.
- Проверка keypressed используется для определения, была ли нажата клавиша, и если да, то цикл прерывается.