math-exercises 2.2.68 → 2.2.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/lib/exercises/math/calcul/arithmetics/divisorsList.d.ts.map +1 -1
  2. package/lib/exercises/math/calcul/arithmetics/divisorsList.js +2 -1
  3. package/lib/exercises/math/calcul/arithmetics/primeNumbers.d.ts.map +1 -1
  4. package/lib/exercises/math/calcul/arithmetics/primeNumbers.js +2 -1
  5. package/lib/exercises/math/calcul/fractions/fractionsOperations.d.ts.map +1 -1
  6. package/lib/exercises/math/calcul/fractions/fractionsOperations.js +1 -0
  7. package/lib/exercises/math/calculLitteral/equation/equationType1Exercise.d.ts.map +1 -1
  8. package/lib/exercises/math/calculLitteral/equation/equationType1Exercise.js +3 -6
  9. package/lib/exercises/math/calculLitteral/equation/equationType2Exercise.d.ts.map +1 -1
  10. package/lib/exercises/math/calculLitteral/equation/equationType2Exercise.js +3 -8
  11. package/lib/exercises/math/calculLitteral/equation/equationType3Exercise.d.ts.map +1 -1
  12. package/lib/exercises/math/calculLitteral/equation/equationType3Exercise.js +7 -9
  13. package/lib/exercises/math/calculLitteral/equation/equationType4Exercise.d.ts.map +1 -1
  14. package/lib/exercises/math/calculLitteral/equation/equationType4Exercise.js +6 -19
  15. package/lib/exercises/math/calculLitteral/factorisation/factoByX.d.ts +8 -0
  16. package/lib/exercises/math/calculLitteral/factorisation/factoByX.d.ts.map +1 -0
  17. package/lib/exercises/math/calculLitteral/factorisation/factoByX.js +146 -0
  18. package/lib/exercises/math/calculLitteral/factorisation/index.d.ts +1 -0
  19. package/lib/exercises/math/calculLitteral/factorisation/index.d.ts.map +1 -1
  20. package/lib/exercises/math/calculLitteral/factorisation/index.js +1 -0
  21. package/lib/exercises/math/functions/absolute/absolueValueAffineEquation.d.ts +9 -0
  22. package/lib/exercises/math/functions/absolute/absolueValueAffineEquation.d.ts.map +1 -0
  23. package/lib/exercises/math/functions/absolute/absolueValueAffineEquation.js +175 -0
  24. package/lib/exercises/math/functions/absolute/index.d.ts +1 -0
  25. package/lib/exercises/math/functions/absolute/index.d.ts.map +1 -1
  26. package/lib/exercises/math/functions/absolute/index.js +1 -0
  27. package/lib/exercises/math/functions/trinoms/coefficientsIdentification.js +3 -3
  28. package/lib/exercises/math/functions/trinoms/findSecondRoot.d.ts +2 -2
  29. package/lib/exercises/math/functions/trinoms/findSecondRoot.d.ts.map +1 -1
  30. package/lib/exercises/math/functions/trinoms/findSecondRoot.js +5 -5
  31. package/lib/exercises/math/functions/trinoms/rootsProduct.d.ts +2 -2
  32. package/lib/exercises/math/functions/trinoms/rootsProduct.d.ts.map +1 -1
  33. package/lib/exercises/math/functions/trinoms/rootsProduct.js +7 -7
  34. package/lib/exercises/math/functions/trinoms/rootsSum.d.ts +2 -2
  35. package/lib/exercises/math/functions/trinoms/rootsSum.d.ts.map +1 -1
  36. package/lib/exercises/math/functions/trinoms/rootsSum.js +9 -10
  37. package/lib/exercises/math/functions/trinoms/trinomSignFromRoots.js +6 -6
  38. package/lib/exercises/math/geometry/areas/rightTriangleArea.d.ts +3 -1
  39. package/lib/exercises/math/geometry/areas/rightTriangleArea.d.ts.map +1 -1
  40. package/lib/exercises/math/geometry/areas/rightTriangleArea.js +10 -22
  41. package/lib/exercises/math/geometry/areas/triangleArea.d.ts +6 -1
  42. package/lib/exercises/math/geometry/areas/triangleArea.d.ts.map +1 -1
  43. package/lib/exercises/math/geometry/areas/triangleArea.js +34 -48
  44. package/lib/exercises/math/geometry/euclidianConstructions/pointImageFromTranslation.d.ts.map +1 -1
  45. package/lib/exercises/math/geometry/euclidianConstructions/pointImageFromTranslation.js +4 -1
  46. package/lib/exercises/math/geometry/index.d.ts +1 -0
  47. package/lib/exercises/math/geometry/index.d.ts.map +1 -1
  48. package/lib/exercises/math/geometry/index.js +1 -0
  49. package/lib/exercises/math/geometry/pythagore/isTriangleRight.d.ts.map +1 -1
  50. package/lib/exercises/math/geometry/pythagore/pythagore.d.ts +0 -3
  51. package/lib/exercises/math/geometry/pythagore/pythagore.d.ts.map +1 -1
  52. package/lib/exercises/math/geometry/pythagore/pythagore.js +19 -25
  53. package/lib/exercises/math/geometry/pythagore/pythagoreCalcul.d.ts +1 -2
  54. package/lib/exercises/math/geometry/pythagore/pythagoreCalcul.d.ts.map +1 -1
  55. package/lib/exercises/math/geometry/pythagore/pythagoreCalcul.js +30 -65
  56. package/lib/exercises/math/geometry/quadrilaterals/index.d.ts +2 -0
  57. package/lib/exercises/math/geometry/quadrilaterals/index.d.ts.map +1 -0
  58. package/lib/exercises/math/geometry/quadrilaterals/index.js +17 -0
  59. package/lib/exercises/math/geometry/quadrilaterals/quadrilateralRecognition.d.ts +14 -0
  60. package/lib/exercises/math/geometry/quadrilaterals/quadrilateralRecognition.d.ts.map +1 -0
  61. package/lib/exercises/math/geometry/quadrilaterals/quadrilateralRecognition.js +221 -0
  62. package/lib/exercises/math/geometry/thales/index.d.ts.map +1 -1
  63. package/lib/exercises/math/geometry/thales/index.js +0 -1
  64. package/lib/exercises/math/geometry/thales/thales.js +2 -2
  65. package/lib/exercises/math/geometry/thales/thalesCalcul.d.ts +3 -4
  66. package/lib/exercises/math/geometry/thales/thalesCalcul.d.ts.map +1 -1
  67. package/lib/exercises/math/geometry/thales/thalesCalcul.js +69 -78
  68. package/lib/exercises/math/geometry/volumes/parallelepipedVolume.d.ts.map +1 -1
  69. package/lib/exercises/math/geometry/volumes/parallelepipedVolume.js +4 -3
  70. package/lib/exercises/math/geometry/volumes/sphereVolume.js +1 -1
  71. package/lib/exercises/math/trigonometry/trigonometry.d.ts +2 -3
  72. package/lib/exercises/math/trigonometry/trigonometry.d.ts.map +1 -1
  73. package/lib/exercises/math/trigonometry/trigonometry.js +32 -31
  74. package/lib/exercises/math/trigonometry/trigonometryAngleCalcul.d.ts +3 -2
  75. package/lib/exercises/math/trigonometry/trigonometryAngleCalcul.d.ts.map +1 -1
  76. package/lib/exercises/math/trigonometry/trigonometryAngleCalcul.js +18 -28
  77. package/lib/exercises/math/trigonometry/trigonometrySideCalcul.d.ts +5 -4
  78. package/lib/exercises/math/trigonometry/trigonometrySideCalcul.d.ts.map +1 -1
  79. package/lib/exercises/math/trigonometry/trigonometrySideCalcul.js +60 -56
  80. package/lib/exercises/pc/index.d.ts +0 -4
  81. package/lib/exercises/pc/index.d.ts.map +1 -1
  82. package/lib/exercises/pc/index.js +6 -4
  83. package/lib/exercises/utils/geogebra/toGGBCommandsProps.d.ts +1 -0
  84. package/lib/exercises/utils/geogebra/toGGBCommandsProps.d.ts.map +1 -1
  85. package/lib/exercises/vea/equationVEA.d.ts +2 -0
  86. package/lib/exercises/vea/equationVEA.d.ts.map +1 -0
  87. package/lib/exercises/vea/equationVEA.js +24 -0
  88. package/lib/exercises/vea/rationalVEA.d.ts.map +1 -1
  89. package/lib/exercises/vea/sqrtVEA.d.ts +6 -0
  90. package/lib/exercises/vea/sqrtVEA.d.ts.map +1 -0
  91. package/lib/exercises/vea/sqrtVEA.js +30 -0
  92. package/lib/geogebra/geogebraConstructor.d.ts +2 -0
  93. package/lib/geogebra/geogebraConstructor.d.ts.map +1 -1
  94. package/lib/geogebra/geogebraConstructor.js +7 -0
  95. package/lib/index.d.ts +31 -46
  96. package/lib/index.d.ts.map +1 -1
  97. package/lib/math/complex/complex.d.ts +1 -1
  98. package/lib/math/geometry/angle.d.ts +26 -0
  99. package/lib/math/geometry/angle.d.ts.map +1 -0
  100. package/lib/math/geometry/angle.js +73 -0
  101. package/lib/math/geometry/line.d.ts +5 -1
  102. package/lib/math/geometry/line.d.ts.map +1 -1
  103. package/lib/math/geometry/line.js +17 -0
  104. package/lib/math/geometry/parallelogram.d.ts +23 -0
  105. package/lib/math/geometry/parallelogram.d.ts.map +1 -0
  106. package/lib/math/geometry/parallelogram.js +70 -0
  107. package/lib/math/geometry/point.d.ts +3 -0
  108. package/lib/math/geometry/point.d.ts.map +1 -1
  109. package/lib/math/geometry/point.js +16 -0
  110. package/lib/math/geometry/quadrilateral.d.ts +15 -0
  111. package/lib/math/geometry/quadrilateral.d.ts.map +1 -0
  112. package/lib/math/geometry/quadrilateral.js +38 -0
  113. package/lib/math/geometry/rectangle.d.ts +24 -0
  114. package/lib/math/geometry/rectangle.d.ts.map +1 -0
  115. package/lib/math/geometry/rectangle.js +64 -0
  116. package/lib/math/geometry/rhombus.d.ts +19 -0
  117. package/lib/math/geometry/rhombus.d.ts.map +1 -0
  118. package/lib/math/geometry/rhombus.js +46 -0
  119. package/lib/math/geometry/rightTriangle.d.ts +31 -0
  120. package/lib/math/geometry/rightTriangle.d.ts.map +1 -0
  121. package/lib/math/geometry/rightTriangle.js +113 -0
  122. package/lib/math/geometry/segment.d.ts +24 -6
  123. package/lib/math/geometry/segment.d.ts.map +1 -1
  124. package/lib/math/geometry/segment.js +70 -4
  125. package/lib/math/geometry/square.d.ts +22 -0
  126. package/lib/math/geometry/square.d.ts.map +1 -0
  127. package/lib/math/geometry/square.js +43 -0
  128. package/lib/math/geometry/triangle.d.ts +45 -45
  129. package/lib/math/geometry/triangle.d.ts.map +1 -1
  130. package/lib/math/geometry/triangle.js +159 -186
  131. package/lib/math/geometry/vector.d.ts +2 -2
  132. package/lib/math/geometry/vector.d.ts.map +1 -1
  133. package/lib/math/geometry/vector.js +18 -9
  134. package/lib/math/numbers/nombre.d.ts +5 -0
  135. package/lib/math/numbers/nombre.d.ts.map +1 -1
  136. package/lib/math/numbers/nombre.js +12 -0
  137. package/lib/math/numbers/rationals/rational.d.ts +1 -1
  138. package/lib/math/numbers/reals/extendedRingElement.d.ts +1 -1
  139. package/lib/math/numbers/reals/real.d.ts.map +1 -1
  140. package/lib/math/numbers/reals/real.js +3 -0
  141. package/lib/math/polynomials/generalAffine.d.ts +13 -0
  142. package/lib/math/polynomials/generalAffine.d.ts.map +1 -1
  143. package/lib/math/polynomials/generalAffine.js +25 -1
  144. package/lib/math/polynomials/polynomial.d.ts +1 -1
  145. package/lib/math/polynomials/trinom.d.ts +2 -2
  146. package/lib/math/utils/geometry/pythagoricianTriplets.d.ts +1 -0
  147. package/lib/math/utils/geometry/pythagoricianTriplets.d.ts.map +1 -1
  148. package/lib/math/utils/geometry/pythagoricianTriplets.js +14 -1
  149. package/lib/math/utils/random/randfloat.d.ts +1 -1
  150. package/lib/math/utils/random/randfloat.d.ts.map +1 -1
  151. package/lib/math/utils/random/randfloat.js +8 -1
  152. package/lib/math/utils/random/randint.d.ts +8 -1
  153. package/lib/math/utils/random/randint.d.ts.map +1 -1
  154. package/lib/math/utils/random/randint.js +6 -1
  155. package/lib/playground.d.ts.map +1 -1
  156. package/lib/tree/nodes/functions/absNode.d.ts +2 -1
  157. package/lib/tree/nodes/functions/absNode.d.ts.map +1 -1
  158. package/lib/tree/nodes/functions/absNode.js +6 -1
  159. package/lib/tree/nodes/functions/functionNode.d.ts +2 -2
  160. package/lib/tree/nodes/functions/functionNode.d.ts.map +1 -1
  161. package/lib/tree/nodes/functions/oppositeNode.d.ts +5 -5
  162. package/lib/tree/nodes/functions/oppositeNode.d.ts.map +1 -1
  163. package/lib/tree/nodes/node.d.ts +3 -1
  164. package/lib/tree/nodes/node.d.ts.map +1 -1
  165. package/lib/tree/nodes/node.js +1 -0
  166. package/lib/tree/nodes/nodeConstructor.d.ts +3 -0
  167. package/lib/tree/nodes/nodeConstructor.d.ts.map +1 -1
  168. package/lib/tree/nodes/nodeConstructor.js +9 -1
  169. package/lib/tree/nodes/numbers/numberNode.d.ts +2 -0
  170. package/lib/tree/nodes/numbers/numberNode.d.ts.map +1 -1
  171. package/lib/tree/nodes/numbers/numberNode.js +6 -1
  172. package/lib/tree/nodes/operators/addNode.d.ts.map +1 -1
  173. package/lib/tree/nodes/operators/addNode.js +2 -1
  174. package/lib/tree/nodes/operators/fractionNode.d.ts.map +1 -1
  175. package/lib/tree/nodes/operators/fractionNode.js +6 -1
  176. package/lib/tree/nodes/operators/multiplyNode.d.ts.map +1 -1
  177. package/lib/tree/nodes/operators/multiplyNode.js +3 -3
  178. package/lib/tree/nodes/polynomials/trinomNode.d.ts +70 -0
  179. package/lib/tree/nodes/polynomials/trinomNode.d.ts.map +1 -0
  180. package/lib/tree/nodes/polynomials/trinomNode.js +156 -0
  181. package/lib/tree/nodes/variables/variableNode.d.ts.map +1 -1
  182. package/lib/tree/nodes/variables/variableNode.js +1 -1
  183. package/lib/tree/parsers/affineParser.d.ts.map +1 -1
  184. package/lib/tree/parsers/affineParser.js +1 -0
  185. package/lib/tree/parsers/discreteSetParser.d.ts +3 -0
  186. package/lib/tree/parsers/discreteSetParser.d.ts.map +1 -0
  187. package/lib/tree/parsers/discreteSetParser.js +23 -0
  188. package/lib/tree/parsers/equationSolutionParser.d.ts +1 -1
  189. package/lib/tree/parsers/equationSolutionParser.d.ts.map +1 -1
  190. package/lib/tree/parsers/equationSolutionParser.js +15 -4
  191. package/lib/tree/parsers/latexParser.d.ts +5 -1
  192. package/lib/tree/parsers/latexParser.d.ts.map +1 -1
  193. package/lib/tree/parsers/latexParser.js +17 -3
  194. package/lib/tree/parsers/monomParser.js +2 -2
  195. package/lib/tree/parsers/powerParser.d.ts +1 -1
  196. package/lib/tree/parsers/rationalParser.d.ts +1 -1
  197. package/lib/tree/parsers/rationalParser.d.ts.map +1 -1
  198. package/lib/tree/parsers/rationalParser.js +29 -24
  199. package/lib/tree/parsers/sqrtParser.d.ts +9 -0
  200. package/lib/tree/parsers/sqrtParser.d.ts.map +1 -0
  201. package/lib/tree/parsers/sqrtParser.js +52 -0
  202. package/lib/tree/parsers/trinomParser.d.ts +1 -1
  203. package/lib/tree/parsers/trinomParser.d.ts.map +1 -1
  204. package/lib/tree/parsers/trinomParser.js +14 -2
  205. package/lib/tree/utilities/functionComposition.d.ts +1 -1
  206. package/lib/tree/utilities/functionComposition.d.ts.map +1 -1
  207. package/lib/utils/arrays/rotation.d.ts +8 -0
  208. package/lib/utils/arrays/rotation.d.ts.map +1 -0
  209. package/lib/utils/arrays/rotation.js +17 -0
  210. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"triangle.d.ts","sourceRoot":"","sources":["../../../src/math/geometry/triangle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAoB,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAQpE,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAI/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AACF,8BAAsB,mBAAmB;IACvC,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,mBAAmB,GAAG,QAAQ;IAOlE,MAAM,CAAC,yBAAyB,CAAC,EAC/B,UAAc,EACd,UAAc,EACd,KAAuB,GACxB;;;;KAAA,GAAG,QAAQ;IAkBZ,MAAM,CAAC,oBAAoB,CAAC,EAC1B,QAAe,EACf,QAAc,EACd,KAAuB,GACxB;;;;KAAA,GAAG,QAAQ;IAsCZ,MAAM,CAAC,UAAU;CAQlB;AAED,KAAK,qBAAqB,GAAG;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,qBAAa,QAAQ;IACnB,OAAO,EAAE,KAAK,CAAC;IACf,OAAO,EAAE,KAAK,CAAC;IACf,OAAO,EAAE,KAAK,CAAC;gBAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK;IAK1D,WAAW;IAOX,eAAe;IAGf,eAAe;IAGf,eAAe;IAGf,aAAa,IAAI,mBAAmB;IAQpC,cAAc,IAAI,MAAM;IAOxB,cAAc,IAAI,MAAM;IAOxB,cAAc,IAAI,MAAM;IAIxB,eAAe,IAAI,MAAM;IAIzB,YAAY;IAeZ,YAAY;IAeZ,YAAY;IAeZ,SAAS,IAAI,MAAM;IASnB,SAAS,IAAI,MAAM;IASnB,SAAS,IAAI,MAAM;IASnB,YAAY,IAAI,MAAM;IAMtB,OAAO,IAAI,MAAM;IAUjB,OAAO,IAAI,OAAO;IAOlB,aAAa,IAAI,OAAO;IAOxB,WAAW,IAAI,OAAO;IAQtB,SAAS,IAAI,OAAO;IAQpB,aAAa,IAAI,MAAM;IAOvB,gBAAgB,CAAC,EACf,gBAAgB,EAAE,gBAAgB,EAClC,qBAAqB,EAAE,qBAAqB,EAC5C,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,eAAe,EAChC,oBAAoB,EAAE,oBAAoB,GAC3C,EAAE,qBAAqB,GAAG,MAAM,EAAE;IAoEnC,cAAc,IAAI,MAAM,EAAE;IAyB1B,YAAY,IAAI,MAAM;IAItB,YAAY,IAAI,MAAM;IAItB,YAAY,IAAI,MAAM;CAGvB"}
