Облёт тела по заданной траектории...

Тема в разделе "Delphi - Multimedia, Графика, Игры", создана пользователем -, 24 апр 2010.

Статус темы:
Закрыта.
  1. Гость

    Здравствуйте... Может кто-нить разъяснить что такое -=Облёт тела по заданной траектории=- так чтоб было образно понятно...Просто дали задание разработать данный модуль... Можно ли это сделать на Delphi 7?
     
  2. Гость

    Нашел вот этот текст программы созданной в Паскале (вроде то что надо)...

    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,200,1),(300,300,200,1),(200,300,200,1),
    (200,200,100,1),(300,200,100,1),(300,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:integer;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*b[i,j]
    end;
    if pv[4]<>1 then
    for i:=1 to 4 do
    pv:=pv/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,e,pt);
    draw(pt,red);
    readln;
    repeat
    sme(-200,-300,-200);
    povorot(2);
    for i:=1 to n do
    mult(t,m,t);
    sme(200,300,200);
    for i:=1 to n do
    mult(t,e,pt);
    draw(pt,blue);
    delay(100);
    cleardevice;
    until keypressed;
    closegraph;
    end.
    Но как эту программу прописать в делфи с помощью какова компонента это всё реализовать???
    Так чтоб было всё выполнено в Виндовс форме... Чтоб также крутился этот квадрат???
     
  3. VahaC

    VahaC Well-Known Member

    Регистрация:
    10 янв 2007
    Сообщения:
    116
    Симпатии:
    0
    Брось на форму TPaintBox и рисуй на его канве (TPaintBox.Canvas)
    Подробно о работе с канвой здесь
     
  4. Гость

    Спасибо за совет буду пробовать....
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей