Comparing Fractions Using a Benchmark
Loading the math board and drawing, please wait…
① This GeoGebra example demonstrates how to compare fractions using one-half (½) as a benchmark, with circular and half-circle visual models that make fraction size intuitive. ② The core mathematical concepts include benchmark numbers (zero, one-half, one), fraction comparison and ordering, fraction sense, and equivalent fractions. ③ Construction highlights: the applet uses commands such as RandomUniform to generate random fractions, Sequence and If to manage options, Circle and CircleSector to build circle and semicircle models, Translate and Zip to position objects, Text for labels, Slider (animateInequalityControl) to control animation, and draggable points (dragPointsFrac1/2) for interactive exploration, with KeepIf and IndexOf handling dynamic data. ④ It is designed for grades 4-5 students, suitable for classroom exploration or independent practice, and includes open-ended questions to deepen understanding of fraction comparison strategies.
GeoGebra Commands & Parameters
RandomUniform(0, 0.99, 200) → allRandomSeeds, {0.1488988986124473, 0.23412759938086947, 0.0171711996435389, 0.40870012227180524, 0.3310182530686135, 0.032659693657403524, 0.6595446679566607, 0.6586634599553712, 0.60557251414151, 0.25969809480574657, 0.5658762038087762, 0.9603097139239879, 0.022425739867138174, 0.2026864443060217, 0.09631657977948635, 0.6257268322122754, 0.8440319291454371, 0.5173709709176897, 0.669374033637702, 0.4083741391627455, 0.9849411602593822, 0.7022839645523604, 0.5060041826134926, 0.6437801077273141, 0.04661579065862672, 0.01460972249498697, 0.19779254251862305, 0.04617468810190421, 0.12864420596124188, 0.8451973584606085, 0.18185454715922122, 0.9778204375581194, 0.6813746449317322, 0.1987176741647721, 0.20448304609825724, 0.4102565859985069, 0.07736550337269653, 0.4891308927905225, 0.02841479634217346, 0.41006003102649147, 0.5698583419999401, 0.13073983065548392, 0.4848666803734707, 0.8960526152873576, 0.5457279665525939, 0.7211473705261503, 0.631209352890093, 0.010147936445472154, 0.9380501470821964, 0.9044204790192404, 0.04830016630922307, 0.9702323585169726, 0.8595494962323736, 0.6106818670951991, 0.6480891258814335, 0.8006133012990023, 0.04275168693983401, 0.44220856234554423, 0.3521407775679549, 0.013643887164386243, 0.1656614425081156, 0.985911621986174, 0.45518208801874804, 0.39514743289264237, 0.6232236301228712, 0.6378027301585873, 0.5046899723242427, 0.006215359336733127, 0.9346977688635758, 0.696724619765923, 0.37787494985531084, 0.8648417776517789, 0.2753868709509406, 0.5522286824816305, 0.6211955226303277, 0.6626836537561186, 0.8179093867961217, 0.7750286015721883, 0.9047557146520757, 0.7349989999403738, 0.42338882849019965, 0.10794082340184363, 0.06459186046896452, 0.6355173038816794, 0.7365585175614053, 0.4706432844942688, 0.6499467094521616, 0.6926343892177997, 0.5108394754756139, 0.3629402731613279, 0.32015826005302483, 0.8289006456591794, 0.8999476461976595, 0.0785173602666734, 0.946757676895947, 0.3622847690307481, 0.7115219075939824, 0.5544015865310703, 0.7207744206107319, 0.1751467304189589, 0.2556378284564827, 0.9705130138084982, 0.46308907656957604, 0.38524205552092494, 0.07688204594887221, 0.2688004403997181, 0.23695350440437526, 0.21240587953220538, 0.27291099693782034, 0.4224996289223751, 0.10651452393929994, 0.5248287200823469, 0.05510227574675574, 0.4930341293847656, 0.9733318622980132, 0.4000373069530971, 0.348031063936384, 0.8549993700532047, 0.12447284758782172, 0.6078322964728788, 0.7940635623929964, 0.5185275675864528, 0.3507955237502385, 0.01551085590650576, 0.08735826814319347, 0.883126418061643, 0.2624988624547894, 0.4697161058769986, 0.6580008111566006, 0.7878164656422483, 0.7809228236929364, 0.9442060324383394, 0.2118716881027566, 0.16906232025423362, 0.23092288985704343, 0.2687235393784539, 0.7251561959942516, 0.24060028531324343, 0.5469231472831371, 0.9709756254986845, 0.01415456872359297, 0.8178094907877757, 0.9479685129227263, 0.8014927099121302, 0.44123506879497315, 0.7237568399143482, 0.14275120186926502, 0.09984101513800041, 0.43639696330634914, 0.18446503402289985, 0.34467835480439213, 0.7302991893336088, 0.5509691967641621, 0.5873110616827971, 0.15957674552636522, 0.10568640685400604, 0.30547069881487976, 0.8987573473807077, 0.5345976707242913, 0.7495435467867618, 0.967591872823667, 0.42584973801217685, 0.7162892626384315, 0.5393191010455851, 0.23863105621341904, 0.8000871968325843, 0.8286450617721073, 0.216601219605994, 0.2975299491657133, 0.6123746565096662, 0.7982174199934429, 0.594763028235273, 0.2708999301847482, 0.9638160387482553, 0.8231005514488804, 0.7296515583267494, 0.025116918401095294, 0.21908648450500745, 0.0757429192625069, 0.655152902427123, 0.2726853247451972, 0.947043200095376, 0.4161400747147797, 0.6926036434255667, 0.7696323210977506, 0.2370910337288973, 0.08198836542254465, 0.5510958323295498, 0.5936916466523172, 0.1296146095789011, 0.6858468344406283, 0.7947357227393718, 0.05447170003910775, 0.3945207447384796, 0.8862591284215835, 0.7228678977075176, 0.6166756457449899, 0.5136049056196913, 0.9001284053711195, 0.9801655205097833}Sequence(((k * 2) * pi / frac2Den), k, 0, frac2Den - 1) → frac2Angles, {0, 3.141592653589793}If(animateInequalityControl ≥ 1, Min[1, animateInequalityControl - 1], 0) → animateInequality2S1Translate(circleLoc2Fixed, Vector[(animateInequality2S1 * Vector[circleLoc2Fixed, circleLoc2Final])]) → circleLoc2If(animateInequality2S1 > 0 ∧ indexMovingFrac ≟ 2, circleLoc2, fracP2) → frac2CenterSequence(((k * 2) * pi / frac1Den), k, 0, frac1Den - 1) → frac1Angles, {0, 3.141592653589793}If(animateInequality2S1 > 0 ∧ indexMovingFrac ≟ 1, circleLoc2, fracP1) → frac1CenterZip((x(frac2Center) + sin(A), y(frac2Center) + cos(A)), A, frac2Angles) → outerPointsFrac2Zip((x(frac1Center) + sin(A), y(frac1Center) + cos(A)), A, frac1Angles) → outerPointsFrac1Take(allRandomSeeds, randIndex, randIndex + numRandoms - 1) → currentRandomSeedsElement(frac1Options, 1 + floor((currentRandomSeeds(1) * Length[frac1Options]))) → frac1Element(frac1, 2) → den1Sequence(Rotate[outerPointsFrac1(1), (-360°) / a, frac1Center], a, 2, 9) → dragPointsFrac1Point(dragPointsFrac1) → dragPointFrac1Sequence(Rotate[outerPointsFrac2(1), (-360°) / a, frac2Center], a, 2, 9) → dragPointsFrac2Point(dragPointsFrac2) → dragPointFrac2Length(KeepIf[A ≟ true, A, frac2SectorClicked]) → frac2StudentNumLength(KeepIf[A ≟ true, A, frac1SectorClicked]) → frac1StudentNumElement(frac1, 1) → num1KeepIf(Element[A, 1] ≠ num1 ∧ Element[A, 2] ≠ den1, A, allFrac2Options) → frac2OptionsElement(frac2Options, 1 + floor((currentRandomSeeds(2) * Length[frac2Options]))) → frac2Sequence(FracStart + (((fracRadius * 3) + (3 * spaceBetween), 0) * k), k, 0, 1) → homeLocationsFracSequence(Rotate[dragPointFrac2, ((-b) * ((2 * pi)) / frac2DragDen), frac2Center], b, 1, frac2DragDen) → outerPointsFrac2DragSequence(Rotate[dragPointFrac1, ((-b) * ((2 * pi)) / frac1DragDen), frac1Center], b, 1, frac1DragDen) → outerPointsFrac1DragTranslate(halfCircleLoc2Stationary, Vector[(animateInequality2S1 * Vector[halfCircleLoc2Stationary, halfCircleLoc1])]) → halfCircleLoc2Element({{1, 2}, {2, 1}}, 1 + floor((currentRandomSeeds(1) * 2))) → orderElement(frac2, 2) → den2Element(frac2, 1) → num2Zip(CircleSector[frac1Center, A, B], B, outerPointsFrac1Drag, A, Join[{Take[outerPointsFrac1Drag, 2, frac1DragDen], {Element[outerPointsFrac1Drag, 1]}}]) → frac1AllSectorsElement(frac1AllSectors, 1) → f1sector1Element(frac1AllSectors, 2) → f1sector2Element(frac1AllSectors, 3) → f1sector3Element(frac1AllSectors, 4) → f1sector4Element(frac1AllSectors, 5) → f1sector5Element(frac1AllSectors, 6) → f1sector6Element(frac1AllSectors, 7) → f1sector7Element(frac1AllSectors, 8) → f1sector8Element(frac1AllSectors, 9) → f1sector9Sequence(StartPt + ((boxWidth + spaceBetween, 0) * k), k, 0, 3) → allHomeAnchorsZip(allHomeAnchors(A), A, homeIndices) → homeLocationscenterBox(boxWidth, boxWidth, P1_{1}) → box1centerBox(boxWidth, boxWidth, P2) → box2centerBox(boxWidth, boxWidth, boxAnchors(1)) → frame1centerBox(boxWidth, boxWidth, boxAnchors(2)) → frame2Element(movingPoints, movingIndex) → PMoveIndexOf(true, Zip[IsInRegion[PMove, A], A, {frame1, frame2}]) → locationPMovecenterBox(boxWidth, boxWidth, PMove) → highlightBoxcenterBox(boxWidth, boxWidth, boxAnchors(locationPMove)) → highlightFrameZip(Text[("" * A), B, true, true, 0, 0], A, boxText, B, movingPoints) → boxTextDisplayText(("" * boxText(movingIndex)), If[Defined[PMove], PMove, (300, 300)], false, true, 0, 0) → textHightlightcenterBox(boxWidth, boxWidth, fraction1Location) → movingBox1centerBox(boxWidth, boxWidth, fraction2Location) → movingBox2Text(fracText(1), fraction1Location, true, true, 0, 0) → textFraction1MovingText(fracText(2), fraction2Location, true, true, 0, 0) → textFraction2MovingCircle(fracP1, fracRadius) → circle1Circle(fracP2, fracRadius) → circle2Element(movingPointsFrac, movingIndexFrac) → PMoveFracCircle(circleLoc1, fracRadius) → circleFrame1Circle(circleLoc2, fracRadius) → circleFrame2Circle(PMoveFrac, fracRadius) → highlightCircleIndexOf(true, Zip[IsInRegion[PMoveFrac, A], A, {circleFrame1, circleFrame2}]) → locationPMoveFracCircle(circleAnchors(locationPMoveFrac), fracRadius) → highlightCircleFrameCircle(halfCircleLoc1, fracRadius) → halfCircleFrame1Circle(halfCircleLoc2, fracRadius) → halfCircleFrame2Text("<", circleLoc1 + (fracRadius + (spaceBetween * 1.5), 0), true, true, 0, 0) → lessThanText("<", circleLoc2 + ((-fracRadius) - (spaceBetween * 1.5), 0), true, true, 0, 0) → lessThan2CircleSector(halfCircleLoc1, halfCircleLoc1 + (0, (-fracRadius)), halfCircleLoc1 + (0, fracRadius)) → halfOneCircleSector(halfCircleLoc2, halfCircleLoc2 + (0, (-fracRadius)), halfCircleLoc2 + (0, fracRadius)) → halfTwoSegment(halfCircleLoc1 + (0, fracRadius), halfCircleLoc1 - (0, fracRadius)) → midSeg1Segment(halfCircleLoc2 + (0, fracRadius), halfCircleLoc2 - (0, fracRadius)) → midSeg2Zip(Segment[Rotate[fracP1, A, fracP1], Rotate[fracP1 + (0, fracRadius), A, fracP1]], A, frac1Angles) → raysFrac1Zip(Segment[Rotate[fracP2, A, fracP2], Rotate[fracP2 + (0, fracRadius), A, fracP2]], A, frac2Angles) → raysFrac2Zip(CircleSector[frac2Center, A, B], B, outerPointsFrac2Drag, A, Join[{Take[outerPointsFrac2Drag, 2, frac2DragDen], {Element[outerPointsFrac2Drag, 1]}}]) → frac2AllSectorsElement(frac2AllSectors, 1) → f2sector1Element(frac2AllSectors, 2) → f2sector2Element(frac2AllSectors, 3) → f2sector3Element(frac2AllSectors, 4) → f2sector4Element(frac2AllSectors, 5) → f2sector5Element(frac2AllSectors, 6) → f2sector6Element(frac2AllSectors, 7) → f2sector7Element(frac2AllSectors, 8) → f2sector8Element(frac2AllSectors, 9) → f2sector9Sequence(false, k, 1, 9) → allFalseZip(If[frac2SectorClicked(B), Element[frac2AllSectors, B]], B, Sequence[j, j, 1, 9]) → frac2ColoredSectorsCorner(5) → appSizeText("< \dfrac{1}{2}", boxLoc1 + (boxWidth, 0), true, true, 0, 0) → textLessThanHalfText(" \dfrac{1}{2}<", boxLoc2 + (((-boxWidth) * 1.1), 0), true, true, 0, 0) → textGreaterThanHalfText("<", fraction1Location + (boxWidth / 2 + (spaceBetween * 1.5), 0), true, true, 0, 0) → textLessThanonboardingTextOffset(Corner[onboardingText, 1], Corner[onboardingText, 3], onboardingCase, Corner[1], Corner[3], Corner[5]) → OnboardingTextOffsetIf(animateInequalityControl < 2, 0, animateInequalityControl - 2) → animateInequality2Text(fracText(1), finalFraction1Location + (animateInequality2 * Vector[finalFraction1Location, finalInequalityLoc1]), true, true, 0, 0) → movingFinalFrac1Text(fracText(2), finalFraction2Location + (animateInequality2 * Vector[finalFraction2Location, finalInequalityLoc2]), true, true, 0, 0) → movingFinalFrac2If(frac1DragDen ≟ den1, colorPink, colorPurple) → frac1ColorIf(frac2DragDen ≟ den1, colorPink, colorPurple) → frac2ColorText((((((("\text{= \textcolor{" * colorPink) * "}\dfrac{{") * frac1StudentNum) * "}}{") * frac1DragDen) * "}}"), homeLocationsFrac(1) + (fracRadius, 0), true, true, 1, 0) → fracLabel1onboardingTextOffset(Corner[onboardingText3, 1], Corner[onboardingText3, 3], onboardingCase3, Corner[1], Corner[3], Corner[5]) → OnboardingTextOffset3onboardingTextOffset(Corner[onboardingText2, 1], Corner[onboardingText2, 3], onboardingCase2, Corner[1], Corner[3], Corner[5]) → OnboardingTextOffset2expandCircle(dragPointFrac1, 7 + (7 * pulsing2), Corner[1], Corner[3], Corner[5]) → pulsingCircleSequence((((("SetFixed(circle" * A) * ",false,") * enableInput) * ")"), A, 1, Length[movingPointsFrac]) → cmdFixCirclesSequence((((("SetFixed(box" * A) * ",false,") * enableInput) * ")"), A, 1, Length[movingPoints]) → cmdFixBoxesText((((((("\text{= \textcolor{" * colorPurple) * "}\dfrac{{") * frac2StudentNum) * "}}{") * frac2DragDen) * "}}"), homeLocationsFrac(2) + (fracRadius, 0), true, true, 1, 0) → fracLabel2expandCircle(fracP1, (fracRadius * unitPixels) + (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingFractiononboardingTextOffset(Corner[onboardingText4, 1], Corner[onboardingText4, 3], onboardingCase4, Corner[1], Corner[3], Corner[5]) → OnboardingTextOffset4Zip(If[frac1SectorClicked(B), Element[frac1AllSectors, B]], B, Sequence[j, j, 1, 9]) → frac1ColoredSectorsSequence(Segment[frac1Center, Rotate[dragPointFrac1, (b * (360°) / frac1DragDen), frac1Center]], b, 2, frac1DragDen + 1) → raysFrac1DragSequence(Segment[frac2Center, Rotate[dragPointFrac2, (b * (360°) / frac2DragDen), frac2Center]], b, 2, frac2DragDen + 1) → raysFrac2DragCircle(frac1Center, fracRadius) → frac1FrameCircle(frac2Center, fracRadius) → frac2Frame
AI Drawing Prompt Reference
Create an interactive visual for comparing fractions using a benchmark: show a full circle and a half-circle (semicircle) as reference, with each circle partitioned into equal arc sectors. Display two fraction models side by side, each having its own center, a set of equally spaced outer points on the circumference, and the corresponding sector region that represents the chosen numerator out of its denominator. Include draggable point sets on the outer arcs so the sector boundary can rotate to new positions, and translate the half-circle benchmark to align with the other model’s location. Add a pair of framed target boxes or areas below for students to place and compare the two fractions by their visible sector portions.
The prompt above was compiled from the original drawing commands and is for reference only.