• fr

Table des matières

Définitions de C.A.O

Choix généraux

Pour le stockage dans la base de donnée , nous avons besoin :

Points

  • Coordonnées cartésiennes du point (xp , yp)
  • Couleur
  • Couche
  • Etat sélectionné
  • Etat visible

Droites / segments

  • Point élément de la droite en coordonnées cartésiennes 'xpd' , 'ypd'
  • Angle par rapport à l'horizontale 'Aod'
  • Coordonnées cartésiennes du point de départ 'xdd' , 'ydd'
  • Coordonnées cartésiennes du point de fin 'xfd' , 'yfd'
  • Couleur
  • Couche
  • Etat sélectionné
  • Etat visible

Cercles / arcs

  • Point de centre du cercle en coordonnées cartésiennes 'xc' , 'yc'
  • Rayon 'rc'
  • Coordonnées cartésiennes du point de départ 'xdc' , 'ydc'
  • Angle par rapport à l'horizontale du segment 'point de centre / point de départ' 'Adc'
  • Coordonnées cartésiennes du point de fin 'xfc' , 'yfc'
  • Angle par rapport à l'horizontale du segment 'point de centre / point de fin' 'Afc'
  • Couleur
  • Couche
  • Etat sélectionné
  • Etat visible

Principes de calculs

Calcul de l'angle d'un segment par rapport à l'horizontale

On fournira les coordonnées cartésiennes du point de référence (XR,YR) et celles d'un autre point (XP,YP) et on obtiendra l'angle (A) .

On aura :

  • Si XP > XR alors
    A = arctan ((YP - YR) / (XP - XR))
  • Si XP < XR alors
    A = arctan ((YP - YR) / (XP - XR)) +Pi
  • Si XP = XR alors
    • si YP > YR alors
      A = Pi/2
    • si YP < YR alors
      A = 3Pi/2
  • Si A < 0 alors
    A = A + 2Pi

Obtention de l'équation d'une droite

On fournira les coordonnées cartésiennes d'un point élément de la droite (XP,YP) et l'angle de cette droite avec l'horizontale (A) . L'équation de la droite est de la forme : aX + bY +c = 0 avec :

a = sin(A)
b = - cos(A)
c = YP cos(A) - XP sin(A)
	

Obtention des coordonnées cartésiennes du point d'intersection d'une droite avec sa perpendiculaire passant par un point

Valeurs fournies :

  • 'xp' et 'yp' du point ,
  • 'xpd' , 'ypd' , 'Aod' , 'xdd' , 'ydd' , 'xfd' , 'yfd' .de la droite

Valeurs recherchées : X2 et Y2

  • Si Aod = 0 alors
    X2 = xp et Y2 = ypd
  • Si Aod = Pi/2 alors
    X2 = xpd et Y2 = yp
  • Si Aod <> 0 et Aod <> Pi/2
    X2 = xpd sin<sup>2</sup>(Aod) + xp cos<sup>2</sup>(Aod) + (yp - ypd) cos(Aod) sin(Aod)
    Y2 = yp sin<sup>2</sup>(Aod) + ypd cos<sup>2</sup>(Aod) + (xp - xpd) cos(Aod) sin(Aod)
    		

Obtention de la distance entre deux points

Valeurs fournies :

  • 'xp1' et 'yp1' du premier point
  • 'xp2' et 'yp2' du premier point

Valeur recherchée : D

D = sqrt((xp1 - xp2)<sup>2</sup> + (yp1 - yp2)<sup>2</sup>)
	

Obtention des données géométriques

Points

Les coordonnées cartésiennes du point seront X et Y .

Point en coordonnées cartésiennes

Valeurs fournies 'x' et 'y' .

X = x
Y = y
	

Point en coordonnées polaires

Valeurs fournies 'r' et 'A' .

X = r cos(A)
Y = r sin(A)
	

Point décalé en coordonnées cartésiennes

Valeurs fournies :

  • 'xp' , 'yp' coordonnées du point d'origine
  • 'x' et 'y' .les valeurs de décalage
X = xp + x
Y = yp + y
	

Point décalé en coordonnées polaires

Valeurs fournies :

  • 'xp' , 'yp' coordonnées du point d'origine
  • 'r' et 'A' le rayon et l'angle de décalage.
X = xp + r cos(A)
Y = yp + r sin(A)
	

Point de centre d'un cercle

Valeurs fournies 'xc' , 'yc' , 'rc' , 'xdc' , 'ydc' , 'Adc' , 'xfc' , 'yfc' et 'Afc' du cercle. <ode> X = xc Y = yc </code>

Point à l'extrémité d'un segment

Valeurs fournies 'xpd' , 'ypd' , 'Aod' , 'xdd' , 'ydd' , 'xfd' et 'yfd' du segment.

X = xdd et Y = ydd
ou
X = xfd et Y = yfd
	

Point à l'extrémité d'un arc