1
+ {"version":3,"file":"triangle.d.ts","sourceRoot":"","sources":["../../../src/math/geometry/triangle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAoB,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEpE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAKhC,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAEL,eAAe,EAEhB,MAAM,kCAAkC,CAAC;AAE1C,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,wBAAwB,CAAC;CAClC,CAAC;AAEF,8BAAsB,mBAAmB;IACvC,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,mBAAmB,GAAG,QAAQ;IAgBlE,MAAM,CAAC,eAAe,CAAC,EACrB,KAAuB,EACvB,UAAkB,GACnB;;;KAAA,GAAG,QAAQ;IA8BZ,MAAM,CAAC,UAAU;CAQlB;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,YAAY,CAAC,EAAE,CAAC,eAAe,GAAG,SAAS,CAAC,EAAE,CAAC;IAC/C,kBAAkB,CAAC,EAAE,eAAe,EAAE,CAAC;IACvC,kBAAkB,CAAC,EAAE,eAAe,EAAE,CAAC;CACxC,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,aAAa,GAAG,SAAS,CAAC,EAAE,CAAC;IAC7C,kBAAkB,CAAC,EAAE,aAAa,EAAE,CAAC;IACrC,kBAAkB,CAAC,EAAE,aAAa,EAAE,CAAC;CACtC,CAAC;AACF,qBAAa,QAAQ;IACnB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,aAAa,CAAC;gBACV,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,EAAE,aAAa;IAyClD,aAAa,IAAI,mBAAmB;IAepC,mDAAmD;IACnD;;;OAGG;IACH,uDAAuD;IACvD,YAAY,IAAI,MAAM;IAItB,OAAO,IAAI,MAAM;IASjB,OAAO,IAAI,OAAO;IAIlB,aAAa,IAAI,OAAO;IAMxB,WAAW,IAAI,OAAO;IAUtB,SAAS,IAAI,OAAO;IASpB,aAAa,CACX,KAAK,EAAE,MAAM,EACb,IAAI,EAAE;QACJ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB;IAWH,cAAc,CACZ,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB;IAKH,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE;IAQtC,SAAS,CACP,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IAYH,UAAU,CACR,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IA4BH,cAAc,IAAI,MAAM,EAAE;CAkB3B"}
@@ -2,56 +2,46 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Triangle = exports.TriangleConstructor = void 0;
4
4
  const point_1 = require("./point");
5
- const substractNode_1 = require("../../tree/nodes/operators/substractNode");
6
- const powerNode_1 = require("../../tree/nodes/operators/powerNode");
7
- const addNode_1 = require("../../tree/nodes/operators/addNode");
8
- const numberNode_1 = require("../../tree/nodes/numbers/numberNode");
9
- const sqrtNode_1 = require("../../tree/nodes/functions/sqrtNode");
10
- const randint_1 = require("../utils/random/randint");
11
5
  const randomLetter_1 = require("../../utils/strings/randomLetter");
12
6
  const segment_1 = require("./segment");
13
- const multiplyNode_1 = require("../../tree/nodes/operators/multiplyNode");
7
+ const angle_1 = require("./angle");
8
+ const rotation_1 = require("../../utils/arrays/rotation");
9
+ const round_1 = require("../utils/round");
10
+ const randfloat_1 = require("../utils/random/randfloat");
11
+ const line_1 = require("./line");
12
+ const nodeConstructor_1 = require("../../tree/nodes/nodeConstructor");
14
13
  class TriangleConstructor {
15
14
  static fromIdentifiers(identifiers) {
16
- return new Triangle(point_1.PointConstructor.fromIdentifiers(identifiers.vertexA), point_1.PointConstructor.fromIdentifiers(identifiers.vertexB), point_1.PointConstructor.fromIdentifiers(identifiers.vertexC));
17
- }
18
- static createRandomRightTriangle({ minRapport = 0, maxRapport = 5, names = ["A", "B", "C"], }) {
19
- let pointA, pointB, pointC, d1, d2;
20
- do {
21
- const xA = (0, randint_1.randint)(-10, 11);
22
- const yA = (0, randint_1.randint)(-10, 11);
23
- const xB = (0, randint_1.randint)(-10, 11);
24
- const yB = (0, randint_1.randint)(-10, 11);
25
- pointA = new point_1.Point(names[0], new numberNode_1.NumberNode(xA), new numberNode_1.NumberNode(yA));
26
- pointB = new point_1.Point(names[1], new numberNode_1.NumberNode(xB), new numberNode_1.NumberNode(yB));
27
- d1 = pointA.distanceTo(pointB);
28
- const xC = (0, randint_1.randint)(-11, 10);
29
- const yC = yA - ((xB - xA) * (xC - xA)) / (yB - yA);
30
- pointC = new point_1.Point(names[2], new numberNode_1.NumberNode(xC), new numberNode_1.NumberNode(yC));
31
- d2 = pointA.distanceTo(pointC);
32
- } while (!d1 || !d2 || d1 / d2 < minRapport || d1 / d2 > maxRapport);
33
- return new Triangle(pointA, pointB, pointC);
34
- }
35
- static createRandomTriangle({ minAngle = 0.69, maxAngle = 1.5, names = ["A", "B", "C"], }) {
36
- let pointA, pointB, pointC, triangle;
37
- do {
38
- pointA = new point_1.Point(names[0], new numberNode_1.NumberNode((0, randint_1.randint)(-10, 11)), new numberNode_1.NumberNode((0, randint_1.randint)(-10, 11)));
39
- pointB = new point_1.Point(names[1], new numberNode_1.NumberNode((0, randint_1.randint)(-10, 11)), new numberNode_1.NumberNode((0, randint_1.randint)(-10, 11)));
40
- pointC = new point_1.Point(names[2], new numberNode_1.NumberNode((0, randint_1.randint)(-10, 11)), new numberNode_1.NumberNode((0, randint_1.randint)(-10, 11)));
41
- triangle = new Triangle(pointA, pointB, pointC);
42
- } while (triangle.isRight() ||
43
- //to prevent aligned
44
- //shouldnt be done this way
45
- (0, substractNode_1.substract)((0, multiplyNode_1.multiply)((0, substractNode_1.substract)(pointB.x, pointA.x), (0, substractNode_1.substract)(pointC.y, pointA.y)), (0, multiplyNode_1.multiply)((0, substractNode_1.substract)(pointC.x, pointA.x), (0, substractNode_1.substract)(pointB.y, pointA.y))).evaluate() === 0 ||
46
- //xb-xa * yc-ya = xc-xa * yb-ya
47
- pointA.distanceTo(pointB) === 0 ||
48
- pointB.distanceTo(pointC) === 0 ||
49
- pointC.distanceTo(pointA) === 0 ||
50
- triangle.getAngleA() < minAngle ||
51
- triangle.getAngleA() > maxAngle ||
52
- triangle.getAngleB() < minAngle ||
53
- triangle.getAngleB() > maxAngle);
54
- return new Triangle(pointA, pointB, pointC);
15
+ return new Triangle(identifiers.points.map((p) => point_1.PointConstructor.fromIdentifiers(p)), {
16
+ anglesRadianValues: identifiers.props?.anglesRadianValues?.map((n) => (0, nodeConstructor_1.reifyAlgebraic)(n)),
17
+ anglesDegreeValues: identifiers.props?.anglesDegreeValues?.map((n) => (0, nodeConstructor_1.reifyAlgebraic)(n)),
18
+ sidesLengths: identifiers.props?.sidesLengths?.map((n) => n ? (0, nodeConstructor_1.reifyAlgebraic)(n) : undefined),
19
+ });
20
+ }
21
+ static randomNiceSides({ names = ["A", "B", "C"], randomName = false, }) {
22
+ let vertices = [];
23
+ if (randomName)
24
+ vertices = TriangleConstructor.randomName();
25
+ else
26
+ vertices = names;
27
+ const angle = (0, randfloat_1.randfloat)(0, 2 * Math.PI);
28
+ const addAngle = (0, randfloat_1.randfloat)(Math.PI / 4, (3 * Math.PI) / 4);
29
+ //on construit [AC] sur (Ox) de milieu O et de taille 2*xRand
30
+ //puis [AB] sur (Ox) qu'on rotate
31
+ const xRand = (0, randfloat_1.randfloat)(5, 8, 1);
32
+ const xRand2 = (0, randfloat_1.randfloat)(-5, 5, 1);
33
+ const origin = new point_1.Point("O", (0).toTree(), (0).toTree());
34
+ const startA = new point_1.Point(vertices[0], (-xRand).toTree(), (0).toTree());
35
+ const A = startA.rotate(angle, origin);
36
+ const C = new point_1.Point(vertices[2], xRand.toTree(), (0).toTree()).rotate(angle, origin);
37
+ const B = new point_1.Point(vertices[1], (-xRand + xRand2).toTree(), (0).toTree()).rotate(angle + addAngle, startA);
38
+ return new Triangle([A, B, C], {
39
+ sidesLengths: [
40
+ (0, round_1.round)(B.distanceTo(C), 1).toTree(),
41
+ (0, round_1.round)(A.distanceTo(C), 1).toTree(),
42
+ (0, round_1.round)(A.distanceTo(B), 1).toTree(),
43
+ ],
44
+ });
55
45
  }
56
46
  static randomName() {
57
47
  const startVertix = (0, randomLetter_1.randomLetter)(true, ["Y", "Z"]);
@@ -64,169 +54,152 @@ class TriangleConstructor {
64
54
  }
65
55
  exports.TriangleConstructor = TriangleConstructor;
66
56
  class Triangle {
67
- constructor(vertexA, vertexB, vertexC) {
68
- this.vertexA = vertexA;
69
- this.vertexB = vertexB;
70
- this.vertexC = vertexC;
71
- }
72
- getSegments() {
73
- return [
74
- this.getSideASegment(),
75
- this.getSideBSegment(),
76
- this.getSideCSegment(),
57
+ constructor(points, props) {
58
+ if (points.length !== 3)
59
+ throw new Error("Triangle must have 3 points");
60
+ this.props = props;
61
+ this.name = points.map((p) => p.name).join("");
62
+ this.points = points;
63
+ this.angles = [
64
+ new angle_1.Angle((0, rotation_1.arrayRotation)(points, 2), {
65
+ radianValueNode: props?.anglesRadianValues?.[0],
66
+ degreeValueNode: props?.anglesDegreeValues?.[0],
67
+ }),
68
+ new angle_1.Angle(points, {
69
+ radianValueNode: props?.anglesRadianValues?.[1],
70
+ degreeValueNode: props?.anglesDegreeValues?.[1],
71
+ }),
72
+ new angle_1.Angle((0, rotation_1.arrayRotation)(points, 1), {
73
+ radianValueNode: props?.anglesRadianValues?.[2],
74
+ degreeValueNode: props?.anglesDegreeValues?.[2],
75
+ }),
76
+ ];
77
+ this.sides = [
78
+ new segment_1.Segment(points[1], points[2], {
79
+ lengthNode: props?.sidesLengths?.[0],
80
+ }),
81
+ new segment_1.Segment(points[0], points[2], {
82
+ lengthNode: props?.sidesLengths?.[1],
83
+ }),
84
+ new segment_1.Segment(points[0], points[1], {
85
+ lengthNode: props?.sidesLengths?.[2],
86
+ }),
87
+ ];
88
+ this.commands = [
89
+ ...points.flatMap((p) => p.toGGBCommand({
90
+ isFixed: true,
91
+ showLabel: true,
92
+ })),
93
+ ...this.sides.flatMap((s) => s.toGGBCommands(false)),
77
94
  ];
78
- }
79
- getSideASegment() {
80
- return new segment_1.Segment(this.vertexB, this.vertexC);
81
- }
82
- getSideBSegment() {
83
- return new segment_1.Segment(this.vertexA, this.vertexC);
84
- }
85
- getSideCSegment() {
86
- return new segment_1.Segment(this.vertexA, this.vertexB);
87
95
  }
88
96
  toIdentifiers() {
89
97
  return {
90
- vertexA: this.vertexA.toIdentifiers(),
91
- vertexB: this.vertexB.toIdentifiers(),
92
- vertexC: this.vertexC.toIdentifiers(),
98
+ points: this.points.map((point) => point.toIdentifiers()),
99
+ props: {
100
+ anglesRadianValues: this.props?.anglesRadianValues?.map((n) => n.toIdentifiers()),
101
+ anglesDegreeValues: this.props?.anglesDegreeValues?.map((n) => n.toIdentifiers()),
102
+ sidesLengths: this.props?.sidesLengths?.map((n) => n?.toIdentifiers()),
103
+ },
93
104
  };
94
105
  }
95
- getSideAnumber() {
96
- return Math.hypot(this.vertexC.getXnumber() - this.vertexB.getXnumber(), this.vertexC.getYnumber() - this.vertexB.getYnumber());
97
- }
98
- getSideBnumber() {
99
- return Math.hypot(this.vertexA.getXnumber() - this.vertexC.getXnumber(), this.vertexA.getYnumber() - this.vertexC.getYnumber());
100
- }
101
- getSideCnumber() {
102
- return this.vertexA.distanceTo(this.vertexB);
103
- }
104
- getTriangleName() {
105
- return this.vertexA.name + this.vertexB.name + this.vertexC.name;
106
- }
107
- getSideAnode() {
108
- return new sqrtNode_1.SqrtNode(new addNode_1.AddNode(new powerNode_1.PowerNode(new substractNode_1.SubstractNode(this.vertexC.x, this.vertexB.x), new numberNode_1.NumberNode(2)), new powerNode_1.PowerNode(new substractNode_1.SubstractNode(this.vertexC.y, this.vertexB.y), new numberNode_1.NumberNode(2))));
109
- }
110
- getSideBnode() {
111
- return new sqrtNode_1.SqrtNode(new addNode_1.AddNode(new powerNode_1.PowerNode(new substractNode_1.SubstractNode(this.vertexC.x, this.vertexA.x), new numberNode_1.NumberNode(2)), new powerNode_1.PowerNode(new substractNode_1.SubstractNode(this.vertexC.y, this.vertexA.y), new numberNode_1.NumberNode(2))));
112
- }
113
- getSideCnode() {
114
- return new sqrtNode_1.SqrtNode(new addNode_1.AddNode(new powerNode_1.PowerNode(new substractNode_1.SubstractNode(this.vertexA.x, this.vertexB.x), new numberNode_1.NumberNode(2)), new powerNode_1.PowerNode(new substractNode_1.SubstractNode(this.vertexC.y, this.vertexB.y), new numberNode_1.NumberNode(2))));
115
- }
116
- getAngleA() {
117
- return Math.acos((this.getSideBnumber() ** 2 +
118
- this.getSideCnumber() ** 2 -
119
- this.getSideAnumber() ** 2) /
120
- (2 * this.getSideBnumber() * this.getSideCnumber()));
121
- }
122
- getAngleB() {
123
- return Math.acos((this.getSideAnumber() ** 2 +
124
- this.getSideCnumber() ** 2 -
125
- this.getSideBnumber() ** 2) /
126
- (2 * this.getSideAnumber() * this.getSideCnumber()));
127
- }
128
- getAngleC() {
129
- return Math.acos((this.getSideAnumber() ** 2 +
130
- this.getSideBnumber() ** 2 -
131
- this.getSideCnumber() ** 2) /
132
- (2 * this.getSideAnumber() * this.getSideBnumber()));
133
- }
106
+ /************* ✨ Codeium Command ⭐ *************/
107
+ /**
108
+ * Returns the perimeter of the triangle.
109
+ * @returns {number} the perimeter of the triangle.
110
+ */
111
+ /****** fbb7c5d7-3919-4ef2-b5ba-db0d6770666d *******/
134
112
  getPerimeter() {
135
- return (this.getSideAnumber() + this.getSideBnumber() + this.getSideCnumber());
113
+ return this.sides.reduce((acc, curr) => acc + curr.getLength(), 0);
136
114
  }
137
115
  getArea() {
138
116
  const s = this.getPerimeter() / 2;
139
- return Math.sqrt(s *
140
- (s - this.getSideAnumber()) *
141
- (s - this.getSideBnumber()) *
142
- (s - this.getSideCnumber()));
117
+ const lengths = this.sides.map((s) => s.getLength());
118
+ return (0, round_1.round)(Math.sqrt(s * (s - lengths[0]) * (s - lengths[1]) * (s - lengths[2])), 6);
143
119
  }
144
120
  isRight() {
145
- if (Math.abs(Math.cos(this.getAngleA())) < 0.001)
146
- return true;
147
- if (Math.abs(Math.cos(this.getAngleB())) < 0.001)
148
- return true;
149
- if (Math.abs(Math.cos(this.getAngleC())) < 0.001)
150
- return true;
151
- return false;
121
+ return this.angles.some((a) => a.isRight());
152
122
  }
153
123
  isEquilateral() {
154
- return (this.getSideAnumber() === this.getSideBnumber() &&
155
- this.getSideAnumber() === this.getSideCnumber());
124
+ const lengths = this.sides.map((s) => s.getLength());
125
+ return lengths[0] === lengths[1] && lengths[1] === lengths[2];
156
126
  }
157
127
  isIsosceles() {
158
- return (this.getSideAnumber() === this.getSideBnumber() ||
159
- this.getSideAnumber() === this.getSideCnumber() ||
160
- this.getSideBnumber() === this.getSideCnumber());
128
+ const lengths = this.sides.map((s) => s.getLength());
129
+ return (lengths[0] === lengths[1] ||
130
+ lengths[1] === lengths[2] ||
131
+ lengths[0] === lengths[2]);
161
132
  }
162
133
  isScalene() {
163
- return (this.getSideAnumber() !== this.getSideBnumber() &&
164
- this.getSideBnumber() !== this.getSideCnumber() &&
165
- this.getSideCnumber() !== this.getSideAnumber());
166
- }
167
- getRightAngle() {
168
- if (Math.abs(Math.cos(this.getAngleA())) < 0.001)
169
- return this.vertexA.name;
170
- if (Math.abs(Math.cos(this.getAngleB())) < 0.001)
171
- return this.vertexB.name;
172
- if (Math.abs(Math.cos(this.getAngleC())) < 0.001)
173
- return this.vertexC.name;
174
- return "";
175
- }
176
- generateCommands({ highlightedAngle: highlightedAngle, colorHighlightedAngle: colorHighlightedAngle, showLabels: showLabels, setCaptions: setCaptions, highlightedSide: highlightedSide, colorHighlightedSide: colorHighlightedSide, }) {
177
- let commands = [
178
- `${this.vertexA.name} = Point({${this.vertexA.getXnumber()}, ${this.vertexA.getYnumber()}})`,
179
- `${this.vertexB.name} = Point({${this.vertexB.getXnumber()}, ${this.vertexB.getYnumber()}})`,
180
- `${this.vertexC.name} = Point({${this.vertexC.getXnumber()}, ${this.vertexC.getYnumber()}})`,
181
- `ShowLabel(${this.vertexA.name}, true)`,
182
- `ShowLabel(${this.vertexB.name}, true)`,
183
- `ShowLabel(${this.vertexC.name}, true)`,
184
- `${this.getSideCName()} = Segment(${this.vertexA.name}, ${this.vertexB.name})`,
185
- `${this.getSideBName()} = Segment(${this.vertexA.name}, ${this.vertexC.name})`,
186
- `${this.getSideAName()} = Segment(${this.vertexC.name}, ${this.vertexB.name})`,
187
- `ShowLabel(${this.getSideCName()}, false)`,
188
- `ShowLabel(${this.getSideBName()}, false)`,
189
- `ShowLabel(${this.getSideBName()}, false)`,
190
- ];
191
- if (this.isRight())
192
- commands.push(`alpha = Angle(${this.vertexB.name},${this.vertexA.name},${this.vertexC.name}, Line(${this.vertexB.name},${this.vertexA.name}))`, `ShowLabel(alpha, false)`);
193
- const defautColor = "Red";
194
- if (highlightedAngle) {
195
- let temp = [""];
196
- if (highlightedAngle === this.vertexB.name)
197
- temp = [this.vertexA.name, this.vertexB.name, this.vertexC.name];
198
- if (highlightedAngle === this.vertexC.name)
199
- temp = [this.vertexB.name, this.vertexC.name, this.vertexA.name];
200
- if (highlightedAngle === this.vertexA.name)
201
- temp = [this.vertexC.name, this.vertexA.name, this.vertexB.name];
202
- commands.push(`be = Angle(${temp[0]}, ${temp[1]}, ${temp[2]}, Line(${temp[0]}, ${temp[1]}))`, `ShowLabel(be, false)`, `SetColor(be, "${colorHighlightedAngle ?? defautColor}")`);
134
+ const lengths = this.sides.map((s) => s.getLength());
135
+ return (lengths[0] !== lengths[1] &&
136
+ lengths[1] !== lengths[2] &&
137
+ lengths[0] !== lengths[2]);
138
+ }
139
+ highlightSide(index, opts) {
140
+ const side = this.sides[index];
141
+ if (opts.color)
142
+ this.commands.push(`SetColor(${side.ggbName}, "${opts.color}")`);
143
+ if (opts.caption) {
144
+ this.commands.push(...side.getFitCaptionCommands(opts.caption, opts.color));
203
145
  }
204
- if (showLabels)
205
- for (let i = 0; i < showLabels.length; i++) {
206
- commands.push(`ShowLabel(${showLabels[i]}, true)`);
207
- if (setCaptions)
208
- commands.push(`SetCaption(${showLabels[i]}, "${setCaptions[i]}")`);
209
- }
210
- if (highlightedSide)
211
- commands.push(`SetColor(${highlightedSide}, "${colorHighlightedSide ?? defautColor}")`);
212
- return commands;
213
146
  }
214
- generateCoords() {
215
- return [
216
- Math.min(this.vertexA.getXnumber(), this.vertexB.getXnumber(), this.vertexC.getXnumber()) - 1,
217
- Math.max(this.vertexA.getXnumber(), this.vertexB.getXnumber(), this.vertexC.getXnumber()) + 1,
218
- Math.min(this.vertexA.getYnumber(), this.vertexB.getYnumber(), this.vertexC.getYnumber()) - 1,
219
- Math.max(this.vertexA.getYnumber(), this.vertexB.getYnumber(), this.vertexC.getYnumber()) + 1,
220
- ];
147
+ highlightAngle(index, opts) {
148
+ this.commands.push(...this.angles[index].toCommands(opts));
221
149
  }
222
- getSideAName() {
223
- return this.vertexB.name + this.vertexC.name;
150
+ showSidesLength(hiddenSides) {
151
+ this.commands.push(...this.sides
152
+ .filter((s, i) => !hiddenSides?.includes(i))
153
+ .flatMap((s) => s.getFitCaptionCommands()));
224
154
  }
225
- getSideBName() {
226
- return this.vertexC.name + this.vertexA.name;
155
+ getHeight(summitIndex, opts) {
156
+ const base = line_1.LineConstructor.fromSegment(this.sides[summitIndex]);
157
+ const perp = base.getPerpendicular(this.points[summitIndex]);
158
+ const foot = perp.intersect(base, opts?.footName);
159
+ while (this.name.includes(foot.name)) {
160
+ foot.name = (0, randomLetter_1.randomLetter)(true);
161
+ }
162
+ const segmentHeight = new segment_1.Segment(this.points[summitIndex], foot);
163
+ return segmentHeight;
164
+ }
165
+ drawHeight(summitIndex, opts) {
166
+ const height = this.getHeight(summitIndex, opts);
167
+ const foot = height.pointB;
168
+ const angle = new angle_1.Angle([
169
+ this.points[summitIndex],
170
+ foot,
171
+ this.points[(summitIndex + 1) % 3],
172
+ ]);
173
+ this.commands.push(...foot.toGGBCommand(), ...height.toGGBCommands(false, { style: 2 }), ...angle.toCommands());
174
+ if (!this.sides[summitIndex].includes(foot)) {
175
+ const distancesToSideSummits = [
176
+ this.sides[summitIndex].pointA,
177
+ this.sides[summitIndex].pointB,
178
+ ].map((p) => p.distanceTo(foot));
179
+ const closestPoint = distancesToSideSummits[0] < distancesToSideSummits[1]
180
+ ? this.sides[summitIndex].pointA
181
+ : this.sides[summitIndex].pointB;
182
+ const prolongement = new segment_1.Segment(closestPoint, foot);
183
+ this.commands.push(...prolongement.toGGBCommands(false, { style: 2 }));
184
+ }
227
185
  }
228
- getSideCName() {
229
- return this.vertexA.name + this.vertexB.name;
186
+ generateCoords() {
187
+ const coords = this.points.map((p) => [p.x.evaluate(), p.y.evaluate()]);
188
+ const [x1, y1, x2, y2, x3, y3] = coords.flatMap((p) => p);
189
+ const [xMin, xMax, yMin, yMax] = [
190
+ Math.min(x1, x2, x3),
191
+ Math.max(x1, x2, x3),
192
+ Math.min(y1, y2, y3),
193
+ Math.max(y1, y2, y3),
194
+ ];
195
+ const xDelta = Math.abs(xMax - xMin);
196
+ const yDelta = Math.abs(yMax - yMin);
197
+ return [
198
+ xMin - 0.1 * xDelta,
199
+ xMax + 0.1 * xDelta,
200
+ yMin - 0.1 * yDelta,
201
+ yMax + 0.1 * yDelta,
202
+ ];
230
203
  }
231
204
  }
232
205
  exports.Triangle = Triangle;
@@ -1,5 +1,4 @@
1
1
  import { AlgebraicNode } from "../../tree/nodes/algebraicNode";
2
- import { Node } from "../../tree/nodes/node";
3
2
  import { Point } from "./point";
4
3
  export declare abstract class VectorConstructor {
5
4
  static fromPoints(origin: Point, end: Point): Vector;
@@ -17,12 +16,13 @@ export declare class Vector {
17
16
  isColinear(v: Vector): boolean;
18
17
  determinant(v: Vector): AlgebraicNode;
19
18
  times(k: AlgebraicNode, name?: string): Vector;
20
- scalarProduct(v: Vector): Node;
19
+ scalarProduct(v: Vector): AlgebraicNode;
21
20
  add(v: Vector): Vector;
22
21
  getNorm(): AlgebraicNode;
23
22
  getEndPoint(startPoint: Point, name?: string): Point;
24
23
  equals(v: Vector): boolean;
25
24
  getXAsNumber(): number;
26
25
  getYAsNumber(): number;
26
+ getOrthogonal(): Vector;
27
27
  }
28
28
  //# sourceMappingURL=vector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../../src/math/geometry/vector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EAAE,IAAI,EAAY,MAAM,uBAAuB,CAAC;AAavD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,8BAAsB,iBAAiB;IACrC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,MAAM;IAOpD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,UAAO,GAAG,MAAM;CAOtD;AAED,qBAAa,MAAM;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,aAAa,CAAC;IACjB,CAAC,EAAE,aAAa,CAAC;gBACL,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa;IAO5D,KAAK,IAAI,MAAM;IAIf,eAAe,IAAI,MAAM;IAMzB,iBAAiB,IAAI,MAAM;IAM3B,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAI9B,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa;IAIrC,KAAK,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM;IAOrC,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAc9B,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAYtB,OAAO,IAAI,aAAa;IAUxB,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM;IAO5C,MAAM,CAAC,CAAC,EAAE,MAAM;IAIhB,YAAY;IAMZ,YAAY;CAMb"}
1
+ {"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../../src/math/geometry/vector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAgB/D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,8BAAsB,iBAAiB;IACrC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,MAAM;IAOpD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,UAAO,GAAG,MAAM;CAOtD;AAED,qBAAa,MAAM;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,aAAa,CAAC;IACjB,CAAC,EAAE,aAAa,CAAC;gBACL,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa;IAO5D,KAAK,IAAI,MAAM;IAIf,eAAe,IAAI,MAAM;IAMzB,iBAAiB,IAAI,MAAM;IAM3B,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAK9B,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa;IAIrC,KAAK,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM;IAOrC,aAAa,CAAC,CAAC,EAAE,MAAM;IAgBvB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAYtB,OAAO,IAAI,aAAa;IAUxB,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM;IAO5C,MAAM,CAAC,CAAC,EAAE,MAAM;IAIhB,YAAY;IAMZ,YAAY;IAOZ,aAAa;CAGd"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Vector = exports.VectorConstructor = void 0;
4
+ const oppositeNode_1 = require("../../tree/nodes/functions/oppositeNode");
4
5
  const sqrtNode_1 = require("../../tree/nodes/functions/sqrtNode");
5
- const node_1 = require("../../tree/nodes/node");
6
6
  const numberNode_1 = require("../../tree/nodes/numbers/numberNode");
7
7
  const addNode_1 = require("../../tree/nodes/operators/addNode");
8
8
  const multiplyNode_1 = require("../../tree/nodes/operators/multiplyNode");
@@ -41,7 +41,8 @@ class Vector {
41
41
  }
42
42
  isColinear(v) {
43
43
  const det = this.determinant(v);
44
- return det.evaluate({}) === 0;
44
+ const ev = det.evaluate();
45
+ return Math.abs(ev) < 0.000001;
45
46
  }
46
47
  determinant(v) {
47
48
  return (0, substractNode_1.substract)((0, multiplyNode_1.multiply)(this.x, v.y), (0, multiplyNode_1.multiply)(this.y, v.x)).simplify();
@@ -50,13 +51,18 @@ class Vector {
50
51
  return new Vector(name ?? "v", new multiplyNode_1.MultiplyNode(this.x, k).simplify(), new multiplyNode_1.MultiplyNode(this.y, k).simplify());
51
52
  }
52
53
  scalarProduct(v) {
53
- if ([this.x.type, this.y.type, v.x.type, v.y.type].some((el) => el !== node_1.NodeType.number))
54
- throw Error("general determinant not implemented");
55
- const xValue = this.x.value;
56
- const yValue = this.y.value;
57
- const vxValue = v.x.value;
58
- const vyValue = v.y.value;
59
- return new numberNode_1.NumberNode(xValue * vxValue + yValue * vyValue);
54
+ // if (
55
+ // [this.x.type, this.y.type, v.x.type, v.y.type].some(
56
+ // (el) => el !== NodeType.number,
57
+ // )
58
+ // )
59
+ // throw Error("general determinant not implemented");
60
+ // const xValue = (this.x as NumberNode).value;
61
+ // const yValue = (this.y as NumberNode).value;
62
+ // const vxValue = (v.x as NumberNode).value;
63
+ // const vyValue = (v.y as NumberNode).value;
64
+ // return new NumberNode(xValue * vxValue + yValue * vyValue);
65
+ return (0, addNode_1.add)((0, multiplyNode_1.multiply)(this.x, v.x), (0, multiplyNode_1.multiply)(this.y, v.y)).simplify();
60
66
  }
61
67
  add(v) {
62
68
  const x = v.x;
@@ -88,5 +94,8 @@ class Vector {
88
94
  }
89
95
  return this.y.value;
90
96
  }
97
+ getOrthogonal() {
98
+ return new Vector(this.name, this.y, (0, oppositeNode_1.opposite)(this.x).simplify());
99
+ }
91
100
  }
92
101
  exports.Vector = Vector;
@@ -18,5 +18,10 @@ export declare abstract class NombreConstructor {
18
18
  types?: NumberType[];
19
19
  excludes?: Nombre[];
20
20
  }): Nombre;
21
+ static manyRandom(n: number, { types, excludes, allDifferent, }?: {
22
+ types?: NumberType[];
23
+ excludes?: Nombre[];
24
+ allDifferent?: boolean;
25
+ }): Nombre[];
21
26
  }
22
27
  //# sourceMappingURL=nombre.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nombre.d.ts","sourceRoot":"","sources":["../../../src/math/numbers/nombre.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAQ,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAQ1D,oBAAY,UAAU;IACpB,OAAO,IAAA;IACP,OAAO,IAAA;IACP,QAAQ,IAAA;IACR,IAAI,IAAA;CACL;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,aAAa,CAAC;IAC9C,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;CAChC;AAED,8BAAsB,iBAAiB;IACrC,MAAM,CAAC,MAAM,CAAC,EACZ,KAAK,EACL,QAAQ,GACT,GAAE;QACD,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KAChB;CAiCP"}
1
+ {"version":3,"file":"nombre.d.ts","sourceRoot":"","sources":["../../../src/math/numbers/nombre.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAQ,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAQ1D,oBAAY,UAAU;IACpB,OAAO,IAAA;IACP,OAAO,IAAA;IACP,QAAQ,IAAA;IACR,IAAI,IAAA;CACL;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,aAAa,CAAC;IAC9C,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;CAChC;AAED,8BAAsB,iBAAiB;IACrC,MAAM,CAAC,MAAM,CAAC,EACZ,KAAK,EACL,QAAQ,GACT,GAAE;QACD,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KAChB;IAiCN,MAAM,CAAC,UAAU,CACf,CAAC,EAAE,MAAM,EACT,EACE,KAAK,EACL,QAAQ,EACR,YAAoB,GACrB,GAAE;QACD,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,YAAY,CAAC,EAAE,OAAO,CAAC;KACnB;CAaT"}
@@ -48,5 +48,17 @@ class NombreConstructor {
48
48
  }
49
49
  return res;
50
50
  }
51
+ static manyRandom(n, { types, excludes, allDifferent = false, } = {}) {
52
+ const res = [];
53
+ res.push(NombreConstructor.random({ types, excludes }));
54
+ for (let i = 0; i < n - 1; i++) {
55
+ let b;
56
+ do {
57
+ b = NombreConstructor.random({ types, excludes });
58
+ } while (allDifferent && res.some((el) => el.equals(b)));
59
+ res.push(b);
60
+ }
61
+ return res;
62
+ }
51
63
  }
52
64
  exports.NombreConstructor = NombreConstructor;
@@ -28,7 +28,7 @@ export declare class Rational implements Nombre {
28
28
  reverse(shouldSimplify: boolean): Nombre;
29
29
  divide(nb: Nombre): Nombre;
30
30
  opposite(): Rational;
31
- toTree(opts?: NodeOptions): OppositeNode | FractionNode;
31
+ toTree(opts?: NodeOptions): FractionNode | OppositeNode<FractionNode>;
32
32
  isIrreductible(): boolean;
33
33
  simplify(): Integer | Rational;
34
34
  }
@@ -13,6 +13,6 @@ export declare class ExtendedRingElement {
13
13
  b: number;
14
14
  algebraicElement: Nombre;
15
15
  constructor(a: number, b: number, algebraicElement: Nombre);
16
- toTree(): import("../../../tree/nodes/algebraicNode").AlgebraicNode | NumberNode | SubstractNode | AddNode | OppositeNode | MultiplyNode;
16
+ toTree(): import("../../../tree/nodes/algebraicNode").AlgebraicNode | NumberNode | SubstractNode | AddNode | MultiplyNode | OppositeNode<import("../../../tree/nodes/algebraicNode").AlgebraicNode>;
17
17
  }
18
18
  //# sourceMappingURL=extendedRingElement.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"real.d.ts","sourceRoot":"","sources":["../../../../src/math/numbers/reals/real.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAS/D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/C,8BAAsB,eAAe;IACnC,MAAM,CAAC,MAAM;CAUd;AACD,qBAAa,IAAK,YAAW,MAAM;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;gBACL,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAKtC,MAAM,CAAC,CAAC,EAAE,MAAM;IAGhB,MAAM,IAAI,aAAa;CAIxB;AAED,8BAAsB,qBAAqB;IACzC;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,EACxB,kBAA0B,EAC1B,SAAc,GACf;;;KAAA,GAAG,UAAU;IASd,MAAM,CAAC,kBAAkB,CAAC,GAAG,GAAE,MAAW,GAAG,UAAU;CAIxD;AAED,qBAAa,UAAW,SAAQ,IAAI;IAClC,OAAO,EAAE,MAAM,CAAC;gBACJ,OAAO,EAAE,MAAM;IAK3B,cAAc;IAMd,mBAAmB,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;IAkBvC,sDAAsD;IACtD,aAAa,IAAI,MAAM;IAMvB,QAAQ,IAAI,MAAM;IAyBlB,KAAK,IAAI,MAAM;IAIf,MAAM;CAGP"}
1
+ {"version":3,"file":"real.d.ts","sourceRoot":"","sources":["../../../../src/math/numbers/reals/real.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAU/D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/C,8BAAsB,eAAe;IACnC,MAAM,CAAC,MAAM;CAUd;AACD,qBAAa,IAAK,YAAW,MAAM;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;gBACL,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAKtC,MAAM,CAAC,CAAC,EAAE,MAAM;IAGhB,MAAM,IAAI,aAAa;CAIxB;AAED,8BAAsB,qBAAqB;IACzC;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,EACxB,kBAA0B,EAC1B,SAAc,GACf;;;KAAA,GAAG,UAAU;IASd,MAAM,CAAC,kBAAkB,CAAC,GAAG,GAAE,MAAW,GAAG,UAAU;CAIxD;AAED,qBAAa,UAAW,SAAQ,IAAI;IAClC,OAAO,EAAE,MAAM,CAAC;gBACJ,OAAO,EAAE,MAAM;IAK3B,cAAc;IAMd,mBAAmB,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;IAkBvC,sDAAsD;IACtD,aAAa,IAAI,MAAM;IAMvB,QAAQ,IAAI,MAAM;IA4BlB,KAAK,IAAI,MAAM;IAIf,MAAM;CAGP"}
@@ -10,6 +10,7 @@ const piNode_1 = require("../../../tree/nodes/numbers/piNode");
10
10
  const multiplyNode_1 = require("../../../tree/nodes/operators/multiplyNode");
11
11
  const diceFlip_1 = require("../../../utils/alea/diceFlip");
12
12
  const random_1 = require("../../../utils/alea/random");
13
+ const decimal_1 = require("../decimals/decimal");
13
14
  const integer_1 = require("../integer/integer");
14
15
  const primes_1 = require("../integer/primes");
15
16
  const nombre_1 = require("../nombre");
@@ -101,6 +102,8 @@ class SquareRoot extends Real {
101
102
  return new integer_1.Integer(0);
102
103
  if (this.operand === 1)
103
104
  return new integer_1.Integer(1);
105
+ if (Math.floor(this.operand) !== this.operand)
106
+ return new decimal_1.Decimal(Math.sqrt(this.operand));
104
107
  const [outsideSqrt, insideSqrt] = this.getSimplifiedCoeffs();
105
108
  const simplified = insideSqrt !== 1
106
109
  ? new Real(outsideSqrt * Math.sqrt(insideSqrt), `${outsideSqrt === 1 ? "" : `${outsideSqrt}`}\\sqrt{${insideSqrt}}`)
@@ -1,10 +1,23 @@
1
1
  import { AlgebraicNode } from "../../tree/nodes/algebraicNode";
2
+ import { NodeIdentifiers } from "../../tree/nodes/nodeConstructor";
3
+ export declare abstract class GeneralAffineConstructor {
4
+ static fromIdentifiers(identifiers: GeneralAffineIdentifiers): GeneralAffine;
5
+ }
6
+ export type GeneralAffineIdentifiers = {
7
+ id: "affine";
8
+ a: NodeIdentifiers;
9
+ b: NodeIdentifiers;
10
+ variable?: string;
11
+ };
2
12
  export declare class GeneralAffine {
3
13
  a: AlgebraicNode;
4
14
  b: AlgebraicNode;
5
15
  variable: string;
6
16
  constructor(a: number | AlgebraicNode, b: number | AlgebraicNode, variable?: string);
17
+ toIdentifiers(): GeneralAffineIdentifiers;
7
18
  getRoot(): AlgebraicNode;
8
19
  toTree(): import("../../tree/nodes/operators/addNode").AddNode | import("../../tree/nodes/operators/multiplyNode").MultiplyNode;
20
+ xIntersect(aff: GeneralAffine): AlgebraicNode | undefined;
21
+ opposite(): GeneralAffine;
9
22
  }
10
23
  //# sourceMappingURL=generalAffine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generalAffine.d.ts","sourceRoot":"","sources":["../../../src/math/polynomials/generalAffine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAO/D,qBAAa,aAAa;IACxB,CAAC,EAAE,aAAa,CAAC;IACjB,CAAC,EAAE,aAAa,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;gBAGf,CAAC,EAAE,MAAM,GAAG,aAAa,EACzB,CAAC,EAAE,MAAM,GAAG,aAAa,EACzB,QAAQ,GAAE,MAAY;IAWxB,OAAO,IAAI,aAAa;IAIxB,MAAM;CAKP"}
1
+ {"version":3,"file":"generalAffine.d.ts","sourceRoot":"","sources":["../../../src/math/polynomials/generalAffine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAG/D,OAAO,EAEL,eAAe,EAEhB,MAAM,kCAAkC,CAAC;AAQ1C,8BAAsB,wBAAwB;IAC5C,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,wBAAwB;CAM7D;AACD,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,EAAE,QAAQ,CAAC;IACb,CAAC,EAAE,eAAe,CAAC;IACnB,CAAC,EAAE,eAAe,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AACF,qBAAa,aAAa;IACxB,CAAC,EAAE,aAAa,CAAC;IACjB,CAAC,EAAE,aAAa,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;gBAGf,CAAC,EAAE,MAAM,GAAG,aAAa,EACzB,CAAC,EAAE,MAAM,GAAG,aAAa,EACzB,QAAQ,GAAE,MAAY;IAUxB,aAAa,IAAI,wBAAwB;IAQzC,OAAO,IAAI,aAAa;IAIxB,MAAM;IAMN,UAAU,CAAC,GAAG,EAAE,aAAa;IAI7B,QAAQ;CAMT"}