Шустрый

Профиль
Группа: Участник
Сообщений: 66
Регистрация: 30.3.2008
Репутация: нет Всего: нет
|
В универе дали такое задание: написать программу изображения многогранника, вращающегося вокруг осу ОУ. Фигура гексаэдр (куб). Как сделать, чтобы невидно было невидимых линий. И грани рисовать закрашенными разными цветами. Куб сделать сделала, а вот дальше не знаю как. | Код | program Paralel; USES Crt, Graph; VAR Gd, Gm: Integer; par: array[1..8, 1..3] of real; rebra: array[1..12, 1..2] of integer; i: integer; ch: char;
PROCEDURE Draw; VAR x1,x2,y1,y2: integer; ver1,ver2: integer; BEGIN For i:=1 To 12 Do Begin ver1:=rebra[i,1]; ver2:=rebra[i,2]; x1:=round(par[ver1,1])+320; y1:=240-round(par[ver1,2]); x2:=round(par[ver2,1])+320; y2:=240-round(par[ver2,2]); line(x1,y1,x2,y2); End; END;
PROCEDURE VrachOX(Ugol: real); VAR y,z: real; BEGIN For i:=1 To 8 Do Begin y:=par[i,2]; z:=par[i,3]; par[i,2]:=y*cos(Ugol)-z*sin(Ugol); par[i,3]:=y*sin(Ugol)+z*cos(Ugol); End; End;
PROCEDURE VrachOY(Ugol: real); VAR x,z: real; BEGIN For i:=1 To 8 Do Begin x:=par[i,1]; z:=par[i,3]; par[i,1]:=x*cos(Ugol)+z*sin(Ugol); par[i,3]:=-x*sin(Ugol)+z*cos(Ugol); End; END;
PROCEDURE VrachOZ(Ugol: real); VAR x,y: real; BEGIN For i:=1 To 8 Do Begin x:=par[i,1]; y:=par[i,2]; par[i,1]:=x*cos(Ugol)-y*sin(Ugol); par[i,2]:=x*sin(Ugol)+y*cos(Ugol); End; END;
BEGIN
par[1,1]:=0; par[1,2]:=0; par[1,3]:=0; par[2,1]:=0; par[2,2]:=110; par[2,3]:=0; par[3,1]:=175; par[3,2]:=110; par[3,3]:=0; par[4,1]:=175; par[4,2]:=0; par[4,3]:=0; par[5,1]:=0; par[5,2]:=0; par[5,3]:=150; par[6,1]:=0; par[6,2]:=110; par[6,3]:=150; par[7,1]:=175; par[7,2]:=110; par[7,3]:=150; par[8,1]:=175; par[8,2]:=0; par[8,3]:=150;
rebra[1,1]:=1; rebra[1,2]:=2; rebra[2,1]:=2; rebra[2,2]:=3; rebra[3,1]:=3; rebra[3,2]:=4; rebra[4,1]:=4; rebra[4,2]:=1; rebra[5,1]:=5; rebra[5,2]:=6; rebra[6,1]:=6; rebra[6,2]:=7; rebra[7,1]:=7; rebra[7,2]:=8; rebra[8,1]:=8; rebra[8,2]:=5; rebra[9,1]:=1; rebra[9,2]:=5; rebra[10,1]:=2; rebra[10,2]:=6; rebra[11,1]:=3; rebra[11,2]:=7; rebra[12,1]:=4; rebra[12,2]:=8;
Gd:= detect; Initgraph(Gd, Gm, 'c:\Bp\bgi'); If GraphResult <> grOk Then Halt(1);
SetBkColor(Black); ClearDevice; VrachOX(pi/12); VrachOY(pi/12); VrachOZ(pi/12); While ch<>#27 Do Begin ClearDevice; Draw; OuttextXY(10,450,'Press <1> for rotation'); OuttextXY(10,465,'Press <Esc> to Exit'); ch:=readkey; Case ch Of '1': VrachOY(pi/15); End; End; CloseGraph; END.
|
|