Вращение линии вокруг своего центра нажимая на клавишу - Turbo Pascal

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

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

Линия допустим line:120,170,475,278;

Решение задачи: «Вращение линии вокруг своего центра нажимая на клавишу»

textual
Листинг программы
uses crt,graph;
var gd,gm:integer;
    x0,y0,x1,y1,x2,y2,d:longint;
    c:char;
    a:real;
begin
gd:=0;
initgraph(gd,gm,'');
x1:=120;
y1:=170;
x2:=475;
y2:=278;
x0:=(x1+x2) div 2;
y0:=(y1+y2) div 2;
d:=round(sqrt(sqr(x2-x1)+sqr(y2-y1))/2);
a:=arctan((y2-y0)/(x2-x0));
setcolor(12);
setlinestyle(0,0,3);
line(x1,y1,x2,y2);
setcolor(9);
setfillstyle(1,9);
fillellipse(x0,y0,2,2);
repeat
c:=readkey;
if c='1' then
 begin
  setcolor(0);
  line(x1,y1,x2,y2);
  a:=a+pi/6;
  x1:=x0+round(d*cos(a));
  y1:=y0+round(d*sin(a));
  x2:=x0-round(d*cos(a));
  y2:=y0-round(d*sin(a));
  setcolor(12);
  line(x1,y1,x2,y2);
  setcolor(9);
setfillstyle(1,9);
fillellipse(x0,y0,2,2);
 end;
if c=#13 then exit;
until c=#13;
end.

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

  1. Используется библиотека crt и графический модуль graph.
  2. Объявляются переменные gd и gm типа integer.
  3. Объявляются переменные x0, y0, x1, y1, x2, y2, d типа longint.
  4. Объявляется переменная c типа char.
  5. Объявляется переменная a типа real.
  6. Инициализируется графический процессор с помощью функции initgraph.
  7. Присваиваются значения переменным x1, y1, x2, y2.
  8. Вычисляется среднее значение x1 и y1, а также среднее значение x2 и y2 для вычисления центра вращения.
  9. Вычисляется расстояние между центром вращения и точками x1, y1, x2, y2.
  10. Вычисляется угол между радиус-вектором и осью x.
  11. Устанавливается цвет линии и стиль линии.
  12. Рисуется линия между точками x1, y1, x2, y2.
  13. Устанавливается цвет заливки и стиль заполнения.
  14. Рисуется эллипс вокруг центра вращения.
  15. Происходит чтение символа с клавиатуры.
  16. Проверяется, равен ли введенный символ '1'.
  17. Если введенный символ равен '1', то устанавливается цвет линии, рисуется новая линия между точками x1, y1, x2, y2 и обновляется угол вращения.
  18. Если введенный символ не равен '1', то ничего не происходит.
  19. Если введенный символ равен #13, то выход из программы.
  20. Программа завершается.

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

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