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

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

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

> Z-буффер, Как им пользоваться?
XaMMaX
сообщение 19.09.2006 20:00
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 85
Пол: Мужской
Реальное имя: max

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


Вот надо отрисовать куб и что бы он отображался правильно тоесть задние части не видны =) Но не знаю как пользоваться z-буффером помогите пожалуйста!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
XaMMaX
сообщение 20.09.2006 22:23
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 85
Пол: Мужской
Реальное имя: max

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


program My_3D;
uses graph,crt;
const max=100;

procedure calc(var x,y,z,xt,yt,zt,xan,yan,zan:real); {поворот}
begin
Yt:= Y * COS(Xan) - Z * SIN(Xan);
Zt:= Y * SIN(Xan) + Z * COS(Xan);
Y:= Yt;
Z:= Zt;
Xt:= X * COS(Yan) - Z * SIN(Xan);
Zt:= X * SIN(Yan) + Z * COS(Xan);
X:= Xt;
Z:= Zt;
Xt:= X * COS(Zan) - Y * SIN(Zan);
Yt:= X * SIN(Zan) + Y * COS(Zan);
X:= Xt;
Y:= Yt;

end;

var
gd,gm,i,i1,color:integer;
modelx4,modely4,modelz4,modelx1,modely1,modelz1,modelx2,modely2,modelz2,modelx3,
modely3,modelz3:array[1..max] of real;
xan,yan,zan:real;
yt,xt,zt:real;
sx1,sx2,sx3,sx4,sy1,sy2,sy3,sy4,sz1,sz2,sz3,sz4:integer;
arr: array[1 .. 8] of integer;
modelfile:text;
path:string;
zoom:integer;
begin
gd:=detect;initgraph(gd,gm,'C:\bp\bgi');

xan:=0.03; {сила поворота =) }
yan:=0.03;
zan:=0.03;

zoom:=50;

path:='cube.dat'; {загрузка файла}
assign(modelfile,path);
reset(modelfile);
readln(modelfile,i);

for i1:=1 to i do {складываем числа из файла в массивы с учётом того что мы будем рисовать по квадрату из 4 точек}
begin
readln(modelfile,modelx1[i1],modely1[i1],modelz1[i1],modelx2[i1],modely2[i1],mod
elz2[i1],
modelx3[i1],modely3[i1],modelz3[i1],modelx4[i1],modely4[i1],modelz4[i1]);
end;

repeat

setcolor(white);
for i1:=1 to i do {расчёт и отрисовка}
begin
calc(modelx1[i1],modely1[i1],modelz1[i1],xt,yt,zt,xan,yan,zan);
calc(modelx2[i1],modely2[i1],modelz2[i1],xt,yt,zt,xan,yan,zan);
calc(modelx3[i1],modely3[i1],modelz3[i1],xt,yt,zt,xan,yan,zan);
calc(modelx4[i1],modely4[i1],modelz4[i1],xt,yt,zt,xan,yan,zan);
sx1:=round(zoom*modelx1[i1])+320;
sy1:=round(zoom*modely1[i1])+240;
sx2:=round(zoom*modelx2[i1])+320;
sy2:=round(zoom*modely2[i1])+240;
sx3:=round(zoom*modelx3[i1])+320;
sy3:=round(zoom*modely3[i1])+240;
sx4:=round(zoom*modelx4[i1])+320;
sy4:=round(zoom*modely4[i1])+240;
line(sx1,sy1,sx2,sy2);
line(sx2,sy2,sx3,sy3);
line(sx3,sy3,sx4,sy4);
line(sx4,sy4,sx1,sy1);
arr[1]:=sx1;
arr[2]:=sy1;
arr[3]:=sx2;
arr[4]:=sy2;
arr[5]:=sx3;
arr[6]:=sy3;
arr[7]:=sx4;
arr[8]:=sy4;
color:=i1;
setfillstyle(1,color);
fillpoly(4,arr);
end;

delay(1000);

