File:PuroRotolamentoCirc.gif
Da Wikipedia, l'enciclopedia encyclopedia
PuroRotolamentoCirc.gif (240 × 240 pixel, dimensione del file: 149 KB, tipo MIME: image/gif, ciclico, 159 frame, 1,6 s)
Questo file e la sua pagina di descrizione (discussione · modifica) si trovano su Wikimedia Commons (?) |
Dettagli
DescrizionePuroRotolamentoCirc.gif |
Italiano: Moto di puro rotolamento di un disco su una circonferenza |
Data | |
Fonte | Opera propria |
Autore | Cielo Francesco |
Immagine fatta con processing
Ecco il codice, i parametri sono tutti commentati in modo da renderne facile la modifica per chi volesse. Le impostazioni iniziali sono nella funzione setup.
/* * Moto di puro rotolamento di un disco su una circonferenza * */ int sz; // intero che moltiplicato per 16 da la dimensione in // pixel dell'immagine int R; // raggio della circonferenza int r; // raggio del disco float nu; // frequenza (giri al sec) di rotazione del disco attorno // alla circonferenza float phi; // angolo tra il centro del disco e l'asse orizzontale float theta; // angolo tra il punto che si vuole osservare sul disco e // l'asse che collega i due centri int nDent; // numero di dentini da disegnare sul disco //variabili per poter calcolare la velocità float x, y; float dx, dy, dt; void setup() { sz = 15; size(16*sz, 16*sz); frameRate(20); R = width/4; r = width/16; phi = -PI; theta = 0; nu = 1.0/8; nDent = 3; } void draw() { background(255); dt = 1.0/frameRate; // così la velocità esce in pixel al secondo =P phi = phi + TWO_PI*nu/frameRate; theta = PI + (phi*R)/r; disegnaCirconferenza(); disegnaDisco(); if((phi >= -HALF_PI) && (phi <= -HALF_PI+TWO_PI)) saveFrame("img/pr-####.png"); } void disegnaCirconferenza() { noFill(); ellipse(width/2, height/2, 2*R, 2*R); //circonferenza fill(0); ellipse(width/2, height/2, 4, 4); //centro // disegno dei dentini for(int i = 0; i< nDent*R/r; i++) { float a = i*TWO_PI/(nDent*R/r); float px = 0.98*R*cos(a) + width/2; float py = 0.98*R*sin(a) + height/2; float dentX = 0.9*R*cos(a) + width/2; float dentY = 0.9*R*sin(a) + height/2; line(dentX, dentY, px, py); } } void disegnaDisco() { float px, py, tmp; float cx, cy; float dentX, dentY; cx = (R + r)*cos(phi); cy = (R + r)*sin(phi); tmp = r*cos(theta) + (R + r); py = r*sin(theta); px = cos(phi)*tmp - sin(phi)*py; py = sin(phi)*tmp + cos(phi)*py; // calcolo del vettore velocità (divisa per due per farcela stare // nell'immagine anche quando è abbastanza grande) dx = (px - x)/dt/2; dy = (py - y)/dt/2; x = px; y = py; cx = width/2 + cx; cy = height/2 + cy; px = width/2 + px; py = height/2 + py; // disco fill(230); ellipse(cx, cy, 2*r, 2*r); fill(0); ellipse(cx, cy, 4, 4); // punto di contatto fill(0, 0, 255); ellipse(R*cos(phi) + width/2, R*sin(phi) + height/2, 4, 4); // punto da osservare fill(255, 0, 0); ellipse(px, py, 4, 4); line(cx, cy, px, py); //velocità stroke(255, 0, 0); line(px, py, px+dx, py+dy); stroke(0); // disegno dei dentini for(int i = 0; i<nDent; i++) { float a = i*TWO_PI/nDent + theta; tmp = 0.9*r*cos(a) + (R + r); py = 0.9*r*sin(a); px = cos(phi)*tmp - sin(phi)*py; py = sin(phi)*tmp + cos(phi)*py; tmp = 0.8*r*cos(a) + (R + r); dentY = 0.8*r*sin(a); dentX = cos(phi)*tmp - sin(phi)*dentY; dentY = sin(phi)*tmp + cos(phi)*dentY; line(dentX + width/2, dentY + height/2, px + width/2, py + height/2); } }
Licenza
Io, detentore del copyright su quest'opera, dichiaro di pubblicarla con la seguente licenza:
È permesso copiare, distribuire e/o modificare questo documento in base ai termini della GNU Free Documentation License, Versione 1.2 o successive pubblicata dalla Free Software Foundation; senza alcuna sezione non modificabile, senza testo di copertina e senza testo di quarta di copertina. Una copia della licenza è inclusa nella sezione intitolata Testo della GNU Free Documentation License.http://www.gnu.org/copyleft/fdl.htmlGFDLGNU Free Documentation Licensetruetrue |
Questo file è disponibile in base alla licenza Creative Commons Attribuzione-Condividi allo stesso modo 3.0 Unported | ||
| ||
Questo tag di copyright è stato aggiunto nell'ambito dell'aggiornamento della licenza dei progetti Wikimedia.http://creativecommons.org/licenses/by-sa/3.0/CC BY-SA 3.0Creative Commons Attribution-Share Alike 3.0truetrue |
Elementi ritratti in questo file
raffigura
27 nov 2008
image/gif
Cronologia del file
Fare clic su un gruppo data/ora per vedere il file come si presentava nel momento indicato.
Data/Ora | Miniatura | Dimensioni | Utente | Commento | |
---|---|---|---|---|---|
attuale | 23:07, 27 nov 2008 | 240 × 240 (149 KB) | Skyhc | {{Informazioni file |Descrizione = Moto di puro rotolamento di un disco su una circonferenza |Autore = Cielo Francesco }} |
Pagine che usano questo file
La seguente pagina usa questo file:
Metadati
Questo file contiene informazioni aggiuntive, probabilmente aggiunte dalla fotocamera o dallo scanner usati per crearlo o digitalizzarlo. Se il file è stato modificato, alcuni dettagli potrebbero non corrispondere alla realtà.
Commento del file GIF | whirlgif 3.04 (c) dino@danbbs.dk 159 images |
---|