分数关系与视觉模型

分数关系与视觉模型
几何画板及绘图内容加载中,请稍等……
2016-08-03 10:33
这个范例通过视觉模型演示分数之间的关系。涉及的核心数学概念包括分数、特殊点、集合论、有理数和椭圆。作图要点使用了GeoGebra的Segment、Point、Min、Polygon、Sequence、If、Textfield等命令和对象。适合初中及以上学生学习和理解分数的几何表示。

GeoGebra 命令及参数

  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