setcolor(black); {стирание}
for i1:=1 to i do
begin
sx1:=round(zoom*modelx1[i1])+320;
sy1:=round(zoom*modely1[i1])+240;
sx2:=round(zoom*modelx2[i1])+320;
sy2:=round(zoom*modely2[i1])+240;
sx3:=round(zoom*modelx3[i1])+320;
sy3:=round(zoom*modely3[i1])+240;
sx4:=round(zoom*modelx4[i1])+320;
sy4:=round(zoom*modely4[i1])+240;
line(sx1,sy1,sx2,sy2);
line(sx2,sy2,sx3,sy3);
line(sx3,sy3,sx4,sy4);
line(sx4,sy4,sx1,sy1);
arr[1]:=sx1;
arr[2]:=sy1;
arr[3]:=sx2;
arr[4]:=sy2;
arr[5]:=sx3;
arr[6]:=sy3;
arr[7]:=sx4;
arr[8]:=sy4;
setfillstyle(1,black);
fillpoly(4,arr);
end;

until keypressed;
closegraph;
end.

Как здесь отсортировать? wub.gif Мне кажется или придётся тут всё менять nea.gif Плиз помогите мысли перестали поступать в мою голову =)

Сообщение отредактировано: volvo - 2.11.2006 13:37
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
XaMMaX   Z-буффер   19.09.2006 20:00
Malice   Для того чтобы отобразить куб, Z-буфер использоват...   19.09.2006 20:28
XaMMaX   Очень сложный для меня пример ещё и с ассемблером...   20.09.2006 16:12
Malice   Очень сложный для меня пример ещё и с ассемблеро...   20.09.2006 17:02
XaMMaX   Блин, а чё fillpoly только с массивами работает =(...   20.09.2006 18:21
Malice   Блин, а чё fillpoly только с массивами работает =...   20.09.2006 19:27
volvo   Ну, и в чем проблема? :) Про директиву Absolute ...   20.09.2006 19:22
XaMMaX   Это очень просто реализовать. Но если ты не можешь...   20.09.2006 21:56
XaMMaX   Ну вообщем закрашивать получилось теперь надо реши...   20.09.2006 22:07
XaMMaX   program My_3D; uses graph,crt; const max=100; pro...   20.09.2006 22:23
Coder_perm   XaMMaX, Когда-то давным давно, когда ещё не было г...   21.09.2006 8:29
XaMMaX   Спасибо, а то я сварганил, но чего-то не помjгло н...   22.09.2006 18:46
XaMMaX   Я вас прошу помогите в понедельник надо отдавать п...   23.09.2006 10:18
Mlc   А в чем сокраментальный смысл вот этих строк: m...   23.09.2006 16:25
Гость   Блин какой я идиот =( Спасибо большое действительн...   23.09.2006 18:36
XaMMaX   Блин не помогает min:=1; repeat for i1:=1 to i-1...   23.09.2006 19:06
Гость   Ну кто-нибудь завтра уже понедельник =( Плизз помо...   24.09.2006 9:50
Malice   1. сортировать по удаленности грани нужно только _...   24.09.2006 10:26
Гость   Спасибо щас попробую =) Если чего отпишусь =)   24.09.2006 17:41
Гость   Блин чё-то вроде сортировку сворганил онаработает ...   24.09.2006 22:05
Гость   Интересный цикл: :) for i1:=1 to i-1 do fo...   25.09.2006 8:06
XaMMaX   Вообщем понятно почему так происходит так что дума...   24.09.2006 22:18
XaMMaX   Спасибо конечно , но сути проблемы это не решает =...   25.09.2006 18:27
Malice   Спасибо конечно , но сути проблемы это не решает ...   26.09.2006 12:41
XaMMaX   Ух ты и правда проблема в этом и была!! Сп...   26.09.2006 14:54
Coder_perm   XaMMaX, вот я и порылся в архивах, как обещал. При...   28.09.2006 8:06
XaMMaX   Ух ты класс =) Только действительно сложно для мое...   28.09.2006 15:13


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

 



- Текстовая версия 21.07.2025 21:37
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"