Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Autres langages > Algorithmes

Algorithmes Forum d'entraide sur l'algorithmique, l'intelligence artificielle, le traitement numérique d'images et les mathématiques. Avant de poster : Cours d'algorithmique

Réponse
 
Outils de la discussion
Vieux 19/11/2008, 09h57   #1 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: avril 2002
Messages: 28
Envoyer un message via MSN à morind79
Par défaut Fenetre et objet

Bonjour,

Voila, je sais pas si je poste a la bonne rubrique, si c'est mauvais veuillez m'en excuser.

Le problème : Je fais un logiciel CAD avec comme élément des pastilles, vecteurs et arcs. Je connais donc pour chaque type d'objet les coordonnées ainsi que les diamètres. Maintenant lorsque je fais une fenêtre pour sélectionner des objets, je veux que ceux qui touche la fenêtre soit aussi sélectionné. Mais la j'ai un souci, je ne vois pas trop comment faire. Avez vous des idées ?

Merci

Denis
morind79 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 19/11/2008, 10h45   #2 (permalink)
Responsable Algorithmes
 
Avatar de PRomu@ld
 
Date d'inscription: avril 2005
Localisation: Chasseneuil-du-Poitou
Âge: 23
Messages: 3 616
Par défaut

Si ta vue est en 2D, il n'y a pas trop de soucis, tu détermines s'il y a une intersection entre le rectangle de selection et les objets. Si c'est en 3D, tu détermines s'il y a intersection entre le "cone" (formé par le centre de ta caméra et le rectangle) et les objets, c'est un peu plus délicat mais pas insurmontable.
__________________
http://rperrot.developpez.com

Vous désirez contribuer à la rubrique algorithme, n'hésitez pas à me contacter.
PRomu@ld est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 19/11/2008, 11h05   #3 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: avril 2002
Messages: 28
Envoyer un message via MSN à morind79
Par défaut

Ma vue est bien en 2D, j'avais pensé a calculer l'intersection entre un des 4 vecteurs composant la fenêtre et le vecteur ou arc, mais je voulais savoir s'il n'y avait pas une méthode plus simple.

Denis
morind79 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 19/11/2008, 12h02   #4 (permalink)
Rédacteur/Modérateur
 
Avatar de pseudocode
 
Date d'inscription: décembre 2006
Localisation: Montpellier
Âge: 36
Messages: 4 724
Par défaut

Citation:
Envoyé par morind79 Voir le message
Ma vue est bien en 2D, j'avais pensé a calculer l'intersection entre un des 4 vecteurs composant la fenêtre et le vecteur ou arc, mais je voulais savoir s'il n'y avait pas une méthode plus simple.
PRomu@ld te proposait de faire une intersection entre la "boite englobante" de ton arc/vecteur/pastille et ta fenêtre de sélection. C'est à dire faire une intersection Rectangle/Rectangle, ce qui est simple et rapide.

La limite de cette méthode c'est qu'elle peut sélectionner un arc/vecteur/pastille qui ne touche pas réellement la fenêtre, mais ou seulement sa "boite englobante" touche la fenêtre.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
pseudocode est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 19/11/2008, 12h32   #5 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: avril 2002
Messages: 28
Envoyer un message via MSN à morind79
Par défaut

Et bien je ne veux pas qu'un objet non touchant a la fenêtre soit sélectionné.
Je pense faire la chose suivante pour les vecteurs :

Grossir la fenêtre de sélection du rayon de l'épaisseur du trait faisant le vecteur
Calculer le point d'intersection entre l'âme du vecteur et les 4 vecteurs de la fenêtre.

Si il y a une intersection (dans la limite des vecteurs) alors c'est sélectionné.

Pour les arcs, c'est peut être la même chose, a voir.

Denis
morind79 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 19/11/2008, 18h14   #6 (permalink)
Responsable Algorithmes
 
Avatar de PRomu@ld
 
Date d'inscription: avril 2005
Localisation: Chasseneuil-du-Poitou
Âge: 23
Messages: 3 616
Par défaut

