Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Pitch und Roll für ein Flugzeug.

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 19.04.2010, 14:14    Titel: Pitch und Roll für ein Flugzeug. Antworten mit Zitat

Suche eine Lösung um ein Flugzeug mit Pitch und Roll zu bewegen im 3d-Raum.

Wer kann helfen?

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 19.04.2010, 18:38    Titel: Antworten mit Zitat

öhm den roll als drehung um eine achse, die entsprechend pitch um die mittelachse des fliegers gedreht ist rechnen? was genau willst du grad wissen? ;P
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 19.04.2010, 19:02    Titel: Antworten mit Zitat

Wenn ich Yaw und Roll durchführe möchte ich nach rechts oder links schwenken und gleichzeitig in die Kurve rollen.
Bein steigen möchte ich in Pitch gehen je nach Steigung.

Bei beiden soll das bei der Fluggeschwindigkeit(Bewegung) geschehen.

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 19.04.2010, 21:09    Titel: Antworten mit Zitat

wie wärs du gibst mal ne genaue beschreibung ab was für daten du als eingabe hast? du musst ja irgendeine modellierung haben in welche richtung du grade fliegst, wie sehr das flugzeug grade "in der kurve liegt" und wie viel in welche richtung (links/rechts rollen, hoch/runter drehen) gesteuert werden soll. mit den paar zahlen sollten sich irgendwie fünf sechs zeilen formeln aufstellen lassen die die steuerung entsprechend umsetzen.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 20.04.2010, 13:42    Titel: Antworten mit Zitat

Dies ist ein Quadro-Hubschrauber.

Mit Q/W rechts und links drehen.
Mit W/S vorwärts und rückwärts.
Mit T/B hoch und runter.
Variable "nw" zum drehen, "dhh" hoch und runter, "sw" vor-und zurück.

tz und nz sind nur die Startpositionen.
ssw wird gesetzt, wenn der Hubschrauber abgestürtz ist.

Alles wird in horizontraler Position gemacht, ohne Neigung und Rollen.
Dieses sind eigentlich die Faktoren dafür:

x1=SIN(nw*pi_180)*sw
y1=COS(nw*pi_180)*sw
nx+=x1
nz+=y1

IrrSetNodePosition(PivotNode, tx+nx,dhh, tz+nz)
IrrSetNodeRotation(PivotNode,ssw,nw,0.0)

Gruss

Code:

#include "IrrlichtWrapper.bi"
#include "fbgfx.bi"
USING FB

Const As Double pi = 3.1415926, pi_180 = pi / 180

Declare Sub terrain_1()
Declare Sub transparent_0()

Dim Shared Mesh As irr_mesh
Dim Shared MeshTexture As irr_texture
DIM Shared Material as irr_material

Dim Shared CentreNode As irr_node
Dim Shared EdgeNode1 As irr_node
Dim Shared EdgeNode2 As irr_node
Dim Shared PivotNode As irr_node
Dim Shared PivotNode1 As irr_node
Dim Shared PivotNode2 As irr_node

Dim Shared CentreNode0 As irr_node
Dim Shared EdgeNode10 As irr_node
Dim Shared EdgeNode20 As irr_node
Dim Shared PivotNode0 As irr_node
Dim Shared PivotNode10 As irr_node
Dim Shared PivotNode20 As irr_node

Dim Shared CentreNode1 As irr_node
Dim Shared PivotNode30 As irr_node

Dim Shared As Single RRotation ,drr,dhh
Dim Shared As Integer test_h,test_r,test_c

Dim Shared Terrain as irr_terrain
DIM Shared TerrainNode as irr_node
DIM Shared TerrainTexture0 as irr_texture
DIM Shared TerrainTexture1 as irr_texture
DIM Shared Camera as irr_camera
DIM Shared CameraNode as irr_node
Dim Shared As Single Yaw, Pitch,Roll, Drive, Strafe,Elevate,tra_1,tra_2
Dim Shared As Single x1 ,y1 ,sw
Dim Shared As Single nz ,nw,nx ,tx,tz,st,ssw

ScreenRes 300,200,32
SCREENCONTROL SET_WINDOW_POS, 10,120
IrrStart( IRR_EDT_OPENGL, 800, 600, IRR_BITS_PER_PIXEL_32, _
        IRR_WINDOWED, IRR_SHADOWS, IRR_IGNORE_EVENTS )
