GLBasic forum

Other languages => GLBasic - de => Topic started by: WPShadow on 2007-Nov-20

Title: Physikfragen
Post by: WPShadow on 2007-Nov-20
Hi!

Habe gerade ein bißchen mit Newton herum experimentiert: Ist ja gar nicht so schwer! *freu*

Nun habe ich gleich mal eine kleine Frage:

Wie bekomme ich mit (oder ohne) Newton die aktuelle Position meines Objektes heraus? Setzen kann man es ja mit NewtonBodySetPosition. Mir fehlt irgendwie sowas wie ein ...GetPosition, das irgendwie die Werte zurück liefert, oder so. Gibt es sowas?

GLG

W.

PS.: Ich werde bestimmt noch ein paarmal nerven, denn ganz so einfach ist Newton dann doch nicht! *lol*
Title: Physikfragen
Post by: Schranz0r on 2007-Nov-20
eine Variable ? :D
Title: Physikfragen
Post by: WPShadow on 2007-Nov-20
Scherzkübel! =D

Nein, irgendwas, wo ich direkt von Newton die Position auslesen kann, damit ich auf bestimmte Positionen reagieren kann. --> [Skripten ausführen usw.]

Anbei: Wie gibt man eigentlich Gewicht an? bzw. Masse? Ich frage deshalb, weil ich mit einer gewissen Kraft beschleunigen möchte. Und irgendwie errechnen möchte, wie groß die Beschleunigung ist:

Viel Gewicht --> wenig Beschleunigung
wenig Gewicht --> viel Beschleunigung

So ungefähr! Hat da wer eine Idee für mich?

GLG

W.
Title: Physikfragen
Post by: Schranz0r on 2007-Nov-20
Code (glbasic) Select
NewtonConvexCollisionCalculateInertialMatrix: body_index, massBüddö

EDIT:

Position herrausfinden(Nicht getestet):


Somit setzt man ja die Position:
Code (glbasic) Select
FUNCTION NewtonBodySetPosition: body_index, x,y,z
LOCAL mat[]
NewtonBodyGetMatrix(body_index, mat[])
mat[12]=x; mat[13]=y; mat[14]=z
NewtonBodySetMatrix(body_index, mat[])
ENDFUNCTION
Also sollte man so die Position rausbekommen:

Code (glbasic) Select
FUNCTION NewtonBodyGetPositionX: body_index
LOCAL mat[]
NewtonBodyGetMatrix(body_index, mat[])
RETURN mat[12]
ENDFUNCTION
USW für Y und Z halt noch ....
Title: Physikfragen
Post by: WPShadow on 2007-Nov-20
Super! Probiere ich gleich mal aus! Danke! Danke! Danke! =)
Title: Physikfragen
Post by: Schranz0r on 2007-Nov-20
So jetzt ists getestet und für gut befunden:

Code (glbasic) Select
FUNCTION NewtonBodyGetPositionX: body_index
LOCAL mat[]
    NewtonBodyGetMatrix(body_index, mat[])
    RETURN mat[12]
ENDFUNCTION

FUNCTION NewtonBodyGetPositionY: body_index
LOCAL mat[]
    NewtonBodyGetMatrix(body_index, mat[])
    RETURN mat[13]
ENDFUNCTION

FUNCTION NewtonBodyGetPositionZ: body_index
LOCAL mat[]
    NewtonBodyGetMatrix(body_index, mat[])
    RETURN mat[14]
ENDFUNCTION
Title: Physikfragen
Post by: WPShadow on 2007-Nov-21
Spitze, danke! Habe gestern Abend noch etwas mit Masse herum experimentiert! Das funktioniert ja spitzenmäßig!

Heute Nachmittag teste ich mal deine Funktion(en) aus. Dann wird es nämlich ziemlich witzig! Das Ding könnten wir nämlich beim R-Type Clon einbauen! =D
Title: Physikfragen
Post by: Schranz0r on 2007-Nov-21
Jow mal gucken ^^
Title: Physikfragen
Post by: WPShadow on 2007-Nov-21
Und weiter geht's mit dem Fragen:

