import pygame from math import sin, cos minx = -3 maxx = 6 miny = -2 maxy = 5 pixel_pro_einheit = 50 schrittweite = 0.01 # Funktionen, deren Graph zu zeichnen ist def f(x): return x**2 def g(x): return -1/3*x+1 def h(x): return sin(x) schwarz = (0, 0, 0) weiss = (255, 255, 255) grau = (63, 63, 63) rot = (255, 0, 0) gruen = (0, 255, 0) blau = (0, 0, 255) breite = (maxx - minx) * pixel_pro_einheit hoehe = (maxy - miny) * pixel_pro_einheit pygame.init() fenster = pygame.display.set_mode((breite+1, hoehe+1)) pygame.display.set_caption("Funktionsgraphen zeichnen") def bildschirmkoordinaten(x, y): # Umrechnung der Koordinaten aus dem gewünschten Koordinatensystem in Fenster-/Bildschirmkoordinaten. px = (x - minx) * pixel_pro_einheit py = hoehe - (y - miny) * pixel_pro_einheit return [px, py] def linie(x0, y0, x1, y1, farbe=weiss, breite=0.05): pygame.draw.line(fenster, farbe, bildschirmkoordinaten(x0, y0), bildschirmkoordinaten(x1, y1), width=round(breite * pixel_pro_einheit)) def punkt(x, y, farbe=weiss, radius=0.05): pygame.draw.circle(fenster, farbe, bildschirmkoordinaten(x, y), radius * pixel_pro_einheit) fenster.fill(schwarz) # vertikales Raster for x in range(minx, maxx): linie(x, miny, x, maxy, grau) # horizontales Raster for x in range(minx, maxx): linie(minx, x, maxx, x, grau) # x-Achse linie(minx, 0, maxx, 0) for x in range(minx, maxx): linie(x, -0.1, x, 0.1) linie(maxx - 0.3, -0.3, maxx, 0) linie(maxx - 0.3, 0.3, maxx, 0) # y-Achse # x-Achse linie(0, miny, 0, maxy) for y in range(miny, maxy): linie(-0.1, y, 0.1, y) linie(-0.3, maxy - 0.3, 0, maxy) linie(0.3, maxy - 0.3, 0, maxy) x = minx while x < maxx: punkt(x, f(x), rot) punkt(x, g(x), gruen) punkt(x, h(x), blau) x = x + schrittweite pygame.display.update() pygame.image.save(fenster, "graph-2d.jpg") ende = False while not ende: pygame.display.update() for ereignis in pygame.event.get(): if ereignis.type == pygame.QUIT: ende = True pygame.quit()