Registriert: Do Jun 18, 2009 07:17 Beiträge: 44 Wohnort: Gießen/Hessen
Wie der Titel schon andeutet, ich vermisse ganz arg den Beispiel-Source des Tutorials "Tutorial Objekt immer um eigene Achse drehen". Es ist ein bisschen wie Räuber und Gendarme spielen, vielleicht hat man's verstanden oder vielleicht auch nicht.
Ich benötige dieses Tutorial dringend um eine Rotation eines Körpers per Maus oder Tastatur-Eingabe zu kontrollieren. Doch leider wird im Tutorial bei der Rotation stellung auf den Source-Code genommen der leider nicht verfügbar ist.
_________________ Gruß Andreas (aka DeepCopy) - Sic Luceat Lux
Classified Directive: initialization write in function for finalization, repeat until public case uses begin, if not case type as default, var in virtual override for while, in case of class type type asm until read begin.
Registriert: Do Jun 18, 2009 07:17 Beiträge: 44 Wohnort: Gießen/Hessen
*push*
Hat keiner eine Idee woher ich das Beispiel für das Tutorial bekommen könnte?
Nebenbei: Raucht mir Kopf schon ganz ordentlich , und bin fast! durch ohne den Beispiel-Code.
Aber das is ne Zumutung für mich gewesen echt.
Auch die in dem Tutorial verwendenen Units existieren so nicht mehr, sind umbenannt oder in andere Units aufgeteilt worden.
Da sollte dann evtl. mal ein Neues her, oder?
_________________ Gruß Andreas (aka DeepCopy) - Sic Luceat Lux
Classified Directive: initialization write in function for finalization, repeat until public case uses begin, if not case type as default, var in virtual override for while, in case of class type type asm until read begin.
Registriert: Do Jun 18, 2009 07:17 Beiträge: 44 Wohnort: Gießen/Hessen
Ok, hier ist mein Beispielcode der auf den oben genannten Tutorialen basiert, allerdings habe ich mehr auf die Rotaion und das Verständis von Rotaionsmatrizen gesetzt. Um die Bewegung sollte dieses Beispiel recht leicht erweitert werden können.
Der Sourcecode sowie eine Binary sind im ZIP-File enthalten. Alle benenötigten Units ebenfalls.
Benötigt wird die OpenGl.dll
IDE: Lazarus 9.27
FPC: 2.2.5
OS: Windows 95 XP Vista / Linux (funktioniert noch nicht - wird mit SDL möglich)
Zum Programm:
Das Programm zeigt ein Demo-Objekt an das mit Mausdragging immer um die x, bzw. y-Achse gedreht werden kann, die alte Rotation wird in einer Modellmatrix gespeichert und auf das Modell angewand. Bei einer weiteren Drehung werden die Achsen des Initialsystems angewand, und so alle Achsen bezüglich dieses Systems ausgerichtet.
Mit der Taste CTRL (STRG) kann der View-Point im Weltkoordinatensystem geändert werden. Dabei kann man den Effekt der Objektrotation beobachten.
Auf der linken und rechten Seite sind die entsprechenden Modell- und View-Matrizen zu sehen, die Modell-Achsen des Demo-Objekts werden gezeichnet und die Vektorwerte werden an den Achsen gezeichnet.
Die Basis-Vektorwerte der Modellkoordinaten werden nicht aus der Modellmatrix entnommen sondern separat für sich berechnet, um zu zeigen das die Spalten der Rotationsmatrix exakt den Basis-Vektorwerten entsprechen.
Der Source-Code ist (ich hoffe gut) in Englisch dokumentiert .
_________________ Gruß Andreas (aka DeepCopy) - Sic Luceat Lux
Classified Directive: initialization write in function for finalization, repeat until public case uses begin, if not case type as default, var in virtual override for while, in case of class type type asm until read begin.
Zuletzt geändert von DeepCopy am Mi Aug 05, 2009 21:30, insgesamt 4-mal geändert.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7804 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Danke für deine Arbeit. SchodMC hat die Tutorials damals geschrieben. Er war das letzte mal vor 1 Jahr hier aktiv. Vielleicht ließt er mit.
Wenn du der Meinung bist, dein Code ist gut und bildet das im Tutorial beschriebene gut ab, können wir das ins DGL Repositry laden und über die Wiki Kategorie:Archiv verfügbar machen.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Do Jun 18, 2009 07:17 Beiträge: 44 Wohnort: Gießen/Hessen
Zitat:
Tutorial Objekt gedreht und dennoch nach vorne bewegt Tutorial Objekt immer um eigene Achse drehen
Also ehrlich gesagt sind die Tutoriale nicht so die wahre Pracht, erstens WEIL der Source-Code fehlt, und zweitens der Aufbau -der einige ziemlich große Verständisfehler aufweist (auch weil der Souce-Code fehlt)- und drittens und das ist das fast das wichtigste: keine aber auch absolut keine Bilder, Diagramme o.ä in beiden Tutorialen zur Drehung enthalten sind, manchmal weis man nicht was sich dreht und was sich bewegt, und wenn es sich bewegt wie bewegt es sich?
Das waren die Fragen mit denen ich mich herumschlagen musste!
Mein Vorschlag, da ich sowieso im Moment schwer mathelastig bin, ich scheibe die Tutoriale zur Drehung nochmal neu, unter den gleichen Überschriften mit den gleichen Inhalten, aber Didaktisch besser aufgebaut und mit Grafiken. So das man/frau es auch ohne Source-Code verstanden hat warum und wie das Drehen mit den Matrizen etwas zu tun hat, und warum die Spalten der Matrix die Bilder der Einheitsvektoren geannt werden, und so ne Sachen hat.
Ich wollte aber keine Herleitung der Rotationsmatrix oder die exakte Funkionsweise der Rotationsmatrix aufzeigen, sondern nur grob (aber verständlich) darauf für den Anwendungsfall der Drehung + Bewegung eingehen.
Und entsprechende Beispiel-Progamme für Tut1 und Tut2.
Natürlich nur wenn Interesse besteht, SchodMC damit einvertanden ist.
_________________ Gruß Andreas (aka DeepCopy) - Sic Luceat Lux
Classified Directive: initialization write in function for finalization, repeat until public case uses begin, if not case type as default, var in virtual override for while, in case of class type type asm until read begin.
Zuletzt geändert von DeepCopy am Di Aug 04, 2009 12:47, insgesamt 2-mal geändert.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7804 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Von meiner Seite aus kannst du das machen. Schick deine Version dann ans Team also z.B. an mich, Flo, Frase oder Nico. Wir gucken uns dass dann intern mal an und geben dir dann Feedback.
Prinzipiell können fachliche wie orthographische Fehler in den Tuts immer behoben werden. Stiländerungen sind kritischer, da man hierbei quasi subjektiv jemanden kritisiert. Das machen wir üblicherweise nicht bei veröffentlichten Tutorials. Derartige Sachen werden im Vorfeld mit den Autoren geklärt.
Das Prinzip eines lokalen Koordinatensystems zu arbeiten fand ich damals eigentlich passend erklärt. Allerdings habe ich das Tutorial mehr als Ideengeber und weniger als Analyseobjekt gesehen, welches ich vollständig durchdringen muss.
Man kann das Tutorial aber, da stimme ich zu, sicherlich noch ansprechender ausstatten. Bilder sind da sehr Willkommen, auch der Beispielcode wie bereits gesagt.
Wenn du es schaffst das Tutorial zu ergänzen statt es komplett neu zu schreiben, dann denke ich, werden wir damit keine Probleme haben eine neue Version ins Wiki zu stellen.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Do Jun 18, 2009 07:17 Beiträge: 44 Wohnort: Gießen/Hessen
Zitat:
Prinzipiell können fachliche wie orthographische Fehler in den Tuts immer behoben werden. Stiländerungen sind kritischer, da man hierbei quasi subjektiv jemanden kritisiert.
Das ist dann wohl Fakt! - Denn ohne Source-Code ist das Tutorial praktisch wertlos! Man kann beim besten Willen an vielen Stellen nur Raten.
Du weißt doch sicherlich selbst wie schwer es ist sich in den Code eines Anderen einzuarbeiten, wenn jetzt nur Code-Fragmente vorhanden sind und dann dort steht: "Dieser Code-Schnipsel stammt aus der FunktionXY" (Und die gibt's nirgendswo - na, vielen Dank). Und im zweiten Tutorial steht: "Das ist der Beispiel-Code aus dem ersten Tutorial" oder "siehe Code aus dem ersten Tutorial" und du hast nix in der Hand weils den dort Code dort ja nicht gibt, oder die Funktionen zum Teil nicht bekannt sind, oder die Signatur einfach weggelassen wurde, na viel Spass beim (er)finden....
Dann kommen solche Fragen auf wie: "Was verbirgt sich jetzt hinter: procedure VectorTransform(VectorA, VectorB);" Und die gibt es nur in der externen Unit, darüber hinaus ist es ein oft vorkommends negatives Beispiel in den genannten Tutorialen zur Rotataion.
Und weil ich es beim letzten Post vergessen habe, die in den Tutorialen verwendteten externen Unit's exisitieren nicht mehr in dieser Form wurden umbenannt oder aufgespalten, bin da nicht ganz sicher, mein Code funktioniert aber.
Auch solche Texte in den genannten Tutorialen wie: "Habt Ihr nicht verstanden, macht nichts - braucht Ihr auch nicht! " das ist dann ganz, ganz bittere Kost, wenn ich es verstanden habe, dann kann ich auch (in der Regel) mit einfachen Worten erklären was los ist, Rotation ist ja nicht die Einsteinsche Relativitäts-Theorie. Dann muss da kein krampfhafter Witz über die Unwissenheit gemacht werden. (ist aber nur meine bescheidene Meinung)
Zitat:
Wenn du es schaffst das Tutorial zu ergänzen statt es komplett neu zu schreiben, dann denke ich, werden wir damit keine Probleme haben eine neue Version ins Wiki zu stellen.
Und klar das hatte ich doch so gesagt:
Zitat:
Mein Vorschlag, da ich sowieso im Moment schwer mathelastig bin, ich scheibe die Tutoriale zur Drehung nochmal neu, unter den gleichen Überschriften mit den gleichen Inhalten, aber Didaktisch besser aufgebaut und mit Grafiken
Das wird ohnehin ein Umschiffen der Kernthemen des/der Tutorial(s/e), und damit zwangsweise zu einer Identität des/der vorherigen Tutorial(s/e) werden.
Ok, genug geredet! Ich mache mich einfach mal an die Arbeit und dann können wir das ja immer noch Ausdiskutieren, dann haben die Anderen auch mal die Möglichkeit mich zu krititsieren!
_________________ Gruß Andreas (aka DeepCopy) - Sic Luceat Lux
Classified Directive: initialization write in function for finalization, repeat until public case uses begin, if not case type as default, var in virtual override for while, in case of class type type asm until read begin.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7804 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Die Files sind Prinzipiell schon im Wiki vorhanden müssen aber noch passend umbenannt werden. Im Moment fehlt noch das "tut_" am Dateianfang um zu kennzeichnen, dass es ein Tutorial-File ist.
Boah ... ich bin an dem Tutorial fast verzweifelt ^ ^ Mein Objekt rotierte immer noch um das Weltkoordinaten-System, anstatt um die eigene Achse. Der Fehler war, dass ich die Matrizen in der falschen Reihenfolge multipliziert habe. Ich programmiere mit Java, nicht mit Delphi, deswegen konnte ich nicht das externe Unit verwenden, musste mir die Mathematik-Funktionen selbst schreiben. Für MatrixMultiply lag im Tutorial leider nur Assembler vor. Da die Parameter-Signatur aber war: objMatrix, rotMatrix dacht ich mir, ok wahrscheinlich objMatrix * rotMatrix. Falsch gedacht, genau anders rum muss man's machen. Jetzt klappt's auch. Schreibt dort bitte das noch genauer dazu, damit's nicht wem anderst genauso geht.
Mitglieder in diesem Forum: Bing [Bot] und 5 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.