Buchempfehlung
Visual Basic 6 Kochbuch
Visual Basic 6 Kochbuch
Viele praktische Tipps zum Programmieren mit Visual Basic 6, die sich oft auch auf FB übertragen lassen. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » Mathematik

Funktionen im Koordinatensystem darstellen

Lizenz:Erster Autor:Letzte Bearbeitung:
k. A.MitgliedLothar 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
Vergrößern
Screenshot des Resultats


Zusätzliche Informationen und Funktionen
  • Das Code-Beispiel wurde am 10.07.2007 von MitgliedLothar Schirm angelegt.
  • Die aktuellste Version wurde am 26.04.2020 von Mitgliedfreemichel gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen