#
# R
#
# Fractais
#
#    • Mandelbrot
#    • Conjuntos de Julia
#    • Domínio de McMullen
#    • Navio Ardente
#    • Tricórnio
#
# março 2026 23, seg — 25, qua
# by
# j
#

x <- c()
y <- c()

fractal <- function(tipo,q) {

     switch(tipo,

           "1" = { 

                      xmin <- -2.0
                      xmax <- +2.0
                      ymin <- -2.0
                      ymax <- +2.0

                      n <- 500

                      maxiter <- 81

                      tit = "Fractal de Mandelbrot"

                   },

         "2" = { 

                      xmin <- -1.2
                      xmax <- +1.2

                      ymin <- -1.2
                      ymax <- +1.2

                      n <- 300

                      C <- switch(q,
                                    0.25 - 0.55i,
                                    0.25 + 0.55i,
                                    0.24 + 0.54i,
                                    0.33 + 0.57i
                                   )

                      maxiter <- 81

                      alpha = as.character(C)
                      tit = paste("Conjunto de Julia | C = ",alpha)

                   },

         "3" = { 

                      xmin <- -2
                      xmax <- +2

                      ymin <- -2
                      ymax <- +2

                      n <- 500

                      lbd <- switch(q,
                                    0.000 + 0.000i,
                                    0.00025 + 0.000i,
                                    0.00050 + 0.000i,
                                    0.001 + 0.000i,
                                    0.0025 - 0.0055i
                                   )

                      p <- 3

                      maxiter <- 81

                      alpha <- as.character(lbd)
                      beta <- as.character(p)
                      tit = paste("Mapa de McMullen | p = ",beta)
                      tit = paste(tit," | L = ")
                      tit = paste(tit,alpha)

                   },

            "4" = { 

                      xmin <- -2
                      xmax <- +1
                      ymin <- -1.5
                      ymax <- +1.5

                      n <- 300

                      maxiter <- 81
                      tit = "Navio Ardente"

                   },

             "5" = { 

                      xmin <- -1.5
                      xmax <- +1.5
                      ymin <- -1.5
                      ymax <- +1.5

                      n <- 500

                      maxiter <- 81

                      tit = "Tricornio"

                   }

     )

     dx <- (xmax - xmin)/n
     dy <- (ymax - ymin)/n

     xn <- xmin
     while (xn <= xmax) {

          yn <- ymin
          while (yn <= ymax) {

          switch(tipo,
              
               "1" = {
                   
                      z = 0
                      C = xn + yn*1i
                
                     },
              
               "2" = {

                      z <- xn + yn*1i
                
                     },
              
               "3" = {
                
                      z <- xn + yn*1i
                
                     },

               "4" = {
                   
                      z = 0
                      C <- xn + yn*1i
                
                     },
                 
               "5" = {
                   
                      z = 0
                      C = xn + yn*1i
                
                     }
                 
           )
                
          iter <- 0
          flag <- TRUE
          while (iter <= maxiter && flag) {#[3]

               switch(tipo,

                     "1" = {

                            z <- z^2 + C
                
                           },
                  
                     "2" = {
                  
                            z <- z*z + C

                          },

                     "3" = {

                            if (Mod(z) > 0.1) {
                 
                               z = z^p + lbd/(z^p) - 1i
                         
                            }
                 
                          },

                     "4" = {
                 
                            z = ( Mod(Re(z)) + 1i*Mod(Im(z)) )^2 + C
                         
                           },

                     "5" = {

                            z <- Conj(z)^2 + C
                
                           }

                  )

                  if (Mod(z) > 2) {
               
                      flag <- FALSE
               
                  }

                  iter <- iter + 1

           }

           if ( flag ) {

               if ( tipo == "4") {
           
                  x <- c(x,xn)
                  y <- c(y,-yn)

               } 
               else {
                     
                  x <- c(x,xn)
                  y <- c(y,yn)
                   
               }
           
           }

          yn <- yn + dy
       
      }

     xn <- xn + dx
  
  }

  plot(x, y, pch=19, main = tit, col="darkblue", cex = 0.15 )
       
}

fractal("5",1)

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: