IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

distance entre 2 points avec Point2D


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Points : 84
    Points
    84
    Par défaut distance entre 2 points avec Point2D
    Bonjour ,

    je voudrais utiliser la methode distance(double x1,double y1,double x2,double y2) dans ma classe mais je n'y arrive pas il me met l'erreur :

    C:\cours\informatique\L3 info\algo\projet 2\Projet2.java:90: cannot find symbol
    symbol : method distance(double,double,double,double)
    location: class java.awt.geom.Point2D.Double[]
    System.out.println("distance Ny-seattle : "+positions.distance(positions[16].getX(),positions[16].getY(),positions[44].getX(),positions[44].getY()));
    ^
    1 error

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    /* Projet2 19 déc. 2005 07:29:25 */
    /**
     * 
     */
     
    import java.awt.geom.Point2D;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.StreamTokenizer;
    import java.lang.Object;
     
    public class Projet2 {
    	// Lecture du graphe dans un tableau de Point2D.Double : ce n'est pas indispensable d'utiliser les Point2D.Double dans ce projet ...
    	private static Point2D.Double [] positions;
    	/**
             * Lecture du fichier "nomFichier" dans le répertoire courant. Résultat dans l'attribut privé "positions"
             * @param nomFichier
             * @throws IOException
             */
    	private void getFichier(String nomFichier) throws IOException {    
    		FileReader fichier = new FileReader(nomFichier);
    		StreamTokenizer entree = new StreamTokenizer(fichier);
     
    		String graphName;
    		int graphSize;
     
    		graphSize=-1;
     
    		////////////////////////////////////////////////////////////////////////////////////////
    		// LECTURE DU PREAMBULE
    		while(entree.nextToken() != StreamTokenizer.TT_EOF) {			
    			// RETROUVER LE NOM
    			if ((entree.ttype==StreamTokenizer.TT_WORD) && (entree.sval.equals("NAME"))) {
    				if (entree.nextToken()== StreamTokenizer.TT_EOF) throw new IOException("erreur de format");// ':'
    				if (entree.nextToken()== StreamTokenizer.TT_EOF) throw new IOException("erreur de format");// 'nom'
    				if (entree.ttype!=StreamTokenizer.TT_WORD) throw new IOException("erreur de format");
    				graphName=entree.sval;
    				System.out.println("Nom du graphe : "+graphName);    		
    			}
    			// RETROUVER LA DIMENSION
    			if ((entree.ttype==StreamTokenizer.TT_WORD) && (entree.sval.equals("DIMENSION"))) {
    				if (entree.nextToken()== StreamTokenizer.TT_EOF) throw new IOException("erreur de format");// ':'
    				if (entree.nextToken()== StreamTokenizer.TT_EOF) throw new IOException("erreur de format");// 'dimension'
    				if (entree.ttype!=StreamTokenizer.TT_NUMBER) throw new IOException("erreur de format");
    				graphSize=(int) entree.nval;
    				System.out.println("Nombre de noeuds : "+graphSize);
    			}
    			// FIN DE PREAMBULE
    			if ((entree.ttype==StreamTokenizer.TT_WORD) && (entree.sval.equals("SECTION"))) break;
    		}  // while
     
    		if (graphSize==-1) throw new IOException("erreur de format");
     
    		////////////////////////////////////////////////////////////////////////////////////////
    		// LECTURE DES DONNEES
    		positions=new Point2D.Double[graphSize+1]; // +1 : les points commencent à l'indice 1 et non 0 ...
     
    		int indice;
    		double x,y;
    		while(entree.nextToken() != StreamTokenizer.TT_EOF && entree.ttype==StreamTokenizer.TT_NUMBER) {
    			indice=(int) entree.nval;
     
    			if (entree.nextToken()!=StreamTokenizer.TT_NUMBER) throw new IOException("erreur de format");
    			x=entree.nval;
     
    			if (entree.nextToken()!=StreamTokenizer.TT_NUMBER) throw new IOException("erreur de format");
    			y=entree.nval;
     
    			positions[indice]=new Point2D.Double(x,y);
    			System.out.println("Position "+indice+" : "+positions[indice]);			
    		}
     
    		fichier.close();	    
    	}
    	/**
             * @param args
             */
    	public static void main(String[] args) {		
    		Projet2 p=new Projet2();
    		System.out.println("**********************");
    		System.out.println("Lecture du graphe");
    		System.out.println("**********************");
    		try {
    			p.getFichier("att48.tsp/att48.tsp");
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
     
    		System.out.println("New York position 16 Xi :"+positions[16].getX()+" Yi : "+positions[16].getY());
    		[color=darkred]System.out.println("distance Ny-seattle : "+positions.distance(positions[16].getX(),positions[16].getY(),positions[44].getX(),positions[44].getY()));[/color]
    		System.out.println("Seattle position 44 Xj :"+positions[44].getX()+" Yj : "+positions[44].getY());
     
    	}	
     
    }

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 80
    Points : 62
    Points
    62
    Par défaut
    Sauf erreur de ma part dans la lecture du code :

    -positions est un tableau de Point2D.Double

    -distance (héritée de Point2D), ne s'applique qu'a UN Point2D, pas au tableau ENTIER -> positions.distance n'a dons aucun sens


    HopeLeaves

  3. #3
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Bonjour,
    La méthode Point2D.distance ne peut pas s'appliquer à 4 doubles.
    Pour calculer la distance entre 2 points :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Point2D a, b;
    a = new Point2D.Double(3.5, 5.0);
    b = new Point2D.Double(Math.PI, 9.4);
     
    // Calcul de la distance : 4 manières différentes
    double distance1 = a.distance(b);
    double distance2 = a.distance(b.getX(), b.getY());
    double distance3 = b.distance(a);
    double distance4 = b.distance(a.getX(), a.getY());
     
    // Les 4 manières renvoient le meme résultat :
    System.out.println( ... );
    [EDIT] HopesLeaves : positions est un tableau de Point2D, mais positions[16] est un unique Point2D.
    [EDIT2] En effet, j'ai vu un positions.distance qui ne marchera pas
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  4. #4
    Membre régulier
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Points : 84
    Points
    84
    Par défaut
    merci je m'en doutais donc j'ai essaye d'utiliser Point2D au lieu de Point2D.Double mais je n'y arrive toujours pas en faite

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 80
    Points : 62
    Points
    62
    Par défaut
    [EDIT] HopesLeaves : positions est un tableau de Point2D, mais positions[16] est un unique Point2D.

    il est ecri dans le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    positions.distance(positions[16].getX(),positions[16].getY(),positions[44].getX(),positions[44].getY()))
    presque a la fin.

    PS: tu as vu tout seul :p

  6. #6
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Bon, désolé pour toutes ces éditions.

    mikees, essaie plutot de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("distance Ny-seattle :" + positions[16].distance(positions[44]) );
    [edit] oui, HopesLeaves, désolé , j'ai corrigé en faisant une énième édition à mon message.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  7. #7
    Membre régulier
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Points : 84
    Points
    84
    Par défaut
    merci HopeLeaves ca marche en effet !!

  8. #8
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    En conclusion, je vous présente mes excuses :
    - j'avais mal lu la javadoc (Point2D.distance(double, double, double, double) existe)
    - j'ai mal lu le code (pour le positions.distance)
    - j'ai été incapable d'écrire un message (qui en plus ne valait rien) en un seul coup
    J'ai donc été un bon gros
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 80
    Points : 62
    Points
    62
    Par défaut
    Mais non enfin
    ca arrive a tout le monde de pas etre reveillé... mais on va quand meme pas faire un topic la dessus lol, on s'eloignerai du but du forum.

    L'important, c'est que le probleme soit résolu.
    Et d'ailleur c'est cool, le tag y est deja...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. mesure de distance entre 2 points dans une figure
    Par sdecorme dans le forum MATLAB
    Réponses: 4
    Dernier message: 04/07/2008, 19h51
  2. Rechercher la distance entre un point et un autre.
    Par beegees dans le forum Mathématiques
    Réponses: 2
    Dernier message: 01/10/2007, 03h35
  3. [Base de données Spatial] Distance entre deux points
    Par Pumpkins dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/11/2006, 12h18
  4. Calcul de distance entre deux points en WGS84
    Par marieR dans le forum Langage
    Réponses: 5
    Dernier message: 03/08/2006, 17h07
  5. Mesure distance entre 2 points d'une image
    Par vexal dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/05/2005, 14h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo