Inviluppo di circonferenze – 3

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

Lascia un commento