Huhu!
Da der geliebte C64 leider ganz ganz schlecht in BASIC Linien zeichnet, habe ich einen Ausflug zum Amstrad CPC 464 unternommen. Der bessere Editor und das um Lichtjahre bessere Basic trieben mir Tränen des Zorns in die Augen wegen der Peek/Poke/And/Or-gien, die man am C64 in Basic betreiben muss, um Ähnliches in zwanzigfacher Verlangsamung zu erreichen. Das C64 Basic ist nicht schlecht, es kann alles, man kommt an alles dran, nur eben nicht schnell. Das C64 Basic ist ein Textmodus Basic, kein Grafikmodus Basic. Dafür atomisiert man dann in 6502 Assembler noch die kleinsten Arbeitsschritte, aber das Ergebnis ist dann wenigstens rasend schnell.
Mich interessiert aktuell das Thema Vektorgrafik. Ich habe nur die Vorbildung aus dem "C64 Wunderland der Grafik" Buch, wo u.a. Transformation und Kavaliersperspektive ohne Flucht erklärt werden. Die Transformation hätte es am CPC evtl. gar nicht gebraucht, der kennt nämlich einen Origin Befehl zum Setzen des Koordinaten-Mittelpunkts.
Mein Projekt bestand darin, einen sich drehenden Würfel optisch plausibel abzubilden und zwar echtzeitberechnet. Die Berechnungsergebnisse kann ich in eine Tabelle laufen lassen und das irgendwann am C64 in Assembler abspulen ohne Vertex-Berechnungen im Code.
Wie beim Sortierversuch vor einigen Wochen wollte ich mir bewusst etwas eigenes ausdenken. Daher habe ich z.B. nicht mit einer Z-Koordinate gearbeitet und der Koordinatenmittelpunkt liegt in der Mitte der Bodenplatte des Würfels, statt in der 3D-Mitte des Würfels, weswegen ich mit dem bestehenden Konzept Schwierigkeiten hätte, den Würfel animiert zu bewegen (wobei das trotzdem ginge). Rotation über mehrere Achsen kann ich aber mit dem Ansatz vergessen.
Der billige Trick in meinem Fall:
Ich lasse 2 gegenüberliegende Tangenten eines Kreises die Länge 2r nicht überschreiten und bilde Startpunkt und Enpunkt in 10-Grad-Schritten in einer Schleife um den Kreis herum ab. Die Punkte bilden die 4 Bodenpunkte des Würfels. Ich muss dann nur noch in y-Richtung stur 2r hochgehen und kann die oberen 4 Punkte bilden. diese müssen dann nur noch durch Linien korrekt verbunden und gezeichnet werden. Zeichnen, Rechnen, Löschen, Zeichnen, Rechnen, Löschen.. etc.
Ich war nicht in der Lage, die hinteren Linien anders einzufärben und im Hintergrund gezeichnet zu lassen so dass die von den Vordergrund-Linien überdeckt werden. Dazu hätte ich evtl. Double Buffering gebraucht und ich wollte ja was Eigenes ausdenken. Wenn man also genau hinschaut, überzeichnen sich die Linien nicht immer korrekt. Die optische Hervorhebung hilft aber trotzdem, die Rotation nachzuvollziehen ohne dass man nur noch wirre Linien sieht.
Probieren in WinCPC: Mit F11 Autotype öffnen und Listing aus der Zwischenablage einkopieren. Mit Ctrl Shift F4 das Einkopieren beschleunigen, dann mit CTRL Shift F4 den Turbo aus. Dann Return eingeben um sicher zu sein dass der Cursor "frei" ist und mit Run (Return) starten.
Alternativ die DSK einladen und mit run"cpccube.bas" starten.
Vielleicht hat noch jemand weiteres Zeug in 3D mit Basic gemacht? Mike? Tribar auch mal auf andere 8 Bitter portiert? Oder die Hutfigur? Oder in der Abbildung von Objekten v ersucht ("Elite Raumschiff"?).
Viele Grüße und guten Start ins neue Jahr,
Byteb.