Muskampen 2025: Segraren korad!
Permalänk
Medlem

Zooma en fraktal

(Google hjälpte mig inte den här gången)
Jag har precis börjat skriva ett program som målar upp den enklaste av fraktaler (triforce typ).

(högerklicka och ta view image)
Den generera på följande sätt.

1. Slumpa fram tre punkter
2. Välj en startpunkt (P1)
3. Välj en av de tre punkterna slumpartat (P2)
4. Flytta P1 halvvägs mot P2.
Upprepa 3 & 4.

Finns det något smart sätt att zooma denna fraktal?
Jag hade tänkt i följande banor.

1. Multiplicera startpunkterna med en zoomfaktor.
2. Iterera på nytt
3. Måla bara ut det som ligger innanför skärmen (duhh).

Det här fungerar visserligen, men är till synes högst ineffektivt.
Kommer någon på ett sätt att 'välja bort' punkter eller förflyttningar som inte har någon effekt på det man ser?

Eftersom att det är enkla additioner vi talar om (om man inte skall multiplicera med rotationsmatris) så kanske man inte tjänar något på att ha ett par if-satser som exluderar sådana fall som inte skulle märkas?
I 640x480 med punkter slumpade mellan 0<x<640 och 0<y<480 behövs cirka 25,000 itererationer (?) för att få fram en bra bild.

Visa signatur

"I tried to be hardcore and all I got was this lousy T-shirt"

Permalänk
Medlem

Något smart sätt för att zooma har jag inte men jag tror att min metod för att rita upp fraktalen är "effektivare" än den du använder.

Kod i qbasic, borde inte vara så svår att förstå.

DECLARE SUB triangle (x1!, y1!, x2!, y2!, x3!, y3!, antal!) SCREEN 12 CONST dimension = 7 x(1) = 320: y(1) = 100 x(2) = 10: y(2) = 410 x(3) = 630: y(3) = 410 CALL triangle(x(1), y(1), x(2), y(2), x(3), y(3), 1) SUB triangle (x1, y1, x2, y2, x3, y3, antal) IF antal < dimension THEN CALL triangle(x1, y1, (x1 + x2) * .5, (y1 + y2) * .5, (x1 + x3) * .5, (y1 + y3) * .5, antal + 1) CALL triangle(x2, y2, (x1 + x2) * .5, (y1 + y2) * .5, (x2 + x3) * .5, (y2 + y3) * .5, antal + 1) CALL triangle(x3, y3, (x1 + x3) * .5, (y1 + y3) * .5, (x2 + x3) * .5, (y2 + y3) * .5, antal + 1) ELSE LINE (x1, y1)-(x2, y2) LINE (x2, y2)-(x3, y3) LINE (x1, y1)-(x3, y3) END IF END SUB

Visa signatur

Sverige är ett så litet land att det bara får plats en åsikt i taget där.

Permalänk
Medlem

Du skulle inte kunna skriva eventuell psudokåd av det där ? Eller rent utav beskriva i ord vad du gör ?

Tack på förhand

Visa signatur

"I tried to be hardcore and all I got was this lousy T-shirt"

Permalänk
Avstängd

Visste ni att om man ritar upp pascals triangel och färglägger alla udda tal i en annan färg får man Sierpinskis fraktal (som din fraktal heter).

Permalänk
Medlem

Hur väljer man då kordinaterna?

Glöm det, jag kom på vad du menade.

Visa signatur

"I tried to be hardcore and all I got was this lousy T-shirt"