math-exercises 3.0.53 → 3.0.55
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.
- package/lib/exercises/math/calcul/mentalCaluls/mentalAddAndSub.d.ts.map +1 -1
- package/lib/exercises/math/calcul/mentalCaluls/mentalAddAndSub.js +3 -5
- package/lib/exercises/math/calculLitteral/equation/binomialsTrinomialsProposedSolutions.d.ts +8 -3
- package/lib/exercises/math/calculLitteral/equation/binomialsTrinomialsProposedSolutions.d.ts.map +1 -1
- package/lib/exercises/math/calculLitteral/equation/binomialsTrinomialsProposedSolutions.js +53 -28
- package/lib/exercises/math/calculLitteral/equation/multiplicationEquation.d.ts.map +1 -1
- package/lib/exercises/math/calculLitteral/equation/multiplicationEquation.js +3 -0
- package/lib/exercises/math/calculLitteral/systems/basicNiceValuesSystemResolution.d.ts +2 -2
- package/lib/exercises/math/calculLitteral/systems/basicNiceValuesSystemResolution.d.ts.map +1 -1
- package/lib/exercises/math/calculLitteral/systems/basicNiceValuesSystemResolution.js +52 -25
- package/lib/exercises/math/calculLitteral/systems/basicSystemResolution.d.ts +2 -2
- package/lib/exercises/math/calculLitteral/systems/basicSystemResolution.d.ts.map +1 -1
- package/lib/exercises/math/calculLitteral/systems/basicSystemResolution.js +50 -33
- package/lib/exercises/math/calculLitteral/systems/verifySystemSolution.d.ts +2 -1
- package/lib/exercises/math/calculLitteral/systems/verifySystemSolution.d.ts.map +1 -1
- package/lib/exercises/math/calculLitteral/systems/verifySystemSolution.js +37 -17
- package/lib/exercises/math/geometry/angles/recognizeAngleType.d.ts.map +1 -1
- package/lib/exercises/math/geometry/angles/recognizeAngleType.js +33 -12
- package/lib/exercises/math/geometry/areas/circleArea.d.ts.map +1 -1
- package/lib/exercises/math/geometry/areas/circleArea.js +45 -2
- package/lib/exercises/math/geometry/areas/squareArea.d.ts.map +1 -1
- package/lib/exercises/math/geometry/areas/squareArea.js +40 -7
- package/lib/exercises/math/geometry/areas/triangleArea.d.ts.map +1 -1
- package/lib/exercises/math/geometry/cartesian/cartesianEquationOfLine.d.ts.map +1 -1
- package/lib/exercises/math/geometry/cartesian/cartesianEquationOfLine.js +52 -7
- package/lib/exercises/math/geometry/cartesian/cartesianFromTwoPoints.js +1 -1
- package/lib/exercises/math/geometry/cartesian/cartesianFromVectorAndPoint.js +1 -1
- package/lib/exercises/math/geometry/cartesian/directionVectorEquation.d.ts.map +1 -1
- package/lib/exercises/math/geometry/cartesian/directionVectorEquation.js +55 -11
- package/lib/exercises/math/geometry/lines/cartesianEquationToReduced.d.ts.map +1 -1
- package/lib/exercises/math/geometry/lines/cartesianEquationToReduced.js +20 -1
- package/lib/exercises/math/geometry/lines/cartesianEquationsIntersection.d.ts +9 -0
- package/lib/exercises/math/geometry/lines/cartesianEquationsIntersection.d.ts.map +1 -0
- package/lib/exercises/math/geometry/lines/cartesianEquationsIntersection.js +115 -0
- package/lib/exercises/math/geometry/lines/drawLineFromCartesianEquation.d.ts +3 -2
- package/lib/exercises/math/geometry/lines/drawLineFromCartesianEquation.d.ts.map +1 -1
- package/lib/exercises/math/geometry/lines/drawLineFromCartesianEquation.js +36 -27
- package/lib/exercises/math/geometry/lines/drawLineFromPointAndVector.d.ts +10 -0
- package/lib/exercises/math/geometry/lines/drawLineFromPointAndVector.d.ts.map +1 -0
- package/lib/exercises/math/geometry/lines/drawLineFromPointAndVector.js +123 -0
- package/lib/exercises/math/geometry/lines/findParallelLineFromCartesianEquation.d.ts +12 -0
- package/lib/exercises/math/geometry/lines/findParallelLineFromCartesianEquation.d.ts.map +1 -0
- package/lib/exercises/math/geometry/lines/findParallelLineFromCartesianEquation.js +130 -0
- package/lib/exercises/math/geometry/lines/findParallelLineFromReductEquation.d.ts +10 -0
- package/lib/exercises/math/geometry/lines/findParallelLineFromReductEquation.d.ts.map +1 -0
- package/lib/exercises/math/geometry/lines/findParallelLineFromReductEquation.js +109 -0
- package/lib/exercises/math/geometry/lines/index.d.ts +5 -0
- package/lib/exercises/math/geometry/lines/index.d.ts.map +1 -1
- package/lib/exercises/math/geometry/lines/index.js +5 -1
- package/lib/exercises/math/geometry/perimeters/circleCircumference.d.ts.map +1 -1
- package/lib/exercises/math/geometry/perimeters/circleCircumference.js +58 -9
- package/lib/exercises/math/geometry/perimeters/rectanglePerimeter.d.ts.map +1 -1
- package/lib/exercises/math/geometry/perimeters/rectanglePerimeter.js +39 -6
- package/lib/exercises/math/geometry/perimeters/squarePerimeter.d.ts.map +1 -1
- package/lib/exercises/math/geometry/perimeters/squarePerimeter.js +40 -5
- package/lib/exercises/math/geometry/perimeters/trianglePerimeter.d.ts.map +1 -1
- package/lib/exercises/math/geometry/perimeters/trianglePerimeter.js +34 -7
- package/lib/exercises/math/geometry/pythagore/pythagore.d.ts.map +1 -1
- package/lib/exercises/math/geometry/pythagore/pythagore.js +51 -15
- package/lib/exercises/math/geometry/pythagore/pythagoreCalcul.d.ts.map +1 -1
- package/lib/exercises/math/geometry/pythagore/pythagoreCalcul.js +109 -19
- package/lib/exercises/math/geometry/thales/thales.d.ts.map +1 -1
- package/lib/exercises/math/geometry/thales/thales.js +36 -5
- package/lib/exercises/math/geometry/triangles/triangleNature.d.ts.map +1 -1
- package/lib/exercises/math/geometry/triangles/triangleNature.js +45 -14
- package/lib/exercises/math/geometry/vectors/colinearity.d.ts +5 -4
- package/lib/exercises/math/geometry/vectors/colinearity.d.ts.map +1 -1
- package/lib/exercises/math/geometry/vectors/colinearity.js +82 -21
- package/lib/exercises/math/geometry/vectors/findCoordForAligment.d.ts +2 -0
- package/lib/exercises/math/geometry/vectors/findCoordForAligment.d.ts.map +1 -0
- package/lib/exercises/math/geometry/vectors/findCoordForAligment.js +92 -0
- package/lib/exercises/math/powers/calculatePower.d.ts.map +1 -1
- package/lib/exercises/math/powers/calculatePower.js +63 -6
- package/lib/exercises/math/powers/powerDefinition.d.ts.map +1 -1
- package/lib/exercises/math/powers/powerDefinition.js +39 -8
- package/lib/exercises/math/powers/powersOfTenToDecimal.d.ts.map +1 -1
- package/lib/exercises/math/powers/powersOfTenToDecimal.js +2 -1
- package/lib/exercises/math/powers/powersPower.d.ts +5 -2
- package/lib/exercises/math/powers/powersPower.d.ts.map +1 -1
- package/lib/exercises/math/powers/powersPower.js +59 -28
- package/lib/exercises/math/trigonometry/calculateCosSinAndTan.d.ts.map +1 -1
- package/lib/exercises/math/trigonometry/calculateCosSinAndTan.js +21 -0
- package/lib/exercises/math/trigonometry/mainRemarkableValues.d.ts.map +1 -1
- package/lib/exercises/math/trigonometry/mainRemarkableValues.js +1 -1
- package/lib/exercises/math/trigonometry/remarkableValues.d.ts.map +1 -1
- package/lib/exercises/math/trigonometry/remarkableValues.js +4 -0
- package/lib/index.d.ts +34 -13
- package/lib/index.d.ts.map +1 -1
- package/lib/math/geometry/angle.d.ts.map +1 -1
- package/lib/math/geometry/angle.js +12 -7
- package/lib/math/geometry/line.d.ts +2 -8
- package/lib/math/geometry/line.d.ts.map +1 -1
- package/lib/math/geometry/line.js +50 -29
- package/lib/math/geometry/point.d.ts +2 -1
- package/lib/math/geometry/point.d.ts.map +1 -1
- package/lib/math/geometry/point.js +3 -0
- package/lib/math/geometry/segment.js +1 -1
- package/lib/math/geometry/triangles/triangle.d.ts.map +1 -1
- package/lib/math/geometry/triangles/triangle.js +11 -11
- package/lib/math/geometry/vector.d.ts +1 -0
- package/lib/math/geometry/vector.d.ts.map +1 -1
- package/lib/math/geometry/vector.js +10 -3
- package/lib/math/systems/generalSystem.d.ts +12 -1
- package/lib/math/systems/generalSystem.d.ts.map +1 -1
- package/lib/math/systems/generalSystem.js +92 -55
- package/lib/math/trigonometry/remarkableValue.d.ts.map +1 -1
- package/lib/math/trigonometry/remarkableValue.js +1 -1
- package/lib/playground.d.ts.map +1 -1
- package/lib/playground.js +1 -15
- package/lib/server.js +1 -1
- package/lib/tree/nodes/algebraicNode.d.ts +0 -1
- package/lib/tree/nodes/algebraicNode.d.ts.map +1 -1
- package/lib/tree/nodes/equations/equalNode.d.ts +1 -1
- package/lib/tree/nodes/equations/equalNode.d.ts.map +1 -1
- package/lib/tree/nodes/equations/equalNode.js +1 -1
- package/lib/tree/nodes/functions/cosNode.d.ts.map +1 -1
- package/lib/tree/nodes/functions/cosNode.js +11 -5
- package/lib/tree/nodes/functions/sinNode.d.ts.map +1 -1
- package/lib/tree/nodes/functions/sinNode.js +11 -5
- package/lib/tree/nodes/functions/tanNode.d.ts.map +1 -1
- package/lib/tree/nodes/functions/tanNode.js +11 -5
- package/lib/tree/nodes/node.d.ts +8 -8
- package/lib/tree/nodes/node.d.ts.map +1 -1
- package/lib/tree/nodes/nodeConstructor.d.ts.map +1 -1
- package/lib/tree/nodes/nodeConstructor.js +1 -1
- package/lib/tree/nodes/operators/fractionNode.js +2 -2
- package/lib/tree/nodes/operators/multiplyNode.js +1 -1
- package/lib/tree/nodes/operators/powerNode.d.ts +4 -4
- package/lib/tree/nodes/operators/powerNode.d.ts.map +1 -1
- package/lib/tree/nodes/operators/powerNode.js +5 -5
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"circleArea.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/areas/circleArea.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"circleArea.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/areas/circleArea.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAaT,MAAM,6BAA6B,CAAC;AAOrC,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAsGF,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,WAAW,CAe5C,CAAC"}
|
|
@@ -17,17 +17,60 @@ const getAnswer = (identifiers) => {
|
|
|
17
17
|
const answerTex = answer + "\\text{cm}^2";
|
|
18
18
|
return answerTex;
|
|
19
19
|
};
|
|
20
|
+
const getHint = (identifiers) => {
|
|
21
|
+
return `La formule de l'aire d'un disque est :
|
|
22
|
+
|
|
23
|
+
$$
|
|
24
|
+
A = \\pi\\times r^2
|
|
25
|
+
$$
|
|
26
|
+
|
|
27
|
+
où $r$ est le rayon du disque.`;
|
|
28
|
+
};
|
|
29
|
+
const getCorrection = (identifiers) => {
|
|
30
|
+
const { coin, radius, diametre } = identifiers;
|
|
31
|
+
const isRadius = coin;
|
|
32
|
+
return `La formule de l'aire d'un disque est :
|
|
33
|
+
|
|
34
|
+
$$
|
|
35
|
+
A = \\pi\\times r^2
|
|
36
|
+
$$
|
|
37
|
+
|
|
38
|
+
où $r$ est le rayon du disque.
|
|
39
|
+
|
|
40
|
+
${isRadius
|
|
41
|
+
? `On remplace donc $r$ par $${radius}$ :
|
|
42
|
+
|
|
43
|
+
$$
|
|
44
|
+
A = \\pi \\times ${radius}^2 \\approx ${getAnswer(identifiers)}
|
|
45
|
+
$$`
|
|
46
|
+
: `Puisque le diamètre est de $${diametre}$ cm, le rayon vaut :
|
|
47
|
+
|
|
48
|
+
$$
|
|
49
|
+
r = \\frac{${diametre}}{2} = ${(diametre / 2).frenchify()} \\ \\text{cm}
|
|
50
|
+
$$
|
|
51
|
+
|
|
52
|
+
L'aire du disque vaut donc :
|
|
53
|
+
|
|
54
|
+
$$
|
|
55
|
+
A = \\pi \\times ${(diametre / 2).frenchify()}^2 \\approx ${getAnswer(identifiers)}
|
|
56
|
+
$$`}`;
|
|
57
|
+
};
|
|
20
58
|
const getCircleArea = () => {
|
|
21
59
|
const radius = randint(1, 13);
|
|
22
60
|
const diametre = randint(1, 21);
|
|
23
61
|
const coin = coinFlip();
|
|
24
62
|
const identifiers = { coin, diametre, radius };
|
|
63
|
+
return getQuestionFromIdentifiers(identifiers);
|
|
64
|
+
};
|
|
65
|
+
const getQuestionFromIdentifiers = (identifiers) => {
|
|
25
66
|
const question = {
|
|
26
67
|
instruction: getInstruction(identifiers),
|
|
27
68
|
answer: getAnswer(identifiers),
|
|
28
69
|
answerFormat: "tex",
|
|
29
70
|
keys: ["cm", "cm2"],
|
|
30
71
|
identifiers,
|
|
72
|
+
hint: getHint(identifiers),
|
|
73
|
+
correction: getCorrection(identifiers),
|
|
31
74
|
};
|
|
32
75
|
return question;
|
|
33
76
|
};
|
|
@@ -47,9 +90,7 @@ export const circleArea = {
|
|
|
47
90
|
id: "circleArea",
|
|
48
91
|
connector: "=",
|
|
49
92
|
label: "Calculer l'aire d'un disque",
|
|
50
|
-
levels: ["4ème", "3ème", "2nde"],
|
|
51
93
|
isSingleStep: false,
|
|
52
|
-
sections: ["Aires", "Géométrie euclidienne"],
|
|
53
94
|
generator: (nb) => getDistinctQuestions(getCircleArea, nb),
|
|
54
95
|
qcmTimer: 60,
|
|
55
96
|
freeTimer: 60,
|
|
@@ -58,4 +99,6 @@ export const circleArea = {
|
|
|
58
99
|
subject: "Mathématiques",
|
|
59
100
|
getInstruction,
|
|
60
101
|
getAnswer,
|
|
102
|
+
getQuestionFromIdentifiers,
|
|
103
|
+
hasHintAndCorrection: true,
|
|
61
104
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"squareArea.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/areas/squareArea.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"squareArea.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/areas/squareArea.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAaT,MAAM,6BAA6B,CAAC;AAMrC,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAqEF,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,WAAW,CAc5C,CAAC"}
|
|
@@ -2,19 +2,52 @@ import { addValidProp, tryToAddWrongProp, } from "../../../../exercises/exercise
|
|
|
2
2
|
import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
|
|
3
3
|
import { randint } from "../../../../math/utils/random/randint.js";
|
|
4
4
|
import { shuffle } from "../../../../utils/alea/shuffle.js";
|
|
5
|
-
const
|
|
6
|
-
const side =
|
|
5
|
+
const getInstruction = (identifiers) => {
|
|
6
|
+
const { side } = identifiers;
|
|
7
|
+
return `Calculer l'aire d'un carré de $${side}$ cm de côté.`;
|
|
8
|
+
};
|
|
9
|
+
const getAnswer = (identifiers) => {
|
|
10
|
+
const { side } = identifiers;
|
|
7
11
|
const answer = side ** 2 + "";
|
|
8
12
|
const answerTex = answer + "\\text{cm}^2";
|
|
13
|
+
return answerTex;
|
|
14
|
+
};
|
|
15
|
+
const getHint = (identifiers) => {
|
|
16
|
+
return `L'aire d'un carré s'obtient en multipliant la longueur d'un côté par elle-même.`;
|
|
17
|
+
};
|
|
18
|
+
const getCorrection = (identifiers) => {
|
|
19
|
+
const { side } = identifiers;
|
|
20
|
+
return `L'aire d'un carré de côté $c$ est :
|
|
21
|
+
|
|
22
|
+
$$
|
|
23
|
+
A = c\\times c
|
|
24
|
+
$$
|
|
25
|
+
|
|
26
|
+
Ici, on a $c = ${side}$ cm.
|
|
27
|
+
|
|
28
|
+
L'aire du carré vaut donc :
|
|
29
|
+
|
|
30
|
+
$$
|
|
31
|
+
A = ${side}\\times${side} = ${getAnswer(identifiers)}
|
|
32
|
+
$$`;
|
|
33
|
+
};
|
|
34
|
+
const getQuestionFromIdentifiers = (identifiers) => {
|
|
9
35
|
const question = {
|
|
10
|
-
instruction:
|
|
11
|
-
answer:
|
|
36
|
+
instruction: getInstruction(identifiers),
|
|
37
|
+
answer: getAnswer(identifiers),
|
|
12
38
|
answerFormat: "tex",
|
|
13
39
|
keys: ["cm", "cm2"],
|
|
14
|
-
identifiers
|
|
40
|
+
identifiers,
|
|
41
|
+
hint: getHint(identifiers),
|
|
42
|
+
correction: getCorrection(identifiers),
|
|
15
43
|
};
|
|
16
44
|
return question;
|
|
17
45
|
};
|
|
46
|
+
const getSquareArea = () => {
|
|
47
|
+
const side = randint(1, 21);
|
|
48
|
+
const identifiers = { side };
|
|
49
|
+
return getQuestionFromIdentifiers(identifiers);
|
|
50
|
+
};
|
|
18
51
|
const getPropositions = (n, { answer }) => {
|
|
19
52
|
const propositions = [];
|
|
20
53
|
addValidProp(propositions, answer);
|
|
@@ -31,9 +64,7 @@ export const squareArea = {
|
|
|
31
64
|
id: "squareArea",
|
|
32
65
|
connector: "=",
|
|
33
66
|
label: "Calculer l'aire d'un carré",
|
|
34
|
-
levels: ["4ème", "3ème", "2nde"],
|
|
35
67
|
isSingleStep: false,
|
|
36
|
-
sections: ["Aires", "Géométrie euclidienne"],
|
|
37
68
|
generator: (nb) => getDistinctQuestions(getSquareArea, nb, 20),
|
|
38
69
|
qcmTimer: 60,
|
|
39
70
|
freeTimer: 60,
|
|
@@ -41,4 +72,6 @@ export const squareArea = {
|
|
|
41
72
|
getPropositions,
|
|
42
73
|
isAnswerValid,
|
|
43
74
|
subject: "Mathématiques",
|
|
75
|
+
getQuestionFromIdentifiers,
|
|
76
|
+
hasHintAndCorrection: true,
|
|
44
77
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triangleArea.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/areas/triangleArea.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAWT,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAGL,mBAAmB,EACpB,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"triangleArea.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/areas/triangleArea.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAWT,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAGL,mBAAmB,EACpB,MAAM,2CAA2C,CAAC;AAOnD,OAAO,EAGL,kBAAkB,EACnB,MAAM,gCAAgC,CAAC;AAKxC,KAAK,WAAW,GAAG;IACjB,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AA4GF,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,WAAW,CAiB9C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cartesianEquationOfLine.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/cartesian/cartesianEquationOfLine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"cartesianEquationOfLine.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/cartesian/cartesianEquationOfLine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAqBrC,KAAK,WAAW,GAAG;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAyNF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,WAAW,CAczD,CAAC"}
|
|
@@ -3,12 +3,13 @@ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQue
|
|
|
3
3
|
import { GeogebraConstructor } from "../../../../geogebra/geogebraConstructor.js";
|
|
4
4
|
import { Line } from "../../../../math/geometry/line.js";
|
|
5
5
|
import { Point } from "../../../../math/geometry/point.js";
|
|
6
|
-
import { Vector } from "../../../../math/geometry/vector.js";
|
|
6
|
+
import { Vector, VectorConstructor } from "../../../../math/geometry/vector.js";
|
|
7
7
|
import { randint } from "../../../../math/utils/random/randint.js";
|
|
8
8
|
import { EqualNode } from "../../../../tree/nodes/equations/equalNode.js";
|
|
9
|
+
import { opposite } from "../../../../tree/nodes/functions/oppositeNode.js";
|
|
9
10
|
import { NumberNode } from "../../../../tree/nodes/numbers/numberNode.js";
|
|
10
|
-
import { AddNode } from "../../../../tree/nodes/operators/addNode.js";
|
|
11
|
-
import { MultiplyNode, } from "../../../../tree/nodes/operators/multiplyNode.js";
|
|
11
|
+
import { add, AddNode } from "../../../../tree/nodes/operators/addNode.js";
|
|
12
|
+
import { multiply, MultiplyNode, } from "../../../../tree/nodes/operators/multiplyNode.js";
|
|
12
13
|
import { VariableNode } from "../../../../tree/nodes/variables/variableNode.js";
|
|
13
14
|
import { parseAlgebraic } from "../../../../tree/parsers/latexParser.js";
|
|
14
15
|
import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
|
|
@@ -24,6 +25,43 @@ const getAnswer = (identifiers) => {
|
|
|
24
25
|
const correctAnswer = line.getCartesianEquation();
|
|
25
26
|
return correctAnswer.toTex();
|
|
26
27
|
};
|
|
28
|
+
const getHint = (identifiers) => {
|
|
29
|
+
return `Détermine un vecteur directeur de $d$. Cela permet de trouver les coefficients $a$ et $b$ dans l'équation cartésienne $ax+by+c=0$. Puis, utilise un point appartenant à $d$ pour obtenir $c$. `;
|
|
30
|
+
};
|
|
31
|
+
const getCorrection = (identifiers) => {
|
|
32
|
+
const { aX, aY, bX, bY } = identifiers;
|
|
33
|
+
const A = new Point("A", aX, aY);
|
|
34
|
+
const B = new Point("B", bX, bY);
|
|
35
|
+
const vec = VectorConstructor.fromPoints(A, B);
|
|
36
|
+
const partial = add(multiply(opposite(vec.y), "x"), multiply(vec.x, "y")).simplify({
|
|
37
|
+
forbidFactorize: true,
|
|
38
|
+
});
|
|
39
|
+
const partialEv = partial.toDetailedEvaluation({ x: A.x, y: A.y });
|
|
40
|
+
const partialEvSimp = partialEv.simplify();
|
|
41
|
+
const c = opposite(partialEvSimp).simplify();
|
|
42
|
+
return `On lit graphiquement que la droite passe par les points $${A.toTexWithCoords()}$ et $${B.toTexWithCoords()}$. On en déduit qu'un vecteur directeur de $d$ est $${vec.toTexWithCoords()}$.
|
|
43
|
+
|
|
44
|
+
Une équation cartésienne de $d$ est donc de la forme :
|
|
45
|
+
|
|
46
|
+
$$
|
|
47
|
+
${partial.toTex()}+c = 0
|
|
48
|
+
$$
|
|
49
|
+
|
|
50
|
+
Pour déterminer $c$, on utilise le fait que le point $${A.toTexWithCoords()}$ appartient à $d$ :
|
|
51
|
+
|
|
52
|
+
$$
|
|
53
|
+
${partialEv.toTex()}+c = 0
|
|
54
|
+
$$
|
|
55
|
+
|
|
56
|
+
ce qui donne $c=${c.toTex()}$.
|
|
57
|
+
|
|
58
|
+
Ainsi, une équation cartésienne de $d$ est :
|
|
59
|
+
|
|
60
|
+
$$
|
|
61
|
+
${getAnswer(identifiers)}
|
|
62
|
+
$$
|
|
63
|
+
`;
|
|
64
|
+
};
|
|
27
65
|
const getGGBOptions = (identifiers) => {
|
|
28
66
|
const { aX, aY, bX, bY } = identifiers;
|
|
29
67
|
const a = new Point("a", aX, aY);
|
|
@@ -40,10 +78,14 @@ const getGGBOptions = (identifiers) => {
|
|
|
40
78
|
});
|
|
41
79
|
};
|
|
42
80
|
const getCartesianEquationOfLineQuestion = () => {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
81
|
+
let aX = randint(-5, 6);
|
|
82
|
+
let aY = randint(-5, 6);
|
|
83
|
+
let bX = randint(-5, 6, [aX]);
|
|
84
|
+
let bY = randint(-5, 6, [aY]);
|
|
85
|
+
if (aX > bX) {
|
|
86
|
+
[aX, bX] = [bX, aX];
|
|
87
|
+
[aY, bY] = [bY, aY];
|
|
88
|
+
}
|
|
47
89
|
const identifiers = { aX, aY, bX, bY };
|
|
48
90
|
return getQuestionFromIdentifiers(identifiers);
|
|
49
91
|
};
|
|
@@ -55,6 +97,8 @@ const getQuestionFromIdentifiers = (identifiers) => {
|
|
|
55
97
|
keys: ["x", "y", "equal"],
|
|
56
98
|
answerFormat: "tex",
|
|
57
99
|
identifiers,
|
|
100
|
+
// hint: getHint(identifiers),
|
|
101
|
+
// correction: getCorrection(identifiers),
|
|
58
102
|
};
|
|
59
103
|
return question;
|
|
60
104
|
};
|
|
@@ -135,5 +179,6 @@ export const cartesianEquationOfLine = {
|
|
|
135
179
|
isAnswerValid,
|
|
136
180
|
hasGeogebra: true,
|
|
137
181
|
subject: "Mathématiques",
|
|
182
|
+
// hasHintAndCorrection: true,
|
|
138
183
|
getQuestionFromIdentifiers,
|
|
139
184
|
};
|
|
@@ -56,7 +56,7 @@ const getCorrection = (identifiers) => {
|
|
|
56
56
|
forbidFactorize: true,
|
|
57
57
|
});
|
|
58
58
|
const line = LineConstructor.fromPointAndVector(point, vector);
|
|
59
|
-
const
|
|
59
|
+
const [a, b, c] = line.toCartesianCoeffs();
|
|
60
60
|
const [aEv, bEv, cEv] = [a.evaluate(), b.evaluate(), c.evaluate()];
|
|
61
61
|
const allNeg = aEv < 0 && bEv < 0 && cEv < 0;
|
|
62
62
|
const pgcd = gcd(aEv, bEv, cEv);
|
|
@@ -53,7 +53,7 @@ const getCorrection = (identifiers) => {
|
|
|
53
53
|
forbidFactorize: true,
|
|
54
54
|
});
|
|
55
55
|
const line = LineConstructor.fromPointAndVector(point, vector);
|
|
56
|
-
const
|
|
56
|
+
const [a, b, c] = line.toCartesianCoeffs();
|
|
57
57
|
const [aEv, bEv, cEv] = [a.evaluate(), b.evaluate(), c.evaluate()];
|
|
58
58
|
const allNeg = aEv < 0 && bEv < 0 && cEv < 0;
|
|
59
59
|
const pgcd = gcd(aEv, bEv, cEv);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directionVectorEquation.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/cartesian/directionVectorEquation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,
|
|
1
|
+
{"version":3,"file":"directionVectorEquation.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/cartesian/directionVectorEquation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAcrC,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;CAEX,CAAC;AAqKF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,WAAW,CAiBzD,CAAC"}
|
|
@@ -3,10 +3,14 @@ import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQue
|
|
|
3
3
|
import { Vector } from "../../../../math/geometry/vector.js";
|
|
4
4
|
import { randint } from "../../../../math/utils/random/randint.js";
|
|
5
5
|
import { equal } from "../../../../tree/nodes/equations/equalNode.js";
|
|
6
|
+
import { opposite } from "../../../../tree/nodes/functions/oppositeNode.js";
|
|
6
7
|
import { NumberNode } from "../../../../tree/nodes/numbers/numberNode.js";
|
|
7
8
|
import { add } from "../../../../tree/nodes/operators/addNode.js";
|
|
9
|
+
import { isBinomialCoefficientNode } from "../../../../tree/nodes/operators/binomialCoefficientNode.js";
|
|
8
10
|
import { multiply } from "../../../../tree/nodes/operators/multiplyNode.js";
|
|
11
|
+
import { parseAlgebraic } from "../../../../tree/parsers/latexParser.js";
|
|
9
12
|
import { vectorParser } from "../../../../tree/parsers/vectorParser.js";
|
|
13
|
+
import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
|
|
10
14
|
const rebuildIdentifiers = (oldIds) => {
|
|
11
15
|
if (oldIds.c !== undefined)
|
|
12
16
|
return oldIds;
|
|
@@ -27,10 +31,13 @@ $$
|
|
|
27
31
|
|
|
28
32
|
Déterminez les coordonnées d'un vecteur directeur de $d$.`;
|
|
29
33
|
};
|
|
34
|
+
const getKeys = (identifiers) => {
|
|
35
|
+
return ["binom", "semicolon"];
|
|
36
|
+
};
|
|
30
37
|
const getAnswer = (identifiers) => {
|
|
31
38
|
const { xValue, yValue, c } = identifiers;
|
|
32
39
|
const vector = new Vector("v", xValue.toTree(), yValue.toTree());
|
|
33
|
-
return vector.
|
|
40
|
+
return vector.toBinomCoords().toTex();
|
|
34
41
|
};
|
|
35
42
|
const getDirectionVectorEquationQuestion = () => {
|
|
36
43
|
let x1 = randint(-8, 8);
|
|
@@ -43,13 +50,40 @@ const getDirectionVectorEquationQuestion = () => {
|
|
|
43
50
|
const identifiers = { xValue, yValue, c };
|
|
44
51
|
return getQuestionFromIdentifiers(identifiers);
|
|
45
52
|
};
|
|
53
|
+
const getHint = (identifiers) => {
|
|
54
|
+
const vec = new Vector("u", opposite("b"), "a".toTree());
|
|
55
|
+
return `Si une droite $d$ admet une équation cartésienne de la forme :
|
|
56
|
+
|
|
57
|
+
$$
|
|
58
|
+
ax+by+c=0
|
|
59
|
+
$$
|
|
60
|
+
|
|
61
|
+
alors un vecteur directeur de $d$ est $${vec.toTexWithCoords()}$.`;
|
|
62
|
+
};
|
|
63
|
+
const getCorrection = (identifiers) => {
|
|
64
|
+
const { xValue, yValue, c } = identifiers;
|
|
65
|
+
const vec = new Vector("u", opposite("b"), "a".toTree());
|
|
66
|
+
return `Si une droite $d$ admet une équation cartésienne de la forme :
|
|
67
|
+
|
|
68
|
+
$$
|
|
69
|
+
ax+by+c=0
|
|
70
|
+
$$
|
|
71
|
+
|
|
72
|
+
alors un vecteur directeur de $d$ est $${vec.toTexWithCoords()}$.
|
|
73
|
+
|
|
74
|
+
Ici, $a = ${yValue}$ et $b = ${-xValue}$.
|
|
75
|
+
|
|
76
|
+
On en déduit qu'un vecteur directeur de $d$ est $\\overrightarrow{u}${getAnswer(identifiers)}$.`;
|
|
77
|
+
};
|
|
46
78
|
const getQuestionFromIdentifiers = (identifiers) => {
|
|
47
79
|
return {
|
|
48
80
|
answer: getAnswer(identifiers),
|
|
49
81
|
instruction: getInstruction(identifiers),
|
|
50
|
-
keys:
|
|
82
|
+
keys: getKeys(identifiers),
|
|
51
83
|
answerFormat: "tex",
|
|
52
84
|
identifiers,
|
|
85
|
+
hint: getHint(identifiers),
|
|
86
|
+
correction: getCorrection(identifiers),
|
|
53
87
|
};
|
|
54
88
|
};
|
|
55
89
|
const getPropositions = (n, { answer, xValue, yValue }) => {
|
|
@@ -77,16 +111,25 @@ const getPropositions = (n, { answer, xValue, yValue }) => {
|
|
|
77
111
|
return shuffleProps(propositions, n);
|
|
78
112
|
};
|
|
79
113
|
const isAnswerValid = (ans, { answer, xValue, yValue }) => {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
114
|
+
try {
|
|
115
|
+
const solVector = new Vector("v", xValue.toTree(), yValue.toTree());
|
|
116
|
+
if (ans.includes("binom")) {
|
|
117
|
+
const parsed = parseAlgebraic(ans);
|
|
118
|
+
if (!isBinomialCoefficientNode(parsed))
|
|
119
|
+
return false;
|
|
120
|
+
const vec = new Vector("u", parsed.leftChild, parsed.rightChild);
|
|
121
|
+
return solVector.isColinear(vec);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
const vec = vectorParser(ans);
|
|
125
|
+
if (!vec)
|
|
126
|
+
return false;
|
|
127
|
+
return solVector.isColinear(vec);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
return handleVEAError(err);
|
|
88
132
|
}
|
|
89
|
-
return true;
|
|
90
133
|
};
|
|
91
134
|
export const directionVectorEquation = {
|
|
92
135
|
id: "directionVectorEquation",
|
|
@@ -102,4 +145,5 @@ export const directionVectorEquation = {
|
|
|
102
145
|
getInstruction,
|
|
103
146
|
getQuestionFromIdentifiers,
|
|
104
147
|
rebuildIdentifiers,
|
|
148
|
+
hasHintAndCorrection: true,
|
|
105
149
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cartesianEquationToReduced.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/lines/cartesianEquationToReduced.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"cartesianEquationToReduced.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/lines/cartesianEquationToReduced.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAgBrC,KAAK,WAAW,GAAG;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AA0MF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,WAAW,CAkB5D,CAAC"}
|
|
@@ -70,9 +70,27 @@ ${toReduced
|
|
|
70
70
|
: `Donner une équation cartésienne de $d$.`}`;
|
|
71
71
|
};
|
|
72
72
|
// const getHint: GetHint<Identifiers> = (identifiers) => {
|
|
73
|
-
//
|
|
73
|
+
// if (identifiers.toReduced)
|
|
74
|
+
// return `Pour déterminer l'équation réduite de $d$, il faut isoler la variable $y$ à gauche de l'équation, afin d'obtenir une équation de la forme :
|
|
75
|
+
// $$
|
|
76
|
+
// y = ax+b
|
|
77
|
+
// $$`;
|
|
78
|
+
// return `Pour déterminer une équation cartésienne de $d$, il faut transformer son équation réduite en une équation de la forme :
|
|
79
|
+
// $$
|
|
80
|
+
// ax+by+c = 0
|
|
81
|
+
// $$`;
|
|
74
82
|
// };
|
|
75
83
|
// const getCorrection: GetCorrection<Identifiers> = (identifiers) => {
|
|
84
|
+
// const { a, b, c, toReduced } = identifiers;
|
|
85
|
+
// const cartesian = new EqualNode(
|
|
86
|
+
// getCartesianEquation(identifiers),
|
|
87
|
+
// (0).toTree(),
|
|
88
|
+
// );
|
|
89
|
+
// if (toReduced)
|
|
90
|
+
// return `On isole $y$ à gauche de l'équation :
|
|
91
|
+
// $$
|
|
92
|
+
// ${cartesian.isolate("y").toTex()}
|
|
93
|
+
// $$`;
|
|
76
94
|
// return "";
|
|
77
95
|
// };
|
|
78
96
|
const getKeys = (identifiers) => {
|
|
@@ -168,4 +186,5 @@ export const cartesianEquationToReduced = {
|
|
|
168
186
|
// getCorrection,
|
|
169
187
|
getAnswer,
|
|
170
188
|
getQuestionFromIdentifiers,
|
|
189
|
+
// hasHintAndCorrection: true,
|
|
171
190
|
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Exercise } from "../../../../exercises/exercise.js";
|
|
2
|
+
import { NodeIdentifiers } from "../../../../tree/nodes/nodeConstructor.js";
|
|
3
|
+
type Identifiers = {
|
|
4
|
+
cartesianCoeffs1: NodeIdentifiers[];
|
|
5
|
+
cartesianCoeffs2: NodeIdentifiers[];
|
|
6
|
+
};
|
|
7
|
+
export declare const cartesianEquationsIntersection: Exercise<Identifiers>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=cartesianEquationsIntersection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cartesianEquationsIntersection.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/lines/cartesianEquationsIntersection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,6BAA6B,CAAC;AAUrC,OAAO,EACL,eAAe,EAEhB,MAAM,qCAAqC,CAAC;AAO7C,KAAK,WAAW,GAAG;IACjB,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,gBAAgB,EAAE,eAAe,EAAE,CAAC;CACrC,CAAC;AAkHF,eAAO,MAAM,8BAA8B,EAAE,QAAQ,CAAC,WAAW,CAoBhE,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { addValidProp, shuffleProps, tryToAddWrongProp, } from "../../../../exercises/exercise.js";
|
|
2
|
+
import { getDistinctQuestions } from "../../../../exercises/utils/getDistinctQuestions.js";
|
|
3
|
+
import { LineConstructor } from "../../../../math/geometry/line.js";
|
|
4
|
+
import { Point, PointConstructor } from "../../../../math/geometry/point.js";
|
|
5
|
+
import { Vector } from "../../../../math/geometry/vector.js";
|
|
6
|
+
import { GeneralSystem } from "../../../../math/systems/generalSystem.js";
|
|
7
|
+
import { randint } from "../../../../math/utils/random/randint.js";
|
|
8
|
+
import { EqualNode } from "../../../../tree/nodes/equations/equalNode.js";
|
|
9
|
+
import { opposite } from "../../../../tree/nodes/functions/oppositeNode.js";
|
|
10
|
+
import { reifyAlgebraic, } from "../../../../tree/nodes/nodeConstructor.js";
|
|
11
|
+
import { add } from "../../../../tree/nodes/operators/addNode.js";
|
|
12
|
+
import { multiply } from "../../../../tree/nodes/operators/multiplyNode.js";
|
|
13
|
+
import { pointParser } from "../../../../tree/parsers/pointParser.js";
|
|
14
|
+
import { doWhile } from "../../../../utils/doWhile.js";
|
|
15
|
+
import { handleVEAError } from "../../../../utils/errors/handleVEAError.js";
|
|
16
|
+
const getEquation = (coeffs) => {
|
|
17
|
+
const [a, b, c] = coeffs;
|
|
18
|
+
return new EqualNode(add(add(multiply(a, "x"), multiply(b, "y")), c).simplify({
|
|
19
|
+
forbidFactorize: true,
|
|
20
|
+
}), (0).toTree());
|
|
21
|
+
};
|
|
22
|
+
const getPropositions = (n, { answer }) => {
|
|
23
|
+
const propositions = [];
|
|
24
|
+
addValidProp(propositions, answer);
|
|
25
|
+
while (propositions.length < n) {
|
|
26
|
+
tryToAddWrongProp(propositions, PointConstructor.random("A").toCoords());
|
|
27
|
+
}
|
|
28
|
+
return shuffleProps(propositions, n);
|
|
29
|
+
};
|
|
30
|
+
const getAnswer = (identifiers) => {
|
|
31
|
+
const { cartesianCoeffs1, cartesianCoeffs2 } = identifiers;
|
|
32
|
+
const coeffs1 = cartesianCoeffs1.map((c) => reifyAlgebraic(c));
|
|
33
|
+
coeffs1[2] = opposite(coeffs1[2]).simplify();
|
|
34
|
+
const coeffs2 = cartesianCoeffs2.map((c) => reifyAlgebraic(c));
|
|
35
|
+
coeffs2[2] = opposite(coeffs2[2]).simplify();
|
|
36
|
+
const sys = new GeneralSystem([coeffs1, coeffs2]);
|
|
37
|
+
const { x, y } = sys.solve();
|
|
38
|
+
const point = new Point("A", x, y);
|
|
39
|
+
return point.toCoords();
|
|
40
|
+
};
|
|
41
|
+
const getInstruction = (identifiers) => {
|
|
42
|
+
const { cartesianCoeffs1, cartesianCoeffs2 } = identifiers;
|
|
43
|
+
const coeffs1 = cartesianCoeffs1.map((c) => reifyAlgebraic(c));
|
|
44
|
+
const coeffs2 = cartesianCoeffs2.map((c) => reifyAlgebraic(c));
|
|
45
|
+
return `Soit $d_1$ une droite d'équation cartésienne :
|
|
46
|
+
|
|
47
|
+
$$
|
|
48
|
+
${getEquation(coeffs1).toTex()}
|
|
49
|
+
$$
|
|
50
|
+
|
|
51
|
+
et $d_2$ une droite d'équation cartésienne :
|
|
52
|
+
|
|
53
|
+
$$
|
|
54
|
+
${getEquation(coeffs2).toTex()}
|
|
55
|
+
$$
|
|
56
|
+
|
|
57
|
+
Déterminer les coordonnées du point d'intersection de $d_1$ et $d_2$.`;
|
|
58
|
+
};
|
|
59
|
+
// const getHint: GetHint<Identifiers> = (identifiers) => {};
|
|
60
|
+
// const getCorrection: GetCorrection<Identifiers> = (identifiers) => {};
|
|
61
|
+
const getKeys = (identifiers) => {
|
|
62
|
+
return ["semicolon"];
|
|
63
|
+
};
|
|
64
|
+
const isAnswerValid = (ans, { answer }) => {
|
|
65
|
+
try {
|
|
66
|
+
const parsed = pointParser(ans);
|
|
67
|
+
if (!parsed)
|
|
68
|
+
return false;
|
|
69
|
+
return parsed.simplify().toCoords() === answer;
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
return handleVEAError(err);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
const getCartesianEquationsIntersectionQuestion = (ops) => {
|
|
76
|
+
const inter = PointConstructor.random("A");
|
|
77
|
+
const randVec = new Vector("u", randint(-10, 11, [0]).toTree(), randint(-10, 11, [0]).toTree());
|
|
78
|
+
const randVec2 = doWhile(() => new Vector("v", randint(-10, 11, [0]).toTree(), randint(-10, 11, [0]).toTree()), (v) => v.isColinear(randVec));
|
|
79
|
+
const line1 = LineConstructor.fromPointAndVector(inter, randVec);
|
|
80
|
+
const line2 = LineConstructor.fromPointAndVector(inter, randVec2);
|
|
81
|
+
const coeffs1 = line1.toCartesianCoeffs();
|
|
82
|
+
const coeffs2 = line2.toCartesianCoeffs();
|
|
83
|
+
const identifiers = {
|
|
84
|
+
cartesianCoeffs1: coeffs1.map((e) => e.toIdentifiers()),
|
|
85
|
+
cartesianCoeffs2: coeffs2.map((e) => e.toIdentifiers()),
|
|
86
|
+
};
|
|
87
|
+
return getQuestionFromIdentifiers(identifiers);
|
|
88
|
+
};
|
|
89
|
+
const getQuestionFromIdentifiers = (identifiers) => {
|
|
90
|
+
return {
|
|
91
|
+
answer: getAnswer(identifiers),
|
|
92
|
+
instruction: getInstruction(identifiers),
|
|
93
|
+
keys: getKeys(identifiers),
|
|
94
|
+
answerFormat: "tex",
|
|
95
|
+
identifiers,
|
|
96
|
+
// hint: getHint(identifiers),
|
|
97
|
+
// correction: getCorrection(identifiers),
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
export const cartesianEquationsIntersection = {
|
|
101
|
+
id: "cartesianEquationsIntersection",
|
|
102
|
+
label: "Déterminer l'intersection de deux droites à partir de leur équation cartésienne",
|
|
103
|
+
isSingleStep: true,
|
|
104
|
+
generator: (nb, opts) => getDistinctQuestions(() => getCartesianEquationsIntersectionQuestion(opts), nb),
|
|
105
|
+
qcmTimer: 60,
|
|
106
|
+
freeTimer: 60,
|
|
107
|
+
getPropositions,
|
|
108
|
+
isAnswerValid,
|
|
109
|
+
subject: "Mathématiques",
|
|
110
|
+
getInstruction,
|
|
111
|
+
// getHint,
|
|
112
|
+
// getCorrection,
|
|
113
|
+
getAnswer,
|
|
114
|
+
getQuestionFromIdentifiers,
|
|
115
|
+
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Exercise } from "../../../../exercises/exercise.js";
|
|
2
2
|
import { PointIdentifiers } from "../../../../math/geometry/point.js";
|
|
3
|
+
import { VectorIdentifiers } from "../../../../math/geometry/vector.js";
|
|
3
4
|
type Identifiers = {
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
pointIds: PointIdentifiers;
|
|
6
|
+
vectorIds: VectorIdentifiers;
|
|
6
7
|
};
|
|
7
8
|
export declare const drawLineFromCartesianEquation: Exercise<Identifiers>;
|
|
8
9
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawLineFromCartesianEquation.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/lines/drawLineFromCartesianEquation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAUT,MAAM,6BAA6B,CAAC;AAQrC,OAAO,EAGL,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"drawLineFromCartesianEquation.d.ts","sourceRoot":"","sources":["../../../../../src/exercises/math/geometry/lines/drawLineFromCartesianEquation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAUT,MAAM,6BAA6B,CAAC;AAQrC,OAAO,EAGL,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAGL,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AAQvC,KAAK,WAAW,GAAG;IACjB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,SAAS,EAAE,iBAAiB,CAAC;CAC9B,CAAC;AA+HF,eAAO,MAAM,6BAA6B,EAAE,QAAQ,CAAC,WAAW,CAmB/D,CAAC"}
|