Fraction Relationships with Visual Models

Fraction Relationships with Visual Models
Loading the math board and drawing, please wait…
2016-08-03 10:33
This example demonstrates fraction relationships using visual models. Core math concepts include fractions, special points, set theory, rational numbers, and ellipses. Construction highlights the use of GeoGebra commands and objects like Segment, Point, Min, Polygon, Sequence, If, Textfield. Suitable for middle school and above students to learn and understand geometric representations of fractions.

GeoGebra Commands & Parameters

  1. Segment((x(AllVisualsMasterBottomRight) + (1 / 16 * numLineHorizLength), y(AllVisualsMasterPt) - 0.9), AllVisualsMasterBottomRight + ((1 / 16 * numLineHorizLength), 0.3)) → dragSegMaster
  2. Point(dragSegMaster) → dragNumLineFrac1
  3. Min(frac1num, (2 * frac1denom)) → frac1MinNum2Denom
  4. Min(frac2num, (2 * frac2denom)) → frac2MinNum2Denom
  5. Point(dragSegMaster) → dragNumLineFrac2
  6. Polygon(relationshipBoxMasterPt + ((-relationshipBoxWidth), 0), relationshipBoxMasterPt + (relationshipBoxWidth, 0), relationshipBoxMasterPt + (relationshipBoxWidth, If[relationshipShow ≟ 2, -5.1, -3]), relationshipBoxMasterPt + ((-relationshipBoxWidth), If[relationshipShow ≟ 2, -5.1, -3])) → relationshipBox, relationshipBoxSeg_1, g, h, relationshipBoxSeg
  7. Point(dragSegMaster) → dragTapeFrac1
  8. Point(dragSegMaster) → dragTapeFrac2
  9. Polygon((x(AllVisualsMasterPt), y(dragTapeFrac1) - tapeHeight), (x(AllVisualsMasterBottomRight), y(dragTapeFrac1) - tapeHeight), (x(AllVisualsMasterBottomRight), y(dragTapeFrac1) + tapeHeight), (x(AllVisualsMasterPt), y(dragTapeFrac1) + tapeHeight)) → tapeOutlineFrac1, outlineFrac1Border_1, outlineFrac1Border_2, outlineFrac1Border_3, outlineFrac1Border
  10. Polygon((x(AllVisualsMasterPt), y(dragTapeFrac2) - tapeHeight), (x(AllVisualsMasterBottomRight), y(dragTapeFrac2) - tapeHeight), (x(AllVisualsMasterBottomRight), y(dragTapeFrac2) + tapeHeight), (x(AllVisualsMasterPt), y(dragTapeFrac2) + tapeHeight)) → tapeOutlineFrac2, outlineFrac2Border_3, outlineFrac2Border, outlineFrac2Border_1, outlineFrac2Border_2
  11. Polygon((x(AllVisualsMasterPt), y(dragTapeFrac1) - tapeHeight), (x(Frac1HorizPositionMasterPt), y(dragTapeFrac1) - tapeHeight), (x(Frac1HorizPositionMasterPt), y(dragTapeFrac1) + tapeHeight), (x(AllVisualsMasterPt), y(dragTapeFrac1) + tapeHeight)) → tapePartFrac1, c, d, e, f_1
  12. Polygon((x(AllVisualsMasterPt), y(dragTapeFrac2) - tapeHeight), (x(Frac2HorizPositionMasterPt), y(dragTapeFrac2) - tapeHeight), (x(Frac2HorizPositionMasterPt), y(dragTapeFrac2) + tapeHeight), (x(AllVisualsMasterPt), y(dragTapeFrac2) + tapeHeight)) → tapePartFrac2, g_1, h_1, i_1, j_1
  13. Sequence(Segment[(x(AllVisualsMasterPt) + i, y(dragNumLineFrac1) - tickHeightUnit), (x(AllVisualsMasterPt) + i, y(dragNumLineFrac1) + tickHeightUnit)], i, x(AllVisualsMasterPt), x(AllVisualsMasterPt) + numLineHorizLength, (numLineHorizLength - x(AllVisualsMasterPt)) / maxNumLineValue) → tickNumLineUnitsFrac1
  14. Sequence(Segment[(x(AllVisualsMasterPt) + i, y(dragNumLineFrac2) - tickHeightUnit), (x(AllVisualsMasterPt) + i, y(dragNumLineFrac2) + tickHeightUnit)], i, x(AllVisualsMasterPt), x(AllVisualsMasterPt) + numLineHorizLength, (numLineHorizLength - x(AllVisualsMasterPt)) / maxNumLineValue) → tickNumLineUnitsFrac2
  15. Sequence(Segment[(x(AllVisualsMasterPt) + i, y(dragTapeFrac1) - tapeHeight), (x(AllVisualsMasterPt) + i, y(dragTapeFrac1) + tapeHeight)], i, x(AllVisualsMasterPt) + (numLineHorizLength - x(AllVisualsMasterPt)) / maxNumLineValue, x(AllVisualsMasterPt) + numLineHorizLength - (numLineHorizLength - x(AllVisualsMasterPt)) / maxNumLineValue, (numLineHorizLength - x(AllVisualsMasterPt)) / maxNumLineValue) → tapeDividersUnitsFrac1
  16. Sequence(Segment[(x(AllVisualsMasterPt) + i, y(dragTapeFrac2) - tapeHeight), (x(AllVisualsMasterPt) + i, y(dragTapeFrac2) + tapeHeight)], i, x(AllVisualsMasterPt) + (numLineHorizLength - x(AllVisualsMasterPt)) / maxNumLineValue, x(AllVisualsMasterPt) + numLineHorizLength - (numLineHorizLength - x(AllVisualsMasterPt)) / maxNumLineValue, (numLineHorizLength - x(AllVisualsMasterPt)) / maxNumLineValue) → tapeDividersUnitsFrac2
  17. Segment((x(AllVisualsMasterPt), 1), (x(AllVisualsMasterBottomRight) + (1 / 16 * numLineHorizLength), 1)) → compareDragSeg
  18. Point(compareDragSeg) → DragCompare
  19. Segment(DragCompare + (0, 0.3), (x(DragCompare), y(AllVisualsMasterPt) + 0.2)) → compareVertSeg
  20. Sequence((x(AllVisualsMasterPt) + i, y(dragNumLineFrac1) - 0.5), i, x(AllVisualsMasterPt), x(AllVisualsMasterPt) + numLineHorizLength, ((numLineHorizLength - x(AllVisualsMasterPt)) / maxNumLineValue * If[maxNumLineValue > 34, 5, If[maxNumLineValue > 25, 2, 1]])) → locationNumLineUnitsFrac1
  21. Sequence((x(AllVisualsMasterPt) + i, y(dragNumLineFrac2) - 0.5), i, x(AllVisualsMasterPt), x(AllVisualsMasterPt) + numLineHorizLength, ((numLineHorizLength - x(AllVisualsMasterPt)) / maxNumLineValue * If[maxNumLineValue > 34, 5, If[maxNumLineValue > 25, 2, 1]])) → locationNumLineUnitsFrac2
  22. Sequence(Vector[(allVisualsHorizMid, y(dragNumLineFrac1)), (x(AllVisualsMasterPt) - (1 / 24 * numLineHorizLength) + i, y(dragNumLineFrac1))], i, 0, (numLineHorizLength * (1 + 1 / 12)), (numLineHorizLength * (1 + 1 / 12))) → numLineFrac1Line
  23. Sequence(Vector[(allVisualsHorizMid, y(dragNumLineFrac2)), (x(AllVisualsMasterPt) - (1 / 24 * numLineHorizLength) + i, y(dragNumLineFrac2))], i, 0, (numLineHorizLength * (1 + 1 / 12)), (numLineHorizLength * (1 + 1 / 12))) → numLineFrac2Line
  24. Segment(relationshipBoxMasterPt + ((-relationshipBoxWidth), -3), relationshipBoxMasterPt + (relationshipBoxWidth, -3)) → relationshipWordsDivider
  25. If(splitNumLineCk ≟ false, Zip[Sequence[Segment[A + (i, 0), B + (i, 0)], i, x(AllVisualsMasterPt), x(AllVisualsMasterPt) + numLineHorizLength, x(AllVisualsMasterPt) + numLineHorizLength], A, {(x(AllVisualsMasterPt), y(DragCompare) + 0.2), (x(AllVisualsMasterPt), y(dragNumLineFrac1) + 0.3)}, B, {(x(AllVisualsMasterPt), y(dragNumLineFrac1) - 0.7), AllVisualsMasterPt}], If[y(dragNumLineFrac2) ≤ y(dragNumLineFrac1), Zip[Sequence[Segment[A + (i, 0), B + (i, 0)], i, x(AllVisualsMasterPt), x(AllVisualsMasterPt) + numLineHorizLength, x(AllVisualsMasterPt) + numLineHorizLength], A, {(x(AllVisualsMasterPt), y(DragCompare) + 0.2), (x(AllVisualsMasterPt), y(dragNumLineFrac2) + 0.3), (x(AllVisualsMasterPt), y(dragNumLineFrac1) + 0.3)}, B, {(x(AllVisualsMasterPt), y(dragNumLineFrac2) - 0.7), (x(AllVisualsMasterPt), y(dragNumLineFrac1) - 0.7), AllVisualsMasterPt}], Zip[Sequence[Segment[A + (i, 0), B + (i, 0)], i, x(AllVisualsMasterPt), x(AllVisualsMasterPt) + numLineHorizLength, x(AllVisualsMasterPt) + numLineHorizLength], A, {(x(AllVisualsMasterPt), y(DragCompare) + 0.2), (x(AllVisualsMasterPt), y(dragNumLineFrac1) + 0.3), (x(AllVisualsMasterPt), y(dragNumLineFrac2) + 0.3)}, B, {(x(AllVisualsMasterPt), y(dragNumLineFrac1) - 0.7), (x(AllVisualsMasterPt), y(dragNumLineFrac2) - 0.7), AllVisualsMasterPt}]]) → endLinesSeg
  26. Sequence(Text[(i * If[maxNumLineValue > 34, 5, If[maxNumLineValue > 25, 2, 1]]), Element[locationNumLineUnitsFrac1, i + 1] - (If[(i * If[maxNumLineValue > 34, 5, If[maxNumLineValue > 25, 2, 1]]) ≥ 10, 0.26, 0.13], 0.15)], i, 0, maxNumLineValue, 1) → labelsNumLineUnitsFrac1
  27. Sequence(Text[(i * If[maxNumLineValue > 34, 5, If[maxNumLineValue > 25, 2, 1]]), Element[locationNumLineUnitsFrac2, i + 1] - (If[(i * If[maxNumLineValue > 34, 5, If[maxNumLineValue > 25, 2, 1]]) ≥ 10, 0.26, 0.13], 0.15)], i, 0, maxNumLineValue, 1) → labelsNumLineUnitsFrac2
  28. Sequence(Segment[(x(AllVisualsMasterPt) + i, y(dragTapeFrac1) - tapeHeight), (x(AllVisualsMasterPt) + i, y(dragTapeFrac1) + tapeHeight)], i, x(AllVisualsMasterPt), x(AllVisualsMasterPt) + numLineHorizLength, (numLineHorizLength - x(AllVisualsMasterPt)) / maxNumLineValue / If[commonIntervalsShow > 0, commonInterval, frac1denom]) → tapeDividersFrac1
  29. Sequence(Segment[(x(AllVisualsMasterPt) + i, y(dragTapeFrac2) - tapeHeight), (x(AllVisualsMasterPt) + i, y(dragTapeFrac2) + tapeHeight)], i, x(AllVisualsMasterPt), x(AllVisualsMasterPt) + numLineHorizLength, (numLineHorizLength - x(AllVisualsMasterPt)) / maxNumLineValue / If[commonIntervalsShow > 0, commonInterval, frac2denom]) → tapeDividersFrac2
  30. Textfield(commonInterval) → InputBoxCommonIntervals
  31. Sequence(Segment[(x(AllVisualsMasterPt) + i, y(dragNumLineFrac1) - tickHeightMinor), (x(AllVisualsMasterPt) + i, y(dragNumLineFrac1) + tickHeightMinor)], i, x(AllVisualsMasterPt), x(AllVisualsMasterPt) + numLineHorizLength, (numLineHorizLength - x(AllVisualsMasterPt)) / maxNumLineValue / If[commonIntervalsShow > 0, commonInterval, If[splitNumLineCk, frac1denom, If[frac1denom < frac2denom, frac1denom, frac2denom]]]) → tickNumLineMinorFrac1
  32. Sequence(Segment[(x(AllVisualsMasterPt) + i, y(dragNumLineFrac2) - tickHeightMinor), (x(AllVisualsMasterPt) + i, y(dragNumLineFrac2) + tickHeightMinor)], i, x(AllVisualsMasterPt), x(AllVisualsMasterPt) + numLineHorizLength, (numLineHorizLength - x(AllVisualsMasterPt)) / maxNumLineValue / If[commonIntervalsShow > 0, commonInterval, frac2denom]) → tickNumLineMinorFrac2