problem mit rect Kollision bei Rotation von triangle ??

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Silbersurfer

Betreff: problem mit rect Kollision bei Rotation von triangle ??

BeitragMo, Okt 04, 2010 10:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute,

Ich habe ein problem mit meiner selbsgeschrieben rect Kollisions abfrage...

in großen und ganzen läuft sie recht gut, solange ich nicht die 2 Triangle (Quad)
rotieren lasse.

was ich auch soweit nachvollziehen kann da sich die start und end Kordinaten ja überschneiden und zuletzt vertauschen

meine Frage an euch wie kann ich das Problem lösen stehe da momentan auf den schlauch...

hier ist meine funktion dazu...

Code: [AUSKLAPPEN]
Function is_rect_kollision_bob#(id)
    If id=0 Then Return
    bob.bob=Object.bob(id)
    If bob.bob=Null Return

    ;punkt 0 x,y Kordinaten übergeben

    X#=VertexX (bob\Surface,bob\v[0])
    y#=Abs(VertexY (bob\Surface,bob\v[0]))

    ;punkt 1 x,y Kordinaten übergeben

    X1#=VertexX (bob\Surface,bob\v[1])
    y1#=Abs(VertexY (bob\Surface,bob\v[1]))

    ;punkt 2 x,y Kordinaten übergeben

    X2#=VertexX (bob\Surface,bob\v[2])
    y2#=Abs(VertexY (bob\Surface,bob\v[2]))

    ;punkt 3 x,y Kordinaten übergeben

    X3#=VertexX (bob\Surface,bob\v[3])
    y3#=Abs(VertexY (bob\Surface,bob\v[3]))
     
    ; alle weiteren Bob´s überprüfen ob einen Kollision stattgefunden hat
   
    For bob.bob=Each bob
        ;punkt 0 x,y Kordinaten übergeben

        Xx#=VertexX (bob\Surface,bob\v[0])
        yy#=Abs(VertexY (bob\Surface,bob\v[0]))

        ;punkt 1 x,y Kordinaten übergeben 
 
        Xx1#=VertexX (bob\Surface,bob\v[1])
        yy1#=Abs(VertexY (bob\Surface,bob\v[1]))

        ;punkt 2 x,y Kordinaten übergeben
   
        Xx2#=VertexX (bob\Surface,bob\v[2])
        yy2#=Abs(VertexY (bob\Surface,bob\v[2]))

        ;punkt 2 x,y Kordinaten übergeben

        Xx3#=VertexX (bob\Surface,bob\v[3])
        yy3#=Abs(VertexY (bob\Surface,bob\v[3]))

        ;abfragen aller Vertex ob sie sich überschneiden

        ;punkt 0
        If x>xx And x<xx1
            If y>yy And y<yy2
                Return 1
            EndIf
        EndIf

        ;punkt 1
        If x1>xx And x1<xx3
            If y1>yy And y1<yy3
                Return 1
            EndIf
        EndIf

        ;punkt 2
        If x2>xx And x2<xx1
            If y2>yy And y2<yy2
                Return 1
            EndIf
        EndIf

        ;punkt 3
        If x3>xx And x3<xx3
            If y3>yy And y3<yy3
                Return 1
            EndIf
        EndIf             
    Next
End Function   


Ich hoffe das mir da einer weiterhelfen kann

gruss Silbersurfer
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Okt 04, 2010 11:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Suche nach Line Intersect und Inside Quad -Abfragen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group