Heron's Formula Demonstration

Heron's Formula Demonstration
Loading the math board and drawing, please wait…
2025-12-10 20:51
This example demonstrates how to calculate the area of any triangle using Heron's formula. It involves core math concepts like Heron's formula, side length calculation, and real number operations. Key GeoGebra commands and objects used include Sequence, Element, Textfield, Join, PolyLine, SelectedIndex, Text, Segment, If, etc., for dynamic area calculation and interactive display. Suitable for hig

GeoGebra Commands & Parameters

  1. Sequence(Random[1, 10], i, 1, 10) → randomNumbers, {9, 2, 3, 9, 10, 2, 10, 6, 1, 2}
  2. Element(randomNumbers, Mod[questionCount, Length[randomNumbers]] + 1) → randomNumber
  3. Textfield(input) → inputBox
  4. 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
  5. 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
  6. Sequence(Sequence[Corner[4] + (RasterPixMat * ((k * RasterStepXY), (m * RasterStepXY))), k, 0, RasterMaxX / RasterStepXY], m, 0, RasterMaxY / RasterStepXY) → RasterPunkte
  7. Textfield(input031) → InputBox031
  8. Textfield(input041) → InputBox041
  9. Textfield(input042) → InputBox042
  10. PolyLine(PosSB, Corner[txt021, 1] + (-0.1, 0.25), Corner[txt021, 1] + (-0.1, -0.1), Corner[txt021, 2] + (0.1, -0.1), Corner[txt021, 3] + (0.1, 0.1), Corner[txt021, 4] + (-0.1, 0.1), Corner[txt021, 1] + (-0.1, 0.75), PosSB) → sb02
  11. PolyLine(PosSB, Corner[txt051, 1] + (-0.1, 0.25), Corner[txt051, 1] + (-0.1, -0.1), Corner[txt051, 2] + (0.1, -0.1), Corner[txt051, 3] + (0.1, 0.1), Corner[txt051, 4] + (-0.1, 0.1), Corner[txt051, 1] + (-0.1, 0.75), PosSB) → sb05
  12. PolyLine(PosSB, Corner[txt061, 1] + (-0.1, 0.25), Corner[txt061, 1] + (-0.1, -0.1), Corner[txt061, 2] + (0.1, -0.1), Corner[txt061, 3] + (0.1, 0.1), Corner[txt061, 4] + (-0.1, 0.1), Corner[txt061, 1] + (-0.1, 0.75), PosSB) → sb06
  13. Textfield(input021) → InputBox021
  14. Textfield(input022) → InputBox022
  15. Textfield(input023) → InputBox023
  16. Textfield(input051) → InputBox051
  17. SelectedIndex(dropdown011) → index011
  18. SelectedIndex(dropdown051) → index051
  19. SelectedIndex(dropdown052) → index052
  20. SelectedIndex(dropdown053) → index053
  21. Sequence(If[IsInRegion[PosPList(k) + ((-widthDD), (-heightDD)), box1(1)] ∧ IsInRegion[PosPList(k) + (widthDD, heightDD), box1(1)], 1, IsInRegion[PosPList(k) + ((-widthDD), (-heightDD)), box2(1)] ∧ IsInRegion[PosPList(k) + (widthDD, heightDD), box2(1)], 2, 0], k, 1, Length[PosPList]) → PosPBoxList
  22. Text("\textsf{\sqrt{1}}", PosP1 + (0, 0.05), false, true, 0, 0) → txtDD1
  23. Text("\textsf{\sqrt{2}}", PosP2 + (0, 0.05), false, true, 0, 0) → txtDD2
  24. Text("\textsf{\sqrt{4}}", PosP3 + (0, 0.05), false, true, 0, 0) → txtDD3
  25. Text("\textsf{\sqrt{8}}", PosP4 + (0, 0.05), false, true, 0, 0) → txtDD4
  26. Text("\textsf{\sqrt{16}}", PosP5 + (0, 0.05), false, true, 0, 0) → txtDD5
  27. Text("\textsf{\sqrt{38}}", PosP6 + (0, 0.05), false, true, 0, 0) → txtDD6
  28. Text("\textsf{\sqrt{49}}", PosP7 + (0, 0.05), false, true, 0, 0) → txtDD7
  29. Sequence(PosPark01 + (k * ((2 * widthDD) + 0.5, 0)), k, 0, 6) → PosParkList
  30. Segment(Origin + ((minX / stepX * disX) - edgeAxisX, 0), Origin + ((maxX / stepX * disX) + edgeAxisX, 0)) → segAxisX
  31. Segment(Origin + (0, (minY / stepY * disY) - edgeAxisY), Origin + (0, (maxY / stepY * disY) + edgeAxisY)) → segAxisY
  32. Sequence(Origin + ((minX / stepX * disX), 0) + (k * (disX, 0)), k, 0, maxX / stepX - minX / stepX) → PointsXAxis
  33. Sequence(Origin + (0, (minY / stepY * disY)) + (k * (0, disY)), k, 0, maxY / stepY - minY / stepY) → PointsYAxis
  34. Sequence(Segment[PointsXAxis(k) + (0, (-disSeg)), PointsXAxis(k) + (0, disSeg)], k, 1, Length[PointsXAxis]) → segXAxis
  35. Sequence(Segment[PointsYAxis(k) + ((-disSeg), 0), PointsYAxis(k) + (disSeg, 0)], k, 1, Length[PointsYAxis]) → segYAxis
  36. Sequence(m, m, minX, maxX, stepX) → numbersXAxis
  37. 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
  38. Sequence(m, m, minY, maxY, stepY) → numbersYAxis
  39. 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
  40. PolyLine(PosSB, Corner[txt031, 1] + (-0.1, 0.75), Corner[txt031, 1] + (-0.1, -0.1), Corner[txt031, 2] + (0.1, -0.1), Corner[txt031, 3] + (0.1, 0.1), Corner[txt031, 4] + (-0.1, 0.1), Corner[txt031, 1] + (-0.1, 1.25), PosSB) → sb03
  41. PolyLine(Sequence[Vertex[poly032(1), k], k, 2, 4]) → segPoly032
  42. PolyLine(Sequence[Vertex[poly033(1), k], k, 2, 4]) → segPoly033
  43. PolyLine(Sequence[Vertex[poly041(1), k], k, 2, 4]) → segPoly041
  44. PolyLine(Sequence[Vertex[poly042(1), k], k, 2, 4]) → segPoly042
  45. Text((((("\textsf{\footnotesize{Rechteck_1: A = " * If[¬show034, "\bold{\textcolor{db6114}{8}}", "8"]) * " \cdot ") * If[¬show034, "\bold{\textcolor{db6114}{1}}", "1"]) * " = 8 cm²}}"), Vertex[poly032(1), 3] + (0.25, 0.25), false, true, 1, 0) → CapR01
  46. Text((((((((((("\textsf{\footnotesize{Rechteck_2: " * If[step ≟ 3, "\bold{\textcolor{db6114}{", "{{"]) * "A =}} ") * If[step ≟ 3 ∨ step ≟ 4 ∧ (¬show040), "\bold{\textcolor{db6114}{", "{{"]) * "4,5}} ") * If[step ≟ 3, "\bold{\textcolor{db6114}{", "{{"]) * "\cdot}} ") * If[step ≟ 3 ∨ step ≟ 4 ∧ (¬show040), "\bold{\textcolor{db6114}{", "{{"]) * "1,778}} ") * If[step ≟ 3, "\bold{\textcolor{db6114}{", "{{"]) * "≈ 8 cm²}}}}"), Vertex[poly033(1), 3] + (0.25, 0.25), false, true, 1, 0) → CapR02
  47. Text((((((((((("\textsf{\footnotesize{Rechteck_3: " * If[step ≟ 4, "\bold{\textcolor{db6114}{", "{{"]) * "A =}} ") * If[step ≟ 4 ∨ step ≟ 4.5 ∧ (¬show042), "\bold{\textcolor{db6114}{", "{{"]) * "3,139}} ") * If[step ≟ 4, "\bold{\textcolor{db6114}{", "{{"]) * "\cdot}} ") * If[step ≟ 4 ∨ step ≟ 4.5 ∧ (¬show042), "\bold{\textcolor{db6114}{", "{{"]) * "2,549}} ") * If[step ≟ 4, "\bold{\textcolor{db6114}{", "{{"]) * "≈ 8 cm²}}}}"), Vertex[poly041(1), 3] + (0.25, 0.25), false, true, 1, 0) → CapR03
  48. Text((((("\textsf{\footnotesize{" * If[step ≟ 5 ∧ (¬correctdd053), "\textcolor{db6114}{\bold{", "{{"]) * "Rechteck_4}}: ") * If[step ≟ 4.5, "\bold{\textcolor{db6114}{", "{{"]) * "A = 2,844 \cdot 2,813 ≈ 8 cm²}}}}"), Vertex[poly042(1), 3] + (0.25, 0.5), false, true, 1, 0) → CapR04
  49. Segment(Midpoint[Corner[CapR01, 1], Corner[CapR01, 4]], Vertex[poly032(1), 3] + (0.05, 0.05)) → arrowR01
  50. Segment(Midpoint[Corner[CapR02, 1], Corner[CapR02, 4]], Vertex[poly033(1), 3] + (0.05, 0.05)) → arrowR02
  51. Segment(Midpoint[Corner[CapR03, 1], Corner[CapR03, 4]], Vertex[poly041(1), 3] + (0.05, 0.05)) → arrowR03
  52. Segment(Midpoint[Corner[CapR04, 1], Corner[CapR04, 4]], Vertex[poly042(1), 3] + (0.05, 0.05)) → arrowR04
  53. Textfield(inputTxt051) → InputBoxTxt051
  54. If(step ≟ 1, correctStep01 ∧ correctdd011, step ≟ 5, calculated051 ∧ correctTxt051 ∧ correctdd052 ∧ correctdd053 ∧ correct051, true, step ≟ 2, show021 ∧ correct021 ∧ calculated021 ∧ calculated022 ∧ calculated023 ∧ correct022 ∧ show022 ∧ correct023, step ≟ 3, show030 ∧ show034 ∧ show031 ∧ show032 ∧ show033 ∧ correct031 ∧ calculated031, step ≟ 4, show040 ∧ show041 ∧ correct041 ∧ calculated041, step ≟ 4.5, show042 ∧ show043 ∧ correct042 ∧ calculated042) → clickableBtnNext
  55. If(step ≟ 2 ∧ ((¬(correct021 ∧ correct022)) ∨ (¬(calculated021 ∧ calculated022))), Corner[txt022, 1] + (0.05, -0.25), step ≟ 5, Corner[txt051, 1] + (0.05, -0.35), (1, 1), step ≟ 2 ∧ correct021 ∧ correct022, Corner[txt024, 1] + (0.05, -0.05), step ≟ 3 ∧ ((¬correct031) ∨ correct031 ∧ (¬calculated031)), Corner[txt032, 1] + (11.7, 0), step ≟ 4 ∧ ((¬correct041) ∨ correct041 ∧ (¬calculated041)), Corner[txt041, 1] + (9.25, 0), step ≟ 4.5, Corner[txt042, 1] + (8.2, -0.4)) → PosBtnSolution
  56. Text((((("\textsf{\footnotesize{Rechteck_4: A = \textcolor{" * If[correctdd053, "#db6114", "black"]) * "}{\bold{2,8}}44 \cdot \textcolor{") * If[correctdd053, "#db6114", "black"]) * "}{\bold{2,8}}13 ≈ 8 cm²}}"), Vertex[poly042(1), 3] + (0.25, 0.5), false, true, 1, 0) → CapR045