Valeurs fournies 'xc' , 'yc' , 'rc' , 'xdc' , 'ydc' , 'Adc' , 'xfc' , 'yfc' et 'Afc' de l'arc.

X = xdc et Y = ydc
ou
X = xfc et Y = yfc
	

Point milieu d'un segment

Valeurs fournies 'xpd' , 'ypd' , 'Aod' , 'xdd' , 'ydd' , 'xfd' et 'yfd' du segment.

X = 1/2 (xdd + xfd)
Y = 1/2 (ydd + yfd)
	

Point milieu d'un arc

Valeurs fournies 'xc' , 'yc' , 'rc' , 'xdc' , 'ydc' , 'Adc' , 'xfc' , 'yfc' et 'Afc'de l'arc

A = 1/2 (Adc + Afc)
X = rc cos(A)
Y = rc sin(A)
	

Point d'intersection entre 2 droites

Valeurs fournies 'xpd1' , 'ypd1' , 'Aod1' , 'xdd1' , 'ydd1' , 'xfd1' , 'yfd1' de la premiere droite et 'xpd2' , 'ypd2' , 'Aod2' , 'xdd2' , 'ydd2' , 'xfd2' , 'yfd2' de la deuxième droite.

Obtenir les équations des 2 droites .

a1 x + b1 y + c1 = 0
a2 x + b2 y + c2 = 0
	
Si a1 b2 - a2 b1 = 0 pas de solutions
Sinon
X = (c2 b1 - c1 b2) / (a1 b2 - a2 b1)
Y = (a2 c1 - a1 c2) / (a1 b2 - a2 b1)
	

Point d'intersection entre une droite et un cercle

Valeurs fournies 'xpd' , 'ypd' , 'Aod' , 'xdd' , 'ydd' , 'xfd' , 'yfd' de la droite et 'xc' , 'yc' , 'rc' , 'xdc' , 'ydc' , 'Adc' , 'xfc' , 'yfc' , 'Afc' du cercle.

Si Aod = 0 ou Pi
  • Si ypd > (yc + rc) ou ypd < (yc - rc) , il n'y a pas de solutions
  • Sinon:
    A = arcsin((ypd - yc) / rc)
    X = xc + rc cos(A) ou X = xc - rc cos(A)
    Y = ypd
    		
Si Aod = Pi/2 ou 3Pi/2
  • Si xpd > (xc + rc) ou xpd < (xc - rc) , il n'y a pas de solutions
  • Sinon:
    A = sqrt(rc<sup>2</sup> - (xpd - xc)<sup>2</sup>)
    X = xpd
    Y = yc + A ou Y = yc - A
    		
Si Aod <> 0 et Aod <> Pi/2 et Aod <> Pi et Aod <> 3Pi/2

On calcul Xp et Yp , le point d'intersection de la droite avec une droite perpendiculaire passant par le centre du cercle. On verifie que la distance (D) centre cercle / point est inferieure au rayon du cercle.

Aref est l'angle du segment point de la droite / centre du cercle

  • Si Aref <= Pi :
    • Si Aref < Aod :
      Angle = Aod + (Pi/2) - arccos(D/rc)
      X1 = xc + rc cos(Angle)
      Y1 = yc + rc sin(Angle)
      et
      Angle = Aod + (Pi/2) + arccos(D/rc)
      X2 = xc + rc cos(Angle)
      Y2 = yc + rc sin(Angle)
      			
    • Si Aref >= Aod :
      Angle = Aod + (3Pi/2) - arccos(D/rc)
      X1 = xc + rc cos(Angle)
      Y1 = yc + rc sin(Angle)
      et
      Angle = Aod + (3Pi/2) + arccos(D/rc)
      X2 = xc + rc cos(Angle)
      Y2 = yc + rc sin(Angle)
      			
  • Si Aref > Pi :
    • Aref = Aref - Pi
    • Si Aref < Aod :
      Angle = Aod + (3Pi/2) - arccos(D/rc)
      X1 = xc + rc cos(Angle)
      Y1 = yc + rc sin(Angle)
      et
      Angle = Aod + (3Pi/2) + arccos(D/rc)
      X2 = xc + rc cos(Angle)
      Y2 = yc + rc sin(Angle)
      			
    • Si Aref >= Aod :
      Angle = Aod + (Pi/2) - arccos(D/rc)
      X1 = xc + rc cos(Angle)
      Y1 = yc + rc sin(Angle)
      et
      Angle = Aod + (Pi/2) + arccos(D/rc)
      X2 = xc + rc cos(Angle)
      Y2 = yc + rc sin(Angle)
      			

Point d'intersection entre 2 cercles

Valeurs fournies 'xc1' , 'yc1' , 'rc1' , 'xdc1' , 'ydc1' , 'Adc1' , 'xfc1' , 'yfc1' , 'Afc1' pour le premier cercle et 'xc2' , 'yc2' , 'rc2' , 'xdc2' , 'ydc2' , 'Adc2' , 'xfc2' , 'yfc2' , 'Afc2' pour le deuxieme cercle.