Wie realisiert man eigentlich das zusammenfügen mehrerer einzelner Objekte und Newton?

Ich meine damit, daß ich aus mehreren extra Teilen ein Objekt erzeugen möchte (x_Push_matrix / x_pop_matrix). Ist das normal mit Newton möglich? (Also mit der 3d - Objekt - Ausgabe via Newton?)
Title: Physikfragen
Post by: Kitty Hello on 2007-Nov-21
Schranzor!!!! Du bist da der volle Abchecker! Ich geh' dann mal für 1 Jahr in Urlaub :D
Ja, die Matrix gibt an, wo und wie das Objekt ist. Diese Matrix kann man auch mit X_MULTMATRIX nehmen, um das Ding an seinem Ort zu zeichnen.
Die Matrix sind quasi 4 vektoren:
mat[0], mat[1], mat[2] ist die lokale X Achsen-richtung des Objektes.
mat[3,4,5] Y Achse
und mat[12], mat[13],mat[14] die position.
Wenn man die länge der X-achsen-richtung ändert, kann man das Objekt entlang dieser Achse zoomen. Besser nicht machen ;)
Also, matrix - keine Angst haben. Ist gar net so kompliziert.
Um so eine Matrix zu machen kann man NetwonBuildMatrix nehmen.


Zusammenfügen von Objekten geht mit NewtonCreateCompoundBody()
dann alle "Childs" machen mit NewtonCreateBox usw... Aber die Matrix relativ zum Parent anpassen/verschieben. Mit NewtonCompoiundEnd oder so fertig machen.
Title: Physikfragen
Post by: Schranz0r on 2007-Nov-21
Was hab ich den nun wieder gemacht :D ....
Viel spass im Urlaub, und schreib mir mal ne Karte.... ;)
Achja, bevor du gehst, gib mir bitte noch Modrechte, ab und an muss man ja mal ein Auge auf bestimmte Leute werfen, die leichtsam mal spamen ! *PFEIF*
Title: Physikfragen
Post by: WPShadow on 2007-Nov-21
QuoteAber die Matrix relativ zum Parent anpassen/verschieben.
Meinst du damit, daß man die Position des Childs relativ zum Parent anpassen muß?

Alias:

Parent ist auf 50, 0, 0
Child ist auf 0, 0, 0 (relativ gesehen zum Parent?)

So ca.?

Und noch eine Frage:

So wie ich das sehe, funktioniert in diesem Fall X_Rotation auch nicht! *ggg*
Da gibt es bestimmt auch irgendwas von Newton, oder?
Title: Physikfragen
Post by: Kitty Hello on 2007-Nov-21
Das Parent ist auf 0,0,0 (beim zusammenbauen)
Jetzt ist der Kopf auf 50,0,0, OK?
Also:
NewtonCreateCompoundBody()
NewtonBuildMatrix (0,0,0,   50,0,0, mat[])
NewtonCreateBox (1,1,1, mat[])

...

Der NewtonCreateMatrix kann auch die Rotationen einbauen.
Title: Physikfragen
Post by: WPShadow on 2007-Nov-21
QuoteDer NewtonCreateMatrix kann auch die Rotationen einbauen.
Wie genau? Ich meine, wie funktioniert das? bzw. was genau muß ich da machen bzw. was für Variablen ansprechen usw. ?

Ich frage nur deshalb so genau, weil ich vermutlich ca. 200 Jahre brauchen würde, bis ich selbst drauf komme...
Title: Physikfragen
Post by: Schranz0r on 2007-Nov-21
Da wirste wohl um COS und SIN nicht rum kommen ....
Aber mach dir nix drauss, ich könnts auch nicht!
Title: Physikfragen
Post by: WPShadow on 2007-Nov-21
Das sollte nicht das Problem sein!

Bis jetzt weiß ich nämlich bloß, wo ich genau stehe! Mir geht es darum, wo ich hin schaue! Ich könnte ja ein Spiel mit einem Ball machen, bei dem Rotation egal ist, aber bei Raumschiffen sieht die Sache schon etwas anders aus.

Und immer in die selbe Richtung zu schauen, sieht auch blöd aus!

