Equazioni parametriche

Disegna per punti una circonferenza calcolando le coordinate x,y corrispondenti ad ogni angolo da a 360°

def x(t): return math.cos(t)
def y(t): return math.sin(t)

Modificando le due funzioni che legano le coordinate all’angolo si ottengono le diverse figure.

Alcuni parametri successivi permettono di adattare la figura alla finestra o di migliorarne l’aspetto

  • RAGGIO, il fattore di scala per mantenere il grafico nella finestra
  • GIRI. il numero di giri intorno all’origine
import math         # cos(), sin(), radians(), ...
import pygame

def xt(t): return math.cos(t)
def yt(t): return math.sin(t)
    
TITOLO ="Equazioni parametriche: cerchio" 
DIM    =800
RAGGIO =0.4*DIM     # Fattore di scala
GIRI   =1           # Giri completi
dAngolo=1           # Angolo tra due punti notevoli
FRAME  =60
raggio1=6
raggio2=4
COLOR1 =(32, 0, 64)
COLOR2 =(64, 0,128)
WIDTH  =DIM         # Larghezza
HEIGHT =DIM         # Altezza
W2     =WIDTH/2
H2     =HEIGHT/2
centro =(W2, H2)    # Centro dello schermo
NUMERO =360*GIRI
PUNTI  =[]          # Sequenza dei punti notevoli

pygame.init()
screen=pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption(TITOLO)
clock=pygame.time.Clock()

angolo=0
while angolo < NUMERO:
    t=math.radians(angolo)
    x=W2+RAGGIO*xt(t)
    y=H2-RAGGIO*yt(t)
    
    angolo += dAngolo
    
    punto=(x,y)
    PUNTI.append(punto)
    
    # Disegna linea e punto
    pygame.draw.aaline(screen, COLOR1, centro, punto  )
    pygame.draw.circle(screen, COLOR1, punto , raggio1)
    pygame.display.flip()
    clock.tick(FRAME)

# Ridisegna solo i punti
for punto in PUNTI:
    pygame.draw.circle(screen, COLOR2, punto, raggio2)
pygame.display.flip()

input("Premi INVIO per chiudere la finestra...")
pygame.quit()

Ellisse

Le ordinate sono ridotte di un quarto

Nelle prossime pagine sarà sufficiente modificare le due funzioni e adattare RAGGIO e GIRI secondo le necessità!

Equazioni parametriche – 1

Equazioni parametriche – 2

Equazioni parametriche – 3

Curve di Lissajous