{"id":7171,"date":"2024-03-27T17:50:41","date_gmt":"2024-03-27T13:50:41","guid":{"rendered":"http:\/\/curvica974.re\/?p=7171"},"modified":"2025-12-22T13:30:38","modified_gmt":"2025-12-22T09:30:38","slug":"realisation-de-diverses-macros-du-modele-non-arguesien-de-hilbert","status":"publish","type":"post","link":"https:\/\/curvica974.re\/?p=7171","title":{"rendered":"R\u00e9alisation de diverses macros du mod\u00e8le non argu\u00e9sien de Hilbert"},"content":{"rendered":"\n<p>Suite \u00e0 la <a rel=\"noreferrer noopener\" href=\"http:\/\/curvica974.re\/?p=7083\" data-type=\"URL\" data-id=\"http:\/\/curvica974.re\/?p=7083\" target=\"_blank\">construction alg\u00e9brique g\u00e9n\u00e9rale<\/a> d&rsquo;une droite de Hilbert (H-droite), voici le d\u00e9tail de mise en \u0153uvre de quelques macros techniques. Cette page est surtout une page d&rsquo;archivage des m\u00e9thodes utilis\u00e9es, mais, pour quelques lecteurs, elle peut \u00eatre int\u00e9ressante \u00e0 consulter pour les techniques utilis\u00e9es. Nous aborderons ainsi :<br>\u2022 la r\u00e9alisation d&rsquo;un \u00ab\u00a0point sur objet\u00a0\u00bb d&rsquo;une H-droite<br>\u2022 la construction d&rsquo;une H-droite parall\u00e8le \u00e0 une droite donn\u00e9e.<br>\u2022 l&rsquo;intersection de deux H-droites.<br>\u2022 le calcul de la H-distance entre deux points (ou H-Longueur d&rsquo;un segment)<br>\u2022 la construction du H-milieu de deux points<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">Prendre un point sur objet d&rsquo;une H-droite<strong> <\/strong><\/h2>\n\n\n\n<p>Une H-droite est, soit une droite affine ordinaire si elle ne coupe pas l&rsquo;ellipse &#8211; ou lui est tangente, soit est compos\u00e9e de deux demi-droites et un arc de cercle, qui sont trois objets distincts pour un logiciel de g\u00e9om\u00e9trie dynamique. On peut n\u00e9anmoins arriver \u00e0 simuler &#8211; en manipulation directe &#8211; un unique point et l&rsquo;utiliser comme tel dans les macros de construction. Voyons comment.<\/p>\n\n\n\n<p><strong>Macro \u00ab\u00a0Constituants d&rsquo;une droite<\/strong>\u00ab\u00a0<\/p>\n\n\n\n<p>Une premi\u00e8re macro, qui servira \u00e0 toutes les autres consiste juste \u00e0 faire apparaitre les points constituants d&rsquo;une H-droite.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"707\" height=\"453\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Point_Sur_Hdroite.jpg\" alt=\"\" class=\"wp-image-7173\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Point_Sur_Hdroite.jpg 707w, https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Point_Sur_Hdroite-300x192.jpg 300w\" sizes=\"(max-width: 707px) 100vw, 707px\" \/><\/figure><\/div>\n\n\n<p>La macro, \u00e0 partir des trois parties d&rsquo;une H-droite non affine (une demi-droite, l&rsquo;arc de cercle, l&rsquo;autre demi-droite), renvoie cinq points : \\(Ex_h, Ex_b\\) qui servira pour le \u00ab\u00a0point sur objet\u00a0\u00bb, la pente d&rsquo;une droite, et les points constituants de l&rsquo;arc de cercle \\(P_h, P_b, CtrArc{hb}\\) qui eux serviront aussi pour les macros H_Longueur et H-milieu.<\/p>\n\n\n\n<p><strong>Construire un point sur objet de la droite<\/strong><\/p>\n\n\n\n<p>Sur la droite affine \\((Ex_h Ex_b)\\), on prend un point \\(M_{di}\\) (\\(_{di}\\) pour \u00ab\u00a0droite\u00a0\u00bb et \u00ab\u00a0int\u00e9rieur\u00a0\u00bb). C&rsquo;est essentiellement pour cela que les points \\(Ex_h\\) et  \\(Ex_b\\)ont \u00e9t\u00e9 cr\u00e9es : <br>\u2022 d&rsquo;une part, ils sont dans une position stable quand la droite d&rsquo;intersection \\((U_{gg} V_{gg})\\) de <a href=\"http:\/\/curvica974.re\/?p=7083\" data-type=\"URL\" data-id=\"http:\/\/curvica974.re\/?p=7083\" target=\"_blank\" rel=\"noreferrer noopener\">la page pr\u00e9c\u00e9dente<\/a> change d&rsquo;orientation, et donc un point sur objet de cette droite a un comportement barycentrique ind\u00e9pendant de l&rsquo;orientation de la droite.<br>\u2022 ensuite, les points \u00e9tant plus \u00e9loign\u00e9s que \\(P_h\\) et \\(Q_h\\), donc ce m\u00eame comportement barycentrique est plus fluide.<\/p>\n\n\n\n<p>lQuand \\(M_{di}\\) est \u00e0 l&rsquo;int\u00e9rieur de l&rsquo;ellipse on construit le point \\(M_a\\) sur l&rsquo;arc. Ensuite on prend un point \\(M_e\\) sur la droite affine \\((AB)\\). On peut alors construire le point \\(M\\) comme indiqu\u00e9 dans l&rsquo;illustration ci-dessus : le point \\(M\\) est <br>   \u2022 en \\(M_e\\) si la droite \\((AB)\\) ne coupe pas l&rsquo;ellipse<br>   \u2022 en \\(M_a\\) quand \\(M_{di}\\) est dans l&rsquo;ellipse,  en \\(M_{di}\\) sinon.<\/p>\n\n\n\n<p>Pour am\u00e9liorer l&rsquo;exp\u00e9rience utilisateur, on cache le nom des trois points \\(M_e, M_a, M_{di}\\) on pense alors agir sur \\(M\\) alors qu&rsquo;on agit sur les points \\(M_e\\) ou \\(M_{di}\\). Enfin, quand \\(M_{di}\\) est dans l&rsquo;ellipse, il a alors l&rsquo;habillage d&rsquo;un point rouge (produit par Blockly).<\/p>\n\n\n\n<p><strong>Exemple d&rsquo;utilisation : la version projective de la propri\u00e9t\u00e9 de Desargues<\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"999\" height=\"591\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Desargues_Projectif_Hilbert.jpg\" alt=\"\" class=\"wp-image-7175\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Desargues_Projectif_Hilbert.jpg 999w, https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Desargues_Projectif_Hilbert-300x177.jpg 300w, https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Desargues_Projectif_Hilbert-768x454.jpg 768w\" sizes=\"(max-width: 999px) 100vw, 999px\" \/><\/figure><\/div>\n\n\n<p class=\"has-text-align-center has-small-font-size\"><em>Les trois points rouges sont les points de manipulation des points \\(A_1, B_1, C_1\\) quand ils sont int\u00e9rieurs \u00e0 l&rsquo;ellipse.<\/em><br><em>Les points  \\(M, N, P\\) sont construits par une macro <strong>Intersection<\/strong> d\u00e9taill\u00e9e plus loin<\/em><\/p>\n\n\n\n<p>Ouvrir <a href=\"https:\/\/www.dgpad.net\/index.php?url=https:\/\/drive.google.com\/file\/d\/1eU6ksU9NM299CAssRQ1981b7ZFujIwjg\/view?usp=drive_link\" data-type=\"URL\" data-id=\"https:\/\/www.dgpad.net\/index.php?url=http:\/\/curvica974.re\/FigSite\/NonArg\/HilbertAlgebrique\/Desargues_Projectif_Hilbert.dgp\" target=\"_blank\" rel=\"noreferrer noopener\">cette figure<\/a> dans un nouvel onglet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">H-parall\u00e8le \u00e0 une H-droite<\/h2>\n\n\n\n<p>Le seul cas d\u00e9licat est celui de la construction d&rsquo;une parall\u00e8le \u00e0 une H-droite passant par un point \\(M\\) en int\u00e9rieur \u00e0 l&rsquo;ellipse. En notant \\(a\\) la pente de la droite dont on doit prendre une parall\u00e8le, on cherche le param\u00e8tre \\(b\\) tel que la droite d&rsquo;\u00e9quation \\(y=ax+b\\) soit le support affine de l&rsquo;ext\u00e9rieure \u00e0 l&rsquo;ellipse de la droite cherch\u00e9e. En utilisant la m\u00eame d\u00e9marche que pour la H-droite, soit la formule de Ptol\u00e9m\u00e9e sur la cocyclicit\u00e9 des points \\(M,F\\) et les intersections \\(Pph, Qph\\) de la droite avec l&rsquo;ellipse,<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"822\" height=\"459\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Illustr_parallele.jpg\" alt=\"\" class=\"wp-image-7189\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Illustr_parallele.jpg 822w, https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Illustr_parallele-300x168.jpg 300w, https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Illustr_parallele-768x429.jpg 768w\" sizes=\"(max-width: 822px) 100vw, 822px\" \/><\/figure>\n\n\n\n<p>Le calcul formel donne deux coefficients \\(b_1, b_2\\), mais seul premier convient, l&rsquo;autre correspond \u00e0 des intersections imaginaires avec l&rsquo;ellipse. Ce coefficient \\(b_1\\) s&rsquo;\u00e9crit alors :<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"557\" height=\"203\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Coef_b_Mathematica.jpg\" alt=\"\" class=\"wp-image-7190\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Coef_b_Mathematica.jpg 557w, https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Coef_b_Mathematica-300x109.jpg 300w\" sizes=\"(max-width: 557px) 100vw, 557px\" \/><\/figure><\/div>\n\n\n<p class=\"has-text-align-center has-small-font-size\"><em>Ici, le point \\(A(x_A, y_A)\\) est le point de la droite cherch\u00e9e, int\u00e9rieur \u00e0 <\/em>l&rsquo;ellipse<\/p>\n\n\n\n<p>La construction de la droite parall\u00e8le peut alors se r\u00e9sumer ainsi :<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"has-small-font-size\">La pente pAB de la droite initiale<\/p>\n\n\n\n<p class=\"has-small-font-size\">isNaN(Exh.getX())?(y(B)-y(A))\/(x(B)-x(A)):(y(Exb)-y(Exh))\/(x(Exb)-x(Exh))<\/p>\n\n\n\n<p class=\"has-small-font-size\">coef b si M (xM,yM) est int\u00e9rieur<\/p>\n\n\n\n<p class=\"has-small-font-size\">-(1\/(12<em>(pAB<\/em>(-3+2<em>xM)+2<\/em>yM)))<em>(-9-36<\/em>pAB^2+4<em>xM^2+16<\/em>pAB^2<em>xM^2+36<\/em>pAB<em>yM+4<\/em>yM^2+16<em>pAB^2<\/em>yM^2+sqrt((-9+4<em>xM^2+36<\/em>pAB<em>yM+4<\/em>yM^2+4<em>pAB^2<\/em>(-9+4 xM^2+4 yM^2))^2-24<em>(pAB<\/em>(-3+2<em>xM)+2<\/em>yM)<em>(5<\/em>yM+32<em>pAB^2<\/em>yM+pAB<em>(-6-5<\/em>xM+6<em>xM^2+6<\/em>yM^2)+pAB^3<em>(-6-32<\/em>xM+24<em>xM^2+24<\/em>yM^2))))<\/p>\n\n\n\n<p class=\"has-small-font-size\">On nomme Upii et Vpii les points de l&rsquo;ellipse si M est int\u00e9rieur<\/p>\n\n\n\n<p class=\"has-small-font-size\">On les nomme Upie Vpie si M est ext\u00e9rieur et que la droite parall\u00e8le coupe l&rsquo;ellipse. Pour cela il faut prendre la parall\u00e8le \u00e0 (AB) dans les deux cas o\u00f9 (AB) coupe l&rsquo;ellipse et le cas o\u00f9 elle ne coupe pas. D&rsquo;o\u00f9 la construction de ce point conditionnel (la droite parall\u00e8le passe alors par M et ce point)<\/p>\n\n\n\n<p class=\"has-small-font-size\">Mpar : (isNaN(Exh.getX()))M+B-A:M+Qb-Ph<\/p>\n\n\n\n<p class=\"has-small-font-size\">On prend ensuite les points Upg et Vpg qui sont soit l&rsquo;un de ces deux points &#8211; si ils existent &#8211; soit aucun si<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>\u2022 un couple n'existe pas\n\u2022 la parall\u00e8le ne coupe pas l'ellipse<\/code><\/pre>\n\n\n\n<p class=\"has-small-font-size\">Upg : (Mint==0)?Upie:Upii<\/p>\n\n\n\n<p class=\"has-small-font-size\">Vpg : (Mint==0)?Vpie:Vpii<\/p>\n\n\n\n<p class=\"has-small-font-size\">Et enfin on prend Pph et Qpb comme pour la droite<\/p>\n\n\n\n<p class=\"has-small-font-size\">Pph : (y(Upg)&gt;y(Vpg))?Upg:Vpg<\/p>\n\n\n\n<p class=\"has-small-font-size\">DtrPar.setHidden((ptMint==1)||(!isNaN(Pph.getX())));\u00a0\u00bbcacher la parallele\u00a0\u00bb<\/p>\n\n\n\n<p class=\"has-small-font-size\">La pente de la parall\u00e8le ainsi construite<\/p>\n\n\n\n<p class=\"has-small-font-size\">isNaN(Exph.getX())?(y(Mpar)-y(M))\/(x(Mpar)-x(M)):(y(Exph)-y(Expb))\/(x(Exph)-x(Expb))<\/p>\n<\/blockquote>\n\n\n\n<p><strong>Exemple de r\u00e9alisation (avec les macros suivantes de longueur et de milieu)<\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"898\" height=\"531\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Illustre_Parallelo.jpg\" alt=\"\" class=\"wp-image-7191\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Illustre_Parallelo.jpg 898w, https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Illustre_Parallelo-300x177.jpg 300w, https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Illustre_Parallelo-768x454.jpg 768w\" sizes=\"(max-width: 898px) 100vw, 898px\" \/><\/figure><\/div>\n\n\n<p>Ouvrir <a href=\"https:\/\/www.dgpad.net\/index.php?url=https:\/\/drive.google.com\/file\/d\/15xH4bifknZUYmiEoMT0W_EGJ_Wzp2GS_\/view?usp=drive_link\" data-type=\"URL\" data-id=\"https:\/\/www.dgpad.net\/index.php?url=http:\/\/curvica974.re\/FigSite\/NonArg\/HilbertAlgebrique\/Parallelogramme_Longueur_Milieux.dgp\" target=\"_blank\" rel=\"noreferrer noopener\">cette figure<\/a> dans un nouvel onglet<\/p>\n\n\n\n<p>Les milieux peuvent \u00eatre confondus sans que les c\u00f4t\u00e9s soient de m\u00eame longueur :<br>\u2022 comme ici, exactement<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"965\" height=\"566\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Parallelo_MilieuxConf1.jpg\" alt=\"\" class=\"wp-image-7196\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Parallelo_MilieuxConf1.jpg 965w, https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Parallelo_MilieuxConf1-300x176.jpg 300w, https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Parallelo_MilieuxConf1-768x450.jpg 768w\" sizes=\"(max-width: 965px) 100vw, 965px\" \/><\/figure><\/div>\n\n\n<p>\u2022 ou comme l\u00e0, approximativement (en attendant une construction)<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"986\" height=\"517\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Parallelo_MilieuxConf2.jpg\" alt=\"\" class=\"wp-image-7197\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Parallelo_MilieuxConf2.jpg 986w, https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Parallelo_MilieuxConf2-300x157.jpg 300w, https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Parallelo_MilieuxConf2-768x403.jpg 768w\" sizes=\"(max-width: 986px) 100vw, 986px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">Intersection de deux H-droites<\/h2>\n\n\n\n<p>Dans les deux figures pr\u00e9c\u00e9dentes, il a fallu construire l&rsquo;intersection de deux H-droites : ci-dessus pour le point \\(D\\) et dans la figure de Desargues, pour les points \\(M, N, P\\). D&rsquo;une mani\u00e8re g\u00e9n\u00e9rale l&rsquo;intersection de deux H-droites peut \u00eatre l&rsquo;intersection de :<br>\u2022 deux arcs de cercle si l&rsquo;intersection est \u00e0 l&rsquo;int\u00e9rieur de l&rsquo;ellipse, on la notera \\(M_i\\),<br>\u2022 des deux droites support des droites affines (de type \\((Ex_h Ex_b)\\), on la notera \\(Md_{ii}\\), cas qui contient lui-m\u00eame 4 intersections possibles de demi-droites, d&rsquo;o\u00f9 l&rsquo;int\u00e9r\u00eat de construire ces droites support.<br>\u2022 d&rsquo;une droite affine (quand cette droite ne coupe pas l&rsquo;ellipse) et d&rsquo;une droite support du type pr\u00e9c\u00e9dent. ll y a alors deux telles possibilit\u00e9s, que l&rsquo;on notera g\u00e9n\u00e9riquement \\(Mdd_{i}\\) et \\(Md_{i}d\\) (avec \\(d\\) pour la droite affine et \\(d_{i}\\) pour la droite support qui passe \u00e0 l&rsquo;int\u00e9rieur de l&rsquo;ellipse,<br>\u2022 enfin des deux droites affines quand ces deux droites ne coupent pas l&rsquo;ellipse.<\/p>\n\n\n\n<p>Comme, \u00e0 part le premier cas, les autres points peuvent exister simultan\u00e9ment, il faut prendre les intersections possibles dans un ordre bien \u00e9tabli. L&rsquo;intersection finale peut alors s&rsquo;\u00e9crire sous cette forme de 4 conditions imbriqu\u00e9es :<\/p>\n\n\n\n<p><em>isNaN(Mi.getX())?(isNaN(Mdii.getX()))?(isNaN(Mddi.getX()))?(isNaN(Mdid.getX()))?Mdd:Mdid:Mddi:Mdii:Mi<\/em><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">Longueur d&rsquo;un segment<\/h2>\n\n\n\n<p>La H-longueur entre deux points \\(A\\) et \\(B\\) est la longueur euclidienne d&rsquo;un ou deux segments avec \u00e9ventuellement l&rsquo;ajout d&rsquo;un arc de cercle. La macro doit traiter les diff\u00e9rents cas pr\u00e9sent\u00e9s ci-dessous.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"435\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/LesDiffCasLongueur-1024x435.jpg\" alt=\"\" class=\"wp-image-7178\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/LesDiffCasLongueur-1024x435.jpg 1024w, https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/LesDiffCasLongueur-300x128.jpg 300w, https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/LesDiffCasLongueur-768x326.jpg 768w, https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/LesDiffCasLongueur.jpg 1134w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>Dans cette macro, on a choisi d&rsquo;utiliser la pente de la droite quand elle coupe l&rsquo;ellipse, en particulier pour utiliser moins de points interm\u00e9diaires (que dans la macro Milieu ). C&rsquo;est efficace, on n&rsquo;utilise que des angles, mais on perd aussi une certaine \u00ab\u00a0commutativit\u00e9 des points\u00a0\u00bb. En effet pour les deux points de coupe, il faut, dans cette macro uniquement, montrer d&rsquo;abord le point pr\u00e9fix\u00e9 \\(P\\) (ou \\(p\\) selon les figures), celui d&rsquo;ordonn\u00e9e la plus grande entre \\(P\\) et \\(Q\\), avant de montrer le point \\(Q\\). C&rsquo;est pour rappeler cela que dans le nom de la macro les points \\(P\\) et \\(Q\\) sont s\u00e9par\u00e9s alors que \\(A\\) et \\(B\\) sont accol\u00e9s.<\/p>\n\n\n\n<p><strong>Le d\u00e9tail de la macro-construction Longueur<\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"937\" height=\"499\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Code_Macro_Longueur.jpg\" alt=\"\" class=\"wp-image-7179\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Code_Macro_Longueur.jpg 937w, https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Code_Macro_Longueur-300x160.jpg 300w, https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Code_Macro_Longueur-768x409.jpg 768w\" sizes=\"(max-width: 937px) 100vw, 937px\" \/><\/figure><\/div>\n\n\n<p>On voit que l&rsquo;on n&rsquo;utilise que des angles ou des expressions interm\u00e9diaires, mais aucun point. On notera, dans le cas o\u00f9 les deux points sont ext\u00e9rieurs \u00e0 l&rsquo;ellipse &#8211; les deux illustrations de gauche ci-dessus, l&rsquo;utilisation explicite de la subtilit\u00e9 des interpr\u00e9teurs contemporains avec la programmation paresseuse du OU logique en JavaScript dans l&rsquo;expression <\/p>\n\n\n<p>(isNaN(Ph.getX())|| (y(B)-y(Ph))*(y(A)-y(Ph))&gt;0)<\/p>\n\n\n\n<p>En effet la longueur est la distance euclidienne \\(d(A,B)\\) <br>\u2022 si la droite ne coupe pas l&rsquo;ellipse (<strong>isNaN<\/strong>) ou <br>\u2022 si elle coupe mais que les deux points sont du m\u00eame c\u00f4t\u00e9 de l&rsquo;ellipse (le produit des diff\u00e9rences des ordonn\u00e9es est positif),<br>ce second cas n&rsquo;\u00e9tant explor\u00e9 par JavaScript <em>que<\/em> si le premier est faux, donc que si la droite coupe, autrement dit que si le point \\(P_h\\) existe. S&rsquo;il n&rsquo;y avait pas de programmation paresseuse, il y aurait une erreur &#8230; mais on aurait fait autrement.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">Le milieu de deux points<\/h2>\n\n\n\n<p>Pour \u00e9viter de devoir montrer \\(P\\) avant \\(Q\\) comme dans la macro pr\u00e9c\u00e9dente, on utilise, cette fois plusieurs points interm\u00e9diaires. Pour construire le milieu de deux points \\(A\\) et \\(B\\), on choisit de r\u00e9aliser trois points de milieu : \\(M_{ii}, M_{ie}\\) et \\(M_{ee}\\) selon que les deux points \\(A\\) et \\(B\\) sont respectivement tous les deux int\u00e9rieurs, un int\u00e9rieur l&rsquo;autre ext\u00e9rieur, ou les deux ext\u00e9rieurs \u00e0 l&rsquo;ellipse. On rencontre, bien entendu, le m\u00eame probl\u00e8me que ci-dessus quand les deux sont ext\u00e9rieurs. On utilise la m\u00eame d\u00e9marche, ce qui se finalise par le code :<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"has-small-font-size\">EntreAetB = isNaN(Ph.getX()) || (y(B)-y(Ph))*(y(A)-y(Ph))&gt;0<\/p>\n\n\n\n<p class=\"has-small-font-size\">Alors le milieu final s&rsquo;\u00e9crit<\/p>\n\n\n\n<p class=\"has-small-font-size\">(AExt+BExt==0)?Mii:(AExt+BExt==1)?Mie:EntreAetB?(A+B)\/2:Mee<\/p>\n<\/blockquote>\n\n\n\n<p>Le point \\(M_{ii}\\) s&rsquo;\u00e9crit tout simplement, sans objet interm\u00e9diaire<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"has-small-font-size\">Mii = CtrArchb+((A+B)\/2-CtrArchb)*d(A,CtrArchb)\/d((A+B)\/2,CtrArchb)<\/p>\n<\/blockquote>\n\n\n\n<p>Pour le point \\(M_{ie}\\), on construit les points suivants<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"has-small-font-size\">BordAB est celui o\u00f9 un seul point est ext\u00e9rieur (AExt+BExt==1)<br><br>BordAB=Ph<em>(d(ABExt,Ph)(d(abext,ph)&gt;d(ABExt,Qb))<\/em><br><em><br>Si ABExt plus loin que la moiti\u00e9, la moiti\u00e9 est sur le segment [ABExt BordAB], soit<\/em><br><em><br>ABExt+(BordAB-ABExt)hLongAB\/(2d(ABExt,BordAB))<\/em><br><em><br>Quand il est sur l&rsquo;arc, on consid\u00e8re l&rsquo;angle suivant<\/em><br><em><br>angAB=180(hLongAB\/2-d(ABExt,BordAB))\/(d(CtrArchb, BordAB)\u03c0)<\/em><br><em><br>On construit les deux points milT1 et milT2 car le milieu est l&rsquo;un d&rsquo;eux selon les orientations de l&rsquo;arc, et c&rsquo;est bien entendu celui qui est dans l&rsquo;ellipse (test\u00e9 par le bool\u00e9en milT1int.<\/em><br><em><br>milT1= CtrArchb+(BordAB-CtrArchb)(cos(angAB)+isin(angAB))<br>milT2 = CtrArchb+(BordAB-CtrArchb)(cos(angAB)-isin(angAB))<\/em><br><em><br>Mie : (d(BordAB,ABExt)&gt;hLongAB\/2)?ABExt+(BordAB-ABExt)hLongAB\/(2d(ABExt,BordAB)):(milT1int==1)?milT1:milT2<\/em><\/p>\n<\/blockquote>\n\n\n\n<p>Enfin, pour le point \\(M_{ee}\\), on construit les points :<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"has-small-font-size\">BordA=Ph<em>(d(A,Ph)(d(a,ph)&gt;d(A,Qb))<br>BordB= Ph(d(B,Ph)(d(b,ph)&gt;d(B,Qb))<br>dBbord=d(B,BordB)<br>dAbord=d(A,BordA)<\/em><br><em><br>On construit NewEx (nouveau point ext\u00e9rieur), NewBord (nouveau bord), LeExBord (le point d&rsquo;en face) et longMil (nouvelle longueur)<\/em><br><em><br>NewEx = (dAbord&lt;dbbord)?b+(bordb-b)dabord dbbord:a+(borda-a)dbbord=\u00a0\u00bb\u00a0\u00bb dabord=\u00a0\u00bb\u00a0\u00bb Newbord=\u00a0\u00bb(dAbord&lt;dBbord)BordB+(dAbord\u00a0\u00bb&gt;dBbord)BordA<br>LeExBord = (dAbord&lt;dbbord)borda+(dabord&gt;dBbord)BordB<br>longMil = arcPQ+d(NewEx,NewBord)<\/em><br><em><br>Ensuite on termine par l&rsquo;angle dans le cas \u00ab\u00a02ex\u00a0\u00bb<br>angExAB =180(longMil)\/(d(CtrArchb,NewBord)2\u03c0) <\/em><\/p>\n\n\n\n<p class=\"has-small-font-size\"><em>et les deux points temporaires ( le point final est celui de suffice T1 ou T2) <\/em><br><em>mil2exT1= CtrArchb+(LeExBord-CtrArchb)(cos(angExAB)+isin(angExAB)) <\/em><br><em>mil2exT2= CtrArchb+(LeExBord-CtrArchb)(cos(angExAB)-i*sin(angExAB))<\/em><\/p>\n\n\n\n<p class=\"has-small-font-size\">Toujours avec le bool\u00e9en mil2exT1int qui dit si le point de suffixe T1 est int\u00e9rieur ou non \u00e0 l&rsquo;ellipse.<\/p>\n\n\n\n<p class=\"has-small-font-size\">(d(NewBord,NewEx)&gt;longMil)?NewEx+(NewBord-NewEx)*longMil\/(d(NewEx,NewBord)):(mil2exT1int ==1)? mil2exT1: mil2exT2<\/p>\n<\/blockquote>\n\n\n\n<p><strong>Exemple de r\u00e9alisation : les m\u00e9dianes d&rsquo;un triangle<\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"762\" height=\"713\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Medianes_CasInter1.jpg\" alt=\"\" class=\"wp-image-7193\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Medianes_CasInter1.jpg 762w, https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/Medianes_CasInter1-300x281.jpg 300w\" sizes=\"(max-width: 762px) 100vw, 762px\" \/><\/figure><\/div>\n\n\n<p class=\"has-text-align-center has-small-font-size\"><em>Les m\u00e9dianes ne sont g\u00e9n\u00e9ralement pas concourantes, <\/em><br><em>mais on peut rencontrer des situations o\u00f9 c&rsquo;est le cas.<\/em><\/p>\n\n\n\n<p><strong>Exemple o\u00f9 deux milieux sont les milieux affines alors que les droites coupent l&rsquo;ellipse<\/strong><br>(avec la gestion dite \u00ab\u00a0paresseuse\u00a0\u00bb du JS &#8230; mais en fait hyper pertinente)<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"662\" height=\"445\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/CasMedianes_Paresseuses.jpg\" alt=\"\" class=\"wp-image-7195\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/CasMedianes_Paresseuses.jpg 662w, https:\/\/curvica974.re\/wp-content\/uploads\/2024\/03\/CasMedianes_Paresseuses-300x202.jpg 300w\" sizes=\"(max-width: 662px) 100vw, 662px\" \/><\/figure><\/div>\n\n\n<p>Ouvrir <a href=\"https:\/\/www.dgpad.net\/index.php?url=https:\/\/drive.google.com\/file\/d\/1JG7VU1NOuUhVYEiflE-CTI4Tn-2K9NUf\/view?usp=drive_link\" data-type=\"URL\" data-id=\"https:\/\/www.dgpad.net\/index.php?url=http:\/\/curvica974.re\/FigSite\/NonArg\/HilbertAlgebrique\/Trois_H_Medianes.dgp\" target=\"_blank\" rel=\"noreferrer noopener\">cette figure<\/a> dans un nouvel onglet pour explorer de nombreuses possibilit\u00e9s<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Suite \u00e0 la construction alg\u00e9brique g\u00e9n\u00e9rale d&rsquo;une droite de Hilbert (H-droite), voici le d\u00e9tail de mise en \u0153uvre de quelques macros techniques. Cette page est surtout une page d&rsquo;archivage des m\u00e9thodes utilis\u00e9es, mais, pour quelques lecteurs, elle peut \u00eatre int\u00e9ressante \u00e0 consulter pour les techniques utilis\u00e9es. Nous aborderons ainsi :\u2022 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[21,20,25],"tags":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/curvica974.re\/index.php?rest_route=\/wp\/v2\/posts\/7171"}],"collection":[{"href":"https:\/\/curvica974.re\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/curvica974.re\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/curvica974.re\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/curvica974.re\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7171"}],"version-history":[{"count":17,"href":"https:\/\/curvica974.re\/index.php?rest_route=\/wp\/v2\/posts\/7171\/revisions"}],"predecessor-version":[{"id":8398,"href":"https:\/\/curvica974.re\/index.php?rest_route=\/wp\/v2\/posts\/7171\/revisions\/8398"}],"wp:attachment":[{"href":"https:\/\/curvica974.re\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/curvica974.re\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/curvica974.re\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}