Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
1 / 1 / 0
Регистрация: 03.04.2012
Сообщений: 33
1

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

10.05.2012, 14:51. Показов 2414. Ответов 3
Метки нет (Все метки)

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

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

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2012, 14:51
Ответы с готовыми решениями:

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

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

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

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

3
1 / 1 / 0
Регистрация: 03.04.2012
Сообщений: 33
11.05.2012, 19:50  [ТС] 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
59
60
61
62
63
64
program treug;
 
uses crt,GraphABC;
 
 label m1;
 procedure rast(o,p,u,v:real; var t:real);
 begin
 t:=sqr(o-u)+sqr(p-v);
 end;
 
 
 
var x1,y1,x2,y2,x3,y3,a,a1,b,b1,c,c1:integer;
x,y:integer; ol,i,o,j,m,k,l,gamma,beta,alpha:real;
begin
SetWindowSize(400,400);
line(0,200,400,200);
line(200,0,200,400);
SetPenColor(clRed);
 
 
a:=126;
a1:=77;
b:=229;
b1:=153;
c:=245;
c1:=370;
x:=trunc((a+b+c)/3);
y:=trunc((a1+b1+c1)/3);
 
rast(200,200,a,200,i);
rast(a,200,a,a1,o);
rast(200,200,b,200,j);
rast(b,200,b,b1,m);
rast(200,200,c,200,k);
rast(c,200,c,c1,l);
 
alpha:=arctan(o/i);
beta:=Pi-arctan(m/j);
gamma:=Pi+arctan(l/k);
 
ol:=0;
 
repeat
a:=x+round(i*cos(ol+alpha));
a1:=y+round(i*sin(ol+alpha));
b:=x+round(j*cos(ol+beta));
b1:=y+round(j*sin(ol+beta));
c:=x+round(k*cos(ol+gamma));
c1:=y+round(k*sin(ol+gamma));
Circle(x,y,2);
 SetPenColor(clBrown);
    line(a,a1,b,b1);
    line(b,b1,c,c1);
    line(c,c1,a,a1);
SetPenColor(clWhite);
    line(a,a1,b,b1);
    line(b,b1,c,c1);
    line(c,c1,a,a1);
ol:=ol +0.0001;
    if ol>=2*pi then ol:=0;
 
    until keypressed;
end.
0
Модератор
63861 / 47352 / 32648
Регистрация: 18.05.2008
Сообщений: 114,860
11.05.2012, 21:05 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
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 минуты
Это для Турбо Паскаля, переделай, это 10 минут работы.

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

Добавлено через 5 минут
Вот в АВС.
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-50,20,'Выход любая клавиша');
  Vrach(x1,y1,0.1,p);
  Trg(p,x1,y1); {рисуем}
  delay(100);
  redraw;
until keypressed;
end.
1
1 / 1 / 0
Регистрация: 03.04.2012
Сообщений: 33
11.05.2012, 21:06  [ТС] 4
Спасибо большое. Разобрался со своим тоже.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2012, 21:06

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

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

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

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

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


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

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

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