Heron's Formula Demonstration
Loading the math board and drawing, please wait…
In collections
Quadratzahlen und Quadratwurzeln
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
Sequence(Random[1, 10], i, 1, 10) → randomNumbers, {9, 2, 3, 9, 10, 2, 10, 6, 1, 2}Element(randomNumbers, Mod[questionCount, Length[randomNumbers]] + 1) → randomNumberTextfield(input) → inputBoxJoin({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]}) → RasterStreckenJoin({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]}) → RasterBeschriftungSequence(Sequence[Corner[4] + (RasterPixMat * ((k * RasterStepXY), (m * RasterStepXY))), k, 0, RasterMaxX / RasterStepXY], m, 0, RasterMaxY / RasterStepXY) → RasterPunkteTextfield(input031) → InputBox031Textfield(input041) → InputBox041Textfield(input042) → InputBox042PolyLine(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) → sb02PolyLine(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) → sb05PolyLine(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) → sb06Textfield(input021) → InputBox021Textfield(input022) → InputBox022Textfield(input023) → InputBox023Textfield(input051) → InputBox051SelectedIndex(dropdown011) → index011SelectedIndex(dropdown051) → index051SelectedIndex(dropdown052) → index052SelectedIndex(dropdown053) → index053Sequence(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]) → PosPBoxListText("\textsf{\sqrt{1}}", PosP1 + (0, 0.05), false, true, 0, 0) → txtDD1Text("\textsf{\sqrt{2}}", PosP2 + (0, 0.05), false, true, 0, 0) → txtDD2Text("\textsf{\sqrt{4}}", PosP3 + (0, 0.05), false, true, 0, 0) → txtDD3Text("\textsf{\sqrt{8}}", PosP4 + (0, 0.05), false, true, 0, 0) → txtDD4Text("\textsf{\sqrt{16}}", PosP5 + (0, 0.05), false, true, 0, 0) → txtDD5Text("\textsf{\sqrt{38}}", PosP6 + (0, 0.05), false, true, 0, 0) → txtDD6Text("\textsf{\sqrt{49}}", PosP7 + (0, 0.05), false, true, 0, 0) → txtDD7Sequence(PosPark01 + (k * ((2 * widthDD) + 0.5, 0)), k, 0, 6) → PosParkListSegment(Origin + ((minX / stepX * disX) - edgeAxisX, 0), Origin + ((maxX / stepX * disX) + edgeAxisX, 0)) → segAxisXSegment(Origin + (0, (minY / stepY * disY) - edgeAxisY), Origin + (0, (maxY / stepY * disY) + edgeAxisY)) → segAxisYSequence(Origin + ((minX / stepX * disX), 0) + (k * (disX, 0)), k, 0, maxX / stepX - minX / stepX) → PointsXAxisSequence(Origin + (0, (minY / stepY * disY)) + (k * (0, disY)), k, 0, maxY / stepY - minY / stepY) → PointsYAxisSequence(Segment[PointsXAxis(k) + (0, (-disSeg)), PointsXAxis(k) + (0, disSeg)], k, 1, Length[PointsXAxis]) → segXAxisSequence(Segment[PointsYAxis(k) + ((-disSeg), 0), PointsYAxis(k) + (disSeg, 0)], k, 1, Length[PointsYAxis]) → segYAxisSequence(m, m, minX, maxX, stepX) → numbersXAxisSequence(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) → CapXSequence(m, m, minY, maxY, stepY) → numbersYAxisSequence(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) → CapYPolyLine(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) → sb03PolyLine(Sequence[Vertex[poly032(1), k], k, 2, 4]) → segPoly032PolyLine(Sequence[Vertex[poly033(1), k], k, 2, 4]) → segPoly033PolyLine(Sequence[Vertex[poly041(1), k], k, 2, 4]) → segPoly041PolyLine(Sequence[Vertex[poly042(1), k], k, 2, 4]) → segPoly042Text((((("\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) → CapR01Text((((((((((("\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) → CapR02Text((((((((((("\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) → CapR03Text((((("\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) → CapR04Segment(Midpoint[Corner[CapR01, 1], Corner[CapR01, 4]], Vertex[poly032(1), 3] + (0.05, 0.05)) → arrowR01Segment(Midpoint[Corner[CapR02, 1], Corner[CapR02, 4]], Vertex[poly033(1), 3] + (0.05, 0.05)) → arrowR02Segment(Midpoint[Corner[CapR03, 1], Corner[CapR03, 4]], Vertex[poly041(1), 3] + (0.05, 0.05)) → arrowR03Segment(Midpoint[Corner[CapR04, 1], Corner[CapR04, 4]], Vertex[poly042(1), 3] + (0.05, 0.05)) → arrowR04Textfield(inputTxt051) → InputBoxTxt051If(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) → clickableBtnNextIf(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)) → PosBtnSolutionText((((("\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