Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

TP / My / Turn

.PAS
Скачиваний:
18
Добавлен:
10.12.2013
Размер:
3.15 Кб
Скачать
uses
Crt, Graph;

type
SpaceIndex = record
x,y,z: Real;
end;

const
a = 50; l = 100;
hs = 30; H = 20;
LineColor = White;
SectionColor = Yellow;
Ox = 320; Oy = 300;
Border = 30; dt = 5;
fi = pi/180;
Time = 5000;

var
i,HoZ: Integer;
Driver,Mode: Integer;
Plane: array[1..12] of PointType;
Space: array[1..12] of SpaceIndex;

procedure Coordinats;
var
i: Byte;
begin
{‡ ЇЁблў Ґ¬ ў ¬ ббЁў Space Є®®а¤Ё­ вл
ўҐаиЁ­ дЁЈгал ў Їа®бва ­б⢥}
{Y}
for i:=1 to 12 do
if i>8 then with Space[i] do y:= H+l
else if i>4 then with Space[i] do y:= H
else if i>0 then with Space[i] do y:= H+hs;
{X}
for i:=1 to 12 do
if (i mod 4 = 0) or (i mod 4 = 1)
then with Space[i] do x:= a
else with Space[i] do x:= 0;
{Z}
for i:=1 to 12 do
if (i mod 4 = 1) or (i mod 4 = 2)
then with Space[i] do z:= 0
else with Space[i] do z:= a;
end;

procedure Calculate;
var
i: Byte;
begin
for i:= 1 to 12 do
with Space[i] do begin
x:= x*Cos(fi) - y*Sin(fi);
y:= x*Sin(fi) + y*Cos(fi);
end;
{ЏҐаҐбзЁвлў Ґ¬ Ёе ў Є®®а¤Ё­ вл ­  Ї«®бЄ®бвЁ}
for i:=1 to 12 do begin
Plane[i].x:= Ox + Round(
(Space[i].y - Space[i].x)*cos(Pi/6));
Plane[i].y:= Oy + Round(
(Space[i].y + Space[i].x)*sin(Pi/6)- Space[i].z);
end;
end;

procedure DrawFigure;
begin
{‘ҐзҐ­ЁҐ}
SetColor(SectionColor);
SetFillStyle(LtSlashFill,SectionColor);
FillPoly(4,Plane);
Line(Plane[1].x, Plane[1].y, Plane[2].x, Plane[2].y);
Line(Plane[2].x, Plane[2].y, Plane[3].x, Plane[3].y);
Line(Plane[3].x, Plane[3].y, Plane[4].x, Plane[4].y);
Line(Plane[4].x, Plane[4].y, Plane[1].x, Plane[1].y);
{‘ ¬  дЁЈга }
SetColor(LineColor);
Line(Plane[5].x, Plane[5].y, Plane[6].x, Plane[6].y);
Line(Plane[6].x, Plane[6].y, Plane[7].x, Plane[7].y);
Line(Plane[7].x, Plane[7].y, Plane[8].x, Plane[8].y);
Line(Plane[8].x, Plane[8].y, Plane[5].x, Plane[5].y);
Line(Plane[9].x, Plane[9].y, Plane[10].x, Plane[10].y);
Line(Plane[10].x, Plane[10].y, Plane[11].x, Plane[11].y);
Line(Plane[11].x, Plane[11].y, Plane[12].x, Plane[12].y);
Line(Plane[12].x, Plane[12].y, Plane[9].x, Plane[9].y);
Line(Plane[5].x, Plane[5].y, Plane[9].x, Plane[9].y);
Line(Plane[6].x, Plane[6].y, Plane[10].x, Plane[10].y);
Line(Plane[7].x, Plane[7].y, Plane[11].x, Plane[11].y);
Line(Plane[8].x, Plane[8].y, Plane[12].x, Plane[12].y);
{ЋбЁ}
HoZ:= Oy - Border;
Line(Ox,Oy,Ox,Border);
Line(Ox,Oy,Ox+Round(HoZ*cos(Pi/6)),Oy+Round(HoZ*sin(Pi/6)));
Line(Ox,Oy,Ox-Round(HoZ*cos(Pi/6)),Oy+Round(HoZ*sin(Pi/6)));
{Ќ ¤ЇЁбЁ}
OutTextXY(Ox+dt,Oy-dt,'0');
OutTextXY(Ox+dt,Border,'z');
OutTextXY(Ox+Round(HoZ*cos(Pi/6))+dt,Oy+Round(HoZ*sin(Pi/6)),'y');
OutTextXY(Ox-Round(HoZ*cos(Pi/6))+dt,Oy+Round(HoZ*sin(Pi/6)),'x');
end;

begin
Driver:= Detect;
InitGraph(Driver,Mode,'');
SetBkColor(0);
repeat
Coordinats;
for i:= 1 to Round(2*pi/fi) do begin
DrawFigure;
Delay(Time);
ClearDevice;
Calculate;
end;
until KeyPressed;
end.
Соседние файлы в папке My