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

Android Discussion :

Problème coordonnée d'une droite


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Par défaut Problème coordonnée d'une droite
    Bonjour,

    j'effectue actuellement un application Android, qui permet de tracer des lignes sur un plan. Une fois la ligne tracée, l'utilisateur a la possibilité de sélectionner cette ligne, une fois sélectionner un Menu Paramètre apparaît. Si l'utilisateur clic sur le bouton Option de ce Menu, alors il va pouvoir paramétrer cette ligne. C'est a dire qu'il va pouvoir lui attribuer un nom, ... et parmi ces paramètres, il y aura ces coordonnées (X1,Y1) de départ, et (X2,Y2) d'arrivée, de plus sa longueur sera aussi afficher.

    J'ai calculer cette longueur avec la formule suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Longueur² = (X2-X1)² + (Y2-Y1)²
    Du coup, des que l'utilisateur modifie les coordonnées de la droite, la longueur change. Maintenant, mon problème est le suivant, si l'utilisateur veut changer la longueur, j'aimerai du coup garder fixe les coordonnées de départ (X1,Y1) et modifier du coup les coordonnées d'arrivée (X2,Y2), mais je ne sais pas si c'est possible.

    Je vous remercie de votre aide

  2. #2
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Salut,

    Je ne vois pas ou est ton problème tu n'as qu'à redessiner dans ta méthode onDraw ou dans ton canvas la droite avec tes nouvelles coordonnées.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Par défaut
    Justement je ne connais pas les nouvelles coordonnées d'arrivée, c'est cela que j'aimerai trouver

  4. #4
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Ca dépends comment elles sont créer et par qui ? ^^

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 118
    Par défaut
    En faite l'utilisateur va créer sa ligne sur le plan, à l'aide de son doigt en faisant glisser d'un point a un autre. A partir de la la ligne aura alors une position de départ (X,Y) et une position d'arrivée (X,Y). Il aura également une longueur qui sera affecté calculer de la façon dont j'ai expliqué dans mon premier poste. Du coup, si l'utilisateur change ces coordonnées la longueur sera définit a chaque fois et donc elle changera automatiquement. Une fois ces données rentrées la ligne est alors retracé avec ces nouvelles valeurs comme ceci :

    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
     
     
    public void drawElement(int width, int height) {
     
    		double nbPixelByTwo = (2 * Wall.getNbMetre_by_pixel());
    		double scaleModify = (Plan.getScale() / Plan.getScaleStd());
     
    		if (isSelected()) {
     
    			if (bitmapWall != null) {
    				bitmapWall.recycle();
    				bitmapWall = null;
    			}
     
     
    				bitmapWall = Bitmap.createBitmap(width, height,
    						Config.ARGB_8888);
    				canvasWall = new Canvas(bitmapWall);
    				paintWall = new Paint();
     
    				/** Couleur du Mur selectionne **/
    				paintWall.setColor(Color.RED);
     
    				/** Epaisseur du trait **/
    				paintWall.setStrokeWidth(getPixelsThickness_Elt());
     
    				/** Longueur du Mur **/
    				double lengthWall = Math.sqrt(Math.pow(
    						Math.abs(getPosX_FinElt() - getPosX_DebElt()), 2)
    						+ (Math.pow(
    								Math.abs(getPosY_FinElt() - getPosY_DebElt()),
    								2)));
     
    				/** Dessine le Mur **/
    				canvasWall
    						.drawLine(
    								(float) ((getPosX_DebElt() / nbPixelByTwo) * scaleModify),
    								(float) ((getPosY_DebElt() / nbPixelByTwo) * scaleModify),
    								(float) ((getPosX_FinElt() / nbPixelByTwo) * scaleModify),
    								(float) ((getPosY_FinElt() / nbPixelByTwo) * scaleModify),
    								paintWall);
     
     
    		} else {
     
    			if (bitmapWall != null) {
    				bitmapWall.recycle();
    				bitmapWall = null;
    			}
     
     
    				bitmapWall = Bitmap.createBitmap(width, height,
    						Config.ARGB_8888);
    				canvasWall = new Canvas(bitmapWall);
    				paintWall = new Paint();
     
    				/** Couleur du Mur **/
    				paintWall.setColor(Color.GRAY);
     
    				/** Definir une épaisseur de trait **/
    				paintWall.setStrokeWidth(getPixelsThickness_Elt());
     
    				/** Longueur du Mur **/
    				double lengthWall = Math.sqrt(Math.pow(
    						Math.abs(getPosX_FinElt() - getPosX_DebElt()), 2)
    						+ (Math.pow(
    								Math.abs(getPosY_FinElt() - getPosY_DebElt()),
    								2)));
     
    				/** Dessine le Mur **/
    				canvasWall
    						.drawLine(
    								(float) ((getPosX_DebElt() / nbPixelByTwo) * scaleModify),
    								(float) ((getPosY_DebElt() / nbPixelByTwo) * scaleModify),
    								(float) ((getPosX_FinElt() / nbPixelByTwo) * scaleModify),
    								(float) ((getPosY_FinElt() / nbPixelByTwo) * scaleModify),
    								paintWall);
     
    		}
    	}
    Par contre si l'utilisateur change la valeur de la longueur pour le moment ca ne fait rien, moi j'aimerai qu'il prenne en compte la valeur saisie par l'utilisateur est que les coordonnées (X,Y) d'arrivée soit modifie

  6. #6
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    De ce que j'ai compris a toi de trouver la formule linéaire (ax +b) de ta droite et donc en fonction de la nouvelle longueur calculer la nouvelle position de la fin de ta droite.

    Tu redessines dans la méthode onDraw (la méthode draw Element de ce que j'ai vu rappelle là avec les nouvelles valeurs) le tout via un jolie invalidate() pour le forcer à se mettre à jour.

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

Discussions similaires

  1. Problème de coordonnées d'une trace GPX
    Par vincecarter729 dans le forum IGN API Géoportail
    Réponses: 8
    Dernier message: 25/02/2012, 14h36
  2. Réponses: 2
    Dernier message: 28/11/2011, 22h33
  3. Problème de coordonnées sur une PictureBox
    Par Souleyre dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 09/10/2009, 22h10
  4. Réponses: 3
    Dernier message: 26/12/2007, 19h43
  5. Réponses: 2
    Dernier message: 16/10/2005, 19h19

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