Помощь в написании студенческих работ
Антистрессовый сервис

Результаты вычислительного эксперимента

РефератПомощь в написанииУзнать стоимостьмоей работы

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 ();

}.

Показать весь текст
Заполнить форму текущей работой