Si xc1 = xc2 et yc1 = yc2 alors pas de solution.

  • Le premier cercle est celui de plus grand rayon.
  • Soit D la distance entre les deux centres.
  • Soit Angle1 l'angle du segment centre cercle 1 / centre cercle2.
    Angle2 = arccos((D<sup>2</sup> + rc1<sup>2</sup> - rc2<sup>2</sup>)/(2D rc1))
    X1 = xc + rc1 cos(Angle1 + Angle2)
    Y1 = yc + rc1 sin(Angle1 + Angle2)
    X2 = xc + rc1 cos(Angle1 - Angle2)
    Y2 = yc + rc1 sin(Angle1 - Angle2)
    		

Point symétrique par rapport à une droite

Valeurs fournies 'xp' , 'yp' du point et 'xpd' , 'ypd' , 'Aod' , 'xdd' , 'ydd' , 'xfd' , 'yfd' de la droite. Soit X2,Y2 le point d'intersection de la droite avec sa perpendiculaire passant par le point.

X = 2 X2 - xp
Y = 2 Y2 - yp
	

Point tourné autour d'un autre point

Valeurs fournies 'xc' , 'yc' du point centre de rotation , 'xp' , 'yp' du point à tourner et A l'angle de rotation.

Si xp = xc
R = yp - yc
X = Xc - R sin(A)
Y = yc + R cos(A)
	
Si yp = yc
R = xp - xc
X = Xc + R cos(A)
Y = yc + R sin(A)
	
Si xp <> xc et yp <> yc

Soit R la distance entre les deux points.

B = arccos((xp - xc) / R) (B compris entre 0 et pi)
Si xp - xc >= 0 et yp - yc < 0 alors B = 2Pi - B
Si xp - xc < 0 et yp - yc < 0 alors B = 2Pi - B
X = xc + R cos(A + B )
Y = yc + R sin(A + B )
	

Point symétrique par rapport à un point

Valeurs fournies 'xp' , 'yp' du point et 'xps' , 'yps' du point de symetrie.

X = 2 xps - xp
Y = 2 yps - yp
	

Point milieu de 2 points

Valeurs fournies 'xp1' , 'yp1' du premier point et 'xp2' , 'yp2' du deuxieme point.

X = 1/2 (xp1 + xp2)
Y = 1/2 (yp1 + yp2)
	

Droites

Pour tous les angles :

  • Si A < 0 alors A = A + Pi
  • Si A > Pi alors A = A - Pi

Droite passant par un point cartésien et angle donné par rapport à l'horizontale

Valeurs fournies 'x' , 'y' du point et Angle

X = x
Y = y
A = Angle
	

Droite passant par un point avec un angle donné par rapport à l'horizontale

Valeurs fournies 'xp' , 'yp' du point et Angle

X = xp
Y = yp
A = Angle
	

Droite passant par un point et parallèle à une autre droite

Valeurs fournies 'xp' , 'yp' pour le point et 'xpd' , 'ypd' , 'Aod' , 'xdd' , 'ydd' , 'xfd' , 'yfd' pour la droite.

X = xp
Y = yp
A = Aod
	

Droite passant par un point et tangente à un cercle

Valeurs fournies 'xp' , 'yp' pour le point et 'xc' , 'yc' , 'rc' , 'xdc' , 'ydc' , 'Adc' , 'xfc' , 'yfc' , 'Afc' pour le cercle.

  • Si xp = xc et yp = yc , il n'y a pas de solution.
  • Si la distance (D) point/centre du cercle est inferieure a rc , il n'y a pas de solution.
  • Sinon:
    B est l'angle du segment point/centre cercle
    X = xp
    Y = yp
    A = B + arcsin(rc / D)
    ou
    A = B - arcsin(rc / D)
    		

Droite passant par 2 points

Valeurs fournies 'xp1' , 'yp1' du premier point et 'xp2' et 'yp2' du deuxieme point .

X = xp1
Y = yp2
D est la distance point 1 / point 2
A = arccos((xp2 - xp1) / D)
si yp2 < yp1 alors A = 2Pi - A
	

Droite passant par un point et perpendiculaire à une autre droite

Valeurs fournies 'xp' , 'yp' pour le point et 'xpd' , 'ypd' , 'Aod' , 'xdd' , 'ydd' , 'xfd' , 'yfd' pour la droite.

X = xp
Y = yp
A = Aod + Pi/2
	

Droite parallèle à une autre droite et tangente à un cercle

Valeurs fournies 'xpd' , 'ypd' , 'Aod' , 'xdd' , 'ydd' , 'xfd' , 'yfd' et 'xc' , 'yc' , 'rc' , 'xdc' , 'ydc' , 'Adc' , 'xfc' , 'yfc' , 'Afc' .

X = xc - rc sin(Aod) et Y = yc + rc cos(Aod)
ou
X = xc + rc sin(Aod) et Y = yc - rc cos(Aod)
	

Droite perpendiculaire à une droite et tangente à un cercle