IrrSetWindowCaption( "Example 10: Terrain and Fog" )

Terrain = IrrAddTerrain( "./media/terrain-heightmap.bmp" )
TerrainNode = Terrain
IrrSetNodeScale( TerrainNode, 1.0, 0.0, 1.0 )

TerrainTexture0 = IrrGetTexture( "./media/terrmap.jpg" )
TerrainTexture1 = IrrGetTexture( "./media/detailmap3.jpg" )
IrrSetNodeMaterialTexture( TerrainNode, TerrainTexture0, 0 )
IrrSetNodeMaterialTexture( TerrainNode, TerrainTexture1, 1 )
IrrScaleTexture( Terrain, 1.0,32.0 )

IrrSetNodeMaterialFlag( TerrainNode, IRR_EMF_LIGHTING, IRR_OFF )
IrrSetNodeMaterialType ( TerrainNode, IRR_EMT_DETAIL_MAP )

'--------------------------------------------------------
PivotNode = IrrAddEmptySceneNode
IrrSetNodePosition( PivotNode, 0.0, 0.0, 0.0 )
CentreNode = IrrAddTestSceneNode
MeshTexture = IrrGetTexture("./media/rot.png")
IrrSetNodeMaterialTexture( CentreNode, MeshTexture, 0)
IrrSetNodeScale( CentreNode, 1.8,0.03,0.03 )
IrrAddChildToParent(CentreNode, PivotNode)

PivotNode1 = IrrAddEmptySceneNode
IrrSetNodePosition( PivotNode1, 0.0, 0.0, 0.0 )
EdgeNode1 = IrrAddTestSceneNode
MeshTexture = IrrGetTexture("./media/blau.png")
IrrSetNodeMaterialTexture( EdgeNode1, MeshTexture, 0 )
IrrSetNodeScale( EdgeNode1, 0.5,0.01, 0.04)
IrrAddChildToParent(EdgeNode1, PivotNode1)

PivotNode2 = IrrAddEmptySceneNode
IrrSetNodePosition( PivotNode2, 0.0, 0.0, 0.0 )
EdgeNode2 = IrrAddTestSceneNode
MeshTexture = IrrGetTexture("./media/blau.png")
IrrSetNodeMaterialTexture( EdgeNode2, MeshTexture, 0 )
IrrSetNodeScale( EdgeNode2, 0.5,0.01, 0.04)
IrrAddChildToParent(EdgeNode2, PivotNode2)

IrrAddChildToParent(PivotNode1,PivotNode )
IrrSetNodePosition( PivotNode1, 8.7, 0.4, 0.0)

IrrAddChildToParent(PivotNode2,PivotNode )
IrrSetNodePosition( PivotNode2, -8.7, 0.4, 0.0)

'-------------------------------------------------------
PivotNode0 = IrrAddEmptySceneNode
IrrSetNodePosition( PivotNode0, 0.0, 0.0, 0.0 )
CentreNode0 = IrrAddTestSceneNode
MeshTexture = IrrGetTexture("./media/rot.png")
IrrSetNodeMaterialTexture( CentreNode0, MeshTexture, 0 )
IrrSetNodeScale( CentreNode0, 1.8,0.03,0.03 )
IrrAddChildToParent(CentreNode0, PivotNode0)

PivotNode10 = IrrAddEmptySceneNode
IrrSetNodePosition( PivotNode10, 0.0, 0.0, 0.0 )
EdgeNode10 = IrrAddTestSceneNode
MeshTexture = IrrGetTexture("./media/blau.png")
IrrSetNodeMaterialTexture( EdgeNode10, MeshTexture, 0 )
IrrSetNodeScale( EdgeNode10, 0.5,0.01, 0.04)
IrrAddChildToParent(EdgeNode10, PivotNode10)

PivotNode20 = IrrAddEmptySceneNode
IrrSetNodePosition( PivotNode20, 0.0, 0.0, 0.0 )
EdgeNode20 = IrrAddTestSceneNode
MeshTexture = IrrGetTexture("./media/blau.png")
IrrSetNodeMaterialTexture( EdgeNode20, MeshTexture, 0 )
IrrSetNodeScale( EdgeNode20, 0.5,0.01, 0.04)
IrrAddChildToParent(EdgeNode20, PivotNode20)

