| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Обсуждение работы > Вращающейся куб |
| Автор: Delphin 6.10.2002, 19:21 |
| Ребята пожайлуста помогите!!! Сражу предупреждаю работа за спасибо, так как денег нет. Нужно сделать программу на паскалее с помощью графа. На играни должен появляться куб, которым бы я мог управлять с помощью курсоров: вверх - куб поварачивается снизу вверх, и т.д. нужна не срочно, но желательно по быстрее. Кто откликнется пишити на личную почту!!! Заранее благодарен... |
| Автор: Vex 6.10.2002, 23:43 |
| У меня был исходник на паскале, там тоже вращающийся куб, правда написан только с помощью CRT, вещь классная, если хочешь, я на мыло тебе скину. Можешь переделать под свои нужды. Исходник написал не я потому это бесплатно. |
| Автор: Devos 7.10.2002, 05:39 | ||
|
| Автор: Vex 7.10.2002, 05:49 | ||||
Ну ведь раздел работа называется. |
| Автор: Chingachguk 7.10.2002, 06:32 | ||
Вращающийся куб - это было одно из первых моих "творений", когда я учился программировать(только чур не смеяться !):
|
| Автор: Delphin 11.10.2002, 17:21 |
| всем спасибо, буду проверять, если че снова к вам |
| Автор: Delphin 14.10.2002, 15:51 |
| Chingachguk Твой код конечно работает бе проблем, но дело в том, что мне нужна прога вращением куба в которой я бы мог управлять курсороми клавы. Если не трудно подскажи как будет. |
| Автор: Chingachguk 17.10.2002, 01:43 |
| Счас я на работе да и нету под рукой графических библиотек (graph.tpu). Если будет время на выходных - попробую сделать... |
| Автор: Delphin 18.10.2002, 23:11 | ||
Буду ждать.... |
| Автор: MuToGeN 19.10.2002, 00:48 | ||
блин, я на паскале когда-то (очень давно) писал примитивный 3д-шный движок. был тормозной, но работал. исходники год назад где-то прое...л. обидно... |
| Автор: Chingachguk 21.10.2002, 16:54 | ||
Да, я начал делать, но я решил переписать все заново потому, что тот бред я не в силах поправить ... |
| Автор: Chingachguk 4.11.2002, 04:03 |
| Вот, держи. Правда, без закраски ;) uses graph,crt; const d = 50; color = 14; type vector = array[1..3] of real; const cubic: array[1..8,1..3] of integer = (( 1, 1,-1),( 1, 1, 1),( 1,-1, 1),( 1,-1,-1), (-1, 1,-1),(-1, 1, 1),(-1,-1, 1),(-1,-1,-1)); S_XYZ: array[1..3] of integer = (240,200,200); a0: vector = (0,Pi/2,d); b0: vector = (Pi/2,Pi/2,d); c0: vector = (0,0,d); var regim,driver: integer; key: char; i,j,p1,p2: integer; tempY,tempZ: real; phi,teta: real; a,b,c: vector; x,y,z: array[1..3] of real; points: array[1..8,1..3] of integer; begin driver:=detect; initgraph(driver,regim,'c:\tp\bgi'); outtextxy(245,420,'DEAD WORLD INC.'); outtextxy(230,450,'PRESS ESC TO EXIT'); phi:=0; teta:=0; repeat setcolor(0); setfillstyle(1,0); bar(100,40,500,300); {Поворот в плоскости XY на угол phi} a[1]:=a0[3]*cos(a0[1]+phi)*sin(a0[2]); a[2]:=a0[3]*sin(a0[1]+phi)*sin(a0[2]); a[3]:=a0[3]*cos(a0[2]); b[1]:=b0[3]*cos(b0[1]+phi)*sin(b0[2]); b[2]:=b0[3]*sin(b0[1]+phi)*sin(b0[2]); b[3]:=b0[3]*cos(b0[2]); c[1]:=c0[3]*cos(c0[1]+phi)*sin(c0[2]); c[2]:=c0[3]*sin(c0[1]+phi)*sin(c0[2]); c[3]:=c0[3]*cos(c0[2]); {Поворот в плоскости YZ на угол teta} tempY:=a[2]; tempZ:=a[3]; a[2]:=tempY*cos(teta)+tempZ*sin(teta); a[3]:=tempY*sin(teta)+tempZ*cos(teta); tempY:=b[2]; tempZ:=b[3]; b[2]:=tempY*cos(teta)+tempZ*sin(teta); b[3]:=tempY*sin(teta)+tempZ*cos(teta); tempY:=c[2]; tempZ:=c[3]; c[2]:=tempY*cos(teta)+tempZ*sin(teta); c[3]:=tempY*sin(teta)+tempZ*cos(teta); for i:=1 to 8 do for j:=1 to 3 do points[i,j]:=S_XYZ[j]+round(cubic[i,1]*a[j]+cubic[i,2]*b[j]+cubic[i,3]*c[j]); setcolor(color); for i:=1 to 4 do begin p1:=i; p2:=i+1; if p2>4 then p2:=1; line(points[p1,1],points[p1,2],points[p2,1],points[p2,2]); line(points[p1+4,1],points[p1+4,2],points[p2+4,1],points[p2+4,2]); line(points[p1,1],points[p1,2],points[p1+4,1],points[p1+4,2]); end; key:=readkey; if key=#77 then phi:=phi-Pi/9; if key=#75 then phi:=phi+Pi/9; if key=#72 then teta:=teta-Pi/9; if key=#80 then teta:=teta+Pi/9; until key=#27; closegraph; end. |
| Автор: Delphin 4.11.2002, 06:14 |
| Спасибо;=) Щас попробую сделать чтобы невидимые линии были --------.. если что - опять сюда |
| Автор: Delphin 11.11.2002, 03:36 |
| блн, что то не получается.. слушайте, а можно сделать невидимые линии в виде пунктиров и вращение по оси yz не колебательно а по кругу , как по оси xy...? |
| Автор: MuToGeN 15.11.2002, 18:11 | ||
это делается с помощью матрицы глубины. т.е. для каждого пикселя на экране просчитываешь координату Z того, что на этом пикселе отображается. и когда уже окончательно рисуешь, то проверяешь по этой матрице, "верхний" это элемент или нет. |