# CAS PARTICULIER DES TRIANGLES DE SIERPINSKI Sierp1 <- function(xC = 0, yC = .5, r = 1, theta = pi / 2){ SerieDesAngles <- seq(0, 2 * pi, 2 * pi / 3) SerieDesAbscisses <- xC + r * cos(SerieDesAngles + theta) SerieDesOrdonnees <- yC + r * sin(SerieDesAngles + theta) plot(SerieDesAbscisses, SerieDesOrdonnees, type = "n", asp = 1) polygon(SerieDesAbscisses, SerieDesOrdonnees, col = "grey") grid(col = "red") } # POUR SUPERPOSER DES TRIANGLES SierpN <- function(xC = 0, yC = .5, r = .5, theta = -pi / 2){ SerieDesAngles <- seq(0, 2 * pi, 2 * pi / 3) SerieDesAbscisses <- xC + r * cos(SerieDesAngles + theta) SerieDesOrdonnees <- yC + r * sin(SerieDesAngles + theta) polygon(SerieDesAbscisses, SerieDesOrdonnees, col = "white", border = NA) } #---------------------------------------------- #----CONSTRUCTION MANUELLE DES NIVEAUX--------- #---------------------------------------------- Sierp1(xC = 0, yC = .5, r = 1) #-------------------- SierpN(xC = 0 * sqrt(3) / 2, yC = 1 / 2, r = 1 / 2) #-------------------- SierpN(xC = -sqrt(3) / 4, yC = 1 / 4, r = 1 / 4) SierpN(xC = sqrt(3) / 4, yC = 1 / 4, r = 1 / 4) SierpN(xC = 0 * sqrt(3) / 4, yC = 4 / 4, r = 1 / 4) # AVEC ROTATION Sierp1(theta = 0, xC = 1 / 2, yC = 0) SierpN(theta = pi, r = 1 / 2, xC = 1 / 2, yC = 0) SierpN(theta = pi, r = 1 / 4, xC = 1 / 4, yC = - 1 * sqrt(3) / 4) SierpN(theta = pi, r = 1 / 4, xC = 1 / 4, yC = 1 * sqrt(3) / 4) SierpN(theta = pi, r = 1 / 4, xC = 4 / 4, yC = 0 * sqrt(3) / 4) #---------------------------------------------------------- #--UNE BOUCLE POUR LES TRIANGLES D'UNE RANGÉE D'UN NIVEAU-- #---------------------------------------------------------- n <- 3 k <- 4 / 2^n Sierp1(xC = 0, yC = .5, r = 1) for (i in (-2^(n - 1)):(2^(n - 1))){ SierpN(i / 2^n * sqrt(3), k, 1 / 2^n) } #---------------------------------------- n <- 3 ; r <- 1 k <- (1 + r * 3) / 2^n Sierp1(xC = 0, yC = .5, r = 1) for (i in (-2^(n - 1) + r + 1):(2^(n - 1) - r - 1)){ SierpN(i / 2^n * sqrt(3), k, 1 / 2^n) } #------------------------------------------------------------------- #--DEUX BOUCLES POUR LES TRIANGLES DE TOUTES LES RANGÉES D'UN NIVEAU- #------------------------------------------------------------------- n <- 3 Sierp1(xC = 0, yC = .5, r = 1) h <- seq(1 / 2^n, 3 / 2, 3 / 2^n) for (k in h){ r <- which(h == k) for (i in (-2^(n - 1) + r):(2^(n - 1) - r)){ SierpN(i / 2^n * sqrt(3), k, 1 / 2^n) } } #---------------------------------------------------------------------- # TROIS BOUCLES POUR LES TRIANGLES DE TOUTES LES RANGÉES DE TOUS LES # NIVEAUX ---- UNE FONCTION ----- #---------------------------------------------------------------------- sierpinski <- function(n = 3){ if (n == 0) { Sierp1(xC = 0, yC = .5, r = 1) } else { Sierp1(xC = 0, yC = .5, r = 1) for (j in 1:n) { h <- seq(1 / 2^j, 3 / 2, 3 / 2^j) for (k in h){ r <- which(h == k) for (i in (-2^(j - 1) + r):(2^(j - 1) - r)) { SierpN(i / 2^j * sqrt(3), k, 1 / 2^j) } } } } } #------------------------------------------------------------