IrrAddChildToParent(PivotNode10,PivotNode0 )
IrrSetNodePosition( PivotNode10, 8.7, 0.4, 0.0)

IrrAddChildToParent(PivotNode20,PivotNode0 )
IrrSetNodePosition( PivotNode20, -8.7, 0.4, 0.0)

'-------------------------------------------------------
PivotNode30 = IrrAddEmptySceneNode
IrrSetNodePosition( PivotNode30, 0.0, 0.0, 0.0 )
CentreNode1 =  IrrAddSphereSceneNode( 1.0, 16 )
MeshTexture = IrrGetTexture("./media/gruen.png")
IrrSetNodeMaterialTexture( CentreNode1, MeshTexture, 0)
IrrAddChildToParent(CentreNode1, PivotNode30)

'-------------------------------------------------------
IrrAddChildToParent(PivotNode0,PivotNode )
IrrSetNodePosition( PivotNode0, 0.0,0.0, 0.0)
IrrSetNodeRotation( PivotNode0, 0.0,  90.0, 0.0)

IrrAddChildToParent(PivotNode30,PivotNode )
IrrSetNodePosition( PivotNode30, 0.0,0.0, 0.0)

IrrSetAmbientLight( 1,1,1 )
Camera = IrrAddCamera( 0,0,0, 0,0,0 )
CameraNode = Camera
IrrSetNodePosition( CameraNode, 150, 20,140 )
IrrSetCameraClipDistance( Camera, 12000 )

dhh=1.0
drr=0
tx=100
tz=100
sw=0
ssw=0
test_c=0

While IrrRunning
   IrrBeginScene( 220,220,220 )
   
   Sleep 1
   If multikey( FB.SC_u ) Then   
       yaw=yaw-0.002
       terrain_1()
   End If 
   If multikey( FB.SC_o ) Then   
       yaw=yaw+0.002
       terrain_1()
   End If
   If multikey( FB.SC_i ) Then   
       drive=drive-0.1
       terrain_1()
   End If 
   If multikey( FB.SC_k ) Then   
       drive=drive+0.1
       terrain_1()
   End If
   If multikey( FB.SC_j ) Then   
       strafe=strafe-0.1
       terrain_1()
   End If 
   If multikey( FB.SC_l ) Then   
       strafe=strafe+0.1
       terrain_1()
   End If
   If multikey( FB.SC_y ) Then   
       elevate=elevate-0.05
       terrain_1()
   End If 
   If multikey( FB.SC_h ) Then   
       elevate=elevate+0.05
       terrain_1()
   End If
   
   If multikey( FB.SC_r ) And test_c=0 Then   
       test_r=1
   End If 
   If multikey( FB.SC_f ) And test_c=0 And dhh=1.0 Then   
       test_r=2
   End If
   
   If multikey( FB.SC_t ) And test_c=0 And drr=8.0 Then
      test_h=1      
   End If 
   If multikey( FB.SC_b ) And test_c=0 Then   
       test_h=2       
   End If
   If multikey( FB.SC_g ) And test_c=0 Then   
       test_h=3    
   End If
   
   If MultiKey( FB.SC_e ) And test_c=0 And drr=8.0  Then
      nw=nw+0.3
   End If
   If MultiKey( FB.SC_q ) And test_c=0 And drr=8.0  Then
       nw=nw-0.3
   End If
   If MultiKey( FB.SC_w ) And test_c=0 And drr=8.0  Then
      sw=sw+0.001
      If sw > 0.1 Then sw=0.1
   End If
   If MultiKey( FB.SC_s ) And test_c=0 And drr=8.0  Then
       sw=sw-0.001
       If sw < -0.1 Then sw=-0.1
   End If
   
   If MultiKey( FB.SC_x ) And test_c=0 Then
       If sw < 0.01 And sw > 0.0 Then sw=0
       If sw > -0.01 And sw < 0.0 Then sw=0
   End If
   If MultiKey( FB.SC_z ) And test_c=1 then
      dhh=1.0
      drr=0
      sw=0
      ssw=0
      test_c=0
   endif   
   
   If test_h=1 Then
      dhh = dhh+0.05
       Print dhh
   EndIf
   
   If test_h=2 Then
      dhh = dhh-0.05
       If dhh < 1.0 Then dhh = 1.0 : test_h=3
       Print dhh
   EndIf
   
   If test_r=1 Then
        drr = drr+0.01
        If drr > 8.0 Then tra_1=32.0 : tra_2=190.0: transparent_0()
       If drr > 8.0 Then drr = 8.0 : test_r=4
   EndIf
   
   If test_r=2 Then
      drr = drr-0.01
      If drr < 7.0 Then tra_1=255.0 : tra_2=255.0 : transparent_0()
       If drr < 0.0 Then drr = 0.0 : test_r=4   
   EndIf
   
   If dhh < 2.0 And (sw > 0.02 Or sw < -0.02) Then
      If sw < -0.02 Then
         ssw=-20
      Else
         ssw=20
      EndIf   
      
      sw=0
      drr=1.0
      tra_1=255.0 : tra_2=255.0 : transparent_0()
      Print "Absturz"
      test_r=2
      test_c=1
   EndIf
   
   x1=Sin(nw*pi_180)*sw
   y1=Cos(nw*pi_180)*sw 
   nx+=x1
   nz+=y1
   
   IrrSetNodePosition(PivotNode, tx+nx,dhh, tz+nz)
   IrrSetNodeRotation(PivotNode,ssw,nw,0.0)
   
   RRotation = RRotation+drr
   IrrSetNodeRotation( PivotNode1, 0.0,RRotation, 0.0)
   IrrSetNodeRotation( PivotNode2, 0.0,RRotation, 0.0)
   IrrSetNodeRotation( PivotNode10, 0.0,RRotation, 0.0)
   IrrSetNodeRotation( PivotNode20, 0.0,RRotation, 0.0)
   
   IrrDrawScene
   IrrEndScene
