2013-05-18 18 views
5

Programistyczne rysowanie idealnego koła nie jest wcale trudne. Opiera się na bardzo prostej matematyce. Wprowadzasz dwa parametry (środek i promień) i wyprowadzasz okrąg.Rysowanie niedoskonałego okręgu

Ale jeśli nie masz narzędzi, które mogłyby ci pomóc, rysowanie koła swobodnego (jak podczas trzymania długopisu w dłoni) jest bardzo trudne! Gdybym chciał symulować osobę próbującą narysować okrąg, czy jest jakikolwiek algorytm, który mógłbym zastosować, który bierze trzy parametry (środek, promień i "czynnik nieważności") i używa wielkości trzeciej wartości do stworzenia losowych niedoskonałości w kręgu, wciąż tworząc coś, co wygląda jak człowiek próbujący narysować okrąg?

+2

Oto jedno podejście - http://mathematica.stackexchange.com/questions/11350/xkcd-style-graphs - które możesz dostosować lub dostosować do swoich celów. Jeśli będziesz wystarczająco mocno googlować, myślę, że znajdziesz implementacje również w innych językach. –

+0

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

Odpowiedz

1

Wykreśl okrąg jako serię łuków, zarówno "do wewnątrz", jak i "na zewnątrz", ponownie obliczając właściwy środek dla każdego segmentu potrzebnego do utrzymania punktu końcowego łuku w pewnej odległości od rzeczywistego obwodu.

1

Okrąg narysowany wolną ręką to losowo, ale nadal wygląda ciągły. Dodanie szumu do promienia może spowodować skoki, które wyglądają nierealistycznie.

Nieznaczna modyfikacja może nieco rozwiązać ten problem. Korzystając z macierzy Markova, podziel hałas na poziomy N i mają tylko pozycje tri-ukośne. Spowoduje to losowość, ale może przejść tylko do poziomów prev/next. Nadawanie jej wyglądu ciągłego.