Order of Transformations Demo
Loading the math board and drawing, please wait…
This example demonstrates the impact of applying transformations (like moves, stretches) in different sequences on geometric figures in GeoGebra. It involves core math concepts such as function transformations, coordinate geometry, optimization problems, and quadratic functions. Key GeoGebra commands and objects used include If, FractionText, LaTeX, Sequence, Element, UnicodeToLetter, Corner, IndexOf, Defined, TableText, Polygon, Shuffle, and objects like moveUp, moveDown, stepsChosen, correctOrder, etc. It is suitable for high school and above students to understand the effects of transformation order on graph properties and function optimization.
GeoGebra Commands & Parameters
If(Random[0, 1] ≟ 1, (Random[1, 3] * 2) + 1, 1 / ((Random[1, 3] * 2) + 1)) → bValFractionText(abs(bVal)) → bValDispFractionText(abs(aVal)) → aValDispLaTeX(case4) → case4DispLaTeX(case3) → case3DispLaTeX(case2) → case2DispLaTeX(case1) → case1DispSequence((24, i), i, 22, 0, -2.75) → boxAnchorRightElement(B23:B28, caseIndx) → vStretchaValSequence((0, i), i, 22, 0, -2.75) → boxAnchorLeftSequence({Element[boxAnchorLeft, i], Element[boxAnchorRight, i], Element[boxAnchorRight, i + 1], Element[boxAnchorLeft, i + 1]}, i, 1, 4) → boxAnchorsSequence(Polygon[Element[boxAnchors, i]], i, 1, 4) → boxesUnicodeToLetter(10007) → xmarkUnicodeToLetter(10003) → cmarkCorner(B10, 1) → C10Corner(B11, 1) → C11LaTeX((("\text{Vertical compression by a factor of \(" * FractionText[1 / abs(aVal)]) * "\).}")) → B12Corner(B12, 1) → C12LaTeX((("\text{Horizontal translation " * abs(cVal)) * " units right.}")) → B15Corner(B15, 1) → C15LaTeX((("\text{Horizontal translation " * abs(cVal)) * " units left.}")) → B16Corner(B16, 1) → C16Corner(B9, 1) → C9Element(boxes, 1) → box1Element(boxes, 2) → box2Element(boxes, 3) → box3Element(boxes, 4) → box4LaTeX((((("\text{Vertical translation " * abs(dVal)) * " unit") * If[abs(dVal) ≟ 1, "", "s"]) * " up.}")) → B18LaTeX((((("\text{Vertical translation " * abs(dVal)) * " unit") * If[abs(dVal) ≟ 1, "", "s"]) * " down.}")) → B17Corner(B17, 1) → C17Corner(B18, 1) → C18Element(caseFormulas, caseIndx) → fxLblSequence((((((("SetCoords(B" * Element[stepsChosen, i]) * ",x(Element(boxAnchorLeft,") * i) * ")),y(Element(boxAnchorLeft,") * i) * ")-.75))"), i, 1, Min[4, Length[stepsChosen]]) → cmdMoveStepsIndexOf(11, Remove[stepsChosen, {9, 10, 12, 13, 14, 15, 16}]) → F11IndexOf(9, Remove[stepsChosen, {10, 11, 12, 13, 14, 15, 16}]) → F9IndexOf(10, Remove[stepsChosen, {9, 11, 12, 15, 16}]) → F10IndexOf(12, Remove[stepsChosen, {9, 10, 11, 13, 14, 15, 16}]) → F12IndexOf(15, Reverse[Remove[stepsChosen, {9, 11, 12, 16, 17, 18}]]) → F15IndexOf(16, Reverse[Remove[stepsChosen, {9, 11, 12, 15, 17, 18}]]) → F16IndexOf(17, Reverse[Remove[stepsChosen, {13, 14, 15, 16, 18}]]) → F17IndexOf(18, Reverse[Remove[stepsChosen, {13, 14, 15, 16, 17}]]) → F18If(Defined[F9], F9 ≟ 1, true) → G9If(Defined[F10], F10 ≟ 1, true) → G10If(Defined[F11], F11 ≟ 1, true) → G11If(Defined[F12], F12 ≟ 1, true) → G12If(Defined[F15], F15 ≟ 1, true) → G15If(Defined[F16], F16 ≟ 1, true) → G16If(Defined[F17], F17 ≟ 1, true) → G17If(Defined[F18], F18 ≟ 1, true) → G18Defined(IndexOf[9, stepsChosen]) → I9Defined(IndexOf[10, stepsChosen]) → I10Defined(IndexOf[11, stepsChosen]) → I11Defined(IndexOf[12, stepsChosen]) → I12Defined(IndexOf[13, stepsChosen]) → I15Defined(IndexOf[14, stepsChosen]) → I16Defined(IndexOf[15, stepsChosen]) → I17Defined(IndexOf[16, stepsChosen]) → I18Sequence("\phantom{\dfrac{1}{1}000000000000000000000000000000000000000}", i, 1, 5) → spacersSequence((-3, i), i, 9.5, 2.5, -2) → optionAnchorsTableText({{"Step 1", "Step 2", "Step 3", "Step 4"}, spacers, markLst}, "vl") → stepLblsPolygon((-4, 0), (-4, 10), (44, 10), (44, 0)) → fbCover, fbCover_1, fbCover_2, fbCover_3, fbCover_4LaTeX(If[correctOrder, "Your solution is correct.", (((("The steps marked with " * moveUp) * " or ") * moveDown) * " are not in the correct order.")]) → fbCorrectLaTeX(If[correctOrder, "", "Click `Show a Solution' to see one correct solution."]) → fbShowSolutionShuffle(stepsCorrect) → stepsCorrectShuffledSequence((((("SetValue(D" * Element[stepsCorrectShuffled, i]) * ",") * Element[optionAnchors, i]) * ")"), i, 1, Length[stepsCorrect]) → cmdSetHomePtsLaTeX((((("\text{" * fbCorrect) * "\\") * fbShowSolution) * "}")) → fbStatementIf(G10, correct, moveUp) → J10If(G9, correct, moveUp) → J9If(G11, correct, moveUp) → J11If(G12, correct, moveUp) → J12If(G15, correct, moveDown) → J15If(G16, correct, moveDown) → J16If(G17, correct, moveDown) → J17If(G18, correct, moveDown) → J18LaTeX((("\text{Horizontal compression by a factor of " * FractionText[abs(bVal)]) * ".}")) → B14LaTeX((("\text{Horizontal stretch by a factor of \(" * FractionText[1 / abs(bVal)]) * "\).}")) → B13Corner(B13, 1) → C13Corner(B14, 1) → C14IndexOf(14, Remove[stepsChosen, {9, 10, 11, 12, 13, 17, 18}]) → F14IndexOf(13, Remove[stepsChosen, {9, 10, 11, 12, 14, 17, 18}]) → F13If(Defined[F13], F13 ≟ 1, true) → G13If(Defined[F14], F14 ≟ 1, true) → G14Defined(IndexOf[17, stepsChosen]) → I13Defined(IndexOf[18, stepsChosen]) → I14If(G13, correct, moveUp) → J13If(G14, correct, moveUp) → J14LaTeX(If[isDone, ""]) → fbNotDoneLaTeX((("\text{\textbf{Question: }A set of translations that would map \(f(x)=\vert x \vert\) onto \(h(x)=" * fxLbl) * "\) \\is listed below. Place the transformations in a correct order.}")) → MainInstrucLaTeX("\text{\textbf{Instructions: }Click on a transformation to select it. It will be placed in the list of steps in \\the order in which you select it. Click on a transformation already selected to return it to the \\list at the bottom.}") → SpecInstruc