Calcul de position d'un pixel suivant quelques critères...

gaelcal Messages postés 12 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 2 mai 2006 - 14 févr. 2004 à 15:39
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 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 !

Gaël

5 réponses

cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
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 !!!!
@+

[Responsable www.neogamedev.com]
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
15 févr. 2004 à 23:17
GodConan :clown)

:o) hih pas dur... ;o)
et pis 15000 sa me parrer beaucoup ;o) essai aussi de diminuer se nombre si tu veu vraiment aller vite... ;o)

++
0
gaelcal Messages postés 12 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 2 mai 2006 1
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

Merci pour vos réponses...
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
16 févr. 2004 à 17:01
:big) Neodante :big)

Allez voici la formule magique :x' cos(a+b) cos(a)*cos(b) - sin(a)*sin(b) = x*cos(b) - y*sin(b)
y' sin(a+b) sin(a)*cos(b) + sin(b)cos(a) = y*cos(b) + x*sin(b)

@+

[Responsable www.neogamedev.com]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
16 févr. 2004 à 17:06
:big) Neodante :big)

Mieux voici le lien : http://eva.univ-tlse1.fr/berro/cours/java3d/TransGeometrique.htm

[Responsable www.neogamedev.com]
0