比例模型

比例模型
几何画板及绘图内容加载中,请稍等……
2017-03-13 02:03
这个范例演示了如何通过条形图模型来表示和理解比例关系。核心数学概念包括比例和百分比。通过使用GeoGebra命令如If, SelectedIndex, Segment等,可以构造条形图模型来表示不同数量之间的比例关系。适合初中及以上学生学习比例和百分比的概念。

GeoGebra 命令及参数

  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