abermals scheitert es bei mir an einfach Dingen.
Dieses "einfache" Ding, dass ich hierbei bewerkstelligen will ist das Nutzen der Physikengine ODE.
Dazu habe ich gleich folgendes Beispielprogramm geschrieben, welches im Prinzip 2 Kugeln anzeigt (Wie ich anzeige, zeige ich euch nicht... unwichtig... Es klappt aber!). Die Position wird auch super übertragen (Alles ist da, wo es hinsoll), aber der kleine physikalische Effekt, dass die einen Kugel nicht durch die andere geht, sondern abprallt.
Hier mal mein Code. Da ich in english leider nicht sehr begabt bin, konnte mit die doc von ode.org nur wenig helfen und das meiste habe ich probiert mit den beispielen zu lernen. Ohne erfolg, aber seht selbst:
(achja, viele variablen sind vielleicht nicht genutzt, aber das ist ja egal.. Das sagt einem Delphi ja!)
Code:
//Die Variablen:
var world:pdxworld;
masse:tdmass;
position:PdVector3;
mass : tdmass;
space : PdxSpace;
contactgroup : TdJointGroupID;
ground : PdxGeom;
sphere,sphere2 : PdxGeom;
contact : tdcontactgeom;
body,body2 : PdxBody;
//Initzeugs:
world:=dworldcreate;
space := dHashSpaceCreate(nil);
contactgroup := dJointGroupCreate (0);
dWorldSetGravity(world,0,9.81,0);
ground := dCreatePlane (space,0,0,1,0);
body:=dBodyCreate(world);
dBodySetPosition(body,x,y,0);
masse.mass:=60;
dBodySetMass(body,@masse);
dBodyEnable(body);
dMassSetSphere(mass,1,2);
dBodySetMass(body,@mass);
sphere := dCreatesphere (space,1);
dGeomSetBody (sphere,body);
body2:=dBodyCreate(world);
dBodySetPosition(body2,x,y+2,0);
dBodySetMass(body2,@masse);
dBodydisable(body2);
dBodySetMass(body2,@mass);
sphere2 := dCreatesphere (space,1);
dGeomSetBody (sphere2,body);
//Schleife BEGIN
dCollide(sphere,sphere2,1,contact,sizeof(contact));//Halt so Kolisionsabfrage... (funzt wohl nich...)
dWorldStep (world,thetime/1000);//thetime ist die Zeit seit dem letzem schleifendurchgang. /1000, damits schön langsam is
dJointGroupEmpty (contactgroup);
position:=dBodyGetPosition(body);//Postion des 1. bodys holen und damit vom object ändern. funzt!
Tja, ich habe es mittlerweile gelöst...
So richtig kapiere ich meinen Code zwar nicht, da doch SEHR viel aus Beispielen abgekupfert ist, aber hauptsache es funktioniert...
apropos.. mag nicht mal jemand ein (deutsches) Tutorial zu den absoluten Newtonanfängen schreiben? Danach kann man sich dann auch ganz gut durchs Englische wurschteln, aber zum Anfangen weiß ich dann nie, was ich schon verstanden habe, und was nicht. (wenns eben auf englisch ist)
Denke, dass ich mit ein wenig Zeit ein ODE-Tut schreiben würde.
habe mich darin jetzt festgefressen und denke, dass es durchaus nicht schlecht ist.
Mal sehen, ob ichs mache. Wäre natürlich mal ein noch nicht hier aufgegriffenes Thema...
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Wenn Tutorials geschrieben werden dann gleich im WIki-Format und dann zur durchsicht an einen Lektor schicken. Bei Newton bietet es sich an, da mal Sascha drübergucken zu lassen.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Das wär echt super, denn ohne Physik geht ja erst mal gar nix (naja, zumindest nur wenig. Ich glaub Knights Of The Old Republic gebraucht z.B. keine wirklich Physikengine)
Mitglieder in diesem Forum: 0 Mitglieder und 12 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.