Was brauche ich denn für die rotation? mat[0 - 13] ??? Und falls ja, welche? Oder wie? Oder wo?
Title: Physikfragen
Post by: Schranz0r on 2007-Nov-21
hab ich doch gesagt!
SIN COS evtl sogar TAN...Have fun...
Und ob das ein Problem ist !
Title: Physikfragen
Post by: Kitty Hello on 2007-Nov-22
Nimm NetwonBuildMatrix (rotX, rotY, rotZ, moveX, moveY, moveZ)
hab' ich doch alles schon für euch gemact ;)
Title: Physikfragen
Post by: Schranz0r on 2007-Nov-22
Ohhhhhhh........
Title: Physikfragen
Post by: WPShadow on 2007-Nov-22
Wo genau muß ich NewtonBuildMatrix ansetzen? Vor dem Objekt bzw. vor der Objektmatrix ( NewtonCreateCompoundBody() )?
Title: Physikfragen
Post by: Schranz0r on 2007-Nov-22
Quote from: GernotFrischDas Parent ist auf 0,0,0 (beim zusammenbauen)
Jetzt ist der Kopf auf 50,0,0, OK?
Also:
NewtonCreateCompoundBody()
NewtonBuildMatrix (0,0,0,   50,0,0, mat[])
NewtonCreateBox (1,1,1, mat[])

...

Der NewtonCreateMatrix kann auch die Rotationen einbauen.
Wer lesen kann.... WP da Shadow
Title: Physikfragen
Post by: WPShadow on 2007-Nov-22
Das schon! Damit verschiebe ich ja untereinander die Einzelteile! Ich meine damit, falls ich das ganze Ding rotieren möchte! Das müßte dann also eigentlich so laufen:

// Rotation für zusammengesetztes Ding
NewtonBuildMatrix (0,0,0,   50,0,0, mat[])

// Zusammengesetztes Ding
NewtonCreateCompoundBody()
NewtonBuildMatrix (0,0,0,   50,0,0, mat[])
NewtonCreateBox (1,1,1, mat[])

Oder?
Title: Physikfragen
Post by: Schranz0r on 2007-Nov-22
Versuchs doch einfach mal ^^
Title: Physikfragen
Post by: WPShadow on 2007-Nov-22
Habe doch keinen Rechner hier, auf dem ich es testen könnte! Erst heute Abend. Deshalb frage ich jetzt genau nach, damit ich heute Abend nicht 4 Stunden herum sitze und es dann immer noch nicht funktioniert! (so ungefähr halt...) =D
Title: Physikfragen
Post by: Kitty Hello on 2007-Nov-22
Das machst Du nachher, mit
NewtonBuildMatrix globRX, .... globX,...., m[]
NewtonBodySetMatrix fertiger_body, m[]

Damit kann man ein Objekt irgendwo platzieren -> Das sollte man aber nicht zwischen dem Lauf machen, weil's sonst instabil werden kann. Sondern nur am Anfang, damit die Objekte da sind, wo sie im Level anfangen.
Title: Physikfragen
Post by: WPShadow on 2007-Nov-22
Kurz zur Erklärung, was ich möchte:

Raumschiff besteht aus verschiedenen Teilen. Jedes Teil hat eine gewisse Masse und der Antrieb hat eine gewisse Kraft, mit der er das Ding voran treibt. --> Summe der Massen vs. Antriebskraft (gewissermaßen)

Und das Ganze möchte ich auf einer großen Fläche (2D) mal austesten, wobei eben die Einzelteile zusammen halten sollten und sich in die Richtung drehen sollten, in die ich das Raumschiff drehen möchte. Also so ca. wie x_push_matrix / x_pop_matrix.

Das ist im Augenblick der Plan. Nicht mehr und nicht weniger. Mein erstes Experiment mit einem Würfel funktioniert ja schon super. Aber der Rest eben noch nicht. Da ist halt noch das Problem...

