Centre Cercle tangeant à 2 droite

Résolu
Remiguel Messages postés 8 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 14 novembre 2005 - 13 nov. 2005 à 17:33
Vb Lover Messages postés 221 Date d'inscription vendredi 30 novembre 2001 Statut Membre Dernière intervention 13 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)

Merci pour toutes pistes ou code

Remiguel

10 réponses

Vb Lover Messages postés 221 Date d'inscription vendredi 30 novembre 2001 Statut Membre Dernière intervention 13 février 2010 5
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!
3
Remiguel Messages postés 8 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 14 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.

Schéma
http://personal.telefonica.terra.es/web/bluemarmot/Image/Poi_image/schema.png

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).



Merci pour toutes pistes ou code


Remiguel
0
Remiguel Messages postés 8 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 14 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).



Merci
pour toutes pistes ou code



Remiguel
0
Vb Lover Messages postés 221 Date d'inscription vendredi 30 novembre 2001 Statut Membre Dernière intervention 13 février 2010 5
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!
0

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

Posez votre question
Vb Lover Messages postés 221 Date d'inscription vendredi 30 novembre 2001 Statut Membre Dernière intervention 13 février 2010 5
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!
0
Remiguel Messages postés 8 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 14 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
0
Remiguel Messages postés 8 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 14 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
0
Remiguel Messages postés 8 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 14 novembre 2005
14 nov. 2005 à 18:03
Decidement mon message est coupé. Comment peut on editer ses messages ?



Je trouve le meme resultat. Là toujours en 2D avec le meme inconvenient que ci-dessus



Q'en penses tu Vb Lover ? ou qu'en pensez vous ?





Remiguel
0
Remiguel Messages postés 8 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 14 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.


Remiguel
0
Vb Lover Messages postés 221 Date d'inscription vendredi 30 novembre 2001 Statut Membre Dernière intervention 13 février 2010 5
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!
0
Rejoignez-nous