dibujar un gráfico polar en java

¿Alguien sabe cómo puedo empezar a dibujar un gráfico polar en Java y trazar algunos puntos en este gráfico? Me refiero a los círculos y líneas, deseo hacer esto con algo como swing, y no usar ninguna biblioteca como Jfreechart Gracias

Tal vez quiera mirar las curvas de Lissajous ; un ejemplo de a = 5, b = 4 (5:4) se muestra a continuación.

Adición: una vez que vea cómo trazar puntos en coordenadas xy , entonces debería considerar la conversión entre coordenadas polares y cartesianas .

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); } }); } } 

Java2D es parte del JDK oficial y se adapta perfectamente a tus propósitos. Puede encontrar el documento de Java aquí: Java2d

Querrá utilizar Java2D para dibujar círculos / polígonos que se ajusten a sus necesidades. En el método de public void paint(Graphics g) del control que desea dibujar, puede dibujar en el objeto Graphics. Algunos ejemplos de varias cosas que pueden ser útiles:

 //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); } 

Tenga en cuenta que la posición en llamadas como drawOval, drawRect, etc. es para la esquina superior izquierda de la forma, no para el centro de la forma. Si desea que su óvalo se centre en 50 y con ancho 100, deberá establecer los xPos e yPos en 0.