Code-Beispiel
Funktionen im Koordinatensystem darstellen
Lizenz: | Erster Autor: | Letzte Bearbeitung: |
k. A. | Lothar Schirm | 26.04.2020 |
Das folgende Programmbeispiel zeigt, wie sich mit Hilfe des WINDOWS-Befehls ein einfaches Koordinatensystem darstellen laesst, in das Funktionskurven eingefuegt werden koennen. Wenn man die SUBs "OutText", "Koordinaten" und "ZeichneKurve" mit den DECLARE-Anweisungen in eine INCLUDE-Datei plaziert, hat man fuer viele mathematische Programme, in dem Funktionskurven grafisch dargestellt werden sollen, ein querschnittlich verwendbares Modul. Die SUB "OutText" ist eine Erweiterung von DRAW STRING und wird fuer die Beschriftung des Koordinatensystem verwendet.
DECLARE SUB OutText(x AS SINGLE, y AS SINGLE, Text AS STRING, _
Ausrichtung AS STRING)
DECLARE SUB Koordinaten (xmin AS SINGLE, ymin AS SINGLE, xmax AS SINGLE, _
ymax AS SINGLE, nx AS INTEGER, ny AS INTEGER, _
hor AS STRING, vert AS STRING, Text AS STRING)
DECLARE SUB ZeichneKurve (x() AS SINGLE, y() AS SINGLE, n AS INTEGER, _
Farbe AS INTEGER)
' ----------------------- Beispielprogramm: ----------------------
DIM AS INTEGER i
DIM AS SINGLE x(100), y1(100), y2(100), y3(100), dx
'Berechnung der Funktionen y1 = 2^x, y2 = ^3^x, y3 = 4^x (ablegen als Arrays):
dx = 7/100
FOR i = 0 TO 100
x(i) = -2+i*dx
y1(i) = 2^x(i)
y2(i) = 3^x(i)
y3(i) = 4^x(i)
NEXT i
'Graphikfenster oeffnen und Koordinatensystem mit Beschriftungen zeichnen:
SCREEN 12
COLOR 0, 15
CLS
Koordinaten(-2, 0, 5, 100, 7, 10, "x", "y", _
"y = 2^x: rot y = 3^x: blau y = 4^x: gruen")
'Funktionskurven ins Koordinatensystem zeichnen:
ZeichneKurve (x(), y1(), 100, 4)
ZeichneKurve (x(), y2(), 100, 1)
ZeichneKurve (x(), y3(), 100, 2)
LOCATE 29, 30: PRINT "Beenden: Beliebige Taste"
GETKEY
'---------------------- Beispielprogramm Ende ------------------
SUB OutText(x AS SINGLE, y AS SINGLE, Text AS STRING, Ausrichtung AS STRING)
' Gibt einen Text an pixelgenauen Koordinaten aus
' - x, y = (Sicht)koordinaten
' - Text = auszugebender Text
' - Ausrichtung = Position des Textes bezueglich (x, y):
' "l": linksbuendig (d.h. Text rechts von (x, y)
' "r": rechtsbuendig (d.h. Text links von (x, y)
' "z": zentriert.
DIM AS INTEGER xp, yp
'Umwandlung in Pixelkoordinaten:
xp = PMAP(x, 0)
yp = PMAP(y, 1) - 8
'Text plazieren:
SELECT CASE LCASE(Ausrichtung)
CASE "l": DRAW STRING (xp, yp), Text
CASE "r": DRAW STRING (xp - 8 * LEN(Text), yp), Text
CASE "z": DRAW STRING (xp - 8 * LEN(Text) / 2, yp), Text
END SELECT
END SUB
SUB Koordinaten(xmin AS SINGLE, ymin AS SINGLE, xmax AS SINGLE, ymax AS SINGLE,_
nx AS INTEGER, ny AS INTEGER, hor AS STRING, _
vert AS STRING, Text AS STRING)
' Koordinatenfeld mit linearen Achsenteilungen.
' Parameter:
' - xmin ... ymax definieren die Abmessungen des Darstellungsfeldes.
' - nx, ny = Zahl der Achsenabschnitte auf der x- bzw. y-Achse
' - hor, vert = Beschriftung fuer x-Achse bzw. y-Achse
' - Text = Bildunterschrift.
DIM AS INTEGER xlo, ylo, xru, yru, i
DIM AS SINGLE ax, ay, x, y
VIEW
WINDOW SCREEN
'Pixelkoordinaten des Darstellungsfeldes: xlo = xlinksoben usw.
xlo = 8 * 15 'Textspalte 15
ylo = 16 * 2 'Textzeile 2
xru = 8 * 75 'Textspalte 75
yru = 16 * 22 'Textzeile 22
'Beschriftung vertikale Achse:
OutText(xlo, ylo, STR(ymax) + SPACE(1), "r")
OutText(xlo, yru, STR(ymin) + SPACE(1), "r")
OutText(xlo, (ylo + yru) / 2, vert + SPACE(1), "r")
'Beschriftung horizontale Achse:
OutText(xlo, yru + 16, STR(xmin), "z")
OutText(xru, yru + 16, STR(xmax), "z")
OutText((xlo + xru) / 2 , yru + 16, hor, "z")
'Bildunterschrift:
OutText((xlo + xru) / 2 , yru + 32, Text, "z")
'Fenster fuer Graphik in Sichtkoordinaten definieren:
VIEW (xlo, ylo) - (xru, yru)
WINDOW (xmin, ymin)-(xmax, ymax)
'Teilung horizontale Achse:
ax = 0.995*(xmax - xmin) / nx
FOR i = 0 TO nx
x = xmin + i * ax: LINE (x, ymin)-(x, ymax)
NEXT i
'Teilung vertikale Achse:
ay = 0.995*(ymax - ymin) / ny
FOR i = 0 TO ny
y = ymin + i * ay: LINE (xmin, y)-(xmax, y)
NEXT i
END SUB
SUB ZeichneKurve (x() AS SINGLE, y() AS SINGLE, n AS INTEGER, Farbe AS INTEGER)
' Kurve durch die Punkte x(0), y(0) bis x(n), y(n) in der angegebenen Farbe,
' z.B. in das mit der SUB Koordinaten gezeichnete Koordinatensystem.
DIM i AS INTEGER
FOR i = 1 TO n
LINE (x(i - 1), y(i - 1))-(x(i), y(i)), Farbe
NEXT i
END SUB
Screenshot des Resultats:
Screenshot des Resultats
Zusätzliche Informationen und Funktionen | |||||||
---|---|---|---|---|---|---|---|
|
|