Calcul de position d'un pixel suivant quelques critères...
gaelcal
Messages postés12Date d'inscriptionlundi 22 décembre 2003StatutMembreDernière intervention 2 mai 2006
-
14 févr. 2004 à 15:39
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 2006
-
16 févr. 2004 à 17:06
Bonjour !
Voilà j'ai un problème qui me prend la tête depuis une semaine et là je craque un peu !
Je vous explique:
A la base j'ai la position de 2 points ((x1;y1) et (x2;y2) donc) ainsi qu'une longueur associée à chacun des points (d1 et d2). Le problème c'est que je veux trouver la position (x3;y3) du point se trouvant à la distance d1 du point (x1;y1) et à la distance d2 du point (x2;y2).
On y repensant ça revient à trouver l'intersection de deux cercles avec centre et rayon connu.
Le problème c'est que c'est un code qui sera executée extrémement souvent (ça serait bien de le faire 15 000 fois environ sans que ça bronche) ! Il faut donc réaliser le calcul de la position du 3ème point de la façon la plus rapide possible.
Perso, en mettant tout ça sous forme d'équations on arrive vite à des calculs énormes (les solutions faisaient une dizaine de pages ^^) !
J'ai ensuite pensé à résoudre le problème avec des area pour faire un ET logique avec les deux cercles de diamètres d1 et d2. Après on se retrouve effectivement avec une area avec les points recherchés... encore faut il parcourir l'area point par point pour voir si elle contient un pixel ou non ! (même si on pourrait quand même optimisé cette recherche...)
Donc je n'arrive à rien de très satisfaisant...
Merci d'avance aux personnes qui pourraient me donner quelques pistes... et surtout si mes explications sont trop floues, n'hésitez pas à me le dire !
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 14 févr. 2004 à 22:42
:big) Neodante :big)
As-tu pensé à Pythagore ....
En fait ton prob peut-être résolu avec le simple a2 + b2 = c2
, je m'explique tu connais la distance entre tes 2 points (1er côté ...), et un côté de ton triangle (2ème côté ... je vais m'expliquer !) ...
Si tu divise par 2 la distance entre tes 2 points tu as ton 1er côté, ensuite si tu prends la distance d'un de tes points, tu as ton 2ème côté (l'hypoténuse pour être précis !), il ne te reste plus qu'à déduire ton troisième côté avec Pythagore ...
Ensuite un peu de trigo pour remettre ça en ordre (décalage en diagonale de ton point et le tour est joué !). reste dans l'esprit des vecteurs et tout se passera bien !
Comme beaucoup de problème graphique, souvent Pythagore suffit ....
J'ai déjà fait cet algo et cela se passe très bien ! Inverse le vecteur que tu as trouvés et tu as ton deuxième point ca ne sert à rien de tout recalculer !!!!
@+
gaelcal
Messages postés12Date d'inscriptionlundi 22 décembre 2003StatutMembreDernière intervention 2 mai 20061 16 févr. 2004 à 09:20
Hum pas dur pas dur c'est pas simple non plus :)
Avec un changement de repère c'est facile (si il y a un côté vertical) ensuite il ne faut pas faire une translation comme tu le dis, mais une rotation ! Y'a t'il une méthode qui permet de faire une rotation d'un point facilement ? Je continue de chercher