Modeling Ratios

Modeling Ratios
Loading the math board and drawing, please wait…
2017-03-13 02:03
This example demonstrates how to model and understand ratio relationships using bar chart models. Key mathematical concepts include ratios and percentages. Using GeoGebra commands such as If, SelectedIndex, Segment, etc., bar chart models are constructed to represent the ratio relationship between different quantities. Suitable for middle school and above students to learn about ratios and percentages.

GeoGebra Commands & Parameters

  1. If(quantity1 ≥ quantity2, ceil(quantity1), ceil(quantity2)) → ceilGreaterOfQuantity12
  2. SelectedIndex(visualType) → visualTypeSelected
  3. Segment(VisualsMasterPt + ((quantity1 * unit), (2 * tapeDiagramModelsHeight) + tapeDiagramModelsVerticalGap), VisualsMasterPt + ((quantity1 * unit), tapeDiagramModelsHeight)) → tapeDiagram1PartWholeSlideSeg
  4. Point(tapeDiagram1PartWholeSlideSeg) → TapeDiagram1PartWholeSlidePt
  5. Polygon((-10, If[step2, -0.5, -3]), (99.12, If[step2, -0.5, -3]), (19.316210333404847, 97.60475090909095), (-9.803789666595154, 17.60475090909091)) → BackgroundYellow, f, g, h, i
  6. If(step1, VisualsMasterPt + (5.6 - (0.6 * setModelRowCount), setModelVerticalOffset), (4.8, 8)) → Mix1cupsGreenImagesMasterPt
  7. If(step1, VisualsMasterPt + (5.6 - (0.6 * setModelRowCount), setModelVerticalOffset), (10.5, 8)) → Mix1cupsWhiteImagesMasterPt
  8. Polygon(TapeDiagram1PartWholeRefPt, TapeDiagram1PartWholeRefPt + ((quantity1 * unit), 0), TapeDiagram1PartWholeRefPt + ((quantity1 * unit), tapeDiagramModelsHeight), TapeDiagram1PartWholeRefPt + (0, tapeDiagramModelsHeight)) → tapeDiagram1Quantity1Poly, tapeDiagram1Quantity1PolySeg_1, tapeDiagram1Quantity1PolySeg_2, tapeDiagram1Quantity1PolySeg_3, tapeDiagram1Quantity1PolySeg
  9. Polygon(VisualsMasterPt + (0, 0), VisualsMasterPt + ((quantity2 * unit), 0), VisualsMasterPt + ((quantity2 * unit), tapeDiagramModelsHeight), VisualsMasterPt + (0, tapeDiagramModelsHeight)) → tapeDiagram1Quantity2Poly, tapeDiagram1Quantity2PolySeg_1, tapeDiagram1Quantity2PolySeg_2, tapeDiagram1Quantity2PolySeg_3, tapeDiagram1Quantity2PolySeg
  10. Polygon(VisualsMasterPt + (0, tapeDiagram2VerticalOffset), VisualsMasterPt + (tapeDiagramModelsWidth, tapeDiagram2VerticalOffset), VisualsMasterPt + (tapeDiagramModelsWidth, tapeDiagramModelsHeight + tapeDiagram2HeightDiff + tapeDiagram2VerticalOffset), VisualsMasterPt + (0, tapeDiagramModelsHeight + tapeDiagram2HeightDiff + tapeDiagram2VerticalOffset)) → tapeDiagram2Outline, tapeDiagram2OutlineSeg_1, tapeDiagram2OutlineSeg_2, tapeDiagram2OutlineSeg_3, tapeDiagram2OutlineSeg
  11. Polygon(VisualsMasterPt + (0, tapeDiagram2VerticalOffset), VisualsMasterPt + ((quantity1 * unit), tapeDiagram2VerticalOffset), VisualsMasterPt + ((quantity1 * unit), tapeDiagramModelsHeight + tapeDiagram2HeightDiff + tapeDiagram2VerticalOffset), VisualsMasterPt + (0, tapeDiagramModelsHeight + tapeDiagram2HeightDiff + tapeDiagram2VerticalOffset)) → tapeDiagram2Quantity1Poly, tapeDiagram2Quantity1PolySeg_1, tapeDiagram2Quantity1PolySeg_2, tapeDiagram2Quantity1PolySeg_3, tapeDiagram2Quantity1PolySeg
  12. Midpoint(VisualsMasterPt, VisualsMasterPt + (tapeDiagramModelsWidth, 7)) → CircleModelCenter
  13. Circle(CircleModelCenter, circleModelRadius) → mix1circleModelOutline
  14. Circle(CircleModelCenter, circleModelRadius) → circleModelWhiteBackground
  15. Conic((15.8, 6.2), (20, 6.1), (20.2, 9.3), (17, 9.8), (15.4, 8.44)) → feedbackBackgroundWhite
  16. Polygon((-100, 6.65), (100, 6.65), (100, 9.2), (-100, 9.2)) → questionBackgroundWhite, i_1, m_1, n_1, p_1
  17. Conic((15.8, 6.2), (20, 6.1), (20.2, 9.3), (17, 9.8), (15.4, 8.44)) → feedbackBackgroundWhiteBorder
  18. Textfield(quantity1LabelForLengthAlwaysShow) → quantity1labelInputBox
  19. Textfield(quantity2LabelForLengthAlwaysShow) → quantity2labelInputBox
  20. Polygon(ColorBoxesPt + (0, colorBoxesGap), ColorBoxesPt + (colorBoxesWidth, colorBoxesGap), ColorBoxesPt + (colorBoxesWidth, colorBoxesGap + colorBoxesHeight), ColorBoxesPt + (0, colorBoxesGap + colorBoxesHeight)) → step1ColorBoxQuantity1Red, step1ColorBoxQuantity1RedSeg_1, step1ColorBoxQuantity1RedSeg, step1ColorBoxQuantity1RedSeg_2, step1ColorBoxQuantity1RedSeg_3
  21. Polygon(ColorBoxesPt + (0, 0), ColorBoxesPt + (colorBoxesWidth, 0), ColorBoxesPt + (colorBoxesWidth, colorBoxesHeight), ColorBoxesPt + (0, colorBoxesHeight)) → step1ColorBoxQuantity2Blue, step1ColorBoxQuantity2BlueSeg_1, step1ColorBoxQuantity2BlueSeg_2, step1ColorBoxQuantity2BlueSeg_3, step1ColorBoxQuantity2BlueSeg
  22. Textfield(quantity1) → quantity1valueInputBox
  23. Textfield(quantity2) → quantity2valueInputBox
  24. Sequence(Segment[CircleModelCenter, Rotate[CircleModelSectorRefPt, ((i * 2) * π / sumQuantity12), CircleModelCenter]], i, 0, sumQuantity12 - 1, 1) → circleModelDividers
  25. Polygon(TapeDiagram1PartWholeRefPt, TapeDiagram1PartWholeRefPt + ((ceil(quantity1) * unit), 0), TapeDiagram1PartWholeRefPt + ((ceil(quantity1) * unit), tapeDiagramModelsHeight), TapeDiagram1PartWholeRefPt + (0, tapeDiagramModelsHeight)) → tapeDiagram1Quantity1PolyWhite, tapeDiagram1Quantity1PolyWhiteSeg_1, tapeDiagram1Quantity1PolyWhiteSeg_2, tapeDiagram1Quantity1PolyWhiteSeg_3, tapeDiagram1Quantity1PolyWhiteSeg
  26. Polygon(VisualsMasterPt + (0, 0), VisualsMasterPt + ((ceil(quantity2) * unit), 0), VisualsMasterPt + ((ceil(quantity2) * unit), tapeDiagramModelsHeight), VisualsMasterPt + (0, tapeDiagramModelsHeight)) → tapeDiagram1Quantity2PolyWhite, tapeDiagram1Quantity2PolyWhiteSeg_2, tapeDiagram1Quantity2PolyWhiteSeg_3, tapeDiagram1Quantity2PolyWhiteSeg, tapeDiagram1Quantity2PolyWhiteSeg_1
  27. Polygon(VisualsMasterPt + ((quantity1 * unit), tapeDiagram2VerticalOffset), VisualsMasterPt + (If[ratioType ≟ 0 ∧ visualTypeSelected ≟ 2, (quantity1 * unit), 0] + (quantity2 * unit), tapeDiagram2VerticalOffset), VisualsMasterPt + (If[ratioType ≟ 0 ∧ visualTypeSelected ≟ 2, (quantity1 * unit), 0] + (quantity2 * unit), tapeDiagramModelsHeight + tapeDiagram2HeightDiff + tapeDiagram2VerticalOffset), VisualsMasterPt + ((quantity1 * unit), tapeDiagramModelsHeight + tapeDiagram2HeightDiff + tapeDiagram2VerticalOffset)) → tapeDiagram2Quantity2Poly, tapeDiagram2Quantity2PolySeg_1, tapeDiagram2Quantity2PolySeg_2, tapeDiagram2Quantity2PolySeg_3, tapeDiagram2Quantity2PolySeg
  28. Polygon((2, -0.75), (19, -0.75), (19, 9.5), (2, 9.5)) → step1WhiteField, step1WhiteFieldSeg_1, step1WhiteFieldSeg_2, step1WhiteFieldSegTop, step1WhiteFieldSegLeft
  29. CircleSector(CircleModelCenter, CircleModelSectorRefPt, Rotate[CircleModelSectorRefPt, ((2 * π) * quantity1 / sumQuantity12), CircleModelCenter]) → circleModelSectorQuantity1
  30. CircleSector(CircleModelCenter, Rotate[CircleModelSectorRefPt, ((2 * π) * quantity1 / sumQuantity12), CircleModelCenter], CircleModelSectorRefPt) → circleModelSectorQuantity2
  31. Sequence(Segment[VisualsMasterPt + (i, tapeDiagram2VerticalOffset), VisualsMasterPt + (i, tapeDiagramModelsHeight + tapeDiagram2HeightDiff + tapeDiagram2VerticalOffset)], i, 0, (quantity1 * unit), unit) → tapeDiagram2Quantity1Dividers
  32. Sequence(Segment[VisualsMasterPt + ((quantity1 * unit) + i, tapeDiagram2VerticalOffset), VisualsMasterPt + ((quantity1 * unit) + i, tapeDiagramModelsHeight + tapeDiagram2HeightDiff + tapeDiagram2VerticalOffset)], i, 0, (If[ratioType ≟ 1, quantity2 - quantity1, quantity2] * unit), unit) → tapeDiagram2Quantity2Dividers
  33. Segment(VisualsMasterPt + (0, tapeDiagramModelsHeight + tapeDiagramModelsVerticalGap - marksOffsetLine), VisualsMasterPt + ((ceil(quantity1) * unit), tapeDiagramModelsHeight + tapeDiagramModelsVerticalGap - marksOffsetLine)) → tapeDiagram1Quantity1marksLine
  34. Textfield(marksFrac) → marksFracInputBox
  35. Segment(VisualsMasterPt + (0, tapeDiagramModelsHeight + marksOffsetLine), VisualsMasterPt + ((ceil(quantity2) * unit), tapeDiagramModelsHeight + marksOffsetLine)) → tapeDiagram1Quantity2marksLine
  36. Sequence(Segment[TapeDiagram1PartWholeRefPt + (i, 0), TapeDiagram1PartWholeRefPt + (i, tapeDiagramModelsHeight)], i, 0, (quantity1 * unit), unit) → tapeDiagram1Quantity1Dividers
  37. Segment(VisualsMasterPt + (0, tapeDiagramModelsHeight), TapeDiagram1PartWholeRefPt) → tapeDiagram1PartWholeRefLine1
  38. Segment(VisualsMasterPt + ((quantity1 * unit), tapeDiagramModelsHeight), TapeDiagram1PartWholeRefPt + ((quantity1 * unit), 0)) → tapeDiagram1PartWholeRefLine2
  39. Segment(TapeDiagram12Quantity2BraceRefPt + (0, (-tapeDiagram12BraceTriHeight)), TapeDiagram12Quantity2BraceRefPt + (tapeDiagram12BraceTriWidth, 0)) → tapeDiagram12Quantity2BraceTriSegR
  40. Segment(TapeDiagram12Quantity2BraceRefPt + (0, (-tapeDiagram12BraceTriHeight)), TapeDiagram12Quantity2BraceRefPt + ((-tapeDiagram12BraceTriWidth), 0)) → tapeDiagram12Quantity2BraceTriSegL
  41. Sequence(Segment[VisualsMasterPt + (0 + i, 0), VisualsMasterPt + (0 + i, tapeDiagramModelsHeight)], i, 0, (quantity2 * unit), unit) → tapeDiagram1Quantity2Dividers
  42. Sequence(Segment[VisualsMasterPt + (i, tapeDiagram2VerticalOffset - marksOffset), VisualsMasterPt + (i, tapeDiagram2VerticalOffset - marksOffset + marksHeight)], i, 0, tapeDiagramModelsWidth, (marksFrac * unit)) → tapeDiagram2marks
  43. Segment(TapeDiagram12Quantity2BraceRefPt + ((-tapeDiagram12BraceTriWidth), 0), (x(VisualsMasterPt) + If[ratioType ≟ 1 ∨ visualTypeSelected ≟ 1, 0, (quantity1 * unit)], y(TapeDiagram12Quantity2BraceRefPt))) → tapeDiagram12Quantity2BraceSegL
  44. Segment((x(VisualsMasterPt) + If[ratioType ≟ 1 ∨ visualTypeSelected ≟ 1, 0, (quantity1 * unit)], y(TapeDiagram12Quantity2BraceRefPt)), (x(VisualsMasterPt) + If[ratioType ≟ 1 ∨ visualTypeSelected ≟ 1, 0, (quantity1 * unit)], y(TapeDiagram12Quantity2BraceRefPt) + 0.2)) → tapeDiagram12Quantity2BraceSegLCap
  45. Segment(TapeDiagram12Quantity2BraceRefPt + (tapeDiagram12BraceTriWidth, 0), (x(VisualsMasterPt) + If[ratioType ≟ 1 ∨ visualTypeSelected ≟ 1, 0, (quantity1 * unit)] + (quantity2 * unit), y(TapeDiagram12Quantity2BraceRefPt))) → tapeDiagram12Quantity2BraceSegR
  46. Segment((x(VisualsMasterPt) + If[ratioType ≟ 1 ∨ visualTypeSelected ≟ 1, 0, (quantity1 * unit)] + (quantity2 * unit), y(TapeDiagram12Quantity2BraceRefPt)), (x(VisualsMasterPt) + If[ratioType ≟ 1 ∨ visualTypeSelected ≟ 1, 0, (quantity1 * unit)] + (quantity2 * unit), y(TapeDiagram12Quantity2BraceRefPt) + 0.2)) → tapeDiagram12Quantity2BraceSegRCap
  47. Sequence(Segment[TapeDiagram1PartWholeRefPt + (i, (-marksOffset)), TapeDiagram1PartWholeRefPt + (i, (-marksOffset) + marksHeight)], i, 0, (ceil(quantity1) * unit), (marksFrac * unit)) → tapeDiagram1Quantity1marks
  48. Sequence(Segment[VisualsMasterPt + (i, tapeDiagramModelsHeight + marksOffset), VisualsMasterPt + (i, tapeDiagramModelsHeight + marksOffset - marksHeight)], i, 0, (ceil(quantity2) * unit), (marksFrac * unit)) → tapeDiagram1Quantity2marks
  49. Segment(TapeDiagram12Quantity1BraceRefPt + ((-tapeDiagram12BraceTriWidth), 0), (x(VisualsMasterPt), y(TapeDiagram12Quantity1BraceRefPt))) → tapeDiagram12Quantity1BraceSegL
  50. Segment(TapeDiagram12Quantity1BraceRefPt + (0, tapeDiagram12BraceTriHeight), TapeDiagram12Quantity1BraceRefPt + ((-tapeDiagram12BraceTriWidth), 0)) → tapeDiagram12Quantity1BraceTriSegL
  51. Segment(TapeDiagram12Quantity1BraceRefPt + (0, tapeDiagram12BraceTriHeight), TapeDiagram12Quantity1BraceRefPt + (tapeDiagram12BraceTriWidth, 0)) → tapeDiagram12Quantity1BraceTriSegR
  52. Segment((x(VisualsMasterPt), y(TapeDiagram12Quantity1BraceRefPt)), (x(VisualsMasterPt), y(TapeDiagram12Quantity1BraceRefPt) - 0.2)) → tapeDiagram12Quantity1BraceSegLCap
  53. Segment(TapeDiagram12Quantity1BraceRefPt + (tapeDiagram12BraceTriWidth, 0), (x(VisualsMasterPt) + (quantity1 * unit), y(TapeDiagram12Quantity1BraceRefPt))) → tapeDiagram12Quantity1BraceSegR
  54. Segment((x(VisualsMasterPt) + (quantity1 * unit), y(TapeDiagram12Quantity1BraceRefPt)), (x(VisualsMasterPt) + (quantity1 * unit), y(TapeDiagram12Quantity1BraceRefPt) - 0.2)) → tapeDiagram12Quantity1BraceSegRCap
  55. Sequence(Segment[(3 + k, 6), (9.4 + k, 6)], k, 0, 8.6, 8.6) → step1DividerSegments
  56. Polygon((4.4, 5.2), (4.4, 4), (6.5, 4), (6.5, 5.2)) → hideRatioLanguageList, j, k, l, m