3D Winkelangaben

Anfängerfragen zum Programmieren mit PureBasic.
TomTom
Beiträge: 130
Registriert: 18.10.2006 18:47

3D Winkelangaben

Beitrag von TomTom »

hiho!

ich nutze seit kurzem die 3D physik.
wenn ein Stein einen anderen berührt, dann drehen die sich ja weg...

wie kann ich denn die neuen Winkel berechnen, gibt es einen bestimmten Befehl dazu?


Vielen Dank!
Pure Basic 4.0
D4uS1
Beiträge: 268
Registriert: 02.09.2006 12:16

Beitrag von D4uS1 »

Wie meinst du das mit den Steinen. Generell sollte sowas mit der Trigonometrie (Cosinus, Sinus, Tangens) zu berechnen sein. Zu finden ist das in der Math Lib von PureBasic. Aber vorsicht, die Winkel sind in Bogenmaß und nicht im Gradmaß angegeben.

Schreib einfach mal ein paar Informationen was du genau machen willst.

lg
Andreas
Solltet ihr Rechtschreibfehler finden, dürft ihr diese natürlich gerne behalten ;).
TomTom
Beiträge: 130
Registriert: 18.10.2006 18:47

Beitrag von TomTom »

hi Andreas!

also ich nutze die 3D Engine von Purebasic.
dort kann man mit hilfe des Befehls "EnableWorldPhysics(1)" die Physik einschalten.

jetzt habe ich einen 3D Würfel gebaut und den auf einen anderen 3D würfel fallen lassen...

sobald die beiden Würfel sich berühren, springt der erste Würfel weg (der 2te ist statisch).

also dreht der erste Würfel sich jetzt in eine von der Physik berechneten Winkel. Diesen Winkel möchte ich gerne herausfinden.

warum ich das herausfinden möchte:
ich möchte ein kleines Auto-Rennspiel proggen, und die Physik sieht sehr real aus...

jetzt benötige ich nur noch die neuen Winkel, und weiß dann, wo das Auto hinzeigt...



ich hoffe alle haben das verstanden wie ich das meine :lol:


MFG tomtom
Pure Basic 4.0
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

http://www.purebasic.fr/german/viewtopi ... c&start=20

Dürfte ich das bsp. mit dem Würfel sehen? Würde mich interessieren wie das genau aussieht...


Andreas
TomTom
Beiträge: 130
Registriert: 18.10.2006 18:47

Beitrag von TomTom »

hier kannste gucken ^^

Code: Alles auswählen

InitEngine3D()
InitSprite()
InitKeyboard()
InitMouse()

EnableWorldPhysics(1)


Add3DArchive("Data\", #PB_3DArchive_FileSystem)
Add3DArchive("moddels\", #PB_3DArchive_FileSystem)
Add3DArchive("skys\skybox.zip", #PB_3DArchive_Zip)
  

OpenScreen(1024,768,32,"Engine3D Test")


;:::::::::::Camera:::::::::::: 
CreateCamera(0,0,0,100,100)
CameraLocate(0,0,0,0)
;:::::::::::Camera ende:::::::

;:::::::::::Skybox::::::::::::
SkyBox("desert07.jpg")
;:::::::::::Skybox ende:::::::


;:::::::::::Würfel::::::::::::
LoadTexture(100,"cube_texture.jpg")
LoadMesh(100,"cube.mesh")
CreateMaterial(100,TextureID(100))

CreateEntity(1,MeshID(100),MaterialID(100))
CreateEntity(2,MeshID(100),MaterialID(100))

EntityLocate(2,0,-100,0)
RotateEntity(2,90,20,5)
ScaleEntity(1, 10, 10, 10)
ScaleEntity(2, 10, 10, 10)

EntityPhysicBody(1, #PB_Entity_BoxBody)
EntityPhysicBody(2, #PB_Entity_StaticBody)

MoveEntity(1,0,-10,0)
CameraLocate(0,0,0,200)

;::::::::::Würfel ende:::::::
 
WorldGravity(10)
 
Repeat
  ExamineKeyboard()
  ExamineMouse()
  If KeyboardPushed(1):esc = 1:EndIf
  
  If KeyboardPushed(#PB_Key_W):MoveCamera(0,0,0,-10):EndIf
  If KeyboardPushed(#PB_Key_S):MoveCamera(0,0,0,10):EndIf
  
  
  RotateCamera(0,-(MouseDeltaX()/10),-(MouseDeltaY()/10),0)
    
  RenderWorld()
  FlipBuffers()
Until esc = 1


du musst nur noch eine texture und einen würfel erstellen...
ich denke mal das schaffste
Pure Basic 4.0
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

Ich hab den Robot von einem Tut genommen und der fliegt direkt durch den anderen durch...

Das mit der Rotations-Matrize verstanden? Kannst ja NicTheQuicks code für die Rechnungen mit den Matrizen nehmen...
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Andreas_S hat geschrieben:Kannst ja NicTheQuicks code für die Rechnungen mit den Matrizen nehmen...
Naja, für kleine 3x3-Matrizen braucht man nicht unbedingt meinen riesen
Code. Der ist außerdem nicht für Dinge geeignet, die schnell sein sollen.
TomTom
Beiträge: 130
Registriert: 18.10.2006 18:47

Beitrag von TomTom »

danke für eure antworten, aber irgendwie habe ich es nicht so ganz verstanden wie ich das problem lösen kann :lol:

naja mir ist gerade aufgefallen, das die physik von PB nicht so ganz funktioniert...
ich habe eine kleine 3DHalle statisch erstellt und von oben 3D Würfel hinunter fallen lassen. daraufhin sind die Würfel auf den Boden aufgeschlagen und haben sich davon gedriftet (wie über eis).
Darauf hin habe ich die Reibung verändert mit dem Befehl

Code: Alles auswählen

SetEntityFriction(i, 50)
verändert (mit allen entitys).
jedoch sehe ich keine veränderung.

das komische ist, das meine Würfel langsam aber sicher durch den Boden durchfallen. Wenn ich die Masse der Würfel erhöhe fallen die auch schneller durch

was mache ich falsch?

MFG tomtom
[/code]
Pure Basic 4.0
Antworten