нарисовать полярный график в Java - PullRequest
0 голосов
/ 14 июля 2011

Кто-нибудь знает, как я могу начать рисовать полярный график в Java и построить некоторые точки на этом графике?Я имею в виду круги и линии, я хочу сделать это с чем-то вроде свинга, а не использовать какую-либо библиотеку, как Jfreechart Спасибо

Ответы [ 3 ]

4 голосов
/ 14 июля 2011

Возможно, вы захотите взглянуть на кривые Лиссажу ;пример a = 5, b = 4 (5:4) показан ниже.

Приложение: Как только вы увидите, как наносить точки в координатах xy , вы должны обратить внимание на преобразование между полярным иДекартовы координаты .

LissajousPanel

public class LissajousPanel extends JPanel {

    private static final int SIZE = 400;
    private GeneralPath path = new GeneralPath();

    @Override
    public Dimension getPreferredSize() {
        return new Dimension(SIZE, SIZE);
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setRenderingHint(
            RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);
        double dt = Math.PI / 180;
        int w = getWidth() / 2;
        int h = getHeight() / 2;
        path.reset();
        path.moveTo(w, h);
        for (double t = 0; t < 2 * Math.PI; t += dt) {
            double x = w * Math.sin(5 * t) + w;
            double y = h * Math.sin(4 * t) + h;
            path.lineTo(x, y);
        }
        g2d.setColor(Color.blue);
        g2d.draw(path);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                JFrame f = new JFrame();
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.add(new LissajousPanel());
                f.pack();
                f.setVisible(true);
            }
        });
    }
}
3 голосов
/ 14 июля 2011

Java2D является частью официального JDK и идеально подходит для ваших целей. Вы можете найти документацию по Java здесь: Java2d

0 голосов
/ 14 июля 2011

Вы захотите использовать Java2D для рисования окружностей / многоугольников, которые соответствуют вашим потребностям.В методе public void paint(Graphics g) элемента управления, на котором вы хотите рисовать, вы можете нарисовать объект Graphics.Некоторые примеры различных вещей, которые могут быть полезны:

//Draw a polygon
public void paint(Graphics g) 
{
    int xVals[] = {25, 145, 25, 145, 25};
    int yVals[] = {25, 25, 145, 145, 25};

    g.drawPolygon(xVals, yVals, xVals.length);
}

//Draw an ellipse/circle
public void paint(Graphics g)
{
    int xPos = 50;
    int yPos = 50;
    int xWidth = 100;
    int yWidth = 100;
    g.drawOval(xPos, yPos, xWidth, yWidth);
}

Имейте в виду, что позиция на вызовах, таких как drawOval, drawRect и т. Д., Относится к верхнему левому углу фигуры, а не к центру фигуры.Если вы хотите, чтобы ваш овал центрировался на 50 и ширине 100, вам нужно установить xPos и yPos на 0.

...