IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Вращение фигуры в Паскале (графика)
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 25
Пол: Женский
Реальное имя: Анисия

Репутация: -  0  +


В универе дали такое задание: написать программу изображения многогранника, вращающегося вокруг осу ОУ. Фигура гексаэдр (куб).
Куб сделать сделала, а вот дальше не знаю как. Как сделать, чтобы невидно было невидимых линий. И грани рисовать закрашенными разными цветами.
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.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


3d графика. АЗЫ для написания с нуля.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 8:21
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name