HEX
Server: Apache
System: Linux vps.mmtprep.com 4.18.0-477.21.1.el8_8.x86_64 #1 SMP Thu Aug 10 13:51:50 EDT 2023 x86_64
User: mmtprep (1001)
PHP: 8.1.34
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/imagePointParTransformation-NKnGkboE.js.map
{"version":3,"file":"imagePointParTransformation-NKnGkboE.js","sources":["../../src/modules/imagePointParTransformation.js"],"sourcesContent":["import { matriceCarree } from '../lib/mathFonctions/MatriceCarree.js'\nimport FractionEtendue from './FractionEtendue.js'\n\n/**\n *\n * @param {number} transformation Entier déterminant la transformation voulue\n ** 1=symétrie / passant par O\n **2=symétrie \\ passant par O\n **3=symétrie _ passant par O\n **4=symétrie | passant par O\n **5= rotation 90° anti-horaire centre O\n **6= rotation 90° horaire centre O\n **7= symétrie centrale centre O\n **11= rotation 60° anti-horaire centre O\n **12= rotation 60° horaire centre O\n **13= rotation 120° anti-horaire centre O\n **14= rotation 120° horaire centre O\n **8= translation coordonnées de O = vecteur de translation\n **9= homothétie. centre O rapport k\n **10= homothétie. centre O rapport 1/k\n * @param {array} pointA Point dont on cherche l'image\n * @param {array} pointO Centre du repère local pour les symétries, centre pour les rotations et les homothéties\n * @param {array} vecteur Vecteur de la translation\n * @param {number} rapport rapport d'homothétie\n * @author Jean-Claude Lhote\n */\nexport function imagePointParTransformation (transformation, pointA, pointO, vecteur = [], rapport = 1) { // pointA,centre et pointO sont des tableaux de deux coordonnées\n                                                                                                          // on les rends homogènes en ajoutant un 1 comme 3ème coordonnée)\n                                                                                                          // nécessite d'être en repère orthonormal...\n                                                                                                          // Point O sert pour les rotations et homothéties en tant que centre (il y a un changement d'origine du repère en O pour simplifier l'expression des matrices de transformations.)\n  \n  let pointA1 = [0, 0, 0]\n  let pointA2 = [0, 0, 0]\n  \n  if (pointA.length === 2) pointA.push(1)\n  const x2 = pointO[0] // Point O' (origine du repère dans lequel les transformations sont simples (centre des rotations et point d'intersection des axes))\n  const y2 = pointO[1]\n  const u = vecteur[0] // (u,v) vecteur de translation.\n  const v = vecteur[1]\n  const k = rapport // rapport d'homothétie\n  \n  const matriceChangementDeRepere = matriceCarree([[1, 0, x2], [0, 1, y2], [0, 0, 1]])\n  const matriceChangementDeRepereInv = matriceCarree([[1, 0, -x2], [0, 1, -y2], [0, 0, 1]])\n  \n  let matrice\n  \n  switch (transformation) {\n    case 1: { // Symétrie par rapport à la première bissectrice\n      const matriceSymObl1 = matriceCarree([[0, 1, 0], [1, 0, 0], [0, 0, 1]]) // x'=y et y'=x\n      matrice = matriceSymObl1.multiplieMatriceCarree(matriceChangementDeRepereInv)\n    }\n      break\n    case 2: { //symétrie par rapport à la deuxième bissectrice\n      const matriceSymObl2 = matriceCarree([[0, -1, 0], [-1, 0, 0], [0, 0, 1]]) // x'=-y et y'=-x\n      matrice = matriceSymObl2.multiplieMatriceCarree(matriceChangementDeRepereInv)\n    }\n      break\n    case 3: { //Symétrie par rapport à l'axe des abscisses\n      const matriceSymxxprime = matriceCarree([[1, 0, 0], [0, -1, 0], [0, 0, 1]]) // x'=x et y'=-y\n      matrice = matriceSymxxprime.multiplieMatriceCarree(matriceChangementDeRepereInv)\n    }\n      break\n    case 4: { //symétrie par rapport à l'axe des ordonnées\n      const matriceSymYyPrime = matriceCarree([[-1, 0, 0], [0, 1, 0], [0, 0, 1]]) // x'=-x et y'=y\n      matrice = matriceSymYyPrime.multiplieMatriceCarree(matriceChangementDeRepereInv)\n    }\n      break\n    case 5: {//rotation 90 direct\n      const matriceQuartDeTourDirect = matriceCarree([[0, -1, 0], [1, 0, 0], [0, 0, 1]]) // x'=-y et y'=x\n      matrice = matriceQuartDeTourDirect.multiplieMatriceCarree(matriceChangementDeRepereInv)\n    }\n      break\n    case 6: {//rotation quart de tour indirect\n      const matriceQuartDeTourIndirect = matriceCarree([[0, 1, 0], [-1, 0, 0], [0, 0, 1]]) // x'=y et y'=-x\n      matrice = matriceQuartDeTourIndirect.multiplieMatriceCarree(matriceChangementDeRepereInv)\n    }\n      break\n    case 7: {//symétrie centrale\n      const matriceSymCentrale = matriceCarree([[-1, 0, 0], [0, -1, 0], [0, 0, 1]]) // x'=-x et y'=-y\n      matrice = matriceSymCentrale.multiplieMatriceCarree(matriceChangementDeRepereInv)\n    }\n      break\n    case 11: {//rotation 60° direct\n      const matriceRotation60Direct = matriceCarree([[0.5, -Math.sin(Math.PI / 3), 0], [Math.sin(Math.PI / 3), 0.5, 0], [0, 0, 1]])\n      matrice = matriceRotation60Direct.multiplieMatriceCarree(matriceChangementDeRepereInv)\n    }\n      break\n    case 12: {//rotation 60° indirect\n      const matriceRotation60Indirect = matriceCarree([[0.5, Math.sin(Math.PI / 3), 0], [-Math.sin(Math.PI / 3), 0.5, 0], [0, 0, 1]])\n      matrice = matriceRotation60Indirect.multiplieMatriceCarree(matriceChangementDeRepereInv)\n    }\n      break\n    case 13: {//rotation 120° direct\n      const matriceRotation120Direct = matriceCarree([[-0.5, -Math.sin(Math.PI / 3), 0], [Math.sin(Math.PI / 3), -0.5, 0], [0, 0, 1]])\n      matrice = matriceRotation120Direct.multiplieMatriceCarree(matriceChangementDeRepereInv)\n    }\n      break\n    case 14: {//rotation 120° indirect\n      const matriceRotation120Indirect = matriceCarree([[-0.5, Math.sin(Math.PI / 3), 0], [-Math.sin(Math.PI / 3), -0.5, 0], [0, 0, 1]])\n      matrice = matriceRotation120Indirect.multiplieMatriceCarree(matriceChangementDeRepereInv)\n    }\n      break\n    case 8: {//translation\n      const matriceTranslation = matriceCarree([[1, 0, u], [0, 1, v], [0, 0, 1]])\n      matrice = matriceTranslation.multiplieMatriceCarree(matriceChangementDeRepereInv)\n    }\n      break\n    case 9: {//homothétie rapport entier\n      const matriceHomothetie = matriceCarree([[k, 0, 0], [0, k, 0], [0, 0, 1]])\n      matrice = matriceHomothetie.multiplieMatriceCarree(matriceChangementDeRepereInv)\n    }\n      break\n    case 10: {//homothetie rapport inverse d'entier\n      const matriceHomothetie2 = matriceCarree([[new FractionEtendue(1, k), 0, 0], [0, new FractionEtendue(1, k), 0], [0, 0, 1]])\n      matrice = matriceHomothetie2.multiplieMatriceCarree(matriceChangementDeRepereInv)\n    }\n      break\n  }\n  pointA1 = matrice.multiplieVecteur(pointA)\n  pointA2 = matriceChangementDeRepere.multiplieVecteur(pointA1)\n  return pointA2\n}\n"],"names":["imagePointParTransformation","transformation","pointA","pointO","vecteur","rapport","pointA1","pointA2","x2","y2","u","v","k","matriceChangementDeRepere","matriceCarree","matriceChangementDeRepereInv","matrice","FractionEtendue"],"mappings":"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"}