2025/01/13

マンデルブロ集合の彩色方法(1)

01.knit

マンデルブロ集合を表現する最も単純なアルゴリズムは、“Escape time algorithm” です。

参考文献: Escape time algorithm (Wikipedia)

  • マンデルブロ集合は黒色で表す
  • マンデルブロ集合の周辺は反復回数(iter)の値に応じて着色する

下記はR言語にてマンデルブロ集合を計算する関数を Escape time algorithm で書いたものです。

mandelbrot <- function(
                       center = -0.75+0.0i, ## 計算する範囲の中心
                       radius = 1.5,        ## 計算する範囲の半径
                       mesh.size = 720,     ## 計算する範囲の分割数
                       max.iteration = 50,  ## 反復回数上限
                       escape.radius = 2    ## 脱出半径
                       ) {
    require(tidyverse)

    x <- seq(Re(center)-radius, Re(center)+radius, length.out=mesh.size)
    y <- seq(Im(center)-radius, Im(center)+radius, length.out=mesh.size)
    m <- tibble(c=c(outer(x, y*1i, '+')), z=0+0i, iter=0)

    for (i in 1:max.iteration) {
        tmp <- Mod(m$z) < escape.radius
        m <- m %>%
            mutate(z=if_else(tmp, z^2 + c, z), iter=if_else(tmp, iter+1, iter))
    }

    m <- m %>%
        mutate(iter=na_if(iter, max.iteration)) ## 反復回数上限に達した部分を NA に置き換え

    return(m)
}

実行してみる。R言語でも簡単に表示できる。

library(tidyverse)

mandelbrot() %>%
    ggplot() +
    aes(x=Re(c), y=Im(c), fill=iter) +
    geom_raster() +
    scale_fill_gradientn(colors=rainbow(7), na.value='black') +
    coord_fixed(ratio=1)

0 件のコメント:

コメントを投稿

マンデルブロ集合の彩色方法(4)

04.knit 1 Binary Decomposition 下記文献に従い着色した。 参考文献: Binary Decompo...