QuoteDamit kann man ein Objekt irgendwo platzieren -> Das sollte man aber nicht zwischen dem Lauf machen, weil's sonst instabil werden kann. Sondern nur am Anfang, damit die Objekte da sind, wo sie im Level anfangen.
Das ist jetzt ungefähr klar. Also platzieren und ausrichten, gewissermaßen. Würde das dann auch ca. so funktionieren:

NewtonBuildMatrix aktuelle_Position_X, .... aktueller_Winkel_X,...., m[]
NewtonBodySetMatrix fertiger_body, m[]

Also gewissermaßen die aktuelle Position einfach übergeben und den entsprechenden Winkel dazu machen?
Title: Physikfragen
Post by: Kitty Hello on 2007-Nov-22
Ach so!!! Die Teile sollten getrennt bleiben, wg. Antrieb usw.? Dann musst Du die mit einem Joint verbinden. Jetzt wirds evtl. bisserl knifflig :D
Title: Physikfragen
Post by: WPShadow on 2007-Nov-22
Nicht wirklich getrennt! Sie sollen eigentlich ein fixes ganzes Objekt bilden. Aber ich möchte sie halt getrennt laden. Damit ich einfach einzelne Teile auswechseln kann. (z.B. anderes Cockpit oder so)

Ich modelliere die einzelnen Objekte ja schon so, daß ich sie beim einfügen eigentlich schon an der richtigen Position habe. Eigentlich müssen sie dann nur mehr eingefügt werden und zusammen geklatscht. Aber so, wie ich vorher gemeint habe

QuoteNewtonBuildMatrix aktuelle_Position_X, .... aktueller_Winkel_X,...., m[]
NewtonBodySetMatrix fertiger_body, m[]
müßte ich eigentlich ganz normal die Bewegung bzw. die Rotation hinbekommen, oder?
Title: Physikfragen
Post by: Kitty Hello on 2007-Nov-22
OK, dann ist der Compound für dich.
Title: Physikfragen
Post by: WPShadow on 2007-Nov-22
Stimmt! Funktioniert nämlich spitze!

Und jetzt habe ich eine Grundlegende Frage, die ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜBERAUS wichtig ist:

Code (glbasic) Select
X_LOADOBJ "ground.ddd", 0
X_LOADOBJ "cube.ddd", 1
X_LOADOBJ "sphere.ddd", 2
LOADSPRITE "textur.png", 0

LOCAL dtime
LOCAL org[]
LOCAL org2[]
LOCAL force[]

usw.
Wie genau weise ich einem org[] den Wert von Sphere zu? Oder von cube? Wie sage ich:

org[]   = cube.ddd
org2[] = sphere

Das verstehe ich bis jetzt noch absolut nicht...

Und noch eine Frage:

Gibt es irgendeine "Abfrageart" bei Newton, bei der nicht eine "grobe" Struktur her genommen wird (Cube, Sphere, ...) sondern die Polygonen des 3D Modells selbst? Irgendwas soll es da ja geben, glaube ich. Also sozusagen, daß das Modell direkt als Kollisionsabfrage genutzt wird. (ungefähr???)

Gute Nacht

W.
Title: Physikfragen
Post by: WPShadow on 2007-Nov-22
Ok, ich vermute, dass ich es ca verstanden habe! Teste mal ein bisschen! Melde mich morgen, falls es doch was geben sollte!

Glg

W.
Title: Physikfragen
Post by: Schranz0r on 2007-Nov-23
Ihhhhh ein Doppelpost!
Im BlitzForum würde jetzt schon der ganze Thread getrashed werden :D
Kackforum da :D
Title: Physikfragen
Post by: WPShadow on 2007-Nov-23
hehehe

Hey, ich für meinen Teil bin schon froh, daß ich kapiert  habe, wie das Ding funktioniert. Ist ja eigentlich ganz einfach (wenn's nicht so unheimlich komplex wäre). Am Wochenende mache ich ein paar Tests. Wenn es so funktioniert, wie ich es mir vorstelle, dann wird das super...

GLG

W.
Title: Physikfragen
Post by: Schranz0r on 2007-Nov-23
Japp Newton ist echt super...
Da hebt man sich schon bei kleinen Games von der Masse ab!
Title: Physikfragen
Post by: WPShadow on 2007-Nov-23
Warte nur ab. Ich hab da nämlich so eine Idee! Falls die eben funzt, dann haben wir das ultimative Weltraumspiel mit Physik. Und zwar in zweifacher Hinsicht bzw. auch Ausführung! =)
Title: Physikfragen
Post by: Kitty Hello on 2007-Nov-23
Quoteorg[]   = cube.ddd
org2[] = sphere
Das kapier ich nicht!?
NewtonCreateDDD() kann aus DDD's Objekte machen. Aber: Die können sich nicht bewegen. Mit NewtonCreateConvexHull kann man mit X_GETFACE Infos sowas machen. So mach ich das in dem CogWork game. Das ist aber schon recht heftig.
Title: Physikfragen
Post by: pebisoft on 2007-Nov-26
QuoteHabe gerade ein bißchen mit Newton herum experimentiert: Ist ja gar nicht so schwer!
warum stellst du soviele fragen , wenn es nicht so schwer ist...lol...
Title: Physikfragen
Post by: Kitty Hello on 2007-Nov-26
ist auch nicht schwer.
Title: Physikfragen
Post by: WPShadow on 2007-Nov-27
Ganz einfach:

Auf den ersten Blick ist das Ding riesig und wirkt total unübersichtlich und kompliziert. Aber wenn man dann plötzlich das "Pling" macht (und das hat es tatsächlich gemacht) und plötzlich da hab ich's plötzlich verstanden. Reduziert auf die paar Befehle ist das Ganze total durchschaubar und einfach zu bedienen. (Zumindest die Teile, die ich nicht selbst dazu schreiben muß [Die funktionieren nämlich meistens erst irgendwann! *lol*])
Title: Physikfragen
Post by: Kitty Hello on 2007-Nov-27
Jo. Ein kleines Tutorial wäre evtl. ganz nett. Ich bin nicht viel dazugekommen den Code zu dokumentieren, aber die Beipiele im Newton-Ordner sind alle sehr klein und einfach.
Title: Physikfragen
Post by: WPShadow on 2007-Nov-28
Ich gucke mal, wie ich Zeit habe. Dürfte sich aber gut ausgehen. Schreibe mal was zusammen und schicke dir mal den ersten Entwurf. Falls es dann paßt, dann kannst du den immer noch dazu tun!

Du könntest uns auch noch einen kleinen Gefallen tun, Gernot. Was hälst du davon, wenn du den Teil:

Code (glbasic) Select
FUNCTION NewtonBodyGetPositionX: body_index
LOCAL mat[]
    NewtonBodyGetMatrix(body_index, mat[])
    RETURN mat[12]
ENDFUNCTION

FUNCTION NewtonBodyGetPositionY: body_index
LOCAL mat[]
    NewtonBodyGetMatrix(body_index, mat[])
    RETURN mat[13]
ENDFUNCTION

FUNCTION NewtonBodyGetPositionZ: body_index
LOCAL mat[]
    NewtonBodyGetMatrix(body_index, mat[])
    RETURN mat[14]
ENDFUNCTION
einfach fix einfügst? Das ist ziemlich brauchbar. Vor allem, weil man dadurch sehr einfach die Position rausbekommt! =D
Title: Physikfragen
Post by: Kitty Hello on 2007-Nov-28
OK, aber das ist langsam, schon klar? NewtonBodyGetMatrix wandelt 16 floats in double um, und kopiert die dann in das Feld, das vorher alloziiert werden muss.
Ich mach's rein, aber ich werd's nicht nutzen.
Title: Physikfragen
Post by: WPShadow on 2007-Nov-28
Gibt's eine schnellere Methode das zu nutzen??? Und falls ja, wie? (Je schneller, desto besser!!!)

Benutze ich da gleich mat[12], mat[13] und mat[14]???

Eine letzte Frage bleibt noch: Wie setzte ich die Beschleunigung eines Körpers um? Wie man die Gravitation setzt, ist mir klar. Aber wie setzt man Kräfte aus irgendeiner Richtung bzw. eine Kraft, die in irgendeine Richtung treibt? (Habe leider keine Möglichkeit danach zu suchen!!!)
Title: Physikfragen
Post by: Schranz0r on 2007-Nov-28
NewtonBodySetForce
NewtonBodyAddForce


 ;) good luck, ist nicht wirklich schwer ;)
Title: Physikfragen
Post by: Kitty Hello on 2007-Nov-28
Oder mit NewtonBodyAddImpulse oder so...
Title: Physikfragen
Post by: Schranz0r on 2007-Nov-28
Argh..... vergessen :D
Title: Physikfragen
Post by: WPShadow on 2007-Nov-28
Guttttt.... Jetzt ist wirklich alles klar! Danke! *ggg*

PS.: tz tz tz, Schranzi, du läßt doch nicht etwa nach, oder? *lol*
Title: Physikfragen
Post by: BumbleBee on 2007-Nov-28
Quote from: WPShadowtz tz tz, Schranzi, du läßt doch nicht etwa nach, oder? *lol*
Ja, mit so kleinen Aussetzern fings bei mir auch an. ;)

Cheers
Title: Physikfragen
Post by: Schranz0r on 2007-Nov-28
BOAHHHHHHHHHH :D

5 Trilliarden Abmahnungen :D *Böseguck*

;)
Title: Physikfragen
Post by: WPShadow on 2008-Feb-05
Hi!

Ich habe hier mal wieder eine Frage:

Wie bekomme ich am Besten hin, daß ich X, Y und Z - Koordinate zuweisen kann?

Ich dachte an sowas wie:

NewtonBodySetX (als Kontrast zu NewtonBodyGetX)

aber irgendwie bekomme ich das alleine nicht hin!

Kann mir da jemand helfen?

Gruß

W.

PS.: Schönen Fasching - Dienstag!!! =D
Title: Physikfragen
Post by: Kitty Hello on 2008-Feb-05
Äh... das ist in der aktuellen Newton.gbas drin, oder!?
Title: Physikfragen
Post by: WPShadow on 2008-Feb-05
Zumindest hätte ich es noch nicht gefunden! Bloß

NewtonBodyGetX

um die Position zu kriegen, aber nicht

NewtonBodySetX

um auf die entsprechende Position zu setzen...
Title: Physikfragen
Post by: WPShadow on 2008-Feb-05
Hab gerade NewtonSDK durchsucht, aber leider nichts gefunden, das mit NewtonBodySetX vergleichbar wäre.

Und das Problem ist, daß ich das mit der Matrix nicht ganz hinbekomme...
Title: Physikfragen
Post by: Kitty Hello on 2008-Feb-05
netwonbodygetmatrix(body, mat[])
mat[12] = x
newtonbodysetmatrix(body, mat[])
Title: Physikfragen
Post by: Schranz0r on 2008-Feb-05
das hatten wir doch erst!

Wenn du mal bei einen Thread bleiben würdest, hättest du das gesehen:


Code (glbasic) Select
FUNCTION NewtonBodySetPositionX: body_index, posX
LOCAL mat[]
    NewtonBodyGetMatrix(body_index,mat[])
    mat[12] = posX
    NewtonBodySetMatrix(body_index,mat[])
ENDFUNCTION

FUNCTION NewtonBodySetPositionY: body_index, posY
LOCAL mat[]
    NewtonBodyGetMatrix(body_index,mat[])
    mat[13] = posY
    NewtonBodySetMatrix(body_index,mat[])
ENDFUNCTION

FUNCTION NewtonBodySetPositionZ: body_index, posZ
LOCAL mat[]
    NewtonBodyGetMatrix(body_index,mat[])
    mat[14] = posZ    
    NewtonBodySetMatrix(body_index,mat[])
ENDFUNCTION
@ Gernot:

Wolltest du das nicht mit in Newton einbauen, beim nächsten Update?
Title: Physikfragen
Post by: WPShadow on 2008-Feb-06
Habe es gestern Nachmittag doch noch gefunden!

NewtonBodySetPosition(body_index, x, y, z)

Entschuldigung! Hatte nicht gründlich genug gesucht...
Title: Physikfragen
Post by: Schranz0r on 2008-Feb-06
:D