GLBasic forum

Other languages => GLBasic - de => Topic started by: WPShadow on 2010-Nov-26

Title: Polyvector
Post by: WPShadow on 2010-Nov-26
Hallo,

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

LG

W.
Title: Re: Polyvector
Post by: Slydog on 2010-Nov-26
[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?
Title: Re: Polyvector
Post by: WPShadow on 2010-Nov-26
Sounds bad! Than I will use Sprites for the gfx! thx!!!
Title: Re: Polyvector
Post by: WPShadow on 2010-Nov-26
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???
Title: Re: Polyvector
Post by: monono on 2010-Nov-27
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.
Title: Re: Polyvector
Post by: WPShadow on 2010-Nov-27
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: