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

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

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

Студворк — интернет-сервис помощи студентам
1.Нарисовать вращающийся треугольник
2.Составить программу, которая спрашивает у пользователя, в каком направлении должен двигаться шар: 1 – по горизонтали, 2 – по вертикали и какого цвета; и показывает нужное направление движения.
3.Написать программу, которая спрашивает у пользователя, как должен вести себя шар: 1 –расти из центра до границ экрана или 2 – уменьшаться от границ экрана к центру и его цвет; и показывать соответствующее изменение шарика.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.06.2016, 12:53
Ответы с готовыми решениями:

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

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

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

6
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32744
Регистрация: 18.05.2008
Сообщений: 115,168
04.06.2016, 15:17
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
Можно ли как то вместо треуголька подставить эту фигуру:
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
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32744
Регистрация: 18.05.2008
Сообщений: 115,168
29.06.2016, 19:57
Лучший ответ Сообщение было отмечено 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
с треугольником не роботает
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32744
Регистрация: 18.05.2008
Сообщений: 115,168
25.12.2016, 14:04
Цитата Сообщение от 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
спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.12.2016, 14:15
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru