private void setPolarProjectionOptions() {
        JTextField field_real = new JTextField();

        double temp_xcenter = xCenter - rotation_center[0];
        double temp_ycenter = yCenter - rotation_center[1];

        double temp3 = temp_xcenter * rotation_vals[0] - temp_ycenter * rotation_vals[1] + rotation_center[0];

        if(temp3 == 0) {
            field_real.setText("" + 0.0);
        }
        else {
            field_real.setText("" + temp3);
        }

        field_real.addAncestorListener(new RequestFocusListener());

        JTextField field_imaginary = new JTextField();

        temp3 = temp_xcenter * rotation_vals[1] + temp_ycenter * rotation_vals[0] + rotation_center[1];

        if(temp3 == 0) {
            field_imaginary.setText("" + 0.0);
        }
        else {
            field_imaginary.setText("" + temp3);
        }

        JTextField field_size = new JTextField();
        field_size.setText("" + size);

        JTextField field_circle_period = new JTextField();
        field_circle_period.setText("" + circle_period);

        Object[] message3 = {
            " ",
            "Set the real and imaginary part of the polar projection center",
            "and the size.",
            "Real:", field_real,
            "Imaginary:", field_imaginary,
            "Size:", field_size,
            " ",
            "Set the circle periods number.",
            "Circle Periods:",
            field_circle_period,
            ""};

        int res = JOptionPane.showConfirmDialog(scroll_pane, message3, "Polar Projection", JOptionPane.OK_CANCEL_OPTION);

        double tempReal, tempImaginary, tempSize, temp_circle_period;

        if(res == JOptionPane.OK_OPTION) {
            try {
                tempReal = Double.parseDouble(field_real.getText()) - rotation_center[0];
                tempImaginary = Double.parseDouble(field_imaginary.getText()) - rotation_center[1];
                tempSize = Double.parseDouble(field_size.getText());
                temp_circle_period = Double.parseDouble(field_circle_period.getText());

                if(temp_circle_period <= 0) {
                    main_panel.repaint();
                    JOptionPane.showMessageDialog(scroll_pane, "The circle periods must be greater than 0.", "Error!", JOptionPane.ERROR_MESSAGE);
                    return;
                }

                size = tempSize;
                xCenter = tempReal * rotation_vals[0] + tempImaginary * rotation_vals[1] + rotation_center[0];
                yCenter = -tempReal * rotation_vals[1] + tempImaginary * rotation_vals[0] + rotation_center[1];
                circle_period = temp_circle_period;

                setOptions(false);

                progress.setValue(0);

                scroll_pane.getHorizontalScrollBar().setValue((int)(scroll_pane.getHorizontalScrollBar().getMaximum() / 2 - scroll_pane.getHorizontalScrollBar().getSize().getWidth() / 2));
                scroll_pane.getVerticalScrollBar().setValue((int)(scroll_pane.getVerticalScrollBar().getMaximum() / 2 - scroll_pane.getVerticalScrollBar().getSize().getHeight() / 2));

                resetImage();

                if(d3) {
                    Arrays.fill(((DataBufferInt)image.getRaster().getDataBuffer()).getData(), 0, image_size * image_size, Color.BLACK.getRGB());
                }

                backup_orbit = null;

                whole_image_done = false;

                if(julia_map) {
                    createThreadsJuliaMap();
                }
                else {
                    createThreads();
                }

                calculation_time = System.currentTimeMillis();

                if(julia_map) {
                    startThreads(julia_grid_first_dimension);
                }
                else {
                    startThreads(n);
                }
            }
            catch(Exception e) {
                JOptionPane.showMessageDialog(scroll_pane, "Illegal Argument!", "Error!", JOptionPane.ERROR_MESSAGE);
                main_panel.repaint();
                return;
            }
        }
        else {
            main_panel.repaint();
            return;
        }
    }