BASIC

Author Topic: Mathe für Schranz0r  (Read 5287 times)

Offline WPShadow

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1667
    • View Profile
    • http://lostrevenant.blogspot.com
Mathe für Schranz0r
« Reply #15 on: 2008-Jan-25 »
Hi!

Ich habe gerade folgendes entnommen:

//?   FOR jedes Körperteil:
//?   NewtonBuildMatrix(0,0,90,x,y,z, M[])

Aufgrund dieses Beispiels habe ich folgendes versucht:

NewtonBuildMatrix(phi, 0, 0,NewtonBodyGetPositionX(ownship), NewtonBodyGetPositionY(ownship), NewtonBodyGetPositionY(ownship), mat[])

Funktioniert aber nicht! Und zwar gar nicht. Nicht einmal eine minimale Bewegung dahinter!!!

Was kann ich machen?
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10697
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Mathe für Schranz0r
« Reply #16 on: 2008-Jan-26 »
X, Y, Y ???

Ja, und dann hast Du eine Matrix - aber was machst Du damit?
NewtonBodySetMatrix(ownship, mat[])

Offline WPShadow

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1667
    • View Profile
    • http://lostrevenant.blogspot.com
Mathe für Schranz0r
« Reply #17 on: 2008-Jan-26 »
Hi!

Funzt super! Des Rätsels Lösung war eigentlich ganz simpel!

Code: GLBasic [Select]
NewtonBuildMatrix(0, phi, 0,NewtonBodyGetPositionX(ownship), NewtonBodyGetPositionY(ownship), NewtonBodyGetPositionZ(ownship), mat[])
NewtonBodySetMatrix(ownship, mat[])
Danke danke danke!!!

Aber mir bleibt da noch eine Frage wegen dem Timer! Und zwar benutze ich

Code: GLBasic [Select]
FUNCTION lost_timer:

        //+++++++++++++++++++++++++++++++++++
        GT=(GETTIMERALL()-Old_Timer)/1000
        Old_Timer=GETTIMERALL()
        //+++++++++++++++++++++++++++++++++++
        lost_GT = GT * lost_zeitlupe
        //+++++++++++++++++++++++++++++++++++

ENDFUNCTION
Jetzt habe ich das Problem, daß das Spiel auf meinem Laptop langsamer, aber auf meinem Rechner viel schneller läuft. Dabei sollte der Echtzeittimer Frameratenunabhängig laufen. Hast du da eine Idee???

Gruß

W.
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10697
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Mathe für Schranz0r
« Reply #18 on: 2008-Jan-26 »
Newtonupdate(GT, 4);

Offline WPShadow

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1667
    • View Profile
    • http://lostrevenant.blogspot.com
Mathe für Schranz0r
« Reply #19 on: 2008-Jan-26 »
Habe ich gerade auf beiden Rechnern ausprobiert. Am PC ist das Bild ca. 4mal so schnell, auch mit deiner Einstellung. Habe herum experimentiert. Habe den Wert auf (GT, 10) raufgestellt, macht aber keinen Unterschied. Da kann ich machen was ich will...
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Offline BumbleBee

  • Global Moderator
  • Prof. Inline
  • *******
  • Posts: 891
    • View Profile
Mathe für Schranz0r
« Reply #20 on: 2008-Jan-26 »
Hi WPShadow

Das kann gar nicht sein. Das lief doch vor 2 Jahren (oder wie lang ist das schon her):D auch normal. Ich hab das schon auf mehreren PC's getestet. Von alt bis neu. Immer gleich. Starte mal und sag mir wie lang  das Quadrat auf deinem Rechner von  links nach rechts braucht Alle Auflösungen durch, mit dem Beispiel unten.
Code: GLBasic [Select]
LIMITFPS -1 //Ganz wichtig

Speed=100;X=-50

                   //Loop
//---------------------------------------------------

WHILE TRUE

               //GameTimer
  //+++++++++++++++++++++++++++++++++++
    GT=(GETTIMERALL()-Old_Timer)/1000
    Old_Timer=GETTIMERALL()
  //+++++++++++++++++++++++++++++++++++
                 
   X=X+Speed*GT
   DRAWRECT X,100,50,50,RGB(255,0,0)        

//Bei einer Auflösung von 640 * 480 Pixel und einem Speed von 100 Pixel
//beträgt die Zeit 640 / 100 = 6.4 Sekunden bis zum rechten Rand

//Bei einer Auflösung von 800 * 600 Pixel und einem Speed von 100 Pixel
//beträgt die Zeit 800 / 100 = 8 Sekunden bis zum rechten Rand

                    //Zeit messen
  t2=GETTIMERALL()
   IF t2 > t1 + 1000 //Sekunden
     Time=Time+ 1
     t1=t2
   ENDIF

                   
  PRINT "Time " + Time , 50,50

SHOWSCREEN
WEND
Das Quadrat braucht also bei der Auflösung von 800 * 600 = 8 Sekunden von links nach rechts
wenn Speed = 100 ist. (800 / Speed = 8). Bei Speed = 50 halt dann doppelt so lang. Das wär dann vielleicht deine Zeitlupe.;)  


Cheers
The day will come...

CPU Intel(R) Core(TM) i5-3570k, 3.4GHz, AMD Radeon 7800 , 8 GB RAM, Windows 10 Home 64Bit

Offline WPShadow

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1667
    • View Profile
    • http://lostrevenant.blogspot.com
Mathe für Schranz0r
« Reply #21 on: 2008-Jan-26 »
Das ist nicht das Problem! So wie du das Programm geschrieben hast, läuft das problemlos, aber wenn man das mit

NewtonUpdate

zusammen benutzt, dann läuft das auf verschiedenen Rechnern verschieden schnell! Und das ist irgendwie seltsam...
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5014
  • O Rly?
    • View Profile
Mathe für Schranz0r
« Reply #22 on: 2008-Jan-26 »
Und wenn du den Timer bei NewtonUpdate reinpackst, als übergabewert?!
I <3 DGArray's :D

PC:
AMD RYzen 7 1700 @3.9Ghz, 16GB HyperX Fury 2666Mhz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline WPShadow

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1667
    • View Profile
    • http://lostrevenant.blogspot.com
Mathe für Schranz0r
« Reply #23 on: 2008-Jan-26 »
Ok, keine Ahnung, wie du meinst?!?

Ich habe im Prinzip den Wert GT als Timer reingepackt...
Code: GLBasic [Select]
  //+++++++++++++++++++++++++++++++++++
    GT=(GETTIMERALL()-Old_Timer)/1000
    Old_Timer=GETTIMERALL()
  //+++++++++++++++++++++++++++++++++++

...

Newtonupdate(GT, 4)
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5014
  • O Rly?
    • View Profile
Mathe für Schranz0r
« Reply #24 on: 2008-Jan-26 »
ah hast du schon Hmmmm
I <3 DGArray's :D

PC:
AMD RYzen 7 1700 @3.9Ghz, 16GB HyperX Fury 2666Mhz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10697
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Mathe für Schranz0r
« Reply #25 on: 2008-Jan-27 »
Hmm. mach mal Netwonupdate (20,4)

Offline WPShadow

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1667
    • View Profile
    • http://lostrevenant.blogspot.com
Mathe für Schranz0r
« Reply #26 on: 2008-Jan-27 »
Geht auch nicht! Ca. 4 facher Geschwindigkeitsunterschied, ganz egal was ich mache.

Ich teste immer mit identischem Programm.
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est