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

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

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

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

Центр тяжести это точка пересечения медиан треугольника.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2012, 18:12
Ответы с готовыми решениями:

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

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

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

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

Блок схема (прямоугольник вращающийся вокруг своего центра)
Помогите нарисовать алгоритм uses Graph,Crt; type TPoints=array of...

2
Puporev
Модератор
54221 / 41854 / 28923
Регистрация: 18.05.2008
Сообщений: 98,534
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
Puporev
Модератор
54221 / 41854 / 28923
Регистрация: 18.05.2008
Сообщений: 98,534
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2012, 20:45

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

ООП. Треугольник, вращающийся вокруг своей вершины
Получить на экране правильный треугольник который вращается вокруг одной из...

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


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

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

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