Результаты вычислительного эксперимента
Dw (x_o + (a1-x_o)*s3+(b1-y_o)*c3, y_o + (a1-x_o)*(-c3)+(b1-y_o)*s3, z2+dz2);/* draw HE */. Dw (x_o + (a1-x_o)*s3+(b1-y_o)*c3, y_o + (a1-x_o)*(-c3)+(b1-y_o)*s3, z2+dz2);/* draw FE */. Dw (x_o + (a1-x_o)*s3+(b1-y_o)*c3, y_o + (a1-x_o)*(-c3)+(b1-y_o)*s3, z2+dz2);/* draw FE */. Dw (x_o + (a1-x_o)*s3+(b1-y_o)*c3, y_o + (a1-x_o)*(-c3)+(b1-y_o)*s3, z1+dz2);/* draw EA */. Dw (x_o… Читать ещё >
Результаты вычислительного эксперимента (реферат, курсовая, диплом, контрольная)
Для запуска программы используем ехе — файл. На экране появляется изображение проволочной модели манипулятора в первоначальном положении. Данное изображение представлено на рисунке 1. С помощью управляющих клавиш, функции которых описаны в программе, можно получить изображения манипулятора после движения.
Рисунок 1 — Окно программы.
Список литературы
- 1. Подбельский В. В., Фомин С. С. Программирование на языке Си: Учеб. Пособие, 2-е доп. изд. — М.: Финансы и статистика, 2003. — 600 с.: ил.
- 2. Сергеев А. П., Терен А. Н. Программирование в Microsoft Visual C++ 2005. Самоучитель: — М.: Издательский дом «Вильямс», 2006. — 352 с.: ил.
- 3. Троелсен Э. С++ и платформа .NET. — СПб.: Питер, 2006. — 796 с.
- 4. Шилдт Г. C++: руководство для начинающих, 2-е издание.: Пер. с англ. — М.: Издательский дом «Вильямс», 2005. — 672 с.: ил. — Парал. Тит. англ.
>
#include.
#include.
static int gd=EGA, gm=EGAHI, t=8, n=0, y_o=0, x_o=0,z_o=0,x, r, z, alfa, Rz,.
Rz2, Rz3, a, a1, a2, a3, a4, b1, b2, b3, b4, x1, x2, x3, x4, y1,.
y2, y3, y4, z1, z2, dx2=0, dz=0, dz1=0, dz2=0, dz3=0, dz4=0, dz5=0,.
dx=0, dx1=0, dy=0, dy2=0, dy3=0, dy4=0, colour=0;
static float v11, v12, v13, v21, v22, v23, v32, v33, v43, screen_dist=5500,.
cx=320, cy=200;
static float th, ph, factor=0.17 453, rho=10 000, theta=20, phi=-70, h=100,.
c1=1, c2=1, c3=1, s1=0, s2=0, s3=0;
//************************************************************************.
//************************************************************************.
void coeff (float rho, float theta, float phi).
{.
th=theta*factor; ph=phi*factor;
v11=-sin (th); v12=-cos (ph)*cos (th);v13=-sin (ph)*cos (th);
v21=cos (th); v22=-cos (ph)*sin (th);v23=-sin (ph)*sin (th);
v32=sin (ph);v33=-cos (ph); v43=rho;
}.
//—————————————————————————;
void perspective (int x, int y, int z, int* pX, int* pY).
{ /* Eye coordinates*/.
float xe = v11*x + v21*y;
float ye = v12*x + v22*y + v32*z;
float ze = v13*x + v23*y + v33*z + v43;
/* Screen coordinates */.
- *pX = screen_dist*xe/ze + cx;
- *pY = screen_dist*ye/ze + cy;
}.
//—————————————————————————;
void mv (int x, int y, int z).
{.
int X, Y;
perspective (x, y, z, &X, &Y);
moveto (X, Y);
}.
//—————————————————————————;
void dw (float x, float y, float z).
{int X, Y;
perspective (x, y, z, &X, &Y);
lineto (X, Y);
}.
//—————————————————————————;
void parallelepiped (void).
//vraschenie vokrug osi z.
{.
mv (x_o + (a1-x_o)*s2+(b1-y_o)*c2, y_o + (a1-x_o)*(-c2)+(b1-y_o)*s2, z1+dz);
dw (x_o + (a2-x_o)*s2+(b2-y_o)*c2, y_o + (a2-x_o)*(-c2)+(b2-y_o)*s2, z1+dz);/* draw.
AB */.
dw (x_o + (a3-x_o)*s2+(b3-y_o)*c2, y_o + (a3-x_o)*(-c2)+(b3-y_o)*s2, z1+dz);/* draw BC*/.
dw (x_o + (a3-x_o)*s2+(b3-y_o)*c2, y_o + (a3-x_o)*(-c2)+(b3-y_o)*s2, z2+dz);/* draw CG */.
dw (x_o + (a4-x_o)*s2+(b4-y_o)*c2, y_o + (a4-x_o)*(-c2)+(b4-y_o)*s2, z2+dz);/* draw GH */.
dw (x_o + (a1-x_o)*s2+(b1-y_o)*c2, y_o + (a1-x_o)*(-c2)+(b1-y_o)*s2, z2+dz);/* draw HE */.
dw (x_o + (a1-x_o)*s2+(b1-y_o)*c2, y_o + (a1-x_o)*(-c2)+(b1-y_o)*s2, z1+dz);/* draw EA */.
mv (x_o + (a2-x_o)*s2+(b2-y_o)*c2, y_o + (a2-x_o)*(-c2)+(b2-y_o)*s2, z1+dz);
dw (x_o + (a2-x_o)*s2+(b2-y_o)*c2, y_o + (a2-x_o)*(-c2)+(b2-y_o)*s2, z2+dz);/* draw BF */.
dw (x_o + (a3-x_o)*s2+(b3-y_o)*c2, y_o + (a3-x_o)*(-c2)+(b3-y_o)*s2, z2+dz);/* draw FG */.
mv (x_o + (a2-x_o)*s2+(b2-y_o)*c2, y_o + (a2-x_o)*(-c2)+(b2-y_o)*s2, z2+dz);
dw (x_o + (a1-x_o)*s2+(b1-y_o)*c2, y_o + (a1-x_o)*(-c2)+(b1-y_o)*s2, z2+dz);/* draw FE */.
mv (x_o + (a1-x_o)*s2+(b1-y_o)*c2, y_o + (a1-x_o)*(-c2)+(b1-y_o)*s2, z1+dz);
dw (x_o + (a4-x_o)*s2+(b4-y_o)*c2, y_o + (a4-x_o)*(-c2)+(b4-y_o)*s2, z1+dz);/* draw AD */.
dw (x_o + (a3-x_o)*s2+(b3-y_o)*c2, y_o + (a3-x_o)*(-c2)+(b3-y_o)*s2, z1+dz);/* draw DC */.
mv (x_o + (a4-x_o)*s2+(b4-y_o)*c2, y_o + (a4-x_o)*(-c2)+(b4-y_o)*s2, z1+dz);
dw (x_o + (a4-x_o)*s2+(b4-y_o)*c2, y_o + (a4-x_o)*(-c2)+(b4-y_o)*s2, z2+dz);/* draw DH */.
}.
void parallelepiped12(void).
//vraschenie dla detali.
{.
mv (x_o + (a1-x_o)*s3+(b1-y_o)*c3, y_o + (a1-x_o)*(-c3)+(b1-y_o)*s3, z1+dz2);
dw (x_o + (a2-x_o)*s3+(b2-y_o)*c3, y_o + (a2-x_o)*(-c3)+(b2-y_o)*s3, z1+dz2);/* draw AB */.
dw (x_o + (a3-x_o)*s3+(b3-y_o)*c3, y_o + (a3-x_o)*(-c3)+(b3-y_o)*s3, z1+dz2);/* draw BC*/.
dw (x_o + (a3-x_o)*s3+(b3-y_o)*c3, y_o + (a3-x_o)*(-c3)+(b3-y_o)*s3, z2+dz2);/* draw CG */.
dw (x_o + (a4-x_o)*s3+(b4-y_o)*c3, y_o + (a4-x_o)*(-c3)+(b4-y_o)*s3, z2+dz2);/* draw GH */.
dw (x_o + (a1-x_o)*s3+(b1-y_o)*c3, y_o + (a1-x_o)*(-c3)+(b1-y_o)*s3, z2+dz2);/* draw HE */.
dw (x_o + (a1-x_o)*s3+(b1-y_o)*c3, y_o + (a1-x_o)*(-c3)+(b1-y_o)*s3, z1+dz2);/* draw EA */.
mv (x_o + (a2-x_o)*s3+(b2-y_o)*c3, y_o + (a2-x_o)*(-c3)+(b2-y_o)*s3, z1+dz2);
dw (x_o + (a2-x_o)*s3+(b2-y_o)*c3, y_o + (a2-x_o)*(-c3)+(b2-y_o)*s3, z2+dz2);/* draw BF */.
dw (x_o + (a3-x_o)*s3+(b3-y_o)*c3, y_o + (a3-x_o)*(-c3)+(b3-y_o)*s3, z2+dz2);/* draw FG */.
mv (x_o + (a2-x_o)*s3+(b2-y_o)*c3, y_o + (a2-x_o)*(-c3)+(b2-y_o)*s3, z2+dz2);
dw (x_o + (a1-x_o)*s3+(b1-y_o)*c3, y_o + (a1-x_o)*(-c3)+(b1-y_o)*s3, z2+dz2);/* draw FE */.
mv (x_o + (a1-x_o)*s3+(b1-y_o)*c3, y_o + (a1-x_o)*(-c3)+(b1-y_o)*s3, z1+dz2);
dw (x_o + (a4-x_o)*s3+(b4-y_o)*c3, y_o + (a4-x_o)*(-c3)+(b4-y_o)*s3, z1+dz2);/* draw AD */.
dw (x_o + (a3-x_o)*s3+(b3-y_o)*c3, y_o + (a3-x_o)*(-c3)+(b3-y_o)*s3, z1+dz2);/* draw DC */.
mv (x_o + (a4-x_o)*s3+(b4-y_o)*c3, y_o + (a4-x_o)*(-c3)+(b4-y_o)*s3, z1+dz2);
dw (x_o + (a4-x_o)*s3+(b4-y_o)*c3, y_o + (a4-x_o)*(-c3)+(b4-y_o)*s3, z2+dz2);/* draw DH */.
}.
void parallelepiped2(void).
//vraschenie vokrug osi x.
{.
mv (x1, y_o + (y1-y_o)*(-c1)+(z1-z_o)*(-s1), z_o + (y1-y_o)*s1+(z1-z_o)*(-c1));
dw (x2, y_o + (y2-y_o)*(-c1)+(z1-z_o)*(-s1), z_o + (y2-y_o)*s1+(z1-z_o)*(-c1));
dw (x3, y_o + (y3-y_o)*(-c1)+(z1-z_o)*(-s1), z_o + (y3-y_o)*s1+(z1-z_o)*(-c1));
dw (x3, y_o + (y3-y_o)*(-c1)+(z2-z_o)*(-s1), z_o + (y3-y_o)*s1+(z2-z_o)*(-c1));
dw (x4, y_o + (y4-y_o)*(-c1)+(z2-z_o)*(-s1), z_o + (y4-y_o)*s1+(z2-z_o)*(-c1));
dw (x1, y_o + (y1-y_o)*(-c1)+(z2-z_o)*(-s1), z_o + (y1-y_o)*s1+(z2-z_o)*(-c1));
dw (x1, y_o + (y1-y_o)*(-c1)+(z1-z_o)*(-s1), z_o + (y1-y_o)*s1+(z1-z_o)*(-c1));
mv (x2, y_o + (y2-y_o)*(-c1)+(z1-z_o)*(-s1), z_o + (y2-y_o)*s1+(z1-z_o)*(-c1));
dw (x2, y_o + (y2-y_o)*(-c1)+(z2-z_o)*(-s1), z_o + (y2-y_o)*s1+(z2-z_o)*(-c1));
dw (x3, y_o + (y3-y_o)*(-c1)+(z2-z_o)*(-s1), z_o + (y3-y_o)*s1+(z2-z_o)*(-c1));
mv (x2, y_o + (y2-y_o)*(-c1)+(z2-z_o)*(-s1), z_o + (y2-y_o)*s1+(z2-z_o)*(-c1));
dw (x1, y_o + (y1-y_o)*(-c1)+(z2-z_o)*(-s1), z_o + (y1-y_o)*s1+(z2-z_o)*(-c1));
mv (x1, y_o + (y1-y_o)*(-c1)+(z1-z_o)*(-s1), z_o + (y1-y_o)*s1+(z1-z_o)*(-c1));
dw (x4, y_o + (y4-y_o)*(-c1)+(z1-z_o)*(-s1), z_o + (y4-y_o)*s1+(z1-z_o)*(-c1));
dw (x3, y_o + (y3-y_o)*(-c1)+(z1-z_o)*(-s1), z_o + (y3-y_o)*s1+(z1-z_o)*(-c1));
mv (x4, y_o + (y4-y_o)*(-c1)+(z1-z_o)*(-s1), z_o + (y4-y_o)*s1+(z1-z_o)*(-c1));
dw (x4, y_o + (y4-y_o)*(-c1)+(z2-z_o)*(-s1), z_o + (y4-y_o)*s1+(z2-z_o)*(-c1));
}.
void parallelepiped3(void).
//vraschenie vokrug osi y.
{.
mv (x_o + (x1-x_o)*c1+(z1-z_o)*s1, y1, z_o + (x1-x_o)*(-s1)+(z1-z_o)*c1);
dw (x_o + (x2-x_o)*c1+(z1-z_o)*s1, y2, z_o + (x2-x_o)*(-s1)+(z1-z_o)*c1);
dw (x_o + (x3-x_o)*c1+(z1-z_o)*s1, y3, z_o + (x3-x_o)*(-s1)+(z1-z_o)*c1);
dw (x_o + (x3-x_o)*c1+(z2-z_o)*s1, y3, z_o + (x3-x_o)*(-s1)+(z2-z_o)*c1);
dw (x_o + (x4-x_o)*c1+(z2-z_o)*s1, y4, z_o + (x4-x_o)*(-s1)+(z2-z_o)*c1);
dw (x_o + (x1-x_o)*c1+(z2-z_o)*s1, y1, z_o + (x1-x_o)*(-s1)+(z2-z_o)*(c1));
dw (x_o + (x1-x_o)*c1+(z1-z_o)*s1, y1, z_o + (x1-x_o)*(-s1)+(z1-z_o)*(c1));
mv (x_o + (x2-x_o)*c1+(z1-z_o)*s1, y2, z_o + (x2-x_o)*(-s1)+(z1-z_o)*(c1));
dw (x_o + (x2-x_o)*c1+(z2-z_o)*s1, y2, z_o + (x2-x_o)*(-s1)+(z2-z_o)*(c1));
dw (x_o + (x3-x_o)*c1+(z2-z_o)*s1, y3, z_o + (x3-x_o)*(-s1)+(z2-z_o)*(c1));
mv (x_o + (x2-x_o)*c1+(z2-z_o)*s1, y2, z_o + (x2-x_o)*(-s1)+(z2-z_o)*(c1));
dw (x_o + (x1-x_o)*c1+(z2-z_o)*s1, y1, z_o + (x1-x_o)*(-s1)+(z2-z_o)*(c1));
mv (x_o + (x1-x_o)*c1+(z1-z_o)*s1, y1, z_o + (x1-x_o)*(-s1)+(z1-z_o)*(c1));
dw (x_o + (x4-x_o)*c1+(z1-z_o)*s1, y4, z_o + (x4-x_o)*(-s1)+(z1-z_o)*(c1));
dw (x_o + (x3-x_o)*c1+(z1-z_o)*s1, y3, z_o + (x3-x_o)*(-s1)+(z1-z_o)*(c1));
mv (x_o + (x4-x_o)*c1+(z1-z_o)*s1, y4, z_o + (x4-x_o)*(-s1)+(z1-z_o)*(c1));
dw (x_o + (x4-x_o)*c1+(z2-z_o)*s1, y4, z_o + (x4-x_o)*(-s1)+(z2-z_o)*(c1));
}.
void obrazujuschaja (void).
{.
mv (x_o + (x-x_o)*c1+(z-z_o)*s1, y1, z_o + (x-x_o)*(-s1)+(z-z_o)*c1);
dw (x_o + (x-x_o)*c1+(z-z_o)*s1, y2, z_o + (x-x_o)*(-s1)+(z-z_o)*c1);
}.
//—————————————————————————;
void drawing (void).
{.
coeff (rho, theta, phi);
setcolor (WHITE);
outtextxy (215,10," Press 1 to start animation");
if (colour≠0) setcolor (LIGHTBLUE);
//zveno1.
mv (0,0,0);dw (0,60,0);
dw (60,60,0);dw (60,0,0);
dw (0,0,0); dw (0,0,150+dz);
dw (0,60,150+dz);dw (60,60,150+dz);
dw (60,0,150+dz);dw (0,0,150+dz);
mv (0,60,0);dw (0,60,150+dz);
mv (60,60,0);dw (60,60,150+dz);
mv (60,0,0);dw (60,0,150+dz);
if (colour≠0) setcolor (LIGHTBLUE);
//zveno2.
a1=0; b1=0;
a2=200+dx1;b2=0;
a3=200+dx1;b3=60;
a4=0;b4=60;
z1=150; z2=180;
x_o=30;y_o=30;
parallelepiped ();
//grip.
if (colour≠0) setcolor (LIGHTMAGENTA);
//right section.
a1=200+dx1;b1=0+dx;
a2=200+dx1;b2=10+dx;
a3=230+dx1;b3=10+dx;
a4=230+dx1;b4=0+dx;
parallelepiped ();
// left section.
a1=200+dx1;b1=50-dx;
a2=200+dx1;b2=60-dx;
a3=230+dx1;b3=60-dx;
a4=230+dx1;b4=50-dx;
parallelepiped ();
if (colour≠0) setcolor (GREEN);
//stanina11.
mv (-240,150,0);dw (-240,240,0);
dw (-120,240,0);dw (-120,150,0);
dw (-240,150,0);dw (-240,150,150);
dw (-240,240,150);dw (-120,240,150);
dw (-120,150,150);dw (-240,150,150);
mv (-240,240,0);dw (-240,240,150);
mv (-120,240,0);dw (-120,240,150);
mv (-120,150,0);dw (-120,150,150);
//stanina12.
mv (-240,-120,0);dw (-240,-210,0);
dw (-120,-210,0);dw (-120,-120,0);
dw (-240,-120,0);dw (-240,-120,150);
dw (-240,-210,150);dw (-120,-210,150);
dw (-120,-120,150);dw (-240,-120,150);
mv (-240,-210,0);dw (-240,-210,150);
mv (-120,-210,0);dw (-120,-210,150);
mv (-120,-120,0);dw (-120,-120,150);
//stanina13.
mv (-240,150,40);dw (-240,-120,40);
dw (-120,-120,40);dw (-120,150,40);
dw (-240,150,40);dw (-240,150,60);
dw (-240,-120,60);dw (-120,-120,60);
dw (-120,150,60);dw (-240,150,60);
mv (-240,-120,40);dw (-240,-120,60);
mv (-120,-120,40);dw (-120,-120,60);
mv (-120,150,40);dw (-120,150,60);
if (colour≠0) setcolor (RED);
//patron.
x=-180; r=20; z=110;
mv (x+r, 150, z);
for (alfa=0;alfa<=720;alfa++).
dw (x+r*cos (alfa*3.14/360), 150, z+r*sin (alfa*3.14/360));
mv (x+r, 100, z);
for (alfa=0;alfa<=720;alfa++).
dw (x+r*cos (alfa*3.14/360), 100, z+r*sin (alfa*3.14/360));
x_o=-180;z_o=110;
y1=100; y2=150; x+=r;
obrazujuschaja ();
x-=2*r;
obrazujuschaja ();
x=-180; z+=r;
obrazujuschaja ();
z-=2*r;
obrazujuschaja ();
if (colour≠0) setcolor (LIGHTRED);
//babina.
mv (-210,0+dy2,90);dw (-210,-120,90);
dw (-150,-120,90);dw (-150,0+dy2,90);
dw (-210,0+dy2,90);dw (-210,0+dy2,130);
dw (-210,-120,130);dw (-150,-120,130);
dw (-150,0+dy2,130);dw (-210,0+dy2,130);
mv (-210,-120,90);dw (-210,-120,130);
mv (-150,-120,90);dw (-150,-120,130);
mv (-150,0+dy2,90);dw (-150,0+dy2,130);
if (colour≠0) setcolor (MAGENTA);
//pod babinoj.
mv (-200,50,60);dw (-200,10,60);
dw (-160,10,60);dw (-160,50,60);
dw (-200,50,60);dw (-200,50,80+dz4);
dw (-200,10,80+dz4);dw (-160,10,80+dz4);
dw (-160,50,80+dz4);dw (-200,50,80+dz4);
mv (-200,10,60);dw (-200,10,80+dz4);
mv (-160,10,60);dw (-160,10,80+dz4);
mv (-160,50,60);dw (-160,50,80+dz4);
if (colour≠0) setcolor (YELLOW);
//osnovanie rezca.
mv (-200,110,60);dw (-200,70,60);
dw (-160,70,60);dw (-160,110,60);
dw (-200,110,60);dw (-200,110,80);
dw (-200,70,80);dw (-160,70,80);
dw (-160,110,80);dw (-200,110,80);
mv (-200,70,60);dw (-200,70,80);
mv (-160,70,60);dw (-160,70,80);
mv (-160,110,60);dw (-160,110,80);
//rezec.
mv (-185,95,80);dw (-185,85,80);
dw (-175,85,80);dw (-175,95,80);
dw (-185,95,80);dw (-185,95,110);
dw (-185,85,100);dw (-175,85,100);
dw (-175,95,100);dw (-185,95,100);
mv (-185,85,80);dw (-185,85,100);
mv (-175,85,80);dw (-175,85,100);
mv (-175,95,80);dw (-175,95,100);
//konveyer.
if (colour≠0) setcolor (BLUE);
mv (240,-950,0);dw (240,940,0);
dw (120,940,0);dw (120,-950,0);
dw (240,-950,0);dw (240,-950,60);
dw (240,940,60);dw (120,940,60);
dw (120,-950,60);dw (240,-950,60);
mv (240,940,0);dw (240,940,60);
mv (120,940,0);dw (120,940,60);
mv (120,-950,0);dw (120,-950,60);
}.
void detal1(void).
{.
if (colour≠0) setcolor (LIGHTGREEN);
mv (190,-950+dy, 60+dz1);dw (190,-930+dy, 60+dz1);
dw (170,-930+dy, 60+dz1);dw (170,-950+dy, 60+dz1);
dw (190,-950+dy, 60+dz1);dw (190,-950+dy, 80+dz1);
dw (190,-930+dy, 80+dz1);dw (170,-930+dy, 80+dz1);
dw (170,-950+dy, 80+dz1);dw (190,-950+dy, 80+dz1);
mv (190,-930+dy, 60+dz1);dw (190,-930+dy, 80+dz1);
mv (170,-930+dy, 60+dz1);dw (170,-930+dy, 80+dz1);
mv (170,-950+dy, 60+dz1);dw (170,-950+dy, 80+dz1);
}.
void detal2(void).
{.
if (colour≠0) setcolor (LIGHTGREEN);
a1=20+dx2; b1=190+dy3;
a2=20+dx2; b2=170+dy3;
a3=40+dx2; b3=170+dy3;
a4=40+dx2; b4=190+dy3;
x_o=30;y_o=30;
z1=140+dz3+dz5;z2=160+dz3+dz5;
parallelepiped12();
}.
void detal3(void).
{.
if (colour≠0) setcolor (LIGHTGREEN);
x1=-190; y1=100;
x2=-190; y2=80;
x3=-170; y3=80;
x4=-170; y4=100;
x_o=-180;z_o=110;
z1=100;z2=120;
parallelepiped3();
}.
//————————————————————;
void rotate1(void).
{.
c1=cos (Rz*factor);
s1=sin (Rz*factor);
}.
//————————————————————;
void rotate2(void).
{.
s2=sin (Rz2*factor);
c2=cos (Rz2*factor);
}.
void rotate3(void).
{s3=sin (Rz3*factor);
c3=cos (Rz3*factor);
}.
//————————————————————;
void stcolour (void).
{.
colour=colour1;
}.
//???
void risovanie (void).
{.
setactivepage (n);
cleardevice ();
drawing ();
detal1();
setvisualpage (n);
n=n1;
}.
void risovanie2(void).
{.
setactivepage (n);
cleardevice ();
drawing ();
detal2();
setvisualpage (n);
n=n1;
}.
void risovanie3(void).
{.
setactivepage (n);
cleardevice ();
drawing ();
detal3();
setvisualpage (n);
n=n1;
}.
//!!!
void main (void).
{.
initgraph (&gd,&gm," «);
do.
{.
risovanie ();
t=getch ();
switch (t).
{.
case '1':for (dy=0;dy<969;dy+=5)risovanie ();
for (dx1=0;dx1>-35;dx1-=3) risovanie ();
for (Rz2=0;Rz2<91;Rz2+=3).
{.
rotate2();
risovanie ();
}.
for (dz=0;dz>-80;dz-=3) risovanie ();
for (dx=0;dx<9;dx+=2) risovanie ();
for (dz=-80,dz1=0;dz<0,dz1<80;dz+=3,dz1+=3) risovanie ();
for (Rz2=90,Rz3=0;Rz2>-91;Rz2-=3,Rz3-=3).
{.
rotate2(); rotate3(); risovanie2();
}.
for (dx1=-35;dx1<25;dx1+=3,dy3+=3) risovanie2();
for (dz=0;dz>-60;dz-=3,dz3-=3) risovanie2();
for (dx=9;dx>0;dx-=2) risovanie2();
for (dz=-60;dz<0;dz+=3) risovanie2();
for (dz4=0;dz4<20;dz4+=3,dz5+=3) risovanie2();
for (dy2=0;dy2<10;dy2+=3,dx2-=3) risovanie2();
for (dz4=20;dz4>0;dz4—) risovanie2();
for (dy2=10;dy2<80;dy2+=3,dx2+=3) risovanie2();
for (Rz=0;Rz<10 000;Rz+=100).
{.
rotate1(); risovanie3();
}.
for (dy2=80;dy2>10;dy2-=3,dx2-=3) risovanie2();
for (dz4=0;dz4<20;dz4++) risovanie2();
for (dy2=10;dy2>0;dy2-=3,dx2+=3) risovanie2();
for (dz4=20;dz4>0;dz4-=3,dz5-=3) risovanie2();
for (dz=0;dz>-60;dz-=3) risovanie2();
for (dx=0;dx<9;dx+=2) risovanie2();
for (dz=-60;dz<0;dz+=3,dz3+=3) risovanie2();
for (Rz2=-91,Rz3=-181;Rz2<90;Rz2+=3,Rz3+=3).
{.
rotate2();rotate3(); risovanie2();
}.
for (dx1=dx1;dx1>-35;dx1-=3,dy3-=3) risovanie2();
for (dz=dz;dz>-80;dz-=3,dz1-=3) risovanie ();
for (dx=9;dx>0;dx-=2) risovanie ();
for (dz=-80;dz<0;dz+=3) risovanie ();
for (dy=969;dy<1869;dy+=5) risovanie ();
case 't': if (Rz3>-91){ Rz3-=2;Rz2-=2; rotate2();rotate3();} break;
case '4': theta+=4; break;
case '6': theta-=4; break;
case '8': phi+=4; break;
case '2': phi-=4; break;
case '+': if (screen_dist<10 000) screen_dist+=100; break;
case '-': if (screen_dist>0) screen_dist-=100; break;
case 'n': if (dz>-90) dz-=3; break;
case 'm': if (dz<90) dz+=3; break;
case 'q': cx-=3; break;
case 'w': cx+=3; break;
case 'a': cy-=3; break;
case 's': cy+=3; break;
case 'e': if (dx<20) dx+=2; break;
case 'r': if (dx>0) dx-=2; break;
case '.': if (dy<1500) dy+=3; break;
case ',': if (dy>0) dy-=3; break;
case 'd': if (dy2>0) dy2-=3; break;
case 'f': if (dy2<100) dy2+=3; break;
case 'l': if (Rz2>-90) Rz2-=3; rotate2(); break;
case 'k': if (Rz2<90) Rz2+=3; rotate2(); break;
case 'v': Rz-=33; rotate1(); break;
case 'b': Rz+=33; rotate1(); break;
case 'c': stcolour (); break;
case 'z': if (dx1<1500) dx1+=3; break;
}.
}.
while (t≠0x1b);
closegraph ();
}#include.
#include.
static int gd=EGA, gm=EGAHI, t=8, n=0, y_o=0, x_o=0,z_o=0,x, r, z, alfa, Rz,.
Rz2, Rz3, a, a1, a2, a3, a4, b1, b2, b3, b4, x1, x2, x3, x4, y1,.
y2, y3, y4, z1, z2, dx2=0, dz=0, dz1=0, dz2=0, dz3=0, dz4=0, dz5=0,.
dx=0, dx1=0, dy=0, dy2=0, dy3=0, dy4=0, colour=0;
static float v11, v12, v13, v21, v22, v23, v32, v33, v43, screen_dist=5500,.
cx=320, cy=200;
static float th, ph, factor=0.17 453, rho=10 000, theta=20, phi=-70, h=100,.
c1=1, c2=1, c3=1, s1=0, s2=0, s3=0;
//************************************************************************.
//************************************************************************.
void coeff (float rho, float theta, float phi).
{.
th=theta*factor; ph=phi*factor;
v11=-sin (th); v12=-cos (ph)*cos (th);v13=-sin (ph)*cos (th);
v21=cos (th); v22=-cos (ph)*sin (th);v23=-sin (ph)*sin (th);
v32=sin (ph);v33=-cos (ph); v43=rho;
}.
//—————————————————————————;
void perspective (int x, int y, int z, int* pX, int* pY).
{ /* Eye coordinates*/.
float xe = v11*x + v21*y;
float ye = v12*x + v22*y + v32*z;
float ze = v13*x + v23*y + v33*z + v43;
/* Screen coordinates */.
- *pX = screen_dist*xe/ze + cx;
- *pY = screen_dist*ye/ze + cy;
}.
//—————————————————————————;
void mv (int x, int y, int z).
{.
int X, Y;
perspective (x, y, z, &X, &Y);
moveto (X, Y);
}.
//—————————————————————————;
void dw (float x, float y, float z).
{int X, Y;
perspective (x, y, z, &X, &Y);
lineto (X, Y);
}.
//—————————————————————————;
void parallelepiped (void).
//vraschenie vokrug osi z.
{.
mv (x_o + (a1-x_o)*s2+(b1-y_o)*c2, y_o + (a1-x_o)*(-c2)+(b1-y_o)*s2, z1+dz);
dw (x_o + (a2-x_o)*s2+(b2-y_o)*c2, y_o + (a2-x_o)*(-c2)+(b2-y_o)*s2, z1+dz);/* draw AB */.
dw (x_o + (a3-x_o)*s2+(b3-y_o)*c2, y_o + (a3-x_o)*(-c2)+(b3-y_o)*s2, z1+dz);/* draw BC*/.
dw (x_o + (a3-x_o)*s2+(b3-y_o)*c2, y_o + (a3-x_o)*(-c2)+(b3-y_o)*s2, z2+dz);/* draw CG */.
dw (x_o + (a4-x_o)*s2+(b4-y_o)*c2, y_o + (a4-x_o)*(-c2)+(b4-y_o)*s2, z2+dz);/* draw GH */.
dw (x_o + (a1-x_o)*s2+(b1-y_o)*c2, y_o + (a1-x_o)*(-c2)+(b1-y_o)*s2, z2+dz);/* draw HE */.
dw (x_o + (a1-x_o)*s2+(b1-y_o)*c2, y_o + (a1-x_o)*(-c2)+(b1-y_o)*s2, z1+dz);/* draw EA */.
mv (x_o + (a2-x_o)*s2+(b2-y_o)*c2, y_o + (a2-x_o)*(-c2)+(b2-y_o)*s2, z1+dz);
dw (x_o + (a2-x_o)*s2+(b2-y_o)*c2, y_o + (a2-x_o)*(-c2)+(b2-y_o)*s2, z2+dz);/* draw BF */.
dw (x_o + (a3-x_o)*s2+(b3-y_o)*c2, y_o + (a3-x_o)*(-c2)+(b3-y_o)*s2, z2+dz);/* draw FG */.
mv (x_o + (a2-x_o)*s2+(b2-y_o)*c2, y_o + (a2-x_o)*(-c2)+(b2-y_o)*s2, z2+dz);
dw (x_o + (a1-x_o)*s2+(b1-y_o)*c2, y_o + (a1-x_o)*(-c2)+(b1-y_o)*s2, z2+dz);/* draw FE */.
mv (x_o + (a1-x_o)*s2+(b1-y_o)*c2, y_o + (a1-x_o)*(-c2)+(b1-y_o)*s2, z1+dz);
dw (x_o + (a4-x_o)*s2+(b4-y_o)*c2, y_o + (a4-x_o)*(-c2)+(b4-y_o)*s2, z1+dz);/* draw AD */.
dw (x_o + (a3-x_o)*s2+(b3-y_o)*c2, y_o + (a3-x_o)*(-c2)+(b3-y_o)*s2, z1+dz);/* draw DC */.
mv (x_o + (a4-x_o)*s2+(b4-y_o)*c2, y_o + (a4-x_o)*(-c2)+(b4-y_o)*s2, z1+dz);
dw (x_o + (a4-x_o)*s2+(b4-y_o)*c2, y_o + (a4-x_o)*(-c2)+(b4-y_o)*s2, z2+dz);/* draw DH */.
}.
void parallelepiped12(void).
//vraschenie dla detali.
{.
mv (x_o + (a1-x_o)*s3+(b1-y_o)*c3, y_o + (a1-x_o)*(-c3)+(b1-y_o)*s3, z1+dz2);
dw (x_o + (a2-x_o)*s3+(b2-y_o)*c3, y_o + (a2-x_o)*(-c3)+(b2-y_o)*s3, z1+dz2);/* draw AB */.
dw (x_o + (a3-x_o)*s3+(b3-y_o)*c3, y_o + (a3-x_o)*(-c3)+(b3-y_o)*s3, z1+dz2);/* draw BC*/.
dw (x_o + (a3-x_o)*s3+(b3-y_o)*c3, y_o + (a3-x_o)*(-c3)+(b3-y_o)*s3, z2+dz2);/* draw CG */.
dw (x_o + (a4-x_o)*s3+(b4-y_o)*c3, y_o + (a4-x_o)*(-c3)+(b4-y_o)*s3, z2+dz2);/* draw GH */.
dw (x_o + (a1-x_o)*s3+(b1-y_o)*c3, y_o + (a1-x_o)*(-c3)+(b1-y_o)*s3, z2+dz2);/* draw.
HE */.
dw (x_o + (a1-x_o)*s3+(b1-y_o)*c3, y_o + (a1-x_o)*(-c3)+(b1-y_o)*s3, z1+dz2);/* draw EA */.
mv (x_o + (a2-x_o)*s3+(b2-y_o)*c3, y_o + (a2-x_o)*(-c3)+(b2-y_o)*s3, z1+dz2);
dw (x_o + (a2-x_o)*s3+(b2-y_o)*c3, y_o + (a2-x_o)*(-c3)+(b2-y_o)*s3, z2+dz2);/* draw BF */.
dw (x_o + (a3-x_o)*s3+(b3-y_o)*c3, y_o + (a3-x_o)*(-c3)+(b3-y_o)*s3, z2+dz2);/* draw FG */.
mv (x_o + (a2-x_o)*s3+(b2-y_o)*c3, y_o + (a2-x_o)*(-c3)+(b2-y_o)*s3, z2+dz2);
dw (x_o + (a1-x_o)*s3+(b1-y_o)*c3, y_o + (a1-x_o)*(-c3)+(b1-y_o)*s3, z2+dz2);/* draw FE */.
mv (x_o + (a1-x_o)*s3+(b1-y_o)*c3, y_o + (a1-x_o)*(-c3)+(b1-y_o)*s3, z1+dz2);
dw (x_o + (a4-x_o)*s3+(b4-y_o)*c3, y_o + (a4-x_o)*(-c3)+(b4-y_o)*s3, z1+dz2);/* draw AD */.
dw (x_o + (a3-x_o)*s3+(b3-y_o)*c3, y_o + (a3-x_o)*(-c3)+(b3-y_o)*s3, z1+dz2);/* draw DC */.
mv (x_o + (a4-x_o)*s3+(b4-y_o)*c3, y_o + (a4-x_o)*(-c3)+(b4-y_o)*s3, z1+dz2);
dw (x_o + (a4-x_o)*s3+(b4-y_o)*c3, y_o + (a4-x_o)*(-c3)+(b4-y_o)*s3, z2+dz2);/* draw DH */.
}.
void parallelepiped2(void).
//vraschenie vokrug osi x.
{.
mv (x1, y_o + (y1-y_o)*(-c1)+(z1-z_o)*(-s1), z_o + (y1-y_o)*s1+(z1-z_o)*(-c1));
dw (x2, y_o + (y2-y_o)*(-c1)+(z1-z_o)*(-s1), z_o + (y2-y_o)*s1+(z1-z_o)*(-c1));
dw (x3, y_o + (y3-y_o)*(-c1)+(z1-z_o)*(-s1), z_o + (y3-y_o)*s1+(z1-z_o)*(-c1));
dw (x3, y_o + (y3-y_o)*(-c1)+(z2-z_o)*(-s1), z_o + (y3-y_o)*s1+(z2-z_o)*(-c1));
dw (x4, y_o + (y4-y_o)*(-c1)+(z2-z_o)*(-s1), z_o + (y4-y_o)*s1+(z2-z_o)*(-c1));
dw (x1, y_o + (y1-y_o)*(-c1)+(z2-z_o)*(-s1), z_o + (y1-y_o)*s1+(z2-z_o)*(-c1));
dw (x1, y_o + (y1-y_o)*(-c1)+(z1-z_o)*(-s1), z_o + (y1-y_o)*s1+(z1-z_o)*(-c1));
mv (x2, y_o + (y2-y_o)*(-c1)+(z1-z_o)*(-s1), z_o + (y2-y_o)*s1+(z1-z_o)*(-c1));
dw (x2, y_o + (y2-y_o)*(-c1)+(z2-z_o)*(-s1), z_o + (y2-y_o)*s1+(z2-z_o)*(-c1));
dw (x3, y_o + (y3-y_o)*(-c1)+(z2-z_o)*(-s1), z_o + (y3-y_o)*s1+(z2-z_o)*(-c1));
mv (x2, y_o + (y2-y_o)*(-c1)+(z2-z_o)*(-s1), z_o + (y2-y_o)*s1+(z2-z_o)*(-c1));
dw (x1, y_o + (y1-y_o)*(-c1)+(z2-z_o)*(-s1), z_o + (y1-y_o)*s1+(z2-z_o)*(-c1));
mv (x1, y_o + (y1-y_o)*(-c1)+(z1-z_o)*(-s1), z_o + (y1-y_o)*s1+(z1-z_o)*(-c1));
dw (x4, y_o + (y4-y_o)*(-c1)+(z1-z_o)*(-s1), z_o + (y4-y_o)*s1+(z1-z_o)*(-c1));
dw (x3, y_o + (y3-y_o)*(-c1)+(z1-z_o)*(-s1), z_o + (y3-y_o)*s1+(z1-z_o)*(-c1));
mv (x4, y_o + (y4-y_o)*(-c1)+(z1-z_o)*(-s1), z_o + (y4-y_o)*s1+(z1-z_o)*(-c1));
dw (x4, y_o + (y4-y_o)*(-c1)+(z2-z_o)*(-s1), z_o + (y4-y_o)*s1+(z2-z_o)*(-c1));
}.
void parallelepiped3(void).
//vraschenie vokrug osi y.
{.
mv (x_o + (x1-x_o)*c1+(z1-z_o)*s1, y1, z_o + (x1-x_o)*(-s1)+(z1-z_o)*c1);
dw (x_o + (x2-x_o)*c1+(z1-z_o)*s1, y2, z_o + (x2-x_o)*(-s1)+(z1-z_o)*c1);
dw (x_o + (x3-x_o)*c1+(z1-z_o)*s1, y3, z_o + (x3-x_o)*(-s1)+(z1-z_o)*c1);
dw (x_o + (x3-x_o)*c1+(z2-z_o)*s1, y3, z_o + (x3-x_o)*(-s1)+(z2-z_o)*c1);
dw (x_o + (x4-x_o)*c1+(z2-z_o)*s1, y4, z_o + (x4-x_o)*(-s1)+(z2-z_o)*c1);
dw (x_o + (x1-x_o)*c1+(z2-z_o)*s1, y1, z_o + (x1-x_o)*(-s1)+(z2-z_o)*(c1));
dw (x_o + (x1-x_o)*c1+(z1-z_o)*s1, y1, z_o + (x1-x_o)*(-s1)+(z1-z_o)*(c1));
mv (x_o + (x2-x_o)*c1+(z1-z_o)*s1, y2, z_o + (x2-x_o)*(-s1)+(z1-z_o)*(c1));
dw (x_o + (x2-x_o)*c1+(z2-z_o)*s1, y2, z_o + (x2-x_o)*(-s1)+(z2-z_o)*(c1));
dw (x_o + (x3-x_o)*c1+(z2-z_o)*s1, y3, z_o + (x3-x_o)*(-s1)+(z2-z_o)*(c1));
mv (x_o + (x2-x_o)*c1+(z2-z_o)*s1, y2, z_o + (x2-x_o)*(-s1)+(z2-z_o)*(c1));
dw (x_o + (x1-x_o)*c1+(z2-z_o)*s1, y1, z_o + (x1-x_o)*(-s1)+(z2-z_o)*(c1));
mv (x_o + (x1-x_o)*c1+(z1-z_o)*s1, y1, z_o + (x1-x_o)*(-s1)+(z1-z_o)*(c1));
dw (x_o + (x4-x_o)*c1+(z1-z_o)*s1, y4, z_o + (x4-x_o)*(-s1)+(z1-z_o)*(c1));
dw (x_o + (x3-x_o)*c1+(z1-z_o)*s1, y3, z_o + (x3-x_o)*(-s1)+(z1-z_o)*(c1));
mv (x_o + (x4-x_o)*c1+(z1-z_o)*s1, y4, z_o + (x4-x_o)*(-s1)+(z1-z_o)*(c1));
dw (x_o + (x4-x_o)*c1+(z2-z_o)*s1, y4, z_o + (x4-x_o)*(-s1)+(z2-z_o)*(c1));
}.
void obrazujuschaja (void).
{.
mv (x_o + (x-x_o)*c1+(z-z_o)*s1, y1, z_o + (x-x_o)*(-s1)+(z-z_o)*c1);
dw (x_o + (x-x_o)*c1+(z-z_o)*s1, y2, z_o + (x-x_o)*(-s1)+(z-z_o)*c1);
}.
//—————————————————————————;
void drawing (void).
{.
coeff (rho, theta, phi);
setcolor (WHITE);
outtextxy (215,10," Press 1 to start animation");
if (colour≠0) setcolor (LIGHTBLUE);
//zveno1.
mv (0,0,0);dw (0,60,0);
dw (60,60,0);dw (60,0,0);
dw (0,0,0); dw (0,0,150+dz);
dw (0,60,150+dz);dw (60,60,150+dz);
dw (60,0,150+dz);dw (0,0,150+dz);
mv (0,60,0);dw (0,60,150+dz);
mv (60,60,0);dw (60,60,150+dz);
mv (60,0,0);dw (60,0,150+dz);
if (colour≠0) setcolor (LIGHTBLUE);
//zveno2.
a1=0; b1=0;
a2=200+dx1;b2=0;
a3=200+dx1;b3=60;
a4=0;b4=60;
z1=150; z2=180;
x_o=30;y_o=30;
parallelepiped ();
//grip.
if (colour≠0) setcolor (LIGHTMAGENTA);
//right section.
a1=200+dx1;b1=0+dx;
a2=200+dx1;b2=10+dx;
a3=230+dx1;b3=10+dx;
a4=230+dx1;b4=0+dx;
parallelepiped ();
// left section.
a1=200+dx1;b1=50-dx;
a2=200+dx1;b2=60-dx;
a3=230+dx1;b3=60-dx;
a4=230+dx1;b4=50-dx;
parallelepiped ();
if (colour≠0) setcolor (GREEN);
//stanina11.
mv (-240,150,0);dw (-240,240,0);
dw (-120,240,0);dw (-120,150,0);
dw (-240,150,0);dw (-240,150,150);
dw (-240,240,150);dw (-120,240,150);
dw (-120,150,150);dw (-240,150,150);
mv (-240,240,0);dw (-240,240,150);
mv (-120,240,0);dw (-120,240,150);
mv (-120,150,0);dw (-120,150,150);
//stanina12.
mv (-240,-120,0);dw (-240,-210,0);
dw (-120,-210,0);dw (-120,-120,0);
dw (-240,-120,0);dw (-240,-120,150);
dw (-240,-210,150);dw (-120,-210,150);
dw (-120,-120,150);dw (-240,-120,150);
mv (-240,-210,0);dw (-240,-210,150);
mv (-120,-210,0);dw (-120,-210,150);
mv (-120,-120,0);dw (-120,-120,150);
//stanina13.
mv (-240,150,40);dw (-240,-120,40);
dw (-120,-120,40);dw (-120,150,40);
dw (-240,150,40);dw (-240,150,60);
dw (-240,-120,60);dw (-120,-120,60);
dw (-120,150,60);dw (-240,150,60);
mv (-240,-120,40);dw (-240,-120,60);
mv (-120,-120,40);dw (-120,-120,60);
mv (-120,150,40);dw (-120,150,60);
if (colour≠0) setcolor (RED);
//patron.
x=-180; r=20; z=110;
mv (x+r, 150, z);
for (alfa=0;alfa<=720;alfa++).
dw (x+r*cos (alfa*3.14/360), 150, z+r*sin (alfa*3.14/360));
mv (x+r, 100, z);
for (alfa=0;alfa<=720;alfa++).
dw (x+r*cos (alfa*3.14/360), 100, z+r*sin (alfa*3.14/360));
x_o=-180;z_o=110;
y1=100; y2=150; x+=r;
obrazujuschaja ();
x-=2*r;
obrazujuschaja ();
x=-180; z+=r;
obrazujuschaja ();
z-=2*r;
obrazujuschaja ();
if (colour≠0) setcolor (LIGHTRED);
//babina.
mv (-210,0+dy2,90);dw (-210,-120,90);
dw (-150,-120,90);dw (-150,0+dy2,90);
dw (-210,0+dy2,90);dw (-210,0+dy2,130);
dw (-210,-120,130);dw (-150,-120,130);
dw (-150,0+dy2,130);dw (-210,0+dy2,130);
mv (-210,-120,90);dw (-210,-120,130);
mv (-150,-120,90);dw (-150,-120,130);
mv (-150,0+dy2,90);dw (-150,0+dy2,130);
if (colour≠0) setcolor (MAGENTA);
//pod babinoj.
mv (-200,50,60);dw (-200,10,60);
dw (-160,10,60);dw (-160,50,60);
dw (-200,50,60);dw (-200,50,80+dz4);
dw (-200,10,80+dz4);dw (-160,10,80+dz4);
dw (-160,50,80+dz4);dw (-200,50,80+dz4);
mv (-200,10,60);dw (-200,10,80+dz4);
mv (-160,10,60);dw (-160,10,80+dz4);
mv (-160,50,60);dw (-160,50,80+dz4);
if (colour≠0) setcolor (YELLOW);
//osnovanie rezca.
mv (-200,110,60);dw (-200,70,60);
dw (-160,70,60);dw (-160,110,60);
dw (-200,110,60);dw (-200,110,80);
dw (-200,70,80);dw (-160,70,80);
dw (-160,110,80);dw (-200,110,80);
mv (-200,70,60);dw (-200,70,80);
mv (-160,70,60);dw (-160,70,80);
mv (-160,110,60);dw (-160,110,80);
//rezec.
mv (-185,95,80);dw (-185,85,80);
dw (-175,85,80);dw (-175,95,80);
dw (-185,95,80);dw (-185,95,110);
dw (-185,85,100);dw (-175,85,100);
dw (-175,95,100);dw (-185,95,100);
mv (-185,85,80);dw (-185,85,100);
mv (-175,85,80);dw (-175,85,100);
mv (-175,95,80);dw (-175,95,100);
//konveyer.
if (colour≠0) setcolor (BLUE);
mv (240,-950,0);dw (240,940,0);
dw (120,940,0);dw (120,-950,0);
dw (240,-950,0);dw (240,-950,60);
dw (240,940,60);dw (120,940,60);
dw (120,-950,60);dw (240,-950,60);
mv (240,940,0);dw (240,940,60);
mv (120,940,0);dw (120,940,60);
mv (120,-950,0);dw (120,-950,60);
}.
void detal1(void).
{.
if (colour≠0) setcolor (LIGHTGREEN);
mv (190,-950+dy, 60+dz1);dw (190,-930+dy, 60+dz1);
dw (170,-930+dy, 60+dz1);dw (170,-950+dy, 60+dz1);
dw (190,-950+dy, 60+dz1);dw (190,-950+dy, 80+dz1);
dw (190,-930+dy, 80+dz1);dw (170,-930+dy, 80+dz1);
dw (170,-950+dy, 80+dz1);dw (190,-950+dy, 80+dz1);
mv (190,-930+dy, 60+dz1);dw (190,-930+dy, 80+dz1);
mv (170,-930+dy, 60+dz1);dw (170,-930+dy, 80+dz1);
mv (170,-950+dy, 60+dz1);dw (170,-950+dy, 80+dz1);
}.
void detal2(void).
{.
if (colour≠0) setcolor (LIGHTGREEN);
a1=20+dx2; b1=190+dy3;
a2=20+dx2; b2=170+dy3;
a3=40+dx2; b3=170+dy3;
a4=40+dx2; b4=190+dy3;
x_o=30;y_o=30;
z1=140+dz3+dz5;z2=160+dz3+dz5;
parallelepiped12();
}.
void detal3(void).
{.
if (colour≠0) setcolor (LIGHTGREEN);
x1=-190; y1=100;
x2=-190; y2=80;
x3=-170; y3=80;
x4=-170; y4=100;
x_o=-180;z_o=110;
z1=100;z2=120;
parallelepiped3();
}.
//————————————————————;
void rotate1(void).
{.
c1=cos (Rz*factor);
s1=sin (Rz*factor);
}.
//————————————————————;
void rotate2(void).
{.
s2=sin (Rz2*factor);
c2=cos (Rz2*factor);
}.
void rotate3(void).
{s3=sin (Rz3*factor);
c3=cos (Rz3*factor);
}.
//————————————————————;
void stcolour (void).
{.
colour=colour1;
}.
//???
void risovanie (void).
{.
setactivepage (n);
cleardevice ();
drawing ();
detal1();
setvisualpage (n);
n=n1;
}.
void risovanie2(void).
{.
setactivepage (n);
cleardevice ();
drawing ();
detal2();
setvisualpage (n);
n=n1;
}.
void risovanie3(void).
{.
setactivepage (n);
cleardevice ();
drawing ();
detal3();
setvisualpage (n);
n=n1;
}.
//!!!
void main (void).
{.
initgraph (&gd,&gm," «);
do.
{.
risovanie ();
t=getch ();
switch (t).
{.
case '1':for (dy=0;dy<969;dy+=5)risovanie ();
for (dx1=0;dx1>-35;dx1-=3) risovanie ();
for (Rz2=0;Rz2<91;Rz2+=3).
{.
rotate2();
risovanie ();
}.
for (dz=0;dz>-80;dz-=3) risovanie ();
for (dx=0;dx<9;dx+=2) risovanie ();
for (dz=-80,dz1=0;dz<0,dz1<80;dz+=3,dz1+=3) risovanie ();
for (Rz2=90,Rz3=0;Rz2>-91;Rz2-=3,Rz3-=3).
{.
rotate2(); rotate3(); risovanie2();
}.
for (dx1=-35;dx1<25;dx1+=3,dy3+=3) risovanie2();
for (dz=0;dz>-60;dz-=3,dz3-=3) risovanie2();
for (dx=9;dx>0;dx-=2) risovanie2();
for (dz=-60;dz<0;dz+=3) risovanie2();
for (dz4=0;dz4<20;dz4+=3,dz5+=3) risovanie2();
for (dy2=0;dy2<10;dy2+=3,dx2-=3) risovanie2();
for (dz4=20;dz4>0;dz4—) risovanie2();
for (dy2=10;dy2<80;dy2+=3,dx2+=3) risovanie2();
for (Rz=0;Rz<10 000;Rz+=100).
{.
rotate1(); risovanie3();
}.
for (dy2=80;dy2>10;dy2-=3,dx2-=3) risovanie2();
for (dz4=0;dz4<20;dz4++) risovanie2();
for (dy2=10;dy2>0;dy2-=3,dx2+=3) risovanie2();
for (dz4=20;dz4>0;dz4-=3,dz5-=3) risovanie2();
for (dz=0;dz>-60;dz-=3) risovanie2();
for (dx=0;dx<9;dx+=2) risovanie2();
for (dz=-60;dz<0;dz+=3,dz3+=3) risovanie2();
for (Rz2=-91,Rz3=-181;Rz2<90;Rz2+=3,Rz3+=3).
{.
rotate2();rotate3(); risovanie2();
}.
for (dx1=dx1;dx1>-35;dx1-=3,dy3-=3) risovanie2();
for (dz=dz;dz>-80;dz-=3,dz1-=3) risovanie ();
for (dx=9;dx>0;dx-=2) risovanie ();
for (dz=-80;dz<0;dz+=3) risovanie ();
for (dy=969;dy<1869;dy+=5) risovanie ();
case 't': if (Rz3>-91){ Rz3-=2;Rz2-=2; rotate2();rotate3();} break;
case '4': theta+=4; break;
case '6': theta-=4; break;
case '8': phi+=4; break;
case '2': phi-=4; break;
case '+': if (screen_dist<10 000) screen_dist+=100; break;
case '-': if (screen_dist>0) screen_dist-=100; break;
case 'n': if (dz>-90) dz-=3; break;
case 'm': if (dz<90) dz+=3; break;
case 'q': cx-=3; break;
case 'w': cx+=3; break;
case 'a': cy-=3; break;
case 's': cy+=3; break;
case 'e': if (dx<20) dx+=2; break;
case 'r': if (dx>0) dx-=2; break;
case '.': if (dy<1500) dy+=3; break;
case ',': if (dy>0) dy-=3; break;
case 'd': if (dy2>0) dy2-=3; break;
case 'f': if (dy2<100) dy2+=3; break;
case 'l': if (Rz2>-90) Rz2-=3; rotate2(); break;
case 'k': if (Rz2<90) Rz2+=3; rotate2(); break;
case 'v': Rz-=33; rotate1(); break;
case 'b': Rz+=33; rotate1(); break;
case 'c': stcolour (); break;
case 'z': if (dx1<1500) dx1+=3; break;
}.
}.
while (t≠0x1b);
closegraph ();
}.