Entwickler-Ecke

Multimedia / Grafik - Vektoren zeichnen, aber wie?


Pyr0cracker - Mi 02.04.03 12:59
Titel: Vektoren zeichnen, aber wie?
Hi, ich hab mal wieder nen kleines problem.
also, ich will ein Programm schreiben, das Vektoren errechnet und zeichnet. Dabei weiss ich nichts über das zeichnen.
kann mir jemand weiterhelfen?

gruß,


inselberg - Mi 02.04.03 13:04

in welchem raum ?

2 dimensionalem, 3 dim oder n-dim

weil n dim. (n > 3) würd mich auch mal interessieren ;)


Pyr0cracker - Mi 02.04.03 18:23

nur 2d, in der form

Quelltext
1:
2:
(2)+(4)
 5    3
(war das so?)

Zitat:
n dim. (n > 3) würd mich auch mal interessieren

wie soll denn das gehen?


Alibi - Mi 02.04.03 18:45

Einen 2D Vektor zu zeichnen auf einem Canvas dürfte doch nicht schwer sein.
Nimm ein Achsenkreuz und zeichne einen Strich vom Nullpunkt zu dem Punkt, auf den der Vektor zeigt. Bei (1 1) wäre das ein Strich von 0 zu (1/1). Ein Pfeil auf dem Punkt wäre natürlich auch noch angebracht. :)


Pyr0cracker - Mi 02.04.03 18:57

tut mir leid, kann ich noch nicht, kannst du mir ein kleines code bsp geben?

gruß,


Alibi - Mi 02.04.03 19:14

Hi,
können: NP, machen: Nein. :)
Der Grund ist einfach, wenn du dich intensiver mit dem Thema beschäftigst lernst du wirklich ne Menge. :)

Paar Hinweise sind natürlich nicht verkehrt.
Delphis Koordinatensystem beginnt dummerweise oben Links. Du hast sicherlich schonmal bemerkt, dass ein größerer Top-Wert (Praktisch die Y-Achse) eine Komponente weiter nach unten anstatt nach oben setzt. :)

Du müsstest also den Mittelpunkt umbauen und die Y-Achsen-Richtung umkehren.

Das ist leicht, einfach die Hälfte der Zeichenfläch zu den Zielkoordinaten hinzuaddieren und bei dem Y-Wert das umgekehrte Vorzeichen nehmen.

Dann ist noch die Längeneinheit von 1 Pixel lästig, bisschen klein. Einfach die fertigen Koordinaten mit der Wunschlänge multiplizieren.

Beispiel, die Koordinate 1/2 mit einer Längeneinheit von 20 Pixeln:

x := (1 + (Image1.Width / div 2)) * 20;
y :=- (2 + (Image1.Height div 2)) * 20;

Mit Canvas.MoveTo gehst du zum gewünschten Startpunkt der Linie, 0/0. Also in dem Fall (Image1.Width Div 2)/(Image1.Height div 2).
Und mit LineTo zeichnest du dann die Linie.