Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2010, 00:47   #1
Вячеславик
 
Регистрация: 27.04.2010
Сообщений: 3
Лампочка GDI: графика в Delphi.

Здравствуйте уважаемые программисты!
Прошу совета или помощи!
Тема такая... (Облёт тела по заданной траектории)
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.
Вячеславик вне форума Ответить с цитированием
Старый 27.04.2010, 16:30   #2
Вячеславик
 
Регистрация: 27.04.2010
Сообщений: 3
По умолчанию

Да и никто прям не знает о чем речь идёт!!!
Вячеславик вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графика в 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