Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 10.05.2012
Сообщений: 17
1

Отобразить вращение прямоугольника, используя модуль crt

11.05.2012, 13:37. Показов 2013. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, форумчане.
есть вопрос.
Реально ли сделать такое, используя только модуль CRT.
Вот сама задача:
3. Разработать программу, отображающую процесс вращения прямоуголь¬ника вокруг любой его внутренней точки.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2012, 13:37
Ответы с готовыми решениями:

Модуль Crt Отобразить перемещение по экрану стилизованного изображения человека
Здраствуйте Разработать программу, отображающую перемещение по экрану стили-зованного изображения...

Используя модуль crt
Помогите с решением пожалуйста: 7. Используя модуль CRT, написать программу «функции»,...

Написать программу, используя модуль CRT
Помогите сделать вот эту задачу. 3.Используя модуль CRT, написать программу «функции», выводящую...

нарисовать углы используя модуль crt
Помогите пожалуйста! Нарисовать по 5 вложенных углов в каждом угле экрана. Вершины углов везде...

17
22 / 22 / 14
Регистрация: 01.12.2011
Сообщений: 159
11.05.2012, 13:45 2
с одним crt вряд ли а вот с graph
1
1 / 1 / 0
Регистрация: 10.05.2012
Сообщений: 17
11.05.2012, 13:58  [ТС] 3
вот я тоже так считаю.
а вот преподаватель говорит на CRT.
на граф там нефиг делать.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
11.05.2012, 13:58 4
Реально если прямоугольник поворачивается за 1 раз на 90 градусов. А вообще задача для графики.
2
1 / 1 / 0
Регистрация: 10.05.2012
Сообщений: 17
11.05.2012, 14:00  [ТС] 5
на 90 не прокатит.
нужно показать вращение.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
11.05.2012, 14:03 6
Значит графика.
0
1 / 1 / 0
Регистрация: 10.05.2012
Сообщений: 17
11.05.2012, 14:05  [ТС] 7
Значит будет преподавателю доказывать, что на CRT это не реально
0
Заблокирован
11.05.2012, 14:29 8
Почему нереально то? Ascii-арт никто не отменял Выводить линии символами с помощью алгоритма Брезенхэма.
1
1 / 1 / 0
Регистрация: 10.05.2012
Сообщений: 17
11.05.2012, 14:34  [ТС] 9
спасибо.
буду пробовать.
но как-то пока слабо представляю как..
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
11.05.2012, 17:09 10
Ascii-арт никто не отменял
Только в Паскале АВС нет псевдографики, только стандартный набор ANSI.
А ссылка куда? К тому еврею?
С графикой.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
uses graphABC,crt;
type tochka=record  //тип точка с полями
            x,y:integer;//координаты
            u,r:real;//угол луча и расстояние до центра вращения
            end;
     mas=array[1..4] of tochka; //полигон из 4х-точек
//угол между лучем и осью Х
function Ugol(x0,y0,x,y:integer):real;
begin
if (x>x0)and(y<=y0) then Ugol:=arctan((y0-y)/(x-x0))//I четверть
else if (x>x0)and(y>y0) then Ugol:=arctan((y0-y)/(x-x0))+2*pi//IV четверть
else if x<x0 then  Ugol:=arctan((y0-y)/(x-x0))+pi//II-III четверти
else if x=x0 then
 begin
  if y<y0 then  Ugol:=pi/2//вертикально вверх
  else if y>y0 then Ugol:=3*pi/2//вертикально вниз
 end;
end;
//расстояние до точки
function Radius(x1,y1,x2,y2:integer):real;
begin
Radius:=sqrt(sqr(x1-x2)+sqr(y1-y2));
end;
//вращение точки вокруг центра
procedure Vrach(x0,y0:integer;k:real;var a:mas);
var i:integer;
begin
for i:=1 to 4 do
 begin
  a[i].u:=a[i].u+k;
  a[i].x:=x0+round(a[i].r*cos(a[i].u));
  a[i].y:=y0-round(a[i].r*sin(a[i].u));
 end;
end;
//прямоугольник
procedure Rect(a:mas;x1,y1:integer);
begin
setpencolor(clRed);
line(a[1].x,a[1].y,a[2].x,a[2].y);
line(a[2].x,a[2].y,a[3].x,a[3].y);
line(a[3].x,a[3].y,a[4].x,a[4].y);
line(a[4].x,a[4].y,a[1].x,a[1].y);
setpencolor(clBlue);
circle(x1,y1,3);
floodfill(x1,y1,clBlue);
end;
 
//программа
var p:mas;
    xc,yc,x1,y1,i:integer;
    c:char;