Valeurs fournies 'xpd' , 'ypd' , 'Aod' , 'xdd' , 'ydd' , 'xfd' , 'yfd' pour la droite et 'xc' , 'yc' , 'rc' , 'xdc' , 'ydc' , 'Adc' , 'xfc' , 'yfc' , 'Afc' pour le cercle.

X = xc - rc cos(Aod) et Y = yc - rc sin(Aod)
ou
X = xc + rc cos(Aod) et Y = yc + rc sin(Aod)
A = Aod + Pi/2
	

Droite tangente à 2 cercles

Valeurs fournies 'xc1' , 'yc1' , 'rc1' , 'xdc1' , 'ydc1' , 'Adc1' , 'xfc1' , 'yfc1' , 'Afc1' pour le premier cercle et 'xc2' , 'yc2' , 'rc2' , 'xdc2' , 'ydc2' , 'Adc2' , 'xfc2' , 'yfc2' , 'Afc2' pour le deuxieme cercle.

  • Si xc1 = xc2 et yc1 = yc2 , il n'y a pas de solution.
  • Sinon:
    • Le premier cercle est le plus à gauche.
    • D est la distance entre les deux centres de cercle.
    • Si D < rc1 et D + rc2 < rc1 , il n'y a pas de solution.
    • Aref est l'angle du segment centre du cercle 1 / centre du cercle 2.
    • Si rc1 > rc2
      1. Valeur = (rc1 - rc2)/D
        • Pas de solution si Valeur < -1 ou Valeur > 1.
        • Sinon:
          Aod = Aref - arcsin(Valeur)
          xdd = xc1- rc1 sin(Aod)
          ydd = yc1 + rc1 cos(Aod)
          xfd = xc2 - rc2 sin(Aod)
          yfd = yc2 + rc2 cos(Aod)
          xpd = xdd
          ypd = ydd
          ou
          Aod = Aref + arcsin(Valeur)
          xdd = xc1+ rc1 sin(Aod)
          ydd = yc1 - rc1 cos(Aod)
          xfd = xc2 + rc2 sin(Aod)
          yfd = yc2 - rc2 cos(Aod)
          xpd = xdd
          ypd = ydd
          					
      • Valeur = (rc1 + rc2)/D
        • Pas de solution si Valeur < -1 ou Valeur > 1.
        • Sinon:
          Aod = Aref - arcsin(Valeur)
          xdd = xc1- rc1 sin(Aod)
          ydd = yc1 + rc1 cos(Aod)
          xfd = xc2 + rc2 sin(Aod)
          yfd = yc2 - rc2 cos(Aod)
          xpd = xdd
          ypd = ydd
          ou
          Aod = Aref + arcsin(Valeur)
          xdd = xc1+ rc1 sin(Aod)
          ydd = yc1 - rc1 cos(Aod)
          xfd = xc2 - rc2 sin(Aod)
          yfd = yc2 + rc2 cos(Aod)
          xpd = xdd
          ypd = ydd
          					
    • Si rc2 > rc1 :
      • Valeur = (rc2 - rc1)/D
        • Pas de solution si Valeur < -1 ou Valeur > 1.
        • Sinon:
          Aod = Aref + arcsin(Valeur)
          xdd = xc1- rc1 sin(Aod)
          ydd = yc1 + rc1 cos(Aod)
          xfd = xc2 - rc2 sin(Aod)
          yfd = yc2 + rc2 cos(Aod)
          xpd = xdd
          ypd = ydd
          ou
          Aod = Aref - arcsin(Valeur)
          xdd = xc1+ rc1 sin(Aod)
          ydd = yc1 - rc1 cos(Aod)
          xfd = xc2 + rc2 sin(Aod)
          yfd = yc2 - rc2 cos(Aod)
          xpd = xdd
          ypd = ydd
          					
      • Valeur = (rc1 + rc2)/D
        • Pas de solution si Valeur < -1 ou Valeur > 1.
        • Sinon:
          Aod = Aref - arcsin(Valeur)
          xdd = xc1- rc1 sin(Aod)
          ydd = yc1 + rc1 cos(Aod)
          xfd = xc2 + rc2 sin(Aod)
          yfd = yc2 - rc2 cos(Aod)
          xpd = xdd
          ypd = ydd
          ou
          Aod = Aref + arcsin(Valeur)
          xdd = xc1+ rc1 sin(Aod)
          ydd = yc1 - rc1 cos(Aod)
          xfd = xc2 - rc2 sin(Aod)
          yfd = yc2 + rc2 cos(Aod)
          xpd = xdd
          ypd = ydd
          					

Droite tangente à un cercle avec un angle donné par rapport à l'horizontale

Valeurs fournies 'xc' , 'yc' , 'rc' , 'xdc' , 'ydc' , 'Adc' , 'xfc' , 'yfc' , 'Afc' pour le cercle et A pour l'angle.

X = xc - rc sin(A) et Y = yc + rc cos(A)
ou
X = xc + rc sin(A) et Y = yc - rc cos(A)
	

