![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 27.04.2010
Сообщений: 3
|
![]()
Здравствуйте уважаемые программисты!
Прошу совета или помощи! Тема такая... (Облёт тела по заданной траектории) 1). Создал форму в делфи добавил компонент TPaintBox и Кнопку... 2). Нарисовал с помощью библиотеки (GDI) линиями фигуру (квадрат объемный...),,, procedure TForm1.Button1Click(Sender: TObject); begin //Построение каркаса квадрата... PaintBox1.Canvas.LineTo(0, 100); PaintBox1.Canvas.LineTo(100,100); PaintBox1.Canvas.LineTo(100,0); PaintBox1.Canvas.LineTo(0,0); PaintBox1.Canvas.LineTo(35,35); PaintBox1.Canvas.LineTo(35,135); PaintBox1.Canvas.LineTo(0,100); PaintBox1.Canvas.MoveTo(35,35); PaintBox1.Canvas.LineTo(135,35); PaintBox1.Canvas.LineTo(100,0); PaintBox1.Canvas.MoveTo(35,135); PaintBox1.Canvas.LineTo(135,135); PaintBox1.Canvas.LineTo(135,35); PaintBox1.Canvas.MoveTo(135,135); PaintBox1.Canvas.LineTo(135,135); PaintBox1.Canvas.LineTo(100,100); end; 3). Вопрос такой как заставить крутиться этот объект по определенной траектории... 4). Есть такая же программа только написанная на Паскале... пытался перевести С Паскаля на Делфи, но пока опыта мало! 5). Вот эта программа(мож кто по ней сможет объяснить), Впринципе внешний видон пойдет, вот только нужно сделать что - то наподобии на Делфи... PROGRAM lab5; uses graph,crt; const n=8; type v=array [1..4] of real;mat=array [1..4,1..4] of real; matob=array [1..n] of v; const t:matob=((200,200,200,1),(300,200,2 00,1),(300,300,200,1),(200,300,200, 1), (200,200,100,1),(300,200,100,1),(30 0,300,100,1),(200,300,100,1)); m:mat=((1,0,0,0),(0,1,0,0),(0,0,1,0 ),(0,0,0,1)); e:mat=((1,0,0,0),(0,1,0,0),(0.35,-0.35,0,0),(0,0,0,1)); var mm:mat;pt:matob;i:byte;dr,reg,u:int eger;smx,smy,x,y:real; procedure draw(ot:matob;cv:byte); var i:byte; procedure lin(oo:matob;p,q:byte); begin line(trunc(oo[p,1]),trunc(oo[p,2]),trunc(oo[q,1]),trunc(oo[q,2])); end; begin setcolor(cv); for i:=1 to n div 2-1 do lin(ot,i,i+1); lin(ot,1,4); for i:=n div 2+1 to n-1 do lin(ot,i,i+1); lin(ot,n div 2+1,n); for i:=1 to 4 do lin(ot,i,i+4); end; procedure mult(a:v;b:mat;var pv:v); var i,j:byte; begin for j:=1 to 4 do begin pv[j]:=0;for i:=1 to 4 do pv[j]:=pv[j]+a[i]*b[i,j] end; if pv[4]<>1 then for i:=1 to 4 do pv[i]:=pv[i]/pv[4] end; procedure povorot(ugol:integer); var p:real; begin p:=ugol*2*pi/360; m[2,2]:=cos(p);m[2,3]:=sin(p);m[3,2]:=-sin(p);m[3,3]:=cos(p) end; procedure sme(sx,sy,sz:real); begin for i:=1 to n do begin t[i,1]:=t[i,1]+sx;t[i,2]:=t[i,2]+sy;t[i,3]:=t[i,3]+sz end end; procedure mas(mx,my,mz:real); begin m[1,1]:=mx;m[2,2]:=my;m[3,3]:=mz end; begin dr:=detect; initgraph(dr,reg,'') ; setbkcolor(15); for i:=1 to n do mult(t[i],e,pt[i]); draw(pt,red); readln; repeat sme(-200,-300,-200); povorot(2); for i:=1 to n do mult(t[i],m,t[i]); sme(200,300,200); for i:=1 to n do mult(t[i],e,pt[i]); draw(pt,blue); delay(100); cleardevice; until keypressed; closegraph; end. |
![]() |
![]() |
![]() |
#2 |
Регистрация: 27.04.2010
Сообщений: 3
|
![]()
Да и никто прям не знает о чем речь идёт!!!
![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Графика в Delphi | Silent_Hell | Помощь студентам | 2 | 29.04.2009 13:21 |
Начал делать игру и застрял... GDI-графика | CyberOrcX | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 11 | 20.10.2008 08:54 |
GDI+ в Delphi | BOBAH13 | Мультимедиа в Delphi | 2 | 04.10.2008 13:45 |
GDI+ и альфа канал в Delphi for Win32 | murtix | Мультимедиа в Delphi | 2 | 06.10.2007 00:09 |