{"id":5,"date":"2018-03-22T18:53:37","date_gmt":"2018-03-22T17:53:37","guid":{"rendered":"http:\/\/192.168.1.166\/wordpress\/?p=5"},"modified":"2021-03-30T18:11:49","modified_gmt":"2021-03-30T16:11:49","slug":"matrice-quaternion-et-graphe-de-scene","status":"publish","type":"post","link":"http:\/\/mouca.fr\/wordpress\/2018\/03\/22\/matrice-quaternion-et-graphe-de-scene\/","title":{"rendered":"Matrice, Quaternion et graphe de sc\u00e8ne &#8211; Partie 1"},"content":{"rendered":"\n<p>Bonjour \u00e0 tous, aujourd&#8217;hui\u00a0on va parler math\u00e9matiques appliqu\u00e9s si possible de mani\u00e8re simple car on va parler de matrice &amp; quaternion.<\/p>\n<p>Le but de ces articles est de correctement les utiliser dans un graphe de sc\u00e8ne et notamment pour le calcul de la &#8220;modelview-projection&#8221;.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h1 class=\"wp-block-heading\">Avant de commencer<\/h1>\n\n\n\n<p>Je vais avoir une approche beaucoup plus ludique que math\u00e9matiques. Les informations expos\u00e9es ne sont malheureusement pas toutes tir\u00e9es de sources fiables certaines viennent de mon exp\u00e9rience propre :<br>N&#8217;h\u00e9sitez pas \u00e0 m&#8217;apporter d&#8217;autres sources dans les commentaires.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Code source<\/h2>\n\n\n\n<p>J&#8217;utiliserai la biblioth\u00e8que glm pour manipuler les matrices et quaternions. C&#8217;est gratuit, c&#8217;est que des .h (pas .lib ni .dll), c&#8217;est cross-platform.<\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/glm.g-truc.net\" target=\"_blank\" rel=\"noreferrer noopener\">T\u00e9l\u00e9charger glm<\/a><\/p>\n\n\n\n<p>Pour finir avec le code, j&#8217;utilise les macros EXPECT_EQ et autres de <a href=\"https:\/\/github.com\/google\/googletest\">Google Test<\/a>.<\/p>\n\n\n\n<p>Tous les exemples sont sur mon GitHub <a href=\"https:\/\/github.com\/Rominitch\/myBlogSource\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/Rominitch\/myBlogSource\/<\/a> dans Matrix_Quaternion.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Notation<\/h2>\n\n\n\n<p>Dans les exemples, on va utiliser la convention d&#8217;\u00e9criture suivante:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Multiplication de droite \u00e0 gauche<\/li><li>Matrice en ligne (ou row-major en anglais)<\/li><\/ul>\n\n\n\n<div class=\"wp-block-columns has-ccp-light-gray-background-color has-background is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:24%\">\n<h3 class=\"has-text-align-center wp-block-heading\">Notation simple<\/h3>\n\n\n\n<center><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-ebdb6d1b123151ff52ff7075b1b72686_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#114;&#125;&#32;&#61;&#32;&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#109;&#125;&#32;&#92;&#116;&#105;&#109;&#101;&#115;&#32;&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#71;&#125;&#118;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"9\" width=\"78\" style=\"vertical-align: 0px;\"\/><\/center>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:45%\">\n<h3 class=\"has-text-align-center wp-block-heading\">Notation \u00e9tendue<\/h3>\n\n\n\n<center><p class=\"ql-center-displayed-equation\" style=\"line-height: 116px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-a8c9165bc15fab1c2fe6e24298897ece_l3.png\" height=\"116\" width=\"316\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\" &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#97;&#108;&#105;&#103;&#110;&#42;&#125; &#38;&#32;&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#109;&#95;&#123;&#48;&#125;&#32;&#38;&#32;&#109;&#95;&#123;&#49;&#125;&#32;&#38;&#32;&#109;&#95;&#123;&#50;&#125;&#32;&#38;&#32;&#109;&#95;&#123;&#51;&#125;&#32;&#92;&#92; &#109;&#95;&#123;&#52;&#125;&#32;&#38;&#32;&#109;&#95;&#123;&#53;&#125;&#32;&#38;&#32;&#109;&#95;&#123;&#54;&#125;&#32;&#38;&#32;&#109;&#95;&#123;&#55;&#125;&#32;&#92;&#92; &#109;&#95;&#123;&#56;&#125;&#32;&#38;&#32;&#109;&#95;&#123;&#57;&#125;&#32;&#38;&#32;&#109;&#95;&#123;&#49;&#48;&#125;&#32;&#38;&#32;&#109;&#95;&#123;&#49;&#49;&#125;&#32;&#92;&#92; &#109;&#95;&#123;&#49;&#50;&#125;&#32;&#38;&#32;&#109;&#95;&#123;&#49;&#51;&#125;&#32;&#38;&#32;&#109;&#95;&#123;&#49;&#52;&#125;&#32;&#38;&#32;&#109;&#95;&#123;&#49;&#53;&#125; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125; &#92;&#92; &#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#71;&#125; &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#118;&#95;&#123;&#48;&#125;&#32;&#38;&#32;&#118;&#95;&#123;&#49;&#125;&#32;&#38;&#32;&#118;&#95;&#123;&#50;&#125;&#32;&#38;&#32;&#118;&#95;&#123;&#51;&#125; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125; &#38;&#32;&#92;&#109;&#115;&#112;&#97;&#99;&#101;&#123;&#53;&#109;&#117;&#125; &#92;&#98;&#105;&#103;&#108;&#91;&#32;&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#92;&#109;&#97;&#107;&#101;&#98;&#111;&#120;&#91;&#92;&#119;&#105;&#100;&#116;&#104;&#111;&#102;&#123;&#36;&#109;&#95;&#123;&#49;&#50;&#125;&#36;&#125;&#93;&#123;&#36;&#114;&#95;&#123;&#48;&#125;&#36;&#125;&#32;&#38; &#92;&#109;&#97;&#107;&#101;&#98;&#111;&#120;&#91;&#92;&#119;&#105;&#100;&#116;&#104;&#111;&#102;&#123;&#36;&#109;&#95;&#123;&#49;&#51;&#125;&#36;&#125;&#93;&#123;&#36;&#114;&#95;&#123;&#49;&#125;&#36;&#125;&#32;&#38; &#92;&#109;&#97;&#107;&#101;&#98;&#111;&#120;&#91;&#92;&#119;&#105;&#100;&#116;&#104;&#111;&#102;&#123;&#36;&#109;&#95;&#123;&#49;&#52;&#125;&#36;&#125;&#93;&#123;&#36;&#114;&#95;&#123;&#50;&#125;&#36;&#125;&#32;&#38; &#92;&#109;&#97;&#107;&#101;&#98;&#111;&#120;&#91;&#92;&#119;&#105;&#100;&#116;&#104;&#111;&#102;&#123;&#36;&#109;&#95;&#123;&#49;&#53;&#125;&#36;&#125;&#93;&#123;&#36;&#114;&#95;&#123;&#51;&#125;&#36;&#125; &#92;&#101;&#110;&#100;&#123;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125; &#92;&#109;&#115;&#112;&#97;&#99;&#101;&#123;&#53;&#109;&#117;&#125; &#92;&#98;&#105;&#103;&#114;&#93; &#92;&#101;&#110;&#100;&#123;&#97;&#108;&#105;&#103;&#110;&#42;&#125; \" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/center>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:48.6%\">\n<h3 class=\"has-text-align-center wp-block-heading\">Code source \u00e9quivalent<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\nglm::mat4 matrix(0.0f, 1.0f, 0.0f, 0.0f,\n                 1.0f, 0.0f, 0.0f, 0.0f,\n                 0.0f, 0.0f, 1.0f, 0.0f,\n                 0.0f, 0.0f, 0.0f, 1.0f);\nglm::vec4 vector(2.0f, 3.0f, 4.0f, 1.0f);\nglm::vec4 result = matrix * vector;\n<\/pre><\/div><\/div>\n<\/div>\n\n\n\n<p class=\"has-text-align-left has-text-color has-background has-small-font-size\" style=\"background-color:#d9edf7;color:#144977\">Les indices 0,1,2,3, \u2026 d\u00e9signent aussi l&#8217;adresse m\u00e9moire de chaque case.<\/p>\n\n\n\n<p>Et donc on va s&#8217;autoriser \u00e0 \u00e9crire: <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-6ed561f7dfca4198486993859de11525_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#109;&#118;&#112;&#125;&#32;&#61;&#32;&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#112;&#125;&#32;&#92;&#116;&#105;&#109;&#101;&#115;&#32;&#40;&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#71;&#125;&#118;&#125;&#32;&#92;&#116;&#105;&#109;&#101;&#115;&#32;&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#89;&#125;&#109;&#125;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"147\" style=\"vertical-align: -4px;\"\/><\/p>\n\n\n\n<div class=\"wp-block-columns has-ccp-light-gray-background-color has-background is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<center><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-c50c6f87a955dfbfd8eb927d84d96ab2_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\" &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#97;&#114;&#114;&#97;&#121;&#125;&#123;&#99;&#99;&#99;&#125; &#126;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#71;&#125;&#123;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#118;&#32;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#123;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#112;&#32;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#125;&#32;&#92;&#92; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#89;&#125;&#123;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#109;&#32;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#67;&#125;&#123;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#109;&#118;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#123;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#109;&#118;&#112;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#125; &#92;&#101;&#110;&#100;&#123;&#97;&#114;&#114;&#97;&#121;&#125; \" title=\"Rendered by QuickLaTeX.com\" height=\"44\" width=\"144\" style=\"vertical-align: -18px;\"\/><\/center>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\nglm::mat4 m(0.5f, 0.0f, 0.0f, 0.0f, \n            0.0f, 0.5f, 0.0f, 0.0f,\n            0.0f, 0.0f, 0.5f, 0.0f, \n            0.0f, 0.0f, 0.0f, 1.0f);\nglm::mat4 v(0.0f, 1.0f, 0.0f, 0.0f,\n            1.0f, 0.0f, 0.0f, 0.0f, \n            0.0f, 0.0f, 1.0f, 0.0f, \n            0.0f, 0.0f, 0.0f, 1.0f);\nglm::mat4 p(1.0f, 0.0f, 0.0f, 0.0f,\n            0.0f, 1.0f, 0.0f, 0.0f,\n            0.0f, 0.0f, 1.0f, 0.0f,\n            1.0f, 2.0f, 3.0f, 1.0f);\nglm::mat4 result = p * (v * m);\nglm::mat4 mvp(0.0f, 0.5f, 0.0f, 0.0f, \n              0.5f, 0.0f, 0.0f, 0.0f, \n              0.0f, 0.0f, 0.5f, 0.0f,\n              1.0f, 2.0f, 3.0f, 1.0f);\nEXPECT_EQ(mvp, result);\nEXPECT_NE(mvp, m * v * p);\n<\/pre><\/div>\n\n<\/div>\n<\/div>\n\n\n\n<p>Je ne sais pas si c&#8217;est une &#8220;vraie&#8221; convention d&#8217;\u00e9criture mais en tout cas elle est tr\u00e8s proche du code.<\/p>\n\n\n\n<p>Pour des raisons de simplification et avoir des sch\u00e9mas faciles \u00e0 lire, on va travailler dans le plan Z=0.<br>On reste bien en 3D dans notre logique et nos formules.<\/p>\n\n\n\n<p>J&#8217;ai mon rep\u00e8re orthonorm\u00e9 O avec son axe X et son axe&nbsp;Y, Z \u00e9tant vers nous.<br>Les unit\u00e9s d\u00e9pendent des longueurs des vecteurs x et y.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"290\" height=\"216\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/classic_repere-290x216.png\" alt=\"\" class=\"wp-image-149\"\/><\/figure><\/div>\n\n\n\n<p>Bref c&#8217;est du classique.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Les Matrices<\/h1>\n\n\n\n<p>Les matrices de transformation homog\u00e8nes (que l&#8217;on nommera matrice par la suite) nous&nbsp;permet d&#8217;appliquer une transformation g\u00e9om\u00e9trique (plus ou moins complexe) \u00e0 un vecteur ou point.<\/p>\n\n\n\n<p>Je vais partir du principe que vous savez les manipuler (en gros faire l&#8217; addition\/multiplication\/transpos\u00e9\/inversion) ou que votre programme\/biblioth\u00e8que sait tr\u00e8s bien le faire pour vous !<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Rappel: les principales formes<\/h2>\n\n\n\n<p>Voici les principales formes de matrice de transformation qu&#8217;on utilise.<\/p>\n\n\n\n<div class=\"wp-block-columns has-ccp-light-gray-background-color has-background is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h4 class=\"has-text-align-center wp-block-heading\">La translation T<\/h4>\n<\/div><\/div>\n\n\n\n<center><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-e4ef98458b31c38fb97046be15df5600_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\" &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#116;&#95;&#123;&#48;&#125;&#32;&#38;&#32;&#116;&#95;&#123;&#49;&#125;&#32;&#38;&#32;&#116;&#95;&#123;&#50;&#125;&#32;&#38;&#32;&#49; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; \" title=\"Rendered by QuickLaTeX.com\" height=\"86\" width=\"114\" style=\"vertical-align: -39px;\"\/><\/center>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h4 class=\"has-text-align-center wp-block-heading\">La rotation R<\/h4>\n<\/div><\/div>\n\n\n\n<center><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-592e69d50608a0c0fc67bc8790172ea6_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\" &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#114;&#95;&#123;&#48;&#125;&#32;&#38;&#32;&#114;&#95;&#123;&#49;&#125;&#32;&#38;&#32;&#114;&#95;&#123;&#50;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#114;&#95;&#123;&#52;&#125;&#32;&#38;&#32;&#114;&#95;&#123;&#53;&#125;&#32;&#38;&#32;&#114;&#95;&#123;&#54;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#114;&#95;&#123;&#56;&#125;&#32;&#38;&#32;&#114;&#95;&#123;&#57;&#125;&#32;&#38;&#32;&#114;&#95;&#123;&#49;&#48;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; \" title=\"Rendered by QuickLaTeX.com\" height=\"86\" width=\"125\" style=\"vertical-align: -39px;\"\/><\/center>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h4 class=\"has-text-align-center wp-block-heading\">L\u2019homoth\u00e9tie S<\/h4>\n<\/div><\/div>\n\n\n\n<center><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-007cf9abd0b5f5bd5a3da74b3ddd98c4_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\" &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#115;&#95;&#123;&#48;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#115;&#95;&#123;&#49;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#115;&#95;&#123;&#50;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; \" title=\"Rendered by QuickLaTeX.com\" height=\"86\" width=\"119\" style=\"vertical-align: -39px;\"\/><\/center>\n\n\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Probl\u00e8me 1: Qu&#8217;est-ce qu&#8217;une matrice de transformation ? et comment les forme-t-on ?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Translation et repr\u00e9sentation de ce qu&#8217;est une matrice<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"228\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/translation-1-300x228.png\" alt=\"\" class=\"wp-image-92\" srcset=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/translation-1-300x228.png 300w, http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/translation-1.png 340w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/figure><\/div>\n\n\n\n<p>On va prendre une approche na\u00efve du probl\u00e8me. Pour commencer, on va utiliser les matrices pour translater notre point.<br>J&#8217;ai le sch\u00e9ma suivant: je veux d\u00e9placer mon point A vers le point B.<\/p>\n\n\n\n<p>On lit facilement <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-3bdc660f383432c74d2321422ddf7cc0_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#65;&#40;&#49;&#44;&#32;&#49;&#44;&#32;&#48;&#41;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"69\" style=\"vertical-align: -4px;\"\/> et <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-40460bb976a15091ee90b612c868baed_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#79;&#125;&#66;&#40;&#51;&#44;&#32;&#50;&#44;&#32;&#48;&#41;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"70\" style=\"vertical-align: -4px;\"\/> donc le vecteur de translation est <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-548587ebbc13ec40e3161ed60dc5d60c_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#92;&#118;&#101;&#99;&#123;&#65;&#66;&#125;&#40;&#50;&#44;&#32;&#49;&#44;&#32;&#48;&#41;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"21\" width=\"83\" style=\"vertical-align: -4px;\"\/>.<br>On va substituer les valeurs &#8220;t&#8221; de notre matrice par ce vecteur et calcul la multiplication avec A.<\/p>\n\n\n\n<div class=\"wp-block-columns has-ccp-light-gray-background-color has-background is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<center><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-0a8f12d6c20272d1451031b454ebb866_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#97;&#114;&#114;&#97;&#121;&#125;&#123;&#99;&#32;&#99;&#125; &#126;&#32;&#38;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#123;&#50;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#123;&#49;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#123;&#48;&#125;&#32;&#38;&#32;&#49; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#32;&#92;&#92; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#123;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#49;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#79;&#125;&#123;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#51;&#32;&#38;&#32;&#50;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49;&#32;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125; &#92;&#101;&#110;&#100;&#123;&#97;&#114;&#114;&#97;&#121;&#125; \" title=\"Rendered by QuickLaTeX.com\" height=\"109\" width=\"214\" style=\"vertical-align: -51px;\"\/><\/center>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:65%\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\nglm::vec4 b( 3.0f, 2.0f, 0.0f, 1.0f);\nglm::vec4 a( 1.0f, 1.0f, 0.0f, 1.0f);\nglm::mat4 t( 1.0f, 0.0f, 0.0f, 0.0f,\n             0.0f, 1.0f, 0.0f, 0.0f,\n             0.0f, 0.0f, 1.0f, 0.0f, \n             2.0f, 1.0f, 0.0f, 1.0f ); \nEXPECT_EQ( b, t * a ); \nglm::mat4 t2( 1.0f ); \/\/ Identity\nt2 = glm::translate( t2, glm::vec3( 2.0f, 1.0f, 0.0f ) );\nEXPECT_EQ( b, t2 * a );\n<\/pre><\/div><\/div>\n<\/div>\n\n\n\n<p>Donc on retrouve bien notre point B.<\/p>\n<ul>\n<li>\u00c7a marche mais bon qu&#8217;est-ce qui s&#8217;est vraiment pass\u00e9 ?<\/li>\n<li>C&#8217;est vachement plus compliqu\u00e9 que d&#8217;appliquer un vecteur de translation ?<\/li>\n<li>A quoi ont servi les autres parties de la matrice ?<\/li>\n<\/ul>\n<p>Alors c&#8217;est l\u00e0 que les choses se compliquent car en fait on a pas vraiment appliquer un vecteur de translation. Il faut voir cette op\u00e9ration comme un changement de point de vue. Notre objet n&#8217;a pas \u00e9t\u00e9 chang\u00e9 mais c&#8217;est plut\u00f4t l\u00e0 o\u00f9 on le regarde.<br>Math\u00e9matiquement, les matrices nous permettent de faire un changement de rep\u00e8re (base).<\/p>\n<p>Leur forme est la suivante:<\/p>\n\n\n\n<div class=\"wp-block-columns has-ccp-light-gray-background-color has-background is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<center><p class=\"ql-center-displayed-equation\" style=\"line-height: 87px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-d4fdc2fa4356aaaabee3e39407928039_l3.png\" height=\"87\" width=\"386\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#97;&#108;&#105;&#103;&#110;&#42;&#125; &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#123;&#118;&#101;&#99;&#116;&#101;&#117;&#114;&#32;&#120;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#71;&#125;&#123;&#118;&#101;&#99;&#116;&#101;&#117;&#114;&#32;&#121;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#123;&#118;&#101;&#99;&#116;&#101;&#117;&#114;&#32;&#122;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#77;&#125;&#123;&#112;&#111;&#115;&#105;&#116;&#105;&#111;&#110;&#32;&#100;&#97;&#110;&#115;&#32;&#108;&#101;&#32;&#109;&#111;&#110;&#100;&#101;&#125;&#32;&#38;&#32;&#49; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#61;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#123;&#120;&#95;&#123;&#48;&#125;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#123;&#120;&#95;&#123;&#49;&#125;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#123;&#120;&#95;&#123;&#50;&#125;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#71;&#125;&#123;&#121;&#95;&#123;&#48;&#125;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#71;&#125;&#123;&#121;&#95;&#123;&#49;&#125;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#71;&#125;&#123;&#121;&#95;&#123;&#50;&#125;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#123;&#122;&#95;&#123;&#48;&#125;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#123;&#122;&#95;&#123;&#49;&#125;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#123;&#122;&#95;&#123;&#50;&#125;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#77;&#125;&#123;&#77;&#95;&#123;&#48;&#125;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#77;&#125;&#123;&#77;&#95;&#123;&#49;&#125;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#77;&#125;&#123;&#77;&#95;&#123;&#50;&#125;&#125;&#32;&#38;&#32;&#49;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#92;&#101;&#110;&#100;&#123;&#97;&#108;&#105;&#103;&#110;&#42;&#125; \" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/center>\n\n\n<\/div>\n<\/div>\n\n\n\n<p>Voici le &#8220;vrai&#8221; sch\u00e9ma de ce qui c&#8217;est pass\u00e9:<br><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-89 size-medium aligncenter\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/repere-1-300x229.png\" alt=\"\" width=\"300\" height=\"229\" srcset=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/repere-1-300x229.png 300w, http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/repere-1.png 340w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Donc notre matrice de translation va cr\u00e9er un autre rep\u00e8re M qui a trois vecteurs x,y,z identiques au premier. On remarque&nbsp;que :<\/p>\n<ul>\n<li><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-fef4c241ffabd74a2c445cf04c92d465_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#118;&#101;&#99;&#123;&#79;&#65;&#125;&#32;&#61;&#32;&#92;&#118;&#101;&#99;&#123;&#77;&#66;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"17\" width=\"84\" style=\"vertical-align: 0px;\"\/> donc le dessin initiale (ici juste un point) ne bouge pas par rapport au rep\u00e8re.<\/li>\n<li>B est exprim\u00e9 dans le rep\u00e8re <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-d8902e1585c503437d146cbd8bdebb79_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#79;&#92;&#118;&#101;&#99;&#123;&#120;&#125;&#92;&#118;&#101;&#99;&#123;&#121;&#125;&#92;&#118;&#101;&#99;&#123;&#122;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"17\" width=\"45\" style=\"vertical-align: -4px;\"\/>.<\/li>\n<\/ul>\n<p>Mais il reste un dernier point important a expliqu\u00e9 : Si B est exprim\u00e9 dans le rep\u00e8re O, A est exprim\u00e9 dans quel rep\u00e8re ?<br>La r\u00e9ponse est : dans le rep\u00e8re M.<\/p>\n<p>J&#8217;appelle rep\u00e8re <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-9acfdb439811e942bc31780c78f8ac04_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#115;&#99;&#114;&#123;&#77;&#125;&#95;&#123;&#88;&#92;&#118;&#101;&#99;&#123;&#120;&#125;&#92;&#118;&#101;&#99;&#123;&#121;&#125;&#92;&#118;&#101;&#99;&#123;&#122;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"20\" width=\"55\" style=\"vertical-align: -6px;\"\/>, le rep\u00e8re d\u00e9finit par une origine X et sa base <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-6d07f41815847b6233f1b347bb8a18e5_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#118;&#101;&#99;&#123;&#120;&#125;&#92;&#118;&#101;&#99;&#123;&#121;&#125;&#92;&#118;&#101;&#99;&#123;&#122;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"17\" width=\"31\" style=\"vertical-align: -4px;\"\/>.<\/p>\n\n\n\n<div class=\"wp-block-columns has-ccp-light-gray-background-color has-background is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<ol class=\"wp-block-list\"><li>J&#8217;ai un objet 3D : un robot sous un logiciel de mod\u00e9lisation (exemple: Blender).<br>Il a son propre rep\u00e8re <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-3b1db294640a08585ebd4914e5485403_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#115;&#99;&#114;&#123;&#77;&#125;&#95;&#123;&#82;&#92;&#118;&#101;&#99;&#123;&#115;&#125;&#92;&#118;&#101;&#99;&#123;&#116;&#125;&#92;&#118;&#101;&#99;&#123;&#114;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"20\" width=\"50\" style=\"vertical-align: -6px;\"\/> et un point <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-02248713abd724916eb29955a38b0da3_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#71;&#125;&#69;&#40;&#49;&#44;&#32;&#49;&#44;&#32;&#48;&#41;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"69\" style=\"vertical-align: -4px;\"\/> pour son \u0153il.<\/li><\/ol>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<ol class=\"wp-block-list\" start=\"2\"><li>Je vais l&#8217;utiliser dans mon programme qui a le rep\u00e8re <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-0716ba02663006986801227ba1fc24d6_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#115;&#99;&#114;&#123;&#77;&#125;&#95;&#123;&#79;&#92;&#118;&#101;&#99;&#123;&#120;&#125;&#92;&#118;&#101;&#99;&#123;&#121;&#125;&#92;&#118;&#101;&#99;&#123;&#122;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"20\" width=\"54\" style=\"vertical-align: -6px;\"\/>. Et un autre rep\u00e8re <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-550c35d584366e20e9002bf76c40088e_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#115;&#99;&#114;&#123;&#77;&#125;&#95;&#123;&#77;&#92;&#118;&#101;&#99;&#123;&#117;&#125;&#92;&#118;&#101;&#99;&#123;&#118;&#125;&#92;&#118;&#101;&#99;&#123;&#119;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"17\" width=\"60\" style=\"vertical-align: -3px;\"\/> qui d\u00e9pends du monde O car le point M est d\u00e9fini dans O.<\/li><\/ol>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<ol class=\"wp-block-list\" start=\"3\"><li>Si je dessine mon objet sur O ou sur M (en adaptant le rep\u00e8re <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-3b1db294640a08585ebd4914e5485403_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#115;&#99;&#114;&#123;&#77;&#125;&#95;&#123;&#82;&#92;&#118;&#101;&#99;&#123;&#115;&#125;&#92;&#118;&#101;&#99;&#123;&#116;&#125;&#92;&#118;&#101;&#99;&#123;&#114;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"20\" width=\"50\" style=\"vertical-align: -6px;\"\/>), je vais transformer mon point E soit en A ou B pour le rep\u00e8re O.<\/li><\/ol>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns has-ccp-light-gray-background-color has-background is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"202\" height=\"204\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/robo1-1.png\" alt=\"\" class=\"wp-image-153\" srcset=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/robo1-1.png 202w, http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/robo1-1-150x150.png 150w\" sizes=\"auto, (max-width: 202px) 100vw, 202px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"290\" height=\"220\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/robo2-290x220.png\" alt=\"\" class=\"wp-image-154\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"290\" height=\"220\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/robo3-290x220.png\" alt=\"\" class=\"wp-image-155\"\/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>Finalement, on a d\u00e9finit deux rep\u00e8res O et M. Le point A est exprim\u00e9 dans le rep\u00e8re M et B dans le rep\u00e8re O. Notre matrice fait une transformation du rep\u00e8re M vers O.<br>Le rep\u00e8re O va s&#8217;appeler le rep\u00e8re sup\u00e9rieur de M car M est d\u00e9fini par rapport \u00e0 O : on a une notion de hi\u00e9rarchie.<\/p>\n\n\n\n<p>On vient d&#8217;ajouter une notion importante \u00e0 notre matrice: son sens d&#8217;application.<br>Pour changer de sens, il faut tout simplement appliquer une inversion de matrice car les matrices de transformation pr\u00e9c\u00e9dentes sont toutes inversibles.<\/p>\n\n\n\n<div class=\"wp-block-columns has-text-color has-background is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\" style=\"background-color:#e7ffd6;color:#35720a\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>Pour conclure :<\/p>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-6296e8dc-dd5c-4c9c-acff-eeff486ec1e9\"><li>Une matrice repr\u00e9sente un changement de base entre rep\u00e8re local et le rep\u00e8re sup\u00e9rieur.<\/li><li>Elle a un sens d&#8217;application: rep\u00e8re sup\u00e9rieur vers local ou inversement.<\/li><\/ul>\n<\/div>\n<\/div>\n\n\n\n<p>Pour la suite, on va donc former nos matrices dans le sens: locale vers rep\u00e8re sup\u00e9rieur car elles sont beaucoup plus facile \u00e0 former.<\/p>\n\n\n\n<p class=\"has-text-align-left has-text-color has-background has-small-font-size\" style=\"background-color:#d9edf7;color:#144977\">En anglais, on parle de Global\/World et Local (coordinate).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">La rotation<\/h3>\n\n\n\n<p>La matrice de rotation va donc nous permettre de d\u00e9finir la base de notre syst\u00e8me. On va utiliser des vecteurs normalis\u00e9s.<br>La forme de la matrice est la suivante:<\/p>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-columns has-ccp-light-gray-background-color has-background is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n\n\n<center><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-33e8fae22980447dd8ec35fc4e45b518_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\" &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#77;&#125;&#123;&#120;&#95;&#123;&#48;&#125;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#77;&#125;&#123;&#120;&#95;&#123;&#49;&#125;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#77;&#125;&#123;&#120;&#95;&#123;&#50;&#125;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#89;&#125;&#123;&#121;&#95;&#123;&#48;&#125;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#89;&#125;&#123;&#121;&#95;&#123;&#49;&#125;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#89;&#125;&#123;&#121;&#95;&#123;&#50;&#125;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#123;&#122;&#95;&#123;&#48;&#125;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#123;&#122;&#95;&#123;&#49;&#125;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#123;&#122;&#95;&#123;&#50;&#125;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"86\" width=\"125\" style=\"vertical-align: -39px;\"\/><\/center>\n<\/div>\n<\/div>\n\n\n\n<p><\/p>\n\n\n\n<p>Il est facile par exemple d&#8217;\u00e9crire la matrice de rotation de&nbsp; <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-c696d1c7f980d95b8ec929b5ae774367_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#102;&#114;&#97;&#99;&#123;&#80;&#73;&#125;&#123;&#52;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"22\" width=\"18\" style=\"vertical-align: -6px;\"\/> par rapport \u00e0&nbsp;<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-fe25dcb2a0e83df97cac680b41305d43_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#118;&#101;&#99;&#123;&#122;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"13\" width=\"12\" style=\"vertical-align: 0px;\"\/>.<br>On part du sch\u00e9ma suivant :<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"192\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/rotation_without_norm-1-300x192.png\" alt=\"\" class=\"wp-image-91\" srcset=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/rotation_without_norm-1-300x192.png 300w, http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/rotation_without_norm-1.png 372w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/figure><\/div>\n\n\n\n<p>On peut facilement lire que <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-f2e361d60144419a94612f77b8cca1e1_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#77;&#125;&#123;&#92;&#118;&#101;&#99;&#123;&#120;&#125;&#32;&#61;&#32;&#40;&#49;&#44;&#32;&#49;&#44;&#32;&#48;&#41;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"89\" style=\"vertical-align: -4px;\"\/>, <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-97efbf16ed14e427fb3147368deb64d3_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#89;&#125;&#123;&#92;&#118;&#101;&#99;&#123;&#121;&#125;&#32;&#61;&#32;&#40;&#45;&#49;&#44;&#32;&#49;&#44;&#32;&#48;&#41;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"102\" style=\"vertical-align: -4px;\"\/>&nbsp;et&nbsp;<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-884c8afd01570f08dbb8c26306ae71ba_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#123;&#92;&#118;&#101;&#99;&#123;&#122;&#125;&#32;&#61;&#32;&#40;&#48;&#44;&#32;&#48;&#44;&#32;&#49;&#41;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"88\" style=\"vertical-align: -4px;\"\/>.<br>Je pose <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-69766f98174d4d0603c07cff0544cf51_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#32;&#67;&#32;&#61;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#50;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"27\" width=\"59\" style=\"vertical-align: -11px;\"\/> soit <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-31ed7fd59144c29024be2b92de01adb7_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#108;&#111;&#110;&#103;&#117;&#101;&#117;&#114;&#32;&#100;&#117;&#32;&#118;&#101;&#99;&#116;&#101;&#117;&#114;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"25\" width=\"116\" style=\"vertical-align: -9px;\"\/> cela va me permettre de normaliser mes vecteurs. En fait, <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-4daf823960f4c3a90149eccfe804856a_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#32;&#67;&#32;&#61;&#32;&#99;&#111;&#115;&#40;&#92;&#102;&#114;&#97;&#99;&#123;&#80;&#73;&#125;&#123;&#52;&#125;&#41;&#32;&#61;&#32;&#115;&#105;&#110;&#40;&#92;&#102;&#114;&#97;&#99;&#123;&#80;&#73;&#125;&#123;&#52;&#125;&#41;&#32;&#61;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#50;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"27\" width=\"226\" style=\"vertical-align: -11px;\"\/>. <\/p>\n\n\n\n<p class=\"has-text-align-left has-text-color has-background has-small-font-size\" style=\"background-color:#d9edf7;color:#144977\">Pour ceux qui connaissent par c\u0153ur leur matrice de rotation autour de <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-76af122d9ba98d937403aa24a29883b7_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#118;&#101;&#99;&#123;&#90;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"17\" width=\"13\" style=\"vertical-align: 0px;\"\/>, les sin() et cos() sont bien pr\u00e9sents.<\/p>\n\n\n\n<p>En normalisant chacun des vecteurs et rempla\u00e7ant, on trouve la matrice<\/p>\n\n\n\n<div class=\"wp-block-columns has-ccp-light-gray-background-color has-background is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<center><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-231e19d3fe5bed969431c52ef1ed0c9c_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\" &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#77;&#125;&#123;&#67;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#77;&#125;&#123;&#67;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#77;&#125;&#123;&#48;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#89;&#125;&#123;&#45;&#67;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#89;&#125;&#123;&#67;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#89;&#125;&#123;&#48;&#32;&#125;&#38;&#32;&#48;&#32;&#92;&#92; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#123;&#48;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#123;&#48;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#123;&#49;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"86\" width=\"122\" style=\"vertical-align: -39px;\"\/><\/center>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\nconst float pi_4 = 0.785398163397448309616f;\nconst float C = 1.0f \/ sqrt(2.0f);\n\/\/ Matrice manuelle\nglm::mat4 r( C,       C, 0.0f, 0.0f, \n            -C,       C, 0.0f, 0.0f,\n             0.0f, 0.0f, 1.0f, 0.0f,\n             0.0f, 0.0f, 0.0f, 1.0f);\n\/\/ En utilisant l&#039;API glm \nglm::mat4 r1(1.0f); \/\/ Identity\nr1 = glm::rotate(r1, pi_4, glm::vec3(0.0f, 0.0f, 1.0f));\nEXPECT_EQ(r, r1);\n<\/pre><\/div><\/div>\n<\/div>\n\n\n\n<p>Appliquons la matrice sur cette exemple:&nbsp;<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-acb32d2f47d7493b7fd7205c2a0c28fc_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#123;&#65;&#32;&#61;&#32;&#40;&#92;&#102;&#114;&#97;&#99;&#123;&#50;&#125;&#123;&#51;&#125;&#44;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#51;&#125;&#44;&#32;&#48;&#41;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"22\" width=\"96\" style=\"vertical-align: -6px;\"\/> et <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-5d3e44d8a8406551ca06e68e6b859e5e_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#123;&#66;&#32;&#61;&#32;&#40;&#92;&#102;&#114;&#97;&#99;&#123;&#67;&#125;&#123;&#51;&#125;&#44;&#32;&#67;&#44;&#32;&#48;&#41;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"22\" width=\"103\" style=\"vertical-align: -6px;\"\/> (c&#8217;est assez facile \u00e0 calculer juste avec le th\u00e9or\u00e8me de Pythagore et en remarquant que OA = coordonn\u00e9e y de B)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-93 size-medium aligncenter\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/rotation_point-1-300x215.png\" alt=\"\" width=\"300\" height=\"215\" srcset=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/rotation_point-1-300x215.png 300w, http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/rotation_point-1.png 311w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-columns has-ccp-light-gray-background-color has-background is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<center><p class=\"ql-center-displayed-equation\" style=\"line-height: 116px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-cead821fc733039de081a10ed4a03e55_l3.png\" height=\"116\" width=\"230\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\" &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#97;&#108;&#105;&#103;&#110;&#42;&#125; &#38;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#77;&#125;&#32;&#67;&#125;&#32;&#38;&#32;&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#77;&#125;&#67;&#125;&#32;&#38;&#32;&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#77;&#125;&#48;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#89;&#125;&#45;&#67;&#125;&#32;&#38;&#32;&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#89;&#125;&#67;&#125;&#32;&#38;&#32;&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#89;&#125;&#48;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#32;&#48;&#125;&#32;&#38;&#32;&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#48;&#125;&#32;&#38;&#32;&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#49;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49;&#32;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#92;&#92; &#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#92;&#102;&#114;&#97;&#99;&#123;&#50;&#125;&#123;&#51;&#125;&#32;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#51;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125; &#38;&#32;&#92;&#109;&#115;&#112;&#97;&#99;&#101;&#123;&#53;&#109;&#117;&#125; &#92;&#98;&#105;&#103;&#108;&#91;&#32;&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#92;&#109;&#97;&#107;&#101;&#98;&#111;&#120;&#91;&#92;&#119;&#105;&#100;&#116;&#104;&#111;&#102;&#123;&#36;&#45;&#67;&#36;&#125;&#93;&#123;&#36;&#92;&#102;&#114;&#97;&#99;&#123;&#67;&#125;&#123;&#51;&#125;&#36;&#125;&#32;&#38; &#92;&#109;&#97;&#107;&#101;&#98;&#111;&#120;&#91;&#92;&#119;&#105;&#100;&#116;&#104;&#111;&#102;&#123;&#36;&#67;&#36;&#125;&#93;&#123;&#36;&#67;&#36;&#125;&#32;&#38; &#92;&#109;&#97;&#107;&#101;&#98;&#111;&#120;&#91;&#92;&#119;&#105;&#100;&#116;&#104;&#111;&#102;&#123;&#36;&#48;&#36;&#125;&#93;&#123;&#48;&#125;&#32;&#38; &#92;&#109;&#97;&#107;&#101;&#98;&#111;&#120;&#91;&#92;&#119;&#105;&#100;&#116;&#104;&#111;&#102;&#123;&#36;&#49;&#36;&#125;&#93;&#123;&#49;&#125; &#92;&#101;&#110;&#100;&#123;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125; &#92;&#109;&#115;&#112;&#97;&#99;&#101;&#123;&#53;&#109;&#117;&#125; &#92;&#98;&#105;&#103;&#114;&#93; &#92;&#101;&#110;&#100;&#123;&#97;&#108;&#105;&#103;&#110;&#42;&#125; \" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/center>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\nconst float C = 1.0f \/ sqrt(2.0f); \nglm::mat4 r( C,       C, 0.0f, 0.0f, \n            -C,       C, 0.0f, 0.0f, \n             0.0f, 0.0f, 1.0f, 0.0f, \n             0.0f, 0.0f, 0.0f, 1.0f);\nglm::vec4 a(2.0f\/3.0f, 1.0f\/3.0f, 0.0f, 1.0f);\nglm::vec4 b( C\/3.0f, C, 0.0f, 1.0f);\nEXPECT_EQ(b, r * a);\n<\/pre><\/div>\n\n<\/div>\n<\/div>\n\n\n\n<p>Cool ! C&#8217;est exactement le bon r\u00e9sultat.<\/p>\n\n\n\n<div class=\"wp-block-columns has-text-color has-background is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\" style=\"background-color:#e7ffd6;color:#35720a\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>Pour conclure :<\/p>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-6b6485d1-2a7c-433b-b97f-50f371dcf482\"><li>On tourne autour de l&#8217;origine R<\/li><li>On peut &#8220;facilement&#8221; v\u00e9rifier qu&#8217;une matrice est correcte (en regardant si le vecteur est positif\/n\u00e9gatif sur chacun des composantes).<\/li><li>B est exprim\u00e9 dans le rep\u00e8re <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-d8902e1585c503437d146cbd8bdebb79_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#79;&#92;&#118;&#101;&#99;&#123;&#120;&#125;&#92;&#118;&#101;&#99;&#123;&#121;&#125;&#92;&#118;&#101;&#99;&#123;&#122;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"17\" width=\"45\" style=\"vertical-align: -4px;\"\/>.<\/li><\/ul>\n<\/div>\n<\/div>\n\n\n\n<p>Sur un mod\u00e8le complexe, la rotation donnera la repr\u00e9sentation suivante:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"219\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/rotation-1-300x219.png\" alt=\"\" class=\"wp-image-90\" srcset=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/rotation-1-300x219.png 300w, http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/rotation-1.png 318w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/figure><\/div>\n\n\n\n<p>Une nouvelle question s&#8217;offre \u00e0 nous : comment tourner autour d&#8217;un autre point ? Hum &#8230; On verra cela en fin d&#8217;article.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Et pour finir l&#8217;homoth\u00e9tie<\/h4>\n\n\n\n<p>Finissons notre tour des matrices avec l\u2019homoth\u00e9tie. Ici, la forme est facile \u00e0 comprendre on va &#8220;\u00e9tirer&#8221; notre objet sur chaque dimension.<br>Chaque facteur d&#8217;agrandissement est d\u00e9fini dans l&#8217;ensemble <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-2e13eb3923d259cfa740699955ee93a3_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#98;&#98;&#123;&#82;&#125;&#95;&#123;&#43;&#125;&#94;&#123;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"23\" style=\"vertical-align: -6px;\"\/>.<br>Quand il est sup\u00e9rieur 1 : on agrandie, et entre 0 et 1 : on r\u00e9duit.<\/p>\n\n\n\n<p>Dans l&#8217;exemple suivant, on va r\u00e9duire notre rep\u00e8re par deux sur toutes les dimensions.<br>Cette fois-ci, on va prendre deux points afin de mieux comprendre le ph\u00e9nom\u00e8ne.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>A deviendra C<\/li><li>B deviendra D<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"295\" height=\"251\" src=\"https:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/scaling.png\" alt=\"\" class=\"wp-image-81\"\/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-columns has-ccp-light-gray-background-color has-background is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<center><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-ac9f9220c54d6dbdbb8f96abff7027ed_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#97;&#114;&#114;&#97;&#121;&#125;&#123;&#99;&#32;&#99;&#125; &#126;&#32;&#38;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#123;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#125;&#32;&#38;&#32;&#48;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#123;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#48;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#123;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#32;&#92;&#92; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#123;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#92;&#102;&#114;&#97;&#99;&#123;&#50;&#125;&#123;&#51;&#125;&#32;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#51;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#79;&#125;&#123;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#51;&#125;&#32;&#32;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#54;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49;&#32;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125;&#32;&#92;&#92; &#126;&#32;&#38;&#32;&#126;&#32;&#92;&#92; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#123;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#49;&#32;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#51;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#79;&#125;&#123;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#32;&#32;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#54;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49;&#32;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125;&#32;&#92;&#101;&#110;&#100;&#123;&#97;&#114;&#114;&#97;&#121;&#125; \" title=\"Rendered by QuickLaTeX.com\" height=\"155\" width=\"223\" style=\"vertical-align: -73px;\"\/><\/center>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\nglm::vec3 h(0.5f, 0.5f, 0.5f);\nglm::mat4 m(h.x, 0.0f, 0.0f, 0.0f, \n            0.0f, h.y, 0.0f, 0.0f, \n            0.0f, 0.0f, h.z, 0.0f,\n            0.0f, 0.0f, 0.0f, 1.0f);\nglm::mat4 m1(1.0f); \/\/ Identity \nm1 = glm::scale(m1, h);\nEXPECT_EQ(m1, m);\nglm::vec4 a(2.0f\/3.0f, 1.0f\/3.0f, 0.0f, 1.0f); \nglm::vec4 b(1.0f, 1.0f\/3.0f, 0.0f, 1.0f); \nglm::vec4 c(1.0f\/3.0f, 1.0f\/6.0f, 0.0f, 1.0f);\nglm::vec4 d(1.0f\/2.0f, 1.0f\/6.0f, 0.0f, 1.0f); \nEXPECT_EQ(c, m * a); \nEXPECT_EQ(d, m * b);\n<\/pre><\/div>\n\n<\/div>\n<\/div>\n\n\n\n<p>Finalement voici l&#8217;effet sur notre petit robot.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"270\" height=\"246\" src=\"https:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/scaling_object.png\" alt=\"\" class=\"wp-image-82\"\/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-columns has-text-color has-background is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\" style=\"background-color:#e7ffd6;color:#35720a\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>Voici quelques remarques:<\/p>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-5330a045-8c13-4f9e-a591-72548d713826\"><li>C et D est exprim\u00e9 dans le rep\u00e8re <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-d8902e1585c503437d146cbd8bdebb79_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#79;&#92;&#118;&#101;&#99;&#123;&#120;&#125;&#92;&#118;&#101;&#99;&#123;&#121;&#125;&#92;&#118;&#101;&#99;&#123;&#122;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"17\" width=\"45\" style=\"vertical-align: -4px;\"\/>.<\/li><li>Notre robot n&#8217;a pas boug\u00e9 par rapport \u00e0 son rep\u00e8re: le point C est toujours \u00e0 <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-d3b766245d69c7b7ccf6b63420b0fa46_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#102;&#114;&#97;&#99;&#123;&#50;&#125;&#123;&#51;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"22\" width=\"7\" style=\"vertical-align: -6px;\"\/> du vecteur et le point D est \u00e0 l&#8217;extr\u00e9mit\u00e9 du vecteur.<\/li><\/ul>\n<\/div>\n<\/div>\n\n\n\n<p>En conclusion de cette premi\u00e8re partie, on a pu voir que la formation des matrices reste facile m\u00eame si la rotation demande quelques calculs mais cela reste analysable (lors de vos phases de debug).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Probl\u00e8me 2: La composition<\/h2>\n\n\n\n<p>G\u00e9n\u00e9ralement, ce qui va nous int\u00e9resser c&#8217;est de les composer afin de transformer nos points\/vecteurs le plus rapidement possible (soit le moins d&#8217;op\u00e9ration processeur possible).<\/p>\n\n\n\n<p class=\"has-text-color has-background\" style=\"background-color:#fff3d9;color:#8c5b12\">Petit rappel important:<br>LE PRODUIT MATRICIEL N&#8217;EST PAS COMMUTATIVE SOIT <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-5aba3e49bd192e3b8db5d9fdfa5a8d01_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#32;&#109;&#32;&#92;&#116;&#105;&#109;&#101;&#115;&#32;&#110;&#32;&#92;&#110;&#101;&#113;&#32;&#110;&#32;&#92;&#116;&#105;&#109;&#101;&#115;&#32;&#109;\" title=\"Rendered by QuickLaTeX.com\" height=\"17\" width=\"119\" style=\"vertical-align: -4px;\"\/> !<\/p>\n\n\n\n<p>Donc l&#8217;ordre des op\u00e9rations est super important mais la r\u00e8gle est simple :<\/p>\n\n\n<p><center><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-1ca34065e4cc5fbe1ca1d335ca9b5873_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#77;&#125;&#123;&#67;&#111;&#109;&#112;&#111;&#115;&#101;&#125;&#32;&#61;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#123;&#84;&#114;&#97;&#110;&#115;&#108;&#97;&#116;&#105;&#111;&#110;&#125;&#32;&#92;&#116;&#105;&#109;&#101;&#115;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#123;&#82;&#111;&#116;&#97;&#116;&#105;&#111;&#110;&#125;&#32;&#92;&#116;&#105;&#109;&#101;&#115;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#71;&#125;&#123;&#72;&#111;&#109;&#111;&#116;&#104;&#101;&#116;&#105;&#101;&#125;&#32;\" title=\"Rendered by QuickLaTeX.com\" height=\"17\" width=\"399\" style=\"vertical-align: -4px;\"\/><\/center><\/p>\n\n\n\n<p>Par simplification d&#8217;\u00e9criture, je vais appeler ces matrices compos\u00e9es: matrices HRT.<br>On va quand m\u00eame prendre un exemple pour se le prouver.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"194\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/composition_simple-300x194.png\" alt=\"\" class=\"wp-image-96\" srcset=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/composition_simple-300x194.png 300w, http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/composition_simple.png 416w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/figure><\/div>\n\n\n\n<p>On va dans un premier temps calculer la compos\u00e9e:<\/p>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-columns has-ccp-light-gray-background-color has-background is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33%\">\n<center><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-9cc49b1be4b1dcc7fb61a31513000440_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#97;&#114;&#114;&#97;&#121;&#125;&#123;&#99;&#32;&#99;&#32;&#99;&#125; &#126;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#123;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#48;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#45;&#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125;&#32;&#38; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#123;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#92;&#102;&#114;&#97;&#99;&#123;&#49;&#49;&#125;&#123;&#54;&#125;&#32;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125;&#32;&#32;&#92;&#92; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#71;&#125;&#123;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125;&#32;&#38; &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#48;&#32;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#45;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#38; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#77;&#125;&#123;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#48;&#32;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#45;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#92;&#102;&#114;&#97;&#99;&#123;&#49;&#49;&#125;&#123;&#54;&#125;&#32;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125; &#92;&#101;&#110;&#100;&#123;&#97;&#114;&#114;&#97;&#121;&#125; \" title=\"Rendered by QuickLaTeX.com\" height=\"174\" width=\"389\" style=\"vertical-align: -83px;\"\/><\/center>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nconst float PI = 3.14159265358979323846f;\n\nglm::mat4 s = glm::scale(glm::mat4(1.0f), glm::vec3(0.5f, 0.5f, 0.5f));\nglm::mat4 r = glm::rotate(glm::mat4(1.0f), PI*0.5f, glm::vec3(0.0f, 0.0f, 1.0f));\nglm::mat4 t = glm::translate(glm::mat4(1.0f), glm::vec3(11.0f\/6.0f, 0.5f, 0.0f));\n\n \nglm::mat4 m(0.0f,       0.5f, 0.0f, 0.0f,\n           -0.5f,       0.0f, 0.0f, 0.0f,\n            0.0f,       0.0f, 0.5f, 0.0f,\n            11.0f\/6.0f, 0.5f, 0.0f, 1.0f);\nglm::mat4 c = t * r * s;\n    \n\/\/ Near expected\nfor(int rawID=0; rawID &lt; 4; ++rawID)\n{\n    for(int columnID=0; columnID &lt; 4; ++columnID)\n    {\n        EXPECT_NEAR(m&#x5B;rawID]&#x5B;columnID], c&#x5B;rawID]&#x5B;columnID], 1e-6f);\n    }\n}\n\n<\/pre><\/div><\/div>\n<\/div>\n\n\n\n<p>Si on applique cette nouvelle matrice sur le point <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-dbb19a78e088df59e0ee9268cff9e26b_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#123;&#65;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"13\" style=\"vertical-align: 0px;\"\/>.<\/p>\n\n\n\n<div class=\"wp-block-columns has-ccp-light-gray-background-color has-background is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<center><p class=\"ql-center-displayed-equation\" style=\"line-height: 117px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-674feac095ed76d93efc299c89cf8c99_l3.png\" height=\"117\" width=\"222\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\" &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#97;&#108;&#105;&#103;&#110;&#42;&#125; &#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#77;&#125;&#123;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#48;&#32;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#45;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#92;&#102;&#114;&#97;&#99;&#123;&#49;&#49;&#125;&#123;&#54;&#125;&#32;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49;&#32;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#125; &#92;&#92; &#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#92;&#102;&#114;&#97;&#99;&#123;&#50;&#125;&#123;&#51;&#125;&#32;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#51;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125; &#38;&#32;&#92;&#109;&#115;&#112;&#97;&#99;&#101;&#123;&#53;&#109;&#117;&#125; &#92;&#98;&#105;&#103;&#108;&#91;&#32;&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#92;&#109;&#97;&#107;&#101;&#98;&#111;&#120;&#91;&#92;&#119;&#105;&#100;&#116;&#104;&#111;&#102;&#123;&#36;&#45;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#36;&#125;&#93;&#123;&#36;&#92;&#102;&#114;&#97;&#99;&#123;&#53;&#125;&#123;&#51;&#125;&#36;&#125;&#32;&#38; &#92;&#109;&#97;&#107;&#101;&#98;&#111;&#120;&#91;&#92;&#119;&#105;&#100;&#116;&#104;&#111;&#102;&#123;&#36;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#36;&#125;&#93;&#123;&#36;&#92;&#102;&#114;&#97;&#99;&#123;&#53;&#125;&#123;&#54;&#125;&#36;&#125;&#32;&#38; &#92;&#109;&#97;&#107;&#101;&#98;&#111;&#120;&#91;&#92;&#119;&#105;&#100;&#116;&#104;&#111;&#102;&#123;&#36;&#48;&#36;&#125;&#93;&#123;&#48;&#125;&#32;&#38; &#92;&#109;&#97;&#107;&#101;&#98;&#111;&#120;&#91;&#92;&#119;&#105;&#100;&#116;&#104;&#111;&#102;&#123;&#36;&#49;&#36;&#125;&#93;&#123;&#49;&#125; &#92;&#101;&#110;&#100;&#123;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125; &#92;&#109;&#115;&#112;&#97;&#99;&#101;&#123;&#53;&#109;&#117;&#125; &#92;&#98;&#105;&#103;&#114;&#93; &#92;&#101;&#110;&#100;&#123;&#97;&#108;&#105;&#103;&#110;&#42;&#125; \" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/center>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\nglm::mat4 m(0.0f, 0.5f, 0.0f, 0.0f, \n           -0.5f, 0.0f, 0.0f, 0.0f,\n            0.0f, 0.0f, 0.5f, 0.0f,\n      11.0f\/6.0f, 0.5f, 0.0f, 1.0f);\nglm::vec4 a(2.0f\/3.0f, 1.0f\/3.0f, 0.0f, 1.0f);\nglm::vec4 b(5.0f\/3.0f, 5.0f\/6.0f, 0.0f, 1.0f);\nglm::vec4 mul = m * a;\n\/\/ Near expected\nfor(int columnID=0; columnID &lt; 4; ++columnID)\n{\n    EXPECT_NEAR(b&#x5B;columnID], mul&#x5B;columnID], 1e-6f);\n}\n<\/pre><\/div><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Rotation autour d&#8217;un autre point<\/h2>\n\n\n\n<p>Comme on l&#8217;a vu pr\u00e9c\u00e9demment, la matrice de rotation tourne autour de l&#8217;origine de notre rep\u00e8re. Mais on veux souvent tourner autour d&#8217;un autre point: voici la m\u00e9thodologie simple.<\/p>\n\n\n\n<div class=\"wp-block-columns has-ccp-light-gray-background-color has-background is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<ol class=\"wp-block-list\"><li>Soit le mod\u00e8le suivant; on veux tourner autour de B.<\/li><\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"349\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/rotate1.png\" alt=\"\" class=\"wp-image-178\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<ol class=\"wp-block-list\" start=\"2\"><li>On translate B sur l&#8217;origine du rep\u00e8re local soit <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-84e29a1e75d28d8525aa21a3d0fd0209_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#118;&#101;&#99;&#123;&#66;&#79;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"17\" width=\"28\" style=\"vertical-align: 0px;\"\/>.<\/li><\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"229\" height=\"281\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/rotate2.png\" alt=\"\" class=\"wp-image-179\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>3. On applique la matrice de rotation.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"206\" height=\"220\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/rotate3-206x220.png\" alt=\"\" class=\"wp-image-180\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<ol class=\"wp-block-list\" start=\"4\"><li>On applique la translation oppos\u00e9 soit <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-518be52fc2717b229c6fe4b45cbf209d_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#118;&#101;&#99;&#123;&#79;&#66;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"17\" width=\"28\" style=\"vertical-align: 0px;\"\/>.<\/li><\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"290\" height=\"220\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/rotate4-290x220.png\" alt=\"\" class=\"wp-image-181\"\/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>Au final, la transformation se traduit par: une translation + une rotation + une translation.<br>Mais on a vu que la composition permet de former une matrice HRT mais peut-on en combiner plusieurs ?<\/p>\n\n\n\n<p>On va chercher \u00e0 voir par l&#8217;exemple si la composition de cette matrice existe:<br><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-23e5598865cff60971256a36dbe7d9f8_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#77;&#125;&#123;&#67;&#111;&#109;&#112;&#111;&#115;&eacute;&#125;&#32;&#61;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#123;&#84;&#114;&#97;&#110;&#115;&#108;&#97;&#116;&#105;&#111;&#110;&#92;&#118;&#101;&#99;&#123;&#79;&#80;&#125;&#125;&#32;&#92;&#116;&#105;&#109;&#101;&#115;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#123;&#82;&#111;&#116;&#97;&#116;&#105;&#111;&#110;&#125;&#32;&#92;&#116;&#105;&#109;&#101;&#115;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#71;&#125;&#123;&#84;&#114;&#97;&#110;&#115;&#108;&#97;&#116;&#105;&#111;&#110;&#92;&#118;&#101;&#99;&#123;&#80;&#79;&#125;&#125;&#32;\" title=\"Rendered by QuickLaTeX.com\" height=\"21\" width=\"449\" style=\"vertical-align: -4px;\"\/><\/p>\n\n\n\n<p>On va partir de cet exemple: <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-e9130d3769137e6ff990df179bc1e1f7_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#71;&#125;&#65;&#40;&#49;&#44;&#32;&#50;&#44;&#32;&#48;&#41;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"69\" style=\"vertical-align: -4px;\"\/> et <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-e223b036f6a0c22b5f08a6b79ca49896_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#66;&#40;&#92;&#102;&#114;&#97;&#99;&#123;&#52;&#125;&#123;&#51;&#125;&#44;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#52;&#125;&#123;&#51;&#125;&#44;&#32;&#48;&#41;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"22\" width=\"74\" style=\"vertical-align: -6px;\"\/> des points de l&#8217;objet, on souhaite appliquer une rotation de <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-b40d4729101107a208fc1dfcffeb5002_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#102;&#114;&#97;&#99;&#123;&#92;&#112;&#105;&#125;&#123;&#50;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"9\" style=\"vertical-align: -6px;\"\/> autour de A.<br>Ce qui va nous donner les points <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-cceeb0aebf6e1ebb028eaa72a383406f_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#71;&#125;&#67;&#40;&#49;&#44;&#32;&#50;&#44;&#32;&#48;&#41;&#32;&#61;&#32;&#65;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"107\" style=\"vertical-align: -4px;\"\/> et <img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-84f0caa4f354dd1248487a49d35419d7_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#79;&#125;&#68;&#40;&#92;&#102;&#114;&#97;&#99;&#123;&#53;&#125;&#123;&#51;&#125;&#44;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#55;&#125;&#123;&#51;&#125;&#44;&#32;&#48;&#41;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"22\" width=\"74\" style=\"vertical-align: -6px;\"\/><\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"266\" height=\"364\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/rotatePoint1.png\" alt=\"\" class=\"wp-image-190\"\/><\/figure><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"255\" height=\"400\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/rotatePoint2.png\" alt=\"\" class=\"wp-image-191\"\/><\/figure><\/div>\n<\/div>\n<\/div>\n\n\n\n<p>C&#8217;est parti :<\/p>\n\n\n\n<div class=\"wp-block-columns has-ccp-light-gray-background-color has-background is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<center><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-033af244631982abeb52fab5b85e1c7a_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#97;&#114;&#114;&#97;&#121;&#125;&#123;&#99;&#32;&#99;&#32;&#99;&#125; &#126;&#32;&#38;&#32;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#82;&#125;&#123;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#48;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#45;&#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125;&#32;&#38; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#66;&#125;&#123;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#49;&#32;&#38;&#32;&#50;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125;&#32;&#32;&#92;&#92; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#71;&#125;&#123;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#45;&#49;&#32;&#38;&#32;&#45;&#50;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125;&#32;&#38; &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#48;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#45;&#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#50;&#32;&#38;&#32;&#45;&#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#38; &#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#77;&#125;&#123;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#48;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#45;&#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#51;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125; &#92;&#101;&#110;&#100;&#123;&#97;&#114;&#114;&#97;&#121;&#125; \" title=\"Rendered by QuickLaTeX.com\" height=\"173\" width=\"414\" style=\"vertical-align: -82px;\"\/><\/center>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\nconst float PI = 3.14159265358979323846f;\nglm::mat4 m( 0.0f, 1.0f, 0.0f, 0.0f,\n            -1.0f, 0.0f, 0.0f, 0.0f,\n             0.0f, 0.0f, 1.0f, 0.0f,\n             3.0f, 1.0f, 0.0f, 1.0f );\nglm::mat4 op = glm::translate( glm::mat4( 1.0f ), glm::vec3( 1.0f, 2.0f, 0.0f ) );\nglm::mat4 po = glm::inverse( op ); \nglm::mat4 r = glm::rotate( glm::mat4( 1.0f ), PI*0.5f, glm::vec3( 0.0f, 0.0f, 1.0f ) ); \nglm::mat4 c = op * r * po; \n\/\/ Near expected \nfor( int rawID=0; rawID &lt; 4; ++rawID )\n{ \n   for( int columnID=0; columnID &lt; 4; ++columnID ) \n   {\n      EXPECT_NEAR( m&#x5B;rawID]&#x5B;columnID], c&#x5B;rawID]&#x5B;columnID], 1e-6f );\n   }\n}\n<\/pre><\/div><\/div>\n<\/div>\n\n\n\n<p>Et maintenant, on l&#8217;applique \u00e0 nos points<\/p>\n\n\n\n<div class=\"wp-block-columns has-ccp-light-gray-background-color has-background is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<center><p class=\"ql-center-displayed-equation\" style=\"line-height: 116px;\"><span class=\"ql-right-eqno\"> &nbsp; <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/ql-cache\/quicklatex.com-8d8096574190e041787a98bfa411e3bb_l3.png\" height=\"116\" width=\"219\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#97;&#108;&#105;&#103;&#110;&#42;&#125; &#38;&#32;&#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#77;&#125;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#48;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#45;&#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#92;&#92; &#51;&#32;&#38;&#32;&#49;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125; &#92;&#92; &#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#71;&#125; &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#92;&#102;&#114;&#97;&#99;&#123;&#52;&#125;&#123;&#51;&#125;&#32;&#38;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#52;&#125;&#123;&#51;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#49; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125; &#38;&#32;&#92;&#109;&#115;&#112;&#97;&#99;&#101;&#123;&#53;&#109;&#117;&#125; &#123;&#92;&#99;&#111;&#108;&#111;&#114;&#123;&#109;&#121;&#79;&#125;&#32;&#92;&#98;&#105;&#103;&#108;&#91;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#92;&#109;&#97;&#107;&#101;&#98;&#111;&#120;&#91;&#92;&#119;&#105;&#100;&#116;&#104;&#111;&#102;&#123;&#36;&#45;&#49;&#36;&#125;&#93;&#123;&#36;&#92;&#102;&#114;&#97;&#99;&#123;&#53;&#125;&#123;&#51;&#125;&#36;&#125;&#32;&#38; &#92;&#109;&#97;&#107;&#101;&#98;&#111;&#120;&#91;&#92;&#119;&#105;&#100;&#116;&#104;&#111;&#102;&#123;&#36;&#49;&#36;&#125;&#93;&#123;&#36;&#92;&#102;&#114;&#97;&#99;&#123;&#55;&#125;&#123;&#51;&#125;&#36;&#125;&#32;&#38; &#92;&#109;&#97;&#107;&#101;&#98;&#111;&#120;&#91;&#92;&#119;&#105;&#100;&#116;&#104;&#111;&#102;&#123;&#36;&#48;&#36;&#125;&#93;&#123;&#36;&#48;&#36;&#125;&#32;&#38; &#92;&#109;&#97;&#107;&#101;&#98;&#111;&#120;&#91;&#92;&#119;&#105;&#100;&#116;&#104;&#111;&#102;&#123;&#36;&#48;&#36;&#125;&#93;&#123;&#36;&#49;&#36;&#125; &#92;&#101;&#110;&#100;&#123;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#92;&#109;&#115;&#112;&#97;&#99;&#101;&#123;&#53;&#109;&#117;&#125; &#92;&#98;&#105;&#103;&#114;&#93;&#125; &#92;&#101;&#110;&#100;&#123;&#97;&#108;&#105;&#103;&#110;&#42;&#125; \" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/center>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\"><div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\nglm::mat4 m( 0.0f, 1.0f, 0.0f, 0.0f,\n            -1.0f, 0.0f, 0.0f, 0.0f,\n             0.0f, 0.0f, 1.0f, 0.0f,\n             3.0f, 1.0f, 0.0f, 1.0f );\nglm::vec4 a( 1.0f, 2.0f, 0.0f, 1.0f );\nglm::vec4 b( 4.0f\/3.0f, 4.0f\/3.0f, 0.0f, 1.0f );\nglm::vec4 c( 1.0f, 2.0f, 0.0f, 1.0f ); glm::vec4 d( 5.0f\/3.0f, 7.0f\/3.0f, 0.0f, 1.0f );\nEXPECT_EQ( c, m * a );\nglm::vec4 computed = m * b;\n\/\/ Near expected\nfor( int columnID=0; columnID &lt; 4; ++columnID )\n{\n   EXPECT_NEAR( d&#x5B;columnID], computed&#x5B;columnID], 1e-6f );\n}\n<\/pre><\/div><\/div>\n<\/div>\n\n\n\n<p>Je vous laisse faire le calcul pour C et vous verrez qu&#8217;on retrouve bien A et inversement.<br>Cette solution est facile \u00e0 comprendre et assez intuitive et en plus elle se fait en une seule multiplication matricielle.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"497\" height=\"619\" src=\"http:\/\/mouca.fr\/wordpress\/wp-content\/uploads\/2018\/03\/all_rotate.png\" alt=\"\" class=\"wp-image-197\"\/><\/figure><\/div>\n\n\n\n<p>Pour info, un dernier petit sch\u00e9ma:<\/p>\n\n\n\n<p>Finalement, on conclue que nos matrices HRT peuvent \u00eatre cumuler et mis en cascade : c&#8217;est ce point qui nous sera tr\u00e8s utile lors de leur utilisation dans le graphe de sc\u00e8ne.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Conclusion<\/h1>\n\n\n\n<div class=\"wp-block-columns has-text-color has-background is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\" style=\"background-color:#e7ffd6;color:#35720a\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>On a vu :<\/p>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-be76156c-e7e5-4476-a54b-a95ecccdff77\"><li>Une d\u00e9finition des matrices homog\u00e8nes de transformation<\/li><li>Leurs principales formes et comment les former<\/li><li>Leurs compositions<\/li><\/ul>\n<\/div>\n<\/div>\n\n\n\n<p>A ce stade, on a tous les outils pour utiliser nos matrices dans un graphe de sc\u00e8ne.<br>Mais avant, je souhaiterai passer aux quaternions : <a href=\"http:\/\/mouca.fr\/wordpress\/2018\/05\/31\/matrice-quaternion-et-graphe-de-scene-partie-2\/\">Matrice, Quaternion et graphe de sc\u00e8ne &#8211; Partie 2<\/a><br>Si \u00e0 ce stade les quaternions ne vous branchent pas : <a href=\"http:\/\/mouca.fr\/wordpress\/2018\/11\/27\/matrice-quaternion-et-graphe-de-scene-partie-3\/\">Matrice, Quaternion et graphe de sc\u00e8ne &#8211; Partie 3<\/a><\/p>\n\n\n\n<p>Merci d&#8217;avoir lu cet article !<\/p>\n\n\n\n<p>N&#8217;h\u00e9sitez pas \u00e0 le partager, \u00e0 me signaler les probl\u00e8mes, et aussi commenter afin d&#8217;en faire un outils dynamique et constructif !<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Sources<\/h1>\n\n\n\n<p><a href=\"https:\/\/fr.wikipedia.org\/wiki\/Produit_matriciel\">Wikipedia : Produit matriciel<\/a><br><a href=\"https:\/\/en.wikipedia.org\/wiki\/Transformation_matrix\">Wikipedia : Transformation matrix<\/a><br><a href=\"https:\/\/fr.wikipedia.org\/wiki\/Matrice_de_passage\">Wikipedia : Matrice de passage<\/a><br><a href=\"http:\/\/www.opengl-tutorial.org\/beginners-tutorials\/tutorial-3-matrices\/\">www.opengl-tutorial.org &#8211; Tutorial 3 : Matrices<\/a><br><a href=\"http:\/\/morpheo.inrialpes.fr\/people\/Boyer\/Teaching\/RICM\/c3.pdf\">Les transformations g\u00e9om\u00e9triques du plan<\/a><br><a href=\"http:\/\/www.inf.ed.ac.uk\/teaching\/courses\/cg\/lectures\/cg3_2013.pdf\">University of Edinburgh &#8211; Transformations &#8211; Taku Komura<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bonjour \u00e0 tous, aujourd&#8217;hui\u00a0on va parler math\u00e9matiques appliqu\u00e9s si possible de mani\u00e8re simple car on va parler de matrice &amp; quaternion. Le but de ces articles est de correctement les utiliser dans un graphe de sc\u00e8ne et notamment pour le calcul de la &#8220;modelview-projection&#8221;.<\/p>\n","protected":false},"author":2,"featured_media":95,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[46,10,3,13,50],"class_list":["post-5","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-maths","tag-c-fr","tag-homogene-fr","tag-glm-fr","tag-homothetie-fr","tag-matrice-fr"],"_links":{"self":[{"href":"http:\/\/mouca.fr\/wordpress\/wp-json\/wp\/v2\/posts\/5","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/mouca.fr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/mouca.fr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/mouca.fr\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/mouca.fr\/wordpress\/wp-json\/wp\/v2\/comments?post=5"}],"version-history":[{"count":130,"href":"http:\/\/mouca.fr\/wordpress\/wp-json\/wp\/v2\/posts\/5\/revisions"}],"predecessor-version":[{"id":589,"href":"http:\/\/mouca.fr\/wordpress\/wp-json\/wp\/v2\/posts\/5\/revisions\/589"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/mouca.fr\/wordpress\/wp-json\/wp\/v2\/media\/95"}],"wp:attachment":[{"href":"http:\/\/mouca.fr\/wordpress\/wp-json\/wp\/v2\/media?parent=5"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/mouca.fr\/wordpress\/wp-json\/wp\/v2\/categories?post=5"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/mouca.fr\/wordpress\/wp-json\/wp\/v2\/tags?post=5"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}