Switching between y=kx+d and its graph using slope triangles

Switching between y=kx+d and its graph using slope triangles
Loading the math board and drawing, please wait…
2025-10-15 15:06
This GeoGebra lesson demonstrates how to move back and forth between a linear function’s equation and its graph. Students use a “slope triangle” to identify the parameters k (slope) and d (intercept), construct the corresponding straight line, and then validate whether the chosen function matches the displayed graph. Key math topics include linear functions (one-variable), the geometric meaning of

GeoGebra Commands & Parameters

  1. Join({{1}, Shuffle[2…numberOfQuestions]}) → randomQuestions
  2. Element(randomQuestions, Mod[questionCount - 1, Length[randomQuestions]] + 1) → randomQuestion
  3. Sequence(Origin + ((minX / stepX * disX), 0) + (k * (disX, 0)), k, 0, maxX / stepX - minX / stepX) → PointsXAxis
  4. Sequence(Origin + (0, (minY / stepY * disY)) + (k * (0, disY)), k, 0, maxY / stepY - minY / stepY) → PointsYAxis
  5. Sequence(Sequence[(x(PointsXAxis(k)), y(PointsYAxis(m))), k, 1, Length[PointsXAxis]], m, 1, Length[PointsYAxis]) → AllPointsOnGrid
  6. Point(Remove[Flatten[AllPointsOnGrid], {Origin}]) → PosP
  7. Line(Origin, PosP) → FuncLine
  8. Slope(FuncLine) → SteigungLine
  9. Textfield(input) → inputBox
  10. Join({Sequence[Segment[Corner[4] + (RasterPixMat * ((k * RasterStepXY), 0)), Corner[4] + (RasterPixMat * ((k * RasterStepXY), RasterMaxY))], k, 0, RasterMaxX / RasterStepXY], Sequence[Segment[Corner[4] + (RasterPixMat * (0, (k * RasterStepXY))), Corner[4] + (RasterPixMat * (RasterMaxX, (k * RasterStepXY)))], k, 0, RasterMaxY / RasterStepXY]}) → RasterStrecken
  11. Join({Sequence[Text[UnicodeToLetter[65 + k], Midpoint[Corner[4] + (RasterPixMat * ((k * RasterStepXY), RasterMaxY)), Corner[4] + (RasterPixMat * (((k + 1) * RasterStepXY), RasterMaxY))], false, true, 0, -1], k, 0, RasterMaxX / RasterStepXY - 1], Sequence[Text[("" * k), Midpoint[Corner[4] + (RasterPixMat * (RasterMaxX, ((k - 1) * RasterStepXY))), Corner[4] + (RasterPixMat * (RasterMaxX, (k * RasterStepXY)))], false, true, 1, 0], k, 1, RasterMaxY / RasterStepXY]}) → RasterBeschriftung
  12. Sequence(Sequence[Corner[4] + (RasterPixMat * ((k * RasterStepXY), (m * RasterStepXY))), k, 0, RasterMaxX / RasterStepXY], m, 0, RasterMaxY / RasterStepXY) → RasterPunkte
  13. Segment(Origin + ((minX / stepX * disX) - edgeAxisX, 0), Origin + ((maxX / stepX * disX) + edgeAxisX, 0)) → segAxisX
  14. Segment(Origin + (0, (minY / stepY * disY) - edgeAxisY), Origin + (0, (maxY / stepY * disY) + edgeAxisY)) → segAxisY
  15. Sequence(Segment[PointsXAxis(k) + (0, (-disSeg)), PointsXAxis(k) + (0, disSeg)], k, 1, Length[PointsXAxis]) → segXAxis
  16. Sequence(Segment[PointsYAxis(k) + ((-disSeg), 0), PointsYAxis(k) + (disSeg, 0)], k, 1, Length[PointsYAxis]) → segYAxis
  17. Sequence(m, m, minX, maxX, stepX) → numbersXAxis
  18. Sequence(Text[((("\textsf{\footnotesize{\(" * If[numbersXAxis(k) ≥ 0, "\phantom{\(-\)}", ""]) * If[Element[numbersXAxis, k] ≟ 0, "", ("" * Element[numbersXAxis, k])]) * "\)}}"), PointsXAxis(k) + (-0.12, (-disSeg)), false, true, 0, -1], k, 1, (maxX - minX) / stepX + 1) → CapX
  19. Sequence(m, m, minY, maxY, stepY) → numbersYAxis
  20. Sequence(Text[((("\textsf{\footnotesize{\(" * If[numbersYAxis(k) ≥ 0, "\phantom{\(-\)}", ""]) * If[Element[numbersYAxis, k] ≟ 0, "", ("" * Element[numbersYAxis, k])]) * "\)}}"), PointsYAxis(k) + ((-disSeg) + 0.05, 0), false, true, -1, 0], k, 1, (maxY - minY) / stepY + 1) → CapY
  21. Element({Polygon[(x(PointsXAxis(1)), y(PointsYAxis(1))) + ((-edgeAxisX) - 0.05, (-edgeAxisY) - 0.05), (x(PointsXAxis(Length[PointsXAxis])), y(PointsYAxis(1))) + (edgeAxisX + 0.05, (-edgeAxisY) - 0.05), (x(PointsXAxis(Length[PointsXAxis])), y(PointsYAxis(Length[PointsYAxis]))) + (edgeAxisX + 0.05, edgeAxisY + 0.05), (x(PointsXAxis(1)), y(PointsYAxis(Length[PointsYAxis]))) + ((-edgeAxisX) - 0.05, edgeAxisY + 0.05)]}, 1) → polyAxis
  22. Rotate(Segment[ArrowCenter + (ArrowDistance, 0), ArrowCenter + (ArrowDistance + ArrowLength, 0)], ArrowAngle + ((1 - 1) * (360°) / ArrowNumber), ArrowCenter) → arrow1
  23. Rotate(Segment[ArrowCenter + (ArrowDistance, 0), ArrowCenter + (ArrowDistance + ArrowLength, 0)], ArrowAngle + ((2 - 1) * (360°) / ArrowNumber), ArrowCenter) → arrow2
  24. Rotate(Segment[ArrowCenter + (ArrowDistance, 0), ArrowCenter + (ArrowDistance + ArrowLength, 0)], ArrowAngle + ((3 - 1) * (360°) / ArrowNumber), ArrowCenter) → arrow3
  25. Rotate(Segment[ArrowCenter + (ArrowDistance, 0), ArrowCenter + (ArrowDistance + ArrowLength, 0)], ArrowAngle + ((4 - 1) * (360°) / ArrowNumber), ArrowCenter) → arrow4
  26. Numerator(SteigungLine) → num
  27. Denominator(SteigungLine) → denom
  28. PolyLine(Vertex[hintSteigungsdreieck(1), 1], Vertex[hintSteigungsdreieck(1), 2], Vertex[hintSteigungsdreieck(1), 3]) → segSD
  29. Intersect(FuncLine, polyAxis) → IP1, IP2
  30. Text("\textsf{\bold{\textcolor{db6114}{f}}}", IP2 - (0.25 * UnitOrthogonalVector[FuncLine]), false, true, 0, 0) → CapF