Estimating Liquid Volumes

Estimating Liquid Volumes
Loading the math board and drawing, please wait…
2023-07-21 05:22
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

  1. 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}
  2. Max(0, floor(animateSolnControl) - 2) → animateIndex
  3. Take(allRandomSeeds, randIndex, randIndex + numRandoms - 1) → currentRandomSeeds
  4. If(IsInteger[countQuestion / 2], minLevel, maxLevel) → waterLevelLeft
  5. If(waterLevelLeft ≟ minLevel, maxLevel, minLevel) → waterLevelRight
  6. Element({50 + (floor((currentRandomSeeds(5) * 10)) * 50), Element[{0.25, 0.5, 0.75}, 1 + floor((currentRandomSeeds(5) * 3))]}, caseNum) → unitVolume
  7. Max(1, animateIndex - waterLevelRight - 1) → animateIndexLeft
  8. Segment(AnchorCyl2 + (cMajor + 1, 0), AnchorCyl2 + (cMajor + 1, displayHeightRight)) → rightHeight
  9. Polygon({AnchorCyl + (cMajor, 0), AnchorCyl + (cMajor, scale), AnchorCyl + ((-cMajor), scale), AnchorCyl + ((-cMajor), 0)}) → waterFillUnit
  10. Sequence((x(AnchorCyl), y(AnchorTubLeft) + 0.3 + (A * scale)), A, 0, numTicks) → tickAnchors
  11. Element({(("\(" * volumeLeft) * "\)~ml"), ((("\(" * volumeLeft) * "\) liter") * If[0 < volumeLeft ≟ 1, "", "s"])}, caseNum) → volumeLeftLatex
  12. Translate(Ellipse[((-sqrt(cMajor^(2) - cMinor^(2))), 0), (sqrt(cMajor^(2) - cMinor^(2)), 0), cMajor], AnchorCyl) → waterBaseLeft
  13. Corner(5) → layoutAppSize
  14. Translate(CurveCartesian[(cMajor * cos(A)), (cMinor * sin(A)), A, pi, (2 * pi)], AnchorCyl) → cylBase
  15. Polygon({AnchorCyl + (cMajor, 0), AnchorCyl + (cMajor, displayHeightLeft), AnchorCyl + ((-cMajor), displayHeightLeft), AnchorCyl + ((-cMajor), 0)}) → waterFillLeft
  16. Translate(waterBaseLeft, (0, cHeight)) → cylTop
  17. Translate(waterBaseLeft, vTrans) → waterBaseRight
  18. Polygon({AnchorCyl2 + (cMajor, 0), AnchorCyl2 + (cMajor, displayHeightRight), AnchorCyl2 + ((-cMajor), displayHeightRight), AnchorCyl2 + ((-cMajor), 0)}) → waterFillRight
  19. Translate(hottubBackgroundLeft, vTrans) → hottubBackgroundRight
  20. Translate(hottubForegroundLeft, vTrans) → hottubForegroundRight
  21. Zip(Segment[A - (beakerOffset, 0), A + (beakerOffset, 0)], A, Take[tickAnchors, 2]) → beakerTicksLeft
  22. Translate(beakerTicksLeft, vTrans) → beakerTicksRight
  23. Zip(Text[(("\text{Container " * A) * "}"), AnchorCyl + (0, (-cMinor) - 0.8) + B, true, true, 0, 0], A, {1, 2}, B, {(0, 0), vTrans}) → beakerLabels
  24. Segment(AnchorCyl + (cMajor + 1, 0), AnchorCyl + (cMajor + 1, If[animateSolnControl > 0, displayHeightLeft, (waterLevelLeft * scale)])) → leftHeight
  25. Element({"ml", "liter"}, caseNum) → unitLatex
  26. Element({50, 0.25}, caseNum) → minEstimate
  27. Translate(waterBaseLeft, (0, (slideHintLeft * scale))) → hintLeftTop
  28. Polygon({AnchorCyl + (cMajor, 0), AnchorCyl + (cMajor, (slideHintLeft * scale)), AnchorCyl + ((-cMajor), (slideHintLeft * scale)), AnchorCyl + ((-cMajor), 0)}) → hintFill
  29. Translate(waterBaseRight, (0, (slideHintRight * scale))) → hintRightTop
  30. Polygon({AnchorCyl2 + (cMajor, 0), AnchorCyl2 + (cMajor, (slideHintRight * scale)), AnchorCyl2 + ((-cMajor), (slideHintRight * scale)), AnchorCyl2 + ((-cMajor), 0)}) → hintFillRight
  31. CurveCartesian(x(AnchorCyl) + (cMajor * cos(A)), y(AnchorCyl) + (cMinor * sin(A)), A, pi, (2 * pi)) → outlineBase
  32. CurveCartesian(x(AnchorCyl) + (cMajor * cos(A)), y(AnchorCyl) + (cMinor * sin(A)) + (waterLevelLeft * scale), A, 0, pi) → outlineBackLeft
  33. CurveCartesian(x(AnchorCyl) + (cMajor * cos(A)), y(AnchorCyl) + (cMinor * sin(A)) + (waterLevelLeft * scale), A, pi, (2 * pi)) → outlineFront
  34. CurveCartesian(x(AnchorCyl2) + (cMajor * cos(A)), y(AnchorCyl2) + (cMinor * sin(A)) + (waterLevelRight * scale), A, 0, pi) → outlineBackRight
  35. CurveCartesian(x(AnchorCyl2) + (cMajor * cos(A)), y(AnchorCyl2) + (cMinor * sin(A)) + (waterLevelRight * scale), A, pi, (2 * pi)) → outlineFrontRight
  36. Translate(waterFillUnit, vSoln) → waterFillAnimate
  37. Translate(waterBaseLeft, Vector[vSoln + (0, scale)]) → animateTop
  38. Translate(waterBaseLeft, vSoln) → animateBase
  39. Translate(waterBaseRight, (0, displayHeightRight)) → waterTopRight
  40. Textfield(studentEstimate) → inputA
  41. Translate(waterBaseLeft, (0, scale)) → unitWaterTop
  42. Translate(waterBaseLeft, (0, displayHeightLeft)) → waterTopLeft
  43. Element({(("\(" * displayVolumeLeft) * "\)~\mbox{\textsf{ml}}"), (((("\(" * displayVolumeLeft) * "\)~\mbox{\textsf{litre") * If[0 < displayVolumeLeft ≟ 1, "", "s"]) * "}}")}, caseNum) → displayVolumeLeftLatex
  44. Text((("\text{" * If[animateSolnControl > 0, displayVolumeLeftLatex, volumeLeftLatex]) * "}"), Midpoint[leftHeight] + (0.2, 0), true, true, 1, 0) → captionLeft
  45. Text((("\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.