Jason Turner wrote:

...I did a slight tweak to your mandelbrot.R code, so
that x can be a list with components x and y. This allows you to keep zooming in using your mouse to click on the plot (one of the incredibly nifty features of such sets).


Using the "tweaked" version below, call the function as you suggested:

image(mandelbrot(), col = c(heat.colors(49), "black"))

Then use locator(2) to define your next view:

image(mandelbrot(locator(2)), col = c(heat.colors(49), "black"))


Of course, I would've been nice if I'd included the tweaked version. D'ho!


#######################################################################
# Function to calculate the Mandelbrot set. This function calls a     #
# C routine in order to perform the calculations faster.              #
#                                                                     #
# Written by Mario dos Reis. September 2003                           #
# Modified: added if(is.list(x)){...} at start to check if co-ords    #
#           are from locator() or similar - jason turner oct 2 2003   #
#######################################################################

mandelbrot <- function(x = c(-3, 1),        # x limits
                       y = c(-1.8, 1.8),    # y limits
                       nx = 600,            # x resolution
                       ny = 600,            # y resolution
                       iter = 20)           # maximun number of iterations
{
  if(is.list(x)) {
    y <- range(x$y)
    x <- range(x$x)
  }
  xcoo <- seq(x[1], x[2], len = nx) # x coordinates
  ycoo <- seq(y[1], y[2], len = ny) # y coordinates
  set = numeric(nx*ny)              # this will store the output of
                                    # the C routine

  # This is the call to the C function itself
  the.set = .C("mandelbrot",
    xcoo = as.double(xcoo),
    ycoo = as.double(ycoo),
    nx = as.integer(nx),
    ny = as.integer(ny),
    set = as.integer(set),
    iter = as.integer(iter))$set

# Create a list with elements x, y and z,
# suitable for image(), persp(), etc. and return it.
return(list(x = xcoo, y = ycoo, z = matrix(the.set, ncol = ny, byrow = T)));
}



-- Indigo Industrial Controls Ltd. http://www.indigoindustrial.co.nz 64-21-343-545 [EMAIL PROTECTED]

______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help

Reply via email to