Registriert: Di Nov 07, 2006 13:37 Beiträge: 83 Wohnort: Partenheim
Hi,
ich hab' mich nun langsam in Newton eingefunden und auch schon ein paar hübsche Ergebnisse erzielt.
Nun will ich aber gerne ein Auto bauen und das ohne den Newton-Vehicle Joint.
Ich benutze eine NewtonBox als Chassis und NewtonCylinder als Reifen.
Jeden Reifen verbinde ich mit der Chassis via Hinge Joint.
Mein Problem ist: Wenn ich lenke, dann müsste ich die PinDir des Hinge Joints verändern, das lässt sich aber weder per NewtonHinge... noch per UserCallback realisieren.
Ich kenn mich zwar mit Newton nicht so doll aus, aber wie wärs, wenn Du zwischen Vorderreifen und Chassis noch eine Struktur (lenkachse oder Einzelradaufhängung) reinklemmst und diese nochmal mit (senkrechtem) Hinge Joint mit dem chassis verbindest.
Dann kannst Du dieses Zwischenelement drehen und alles ist in Butter.
_________________ Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.
Registriert: Di Nov 07, 2006 13:37 Beiträge: 83 Wohnort: Partenheim
Das hab' ich schon versucht, nur gibt es einen zu langen "Schaltweg" beim Kollidieren, wenn ich zu viele Joints hintereinanderschalte.
Es könnte also durchaus passieren, dass ein Reifen teilw. im Boden versinkt.
Registriert: Di Nov 07, 2006 13:37 Beiträge: 83 Wohnort: Partenheim
Ich benutze einen Universal Joint, mit dem die Sache wahrscheinlich hervorragend funktionieren würde, wenn da nicht wieder ein neues Problem aufgetaucht wäre ...
Im Callback des Universal Joints gibt es den NewtonHingeSliderUpdateDesc, um das Verhalten des/der Winkels/Winkel des Joints zu beeinflussen. Der ist in C++ Umgebung, im Fall des Universal Joints, ein 2-Dimensionales Array, da sich der Universal Joint auch über 2 Achsen drehen lässt.
Ich benutze jedoch Pascal und habe noch nicht rausgefunden, wie ich über den Desc beide Winkel ansprechen kann.
Hat jemand 'ne Lösung, ohne dass ich auf C++ umsteigen muss?
Registriert: Di Nov 07, 2006 13:37 Beiträge: 83 Wohnort: Partenheim
Ich habe leider nur den "One And Only " C++ Header von Julio Jerez und benutze den Pascal Header von Sascha Willems.
Der eigentliche Aufruf der Callback-Funktion ist in der Newton.dll versteckt.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Die Funktion liefert dir bei einem Universaljoint ein Array aus 2 x NewtonHingeSliderUpdateDesc zurück, also für jede Achse. Da dies aber ein Pointer ist (Newton kommt halt aus der C-Welt) musst du dann halt ein wenig Zeigerarithmetik nutzen, also den Zeiger quasi erhöhen und wieder typecasten um an den zweiten NewtonHingeSliderUpdateDesc zu kommen.
Wenn TmpDesc vom Typ ^NewtonHingeSliderUpdateDesc ist, kann man aber auch TmpDesc := TmpDesc + 1 schreiben oder selbiges per Inc -- soviel Pointerarithmetik beherrscht Delphi
Dann musst du eine Kompileroption ala "typisierte Pointer" oder so aehnlich anmachen. Schlimmstenfalls geht es nur mit inc. Siehe auch http://bdn.borland.com/article/15926 . Das ist in jedem fall besser als die variante mit auf int casten, weil du damit das Problem bekommst, dass dein Code evtl. schlecht portierbar wird.
Registriert: Di Nov 07, 2006 13:37 Beiträge: 83 Wohnort: Partenheim
Vielen Dank an Sascha, Nico und The-Winner.
Es funktioniert tatsächlich ... bis auf die "+1" Variante. Die akzeptiert er bei mir auch nicht.
Und 'ne entsprechende Compileroption find' ich leider auch nicht. Liegt vielleicht an meiner Personal Ed.
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast
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.