Bissectrice

Valeurs fournies 'xpd1' , 'ypd1' , 'Aod1' , 'xdd1' , 'ydd1' , 'xfd1' , 'yfd1' pour la premiere droite et 'xpd2' , 'ypd2' , 'Aod2' , 'xdd2' , 'ydd2' , 'xfd2' , 'yfd2' pour la deuxieme droite.

Obtenir les équations des 2 droites .

a1 x + b1 y + c1 = 0
a2 x + b2 y + c2 = 0
	
  • Si a1 b2 - a2 b1 = 0 pas de solutions .
  • Sinon:
    X = (c2 b1 - c1 b2) / (a1 b2 - a2 b1)
    Y = (a2 c1 - a1 c2) / (a1 b2 - a2 b1)
    		
    • Si Aod2 > Aod1 alors
      A = 1/2 (Aod1 + Aod2)
      			
    • Si Aod2 < Aod1 alors
      A = 1/2 (Aod1 + Aod2) + Pi/2
      			

Droite parallèle à une autre avec un écart donné

Valeurs fournies 'xpd' , 'ypd' , 'Aod' , 'xdd' , 'ydd' , 'xfd' , 'yfd' pour la droite et D pour l'ecart .

X = xpd - D sin(Aod)
Y = ypd + D cos(Aod)
A = Aod
ou
X = xpd + D sin(Aod)
Y = ypd - D cos(Aod)
A = Aod
	

Droite symétrique par rapport à une autre droite

Valeurs fournies 'xpd' , 'ypd' , 'Aod' , 'xdd' , 'ydd' , 'xfd' , 'yfd' pour la droite 'xpds' , 'ypds' , 'Aods' , 'xdds' , 'ydds' , 'xfds' , 'yfds' pour la droite de symetrie

  • Si Aod = Aods ou Aod = Aods +- Pi Calculer le point d'intersection (xa, ya) de la droite avec sa perpendiculaire passant par xpds, ypds.
    X = 2*xpds - xa
    Y = 2*ypds - ya
    A = Aod
    		
  • Sinon : Obtenir les équations des 2 droites .
    a1 x + b1 y + c1 = 0
    a2 x + b2 y + c2 = 0
    		
    • Si a1 b2 - a2 b1 = 0 pas de solutions .
    • Sinon:
      X = (c2 b1 - c1 b2) / (a1 b2 - a2 b1)
      Y = (a2 c1 - a1 c2) / (a1 b2 - a2 b1)
      A = 2 Aods - Aod
      			

Droite tournée autour d'un point

Valeurs fournies 'xc' , 'yc' pour le point de rotation , 'xpd' , 'ypd' , 'Aod' , 'xdd' , 'ydd' , 'xfd' , 'yfd' pour la droite et A pour l'angle .

Soit X2,Y2 le point d'intersection de la droite avec sa perpendiculaire passant par le point de rotation.

R = sqrt( (X2 - xc)<sup>2</sup> + (Y2 - yc)<sup>2</sup>)
B = arccos((X2 - xc) / R)

Si Y2 < yc alors B = 2Pi - B

X = xc + R cos(A + B )
Y = yc + R sin(A + B )
A = Aod + A
	

Droite symétrique par rapport à un point

Valeurs fournies 'xps' , 'yps' pour le point de symetrie et 'xpd' , 'ypd' , 'Aod' , 'xdd' , 'ydd' , 'xfd' , 'yfd' pour la droite.

Soit X2, Y2 le point d'intersection de la droite avec sa perpendiculaire passant par le point de rotation.

X = 2 xps - X2
Y = 2 yps - Y2
A = Aod
	

Cercles

Point de centre et rayon

Valeurs fournies 'xpc' , 'ypc' et 'r' .

X = xpc
Y = ypc
R = r
	

Point de centre et point sur la circonférence

Valeurs fournies 'xpc' , 'ypc' pour le point de centre et 'xp' et 'yp' pour le point sur la circonference.

  • Si xpc = xp et ypc = yp , il n'y a pas de solution.
  • Sinon:
    X = xpc
    Y = ypc
    R = distance point de centre / point sur la circonference
    		

Point de centre et droite tangente

Valeurs fournies 'xpc' , 'ypc' pour le point de centre et 'xpd' , 'ypd' , 'Aod' , 'xdd' , 'ydd' , 'xfd' , 'yfd' pour la droite tangente.

Obtenir l'équation de la droite .

ax + by + c= 0
	
  • Si axpc + bypc + c = 0 il n'y a pas de solution.
  • Sinon, soit X2,Y2 le point d'intersection de la droite avec sa perpendiculaire passant par le point de rotation.
    X = xpc
    Y = ypc
    R = distance point de centre / point X2,Y2
    		

Point de centre et cercle tangent

