Draw a polar graph in java

Does anyone know how I can start to draw a polar graph in java and draw some dots on this graph? I mean circles and lines, I want to do this with something like swing and not use any library like Jfreechart Thanks

0
source share
3 answers

You may like Lissajous curves ; an example of a = 5, b = 4 (5:4) shown below.

Addendum: as soon as you see how to plot points in xy coordinates, you should see the conversion between polar and Cartesian coordinates .

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); } }); } } 
+4
source

Java2D is part of the official JDK and is ideal for your purposes. You can find the java document here: Java2d

+3
source

You want to use Java2D to draw circles / polygons to suit your needs. In the public void paint(Graphics g) method of the control you want to draw, you can draw a Graphics object. Some examples of various things that may be helpful:

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

Keep in mind that the position for calls such as drawOval, drawRect, etc., refers to the upper left corner of the form, and not to the center of the form. If you want your oval to be centered at 50 and a width of 100, you need to set xPos and yPos to 0.

-one
source

All Articles