load (draw); r : 4; /* Radius */ /* Anzahl der Kaestchen fuer ein Viertel */ /* Ergibt n+1 Unterteilungen pro Viertel */ set_draw_defaults( user_preamble = ["set noborder"], xtics = false, ytics = false, xrange = [-(r+1), r+1], yrange = [-(r+1), r+1], points_joined = true, point_type = none ); bestimmeGeraden(n) := ( /* Die Listen enhalten n+2 Elemente */ xlist : makelist (i*r/(n+1), i, 0, n+1), /* Die zugehoerigen y-Werte auf dem Kreis */ hilfsliste : makelist (sqrt(r^2 - x^2), x, xlist), plist1 : makelist ( points([[xlist[i], hilfsliste[i]], [xlist[i], -hilfsliste[i]]]), i, 1, n+1), plist2 : makelist ( points([[-xlist[i], hilfsliste[i]], [-xlist[i], -hilfsliste[i]]]), i, 1, n+1), plist3 : makelist ( points([[hilfsliste[i], xlist[i]], [-hilfsliste[i], xlist[i]]]), i, 1, n+1), plist4 : makelist ( points([[hilfsliste[i], -xlist[i]], [-hilfsliste[i], -xlist[i]]]), i, 1, n+1), plist : append (plist1, plist2, plist3, plist4) ); bestimmeRechtecke(n) := ( rechtecklist : [], /* horizontal: x */ for i:0 step 1 thru n do ( /* vertikal: y */ for k:0 step 1 thru n do ( lr : r / (n+1), A : [i*lr, k*lr], B : A+[lr, lr], lb2 : B[1]^2 + B[2]^2, if lb2 <= r^2 then ( C : [-i*lr, k*lr], D : C+[-lr,lr], E : [i*lr, -k*lr], F : E+[lr,-lr], G : [-i*lr, -k*lr], H : G+[-lr,-lr], rechtecklist : append (rechtecklist, [rectangle (A,B)]), rechtecklist : append (rechtecklist, [rectangle (C,D)]), rechtecklist : append (rechtecklist, [rectangle (E,F)]), rechtecklist : append (rechtecklist, [rectangle (G,H)]) ) ) ), rechtecklist )$ bild(n) := [ gr2d ( fill_color = red, nticks = 60, ellipse (0, 0, r, r, 0, 360), nticks = 5, bestimmeGeraden(n), line_type = solid, fill_color = white, bestimmeRechtecke(n) ) ]$ bilder : makelist (bild(n), n, 1,20)$ bilder : append(bilder, makelist (bild(20), i, 1, 5))$ draw ( delay = 80, dimensions = [600, 600], file_name = "kreisFlaechemitKaestchen", terminal = 'animated_gif, bilder );