Lemniscata
L’iperbole viola ha i vertici in (-100, 0) e (+100, 0).
Inviluppo di circonferenze con centro sull’iperbole e passanti per il centro dell’iperbole (0, 0).

from vpython import *
SIZE = 800
DURATA = 6 # Durata dell'animazione
DIM = SIZE/2 # Dimensione quadrante
x_start = 100 # Prima ascissa
x_stop = DIM-x_start # Ultima ascissa
c = x_start**2 #
DISTANZA = (x_stop-x_start) # DOMINIO x
Ncirco = 30 # Numero circonferenze in un quadrante
DELTA_X = DISTANZA/Ncirco # Passo x
RATE = Ncirco//DURATA # Numero cerchi al secondo
NCIRCO = 60 # Numero punti
DELTA_A = tau/NCIRCO # Passo circonferenze
graph(title="Lemniscata",
width=SIZE, height=SIZE, xmin=-DIM, ymin=-DIM, xmax=DIM, ymax=DIM,
fast=False)
gf1=gcurve(color=color.purple, width=4)
gf2=gcurve(color=color.purple, width=4)
gf3=gcurve(color=color.purple, width=4)
gf4=gcurve(color=color.purple, width=4)
def circonferenza(xc, yc, raggio):
gc = gcurve(color=color.red)
angolo = 0
for i in range(NCIRCO+1):
x = xc+raggio*cos(angolo)
y = yc+raggio*sin(angolo)
gc.plot(pos=(x,y))
angolo += DELTA_A
x = x_start
for i in range(Ncirco):
rate(RATE)
y = sqrt(x**2 - c)
r = dist((x,y), (0,0))
gf1.plot(pos=( x, y)); circonferenza( x, y, r)
gf2.plot(pos=(-x, y)); circonferenza(-x, y, r)
gf3.plot(pos=( x,-y)); circonferenza( x,-y, r)
gf4.plot(pos=(-x,-y)); circonferenza(-x,-y, r)
x += DELTA_X
Strofoide
Inviluppo di circonferenze con centro sulla parabola e passanti per il punto simmetrico rispetto al fuoco

from vpython import *
SIZE = 800
DURATA = 6 # Durata dell'animazione
DIM = SIZE/2 # Dimensione quadrante
c = -100 # Prima ordinata
c2 = 2*c #
v = 0 #
a = -1/(4*c) #
x_stop = DIM-100 # Ultima ascissa
Ncirco = 50 # Numero circonferenze a destra
DELTA_X = x_stop/Ncirco # Passo x
RATE = Ncirco//DURATA # Numero cerchi al secondo
NCIRCO = 60 # Numero punti
DELTA_A = tau/NCIRCO # Passo circonferenze
graph(title="Strofoide",
width=SIZE, height=SIZE, xmin=-DIM, ymin=-DIM, xmax=DIM, ymax=DIM,
fast=False)
gf1=gcurve(color=color.purple, width=4)
gf2=gcurve(color=color.purple, width=4)
def circonferenza(xc, yc, raggio):
gc = gcurve(color=color.red)
angolo = 0
for i in range(NCIRCO+1):
x = xc+raggio*cos(angolo)
y = yc+raggio*sin(angolo)
gc.plot(pos=(x,y))
angolo += DELTA_A
x = 0
for i in range(Ncirco):
rate(RATE)
y = a*(x**2) + c
r = dist((x,y), (0, c2))
gf1.plot(pos=( x, y)); circonferenza( x, y, r)
gf2.plot(pos=(-x, y)); circonferenza(-x, y, r)
x += DELTA_X