On peut considérer que c'est équivalent a chercher si un point est dans un rectangle... sujet qui a déjà été débattu dans ce forum.
pouvez me donner le lien svp !!
je pense que c'est équivalent puisque j'ai les cordonnées des segments qui entourent le segment AB
Et bien si tu tapes "point dans un rectangle" dans la zone de recherche personnalisée google (tout en haut de la page), puis que tu cliques sur "Go!" tu arrives là :
http://www.developpez.net/forums/d41...rectangle-non/
merçi pour votre effort
pardonner moi mr pseudocode mais j'arrive pas à comprendre ce programme !!
est ce que left , right,top,bottom sont des fonctions ou quoi ?
// left = rectangle corner with lowest "x"
// right = rectangle corner with highest "x"
// top = rectangle corner with highest "y"
// bottom = rectangle corner with lowest "y"
boolean isInsideOrientedRectangle(int x, int y) {
// outside the bounding box ?
if (x<left.x) return false;
if (x>right.x) return false;
if (y>top.y) return false;
if (y<bottom.y) return false;
// identify sub-regions of the bounding box and test determinant sign
if (x<=bottom.x && y<=left.y)
if ( (y-bottom.y)*(bottom.x-left.x) < (left.y-bottom.y)*(bottom.x-x) ) return false;
if (x>=bottom.x && y<=right.y)
if ( (y-bottom.y)*(right.x-bottom.x) < (right.y-bottom.y)*(x-bottom.x) ) return false;
if (x>=top.x && y>=right.y)
if ( (top.y-y)*(right.x-top.x) < (top.y-right.y)*(x-top.x) ) return false;
if (x<=top.x && y>=left.y)
if ( (top.y-y)*(top.x-left.x) < (top.y-left.y)*(top.x-x) ) return false;
return true;
}
je pense que ça marche pas
Bonjour,
J'ai le même problème, c'est à dire que j'ai les coordonnées x et y de 2 points A et B et je voudrais savoir si un point C est dans le rectangle de longueur AB et de largeur 5 km.
Le problème est que je n'arrive pas à identifier les 4 coins du rectangle.
Vous avez déjà répondu à la suite.
Merci d'avance
Si ton rectangle n'était pas penché, les coins seraient au-dessus/au-dessous de A et B.
C'est a dire qu'il faudrait ajouter/retrancher le déplacement (0,d) aux deux points, où 'd' est la demi hauteur du rectangle.+-----------+ | | A B | | +-----------+
Comme le rectangle est penché, il faut au préalable faire une rotation de ce déplacement: (d*sin(theta), d*cos(theta)).
Un peu de trigo nous permet de calculer cos(theta) et sin(theta) depuis les coordonnées de A et B:
cos(theta) = AB.x / |AB| = (B.x-A.x) / racine ( (B.x-A.x)² + (B.y-A.y)² )
sin(theta) = AB.y / |AB| = (B.y-A.y) / racine ( (B.x-A.x)² + (B.y-A.y)² )
Merci beaucoup de votre réponse,
Je vais essayer de l'appliquer, je reviendrai poster pour vous dire si j'ai réussi.
Dans la solution donnée au dessus pour la présence ou non d'un point dans un rectangle, à quoi correspond left.y?
Est-ce que c'est la coordonnée y du point dont x est le plus petit?
idem pour right.y top.x et bottom.x
Merci d'avance
merci beaucoup ça fonctionne
C'est sur!
J'ai toujours eu des lacunes en trigonométrie.
En tout cas encore merci pour ta réactivité.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager