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

2D Java Discussion :

Problème pour trouver un point


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 311
    Par défaut Problème pour trouver un point
    Bonjour,

    Pour changer, je vais essayer d'être clair. Je cherche les coordonnées x et y d'un point.

    J'ai en ma possession 2 points à partir desquels trouver le troisième. Un premier point est le centre de ma souris et le deuxième est un point quelque part sur l'écran. Je trace, si les points sont suffisamment près l'un de l'autre, un segment d'une longueur prédéfinie qui part de ma souris, traverse le point sur l’écran et termine sa course au fameux troisième point que je recherche.

    Comment faire ? Merci de votre aide.

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Le plus simple, c'est de revoir ses formules de math niveau collège ou début lycée...

    Trouver le vecteur de la droit constituant tes deux points.

    https://fr.wikipedia.org/wiki/Vecteur_directeur
    Fait en un vecteur unitaire et multiplie le par la longueur de ton segment voulu et additionne le à ton point d'origine (le point de ta sourie).
    Logiquement, la méthode Point2D.distance(double x1, double y1) peut t'aider.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Ce n'est absolument pas un problème de Java, mais un problème de math ou d'algorithmie. Tu devrais plutôt poser ce genre de question dans le forum dédié.

    On pourrait utiliser une solution à base d'équations (équation de la droite, formule de la distance...), mais on peut utiliser Thalès pour résoudre ça plus facilement et plus rapidement. Il suffit de calculer la distance entre P1 (la souris) et P2 le point fixe. La distance entre P1 et 3 est fixée dans ton problème. Tu peux connaitre le rapport entre ces deux distances, en faisant la division de l'un par l'autre. Ensuite, tu fais la différence entre les coordonnées X, et tu appliques ce rapport, puis pareil sur Y. Et tu as ton troisième point.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  4. #4
    Membre éclairé Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 311
    Par défaut
    Ok merci.
    Pour Joel: c'est ce que j'ai fait mais ca marche pas, du coup ca doit venir de mon code je vais continuer de chercher.

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Montre ton code peut-être. Ça ne viendrait pas de la division des distances, que tu ferais en int (donc du int divisé par du int, donc pas une division exacte) ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre éclairé Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 311
    Par défaut
    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
    private Area addShadow(Rectangle2D b) {
    		Point2D p1 = new Point2D.Double(b.getX(), b.getY());
    		Point2D p2 = new Point2D.Double(b.getX()+b.getWidth(), b.getY());
    		Point2D p3 = new Point2D.Double(b.getX()+b.getWidth(), b.getY()+b.getHeight());
    		Point2D p4 = new Point2D.Double(b.getX(), b.getY()+b.getHeight());
     
    		double r = ellipse.getWidth()/2;
    		Point2D e = new Point2D.Double(ellipse.getX() + r, ellipse.getY() + r);
     
    		double d1 = e.distance(p1);
    		double d2 = e.distance(p2);
    		double d3 = e.distance(p3);
    		double d4 = e.distance(p4);
     
    		Point2D t1 = new Point2D.Double();
    		Point2D t2 = new Point2D.Double();
    		Point2D t3 = new Point2D.Double();
    		Point2D t4 = new Point2D.Double();
     
     
     
    		if(d1<=d2 && d1<=d3 && d1<=d4){
    			t1 = new Point2D.Double(p2.getX()*(r/d2), p2.getY()*(r/d2));//p2
    			t2 = new Point2D.Double(p4.getX()*(r/d4), p4.getY()*(r/d4));//p4
    			t3 = p4;
    			t4 = p2;
    		}else if(d2<=d1 && d2<=d3 && d2<=d4){
    			t1 = new Point2D.Double(p3.getX()*(r/d3), p3.getY()*(r/d3));//p3
    			t2 = new Point2D.Double(p1.getX()*(r/d1), p1.getY()*(r/d1));//p1
    			t3 = p1;
    			t4 = p3;
    		}else if(d3<=d1 && d3<=d2 && d3<=d4){
    			t1 = new Point2D.Double(p4.getX()*(r/d4), p4.getY()*(r/d4));//p4
    			t2 = new Point2D.Double(p2.getX()*(r/d2), p2.getY()*(r/d2));//p2
    			t3 = p2;
    			t4 = p4;
    		}else if(d4<=d1 && d4<=d2 && d4<=d3){
    			t1 = new Point2D.Double(p1.getX()*(r/d1), p1.getY()*(r/d1));//p1
    			t2 = new Point2D.Double(p3.getX()*(r/d3), p3.getY()*(r/d3));//p3
    			t3 = p1;
    			t4 = p3;
    		}
     		Area returnArea = new Area();
    		Arc2D arc = this.createArc2D(t1, t2, new Point2D.Double(ellipse.getX(), ellipse.getY()));
    		Area area = new Area(arc);
    		Polygon poly = new Polygon();
     
    		//this.add(area);
    		poly.addPoint((int)t1.getX(), (int)t1.getY());
    		poly.addPoint((int)t2.getX(), (int)t2.getY());
    		poly.addPoint((int)t3.getX(), (int)t3.getY());
    		poly.addPoint((int)t4.getX(), (int)t4.getY());
    		area = new Area(poly);
    		returnArea.add(area);
    		return returnArea;
    	}

  7. #7
    Membre éclairé Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 311
    Par défaut
    J'ai corriger l'histoire du "int".
    Je faisais bien cette erreur mais après correction ca ne change pas le résultat.

    Petite explication du code:
    Nom : Capture.PNG
Affichages : 150
Taille : 5,1 Ko

    Area(Ellipse2D) et représenter par le cercle que j'ai dessiner.
    A l'écran il y a des Rectangle2D, c'est le petit carré noir.
    Le point au milieu c'est ma souris et le centre d'ellipse.
    Les deux traits qui partent du milieu sont les traits imaginaire dont je parlais cette après-midi.
    Et le polygon rouge, c'est ce que le veux dessiner.

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

Discussions similaires

  1. Problème pour trouver les données commune dans une requête
    Par Winterrage dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/02/2008, 10h14
  2. [VB.NET][WebServices] Problème pour trouver une Assembly
    Par sleeloo dans le forum Services Web
    Réponses: 3
    Dernier message: 19/11/2006, 12h45
  3. Problème pour trouver les MAX
    Par Erakis dans le forum Requêtes
    Réponses: 5
    Dernier message: 02/05/2006, 19h58
  4. [EJB]JBoss et JNDI, problème pour trouver mes EJB
    Par shingo dans le forum Wildfly/JBoss
    Réponses: 3
    Dernier message: 31/12/2005, 15h14
  5. Réponses: 3
    Dernier message: 24/11/2005, 09h44

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