Libreria
Geometria
Giochi e geometria 2D (categoria ``geometria``).
Funzioni 22
angolo_traavvicinacerchi_si_toccanocerchio_tocca_rettangolocrea_puntodirezione_versodistanza_puntigradi_in_radiantiinterpolainterpola_puntolunghezza_vettoremuovi_versonormalizza_vettorepunto_casuale_in_rettangolopunto_in_rettangoloradianti_in_gradirettangoli_si_toccanorimbalzaruota_puntoscala_puntosomma_puntisottrai_punti
crea_punto(x, y)#
Un punto (o vettore) 2D, cioè la lista [x, y].
stampa(crea_punto(3, 4))[3, 4]
somma_punti(a, b)#
Somma due punti coordinata per coordinata.
Utile per spostare un punto di un vettore.
stampa(somma_punti([1, 2], [3, 4]))[4, 6]
sottrai_punti(a, b)#
Il vettore che va da b ad a (a meno b, coordinata per coordinata).
stampa(sottrai_punti([5, 7], [2, 3]))[3, 4]
scala_punto(punto, fattore)#
Moltiplica le due coordinate per lo stesso numero.
stampa(scala_punto([2, 3], 10))[20, 30]
lunghezza_vettore(punto)#
La lunghezza del vettore dall'origine al punto.
È la distanza di [x, y] da [0, 0].
stampa(lunghezza_vettore([3, 4]))5.0
normalizza_vettore(punto)#
Lo stesso vettore ma lungo 1 (stessa direzione).
Serve per avere una direzione pura, senza velocità.
stampa(normalizza_vettore([3, 4]))[0.6, 0.8]
distanza_punti(a, b)#
La distanza in linea retta fra due punti.
stampa(distanza_punti([0, 0], [3, 4]))5.0
angolo_tra(a, b)#
L'angolo in gradi (da 0 a 180) fra due vettori che partono dall'origine.
stampa(angolo_tra([1, 0], [0, 1]))90.0
ruota_punto(punto, gradi, centro = [0, 0])#
Ruota il punto attorno a centro, in senso antiorario.
stampa(ruota_punto([1, 0], 90))ruota_punto([3, 0], 180, centro = [1, 0])[0.0, 1.0]
punto_in_rettangolo(punto, rettangolo)#
vero se il punto è dentro il rettangolo (bordi inclusi).
Il rettangolo è [x, y, larghezza, altezza].
stampa(punto_in_rettangolo([2, 2], [0, 0, 5, 5]))vero
rettangoli_si_toccano(a, b)#
vero se i due rettangoli si sovrappongono o si toccano sul bordo.
Ogni rettangolo è [x, y, larghezza, altezza].
stampa(rettangoli_si_toccano([0, 0, 2, 2], [1, 1, 2, 2]))vero
cerchi_si_toccano(centro1, raggio1, centro2, raggio2)#
vero se i due cerchi si toccano o si sovrappongono.
stampa(cerchi_si_toccano([0, 0], 3, [5, 0], 3))vero
cerchio_tocca_rettangolo(centro, raggio, rettangolo)#
vero se il cerchio tocca o entra nel rettangolo.
Il rettangolo è [x, y, larghezza, altezza].
stampa(cerchio_tocca_rettangolo([10, 1], 2, [0, 0, 9, 9]))vero
interpola(inizio, fine, t)#
Il numero fra inizio e fine (t = 0 dà inizio, t = 1 dà fine).
È la "lerp" dei giochi: con t = 0.5 sei a metà.
stampa(interpola(0, 10, 0.5))5.0
interpola_punto(inizio, fine, t)#
Il punto fra due punti (t = 0 dà inizio, t = 1 dà fine).
Fa scivolare un oggetto da un punto all'altro.
stampa(interpola_punto([0, 0], [10, 20], 0.5))[5.0, 10.0]
avvicina(valore, verso, passo)#
Avvicina valore a verso di al più passo, senza superarlo.
Comodo per muovere un numero poco alla volta.
stampa(avvicina(5, 10, 3))stampa(avvicina(5, 10, 100))8 10
rimbalza(valore, minimo, massimo)#
Riporta valore fra minimo e massimo facendolo rimbalzare sui bordi.
A differenza di limita, che si ferma al bordo, qui il valore torna indietro come una pallina.
stampa(rimbalza(12, 0, 10))stampa(rimbalza(23, 0, 10))8 3
gradi_in_radianti(gradi)#
Trasforma un angolo da gradi a radianti.
gradi_in_radianti(180)radianti_in_gradi(radianti)#
Trasforma un angolo da radianti a gradi.
stampa(radianti_in_gradi(PI_GRECO))180.0
direzione_verso(da, a)#
L'angolo in gradi (da 0 a 360) per andare dal punto da al punto a.
0 è verso destra e si gira in senso antiorario.
stampa(direzione_verso([0, 0], [1, 0]))stampa(direzione_verso([0, 0], [0, 1]))0.0 90.0
muovi_verso(punto, bersaglio, velocita)#
Il nuovo punto dopo esserti mosso verso bersaglio di velocita.
Se sei più vicino di velocita arrivi esattamente sul bersaglio.
stampa(muovi_verso([0, 0], [10, 0], 3))[3.0, 0.0]
punto_casuale_in_rettangolo(rettangolo)#
Un punto [x, y] a caso dentro il rettangolo.
Il rettangolo è [x, y, larghezza, altezza]. Ogni volta dà un punto diverso.
stampa(punto_casuale_in_rettangolo([0, 0, 100, 100]))[18.06809138173505, 96.92430293749679]