Hi, ich würde gern so eine Animtion: http://www.youtube.com/watch?v=btgTwdvES1g http://www.youtube.com/watch?v=LUDM_oSndOY http://www.youtube.com/watch?v=NEacQxw05Rg http://www.youtube.com/watch?v=XgEYBqEIDEY Auf meinem Display laufen lassen. Ich habe den Displayinhalt im Speicher stehen. Display wird über Interrupt auf Stand gehalten. Kennt jemand ein AVR Projekt welches hierfür als Grundlage herhalten könnte. JJ
Jens schrieb: > Kennt jemand ein AVR Projekt welches hierfür als Grundlage herhalten > könnte. was brauchst du noch für Grundlagen? ist doch nur ein wenig Mathematik. Sin als Tabelle ablegen und das alles mit INT rechnen. Das ganze habe ich vor 15Jahren auf einem 286 ohne internet hinbekommen.
Hast Du in dem ersten Video mal auf "mehr Anzeigen" geklickt? Da ist ein Link zum Source Code.
Hi, nein, aber jetzt. Man man, das ist ja ein ordentliches asm Listing und auch ganz gut kommentiert. Naja, ich suche jedoch etwas in "c" hätte ich vielleicht dazuschreiben sollen. Dazu gehören so viele Teile, wie cos und sin implementierungen, Tabellen, Matritzen Konvertierungen etc. Ich habe die PICs vor 10 Jahren in asm programmiert, bei den AVRs bin ich dann jedoch gleich in c eingestiegen. Ich suche eigentlich ein kleines Projekt das beschreibt wie man das 3d Objekt in c anlegt, also wie man es zusammensetzt und dazu das Stück Software welches dieses Objekt letztendlich erzeugt, 2D wandelt und in meinen Grafikspeicher schreibt. J
Jens schrieb: > Ich suche eigentlich ein kleines Projekt das beschreibt wie man das 3d > Objekt in c anlegt, also wie man es zusammensetzt und dazu das Stück > Software welches dieses Objekt letztendlich erzeugt, 2D wandelt und in > meinen Grafikspeicher schreibt. und warum nicht mal selber gedanken machen? Programmieren ist docht nicht Copy&Paste.
@Hi Peter II,
ich habe doch schon programmiert, auf meinem Display laufen schon
Uhrzeiten, Zahlen, Daten etc...
>> Programmieren ist docht nicht Copy&Paste.
hmm, ich habe immer gedacht c ist genau dazu erfunden worden. Es geht
auch nicht darum nur zu kopieren, der Code wird dann eh angepasst. So
wäre es nur wesentlich leichter dort einzusteigen, was ist daran falsch?
Naja, ich möchte auch niemanden auf die Füße treten. Bei anderen
Projekten habe ich auch Teile verwendet wie z.B. DCF77 von Peter, oder
Funktionen zum Kreise und Linien zu zeichnen von APE oder Funktionen und
Programme um Schriftarten vom PC zum Controller gepackt abzuspeichern
und aufzurufen. Ich selber gebe meine Ergebnisse dann wieder hier ab.
Ein geben und Nehmen, oder?
Gruß,
JJ
Jens schrieb: > das beschreibt wie man das 3d > Objekt in c anlegt, Das Format kannst du dir prinzipiell selbst aussuchen, es könnte aber praktisch sein, etwas vorhandenes wie z.B. Wavefront OBJ zu nehmen. OBJ hat Vertex Koordinaten, wahlweise Faces und optional auch Oberflächendefs. Ist einfaches Textformat. Ich häng dir mal was kleines in dem Format an, einen simplen Würfel. Jens schrieb: > und dazu das Stück > Software welches dieses Objekt letztendlich erzeugt Das Stichwort lautet 'Transformationsmatrix'. Die Suchmaschine deiner Wahl hat da garantiert Treffer.
Jens schrieb: > auch nicht darum nur zu kopieren, der Code wird dann eh angepasst. So > wäre es nur wesentlich leichter dort einzusteigen, was ist daran falsch? Such dir ein Online-Tutorial, das dir die Grundlagen der 3D-Grafik näher bringt. Nur aus dem Code heraus verstehst du sowieso nicht, wie und warum das funktioniert. Ein bischen Theorie ist dazu schon notwendig - aber so schwer ist das auch wieder nicht. > Projekten habe ich auch Teile verwendet wie z.B. DCF77 von Peter, oder > Funktionen zum Kreise und Linien zu zeichnen von APE Und? Hast du auch verstanden, WIE sie funktionieren? Genau das ist der springende Punkt. Eine Zeitlang kann man auch ohne dieses Wissen leben. Aber irgendwann ist dann eben Ende der Fahnenstange. > Ein geben und Nehmen, oder? Ja - in erster Linie Wissen. Nur gibt es eben auch Dinge, die kann man mit den begrenzten Mitteln eines Forums nicht vernünftig vermitteln. Dazu gibt es dann (unter anderem) Tutorien. Soooo schwer ist 3D Grafik auf diesem Niveau auch wieder nicht. Aber eben auch nicht simpel genug, dass man es in 10 Sätzen erklären kann.
Karl Heinz Buchegger schrieb: > Soooo schwer ist 3D Grafik auf diesem Niveau auch wieder nicht. Aber > eben auch nicht simpel genug, dass man es in 10 Sätzen erklären kann. Für Peter II schon, der hat das alles schon vor 15 Jahren auf dem PC gemacht. Also kann er das auch für nen ATMega aus dem Ärmel schütteln, oder? ;)
Edson schrieb: > Karl Heinz Buchegger schrieb: >> Soooo schwer ist 3D Grafik auf diesem Niveau auch wieder nicht. Aber >> eben auch nicht simpel genug, dass man es in 10 Sätzen erklären kann. > > Für Peter II schon, der hat das alles schon vor 15 Jahren auf dem PC > gemacht. Also kann er das auch für nen ATMega aus dem Ärmel schütteln, > oder? ;) Die Mathe dahinter ist auf einem AVR auch nicht anders als auf einem PC. Und auf einem 286 war man auch damals schon gut beraten, wenn man sich der Sache mit Integer-Arithmetik näherte. (Und Peter II war nicht der einzige, der das vor 20 Jahren schon gemacht hat)
Edson schrieb: > Für Peter II schon, der hat das alles schon vor 15 Jahren auf dem PC > gemacht. Also kann er das auch für nen ATMega aus dem Ärmel schütteln, > oder? ;) warum denn nicht, klar werde ich auch ein paar tage damit verbingen. Aber wenn man die Grundlagen kennt, dann verbinge ich die Zeit wirklich mit Programieren und Anpassend an die Bedürfnisse vom AVR und nicht mit der Suche im Internet nach Code den ich nicht verstehe.
> Die Mathe dahinter ist auf einem AVR auch nicht anders als auf einem PC. Das ist mir schon klar. Vielleicht fallen dir ja noch Unterschiede im Bereich der Hardware auf. Und der Smilie am Ende meines Kommentars... > (Und Peter II war nicht der einzige, der das vor 20 Jahren schon gemacht > hat) Wahrscheinlich haben sich auch vor 30 Jahren schon Leute damit beschäftigt, aber was soll das bitteschön aussagen bzw. was hat der TE davon? Leider finde ich den Eintrag in einem anderen Forum nicht, wo das Thema in C auf einem PIC24 behandelt wurde. Vielleicht kann ich den Link am Wochenende nachreichen.
>>Und? Hast du auch verstanden, WIE sie funktionieren?
A)hmm, im ersten Schritt habe ich z.B. den Teil der die Auswertung der
DCF77 macht bei mir übernommen. Ich habe es nur nicht mit Interrups
gemacht. Also musste ich das erstmal geringfügig anpassen.
Leider hatte ich dann immer noch gelegentlich eine falsche Uhrzeit im
Display stehen. Also habe ich den Code von Peter umgeschrieben, den
Gedankengang der Fehlerauswertung und Biterkennung jedoch beibehalten.
Entstanden ist ein neuer Code. Jedoch länger als das superkurze Teil von
Peter, ich hatte Platz.
B)Bei den Buchstabentool von Ape war es ähnlich, dort KANN ein Buchstabe
auch gepackt abegspeichert werden. Im ersten Schritt habe ich den Teil
des Codes übernommen. Da mich das Thema RLE dann so interessiert hat,
habe ich dieses Thema tiefgehend ausgeleuchtet.
Später wollte ich dann Buchstaben mit transparenten Hintergrund aus
einer RLE entackten Datenmenge generieren, dies war nicht vorgesehen,
also habe ich die Auswerteroutine entsprechend angepasst, das war fast
aufwendiger als es gleich selbst zu machen, das Prinzip der RLE habe ich
jedoch komlett anhand des Codes verstanden und für mich angepasst.
C)Naja, ich habe mir auch mal die Funktionen zum Kreisezeichnen aus
einer GLib gezogen. Dabei ist mir aufgefallen das es unterschiedliche
Konzepte zu geben scheint, so manch eines Zeichnet kleine Kreise runder.
Hat etwas mit dem Runden zu tun wie sich dan rausgestellt hat, dazu
musst ich die rauskopierten Funktionen unterscheidlicher Glibs aber auch
untersuchen, verstehen und vergleichen....
Naja, bei dieser 3d Sache habe ich momentan auch kaum eine Vorstellung
wie das funktioniert -> Transformation, Drehmatrix, 3d Engine,
Matritzen... keine Ahnung, muss ich vielleicht ja erstmal auch nicht
komplett verstehen, ich schaue mir an was "unten" raus kommt, bringe das
in meinen Grafikspeicher. Dann schaue ich mir an was "oben" rein geht,
und spiele damit rum. Irgendwann kommt der Moment an dem ich neue
Objekte einbringen will, dann steige ich tiefer ein. :-)
JJ
>>Vielleicht kann ich den Link am Wochenende nachreichen. das wäre sehr interessant für mich. :-) Mal sehen was sich für Ansätze bieten. Thema Sinus und Cosinus allein kann denke ich schon Tage kosten, es läuft auf einem kleinen 8Bit AVR dann doch etwas anders ab. Aber wenn jemand die Tabellen schon passend für solche Darstellungen angelegt hat, würde ich sie gern verwenden. Wenn ich dann meinen Winkel, statt in Grad später in zehntel Grad angeben will, dann muss ich sie halt anpassen, dazu werde ich das Konzept dann beibehalten und die Tabellen vergrößern - nur mal als Beispiel - ich weiß ja nicht ob man diese nun an der Stelle wirklich so braucht - könnte es mir aber durchaus vorstellen... :-) JJ
Peter II schrieb: > Edson schrieb: >> Für Peter II schon, der hat das alles schon vor 15 Jahren auf dem PC >> gemacht. Also kann er das auch für nen ATMega aus dem Ärmel schütteln, >> oder? ;) > > warum denn nicht, klar werde ich auch ein paar tage damit verbingen. > Aber wenn man die Grundlagen kennt, dann verbinge ich die Zeit wirklich > mit Programieren und Anpassend an die Bedürfnisse vom AVR und nicht mit > der Suche im Internet nach Code den ich nicht verstehe. Dann reich doch mal einen schönen Link oder einen Literatur-Tipp zu den Grundlagen hier ein.
Jens schrieb: > Mal sehen was sich für Ansätze bieten. Thema Sinus und Cosinus allein > kann denke ich schon Tage kosten, nicht wirklich. > es läuft auf einem kleinen 8Bit AVR > dann doch etwas anders ab. Aber wenn jemand die Tabellen schon passend > für solche Darstellungen angelegt hat, die hast du dir mit Excel in 10 Minuten selbst erzeugt. > Wenn ich dann meinen Winkel, statt in Grad später in zehntel Grad > angeben will, dann muss ich sie halt anpassen, dazu werde ich das > Konzept dann beibehalten und die Tabellen vergrößern - nur mal als > Beispiel - ich weiß ja nicht ob man diese nun an der Stelle wirklich so > braucht - könnte es mir aber durchaus vorstellen... :-) Die Sin/Cos Funktionen sind nicht das eigentliche Problem. Die werden in der ganzen Geschichte nur an wenigen Stellen benötigt. Das eigentliche Problem ist, dass du es mit vielen Zahlen (den Ergebnissen der sin/cos Funktionen) zu tun hast, die sich allesamt im Bereich 0 bis 1 bewegen. Und die möchtest du darstellen bzw. miteinander verrechnen können, ohne dabei auf Floating Point zurückzugreifen. Da steckt der eigentliche Knackpunkt in der Implementierung (und die Behandlung der Fehlerfortpflanzung) 2 Matrizen 0.5 0.86602 0.0 0.0 | 0.0939 0.0 -0.342 0.0 -0.8662 0.5 0.0 0.0 | 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 | 0.342 0.0 0.939 0.0 0.0 0.0 0.0 1.0 | 0.0 0.0 0.0 1.0 miteinander multiplizieren können, ohne den Coprozessor zu bemühen, um dann eine Gesammatrix, zu erhalten mit der dann 200 Vektoren multiplizert werden, deren Werte nicht im Bereich 0 bis 1 liegen, sondern Positionen im Raum darstellen. Das Sin/Cos 'Problem' kannst du lange Zeit ignorieren. Das ist nur das Tüpfelchen auf dem i und dessen Vermeidung dient dann unter anderem auch dazu Flash-Platz einzusparen. Wer Vektoralgebra macht und allen Ecken und Enden die Winkelfunktionen benötigt, macht was falsch.
Edson schrieb: > Peter II schrieb: >> Edson schrieb: >>> Für Peter II schon, der hat das alles schon vor 15 Jahren auf dem PC >>> gemacht. Also kann er das auch für nen ATMega aus dem Ärmel schütteln, >>> oder? ;) >> >> warum denn nicht, klar werde ich auch ein paar tage damit verbingen. >> Aber wenn man die Grundlagen kennt, dann verbinge ich die Zeit wirklich >> mit Programieren und Anpassend an die Bedürfnisse vom AVR und nicht mit >> der Suche im Internet nach Code den ich nicht verstehe. > > Dann reich doch mal einen schönen Link oder einen Literatur-Tipp zu den > Grundlagen hier ein. Na zb. Foley, Van Dam Computer Graphics, Principles and Practice
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.