{"id":7871,"date":"2025-01-19T11:23:43","date_gmt":"2025-01-19T07:23:43","guid":{"rendered":"http:\/\/curvica974.re\/?p=7871"},"modified":"2025-12-22T12:27:18","modified_gmt":"2025-12-22T08:27:18","slug":"mise-en-oeuvre-de-la-partie-1h1e-du-regionnement-du-plan-dans-lorthogonalite-de-la-geometrie-de-hilbert","status":"publish","type":"post","link":"https:\/\/curvica974.re\/?p=7871","title":{"rendered":"Mise en oeuvre de la partie 1H1E du r\u00e9gionnement du plan dans l&rsquo;orthogonalit\u00e9 de la g\u00e9om\u00e9trie de Hilbert"},"content":{"rendered":"\n<p>On a pr\u00e9sent\u00e9 les premiers r\u00e9gionnements du plan pour l&rsquo;orthogonalit\u00e9 de la g\u00e9om\u00e9trie non argu\u00e9sienne dans le mod\u00e8le de Hilbert dans ces pages du menu <strong>Non Arg<\/strong> :<br>\u2022 <a href=\"http:\/\/curvica974.re\/?page_id=7718\">Introduction et parties 2H et 2H1E<\/a> : deux perp. hilbertiennes (<strong>2H<\/strong>) et une euclidienne (<strong>2H1E<\/strong>)<br>\u2022 <a href=\"http:\/\/curvica974.re\/?page_id=7841\">La partie 1H1E<\/a> : une seule perpendiculaire hilbertienne et une euclidienne.<\/p>\n\n\n\n<p>Dans cet article on pr\u00e9sente l&rsquo;organisation de la mise en \u0153uvre de la partie <strong>1H1E<\/strong>, la partie jaune de la page ci-dessus. <\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">Notations et premi\u00e8res variables<\/h2>\n\n\n\n<p>La r\u00e9gion <strong>1H1E<\/strong> est g\u00e9n\u00e9ralement compos\u00e9es de 4 parties, deux issues des intersections de la droite \\((AB)\\) avec l&rsquo;ellipse, soit les points \\(Ph\\) et\\(Qb\\) et deux autres issues des points \\(QbPo, PhQo\\) ou \\(PhQb\\), ces parties pouvant parfois \u00eatre en dehors de l&rsquo;\u00e9cran, ou tout simplement ne pas exister.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"1353\" height=\"771\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/NomsPointsGrand.jpg\" alt=\"\" class=\"wp-image-7875\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/NomsPointsGrand.jpg 1353w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/NomsPointsGrand-300x171.jpg 300w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/NomsPointsGrand-1024x584.jpg 1024w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/NomsPointsGrand-768x438.jpg 768w\" sizes=\"(max-width: 1353px) 100vw, 1353px\" \/><\/figure><\/div>\n\n\n<p>Les limites \u00e0 l&rsquo;\u00e9cran des droites sont mat\u00e9rialis\u00e9es par les points \\(Ph2G, Ph2D\\), puis \\(PhoG, PhoD\\) pour les deux droites passant par \\(Ph\\), et \\(Qb2G, Qb2D, QboG, QboD\\) pour les deux droites passant par \\(Qb\\). Si, bien entendu les suffixes \\(G\\) et \\(D\\) indiquent la position relative gauche\/droite des points, ils ne renseignement pas sur la position haut\/bas. Il y aura donc syst\u00e9matiquement un traitement \u00e0 faire pour distinguer ces deux cas.<\/p>\n\n\n\n<p>Le point \\(PhQo\\) est l&rsquo;intersection des deux <em>droites<\/em> <em>affines<\/em> \\((Ph \\, Ph_2)\\) et \\((Qb \\, Qbo)\\), \\(QbPo\\), celle des <em>droites<\/em> <em>affines<\/em> \\((Qb \\, Qb_2)\\) et \\((Ph \\, Pho)\\). Enfin le point \\(PhQb\\), celle des <em>droites<\/em> <em>affines<\/em> \\((Ph \\, Ph_2)\\) et \\((Qb \\, Qb_2)\\). Les coins de l&rsquo;\u00e9cran sont nomm\u00e9s \\(HG, BG, HD, BD\\).<\/p>\n\n\n\n<p>Comme dans de nombreux autres articles de ce site, en particulier les remplissages de polygones hyperboliques, les diff\u00e9rentes parties sont construite par des listes de segments. On note <em>Prep1H1Ep1<\/em>, et <em>Prep1H1Ep2<\/em> les listes issues des points \\(Ph\\) et \\(Qb\\) respectivement, puis <em>Prep1H1Ep3<\/em> et <em>Prep1H1Ep4<\/em> les deux autres parties &#8211; ci-dessus issues de \\(QbPo\\) et \\(PhQo\\), mais qui peuvent \u00eatre issues aussi de \\(PhQb\\).<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">Les parties <em>Prep1H1Ep3<\/em> et <em>Prep1H1Ep4<\/em><\/h2>\n\n\n\n<p>Elles sont \u00e9l\u00e9mentaires \u00e0 construire. On teste d&rsquo;abord la pr\u00e9sence des points \\(PhQo, QbPo\\) et \\(PhQb\\) \u00e0 l&rsquo;\u00e9cran, \u00e0 partir de leurs coordonn\u00e9es et de celles de l&rsquo;\u00e9cran. On introduit ainsi trois bool\u00e9ens comme celui-ci :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-small-font-size\">PhQoEcran=((PhQo[0]&lt;xMax)&amp;&amp;(PhQo[0]&gt;xMin))&amp;&amp;((PhQo[1]&lt;yMax)&amp;&amp;(PhQo[1]&gt;yMin))<\/pre>\n\n\n\n<p><em>Prep1H1Ep3<\/em> sera toujours de sommet \\(QbPo\\), par contre <em>Prep1H1Ep<\/em>4 peut \u00eatre de sommet \\(PhQo\\) ou \\(PhQb\\).<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"898\" height=\"606\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/P3etP4Classiques.jpg\" alt=\"\" class=\"wp-image-7879\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/P3etP4Classiques.jpg 898w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/P3etP4Classiques-300x202.jpg 300w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/P3etP4Classiques-768x518.jpg 768w\" sizes=\"(max-width: 898px) 100vw, 898px\" \/><\/figure><\/div>\n\n\n<p class=\"has-text-align-center has-small-font-size\"><em>Ci-dessus une configuration assez g\u00e9n\u00e9rique, ci-dessous, une autre plus sp\u00e9cifique<\/em><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"822\" height=\"636\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/P3enPhQb.jpg\" alt=\"\" class=\"wp-image-7880\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/P3enPhQb.jpg 822w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/P3enPhQb-300x232.jpg 300w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/P3enPhQb-768x594.jpg 768w\" sizes=\"(max-width: 822px) 100vw, 822px\" \/><\/figure><\/div>\n\n\n<p><strong>Code utilis\u00e9<\/strong><\/p>\n\n\n\n<p>On rappelle que dans les expressions JavaScript de DGPad, il est pr\u00e9f\u00e9rable d&rsquo;utiliser la notation <em>M[0]<\/em> plut\u00f4t que <em>x(M)<\/em> pour l&rsquo;abscisse du point <em>M<\/em> ,et <em>M[1]<\/em> pour son ordonn\u00e9e..<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-small-font-size\">var tab=[];var Prep1H1Ep3=[];var Prep1H1Ep4=[];if ((PhQoEcran==1)&amp;&amp;(PhQo[0]&gt;PhQb[0])) {var Prep1H1Ep4=[PhQo,Ph2D,(QboD[1]&lt;0)?BD:HD,QboD,PhQo]};if ((QbPoEcran==1)&amp;&amp;(QbPo[0]&gt;PhQb[0])) {var Prep1H1Ep3=[QbPo,PhoD,(Qb2D[1]&lt;0)?BD:HD,Qb2D,QbPo]} else {if ((PhQbEcran==1)&amp;&amp;(PhQo[0]&lt;PhQb[0])){var Prep1H1Ep4=[PhQb,Ph2D,(abs(Ph2D[1]-yMin)&lt;0.001==1)?BD:HD,Qb2D,PhQb]}};var LGene=Prep1H1Ep3; var n=(LGene).length;if (n&gt;1) {for (var i=0;i&lt;n;i++){var k= LGene[i];tab.push(k)};tab.push(LGene[0]);tab.push([NaN,NaN]);};var LGene=Prep1H1Ep4; var n=(LGene).length;if (n&gt;1) {for (var i=0;i&lt;n;i++){var k= LGene[i];tab.push(k)};tab.push(LGene[0]);};tab<\/pre>\n\n\n\n<p>Le <em>(abs(Ph2D[1]-yMin)&lt;0.001==1)<\/em> conserv\u00e9 ici est probablement une pr\u00e9caution inutile, mise en place ici car JavaScript ne traite pas l&rsquo;\u00e9galit\u00e9 de r\u00e9els. La fin de l&rsquo;expression transforme les diff\u00e9rentes parties en une seule liste. Cette partie aura plus de sens quand on ajoutera les deux premi\u00e8res parties, structur\u00e9es autrement.<\/p>\n\n\n\n<p><strong>Manipulation de cette premi\u00e8re partie<\/strong><\/p>\n\n\n<p><center><iframe src=\"https:\/\/www.dgpad.net\/responsive.php?url=https:\/\/drive.google.com\/file\/d\/1d1QQQdG-nfDWKTTE3nB6u0l_PO4DFSIo\/view?usp=drive_link\" style=\"width:760px;height:500px;border-style:solid;border-width:1px;box-shadow: 6px 6px 3px #888888;\"><\/iframe><\/center><\/p>\n\n\n\n<p>Pr\u00e9f\u00e9rer <a href=\"https:\/\/www.dgpad.net\/index.php?url=https:\/\/drive.google.com\/file\/d\/1YulUFXVtw9EWJYMNlj3Xo5BZ5gHFPx-K\/view?usp=drive_link\" data-type=\"link\" data-id=\"https:\/\/www.dgpad.net\/index.php?url=http:\/\/curvica974.re\/FigSite\/NonArg\/HilbertAlgebrique\/Dyn_1H1E_K06d_TestP3P4.dgp\" target=\"_blank\" rel=\"noreferrer noopener\">ouvrir cette figure<\/a>, plus large, dans un nouvel onglet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">Les parties issues de Ph et Qb<\/h2>\n\n\n\n<p>Elles peuvent comporter un arc de cercle, ou deux &#8211; et m\u00eame parfois trois, et se terminent par un triangle ou un quadrilat\u00e8re selon la configuration \u00e0 l&rsquo;\u00e9cran. On construit donc en pr\u00e9alable les 4 listes que l&rsquo;on voit dans la premi\u00e8re illustration, arbitrairement compos\u00e9es de 20 segments (et donc 21 points) r\u00e9alis\u00e9es par une macro construction. Il faut donc :<br> \u2022 Tout d&rsquo;abord caract\u00e9riser quand la partie comprend un arc, deux, ou trois,<br> \u2022 Sinon c&rsquo;est un quadrilat\u00e8re (un triangle, parfois m\u00eame un pentagone) issu de \\(Ph\\) (<em>Prep1H1Ep1<\/em>) ou de \\(Qb\\) (<em>Prep1H1Ep2<\/em>). On rappelle que \\(Ph\\) est celui des deux points d&rsquo;intersection de \\((AB)\\) avec l&rsquo;ellipse qui a la plus grande ordonn\u00e9e. Il en r\u00e9sulte que le traitement du quadrilat\u00e8re sera diff\u00e9rent pour les deux parties. Ce sont les listes <em>LeQDPh<\/em> et <em>LeQDQb<\/em>.<br> \u2022 Dans le cas de la pr\u00e9sence d&rsquo;arcs, on construit, s\u00e9par\u00e9ment, la finalisation quadrilat\u00e8re-triangle dans des listes pr\u00e9sentes \u00e0 l&rsquo;\u00e9cran, que l&rsquo;on nomme, pour le point \\(Ph\\), respectivement <em>LeQD2Pho<\/em> qui convient pour finaliser les parties \u00e0 un ou deux arcs, et <em>FinPh3arcs<\/em> pour le cas des trois arcs comme ci-dessous.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"713\" height=\"571\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Illustre2arcsPh.jpg\" alt=\"\" class=\"wp-image-7882\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Illustre2arcsPh.jpg 713w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Illustre2arcsPh-300x240.jpg 300w\" sizes=\"(max-width: 713px) 100vw, 713px\" \/><\/figure><\/div>\n\n\n<p class=\"has-text-align-center has-small-font-size\">Exemple de la partie issue de \\(Ph\\), avec trois arcs de cercles et la liste <em>FinPh3arcs<\/em><\/p>\n\n\n\n<p>La caract\u00e9risation de la partie \u00e0 3 arcs est \u00e9l\u00e9mentaire, c&rsquo;est la pr\u00e9sence de \\(QbPo\\) \u00e0 l&rsquo;int\u00e9rieur de l&rsquo;ellipse. Quand on manipule la figure, c&rsquo;est une \u00e9vidence. La partie du code correspondante s&rsquo;\u00e9crit alors<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-small-font-size\">if (QbPoInHell==1) {var Prep1H1Ep1=[ListeQb2Inter,ListeInterPh,ListePhPh2,FinPh3arcs];}<\/pre>\n\n\n\n<p>On note que <em>Prep1H1Ep1<\/em>, mais aussi <em>Prep1H1Ep2<\/em> sont des listes de listes qu&rsquo;il faudra aplatir pour les tracer.<\/p>\n\n\n\n<p><strong>Le cas d&rsquo;un seul arc issu de \\(Ph\\)<\/strong><\/p>\n\n\n\n<p>C&rsquo;est n\u00e9cessairement l&rsquo;arc \\(Ph \\, Pho\\). La caract\u00e9risation semble \u00e0 priori \u00e9l\u00e9mentaire, il suffit que \\(Ph\\) soit entre \\(Pho\\) et \\(Ph2\\) comme ci-dessous :<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"952\" height=\"497\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/IntroChProPhNeg.jpg\" alt=\"\" class=\"wp-image-7886\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/IntroChProPhNeg.jpg 952w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/IntroChProPhNeg-300x157.jpg 300w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/IntroChProPhNeg-768x401.jpg 768w\" sizes=\"(max-width: 952px) 100vw, 952px\" \/><\/figure><\/div>\n\n\n<p class=\"has-text-align-center has-small-font-size\"><em>(Ph[0]-Pho[0])*(Ph[0]-Ph2[0])&lt;0 comme caract\u00e9risation des configurations ayant un seul arc de cercle ?<\/em><\/p>\n\n\n\n<p>Mais ce n&rsquo;est pas aussi simple : Dans l&rsquo;illustration suivante, si \u00e0 gauche, le produit propos\u00e9 en abscisse est positif, \u00e0 droite, il suffit de d\u00e9placer l\u00e9g\u00e8rement le point \\(B\\) pour que le signe de <em>Ph[0]-Ph2[0]<\/em> ou celui de <em>Ph[0]-Pho[0]<\/em> change, alors qu&rsquo;il n&rsquo;y aurait pas de probl\u00e8me si on prenait l&rsquo;expression en ordonn\u00e9e. Mais alors \u00e0 gauche, le signe de <em>Ph[1]-Ph2[1]<\/em> change d\u00e8s que l&rsquo;on d\u00e9place de quelques pixels le point \\(B\\).<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"693\" height=\"441\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Presente-ChPro-Petit.jpg\" alt=\"\" class=\"wp-image-7887\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Presente-ChPro-Petit.jpg 693w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Presente-ChPro-Petit-300x191.jpg 300w\" sizes=\"(max-width: 693px) 100vw, 693px\" \/><\/figure><\/div>\n\n\n<p>Apr\u00e8s diff\u00e9rents tests, le choix retenu est celui de prendre le plus grand, en valeur absolue, des deux produits, en abscisses et en ordonn\u00e9es, soit<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-small-font-size\">ChoixProdPh=(abs((Ph[1]-Pho[1])*(Ph[1]-Ph2[1]))&lt;abs((Ph[0]-Pho[0])*(Ph[0]-Ph2[0])))?((Ph[0]-Pho[0])*(Ph[0]-Ph2[0])):((Ph[1]-Pho[1])*(Ph[1]-Ph2[1]))<\/pre>\n\n\n\n<p>Et la partie <em>Prep1H1Ep1<\/em> ayant un seul arc de cercle est alors &#8211; tant un premier temps &#8211; tout simplement<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-small-font-size\">if (ChProdPh&lt;0) {var Prep1H1Ep1=[ListePhoPh,[Ph2G,(Ph2G[1]&lt;0)?BG:HG,PhoG,Pho]];} <\/pre>\n\n\n\n<p>C&rsquo;est une version interm\u00e9diaire, on utilisera dans la version finale, une expression utilisant le quadrilat\u00e8re ext\u00e9rieur <strong><em>LeQD2Pho<\/em><\/strong> qui sera pr\u00e9cis\u00e9 plus loin :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-small-font-size\">if (ChProdPh&lt;0) {var Prep1H1Ep1=[ListePhoPh,LeQD2Pho];} <\/pre>\n\n\n\n<p><strong>La liste FinPh3arcs<\/strong><\/p>\n\n\n\n<p>On l&rsquo;a d\u00e9j\u00e0 dit, le cas le plus \u00e9l\u00e9mentaire \u00e0 caract\u00e9riser est celui des trois arcs. Le code de la partie <em>Prep1H1Ep1<\/em> commence alors ainsi<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-small-font-size\">if (ChProdPh&lt;0) {var Prep1H1Ep1=[ListePhoPh,[Ph2G,(Ph2G[1]&lt;0)?BG:HG,PhoG,Pho]];} else {if (QbPoInHell==1) {var Prep1H1Ep1=[ListeQb2Inter,ListeInterPh,ListePhPh2,FinPh3arcs];} else {... \u00e0 compl\u00e9ter ...}}<\/pre>\n\n\n\n<p>C&rsquo;est dans la quatri\u00e8me expression que l&rsquo;on voit la diversit\u00e9 des situations &#8230; o\u00f9 l&rsquo;on utilise les tests conditionnels imbriqu\u00e9s dans l&rsquo;\u00e9criture compacte du JavaScript.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-small-font-size\">FinPh3arcs<br>var tab=[];if (((Ph[0]-Ph2[0])*(Ph[0]-PhQb[0])&gt;0)&amp;&amp;(PhQbEcran==1)) {var tab=[Ph2,PhQb,Qb2]} else {var Ph3aPt1=(Ph2[1]&gt;Ph[1])?(Ph2D[1]&gt;Ph2G[1])?Ph2D:Ph2G:(Ph2D[1]&gt;Ph2G[1])?Ph2G:Ph2D;var Ph3aPt3=(Qb2[1]&gt;Qb[1])?(Qb2D[1]&gt;Qb2G[1])?Qb2D:Qb2G:(Qb2D[1]&gt;Qb2G[1])?Qb2G:Qb2D;var Ph3aPt2=((Ph3aPt1[1]&lt;0)||(Ph3aPt3[1]&lt;0))?BG:HG;var tab=[Ph3aPt1,Ph3aPt2,Ph3aPt3,Qb2]};tab<\/pre>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"944\" height=\"504\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph3a_PhQb.jpg\" alt=\"\" class=\"wp-image-7888\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph3a_PhQb.jpg 944w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph3a_PhQb-300x160.jpg 300w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph3a_PhQb-768x410.jpg 768w\" sizes=\"(max-width: 944px) 100vw, 944px\" \/><\/figure><\/div>\n\n\n<p class=\"has-text-align-center has-small-font-size\"><em>Ci-dessus le cas o\u00f9 \\(PhQb\\) est \u00e0 l&rsquo;\u00e9cran, ci-dessous cas o\u00f9 il n&rsquo;y est plus<\/em><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"817\" height=\"581\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph3a_SansPhQb.jpg\" alt=\"\" class=\"wp-image-7889\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph3a_SansPhQb.jpg 817w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph3a_SansPhQb-300x213.jpg 300w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph3a_SansPhQb-768x546.jpg 768w\" sizes=\"(max-width: 817px) 100vw, 817px\" \/><\/figure><\/div>\n\n\n<p class=\"has-text-align-center has-small-font-size\"><em>Ici, la partie ext\u00e9rieure \u00e0 l&rsquo;ellipse est born\u00e9e car,hors \u00e9cran, \\(PhQb\\) est d&rsquo;ordonn\u00e9e positive.<\/em><\/p>\n\n\n\n<p>Pour le fun, dans le premier cas, il y a une petite bande verte autour de \\(PhQb\\). Si on place \\(I\\) dans cette partie, il y a bien deux perpendiculaires hilbertiennes, bleue et rose, diff\u00e9rentes de la pr\u00e9c\u00e9dente verte (car pas le m\u00eame type de construction).<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"440\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph3a_2H1E-1024x440.jpg\" alt=\"\" class=\"wp-image-7890\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph3a_2H1E-1024x440.jpg 1024w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph3a_2H1E-300x129.jpg 300w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph3a_2H1E-768x330.jpg 768w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph3a_2H1E-1536x660.jpg 1536w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph3a_2H1E.jpg 1712w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p><strong>Le cas d&rsquo;une partie avec les deux arcs issus de \\(Ph\\)<\/strong><\/p>\n\n\n\n<p>En manipulant la figure, il est clair que l&rsquo;on passe d&rsquo;une partie <em>Prep1H1Ep1<\/em> avec deux arcs de cercle \u00e0 une partie hors de l&rsquo;ellipse (triangle\/quadrilat\u00e8re\/pentagone) quand les points \\(Ph2\\) et \\(Pho\\) se croisent. On cherche donc une caract\u00e9risation. Apr\u00e8s avoir test\u00e9 en vain diff\u00e9rentes options avec seulement les coordonn\u00e9es, l&rsquo;id\u00e9e est de se ramener \u00e0 simplement un angle alg\u00e9brique. DGPad propose un angle sur 360\u00b0 ce qui revient au m\u00eame. Les choses deviennent alors tr\u00e8s claires. On note \\(aPoP2\\) l&rsquo;angle \\(\\angle{Pho \\, Ph \\, Ph2}\\).<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"853\" height=\"446\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph2arcs_PentePos_PhQb.jpg\" alt=\"\" class=\"wp-image-7894\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph2arcs_PentePos_PhQb.jpg 853w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph2arcs_PentePos_PhQb-300x157.jpg 300w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph2arcs_PentePos_PhQb-768x402.jpg 768w\" sizes=\"(max-width: 853px) 100vw, 853px\" \/><\/figure><\/div>\n\n\n<p class=\"has-text-align-center has-small-font-size\"><em>Ci-dessus, cas d&rsquo;une droite \u00e0 pente positive et d&rsquo;un angle inf\u00e9rieur \u00e0 180\u00b0, <\/em><br><em>ci-dessous le cas d&rsquo;une droite \u00e0 pente n\u00e9gative et un angle sup\u00e9rieur \u00e0 180\u00b0 (ou n\u00e9gatif).<\/em><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"708\" height=\"472\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph2arcs_PenteNeg.jpg\" alt=\"\" class=\"wp-image-7895\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph2arcs_PenteNeg.jpg 708w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph2arcs_PenteNeg-300x200.jpg 300w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph2arcs_PenteNeg-360x240.jpg 360w\" sizes=\"(max-width: 708px) 100vw, 708px\" \/><\/figure><\/div>\n\n\n<p><strong>Le code g\u00e9n\u00e9ral associ\u00e9<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-small-font-size\">Ci dessous la partie dans le <em>else {... \u00e0 compl\u00e9ter ...}<\/em> pr\u00e9c\u00e9dent<br><br>if (Ph[1]&gt;Pho[1]) {if (((aPoP2&lt;180)&amp;&amp;(penteAB&gt;0))||((aPoP2&gt;180)&amp;&amp;(penteAB&lt;0))) {var Prep1H1Ep1=[ListePhoPh,ListePhPh2,LeQD2Pho]} else {var Prep1H1Ep1=LeQDPh}} else {... \u00e0 completer ...}<\/pre>\n\n\n\n<p><strong>Le code de LeQD2Pho<\/strong><\/p>\n\n\n\n<p>On construit &#8211; directement dans la figure &#8211; plusieurs bool\u00e9ens. Tout d&rsquo;abord un premier, nomm\u00e9 \\(QbPoOnQDPhoPh2\\) qui teste si le point \\(QbPo\\) est dans la liste du quadrilat\u00e8re ou du pentagone ext\u00e9rieur \u00e0 l&rsquo;ellipse.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-small-font-size\">QbPoOnQDPhoPh2<br>var BorneYPh2Pho=(Pho[1]&gt;Ph[1])?yMax:yMin;(QbPoEcran==1)&amp;&amp;((((QbPo[1]&gt;Ph[1])&amp;&amp;(QbPo[1]&lt;BorneYPh2Pho))&amp;&amp;(Pho[1]&gt;Ph[1]))||(((QbPo[1]&lt;Ph[1])&amp;&amp;(QbPo[1]&gt;BorneYPh2Pho))&amp;&amp;(Pho[1]&lt;Ph[1]))==1)<\/pre>\n\n\n\n<p>Pour comparer les positions des points, on utilise la m\u00eame d\u00e9marche que pour <em>ChProdPh<\/em>. C&rsquo;est le nombre \\(ChPh\\) qui vaut donc 1 pour le choix en ordonn\u00e9e et 0 en abscisse. Cela se fait en deux temps, car <em>Ph[TestPhEnY]<\/em> ne fonctionne pas directement<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-small-font-size\">TestPhEnY = max(abs(Pho[1]-Ph[1]),abs(Ph2[1]-Ph[1]))&gt;max(abs(Pho[0]-Ph[0]),abs(Ph2[0]-Ph[0]))<br>ChPh = TestPhEnY ? 1:0<\/pre>\n\n\n\n<p>Ci dessus on a donn\u00e9 le code g\u00e9n\u00e9ral de <em>Prep1H1Ep1<\/em> que dans le premier cas o\u00f9 \\(Ph\\) est au dessus de \\(Pho\\) mais le code de la partie de <em>Prep1H1Ep1<\/em> hors de l&rsquo;ellipse doit \u00eatre r\u00e9ais\u00e9l pour tous les cas comme ci-dessous ( o\u00f9 <em>Ph[1]&lt;Pho[1]<\/em>, d\u00e9taill\u00e9 plus loin)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"734\" height=\"492\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph2arcs_PentePos_PasPhQb.jpg\" alt=\"\" class=\"wp-image-7896\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph2arcs_PentePos_PasPhQb.jpg 734w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph2arcs_PentePos_PasPhQb-300x201.jpg 300w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Ph2arcs_PentePos_PasPhQb-360x240.jpg 360w\" sizes=\"(max-width: 734px) 100vw, 734px\" \/><\/figure>\n\n\n\n<p class=\"has-text-align-center has-small-font-size\"><em>Ici, la partie ext\u00e9rieure \u00e0 l&rsquo;ellipse est non born\u00e9e car \\(PhQb\\), hors \u00e9cran, est d&rsquo;ordonn\u00e9e n\u00e9gative.<\/em><\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-small-font-size\">LeQD2Pho<br><br>var tab=[];if (((Ph[0]-Ph2[0])*(Ph[0]-PhQb[0])&gt;0)&amp;&amp;((QbPoOnQDPh2Pho==1)&amp;&amp;((Pho[0]-QbPo[0])*(Pho[0]-PhQb[0])&gt;0))) {var tab=[PhQb,QbPo,Pho]} else {var QD2PhoPt1=(Ph[ChPh]&gt;Pho[ChPh])?(Ph2G[ChPh]&lt;Ph2[ChPh])?Ph2G:Ph2D:(Ph2G[ChPh]&lt;Ph2D[ChPh])?Ph2D:Ph2G;var QD2PhoPt2=(QD2PhoPt1[1]&lt;0)?BG:HG;var QD2PhoPt2b=(QD2PhoPt1[1]&lt;0)?HG:BG;var QD2PhoPt3=(QbPoOnQDPh2Pho==1)?(Ph[ChPh]&gt;Pho[ChPh])?(Qb2G[ChPh]&lt;Qb2[ChPh])?Qb2G:Qb2D:(Qb2G[ChPh]&gt;Qb2[ChPh])?Qb2G:Qb2D:QD2PhoPt2b;var QD2PhoPt4=(QbPoOnQDPh2Pho==1)?QbPo:(Ph[ChPh]&gt;Pho[ChPh])?(PhoD[ChPh]&lt;Pho[ChPh])?PhoD:PhoG:(PhoG[ChPh]&lt;PhoD[ChPh])?PhoD:PhoG;var tab=[QD2PhoPt1,QD2PhoPt2,QD2PhoPt2b,QD2PhoPt3,QD2PhoPt4,Pho]};tabho];};tab<\/pre>\n\n\n\n<p>Le premier <strong>if<\/strong> correspond \u00e0 la premi\u00e8re illustration, mais ce n&rsquo;est pas le cas g\u00e9n\u00e9ral, loin de l\u00e0. On notera que le code du point \\(QD2PhoPt2\\), pour le choix du coin, est tr\u00e8s simple. Il sera plus fouill\u00e9 pour le cas de <em>LeQD2Qbo<\/em>.<\/p>\n\n\n\n<p><strong>Fin du code pour la partie <em>Prep1H1Ep1<\/em><\/strong><\/p>\n\n\n\n<p>En explorant en d\u00e9tail la figure, on arrive \u00e0 cette caract\u00e9risation, pour le \u00ab\u00a0<em>else {&#8230; \u00e0 completer &#8230;}<\/em>\u00a0\u00bb restant.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-small-font-size\">fin du code<br><br>if (((Ph[ChPh]&gt;Pho[ChPh])&amp;&amp;((((Pho[1-ChPh]&gt;Ph2[1-ChPh])||(aPoP2&gt;180))&amp;&amp;(penteAB&lt;0))||((Pho[ChPh]&lt;Ph2[ChPh])&amp;&amp;(penteAB&gt;0))))||((Ph[ChPh]&lt;Pho[ChPh])&amp;&amp;(Pho[ChPh]&gt;Ph2[ChPh])&amp;&amp;(penteAB&gt;0))) {var Prep1H1Ep1=[ListePhoPh,ListePhPh2,LeQD2Pho]} else {var Prep1H1Ep1= LeQDPh}<\/pre>\n\n\n\n<p><strong>Le code de la partie hors ellipse en \\(Ph\\)<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-small-font-size\">LeQDPh<br><br>var QDPhPt1=(QbPoOnQDPh==1)?QbPo:(Ph[ChPh]&lt;Pho[ChPh])?(PhoG[ChPh]&gt;0)?PhoD:PhoG:(PhoG[ChPh]&lt;PhoD[ChPh])?PhoD:PhoG;var QDPhPt2=(QbPoOnQDPh==0)?(QDPhPt1[1]&lt;0)?BG:HG:(Ph[ChPh]&lt;Pho[ChPh])?(Qb2G[ChPh]&gt;Qb2[ChPh])?Qb2D:Qb2G:(Qb2G[ChPh]&lt;Qb2D[ChPh])?Qb2D:Qb2G;var QDPhPt4=(Ph[ChPh]&lt;Ph2[ChPh])?(Ph2G[ChPh]&gt;Ph2[ChPh])?Ph2D:Ph2G:(Ph2G[ChPh]&lt;Ph2D[ChPh])?Ph2D:Ph2G;var QDPhPt3 =(QDPhPt4[1]&lt;0)?BG:HG;var QDPh=[Ph,QDPhPt1,QDPhPt2,QDPhPt3, QDPhPt4,Ph];QDPh<\/pre>\n\n\n\n<p><strong>Le code complet<\/strong> de <strong><em>Prep1H1E<\/em><\/strong><em><strong>p1<\/strong><\/em><\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-small-font-size\">if (ChProdPh&lt;0) {var Prep1H1Ep1=[ListePhoPh,LeQD2Pho];} else {if (QbPoInHell==1) {var Prep1H1Ep1=[ListeQb2Inter,ListeInterPh,ListePhPh2, FinPh3arcs];} else {if (Ph[1]&gt;Pho[1]) {if (((aPoP2&lt;180)&amp;&amp;(penteAB&gt;0))||((aPoP2&gt;180)&amp;&amp;(penteAB&lt;0))) {var Prep1H1Ep1=[ListePhoPh,ListePhPh2,LeQD2Pho]} else {var Prep1H1Ep1=LeQDPh}} else {if (((Ph[ChPh]&gt;Pho[ChPh])&amp;&amp;((((Pho[1-ChPh]&gt;Ph2[1-ChPh])||(aPoP2&gt;180))&amp;&amp;(penteAB&lt;0))||((Pho[ChPh]&lt;Ph2[ChPh])&amp;&amp;(penteAB&gt;0))))||((Ph[ChPh]&lt;Pho[ChPh])&amp;&amp;(Pho[ChPh]&gt;Ph2[ChPh])&amp;&amp;(penteAB&gt;0))) {var Prep1H1Ep1=[ListePhoPh,ListePhPh2,LeQD2Pho]} else {var Prep1H1Ep1= LeQDPh};};};}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">La partie <em>Prep1H1Ep<\/em>2<\/h2>\n\n\n\n<p>Nous irons plus rapidement, la d\u00e9marche est identique, parfois plus simple car il y a moins de cas \u00e0 traiter. Il y a bien entendu de petits ajustements que nous allons d\u00e9tailler.<\/p>\n\n\n\n<p><strong>Quelques illustrations<\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"922\" height=\"636\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Qb2arcs_PhQo_opp_PhQb.jpg\" alt=\"\" class=\"wp-image-7899\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Qb2arcs_PhQo_opp_PhQb.jpg 922w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Qb2arcs_PhQo_opp_PhQb-300x207.jpg 300w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Qb2arcs_PhQo_opp_PhQb-768x530.jpg 768w\" sizes=\"(max-width: 922px) 100vw, 922px\" \/><\/figure><\/div>\n\n\n<p class=\"has-text-align-center has-small-font-size\"><em>Cas de 2 arcs en \\(Qb\\) avec \\(PhQb\\) et \\(PhQo\\) de part et d&rsquo;autres de \\((AB)\\)<\/em><br><em>&#8230; pour une sp\u00e9cificit\u00e9 du code LaQDPh comme ici <\/em> <em>\\([PhQb, QbPo, Ph]\\) <\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"789\" height=\"458\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Qb3arcsA.jpg\" alt=\"\" class=\"wp-image-7900\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Qb3arcsA.jpg 789w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Qb3arcsA-300x174.jpg 300w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Qb3arcsA-768x446.jpg 768w\" sizes=\"(max-width: 789px) 100vw, 789px\" \/><\/figure>\n\n\n\n<p class=\"has-text-align-center has-small-font-size\"><em>Cas de 3 arcs en \\(Qb\\) avec avec la partie ext\u00e9rieure non born\u00e9e<\/em>, <em>dans deux illustrations<\/em><br><em>ci-dessus avec le triangle en<\/em> <em>\\(Ph\\), ci dessous avec les parties ext\u00e9rieures tr\u00e8s allong\u00e9es<\/em>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"765\" height=\"480\" src=\"http:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Qb3arcs_NonBorne.jpg\" alt=\"\" class=\"wp-image-7901\" srcset=\"https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Qb3arcs_NonBorne.jpg 765w, https:\/\/curvica974.re\/wp-content\/uploads\/2025\/01\/Qb3arcs_NonBorne-300x188.jpg 300w\" sizes=\"(max-width: 765px) 100vw, 765px\" \/><\/figure>\n\n\n\n<p class=\"has-text-align-center has-small-font-size\"><em>La partie en<\/em> <em>\\(Ph\\) est born\u00e9e, celle en<\/em> <em>\\(Qb\\) ne l&rsquo;est pas<\/em>.<\/p>\n\n\n\n<p><strong>Le code complet<\/strong> de <strong><em>Prep1H1Ep2<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-small-font-size\">if (ChProdQb&lt;0) {var Prep1H1Ep2=[ListeQbQbo,LeQD2Qbo];} else {if (PhQoInHell==1) {var Prep1H1Ep2=[ListeQb2Qb,ListeQbInter,ListeInterPh2,FinQb3arcs];} else {if (Qb[1]&gt;Qbo[1]) {if (((aQoQ2&gt;180)&amp;&amp;(penteAB&gt;0))||((aQoQ2&lt;180)&amp;&amp;(penteAB&lt;0))) {var Prep1H1Ep2=[ListeQb2Qb,ListeQbQbo,LeQD2Qbo]} else {var Prep1H1Ep2=LeQDQb}} else {if ((Qb[1]&lt;Qbo[1])&amp;&amp;(((aQoQ2&lt;180)&amp;&amp;(penteAB&gt;0))||((aQoQ2&gt;180)&amp;&amp;(penteAB&lt;0)))) {var Prep1H1Ep2=[ListeQb2Qb,ListeQbQbo,LeQD2Qbo]} else {var Prep1H1Ep2= LeQDQb};};};}<\/pre>\n\n\n\n<p><strong>Quelques sp\u00e9cificit\u00e9s pour <em><strong><em>Prep1H1Ep2<\/em><\/strong><\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-small-font-size\">TestQbEnY : on ajoute le OU pour \u00e9viter la verticalit\u00e9 de (Qb Qbo)<br><br>(max(abs(Qbo[1]-Qb[1]),abs(Qb2[1]-Qb[1]))&gt;max(abs(Qbo[0]-Qb[0]),abs(Qb2[0]-Qb[0])))||(abs(Qbo[0]-Qb[0])&lt;0.01)<\/pre>\n\n\n\n<p>Mais cet ajout apporte un probl\u00e8me &#8211; sur quelques pixels &#8211; quand \\(Qbo\\) traverse \\(Qb\\). On maintient n\u00e9anmoins cette modification, pour le cas g\u00e9n\u00e9ral.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-small-font-size\">FinQb3arcs<br><br>var tab=[]; if (((Ph[0]-Ph2[0])*(Ph[0]-PhQb[0])&gt;0)&amp;&amp;(PhQbEcran==1)) {var tab=[Ph2,PhQb,Qb2]} else {var QD3aPt1=(Ph2[1]&lt;Ph[1])?(Ph2D[1]&lt;Ph2G[1])?Ph2D:Ph2G:(Ph2D[1]&lt;Ph2G[1])?Ph2G:Ph2D;var QD3aPt2=(Qb2[1]&lt;Qb[1])?(Qb2D[1]&lt;Qb2G[1])?Qb2D:Qb2G:(Qb2D[1]&lt;Qb2G[1])?Qb2G:Qb2D;var tab=[QD3aPt1,QD3aPt2,Qb2];};tab<br><br>LeQDQb<br><br>var tab=[];if (((PhQoOnQDQb ==1)&amp;&amp;(PhQbEcran==1))&amp;&amp;((Qb[0]-Qb2[0])*(Qb[0]-PhQo[0])&lt;0)) {if ((Qb[0]-PhQb[0])*(Qb[0]-PhQo[0])&gt;0) {var tab=[Qb,PhQo,PhQb,Qb,Qb]} else {var tab=[Qb,PhQo,Ph2G,HG,Qb2G,Qb]}} else {var QDQbPt1=(PhQoOnQDQb ==1)?PhQo:(Qb[ChQb]&lt;Qbo[ChQb])?(QboG[ChQb]&gt;0)?QboD:QboG:(QboG[ChQb]&lt;QboD[ChQb])?QboD:QboG;var QDQbPt2=(PhQoOnQDQb ==0)?(QDQbPt1[1]&lt;0)?BG:HG:(Qb[ChQb]&lt;Qbo[ChQb])?(Ph2G[ChQb]&gt;Ph2[ChQb])?Ph2D:Ph2G:(Ph2G[ChQb]&lt;Ph2D[ChQb])?Ph2D:Ph2G;var QDQbPt4=(Qb[ChQb]&lt;Qbo[ChQb])?(Qb2G[ChQb]&gt;Qb2[ChQb])?Qb2D:Qb2G:(Qb2G[ChQb]&lt;Qb2D[ChQb])?Qb2D:Qb2G;var QDQbPt3 =(QDQbPt4[1]&lt;0)?BG:HG;var tab=[Qb,QDQbPt1,QDQbPt2,QDQbPt3, QDQbPt4,Qb];};tab<br><br>LeQD2Qbo<br><br>var tab=[];if (((Ph[0]-Ph2[0])*(Ph[0]-PhQb[0])&gt;0)&amp;&amp;((QbPoOnQDPh2Pho==1)&amp;&amp;((Pho[0]-QbPo[0])*(Pho[0]-PhQb[0])&gt;0))) {var tab=[PhQb,QbPo,Pho]} else {var QD2PhoPt1=(Ph[ChPh]&gt;Pho[ChPh])?(Ph2G[ChPh]&lt;Ph2[ChPh])?Ph2G:Ph2D:(Ph2G[ChPh]&lt;Ph2D[ChPh])?Ph2D:Ph2G;var QD2PhoPt2=(QD2PhoPt1[1]&lt;0)?BG:HG;var QD2PhoPt2b=(QD2PhoPt1[1]&lt;0)?HG:BG;var QD2PhoPt3=(QbPoOnQDPh2Pho==1)?(Ph[ChPh]&gt;Pho[ChPh])?(Qb2G[ChPh]&lt;Qb2[ChPh])?Qb2G:Qb2D:(Qb2G[ChPh]&gt;Qb2[ChPh])?Qb2G:Qb2D:QD2PhoPt2b;var QD2PhoPt4=(QbPoOnQDPh2Pho==1)?QbPo:(Ph[ChPh]&gt;Pho[ChPh])?(PhoD[ChPh]&lt;Pho[ChPh])?PhoD:PhoG:(PhoG[ChPh]&lt;PhoD[ChPh])?PhoD:PhoG;if (abs(QD2PhoPt1[1]-QD2PhoPt4[1])&lt;0.01) {var tab=[QD2PhoPt1,QD2PhoPt4,Pho]} else {var tab=[QD2PhoPt1,QD2PhoPt2,QD2PhoPt2b,QD2PhoPt3,QD2PhoPt4,Pho]}};tab<\/pre>\n\n\n\n<p>Le dernier point est param\u00e9tr\u00e9 pour que l&rsquo;expression serve pour un ou deux arcs.<br>On pourrait \u00eatre surpris de cette \u00e9criture <em>var tab=[Qb,PhQo,PhQb,Qb,Qb]<\/em> avec les deux \\(Qb\\). Cela r\u00e9sulte de l\u00a0\u00bbapplatissement des listes de <em>Prep1H1Ep1<\/em> et <em>Prep1H1Ep<\/em>2 qui sont des listes de listes. Avec les 3 arcs, elles sont compos\u00e9es de 4 listes. D&rsquo;o\u00f9 le choix de d\u00e9cider que si ces deux parties sont de longueur 5 ou plus, elles sont une simple liste. D&rsquo;o\u00f9 le double d&rsquo;un point ci-dessus pour avoir une longueur 5.<\/p>\n\n\n\n<p><strong>Code g\u00e9n\u00e9ral d&rsquo;applatissement<\/strong> <strong>qui relie les quatre parties en une seule liste<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-small-font-size\">var LGene=Prep1H1Ep1;var n=(LGene).length;if (n&lt;5) {for (var i=0;i&lt;n;i++){var ni=(LGene[i]).length;for (var ii=0;ii&lt;ni;ii++){var k= LGene[i][ii];tab.push(k)};};tab.push(LGene[0][0]);} else {for (var i=0;i&lt;n;i++){var k= LGene[i];tab.push(k)};tab.push(LGene[0]);};tab.push([NaN,NaN]);var LGene=Prep1H1Ep2;var n=(LGene).length;if (n&lt;5) {for (var i=0;i&lt;n;i++){var ni=(LGene[i]).length;for (var ii=0;ii&lt;ni;ii++){var k= LGene[i][ii];tab.push(k)};};tab.push(LGene[0][0]);} else {for (var i=0;i&lt;n;i++){var k= LGene[i];tab.push(k)};tab.push(LGene[0]);};tab.push([NaN,NaN]);var LGene=Prep1H1Ep3; var n=(LGene).length;if (n&gt;1) {for (var i=0;i&lt;n;i++){var k= LGene[i];tab.push(k)};tab.push(LGene[0]);tab.push([NaN,NaN]);};var LGene=Prep1H1Ep4; var n=(LGene).length;if (n&gt;1) {for (var i=0;i&lt;n;i++){var k= LGene[i];tab.push(k)};tab.push(LGene[0]);};tab<\/pre>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\">Le code final de l&rsquo;expression qui construit la partie 1H1E<\/h2>\n\n\n\n<p>Il est finalement assez compact car les vraies difficult\u00e9es\/subtilit\u00e9s sont report\u00e9es dans les listes de polygones en dehors de l&rsquo;ellipse, ou enventuellement es les bool\u00e9ens utilis\u00e9s comme <em>TestPhEnY<\/em> et <em>TestQbEnY<\/em>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-small-font-size\">exp1H1E<br><br>var tab=[];var Prep1H1Ep1=[]; Prep1H1Ep2=[];var Prep1H1Ep3=[];var Prep1H1Ep4=[];if ((PhQoEcran==1)&amp;&amp;(PhQo[0]&gt;PhQb[0])) {var Prep1H1Ep4=[PhQo,Ph2D,(QboD[1]&lt;0)?BD:HD,QboD,PhQo]};if ((QbPoEcran==1)&amp;&amp;(QbPo[0]&gt;PhQb[0])) {var Prep1H1Ep3=[QbPo,PhoD,((Qb2D[1]&lt;0)||(PhoD[1]&lt;0))?BD:HD,Qb2D,QbPo]} else {if ((PhQbEcran==1)&amp;&amp;(PhQo[0]&lt;PhQb[0])){var Prep1H1Ep4=[PhQb,Ph2D,(abs(Ph2D[1]-yMin)&lt;0.001==1)?BD:HD,Qb2D,PhQb]}};if (ChProdPh&lt;0) {var Prep1H1Ep1=[ListePhoPh,LeQD2Pho];} else {if (QbPoInHell==1) {var Prep1H1Ep1=[ListeQb2Inter,ListeInterPh,ListePhPh2, FinPh3arcs];} else {if (Ph[1]&gt;Pho[1]) {if (((aPoP2&lt;180)&amp;&amp;(penteAB&gt;0))||((aPoP2&gt;180)&amp;&amp;(penteAB&lt;0))) {var Prep1H1Ep1=[ListePhoPh,ListePhPh2,LeQD2Pho]} else {var Prep1H1Ep1=LeQDPh}} else {if (((Ph[ChPh]&gt;Pho[ChPh])&amp;&amp;((((Pho[1-ChPh]&gt;Ph2[1-ChPh])||(aPoP2&gt;180))&amp;&amp;(penteAB&lt;0))||((Pho[ChPh]&lt;Ph2[ChPh])&amp;&amp;(penteAB&gt;0))))||((Ph[ChPh]&lt;Pho[ChPh])&amp;&amp;(Pho[ChPh]&gt;Ph2[ChPh])&amp;&amp;(penteAB&gt;0))) {var Prep1H1Ep1=[ListePhoPh,ListePhPh2,LeQD2Pho]} else {var Prep1H1Ep1= LeQDPh};};};};if (ChProdQb&lt;0) {var Prep1H1Ep2=[ListeQbQbo,LeQD2Qbo];} else {if (PhQoInHell==1) {var Prep1H1Ep2=[ListeQb2Qb,ListeQbInter,ListeInterPh2,FinQb3arcs];} else {if (Qb[1]&gt;Qbo[1]) {if (((aQoQ2&gt;180)&amp;&amp;(penteAB&gt;0))||((aQoQ2&lt;180)&amp;&amp;(penteAB&lt;0))) {var Prep1H1Ep2=[ListeQb2Qb,ListeQbQbo,LeQD2Qbo]} else {var Prep1H1Ep2=LeQDQb}} else {if ((Qb[1]&lt;Qbo[1])&amp;&amp;(((aQoQ2&lt;180)&amp;&amp;(penteAB&gt;0))||((aQoQ2&gt;180)&amp;&amp;(penteAB&lt;0)))) {var Prep1H1Ep2=[ListeQb2Qb,ListeQbQbo,LeQD2Qbo]} else {var Prep1H1Ep2= LeQDQb};};};};var LGene=Prep1H1Ep1;var n=(LGene).length;if (n&lt;5) {for (var i=0;i&lt;n;i++){var ni=(LGene[i]).length;for (var ii=0;ii&lt;ni;ii++){var k= LGene[i][ii];tab.push(k)};};tab.push(LGene[0][0]);} else {for (var i=0;i&lt;n;i++){var k= LGene[i];tab.push(k)};tab.push(LGene[0]);};tab.push([NaN,NaN]);var LGene=Prep1H1Ep2;var n=(LGene).length;if (n&lt;5) {for (var i=0;i&lt;n;i++){var ni=(LGene[i]).length;for (var ii=0;ii&lt;ni;ii++){var k= LGene[i][ii];tab.push(k)};};tab.push(LGene[0][0]);} else {for (var i=0;i&lt;n;i++){var k= LGene[i];tab.push(k)};tab.push(LGene[0]);};tab.push([NaN,NaN]);var LGene=Prep1H1Ep3; var n=(LGene).length;if (n&gt;1) {for (var i=0;i&lt;n;i++){var k= LGene[i];tab.push(k)};tab.push(LGene[0]);tab.push([NaN,NaN]);};var LGene=Prep1H1Ep4; var n=(LGene).length;if (n&gt;1) {for (var i=0;i&lt;n;i++){var k= LGene[i];tab.push(k)};tab.push(LGene[0]);};tab<\/pre>\n\n\n\n<p><strong>La figure finale \u00e0 manipuler<\/strong><\/p>\n\n\n\n<p>Dans cette figure, d\u00e9placer les points \\(A, B\\) et \\(I\\).<\/p>\n\n\n<p><center><iframe src=\"https:\/\/www.dgpad.net\/responsive.php?url=https:\/\/drive.google.com\/file\/d\/1kiqbgE00yj_XsilbCyCypdKTQvVGipDo\/view?usp=drive_link\" style=\"width:800px;height:500px;border-style:solid;border-width:1px;box-shadow: 6px 6px 3px #888888;\"><\/iframe><\/center><\/p>\n\n\n\n<p>Pr\u00e9f\u00e9rer utiliser <a href=\"https:\/\/www.dgpad.net\/index.php?url=https:\/\/drive.google.com\/file\/d\/1w7yt8DxhVCOGOOtu68kqYJn7Z87O17Bi\/view?usp=drive_link\" data-type=\"link\" data-id=\"https:\/\/www.dgpad.net\/index.php?url=http:\/\/curvica974.re\/FigSite\/NonArg\/HilbertAlgebrique\/Reg_Dyn_Hilbert_1H1E.dgp\" target=\"_blank\" rel=\"noreferrer noopener\">cette figure<\/a> plus grande dans un nouvel onglet.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>On a pr\u00e9sent\u00e9 les premiers r\u00e9gionnements du plan pour l&rsquo;orthogonalit\u00e9 de la g\u00e9om\u00e9trie non argu\u00e9sienne dans le mod\u00e8le de Hilbert dans ces pages du menu Non Arg :\u2022 Introduction et parties 2H et 2H1E : deux perp. hilbertiennes (2H) et une euclidienne (2H1E)\u2022 La partie 1H1E : une seule perpendiculaire [&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],"tags":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/curvica974.re\/index.php?rest_route=\/wp\/v2\/posts\/7871"}],"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=7871"}],"version-history":[{"count":26,"href":"https:\/\/curvica974.re\/index.php?rest_route=\/wp\/v2\/posts\/7871\/revisions"}],"predecessor-version":[{"id":8388,"href":"https:\/\/curvica974.re\/index.php?rest_route=\/wp\/v2\/posts\/7871\/revisions\/8388"}],"wp:attachment":[{"href":"https:\/\/curvica974.re\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7871"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/curvica974.re\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7871"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/curvica974.re\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7871"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}