Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    6

    [Java] Applet che disegna cerchi dinamici collegati da linee tra loro

    Ciao a tutti ragazzi!!! Mi chiamo Patrick e studio informatica all'università... Ho un problema che non riesco a risolvere purtroppo.. Mi spiego... Sto creando un'Applet in java che deve disegnare ellissi o cerchi all'interno di una circonferenza immaginaria... Cioè, io gli passo una variabile che gli dice il numero di cerchi da disegnare e lui li crea... Ora però, ho dei problemi sia con la creazione dei cerchi, sia con il disegno delle linee... I cerchi non vengono disegnati sempre nelle giuste posizioni, mentre le linee collegano i cerchi tra loro, ma a volte si fermano qualche pixel prima del cerchio, oppure sono un pò troppo spostate sopra o sotto e di conseguenza lo mancano...
    Qui sotto vi posto il codice che ho utilizzato... Spero riusciate a essermi d'aiuto...

    codice:
    import java.applet.*;
    import java.awt.*;
    import java.lang.*;
    
    
    
    public class Bivett extends Applet {
      
      public static int Circ = 360;   // i gradi della circonferenza  
      public int        n = 0;          //numero di cerchi da creare          
      public double     q = 0;       //variabile che conterrà il risultato della divisione 360/n ...
      public int        si =0;       //indica lo stato iniziale della macchina
      public double     Vettx [] ;  //vettore delle x
      public double     Vetty [] ;  //vettore delle y
      
        public void init() {
           
            int i; //variabile per il ciclo for
    	n = 6; // numero di cerchi da disegnare
    	Vettx = new double[n];
            Vetty = new double[n];
            
    	setBackground(Color.white);
            q = 360/n;
            for ( i=0; i<=n-1; i++ ) {
              Vettx[i] = (((Math.cos((i*q))*250)+200)); //calcolo la posizione nell'asse X dei cerchi
              Vetty[i] = (((Math.sin((i*q))*250)+200)); //qui delle y
        
            }
      
             
        }
      
            public void paint(Graphics g) {
              int i = 0;
              for ( i=0; i<=n-1; i++ ) {
              g.fillOval((int)Vettx[i], (int)Vetty[i], 40, 40);   //disegno i cerchi passando le   coordinate e impostando la dimensione a 40 pixel
    
              g.drawLine((int)Vettx[i], (int)Vetty[i], (int)Vettx[i+1], (int)Vetty[i+1]); //disegno le righe che devono collegare i cerchi tra loro
            }
             
            g.drawString(""+Vettx[0]+" "+ Vetty[0], 10,10); //queste 4 righe sono messe solo per controllare la posizione e le coordinate dove vengono disegnati i cerchi
            g.drawString(""+Vettx[1]+" "+ Vetty[1], 20,20);
            g.drawString(""+Vettx[2]+" "+ Vetty[2], 40,40);
            g.drawString(""+Vettx[3]+" "+ Vetty[3], 60,60);
        }
        
       
     }
    Per qualsiasi altra spiegazione sono sempre qui !!!

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

    Re: [Java] Applet che disegna cerchi dinamici collegati da linee tra loro

    Originariamente inviato da Rei01
    I cerchi non vengono disegnati sempre nelle giuste posizioni, mentre le linee collegano i cerchi tra loro, ma a volte si fermano qualche pixel prima del cerchio, oppure sono un pò troppo spostate sopra o sotto e di conseguenza lo mancano...
    Secondo me, devi solo comprendere come specificare le coordinate e come calcolarle. Ad esempio a fillOval() passi 4 parametri x/y/width/height ma questi valori definiscono il rettangolo in cui è inscritto l'ovale da riempire. È chiaro che se tracci una linea fino a quel x/y (appunto i primi due parametri di fillOval) non toccherai mai il bordo dell'ovale!!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    6
    ah ok! grazie mille !!! Però allora come faccio? Sono appena riuscito a risolvere il problema dei cerchi, e ora me li disegna perfettamente e nelle posizioni esatte... Però con le linee ancora niente ... Cioè, come qualcuno sa come funziona il tracciamento delle linee?
    ora posto il nuovo codice che funziona bene, tranne che per le linee... Probabilmente gli passo le cordinate sbagliate alla funzione drawLine...

    codice:
    import java.applet.*;
    import java.awt.*;
    import java.lang.*;
    
    public class Regolari extends Applet {
      
      public static int Circ = 360;
      public int        n = 20;
      public double     q = 0;  
      public int        si = 0;
      public double     Vettx [] ;
      public double     Vetty [] ;
      
        public void init() {
         int i;
         
         si = 5;
         double AppCentroX=250, AppCentroY=250, RaggioApp=200;
         Vettx = new double[n];
         Vetty = new double[n];
         
         setBackground(Color.white);
         q= 360/n;
         for(i=0; i<=n-1; i=i+1) {
           Vettx[i]=AppCentroX+RaggioApp*Math.cos(2*Math.PI*i/n);
           Vetty[i]=AppCentroY+RaggioApp*Math.sin(2*Math.PI*i/n);
         
        }
         
         
        }
      public void paint(Graphics g) {
        
        int i;
        double x,y;
        double AppCentroX=250, AppCentroY=250, RaggioApp=200;
    
        for(i=0; i<=n-1; i=i+1) {
          
    
          g.fillOval( Math.round((float) Vettx[i]), Math.round((float) Vetty[i]), 40 , 40);
          g.drawLine((int)Vettx[i], (int)Vetty[i], (int)Vettx[i+1], (int)Vetty[i+1]);
        } 
      }
    }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Rei01
    Cioè, come qualcuno sa come funziona il tracciamento delle linee?
    Non è una questione di come funziona il tracciamento delle linee!!! drawLine() è di una semplicità estrema che chiunque è in grado di capire: prende 2 punti x1,y1 e x2,y2 e disegna una linea tra questi due punti. Tutto qua.

    Ora la domanda è: vuoi collegare tra di loro i centri dei cerchi?? Se è così, come suppongo, allora il punto centrale del cerchio lo devi calcolare. Tu infatti per disegnare i cerchi, specifichi il punto in alto a sinistra e la larghezza/altezza del rettangolo che inscrive il cerchio.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    6
    Cavolo è vero... dimenticavo l'angolo in alto a sinistra ... ... Ho capito ora... grazie ora provo! spero di farcela...

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.