Polyvector

Previous topic - Next topic

WPShadow

Hallo,

ich habe eine (etwas naive) Frage: Wie funktioniert die Kollisionsabfrage bei Polyvector? Wie genau kann ich die abfragen?

LG

W.
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Slydog

[Google Translate]
Polyvectors haben keine Kollisionsabfrage Methode.
Andere Leute haben polyvectors für die Geschwindigkeit Leistungen verwendet, während mit Standard-Sprite-Kollision Prüfungen für die Kollisionen.
Das heißt, Sie müssen auch über den Gegenwert geladen Sprites.

Ein POLYCOLLIDE Befehl wäre schön!
Aber da Polys nicht gezwungen sind, ein Rechteck, könnte die Mathematik ziemlich lahm.
Vielleicht eine besondere POLYCOLLIDE dass ein Rechteck übernimmt Poly Paar?


[Original English]
Polyvectors don't have a collision detection method.
Other people have used polyvectors for the speed benefits, while using standard sprite collision checks for the collisions. 
That means you also need to have the equivalent sprites loaded.

A POLYCOLLIDE command would be nice!
But since polys aren't forced to be a rectangle, the math could get pretty slow.
Maybe a special POLYCOLLIDE that assumes a rectangle poly pair?
My current project (WIP) :: TwistedMaze <<  [Updated: 2015-11-25]

WPShadow

Sounds bad! Than I will use Sprites for the gfx! thx!!!
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

WPShadow

SchranzOr --> entschuldige den Doppelpost!

Andere Frage: Da ich meine Strategie ändern muß, würde ich gerne 1 Sprite laden, mehrfach am Bildschirm darstellen und jedes Sprite als eigenes Kollisionsobjekt nutzen. Geht das irgendwie???
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

monono

Wenn du die mit Polyvector arbeitest, wirst du ja sehr wahrscheinlich die Koordinaten für die Ecken haben. Da du, laut eigenen Aussagen das ganze auch mit Sprites lösen kannst, wirst du nur convexe Polygone haben. Dann kannst du testen ob ein Punkt in dem Polygon ist. Testet man also alle Ecken des einen, ob sie in dem anderen sind und umgekehrt, hat man einen Hittest. Also in etwa so

Code (glbasic) Select

// returns true if x,y in polygon x1,y1;x2,y2...
        IF ((y - y1) * (x2 - x1)) - ((x - x1) * (y2 - y1)) <= 0 THEN RETURN FALSE
IF ((y - y2) * (x3 - x2)) - ((x - x2) * (y3 - y2)) <= 0 THEN RETURN FALSE
IF ((y - y3) * (x4 - x3)) - ((x - x3) * (y4 - y3)) <= 0 THEN RETURN FALSE
IF ((y - y4) * (x1 - x4)) - ((x - x4) * (y1 - y4)) <= 0 THEN RETURN FALSE
RETURN TRUE



Wenn die Eckkoordinaten sowiso vorberechnet werden, ist die Geschwindigkeit annehmbar.

WPShadow

Hey, das ist eine super Lösung! Soweit habe ich nun selbst nicht gedacht!  :)

Danke sehr! Damit wäre das Problem voraussichtlich gelöst! Mache mich daheim sofort an die Arteit!  :booze:
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est