Valeurs fournies 'xpc' , 'ypc' pour le point de centre et 'xc' , 'yc' , 'rc' , 'xdc' , 'ydc' , 'Adc' , 'xfc' , 'yfc' , 'Afc' pour le cercle tangent.

  • Si (xpc-xc)2 + (ypc - yc)2 - rc2 = 0, il n'y a pas de solution.
  • Sinon:
    X = xpc
    Y = ypc
    		
    • D est la distance point de centre / point de centre du cercle.
    • Si D > rc :
      R = D - rc
      ou
      R = D + rc
      			
    • Si D <= rc :
      R = rc - D
      					   

Point sur la circonférence , droite tangente et rayon

Valeurs fournies 'xp' , 'yp' pour le point , 'xpd' , 'ypd' , 'Aod' , 'xdd' , 'ydd' , 'xfd' , 'yfd' pour la droite et 'r' pour le rayon.

Obtenir l'équation de la droite .

ax + by + c= 0
	
  • Si axp + byp + c = 0 :
    X = xp - r sin(Aod)
    Y = yp + r cos(Aod)
    R = r
    ou
    X = xp + r sin(Aod)
    Y = yp - r cos(Aod)
    R = r
    		
  • Sinon, les coordonnées du point de centre sont l'intersection de la droite et du

cercle suivant :

  • Droite :
    • Si le point est au dessus ou à gauche de la droite d'origine :
      X = xpd - r sin(Aod)
      Y = ypd + r cos(Aod)
      A = Aod
      			
    • Si le point est au dessous ou à droite de la droite d'origine :
      X = xpd + r sin(Aod)
      Y = ypd - r cos(Aod)
      A = Aod
      </code
      * Cercle : <code>
      X = xp
      Y = yp
      R = r
      			

Point sur la circonférence , cercle tangent et rayon

Valeurs fournies 'xp' , 'yp' pour le point , 'xc' , 'yc' , 'rc' , 'xdc' , 'ydc' , 'Adc' , 'xfc' , 'yfc' , 'Afc' pour le cercle et 'r' pour le rayon .

  • Soit D la distance entre le point et le centre du cercle tangent.
    • Si D = rc alors :
      • Obtenir la droite passant par xp,yp et xc,yc
      • Les points de centre sont les points d'intersection de cette droite avec un cercle de centre xp,yp et de rayon r
    • Si D > rc alors :
      • Si (D - rc) > r alors il n'y a pas de solution.
      • Sinon les points de centre sont les intersections des cercles suivants :
        xp,yp,r et xc,yc,(r - rc)
        xp,yp,r et xc,yc,(r + rc)
        				
    • Si D < rc alors :
      • Si r > (rc + D) / 2 alors il n'y a pas de solution.
      • Si rc - D > r alors il n'y a pas de solution.
      • Sinon les points de centre sont les intersections des cercles xp,yp,r et xc,yc,(rc - r)
  • R = r

2 points sur la circonférence et rayon

Valeurs fournies 'xp1' , 'yp1' pour le premier point , 'xp2' , 'yp2' pour le deuxième point et 'r' pour le rayon .

  • Si xp1 = xp2 et yp1 = yp2 il n'y a pas de solution.
  • Sinon, les points de centre sont les points d'intersection des cercles xp1,yp1,r et xp2,yp2,r.
  • R = r

2 droites tangentes et rayon

Valeurs fournies 'xpd1' , 'ypd1' , 'Aod1' , 'xdd1' , 'ydd1' , 'xfd1' , 'yfd1' pour la première droite ,'xpd2' , 'ypd2' , 'Aod2' , 'xdd2' , 'ydd2' , 'xfd2' , 'yfd2' pour la deuxième droite et 'r' pour le rayon . On a :

  • D1 :
    X = xpd1 - r sin(Aod)
    Y = ypd1 + r cos(Aod)
    A = Aod
    		
  • D2 :
    X = xpd1 + r sin(Aod)
    Y = ypd1 - r cos(Aod)
    A = Aod
    		
  • D3 :
    X = xpd2 - r sin(Aod)
    Y = ypd2 + r cos(Aod)
    A = Aod
    		
  • D4 :
    X = xpd2 + r sin(Aod)
    Y = ypd2 - r cos(Aod)
    A = Aod
    		
  • Les points de centre sont les intersections de :
    • D1 et D3
    • D1 et D4
    • D2 et D3
    • D2 et D4
  • R = r

Droite tangente , cercle tangent et rayon

Valeurs fournies 'xpd' , 'ypd' , 'Aod' , 'xdd' , 'ydd' , 'xfd' , 'yfd' pour la droite, 'xc' , 'yc' , 'rc' , 'xdc' , 'ydc' , 'Adc' , 'xfc' , 'yfc' , 'Afc' pour le cercle et 'r' pour le rayon.

  • Soit X2, Y2 le point d'intersection de la droite avec sa perpendiculaire passant par le point de centre du cercle.
  • Soit D , la distance entre le point X2,Y2 et le centre du cercle.
    • Si D >= rc alors :
      • On calcule la droite parallèle à la droite avec une distance r en direction du cercle.
      • Les point de centre sont les points d'intersection de cette droite avec les cercles suivants :
        xc,yc,(r + rc)
        xc,yc,(r - rc) si r > rc
        				
    • Si D < rc alors :
      • On calcul les droites parallèles à la droite avec une distance r.
      • Les points de centre sont les points d'intersections de ces droites avec les cercles suivants :
        xc,yc,(rc + r)
        xc,yc,(rc - r) si rc > r
        				
  • R = r

