2011-07-14 7 views
0

Est-ce que quelqu'un sait comment je peux commencer à dessiner un graphique polaire en java et tracer des points sur ce graphique? Je veux dire les cercles et les lignes, je veux faire avec quelque chose comme swing, et ne pas utiliser une bibliothèque comme Jfreechart Mercidessine un graphique polaire en Java

Répondre

4

Vous voudrez peut-être regarder Lissajous curves; un exemple de a = 5, b = 4 (5:4) est illustré ci-dessous.

Addendum: Une fois que vous voyez comment tracer des points en coordonnées xy, alors vous devriez regarder converting 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); 
      } 
     }); 
    } 
} 
3

Java2D fait partie du JDK officiel et répond parfaitement à vos besoins. Vous pouvez trouver le document java ici: Java2d

-1

Vous aurez besoin d'utiliser Java2D pour dessiner des cercles/polygones qui correspondent à vos besoins. Dans la méthode public void paint(Graphics g) du contrôle que vous souhaitez dessiner, vous pouvez dessiner sur l'objet Graphics. Voici quelques exemples de différentes choses qui pourraient être utiles:

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

Gardez à l'esprit que la position sur les appels comme drawOval, drawRect, etc est pour le coin supérieur gauche de la forme, pas le centre de la forme. Si vous voulez que votre ovale soit centrée sur 50 et une largeur de 100, vous aurez besoin de mettre le xPos et yPos à 0.

+0

-1, 'Ne jamais remplacer d'un composant de peinture (...)' méthode (sauf si vous devez absolument). Au lieu de cela, remplacez la méthode 'paintComponent (...)' du composant. – mre

Questions connexes