Remiguel
Messages postés8Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention14 novembre 2005
-
13 nov. 2005 à 17:33
Vb Lover
Messages postés221Date d'inscriptionvendredi 30 novembre 2001StatutMembreDernière intervention13 février 2010
-
15 nov. 2005 à 10:10
1) J'essaie de trouver les coordonnées du centre d'un cercle tangeant à 2 droites.
Je connais 3 points apartenant sur les deux droites dont un est commun. Je connais le rayon.
2) Une fois le centre du cercle trouvé, je souhaite trouver les coordonnées des points sur celui avec un espacement de 1mm (par example)
Vb Lover
Messages postés221Date d'inscriptionvendredi 30 novembre 2001StatutMembreDernière intervention13 février 20105 14 nov. 2005 à 21:21
toutes les variables que j'ai déclarées sont des double (ou single). par contre, mathématiquement, elles forment des vecteurs :
d = (dx,dy)
u = (ux,uy), ...
Ici, u et v sont des vecteurs qui partent de C vers A et B respectivement.
d est la somme de u et v, c'est à dire que c'est le vecteur directeur de ta bissectrice CO.
L est la distance à parcourir de C à O avec le vecteur d.
enfin, implicitement, j'utilise aussi des sinus et des cosinus par la
formule du produit scalaire : u*v = ||u|| * ||v|| *
cos(angle_entre_u_v) et que sin^2+cos^2=1 et aussi cos(2a) = 2
cos^2(a)-1.
en fait, je viens de vérifier, tout se transpose en 3D sans problème :
ux Ax - Cx: uy Ay - Cy: uz = Az - Cz
vx Bx - Cx: vy By - Cy: vz = Az - Cz
u = Sqrt(ux*ux+uy*uy+uz*uz)
v = Sqrt(vx*vx+vy*vy+vz*vz)
ux ux / u: uy uy / u: uz = uz / u
vx vx / v: vy vy / v: vz = vz / v
dx = ux + vx
dy = uy + vy
dz = uz + vz
L = R * Sqrt(2) / Sqrt((1- ux*vx - uy*vy-uz*vz)* (dx*dx + dy*dy + dz*dz))
Ox = Cx + dx * L
Oy = Cy + dy * L
Oz = Cz + dz * L
et voilà le travail!
quand on connaît les maths, c'est tellement plus mieux!
Remiguel
Messages postés8Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention14 novembre 2005 13 nov. 2005 à 17:51
Mince mon lien ne marche pas
Je recommence en essayant d'être plus clair (Voir schéma à la direction plus bas).
1) J'essaie de trouver les coordonnées du centre d'un cercle tangent à 2 droites (AC et BC). Je connais les coordonnés de ces deux droites (A,B et C) dont un est commun (C). Je connais le rayon du cercle.
Remiguel
Messages postés8Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention14 novembre 2005 13 nov. 2005 à 18:05
Décidément je n'arrive pas à envoyer un message propre. Je recommence
Je recommence en
essayant d'être plus clair (Voir schéma à la direction plus bas).
1)
J'essaie de trouver les coordonnées du centre d'un cercle (rayon) tangent à 2
droites (AC et BC). Je connais les coordonnés de ces deux droites (A,B
et C) dont un est commun (C). Je connais aussi le rayon du cercle.
Schéma
2)
Une fois le centre du cercle trouvé, je souhaite trouver (dessiner) les
coordonnées de point situer sur ce cercle (Points tout les n mm).
Vb Lover
Messages postés221Date d'inscriptionvendredi 30 novembre 2001StatutMembreDernière intervention13 février 20105 13 nov. 2005 à 22:37
je vais répondre à ta première question (trouver le centre O du cercle
de rayon R), dans le cas 2D, je pense que ça t'aiguilleras (je pense
d'ailleurs que c'est de la 2D, pas de la 3D dont tu as besoin). Une
fois que tu as le centre, c'est facile de mettre tes points...
alors voilà:
ux Ax - Cx: uy Ay - Cy
vx Bx - Cx: vy By - Cy
u = Sqrt(ux*ux+uy*uy)
v = Sqrt(vx*vx+vy*vy)
ux ux / u: uy uy / u
vx vx / v: vy vy / v
dx ux + vx: dy uy + vy;
L = R * Sqrt(2) / Sqrt((1- ux*vx - uy*vy)* (dx*dx + dy*dy))
Ox = Cx + dx * L
Oy = Cy + dy * L
voilà, j'ai fait ça en vitesse, mais ça devrait être juste!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Vb Lover
Messages postés221Date d'inscriptionvendredi 30 novembre 2001StatutMembreDernière intervention13 février 20105 13 nov. 2005 à 22:37
je vais répondre à ta première question (trouver le centre O du cercle
de rayon R), dans le cas 2D, je pense que ça t'aiguilleras (je pense
d'ailleurs que c'est de la 2D, pas de la 3D dont tu as besoin). Une
fois que tu as le centre, c'est facile de mettre tes points...
alors voilà:
ux Ax - Cx: uy Ay - Cy
vx Bx - Cx: vy By - Cy
u = Sqrt(ux*ux+uy*uy)
v = Sqrt(vx*vx+vy*vy)
ux ux / u: uy uy / u
vx vx / v: vy vy / v
dx ux + vx: dy uy + vy;
L = R * Sqrt(2) / Sqrt((1- ux*vx - uy*vy)* (dx*dx + dy*dy))
Ox = Cx + dx * L
Oy = Cy + dy * L
voilà, j'ai fait ça en vitesse, mais ça devrait être juste!
Remiguel
Messages postés8Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention14 novembre 2005 13 nov. 2005 à 23:01
Merci Vb Lover
Peux tu me preciser ce que d et L sont ? J'ai du mal à tout saisir.
Pour declarer ux et vx en Visual, quel est la bonne methode ? ce sont bien des vecteurs ?
Pour la question du 2D ou le 3D, c'est juste le cercle est dans un plan
formé para les 3 points. Donc le probleme peut etre resolu en 2D. En 3D
par contre je dois trouver dans quel plan le cercle se trouve et là sa
ce complique.
Remiguel
Messages postés8Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention14 novembre 2005 14 nov. 2005 à 18:01
J'ai fait un essai avec des valeurs numeriques, meme si je ne comprends
pas tout, cela marche. Je devrais seulement penser à travailler dans
les plan formé par les 3 points A, B et C.
J'ai essayé de resoudre le probleme par une autre voie :
Beta = angle formé par la bisectrice des deux segment AC, Bc et l'axe des X
A, B et C points sur les deux lignes tangentes
O centre du cercle
L = distance entre O et C sur la bisectrice
d1x = L projeté dans X
d1y = L projeté dans Y
Beta = ArcTan((By-Ay)/(Bx-Ax))
L = Sqr (2*R^2)
d1x = L*sinBeta
d1y = L*cosBeta
Ox = Cx + d1x
Oy = Cy + d1y
Je trouve le meme resultat. Là toujours en 2D avec le meme inconvenient que ci-dessus
Remiguel
Messages postés8Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention14 novembre 2005 14 nov. 2005 à 21:43
Chapeau Vb Lover, tu as résolu mon problème. On m'avais déjà soufflé que je devais passer par une opération vectorielle, mais je n'y serais jamais arrivé seul et aussi rapidement.
Encore merci. Je m'attaque au point 2) qui est plus facile.
Vb Lover
Messages postés221Date d'inscriptionvendredi 30 novembre 2001StatutMembreDernière intervention13 février 20105 15 nov. 2005 à 10:10
je viens de jeter un coup d'oeil au point 2), et je ne suis pas si sûr qu'il soit plus facile... avant, il n'y avait finalement que des produits scalaires (qui sont invariants par rotation, bien entendu), donc passer du 2D au 3D était trivial. Pour le cercle, tu es obligé de réfléchir un peu plus il me semble. Peut-être que je vais regarder, mais sinon bon courage!