Quads pürfen

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

ToeB

Betreff: Quads pürfen

BeitragMi, März 10, 2010 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich arbeite grad ein wenig mit der Draw3D2Beta, und ich wollte mal fragen, wie kann ich einen Punkt pürfen ob der in einem Quad liegt ?

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

Macintosh

BeitragMi, März 10, 2010 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
sry, aber was ist pürfen ;?

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, März 10, 2010 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Draw3D2-Beta hat eine Funktion mit dem Namen CheckQuad3D. Wichtig ist nur, dass man ein Handleparameter übergibt. Sonst kann die Draw3D2 mit den Koordinaten nichts anfangen.

Ansonsten gibt es auch jede Menge Code hier im Forum, welche ein True zurück geben, sobal eine Koordinate sich innerhalb eines Quads befindet.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

ToeB

BeitragMi, März 10, 2010 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja danke, jetzt bin ich wieder so schlau wie vorher ... Ich wollte ja nicht die Maus auf ein Quad abfragen, sondern einen punkte der verschieden sein kann... dafür hab ich mal so ne DrawQuad23D funtion geschrieben :
Code: [AUSKLAPPEN]
Function CheckQuad23D(xpos#,ypos#,FDrawX1#,FDrawY1#,FDrawX2#,FDrawY2#,FDrawX3#,FDrawY3#,FDrawX4#,FDrawY4#,FDrawButton%=1,FDrawHandle%=0)
   
   
   
   
   ;MOW/GÜLTIGKEIT
   If GDrawMOW=1 Then
      
      ;VARIABLEN/VORREINIGUNG
      GDrawMouseCode=GDrawMouseCode+1
      MouseOver3D=0
      MouseDown3D=0
      MouseHit3D=0
      MousePit3D=0
      
      ;VARIABLEN/VORBERECHNUNGEN
      Local IDrawXMouse%=xpos
      Local IDrawYMouse%=ypos
      
      ;VARIABLENDEKLARATIONEN
      Local IDrawX1#,IDrawY1#
      Local IDrawX2#,IDrawY2#
      Local IDrawX3#,IDrawY3#
      Local IDrawX4#,IDrawY4#
      Local LDrawMesh%
      
      ;QUELLANGABE/PRÜFUNG
      If FDrawHandle<>0 Then
         
         ;VARIABLENDEKLARATIONEN
         LDrawMesh=PeekInt(GDrawFaceBank,FDrawHandle+DRAWBANKMESH)
         
         ;VEKTORTRANSFORMATION/VON: 'Xeres'
         TFormPoint(FDrawX1,FDrawY1,0,LDrawMesh,0): CameraProject(GDrawCamera,TFormedX(),TFormedY(),TFormedZ()): IDrawX1=ProjectedX()-GDrawXSize: IDrawY1=GDrawYSize-ProjectedY()
         TFormPoint(FDrawX2,FDrawY2,0,LDrawMesh,0): CameraProject(GDrawCamera,TFormedX(),TFormedY(),TFormedZ()): IDrawX2=ProjectedX()-GDrawXSize: IDrawY2=GDrawYSize-ProjectedY()
         TFormPoint(FDrawX3,FDrawY3,0,LDrawMesh,0): CameraProject(GDrawCamera,TFormedX(),TFormedY(),TFormedZ()): IDrawX3=ProjectedX()-GDrawXSize: IDrawY3=GDrawYSize-ProjectedY()
         TFormPoint(FDrawX4,FDrawY4,0,LDrawMesh,0): CameraProject(GDrawCamera,TFormedX(),TFormedY(),TFormedZ()): IDrawX4=ProjectedX()-GDrawXSize: IDrawY4=GDrawYSize-ProjectedY()
      End If
      
      ;QUADKOLLISION/BERECHNEN+ANWENDEN
      If (IDrawY2-IDrawY1)*(IDrawXMouse-IDrawX2)-(IDrawX2-IDrawX1)*(IDrawYMouse-IDrawY2)=>0 Then
         If (IDrawY3-IDrawY2)*(IDrawXMouse-IDrawX3)-(IDrawX3-IDrawX2)*(IDrawYMouse-IDrawY3)>0 Then
            If (IDrawY4-IDrawY3)*(IDrawXMouse-IDrawX4)-(IDrawX4-IDrawX3)*(IDrawYMouse-IDrawY4)>0 Then
               If (IDrawY1-IDrawY4)*(IDrawXMouse-IDrawX1)-(IDrawX1-IDrawX4)*(IDrawYMouse-IDrawY1)=>0 Then
                  
                  ;ALLGEMEINE/MAUSVARIABLEN/SETZEN
                  MouseDown3D=MouseDown(1)+(MouseDown(2)*2)+(MouseDown(3)*4)
                  If GDrawMousePit<>GDrawMouseCode Then MousePit3D=1
                  If GDrawMouseHit=0 Then MouseHit3D=MouseDown3D
                  GDrawMousePit=GDrawMouseCode
                  MouseTest3D=GDrawMouseCode
                  GDrawMouseHit=MouseDown3D
                  MouseOver3D=1
                  
                  ;GLOWIMAGE/ANWENDEN
                  If FDrawButton Mod DRAWBANKSTEP=0 Then DrawQuad3D(FDrawButton,FDrawX1,FDrawY1,FDrawX2,FDrawY2,FDrawX3,FDrawY3,FDrawX4,FDrawY4,0,(MouseDown3D>0)*DRAWDOWNIMAGE)
                  
                  ;FUNKTION/RÜCKGABEWERT
                  Return True
               End If
            End If
         End If
      End If
   End If
   
   
   
   
End Function


Aber die tut iwie net funtzen ... ^^

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, März 10, 2010 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab nun die Funktion bis auf das wesentliche gekürzt:

Code: [AUSKLAPPEN]
Function CheckQuad(FXPos#,FYPos#,FX1#,FY1#,FX2#,FY2#,FX3#,FY3#,FX4#,FY4#)
   
   
   ;QUADKOLLISION/BERECHNEN+ANWENDEN
   If (FY2-FY1)*(FXPos-FX2)-(FX2-FX1)*(FYPos-FY2)=>0 Then
      If (FY3-FY2)*(FXPos-FX3)-(FX3-FX2)*(FYPos-FY3)>0 Then
         If (FY4-FY3)*(FXPos-FX4)-(FX4-FX3)*(FYPos-FY4)>0 Then
            If (FY1-FY4)*(FXPos-FX1)-(FX1-FX4)*(FYPos-FY1)=>0 Then
               
               ;FUNKTION/RÜCKGABEWERT
               Return True
            End If
         End If
      End If
   End If
   
   
End Function


Exclamation Berücksichtigt keine Änderungen über Origin3D

Lässt sich aber einfach integrieren.

Edit1: Achte darauf, dass ein Quad immer im Uhrzeigersinn gezeichnet wird. Sonst erkennt diese Funktion die Kollision nicht.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

faeX

BeitragDo, März 11, 2010 19:22
Antworten mit Zitat
Benutzer-Profile anzeigen
By the way: Gesucht und nichts gefunden, wo kriegt man das heiße Eisen denn her? Very Happy

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, März 11, 2010 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Draw3D2 ist nur auf ein paar Leuten zum testen, rundaddeln und arbeiten zugeteilt worden. Da das ganze noch nicht offiziell ist, und sich aus diesem Grund noch Änderungen ergeben können, hab ich jedem der User mein persönlichen Support zugesichert. Das kann ich unmöglich allen anbieten.

Erst letztes Wochenende hab ich auf Text3D einen kleinen Bug behoben und es noch um ''Tabulatoren'' (on the fly) erweitert. Aufgrund der Anzahl der Leute die die Draw3D2 bekommen haben, möchte ich ungerne weitere damit versorgen. Auch jedes neue Download-Update bedeutet für mich Arbeit.
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