Un epicicloidale è la curva un punto su un cerchio rende mentre rotola intorno un altro cerchio. Un ciclone è la forma che un punto di un poligono regolare crea mentre rotola su un piano. Un epicyclogon è la curva tracciata da un punto su un poligono regolare mentre ruota attorno ad un altro.
Scrivere un programma che disegna un epicyclogon dato r, r1, r2, n1, n2:
r = number of clockwise revolutions rolling polygon makes around stationary polygon (any real number as limited by float values)
r1 = distance from center of stationary polygon to each of its vertices (positive real number)
r2 = distance from center of rolling polygon to each of its vertices (positive real number)
n1 = number of sides stationary polygon has (integer greater than 2)
n2 = number of sides rolling polygon has (integer greater than 2)
Gli appunti
- Quando
rè negativo, il rullo dovrebbe andare in senso antiorario . - Infatti
r, si verifica una rivoluzione quando la linea che collega i centroidi delle due forme si estende di 360 gradi. Questa nozione viene espansa per includere tutti i valori dir. (Quindi in un quarto di giro la linea che collega i centroidi si estende di 90 gradi.) - Questi argomenti dovrebbero provenire dalla riga di comando o il tuo programma dovrebbe richiederli (ad es. Con Python
input()). r1er2sono l'uno rispetto all'altro, non le dimensioni dell'immagine. Quindi puoi impostare una "unità" come qualsiasi numero di pixel effettivi.
Il punto che devi tracciare è uno dei vertici della forma rotolante. Le forme devono iniziare con questo vertice che tocca un vertice stazionario e due lati adiacenti:

I vertici di partenza esatti e l'angolo del poligono stazionario non contano.
Produzione
L'output dovrebbe andare a un'immagine di almeno 600x600 pixel (o con una dimensione variabile che può essere impostata su 600). Deve mostrare l'intera curva dell'epicyclogon specificata dai parametri, ben inquadrata nell'immagine.
Anche i poligoni rotanti e fissi devono essere disegnati (con il rullo nello stato finale). Le due forme e l'epicyclogon dovrebbero avere tre colori notevolmente diversi.
Ci deve essere anche un modo semplice per non disegnare i poligoni (è sufficiente una modifica truea falsenel codice).
Mostraci almeno 2 immagini in uscita. Va bene ridurli se necessario.
punteggio
Vince il codice più breve che produce immagini di output valide.
bonus
- Meno 50 byte se l'output è una gif animata (o simile) della curva disegnata.
- Meno 150 byte se si lascia
n1e sin2prende il valore 2 in modo che le forme diventino segmenti di linea di lunghezza2 * r1(or2), "rotolandosi" l'uno attorno all'altro. Il modo in cui gestiscirquandon1en2sono 2 dipende da te poiché i centroidi non ruotano l'uno attorno all'altro come fanno in altri casi. (Non "rotolare" affatto non conta come gestirlo.)
Dal momento che sono abbastanza ansioso di vedere questa idea del romanzo ben eseguita (e non è esattamente una passeggiata), assegnerò 150 rappresentanti di taglie al vincitore. Il concorso terminerà lo stesso giorno in cui si esaurisce la taglia.
La taglia non sarà assegnata al vincitore se è chiaro che hanno semplicemente riscritto la maggior parte del codice da un'altra presentazione.
Le funzioni di libreria che già si verificano (se ce ne sono) non sono consentite.
Nota: questo è venuto dalle mie domande rimanenti che chiunque è libero di pubblicare. Ma se nessun altro li pubblica, c'è una buona possibilità che lo farò in tempo. : P