2 cercles tangents et rayon

Valeurs fournies 'xc1' , 'yc1' , 'rc1' , 'xdc1' , 'ydc1' , 'Adc1' , 'xfc1' , 'yfc1' , 'Afc1' pour le premier cercle, 'xc2' , 'yc2' , 'rc2' , 'xdc2' , 'ydc2' , 'Adc2' , 'xfc2' , 'yfc2' , 'Afc2' pour le deuxième cercle et 'r' pour le rayon.

  • Si xc1=xc2 et yc1=yc2 et rc1=rc2 alors il n'y a pas de solution.
  • Sinon, soit D la distance entre xc1,yc1 et xc2,yc2.
    • Si D < (rc1 + rc2) alors :
      • C1 est interne, C2 est interne:
        • Si rc1 + rc2 - D < 2r ou si r > rc2 alors il n'y a pas de solution.
        • Sinon:
          • Les points de centre sont les point d'intersection des cercles xc1,yc1,rc1-r et xc2,yc2,rc2-r
          • R = r
      • C1 est interne, C2 est externe:
        • Si rc1 - rc2 + D < 2r alors il n'y a pas de solution.
        • Sinon:
          • Les points de centre sont les point d'intersection des cercles xc1,yc1,rc1-r et xc2,yc2,rc2+r
          • R = r
      • C1 est externe, C2 est interne:
        • Si rc2 - rc1 + D < 2r ou si r > rc2 alors il n'y a pas de solution.
        • Sinon:
          • Les points de centre sont les point d'intersection des cercles xc1,yc1,rc1+r et xc2,yc2,rc2-r
          • R = r
      • C1 est externe, C2 est externe:
        • Les points de centre sont les point d'intersection des cercles xc1,yc1,rc1+r et xc2,yc2,rc2+r
        • R = r
    • Sinon :
      • Interne à C1, interne àC2:
        • Si r < rc1 + rc2 + D alors il n'y a pas de solution.
        • Sinon:
          • Les points de centre sont les point d'intersection des cercles xc1,yc1,r-rc1 et xc2,yc2,r-rc2
          • R = r
      • Interne à C1, externe à C2:
        • Si r < rc1 - rc2 + D alors il n'y a pas de solution.
        • Sinon:
          • Les points de centre sont les point d'intersection des cercles xc1,yc1,r-rc1 et xc2,yc2,rc2+r
          • R = r
      • Externe à C1, interne à C2:
        • Si r < rc2 - rc1 + D alors il n'y a pas de solution.
        • Sinon:
          • Les points de centre sont les point d'intersection des cercles xc1,yc1,rc1+r et xc2,yc2,r-rc2
          • R = r
      • Externe à C1, externe à C2:
        • Si r < D - rc2 - rc1 alors il n'y a pas de solution.
        • Sinon:
          • Les points de centre sont les point d'intersection des cercles xc1,yc1,rc1+r et xc2,yc2,rc2+r
          • R = r

Concentrique à un autre cercle et rayon

Valeurs fournies 'xc' , 'yc' , 'rc' , 'xdc' , 'ydc' , 'Adc' , 'xfc' , 'yfc' , 'Afc' pour le cercle et 'r' pour le rayon.

X = xc
Y = yc
R = r
	

Concentrique à un autre cercle et différence de rayon

Valeurs fournies 'xc' , 'yc' , 'rc' , 'xdc' , 'ydc' , 'Adc' , 'xfc' , 'yfc' , 'Afc' pour le cercle et 'E' pour la différence de rayon.

X = xc
Y = yc
R = rc + E
	

Passant par 3 points

Valeurs fournies 'xp1' , 'yp1' pour le premier point, 'xp2' , 'yp2' pour le deuxième point et 'xp3' , 'yp3' pour le troisième point.

L'équation du cercle est :

X<sup>2</sup> + Y<sup>2</sup> + AX + BY + C = 0

D = xp1 yp2 + yp1 xp3 + xp2 yp3 - xp3 yp2 - yp3 xp1 - yp1 xp2

DA = (xp3<sup>2</sup> + yp3<sup>2</sup>)yp2 + (xp1<sup>2</sup> + yp1<sup>2</sup>)yp3 + (xp2<sup>2</sup> + yp2<sup>2</sup>)yp1 - (xp1<sup>2</sup>+yp1<sup>2</sup>)yp2 - (xp3<sup>2</sup> + yp3<sup>2</sup>)yp1 - (xp2<sup>2</sup> + yp2<sup>2</sup>)yp3

