private void juliaMapPolar(int image_size) {

        double size = fractal.getSize();

        double xcenter = fractal.getXCenter();
        double ycenter = fractal.getYCenter();

        double start;
        double center = Math.log(size);

        int pixel_percent = image_size * image_size / 100;

        double f, sf, cf, r;
        double muly = (2 * circle_period * Math.PI) / (TOx - FROMx);

        double mulx = muly * height_ratio;

        start = center - mulx * (TOx - FROMx) / 2.0;

        for(int y = FROMy, y1 = 0; y < TOy; y++, y1++) {
            f = y1 * muly;
            sf = Math.sin(f);
            cf = Math.cos(f);
            for(int x = FROMx, x1 = 0, loc = y * image_size + x; x < TOx; x++, loc++, x1++) {

                r = Math.exp(x1 * mulx + start);

                image_iterations[loc] = fractal.calculateJulia(new Complex(xcenter + r * cf, ycenter + r * sf));
                rgbs[loc] = getColor(image_iterations[loc]);

                drawing_done++;

            }

            if(drawing_done / pixel_percent >= 1) {
                update(drawing_done);
                drawing_done = 0;
            }

        }

        if(bump_map || fake_de || rainbow_palette) {
            try {
                post_processing_sync.await();
            }
            catch(InterruptedException ex) {

            }
            catch(BrokenBarrierException ex) {

            }

            applyPostProcessing(image_size);
        }

    }