Citation:
PRomu@ld te proposait de faire une intersection entre la "boite englobante" de ton arc/vecteur/pastille et ta fenêtre de sélection. C'est à dire faire une intersection Rectangle/Rectangle, ce qui est simple et rapide.
C'était plus précisement intersection Rectangle/Objet (de façon exacte), donc intersection Rectangle/Pastille - Rectangle/Vecteur et Rectangle/Arc

Ca ne me semble pas insurmontable pour les deux premiers (même trivial), pour le troisième, il faut préciser un peu plus ce que tu entends par arc. Est-ce un arc de cercle ou une sorte de spline ?
__________________
http://rperrot.developpez.com

Vous désirez contribuer à la rubrique algorithme, n'hésitez pas à me contacter.
PRomu@ld est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 19/11/2008, 18h34   #7 (permalink)
Rédacteur/Modérateur
 
Avatar de pseudocode
 
Date d'inscription: décembre 2006
Localisation: Montpellier
Âge: 36
Messages: 4 724
Par défaut

Citation:
Envoyé par PRomu@ld Voir le message
C'était plus précisement intersection Rectangle/Objet (de façon exacte), donc intersection Rectangle/Pastille - Rectangle/Vecteur et Rectangle/Arc
Ah, veuillez m'excuser chef. Je vous ai sous-estimé.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
pseudocode est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 20/11/2008, 11h29   #8 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: avril 2002
Messages: 28
Envoyer un message via MSN à morind79
Par défaut

Bonjour,

Ok, c'est implémenté et ça a l'ais de marcher pour les vecteurs.
Maintenant il faut que je le fasse pour les arcs

Denis
morind79 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 20/11/2008, 11h36   #9 (permalink)
Responsable Algorithmes
 
Avatar de PRomu@ld
 
Date d'inscription: avril 2005
Localisation: Chasseneuil-du-Poitou
Âge: 23
Messages: 3 616
Par défaut

Citation:
Envoyé par PRomu@ld
pour le troisième, il faut préciser un peu plus ce que tu entends par arc. Est-ce un arc de cercle ou une sorte de spline ?
__________________
http://rperrot.developpez.com

Vous désirez contribuer à la rubrique algorithme, n'hésitez pas à me contacter.
PRomu@ld est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 20/11/2008, 11h50   #10 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: avril 2002
Messages: 28
Envoyer un message via MSN à morind79
Par défaut

C'est une arc de cercle. Je connais son centre (cp) le from point (fp), le to point (tp) et le sens (CW ou CCW).

Voila
morind79 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 20/11/2008, 12h00   #11 (permalink)
Responsable Algorithmes
 
Avatar de PRomu@ld
 
Date d'inscription: avril 2005
Localisation: Chasseneuil-du-Poitou
Âge: 23
Messages: 3 616
Par défaut

A mon avis, comme ça vite fait, je dirai qu'en testant l'intersection Rectangle/Cercle et en rejetant ensuite ça devait pouvoir le faire.

L'idée de base (encore une fois très vite fait), c'est de calculer la position du point d'intersection avec le cercle puis de vérifier si le point est sur l'arc de cercle. (Tu peux faire ça par comparaison d'angles)
__________________
http://rperrot.developpez.com

Vous désirez contribuer à la rubrique algorithme, n'hésitez pas à me contacter.
PRomu@ld est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/11/2008, 15h34   #12 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: avril 2002
Messages: 28
Envoyer un message via MSN à morind79
Par défaut

Ok, Je viens d'implémenter le tout et ça marche parfaitement.

Donc pour résumer j'ai fait une fonction qui calcul l'intersection d'un rectangle avec une droite ou un arc.

Merci a tous.
morind79 est déconnecté   Envoyer un message privé Réponse avec citation
NEWS ALGOCOURS ALGOFAQ ALGOLIVRES ALGOSOURCES ALGO

Réponse

Précédent   Forum des développeurs > Autres langages > Algorithmes



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide