Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 3
1

Графика в Турбо Паскаль. Разносторонний треугольник, вращающийся вокруг центра тяжести

10.05.2012, 18:12. Показов 1458. Ответов 2
Метки нет (Все метки)

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

Центр тяжести это точка пересечения медиан треугольника.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2012, 18:12
Ответы с готовыми решениями:

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

Получить на экране разносторонний треугольник, вращающийся вокруг своего центра тяжести
Получить на экране разносторонний треугольник, вращающийся вокруг своего центра тяжести

Построить треугольник, вращающийся вокруг центра тяжести
Доброго времени суток. Задание такое - Юзер вводит координаты вершин треугольника и видит свой...

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

2
Модератор
63898 / 47373 / 32664
Регистрация: 18.05.2008
Сообщений: 114,904
10.05.2012, 18:57 2
Лучший ответ Сообщение было отмечено Kosten1992 как решение

Решение

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
uses crt,graph;
procedure Trg(x,y,r,c:integer;u:real);
var t:array[1..4] of pointtype;
    i:integer;
    u1:real;
begin
u1:=u-pi/6;
for i:=1 to 3 do
 begin
  t[i].x:=x+round(r*cos(u1));
  t[i].y:=y-round(r*sin(u1));
  u1:=u1+2*pi/3;
 end;
t[4]:=t[1];
setcolor(c);
drawpoly(4,t);
end;
var x,y:integer;
    u:real;
begin
initgraph(x,y,'');
x:=getmaxX div 2;
y:=getmaxY div 2;
u:=0;
Trg(x,y,100,12,u);
repeat
delay(100);
Trg(x,y,100,0,u);
u:=u+0.1;
Trg(x,y,100,12,u);
until keypressed;
end.
1
Модератор
63898 / 47373 / 32664
Регистрация: 18.05.2008
Сообщений: 114,904
11.05.2012, 20:45 3
Только сейчас заметил что треугольник нужно разносторонний, а не равносторонний...
Это уже сложнее..

Добавлено через 37 минут
Вот так нужно.

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
uses graph,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,c:integer);
begin
setcolor(c);
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);
setcolor(9);{точка вращения}
circle(x1,y1,3);
floodfill(x1,y1,9);
end;
 
{программа}
var p:mas;
    xc,yc,x1,y1,i:integer;
    c:char;
begin
initgraph(xc,yc,'');
xc:=getmaxX div 2;
yc:=getmaxY 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;
outtextXY(xc-50,20,'Exit any key');
repeat
  delay(100);
  Trg(p,x1,y1,0); {стираем}
  Vrach(x1,y1,0.1,p);
  Trg(p,x1,y1,12); {рисуем}
until keypressed;
end.
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2012, 20:45

Помощь в написании контрольных, курсовых и дипломных работ здесь.

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.