Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    JAVA- Funzione Eclipse2D

    Ciao a tutti. Ho bisogno di 2 informazioni. Ho creato un Applet con la possibilità di inserire le Ellissi. é normale che dal momento che clicco, l'ellisse me la crea solo se mi sposto vero basso e destra, e invece se vado verso l'alto e sinistra non me la crea?
    Inoltre esiste una funzione che mi permette di dire se un punto (formato quindi da coordinate x e y) è contenuto all'interno dell'ellisse?

    Grazie per la collaborazione

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: JAVA- Funzione Eclipse2D

    Originariamente inviato da bombettino
    Ho creato un Applet con la possibilità di inserire le Ellissi. é normale che dal momento che clicco, l'ellisse me la crea solo se mi sposto vero basso e destra, e invece se vado verso l'alto e sinistra non me la crea?
    Troppo vago ... senza vedere il codice e cosa hai fatto di preciso, è impossibile dire se va bene o non va bene e il perché.

    Originariamente inviato da bombettino
    Inoltre esiste una funzione che mi permette di dire se un punto (formato quindi da coordinate x e y) è contenuto all'interno dell'ellisse?
    Vedi i metodi contains().
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Codice Eclipse2D.Double

    Hai ragione. Scusa tanto.
    Allora, spero di essere completo. io ora ho 3 file di tipo .java, e uno chiamato Ellisse.html che mi apre l'applet di dimensione 700 (larghezza) e 500 (altezza).

    I 3 file .java sono:


    1)Ellisse.java

    import javax.swing.JApplet;
    import java.awt.*;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.geom.Point2D;
    import java.awt.geom.Rectangle2D;
    import java.awt.Color;
    import java.awt.Shape;
    import java.awt.Font;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseMotionAdapter;
    import java.awt.geom.Ellipse2D;
    import javax.swing.JOptionPane;

    public class Ellisse extends JApplet{

    private EllissiFerme miaEllisse;
    int n;
    int[] x= new int[500];
    int[] y= new int[500];
    private Ellipse2D.Double ellisseCorrente;
    private double inizioX;
    private double inizioY;
    private Point2D.Double inizio;

    public Ellisse() {

    String s;
    s = JOptionPane.showInputDialog(null, "digita il numero di punti");
    n = Integer.parseInt(s);

    for(int i=0; i<n;i++)
    {
    x[i]=(int)(700*Math.random());
    y[i]=(int)(500*Math.random());
    }
    miaEllisse = new EllissiFerme(50,n);
    class AscoltaClick extends MouseAdapter
    {
    public void mousePressed(MouseEvent e)
    {
    inizioX = e.getX();
    inizioY = e.getY();
    ellisseCorrente = new Ellipse2D.Double(inizioX, inizioY, 0, 0);
    repaint();
    }

    public void mouseReleased(MouseEvent e)
    {
    Ell nuovaEllisse = new Ell(ellisseCorrente, Color.black);
    miaEllisse.aggiungi(nuovaEllisse,x,y,n);
    ellisseCorrente = null;
    repaint();
    }
    }

    class AscoltaMovimento extends MouseMotionAdapter
    {
    public void mouseDragged(MouseEvent e)
    {
    int x1 = e.getX();
    int y1 = e.getY();
    ellisseCorrente = new Ellipse2D.Double(inizioX, inizioY,x1-inizioX,y1-inizioY);
    repaint();
    }
    }

    MouseAdapter ascoltaEventi = new AscoltaClick();
    addMouseListener(ascoltaEventi);
    MouseMotionAdapter ascoltaMosse = new AscoltaMovimento();
    addMouseMotionListener(ascoltaMosse);
    }
    public void paint(Graphics g)
    {

    Graphics2D g2 = (Graphics2D) g;
    g2.clearRect(0,0,getWidth(),getHeight());

    g.setColor(Color.black);
    for(int i=0;i<n;i++){
    g.fillOval(x[i],y[i],5,5);}
    if(ellisseCorrente!=null)
    g2.draw(ellisseCorrente);
    miaEllisse.disegna(g2);

    }

    }


    Gli altri 2 file che vengono richiamati dal primo sono:

    2)Ell.java

    import java.awt.Graphics2D;
    import java.awt.Color;
    import java.awt.Shape;
    import java.awt.geom.Ellipse2D;

    public class Ell{

    private Color colore;
    private Ellipse2D.Double elemento;

    public Ell(double x, double y, double largh, double alt, Color col) {
    elemento = new Ellipse2D.Double(x, y,largh,alt);
    }

    public Ell(Ellipse2D.Double r, Color colore) {
    this(r.getX(), r.getY(), r.getWidth(), r.getHeight(), colore);
    }



    public void disegna(Graphics2D g2) {


    g2.draw(elemento);


    }

    ED anche

    3)EllissiFerme.java

    import java.awt.Graphics2D;


    public class EllissiFerme {

    private int[] contatore;
    private Ell[] ovali;
    private int numEllissi;

    public EllissiFerme(int v,int n) {
    ovali = new Ell[v];
    contatore = new int[n];
    numEllissi = 0;
    }


    public void aggiungi(Ell nuovoOvale,int x[], int y[], int n){
    if(numEllissi < ovali.length) {
    ovali[numEllissi] = nuovoOvale;
    for(int i=0;i<n;i++)
    {
    contatore[i]++;
    }
    numEllissi++;

    }
    }

    public void disegna(Graphics2D g2) {
    for(int i=0; i<numEllissi; i++)
    ovali[i].disegna(g2);

    }
    }

    }

    Ora tornando al problema che volevo illustrarvi è:
    1) Normale che le Ellissi che traccio posso tracciarle solo andando verso destra/basso dal momento che clicco con il mouse? come riuscire a tracciare in tutti i sensi?
    2) Come formare un ciclo che mi controlla che tutti gli N punti inseriti all'inizio siano interni o esterni per ogni ellisse?

    Grazie mille

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.