Ejemplo n.º 1
0
def calculate_region_cyclic(real_min, real_max, imag_min, imag_max, kmax,
                            M, N, p=0, P=1, row=1):
    """Calculate rows p+nP, n in N of the mandelbrot set in the given region
    with resolution M by N

    This is the most efficient way of partitioning the work.
    """

    from numpy import zeros
    from mandel_ext import calculate_point  # Fast C implementation

    real_step = (real_max - real_min) / M
    imag_step = (imag_max - imag_min) / N

    A = zeros((M, N), dtype='i')  # Create M x N matrix

    if row:
        for i in range(M):
            if i % P == p:
                for j in range(N):
                    c = complex(real_min + i * real_step,
                                imag_min + j * imag_step)
                    A[i, j] = calculate_point(c, kmax)
    else:
        for j in range(N):
            if j % P == p:
                for i in range(M):
                    c = complex(real_min + i * real_step,
                                imag_min + j * imag_step)
                    A[i, j] = calculate_point(c, kmax)
    return A
Ejemplo n.º 2
0
def calculate_region(real_min,
                     real_max,
                     imag_min,
                     imag_max,
                     kmax,
                     M,
                     N,
                     Mlo=0,
                     Mhi=None,
                     Nlo=0,
                     Nhi=None):
    """Calculate the mandelbrot set in the given region with resolution M by N
       If Mlo, Mhi or Nlo, Nhi are specified computed only given subinterval.
    """

    from numpy import zeros
    from mandel_ext import calculate_point  #Fast C implementation

    if Mhi is None: Mhi = M
    if Nhi is None: Nhi = N

    real_step = (real_max - real_min) / M
    imag_step = (imag_max - imag_min) / N

    A = zeros((M, N), dtype='i')  # Create M x N matrix

    for i in range(Mlo, Mhi):
        for j in range(Nlo, Nhi):
            c = complex(real_min + i * real_step, imag_min + j * imag_step)
            A[i, j] = calculate_point(c, kmax)

    return A
Ejemplo n.º 3
0
def calculate_region(real_min, real_max, imag_min, imag_max, kmax, M, N,
                     Mlo=0, Mhi=None, Nlo=0, Nhi=None):
    """Calculate the mandelbrot set in the given region with resolution M by N
       If Mlo, Mhi or Nlo, Nhi are specified computed only given subinterval.
    """

    from numpy import zeros
    from mandel_ext import calculate_point  # Fast C implementation

    if Mhi is None:
        Mhi = M
    if Nhi is None:
        Nhi = N

    real_step = (real_max - real_min) / M
    imag_step = (imag_max - imag_min) / N

    A = zeros((M, N), dtype='i')  # Create M x N matrix

    for i in range(Mlo, Mhi):
        for j in range(Nlo, Nhi):
            c = complex(real_min + i * real_step,
                        imag_min + j * imag_step)
            A[i, j] = calculate_point(c, kmax)

    return A
Ejemplo n.º 4
0
def calculate_region_cyclic(real_min,
                            real_max,
                            imag_min,
                            imag_max,
                            kmax,
                            M,
                            N,
                            p=0,
                            P=1,
                            row=1):
    """Calculate rows p+nP, n in N of the mandelbrot set in the given region
    with resolution M by N

    This is the most efficient way of partitioning the work.
    """

    from numpy import zeros
    from mandel_ext import calculate_point  #Fast C implementation

    real_step = (real_max - real_min) / M
    imag_step = (imag_max - imag_min) / N

    A = zeros((M, N), dtype='i')  # Create M x N matrix

    if row:
        for i in range(M):
            if i % P == p:
                for j in range(N):
                    c = complex(real_min + i * real_step,
                                imag_min + j * imag_step)
                    A[i, j] = calculate_point(c, kmax)
    else:
        for j in range(N):
            if j % P == p:
                for i in range(M):
                    c = complex(real_min + i * real_step,
                                imag_min + j * imag_step)
                    A[i, j] = calculate_point(c, kmax)
    return A