Startseite
Amiforce 2.1     Amiforce-News Amiforce-News Amiforce-Forum Amiforce-Forum Amiforce-Chat/IRC-Chat Amiforce-Chat/IRC-Chat Gästebuch Gästebuch Kontakt mit dem Webmaster aufnehmen Kontakt mit dem Webmaster aufnehmen

Amiblitz3
Amiblitz2(alt)
Storm Wizard
Abakus-Design
Helpguide
Toolsguide
Tipps&Tricks
Gamesfun
Links
Download
Musik

Bugfixes am Forum
Subdomains aktiviert
Counterscript entfernt
  Navigation:   Index /  Amiblitz /  Amiblitz Lesematerial /  3D-Tutorial1 / 

3D-Tutorial 1


Vertex u. Linien




Author S-terix (Motto : We are Doomed!!!)
eMail: frank-diehl@gmx.de





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





Index



Impressum
Copyright © 2001-2007 by Cj-Stroker. Alle Rechte vorbehalten (Legal Info)
AMIGA und zugehörige Logos sind eingetragene Warenzeichen von Amiga, Inc.