WEND

IrrStop

Sub transparent_0()
   IrrSetNodeMaterialType(  EdgeNode1, IRR_EMT_TRANSPARENT_VERTEX_ALPHA )
   Material = IrrGetMaterial( EdgeNode1, 0 )
   IrrMaterialVertexColorAffects( Material, ECM_NONE )
   IrrMaterialSetAmbientColor ( Material, tra_1,tra_2,tra_2,tra_2 )
   IrrMaterialSetDiffuseColor ( Material,tra_1,tra_2,tra_2,tra_2 )
   
   IrrSetNodeMaterialType(  EdgeNode2, IRR_EMT_TRANSPARENT_VERTEX_ALPHA )
   Material = IrrGetMaterial( EdgeNode2, 0 )
   IrrMaterialVertexColorAffects( Material, ECM_NONE )
   IrrMaterialSetAmbientColor ( Material, tra_1,tra_2,tra_2,tra_2  )
   IrrMaterialSetDiffuseColor ( Material,tra_1,tra_2,tra_2,tra_2  )
   
   IrrSetNodeMaterialType(  EdgeNode10, IRR_EMT_TRANSPARENT_VERTEX_ALPHA )
   Material = IrrGetMaterial( EdgeNode10, 0 )
   IrrMaterialVertexColorAffects( Material, ECM_NONE )
   IrrMaterialSetAmbientColor ( Material, tra_1,tra_2,tra_2,tra_2  )
   IrrMaterialSetDiffuseColor ( Material,tra_1,tra_2,tra_2,tra_2  )
   
   IrrSetNodeMaterialType(  EdgeNode20, IRR_EMT_TRANSPARENT_VERTEX_ALPHA )
   Material = IrrGetMaterial( EdgeNode20, 0 )
   IrrMaterialVertexColorAffects( Material, ECM_NONE )
   IrrMaterialSetAmbientColor ( Material, tra_1,tra_2,tra_2,tra_2  )
   IrrMaterialSetDiffuseColor ( Material,tra_1,tra_2,tra_2,tra_2  )
End Sub

Sub terrain_1()
  IrrRevolveCamera ( Camera, Yaw, Pitch,Roll, Drive, Strafe,Elevate )
 
  Yaw=0
  Pitch=0
  Roll=0
  Drive=0
  Strafe=0
  Elevate=0
End Sub

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz