„Yo Dawg i herd you like fractals so we put a fractal in yo fractal so you can fractal while u fractal.“
Xzibit
Prostě přiznej si to, fraktály jsou kůl. A kdo by neznal kochovu křivku? Prostě vezmeš čáru (teda 2D Vektor) a rozdělíš ji na tři části.
Pak na prostřední třetině vytvoříš rovnostranný trojúhelník.
A tohle pak rekurzivně opakuješ pro každou čáru.
Sounds easy, right? Jasně, posunout vektor nebude problém, s čím jsem se asi hodinu trápil je otočení. Nejdřív si člověk prohodí cos a sin, a říká si, proč se to otáčí o podivné hodnoty. Po strastiplném trápení navíc zjistí, že má špatně znaménka. Takže pokud hloubáš, jak na to, tady je kód:
1 2 3 |
Vector tmpVector = new Vector(); // Nový vektor tmpVector.X = vectorkOtoceni.X * Math.Cos(uhelVRadianech) - vectorkOtoceni.Y * Math.Sin(uhelVRadianech); tmpVector.Y = vectorkOtoceni.X * Math.Sin(uhelVRadianech) + vectorkOtoceni.Y * Math.Cos(uhelVRadianech); |
Datový typ Vector není obyčejně ve VisualC# definován, proto si ho musíš nejprve navolit do preferencí. Project > Add Reference.. > WindowsBase
Pokud si chceš vyzkoušet moji implementaci, tak stahuj .exe tady.