Équation de cercle passant par quatre points

bonjour,
quelqu'un peut me dire comment calculer l'équation d'un cercle passant au plus près de 4 points (A,B,C,D)
Particularités , A et C sont sur une droite, B et D sur une autre droite. Les deux droites sont perpendiculaires.
merci115830

Réponses

  • Bonjour ,

    on peut prendre la moyenne des diamètres des 3 cercles passant par 3 des 4 points donnés .
    Restera à positionner le centre au centre du quadrilatère formé par les médiatrices des côtés du quadrilatère initial

    Cordialement
  • Bonjour,

    Que veux-tu minimiser quand tu dis "au plus près" ?
  • Bonjour.

    "A et C sont sur une droite" ??? Difficile de faire autrement ! S'ils ne sont pas confondus, ils définissent une droite, ils sont sur la droite ... (AC).

    Cordialement.
  • fait la question est (?): étant donné quatre points, trouver le point O qui minimise la somme ds distances OA+OB+OC+OD ?
    Le cercle ne sert à rien, je pense (remarque de GaBuZoMeu).
  • Ou alors trouver le cercle qui minimise la somme des distances de ces quatre points au cercle.
    Algebraic symbols are used when you do not know what you are talking about.
            -- Schnoebelen, Philippe
  • Bonsoir,

    Il y a un et un seul cercle passant par ces 4 points.
    Soit $O$ l'intersection des deux cordes alors $OA^2+OB^2+OC+OD^2$ est constant et vaut..

    EDIt : non, c'est faux, mais peut-être que l'égalité suggérée peut servir
  • Heu ... en général, il n'y a pas de cercle passant par 4 points. Si c'est le cas, on dit d'ailleurs qu'ils sont cocycliques.

    Pour 4 points situés sur un même cercle de centre O (donc cocyclique), $OA^2+OB^2+OC+OD^2$ peut être bien plus grand que le minimum cherché (Penser à 4 points très proches).

    Cordialement.
  • On peut vouloir minimiser le maximum des distances au cercle, la somme des distances au cercle, la somme des carrés des distances au cercle, la somme des carrés des valeurs prises par l'équation (normalisée) du cercle, ou la somme des valeurs absolues des valeurs de cette équation ...
  • Philouphilou s'est désintéressé de son problème.

    Je note $A_1,A_2,A_3,A_4$ les quatre points donnés, $O$ le centre du cercle recherché et $r$ son rayon.

    Si l'on veut minimiser la somme des carrés des distances au cercle, soit $\sum_{i=1}^4 (OA_i-r)^2$, on doit avoir $r= \dfrac14\,\sum_{i=1}^4 OA_i$ et, avec ce $r$, $\sum_{i=1}^4 \left(1-\dfrac{r}{OA_i}\right)\overrightarrow{OA_i}=0$.

    Si l'on veut minimiser la somme des carrés des puissances par rapport au cercle, soit $\sum_{i=1}^4 (OA_i^2-r^2)^2$, on doit avoir $r^2= \dfrac14\,\sum_{i=1}^4 OA_i^2$ et, avec ce $r$, $\sum_{i=1}^4 \left(OA_i^2-r^2\right)\overrightarrow{OA_i}=0$.
  • C'est dommage...

    Je pense que le problème est différent de axe qu'écrit GaBuZoMeu: les 4 points ne sont pas disposés n'importe comment, les diagonales sont perpendiculaires et je pense que distance ne veut pas dire carré des distances.

    On doit donc chercher un point à distance minimale de 4 points disposés ainsi: si on fait brutalement cela donne une expression avec la somme de 4 radicaux, qui n'est pas passionnante. Il doit y avoir une solution déjà archi-connue etp lus élégante.

    Mais ensuite,comment ajuster le rayon du cercle. Ce'st là q'on s'aperçoit que le problème est (après ou non) mal posé, car le rayon est nul. Donc le cercle ne sert qu'à enfumer le lecteur ?

    Ou alors autre solution: ce qu'il appelle distance, c'est la DISTANCE ENTRE UN POINT ET LE PLUS PROCHE POINT DE CONTACT DU CERCLE AVEC LES AXES, ce qui donne un système plus simple...
  • Franchement, mathisse, c'est "chercher un point à distance minimale de 4 points" qui n'a rien à voir avec le problème posé.
    Et apparemment, tu n'as aucune idée de la méthode des moindres carrés.
    Bref, tu te fourvoies complètement.
  • Bon, pour voir, j'ai écrit une procédure python qui prend en entrée une liste de points du plan (au moins trois points) et retourne le centre et le rayon du cercle "le plus proche" des points.
    Le "plus proche" au sens des moindres carrés, les écarts étant mesurés soit par la distance du point au cercle (par défaut), soit par la puissance du point par rapport au cercle. J'ai utilisé le module scipy.optimize.
    import numpy as np
    from scipy.optimize import least_squares
    
    def Carre_Distance(point1,point2) :
        return (point1[0]-point2[0])**2 + (point1[1]-point2[1])**2
    
    def Distance_Sign(point, cercle) :
        centre = (cercle[0],cercle[1]) ; rayon =cercle[2]
        return np.sqrt(Carre_Distance(point,centre))-rayon
    
    def Puissance(point,cercle) :
        centre = (cercle[0],cercle[1]) ; rayon =cercle[2]
        return Carre_Distance(point,centre)-rayon**2
    
    def Cercle3Points(pt1,pt2,pt3) :
        m1=[pt2[0]-pt1[0], pt2[1]-pt1[1], \
            (pt1[0]**2+pt1[1]**2-pt2[0]**2-pt2[1]**2)/2]
        m2=[pt3[0]-pt2[0], pt3[1]-pt2[1], \
            (pt2[0]**2+pt2[1]**2-pt3[0]**2-pt3[1]**2)/2]
        ch=[m1[1]*m2[2]-m1[2]*m2[1],m1[2]*m2[0]-m1[0]*m2[2],\
            m1[0]*m2[1]-m1[1]*m2[0]]
        centre=(ch[0]/ch[2],ch[1]/ch[2])
        rayon=np.sqrt((centre[0]-pt1[0])**2+(centre[1]-pt1[1])**2)
        return centre, rayon
    
    def CerclePresPoints(points,crit="distance") :
        centre0,rayon0=Cercle3Points(points[0],points[1],points[2])
        x0=np.array(list(centre0)+[rayon0])
        pts=np.array(points)
        if crit=="distance" :
            Residu = lambda x : np.array([Distance_Sign(point,x)\
                                           for point in points])
        if crit=="puissance" :
            Residu = lambda x : np.array([Puissance(point,x)\
                                           for point in points])
        res=least_squares(Residu,x0)
        return (res.x[0],res.x[1]),res.x[2]
    

    En essayant un truc proche de la configuration du premier message de ce fil, on obtient des résultats très peu différents avec les deux critères :
    CerclePresPoints([(32,0),(0,47),(-45,0),(0,-30)])
    
    ((-6.532280437644826, 8.459357022681086), 39.234319972977424)
    CerclePresPoints([(32,0),(0,47),(-45,0),(0,-30)], crit="puissance")
    
    ((-6.5316661257390365, 8.458590451953457), 39.2346347778732)

    Avec une configuration plus biscornue, les résultats sont sensiblement différents :
    CerclePresPoints([(32,0),(0,47),(-10,0),(0,-30)])
    
    ((8.604866685914017, 12.617797703194075), 31.995316935305034)
    CerclePresPoints([(32,0),(0,47),(-10,0),(0,-30)],crit="puissance")
    
    ((5.148340662190486, 9.845309933854468), 32.270244150867754)

    En rouge avec la distance, en vert avec la puissance :116054
  • Bonsoir,

    Voir ce fil.

    Cordialement,

    Rescassol
  • Au fond, sachant qu'il n'y a pas de critère absolu, le critère ultime ne serait-il pas esthétique ?
  • Rescassol, si je comprends bien ta procédure correspond au critère "puissance", et tu ajustes les coefficients de l'équation du cercle ; le problème devient alors linéaire.
    Avec le critère "distance" que je prends par défaut, pas moyen de se ramener à un problème linéaire.
  • bonjour et merci à tous de vous intéresser à mon problème.
    il me semblait clair, mais à voir vos remarque je pense maintenant qu'il est très mal énoncé.
    MATHISSE à raison quand je dis passer au plus près des points, c'est la distance minium entre un point et le plus proche point de contact du cercle avec les axes.
    j'espère que c'est plus clair.
  • Oui,

    mais comme il y a plusieurs points, il y a plusieurs "plus proches". Comment en tiens-tu compte ?
    Quelques méthodes correspondant à divers "plus proches".
    * Je prends les cercles qui passent par 3 des points, et pour chacun je mesure la distance du quatrième au cercle. Je choisis le cercle pour lequel cette distance est minimale.
    * je renonce à faire passer le cercle par les 4 points, j'essaie seulement que les distances au cercle soient faibles et "équilibrées"
    * Je fais la somme des distances des 4 points à un cercle variable, et je choisi le (ou les) cercle pour lequel la distance est minimale.
    * Je fais la somme des carrés des distances des 4 points à un cercle variable, et je choisi le (ou les) cercle pour lequel la distance est minimale. Méthode des moindres carrés proposée ci-dessus par GBZM.
    * ...

    Cordialement.
  • Bonjour philouphilou,

    C'est bien que tu te sois réveillé.
    J'ai l'impression que ton problème, mal formulé, vient d'une situation que tu ne nous as pas décrite. Donne nous le contexte, et on pourra faire des réponses plus pertinentes.

    La problématique habituelle est de retrouver un cercle à partir d'un nuage de points. La technique qu'on trouve souvent est une méthode de moindre carrés à partir des écarts qui sont les puissances par rapport à un cercle (c'est ce que fait J. Jacquelin, et c'est ce que fait la procédure de Rescassol).
    La procédure que j'ai écrite plus haut propose cette méthode en option, et propose par défaut un ajustement par moindres carrés avec comme écart la distance au cercle.

    Il semble que ton problème particulier se limite à quatre points, deux sur un axe vertical et deux sur un axe horizontal, et que tu prends pour écart la distance d'un point à la plus proche intersection du cercle avec l'axe sur lequel se trouve ce point. Pour quelle raison t'intéresses-tu à ce problème particulier ?

    Ça serait mieux s'il n'y avait pas besoin d'attendre une semaine pour avoir une réponse.;-)
  • Désolé pour les réponses tardives mais je suis souvent en déplacement.
    J'explique le problème réel en oubliant le coté mathématique.
    On a une machine qui fore un trou théoriquement rond dans un matériau. De part les frottements, arrachements et autres phénomènes le trou n'est pas rond. On contrôle ce trou avec un outil donnant 4 rayons perpendiculaires. L'outil de contrôle n'est pas forcement centré dans le trou et ne mesure donc pas forcément des diamètres.
    Je me retrouve donc avec des points sur le bord du trou et je cherche quel cercle passe au plus près de ces quatre points pour calculer une surface le plus près possible de la réalité.
    Est-ce plus précis ?
    Merci.
  • Effectivement, on comprend mieux. Mais comment sais-tu que le cercle dont tu parles est le plus proche de la réalité (un trou pas vraiment circulaire) ?

    Cordialement.
  • Je reprends ma proposition initiale . C'est pas mal de calculs mais avec des outils comme GeoGebra ou autre ce n'est pas très compliqué .116376
  • On contrôle ce trou avec un outil donnant 4 rayons perpendiculaires. L'outil de contrôle n'est pas forcement centré dans le trou et ne mesure donc pas forcément des diamètres.
    Pour que les choses soient claires : le contrôle se fait à partir d'un point O qui devrait être le centre du trou circulaire ; on mesure les distances de O aux points du bord du trou situés sur deux axes perpendiculaires passant par O (les points A, B, C, D de ton dessin). C'est bien ça ?
    Et normalement, les écarts de ces distances au rayon programmé du trou sont faibles ?
  • le point O de contrôle peut être décalé(et il l'est très souvent) du centre du trou circulaire.

    oui pour les mesures, pour les écarts on peut avoir un gros arrachement donc gros écart
  • Les écarts peuvent être dus
    -au fait que le trou est bien circulaire mais que le centre et le rayon peuvent différer ce ce qui était prévu ,
    - au fait que la forme du trou n'est pas circulaire ?
    Dans ce dernier cas, pourquoi chercher un cercle passant au plus près des quatre points ? Le trou pourrait être elliptique, par exemple ?
  • J'ai du mal à y voir clair. Ton problème provient d'un perçage réel ? Cela m'étonne : les machines d'aujourd'hui percent des trous quasi parfaits sans le moindre problème. Après, peut-être que ça dépend sans doute de la matière percée, je ne sais pas. Mais je suis bien curieux de voir ton outil de contrôle.

    Et qui dit outil de contrôle dit théorie sous-jacente. Tu t'es renseigné là-dessus ?
  • j'ai testé graphiquement la solution de fm_31, ça m'a l'air pas mal. je vais programmer cela et tester. je vous tiens au courant (dans plus d'une semaine....)
  • tu as raison LUDWIG, mais on n'est pas du tout dans le domaine de l'usinage
  • ah ok !! X:-(
  • On peut se passer des 4 cercles et de leur centre en plaçant le centre du cercle cherché à l'intersection des médiatrices de AC et BD .116418
  • e cherche quel cercle passe au plus près de ces quatre points pour calculer une surface le plus près possible de la réalité.

    L'objectif est d'estimer la surface du trou ?
    Pourquoi ne pas calculer l'aire de l'intérieur de l'ellipse d'axes parallèles à (AC) et (BD) passant par A,B,C,D ? Ça, c'est facile, l'aire est :

    $$\pi \dfrac{(x_A-x_C)^2(y_B-y_D)^2-(x_A+x_C)^2(y_B+y_D)^2} {16\sqrt{x_Ax_Cy_By_D}}\;.$$

    On peut jouer avec un applet GeoGebra ici. Bouger les points A,B,C,D sur les axes.
  • Il faudrait connnaître les tolérances géométrique pour savoir si le trou est bon. Le minimum et le maximum bref la zone de tolérance...116424
  • Bonjour

    Ou sinon, empiriquement, tu superposes un quadrillage à l'image de ton trou, tu dessines le polygone le plus proche du trou dont les sommets sont sur le quadrillage, et tu appliques le théorème de Pick.

    $A=I+\frac F 2 - 1$
    A : Aire du trou, en carrés de quadrillage.
    I : sommets à l'intérieur du polygone.
    F : sommets sur la frontière du polygone.

    Libre à toi de faire un quadrillage plus ou moins serré.
    Ce site est fatigant. Les gens modifient sans cesse leurs messages passés, et on ne comprend plus rien à la discussion. Je suis nostalgique du temps où, si on postait une bêtise, on devait l'assumer. Et si on cite le passage pour l'ancrer, l'administrateur supprime en disant qu'on n'a pas besoin de recopier le message passé.
  • Les calculs sont relativement simples116458
  • Autrement dit

    $$ \dfrac{\pi}{16}\left(\sqrt{(x_A-x_C)^2+(y_B+y_D)^2} + \sqrt{(x_A+x_C)^2+(y_B-y_D)^2}\right)^2\;. $$

    On peut remarquer que le centre du cercle choisi par fm31 coïncide avec le centre de l'ellipse d'axes verticaux et horizontaux passant par les quatre points
    .
    J'ai mis les deux options dans un applet GeoGebra (cliquer ici). Vous pouvez jouer avec en bougeant A,B,C,D. On peut voir que les deux options peuvent donner des résultats sensiblement différents. Laquelle est la plus réaliste ? Impossible de décider à partir des éléments fournis par philouphilou.
  • Merci à tous (surtout GABUZOMEU et FM_31), j'ai codé les formules simplifiées et le résultat m'a l'air plutôt pas mal.
    Le sujet est clôs pour moi.
    philouphilou
  • Si tu as essayé l'applet que j'ai mis en lien, tu as pu voir que les résultats peuvent être sensiblement différents.
    Le mystère de ton histoire reste entier pour moi. ;-)
Connectez-vous ou Inscrivez-vous pour répondre.