Estimating Liquid Volumes
Loading the math board and drawing, please wait…
This example demonstrates how to estimate liquid volumes using geometric comparisons. Key mathematical concepts include capacity measurement, unit conversion, and area calculation. Construction involves generating random seeds for different containers, positioning them on a coordinate plane, using slider animations to adjust water levels, and calculating volume differences between containers. Suitable for students in grades 4-5 to practice estimating and comparing capacities.
GeoGebra Commands & Parameters
RandomUniform(0, 0.99, 200) → allRandomSeeds, {0.5667820069717638, 0.5372702360699761, 0.7658734164785514, 0.76475872407, 0.8119757948635971, 0.2085176009191327, 0.3307207470976015, 0.9497138595566683, 0.6320454222044253, 0.987923898086277, 0.7546105055317632, 0.03417492309956099, 0.5278396804261639, 0.07130119320017163, 0.29519102474951314, 0.6167261252572416, 0.09593746254341107, 0.11806150323053002, 0.4713898117344821, 0.5280343144142134, 0.8832137762169975, 0.7852138341082334, 0.01606932083740241, 0.9742769457545373, 0.5832497166088634, 0.10555983815676162, 0.4980504917129809, 0.8152991023379861, 0.9052074563911011, 0.9851402129643219, 0.6675769737567979, 0.16252707914799103, 0.6241799229799327, 0.6007947959808361, 0.19440083176693407, 0.19294563400791737, 0.46135104027927754, 0.48294691385224847, 0.3887151466219878, 0.06016292756872125, 0.6325662876991657, 0.7114083385128872, 0.5021415735284804, 0.6017412411309828, 0.3751137813024818, 0.23312441623309718, 0.7289005366915752, 0.4735631004249833, 0.6346560168028653, 0.020338995830202714, 0.436149562284138, 0.5070328470880967, 0.027327081594865292, 0.57565738459327, 0.6572698798762205, 0.6533787683345273, 0.7760250751007627, 0.15692063984518717, 0.32261377067333113, 0.6412268151111596, 0.6148800707961419, 0.389677963496535, 0.2288955187925139, 0.4389578090151696, 0.031766348390019225, 0.7683540804331174, 0.3410158131739219, 0.17213957595577242, 0.7055547059140896, 0.03895693086787466, 0.6086542032499153, 0.508542233767683, 0.6725633457201685, 0.8163563609197352, 0.004447513037666336, 0.7188992410269907, 0.67536753809389, 0.3477873299905826, 0.27099103020704296, 0.47066851964250167, 0.546766936065236, 0.5312923826302182, 0.5002571871454266, 0.24457723043158047, 0.19228539908409378, 0.9833151601296412, 0.3113214223156521, 0.7097007416084596, 0.03609185033552922, 0.5935934033762048, 0.18051721782113217, 0.6822302768117215, 0.8776822048684371, 0.8778719454168454, 0.3723122923528784, 0.2859260929346825, 0.3000504799657121, 0.30976734200148126, 0.4693050270148854, 0.9285317828010913, 0.784404033364324, 0.6023638135432314, 0.595785713096354, 0.2681423414283405, 0.36174102018287185, 0.7578052789654373, 0.101289394927847, 0.546672915086504, 0.24780962202467827, 0.9092718080052997, 0.5084863063274443, 0.3441671416627427, 0.8351071867721247, 0.31428918097386843, 0.4036148211992035, 0.16771259731790658, 0.30365356763724954, 0.8213180728266692, 0.8474551320637492, 0.5621988024710086, 0.5612866355802933, 0.9130053207730568, 0.030575509300190044, 0.6670563054050442, 0.8541792635169546, 0.8693525671169784, 0.718252125202573, 0.5034581274207288, 0.3891653504555753, 0.07236795542399517, 0.37807154686219796, 0.4702434691621038, 0.07128909979580957, 0.5005151180393873, 0.5467691156929511, 0.3140410529381209, 0.8627551952484077, 0.40645839064334116, 0.5823395633110446, 0.48972286013733846, 0.7331585710740672, 0.7052274326681265, 0.7428758408456015, 0.35141188619896496, 0.6255116079045319, 0.2719836183481553, 0.8549494860207889, 0.7017959244865519, 0.7281620162911361, 0.38906975191417253, 0.1016409342658681, 0.40846665354865397, 0.6192090674638756, 0.730959544349886, 0.4835603918384227, 0.34040763988146533, 0.6474767604731672, 0.013096685863675387, 0.19537024838649616, 0.7155963099361199, 0.5924908915599921, 0.8964234137709174, 0.8354268170302055, 0.07196458239707798, 0.2552333463355083, 0.533647348895628, 0.477204620478583, 0.23867956353443956, 0.4217112238919951, 0.5059799864364329, 0.18814850037274822, 0.8028598782580162, 0.42257826396925124, 0.770203972495739, 0.7445191957070743, 0.9084349996482087, 0.18418596841774532, 0.10548640173827514, 0.1296549298156853, 0.9488847927726559, 0.6295172870263321, 0.5373539297311317, 0.13786670477606391, 0.9240620294221678, 0.10146978475667437, 0.3626801745824347, 0.9469177190715692, 0.18320660920678863, 0.2059058457606347, 0.2944100500299319, 0.9087066253284021, 0.12160048759658983, 0.7277768973211005, 0.29805516602787324, 0.3003823099530945, 0.10709243928449337, 0.840454080646846, 0.19374338374251632, 0.6866625877644912, 0.05493864823438348}Max(0, floor(animateSolnControl) - 2) → animateIndexTake(allRandomSeeds, randIndex, randIndex + numRandoms - 1) → currentRandomSeedsIf(IsInteger[countQuestion / 2], minLevel, maxLevel) → waterLevelLeftIf(waterLevelLeft ≟ minLevel, maxLevel, minLevel) → waterLevelRightElement({50 + (floor((currentRandomSeeds(5) * 10)) * 50), Element[{0.25, 0.5, 0.75}, 1 + floor((currentRandomSeeds(5) * 3))]}, caseNum) → unitVolumeMax(1, animateIndex - waterLevelRight - 1) → animateIndexLeftSegment(AnchorCyl2 + (cMajor + 1, 0), AnchorCyl2 + (cMajor + 1, displayHeightRight)) → rightHeightPolygon({AnchorCyl + (cMajor, 0), AnchorCyl + (cMajor, scale), AnchorCyl + ((-cMajor), scale), AnchorCyl + ((-cMajor), 0)}) → waterFillUnitSequence((x(AnchorCyl), y(AnchorTubLeft) + 0.3 + (A * scale)), A, 0, numTicks) → tickAnchorsElement({(("\(" * volumeLeft) * "\)~ml"), ((("\(" * volumeLeft) * "\) liter") * If[0 < volumeLeft ≟ 1, "", "s"])}, caseNum) → volumeLeftLatexTranslate(Ellipse[((-sqrt(cMajor^(2) - cMinor^(2))), 0), (sqrt(cMajor^(2) - cMinor^(2)), 0), cMajor], AnchorCyl) → waterBaseLeftCorner(5) → layoutAppSizeTranslate(CurveCartesian[(cMajor * cos(A)), (cMinor * sin(A)), A, pi, (2 * pi)], AnchorCyl) → cylBasePolygon({AnchorCyl + (cMajor, 0), AnchorCyl + (cMajor, displayHeightLeft), AnchorCyl + ((-cMajor), displayHeightLeft), AnchorCyl + ((-cMajor), 0)}) → waterFillLeftTranslate(waterBaseLeft, (0, cHeight)) → cylTopTranslate(waterBaseLeft, vTrans) → waterBaseRightPolygon({AnchorCyl2 + (cMajor, 0), AnchorCyl2 + (cMajor, displayHeightRight), AnchorCyl2 + ((-cMajor), displayHeightRight), AnchorCyl2 + ((-cMajor), 0)}) → waterFillRightTranslate(hottubBackgroundLeft, vTrans) → hottubBackgroundRightTranslate(hottubForegroundLeft, vTrans) → hottubForegroundRightZip(Segment[A - (beakerOffset, 0), A + (beakerOffset, 0)], A, Take[tickAnchors, 2]) → beakerTicksLeftTranslate(beakerTicksLeft, vTrans) → beakerTicksRightZip(Text[(("\text{Container " * A) * "}"), AnchorCyl + (0, (-cMinor) - 0.8) + B, true, true, 0, 0], A, {1, 2}, B, {(0, 0), vTrans}) → beakerLabelsSegment(AnchorCyl + (cMajor + 1, 0), AnchorCyl + (cMajor + 1, If[animateSolnControl > 0, displayHeightLeft, (waterLevelLeft * scale)])) → leftHeightElement({"ml", "liter"}, caseNum) → unitLatexElement({50, 0.25}, caseNum) → minEstimateTranslate(waterBaseLeft, (0, (slideHintLeft * scale))) → hintLeftTopPolygon({AnchorCyl + (cMajor, 0), AnchorCyl + (cMajor, (slideHintLeft * scale)), AnchorCyl + ((-cMajor), (slideHintLeft * scale)), AnchorCyl + ((-cMajor), 0)}) → hintFillTranslate(waterBaseRight, (0, (slideHintRight * scale))) → hintRightTopPolygon({AnchorCyl2 + (cMajor, 0), AnchorCyl2 + (cMajor, (slideHintRight * scale)), AnchorCyl2 + ((-cMajor), (slideHintRight * scale)), AnchorCyl2 + ((-cMajor), 0)}) → hintFillRightCurveCartesian(x(AnchorCyl) + (cMajor * cos(A)), y(AnchorCyl) + (cMinor * sin(A)), A, pi, (2 * pi)) → outlineBaseCurveCartesian(x(AnchorCyl) + (cMajor * cos(A)), y(AnchorCyl) + (cMinor * sin(A)) + (waterLevelLeft * scale), A, 0, pi) → outlineBackLeftCurveCartesian(x(AnchorCyl) + (cMajor * cos(A)), y(AnchorCyl) + (cMinor * sin(A)) + (waterLevelLeft * scale), A, pi, (2 * pi)) → outlineFrontCurveCartesian(x(AnchorCyl2) + (cMajor * cos(A)), y(AnchorCyl2) + (cMinor * sin(A)) + (waterLevelRight * scale), A, 0, pi) → outlineBackRightCurveCartesian(x(AnchorCyl2) + (cMajor * cos(A)), y(AnchorCyl2) + (cMinor * sin(A)) + (waterLevelRight * scale), A, pi, (2 * pi)) → outlineFrontRightTranslate(waterFillUnit, vSoln) → waterFillAnimateTranslate(waterBaseLeft, Vector[vSoln + (0, scale)]) → animateTopTranslate(waterBaseLeft, vSoln) → animateBaseTranslate(waterBaseRight, (0, displayHeightRight)) → waterTopRightTextfield(studentEstimate) → inputATranslate(waterBaseLeft, (0, scale)) → unitWaterTopTranslate(waterBaseLeft, (0, displayHeightLeft)) → waterTopLeftElement({(("\(" * displayVolumeLeft) * "\)~\mbox{\textsf{ml}}"), (((("\(" * displayVolumeLeft) * "\)~\mbox{\textsf{litre") * If[0 < displayVolumeLeft ≟ 1, "", "s"]) * "}}")}, caseNum) → displayVolumeLeftLatexText((("\text{" * If[animateSolnControl > 0, displayVolumeLeftLatex, volumeLeftLatex]) * "}"), Midpoint[leftHeight] + (0.2, 0), true, true, 1, 0) → captionLeftText((("\text{" * If[animateSolnControl > 0, displayVolumeRightLatex, volumeRightLatex]) * "}"), Midpoint[rightHeight] + (0.2, 0), true, true, 1, 0) → captionRight
AI Drawing Prompt Reference
Draw two cylindrical containers with randomly generated water levels, adjustable using a slider. Label the volume units for each container. Include tick marks below the containers and display the volume of water in each. Add wavy water effects on top of the containers and text labels. The left container's water level changes with the slider, while the right one remains fixed. Connect the two containers with an arrow to show the capacity comparison.
The prompt above was compiled from the original drawing commands and is for reference only.