DB = (xp2<sup>2</sup> + yp2<sup>2</sup>)xp3 + (xp3<sup>2</sup> + yp3<sup>2</sup>)xp1 + (xp1<sup>2</sup> + yp1<sup>2</sup>)xp2 - xp1(xp2<sup>2</sup> + yp2<sup>2</sup>) - xp3(xp1<sup>2</sup> + yp1<sup>2</sup>) - xp2(xp3<sup>2</sup> + yp3<sup>2</sup>)

DC = (xp1<sup>2</sup> + yp1<sup>2</sup>)xp3 yp2 + (xp2<sup>2</sup> + yp2<sup>2</sup>)yp3 xp1 + (xp3<sup>2</sup> + yp3<sup>2</sup>)xp2 yp1 - (xp3<sup>2</sup> + yp3<sup>2</sup>)xp1 yp2 - (xp2<sup>2</sup> + yp2<sup>2</sup>)yp1 xp3 - (xp1<sup>2</sup> + yp1<sup>2</sup>) xp2 yp3

A = DA / D B = DB / D C = DC / D
X = - A / 2
Y = - B / 2
R = sqrt(X<sup>2</sup> + Y<sup>2</sup> - C)
	

2 points sur la circonférence et droite tangente

2 points sur la circonférence et cercle tangent

Point sur la circonférence et 2 droites tangentes

Point sur la circonférence , droite tangente et cercle tangent

Point sur la circonférence et 2 cercles tangents

3 droites tangentes

2 droites tangentes et cercle tangent

2 cercles tangents et droite tangente

3 cercles tangents

Coordonnées cartésiennes du centre et rayon

Valeurs fournies 'x' , 'y' et 'r' .

X = x
Y = y
R = r
	

Cercle déplacéen coordonnées cartésiennes

Valeurs fournies 'xc' , 'yc' , 'rc' , 'xdc' , 'ydc' , 'Adc' , 'xfc' , 'yfc' , 'Afc' pour le cercle et 'x' , 'y' pour les valeurs de déplacement.

X = xc + x
Y = yc + y
R = r
	

Cercle déplacé en coordonnées polaires

Valeurs fournies 'xc' , 'yc' , 'rc' , 'xdc' , 'ydc' , 'Adc' , 'xfc' , 'yfc' , 'Afc' pour le cercle et 'r' , 'A' pour les valeurs de déplacement.

X = xc + r cos(A)
Y = yc + r sin(A)
R = rc
	

Cercle symétrique par rapport à une droite

Valeurs fournies 'xpd' , 'ypd' , 'Aod' , 'xdd' , 'ydd' , 'xfd' , 'yfd' pour la droite de symètrie et 'xc' , 'yc' , 'rc' , 'xdc' , 'ydc' , 'Adc' , 'xfc' , 'yfc' , 'Afc' pour le cercle.

On calcul P(x,y) qui est le point de centre du cercle symétrique par rapport à la droite.

X = x
Y = y
R = rc
	

Cercle tourné autour d'un point

Valeurs fournies 'xpc' , 'ypc' pour le point de rotation , 'xc' , 'yc' , 'rc' , 'xdc' , 'ydc' , 'Adc' , 'xfc' , 'yfc' , 'Afc' pour le cercle et 'A' pour l'angle de rotation.

On calcul P(x,y) qui est le point de centre du cercle tourné autour du point de rotation.

X = x
Y = y
R = rc
	

Cercle symétrique par rapport à un point

Valeurs fournies 'xps' , 'yps' pour le point de symètrie et 'xc' , 'yc' , 'rc' , 'xdc' , 'ydc' , 'Adc' , 'xfc' , 'yfc' , 'Afc' pour le cercle.

X = 2 xps - xc
Y = 2 yps - yc
R = rc
	

Licence

Ce logiciel est libre au sens de la 'GNU General Public License' (version 2) de la Free Software Foundation . Il est fourni en l'état et sans aucune garantie.

Téléchargement

Historique

Date Auteur Description des modifications
17 août 2000 Alain JAFFRE J'utilisais et formais du personnel sur un logiciel de FAO 2D (Fabrication Assisté par Ordinateur 2 Dimensions). Celui-ci était protégé par un clé électronique. Dès que je voulais l'utiliser à des fins personnelles pour réaliser des dessins industriels, il me fallait tout emmener. Les solutions du commerce étaient chères ou trés peu intuitives dans leur utilisation. J'ai donc décidé d'essayer de créer mon propre logiciel de dessin (voir la partie programmes). Cela entraîne la question suivante : Comment calculer des éléments géomètriques ? Je me suis pris par la main, creusé la cervelle et ai parcouru un tas de bouqins de math.
19 janvier 2002 Alain JAFFRE Remise en forme du document pour le rendre plus lisible et facilement imprimable
29 novembre 2004 Alain JAFFRE Correction d'une erreur sur la bissectrice de 2 droites, signalée par un visiteur. Merci à lui.

La dernière version est disponible sur: http://jack.r.free.fr.