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