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

Нарисовать вращающийся треугольник

04.06.2016, 12:53. Показов 4587. Ответов 6

Author24 — интернет-сервис помощи студентам
1.Нарисовать вращающийся треугольник
2.Составить программу, которая спрашивает у пользователя, в каком направлении должен двигаться шар: 1 – по горизонтали, 2 – по вертикали и какого цвета; и показывает нужное направление движения.
3.Написать программу, которая спрашивает у пользователя, как должен вести себя шар: 1 –расти из центра до границ экрана или 2 – уменьшаться от границ экрана к центру и его цвет; и показывать соответствующее изменение шарика.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2016, 12:53
Ответы с готовыми решениями:

Graph ABC: Нарисовать на экране разносторонний треугольник, вращающийся вокруг своего центра тяжести
в) Нарисовать на экране разносторонний треугольник, вращающийся вокруг своего центра тяжести.

Изобразить вращающийся треугольник
Доброго времени суток, помогите пожайлуста зделать треугольник на место линии.(зделать вращающейся...

Изобразить разносторонний треугольник, вращающийся в плоскости экрана
Изобразить на экране разносторонний треугольник, вращающийся в плоскости экрана вокруг своего...

Изобразить на экране треугольник, вращающийся вокруг одной из вершин
Изобразить на экране треугольник, вращающийся вокруг одной из вершин.

6
Почетный модератор
64305 / 47600 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
04.06.2016, 15:17 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

1. Вращение разностороннего треугольника вокруг центра.
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
uses graphABC,crt;
type tochka=record  {тип точка с полями}
            x,y:integer;{координаты}
            u,r:real;{угол луча и расстояние до центра вращения}
            end;
     mas=array[1..3] of tochka; {полигон из 3х-точек}
{угол между лучем и осью Х}
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 3 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 Trg(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[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
hidecursor;
xc:=windowwidth div 2;
yc:=windowheight div 2;
p[1].x:=xc-180;p[1].y:=yc+50;
p[2].x:=xc+120;p[2].y:=yc+80;
p[3].x:=xc+40;p[3].y:=yc-100;
x1:=round((p[1].x+p[2].x+p[3].x)/3);{координаты центра масс}
y1:=round((p[1].y+p[2].y+p[3].y)/3);
for i:=1 to 3 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;
lockdrawing;
repeat
  clearwindow;
  textout(xc-60,10,'Выход любая клавиша');
  Vrach(x1,y1,0.1,p);
  Trg(p,x1,y1); {рисуем}
  delay(100);
  redraw;
until keypressed;
end.
Добавлено через 15 минут
2.
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
uses graphABC,crt;
var n,c,x,y,r,dx,dy,a,max:integer;
begin
repeat
write('Введите направление движения 1-по горизонтали 2-по вертикали');
readln(n);
until n in [1,2];
repeat
write('Введите цвет 1-синий 2-зеленый 3-красный');
readln(c);
until c in [1..3];
hidecursor;
clrscr;
r:=10;
case n of
1:begin
  x:=r;
  y:=windowheight div 2;
  dx:=5;
  dy:=0;
  a:=r;
  max:=windowwidth-r;
  end;
2:begin
  x:=windowwidth div 2;
  y:=r;
  dx:=0;
  dy:=5;
  a:=r;
  max:=windowheight-r;
  end;
end;
case c of
1:begin
  setpencolor(clBlue);
  setbrushcolor(clBlue);
  end;
2:begin
  setpencolor(clGreen);
  setbrushcolor(clGreen);
  end;
3:begin
  setpencolor(clRed);
  setbrushcolor(clRed);
  end;
end;
lockdrawing;
while a<=max do
 begin
  clearwindow;
  circle(x,y,r);
  delay(50);
  x:=x+dx;
  y:=y+dy;
  a:=a+5;
  redraw
 end;
end.
Добавлено через 18 минут
3.
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
uses graphABC,crt;
var n,cv,cn,r,d,a:integer;
begin
repeat
write('Введите характер изменения размеров 1-увеличение 2-уменьшение');
readln(n);
until n in [1,2];
repeat
write('Введите цвет 1-синий 2-зеленый 3-красный');
readln(cv);
until cv in [1..3];
hidecursor;
clrscr;
setwindowsize(400,400);
centerwindow;
cn:=200;
case n of
1:begin
  r:=10;
  d:=5;
  a:=5;
  end;
2:begin
  r:=cn;
  d:=-5;
  a:=5;
  end;
end;
case cv of
1:begin
  setpencolor(clBlue);
  setbrushcolor(clBlue);
  end;
2:begin
  setpencolor(clGreen);
  setbrushcolor(clGreen);
  end;
3:begin
  setpencolor(clRed);
  setbrushcolor(clRed);
  end;
end;
lockdrawing;
while a<=cn do
 begin
  clearwindow;
  circle(cn,cn,r);
  delay(50);
  r:=r+d;
  a:=a+5;
  redraw
 end;
end.
0
0 / 0 / 0
Регистрация: 28.05.2016
Сообщений: 3
29.06.2016, 19:12 3
Можно ли как то вместо треуголька подставить эту фигуру:
Pie(x,y,160,0,90);
Pie(x,y,200,270,360);
floodfill(x+130,y-5,clred);
floodfill(x+130,y+5,clred); ?
0
Почетный модератор
64305 / 47600 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
29.06.2016, 19:57 4
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

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
uses graphABC;
var x,y,a,b,c,r1,r2:integer;
begin
setwindowsize(500,500);
centerwindow;
x:=windowwidth div 2;
y:=windowheight div 2;
a:=270;
b:=360;
c:=90;
r1:=200;
r2:=160;
lockdrawing;
repeat
  clearwindow;
  setpencolor(clRed);
  setbrushcolor(clRed);
  Pie(x,y,r1,a,b);
  Pie(x,y,r2,b,c);
  sleep(10);
  a:=a+1;
  b:=b+1;
  c:=c+1;
  redraw;
until false;
end.
0
0 / 0 / 0
Регистрация: 13.12.2016
Сообщений: 11
25.12.2016, 13:43 5
с треугольником не роботает
0
Почетный модератор
64305 / 47600 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
25.12.2016, 14:04 6
Цитата Сообщение от denmak1999 Посмотреть сообщение
не рОботает
Это раздел простого АВС и в нем прекрасно работает.

Добавлено через 5 минут
В АВС.net нужно например так.
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
uses graphABC;
type tochka=record  {тип точка с полями}
            x,y:integer;{координаты}
            u,r:real;{угол луча и расстояние до центра вращения}
            end;
     mas=array[1..3] of tochka; {полигон из 3х-точек}
{угол между лучем и осью Х}
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 3 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 Trg(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[1].x,a[1].y);
setpencolor(clBlue);{точка вращения}
circle(x1,y1,3);
floodfill(x1,y1,clBlue);
end;
var f:boolean;
procedure KeyPress(key:char);
begin
if key<>#0 then f:=false;
end;
{программа}
var p:mas;
    xc,yc,x1,y1,i:integer;
    c:char;
begin
f:=true;
xc:=windowwidth div 2;
yc:=windowheight div 2;
p[1].x:=xc-180;p[1].y:=yc+50;
p[2].x:=xc+120;p[2].y:=yc+80;
p[3].x:=xc+40;p[3].y:=yc-100;
x1:=round((p[1].x+p[2].x+p[3].x)/3);{координаты центра масс}
y1:=round((p[1].y+p[2].y+p[3].y)/3);
for i:=1 to 3 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;
lockdrawing;
onkeypress:=KeyPress;
repeat
  clearwindow;
  textout(xc-60,10,'Выход любая клавиша');
  Vrach(x1,y1,0.1,p);
  Trg(p,x1,y1); {рисуем}
  sleep(100);
  redraw;
until not f;
end.
0
0 / 0 / 0
Регистрация: 13.12.2016
Сообщений: 11
25.12.2016, 14:15 7
спасибо
0
25.12.2016, 14:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2016, 14:15
Помогаю со студенческими работами здесь

Изобразить правильный треугольник, вращающийся вокруг вершины с указанным номером
Изобразить правильный треугольник, вращающийся вокруг вершины с указанным номером.

Изобразите разносторонний треугольник, вращающийся в плоскости экрана вокруг своего центра тяжести
Изобразите разносторонний треугольник, вращающийся в плоскости экрана вокруг своего центра тяжести.

Изобразить на экране правильный треугольник, вращающийся в плоскости экрана вокруг своего центра
1. Изобразить на экране правильный треугольник, вращающийся в плоскости экрана вокруг своего...

Нарисовать треугольник
Как нарисовать треугольник в Pascal ABC? Помогите, пожалуйста. Опишите использованные функции


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

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