在java中绘制极坐标图

有谁知道如何开始在java中绘制极坐标图并在此图上绘制一些点? 我的意思是圆圈和线条,我希望用像swing这样的东西来做这件事,而不是像Jfreechart一样使用任何库。谢谢

你可能想看看Lissajous曲线 ; 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); } }); } } 

Java2D是官方JDK的一部分,完全符合您的目的。 你可以在这里找到java doc: Java2d

您将希望使用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,则需要将xPosyPos设置为0。