|
Bugfixes am Forum
Subdomains aktiviert
Counterscript entfernt
|
| |
|
|
3D-Tutorial 1 |
|
|
Vertex u. Linien
Vektor oder Vertex - Was ist was?
Stellt Euch vor Ihr müsstest eine Linie auf einem Stück Papier zeichen. Was brauchst Ihr dafür? Klar, es werden zwei Punkte benötigt. Setzt mit dem Stift zwei Punkte
auf das Papier und verbindet diese. Das Ergebnis ist ein Strich (besser Linie ;) )
Eigentlich ganz einfach wenn mann nicht die Grundschule verschlafen hat ;)
Also eine Linie besteht aus einem Startpunkt und einem Endpunkt.
JETZT KOMMTS:
Jeder einzelne Punkt wird über zwei Koordinaten beschrieben, das wär einmal die X und zweitens die Y-Koordinate. Das heist wir haben eine 2-dimensionale Linie gezeichnet.
Wenn Ihr jetzt meint, Ihr braucht das obige Zeug (also den 2D Kramm) nicht um beispielsweise eine 3D-Engine zu schreiben, dann habt Ihrer Euch geschnitten, haha ;). Denn was später
folgen wird ist nämlich nur zwei Dimensional!
Merkt Euch: Ein Punkt wird als (2D)Vektor oder Vertex bezeichnet.
Welches Synonym Ihr jetzt für den Punkt nehmt bleibt Euch überlassen. Aber meistens bezeichnen Programmierer diesen Punkt als Vertex (mehrzahl Vertices).
ZUM PROGRAMMIEREN:
Da ich hauptsächlich unter C++ und VB programmiere und dieses Tutorial aber für AB2-Programmierer gedacht ist, kann ich momentan nur Pseudo-Code verwenden.
Grund: Ich bin momentan noch eine Niete in AmiBlitz2!
Bei Fragen zu der Umsetzung könnt Ihr im Amiforce-Forum oder der Amiforce-Mailingliste fragen stellen oder auf die Website von Amiforce gehen, dort gibt es sicherlich eine Lösung
dafür.
http://www.amiforce.de
Also, um mehrere Linien zu zeichen ist es notwendig eine Liste zu haben in der alle Punkte beschrieben sind (Denkt daran, jede Linie braucht zwei Punkte mit je 2 Koordinaten).
Was eignet sich am besten dafür? Klar ein Array!
Schaut also nach wie ein mehrdimensionales Array unter BB2 oder AB2 erstellt wird und wie man darauf zugreift!
Dies kann folgendermaßen aussehen (so ist es bei den meisten Programmiersprachen):
Ich habe ein 2-Dimensionales Array mit insgesamt 8 Elementen.
Punkt[0][0] = 10
Punkt[0][1] = 10
Punkt[1][0] = 40
Punkt[1][1] = 40
Punkt[2][0] = 10
Punkt[2][1] = 10
Punkt[3][0] = 80
Punkt[3][1] = 80
So in etwa sollte es bei Euch aussehen. Die ersten eckigen Klammern stehen für den Index (jeder Punkt wird indiziert - Schlüssel) die zweite eckige Klammer steht für die
Koordinate (0 für X und 1 für Y). Also:
Punkt 0, X = 10
Punkt 0, Y = 10
Punkt 1, X = 40
Punkt 1, Y = 40
Punkt 2, X = 10
Punkt 2, Y = 10
Punkt 3, X = 80
Punkt 3, Y = 80
Um jetzt Linien zeichnen zu lassen muss man in der Liste vom ersten Element (ab Punkt 0) immer Paare bilden (da ja jede Linie zwei Punkte hat!) und dann mit einer Funktion eine Linie
zeichnen lassen.
Anmerkung: Ich habe unter BB2 eine solche Linienzeichnen-funktion gesehen, allerdings weis ich nicht mehr wie sie heist. Diese kannst Du im 2D-Drawing-Besipiel von BB2 finden.
Jetzt ist die Frage, wie man alle Elemente der Funktionen übergeben kann. Die einfachste Lösung ist folgende: Gehe das Array paarweise durch und übergebe diese der Funktion.
So und jetzt muß ich leider mit Pseudo-Code anfangen (das wird sich aber sicherlich bald ändern)
Ich brauche dazu eine For-Schleife, schaut also auch hier nach wie diese unter BB2 oder AB2 funktioniert.
ZV als Integer (ZV ist unsere Zählervariable, Integer sollte vorerst
reichen, max. 32678 Elemente)
for ZV = 0 to AnzahlPunkte Step 2 (Zählt in zweier Schritten hoch)
Zeichne Punkt[ZV][0], Punkt[ZV][1], Punkt[ZV + 1][0], Punkt[ZV + 1][1]
next zv
Die Funktion im 2D-Drawing beispiel erwartet übrigens 4 koordinaten (perfekt für unsere Sache) nämlich X1, Y1, X2 und Y2 (und diverse anderes Zeug wie Farbe).
X1 und Y1 stehen für den ersten Punkt, X2 und Y2 für den zweiten. Also bestens für die For-schleife im obigen Beispielcode.
Tip: Schaut Euch genau das 2D-Drawing-Beispiel an, dort seht Ihr, wie man einen Screen erzeugt und Linien zeichnet. Was sehr wichtig ist, sucht Euch Beispiele in denen Array's angelegt
werden und darauf zugegriffen wird. Array's sind eines der wichtigsten bestandteile einer solchen Programmierung.
Für die kommenden Tutorials. Schaut nach wie benutzerdefinierte Datentypen erstellt werden.
Bis zum nächsten mal. S-terix
|
|
|
|
|
|