PrecedenteAltri AppletSuccessivo



Disegno di curva parametrica - 3

Esattamente come il precedente, ma ho fatto qualche aggiunta al disegno per illustrare meglio la funzione dei parametri r0 e r1.

Questo browser non e' abilitato
a visualizzare applet

Istruzioni:

Facendo click&drag con il mouse sulla figura si possono modificare i parametri.

In particolare:
Movimento orizzontale per modificare r0
Movimento verticale per modificare r1

r0 è il raggio del cerchio blu, mentre r1 è il raggio del cerchio verde.
Il cursore permette di muovere un punto rosso la cui ordinata è r1 e la cui ascissa è r0.


Codice sorgente: simple3.java
import java.applet.Applet;
import java.awt.event.*;
import java.awt.*;

public class simple3 extends Applet 
  implements MouseListener, MouseMotionListener {

      int r0 = 100;
      int r1 = 40;

    public void paint(Graphics g) {
      int n = 400;
      int x0=0,y0=0,x1,y1;
      int cx = getSize().width/2;
      int cy = getSize().height/2;
      g.setColor(Color.black);
      for(int i=0;i <=n;i++)
          {
           double rho   = 2*Math.PI*i/n;
           double theta = 16*Math.PI*i/n;
           double x = r0*Math.cos(rho) + r1*Math.cos(theta);
           double y = r0*Math.sin(rho) + r1*Math.sin(theta);
           // cambio sistema di riferimento
           x1 = cx+(int)x; 
           y1 = cy+(int)y;
           // disegno
           if(i>0) g.drawLine(x0,y0,x1,y1);
           x0 = x1;
           y0 = y1;
          }
      int rr0 = r0>0?r0:-r0;
      int rr1 = r1>0?r1:-r1;
      int px = cx+r0;
      int py = cy+r1;

      g.setColor(Color.blue);
      g.drawOval(cx-rr0,cy-rr0,2*rr0,2*rr0);
      g.setColor(Color.green);
      g.drawOval(px-rr1,cy-rr1,2*rr1,2*rr1);
      g.setColor(Color.red);
      g.fillOval(px-3,py-3,6,6);
      g.fillOval(px-3,cy-3,6,6);
      g.drawLine(px,py,px,cy);

    }

    public void init() {
      //addMouseListener(this);
      addMouseMotionListener(this);
    }

    public void mouseClicked(MouseEvent e) {}
    public void mousePressed(MouseEvent e) {}
    public void mouseReleased(MouseEvent e) {}
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {System.out.println("Yuk");}
    public void mouseMoved(MouseEvent e) {}

    public void mouseDragged(MouseEvent e) {
      int x = e.getX(), y = e.getY();
      r0 = x-getSize().width/2;
      r1 = y-getSize().height/2;

      repaint();
      e.consume();
   }
}

  





PrecedenteAltri AppletSuccessivo


Gian Marco Todesco