Skocz do zawartości

Metoda Sat, port na Delphi


Toster

Polecane posty

Jakos ostatnio wyszlo tak ze potrzebna mi byla metoda sat, i postanowilem sportowac kod Polycolly na Delphi. Wzialem przyklad 7 i przeklepalem go na TD. Ponizej link jakby kogos interesilo. Jesli juz ktos sie zainteresi to od razu ostrzegam ze nie wszystko wyglada na dobrze dzialajace, wiec jak ktos bedzie na tyle szalony aby pogrzebac w tym i znajdzie jakies babole to chetnie zalacze jego patch.

 

Tutaj zrodelka: http://thetosters.pl/metoda_sat

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Hmmm ale się napracowałeś ostro muszę przyznać :D

Też kiedyś z tego tutorialu pisałem SAT tyle że z własnymi poprawkami pod gotowy silnik fizyczny i bardzo przebudowany. Jeśli chcesz mogę Ci podrzucić źródła phyluma2D tam wszystko działa ok to sobie poprzeglądasz. Komentarzy dla kolizji jest bardzo dużo to może coś da się z tego wyciągnąć.

 

Ogólnie metodę opisaną w tym tutorialu można bardzo uprościć :)

Przeglądałem kod ale jest tego dożo i musiał bym się bardziej zagłebić, może troche później :)

www.spider.dathox.com :)

Link do komentarza
Udostępnij na innych stronach

Dzieki pomocy kompustelnika mamy ciut nowsza wersje, a w niej:

- Zmodyfikowany plik MyVector.pas

- Podpięcie pod OpenGL

- Zmodyfikowany sposób renderingu

 

Spider: zbieram kod moze kiedys do czegos mi sie przyda, przy czym od razu mowie ze GPL mnie tylko interesi :D

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Elo.

 

Jeśli komuś się ma przydać to łapcia:

Physic.pas

 

Taki mały dodatek ;)

 

Pozdrawiam ;)

 

Edit:

 

Przykład wykorzystania jakby co ;)

 

//Inicjalizacja:
               World:= TWorld.Create(Vector(0.0, 9.80665), 0.55, 0.4, 0.2);

               dbg_UseFriction:= True;

               SetLength(Shape, 5);

               Shape[0]:= Vector(-16.0, -16.0);
               Shape[1]:= Vector(16.0, -16.0);
               Shape[2]:= Vector(16.0, 16.0);
               Shape[3]:= Vector(-16.0, 16.0);
               Shape[4]:= Vector(-24.0, 0.0);

               body:= TSATBody.Create(Shape, 10);
               body.Position:= Vector(128.0, 128.0);

               World.AddBody(body);

               Shape:= nil;
               SetLength(Shape, 4);

               Shape[0]:= Vector(0.0, 0.0);
               Shape[1]:= Vector(320.0, 64.0);
               Shape[2]:= Vector(320.0, 96.0);
               Shape[3]:= Vector(0.0, 96.0);

               body:= TSATBody.Create(Shape, 0.0);
               body.Position:= Vector(0.0, 320.0);

               World.AddBody(body);

               Shape[0]:= Vector(0.0, 0.0);
               Shape[1]:= Vector(256.0, 0.0);
               Shape[2]:= Vector(256.0, 32.0);
               Shape[3]:= Vector(0.0, 32.0);

               body:= TSATBody.Create(Shape, 0.0);
               body.Position:= Vector(320.0, 384.0);

               World.AddBody(body);

//*********************************************

//Rendering(tylko OGL)
 For i:= 0 to World.GetNumBodies -1 do
  World.DrawBody(World.GetBody(i));

//*********************************************

//W pętli głównej
World.Update(dt);

Pisze programy na zlecenia. Tanio!

Delphi, Pascal.

Kontakt:

- (gg) 736483

- (email) kondor20@op.pl light92@o2.pl

- Strona domowa

Wszystko do uzgodnienia.

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...