begin
setwindowsize(500,500);
xc:=windowheight div 2;
yc:=xc;
p[1].x:=xc-100;p[1].y:=yc-50;
p[2].x:=xc+100;p[2].y:=yc-50;
p[3].x:=xc+100;p[3].y:=yc+50;
p[4].x:=xc-100;p[4].y:=yc+50;
writeln('Выберите точку внутри прямоугольника:');
repeat
write('x от ',p[1].x,' до ',p[2].x,' x=');
read(x1);
until(x1>p[1].x)and(x1<p[2].x);
repeat
write('y от ',p[1].y,' до ',p[3].y,' y=');
read(y1);
until(y1>p[1].y)and(y1<p[3].y);
for i:=1 to 4 do
 begin
  p[i].r:=Radius(x1,y1,p[i].x,p[i].y);
  p[i].u:=Ugol(x1,y1,p[i].x,p[i].y);
 end;
hidecursor;
clearwindow;
Rect(p,x1,y1);
lockdrawing;
repeat
  clearwindow;
  textout(xc-50,20,'Выход Esc');
  Vrach(x1,y1,0.1,p);
  Rect(p,x1,y1);
  delay(100);
  redraw;
  if keypressed then c:=readkey;
until c=#27;
end.
1
1 / 1 / 0
Регистрация: 10.05.2012
Сообщений: 17
11.05.2012, 17:25  [ТС] 11
спасибо большое)
0
Заблокирован
12.08.2017, 08:57 12
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
uses crt;
var r:array[1..96,1..2]of real;
    a,da,l,cf:real;
    i,x,y,xC,yC:integer;
    ch:char;
begin
  xC:=40;
  yC:=13;
  da:=20/180*Pi;
  cf:=5/7;
  for i:=1 to 24 do
  begin
    r[i,1]:=i-12;
    r[i,2]:=12;
    r[i+48,1]:=i-13;
    r[i+48,2]:=-12;
  end;
  for i:=25 to 48 do
  begin
    r[i,1]:=12;
    r[i,2]:=36-i;
    r[i+48,1]:=-12;
    r[i+48,2]:=37-i;
  end;
  ch:=#0;
  repeat
    clrscr;
    for i:=1 to 96 do
    begin
      x:=xC+Round(r[i,1]);
      y:=yC-Round(r[i,2]*cf);
      gotoxy(x,y);
      write('*');
      if r[i,1]=0 then 
        if r[i,2]>0 then a:=Pi/2
        else  a:=-Pi/2
      else a:=arctan(r[i,2]/r[i,1]);
      if r[i,1]<0 then a:=a+Pi;
      l:=sqrt(r[i,1]*r[i,1]+r[i,2]*r[i,2]);
      a:=a+da;
      r[i,1]:=l*cos(a);
      r[i,2]:=l*sin(a);
    end;
    delay(200);
    if keypressed then ch:=readkey;
  until ch=#27;
end.
1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
12.08.2017, 09:12 13
Тьфу, я свой код скинул не в ту тему.

Добавлено через 12 минут
Это
Pascal
1
2
 if keypressed then ch:=readkey;
  until ch=#27;
лучше заменить на
Pascal
1
until keypressed;
Откуда пользователь знает что нужно нажать именно Esc.

Добавлено через 1 минуту
Да и
Pascal
1
da:=20/180*Pi;
как то не красиво, лучше pi/9 или круглее pi/10.
0
16 / 18 / 11
Регистрация: 07.03.2016
Сообщений: 362
12.08.2017, 17:16 14
Цитата Сообщение от Puporev Посмотреть сообщение
Откуда пользователь знает что нужно нажать именно Esc.
Из надписи, конечно:
Цитата Сообщение от Puporev Посмотреть сообщение
textout(xc-50,20,'Выход Esc');
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
12.08.2017, 17:42 15
Цитата Сообщение от kolay_ne Посмотреть сообщение
Из надписи, конечно:
И где ты видишь это в коде?
0
Cyborg Drone
12.08.2017, 19:41
  #16

Не по теме:

Пост #10, строка 80 в программе... Не оно?

0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
12.08.2017, 19:46 17
Оно, но по моему я делал замечания не по коду 5 летней давности, по сути не отвечающему поставленной задаче, а по последнему коду от MansMI.
0
Cyborg Drone
12.08.2017, 20:38     Отобразить вращение прямоугольника, используя модуль crt
  #18

Не по теме:

Ох, да... Верно. Извиняюсь.

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.08.2017, 20:38

Написать программу используя модуль crt
В центре экрана рисуем произвольный квадрат. В зависимости от введенного числа организовать...

Вращение прямоугольника вокруг точки
Помогите пожалуйста, прямоугольник вращается, Но, &quot;след&quot; за собой оставляет, не стирается...

Модуль CRT
Здравствуйте! Помогите, пожалуйста. Как написать такую программу на Pascal?

Модуль crt;
Доброго времени суток)) Процедуры и функции модуля CRT; Составьте программу вывода на экран окна....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru