2013-05-18 22 views
5

Disegnare in modo programmatico un cerchio perfetto non è poi così difficile. Si basa su una matematica molto semplice, dopotutto. Si inseriscono due parametri (un centro e un raggio) e si emette il cerchio.Disegnare un cerchio imperfetto

Ma se non si dispone di strumenti per aiutarti, disegnare un cerchio a mano libera (come in una penna in mano) è molto difficile! Se volevo simulare una persona che cercava di disegnare un cerchio, c'è un algoritmo che posso usare che prende tre parametri (un centro, un raggio e un "fattore di torto") e usa la grandezza del terzo valore per creare imperfezioni casuali nel cerchio, mentre produci ancora qualcosa che sembra riconoscibile come una persona che cerca di disegnare un cerchio?

+2

Ecco un approccio: http://mathematica.stackexchange.com/questions/11350/xkcd-style-graphs, che potresti essere in grado di adattare o adottare per i tuoi scopi. Se sei abbastanza duro su Google, penso che troverai le implementazioni anche in altre lingue. –

+0

http://codepen.io/dcdev/pen/upjDy – davidcondrey

risposta

1

Traccia il cerchio come una serie di archi, sia "verso l'interno" che "verso l'esterno", ricalcolando il centro corretto per ciascun segmento necessario per mantenere il punto finale dell'arco entro una certa distanza dalla circonferenza effettiva.

1

Un cerchio disegnato a mano libera è casuale ma sembra ancora continuo. Aggiungere rumore al raggio potrebbe portare a salti che sembrano non realistici.

Una leggera modifica può in qualche modo risolvere questo problema. Utilizzando una matrice Markov, dividere il rumore nei livelli N e avere solo voci tridimensionali. Ciò si tradurrà in casualità, ma può solo transitare solo ai livelli prev/next. Farlo sembrare continuo.

Problemi correlati