Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Jul 13, 2025 23:09

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Problem mit Newton Joint
BeitragVerfasst: Mi Dez 06, 2006 13:37 
Offline
DGL Member
Benutzeravatar

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.

Danke,
Conan

_________________
THE TRUTH IS NOT OUT THERE!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 06, 2006 13:45 
Offline
DGL Member

Registriert: Mo Dez 20, 2004 08:58
Beiträge: 442
Wohnort: Mittweida (Sachsen)
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 06, 2006 23:33 
Offline
DGL Member
Benutzeravatar

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.

_________________
THE TRUTH IS NOT OUT THERE!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 12, 2006 15:07 
Offline
DGL Member
Benutzeravatar

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? :?

Danke,
Conan

_________________
THE TRUTH IS NOT OUT THERE!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 12, 2006 20:44 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
Wenn du die exakte C++ Definition lieferst, kann man die sicher in Delphi übersetzen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 12, 2006 22:15 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 07, 2006 13:37
Beiträge: 83
Wohnort: Partenheim
Ich habe leider nur den "One And Only :wink: " 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. :(

_________________
THE TRUTH IS NOT OUT THERE!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 12, 2006 22:25 
Offline
DGL Member
Benutzeravatar

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.

Müsste in etwa so gehn :
Code:
  1. TmpDesc :=  Pointer(Integer(desc)+SizeOf(NewtonHingeSliderUpdateDesc ))^;

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 13, 2006 07:55 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Sascha Willems hat geschrieben:
Code:
  1. TmpDesc :=  Pointer(Integer(desc)+SizeOf(NewtonHingeSliderUpdateDesc ))^;

Wenn TmpDesc vom Typ ^NewtonHingeSliderUpdateDesc ist, kann man aber auch TmpDesc := TmpDesc + 1 schreiben oder selbiges per Inc -- soviel Pointerarithmetik beherrscht Delphi ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 13, 2006 08:55 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
die +1 variante unterstützt delphi bei mir nicht


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 13, 2006 10:04 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Dez 14, 2006 13:04 
Offline
DGL Member
Benutzeravatar

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.

Macht aber gar nichts, solange "Inc" es tut.

Vielen Dank noch mal,
Conan

_________________
THE TRUTH IS NOT OUT THERE!


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.014s | 14 Queries | GZIP : On ]