分数关系与视觉模型
几何画板及绘图内容加载中,请稍等……
这个范例通过视觉模型演示分数之间的关系。涉及的核心数学概念包括分数、特殊点、集合论、有理数和椭圆。作图要点使用了GeoGebra的Segment、Point、Min、Polygon、Sequence、If、Textfield等命令和对象。适合初中及以上学生学习和理解分数的几何表示。
GeoGebra 命令及参数
Segment((x(AllVisualsMasterBottomRight) + (1 / 16 * numLineHorizLength), y(AllVisualsMasterPt) - 0.9), AllVisualsMasterBottomRight + ((1 / 16 * numLineHorizLength), 0.3)) → dragSegMasterPoint(dragSegMaster) → dragNumLineFrac1Min(frac1num, (2 * frac1denom)) → frac1MinNum2DenomMin(frac2num, (2 * frac2denom)) → frac2MinNum2DenomPoint(dragSegMaster) → dragNumLineFrac2Polygon(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, relationshipBoxSegPoint(dragSegMaster) → dragTapeFrac1Point(dragSegMaster) → dragTapeFrac2Polygon((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, outlineFrac1BorderPolygon((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_2Polygon((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_1Polygon((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_1Sequence(Segment[(x(AllVisualsMasterPt) + i, y(dragNumLineFrac1) - tickHeightUnit), (x(AllVisualsMasterPt) + i, y(dragNumLineFrac1) + tickHeightUnit)], i, x(AllVisualsMasterPt), x(AllVisualsMasterPt) + numLineHorizLength, (numLineHorizLength - x(AllVisualsMasterPt)) / maxNumLineValue) → tickNumLineUnitsFrac1Sequence(Segment[(x(AllVisualsMasterPt) + i, y(dragNumLineFrac2) - tickHeightUnit), (x(AllVisualsMasterPt) + i, y(dragNumLineFrac2) + tickHeightUnit)], i, x(AllVisualsMasterPt), x(AllVisualsMasterPt) + numLineHorizLength, (numLineHorizLength - x(AllVisualsMasterPt)) / maxNumLineValue) → tickNumLineUnitsFrac2Sequence(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) → tapeDividersUnitsFrac1Sequence(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) → tapeDividersUnitsFrac2Segment((x(AllVisualsMasterPt), 1), (x(AllVisualsMasterBottomRight) + (1 / 16 * numLineHorizLength), 1)) → compareDragSegPoint(compareDragSeg) → DragCompareSegment(DragCompare + (0, 0.3), (x(DragCompare), y(AllVisualsMasterPt) + 0.2)) → compareVertSegSequence((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]])) → locationNumLineUnitsFrac1Sequence((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]])) → locationNumLineUnitsFrac2Sequence(Vector[(allVisualsHorizMid, y(dragNumLineFrac1)), (x(AllVisualsMasterPt) - (1 / 24 * numLineHorizLength) + i, y(dragNumLineFrac1))], i, 0, (numLineHorizLength * (1 + 1 / 12)), (numLineHorizLength * (1 + 1 / 12))) → numLineFrac1LineSequence(Vector[(allVisualsHorizMid, y(dragNumLineFrac2)), (x(AllVisualsMasterPt) - (1 / 24 * numLineHorizLength) + i, y(dragNumLineFrac2))], i, 0, (numLineHorizLength * (1 + 1 / 12)), (numLineHorizLength * (1 + 1 / 12))) → numLineFrac2LineSegment(relationshipBoxMasterPt + ((-relationshipBoxWidth), -3), relationshipBoxMasterPt + (relationshipBoxWidth, -3)) → relationshipWordsDividerIf(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}]]) → endLinesSegSequence(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) → labelsNumLineUnitsFrac1Sequence(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) → labelsNumLineUnitsFrac2Sequence(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]) → tapeDividersFrac1Sequence(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]) → tapeDividersFrac2Textfield(commonInterval) → InputBoxCommonIntervalsSequence(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]]]) → tickNumLineMinorFrac1Sequence(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