Diagram Templates for Ratios (White Background)
Loading the math board and drawing, please wait…
① This interactive template demonstrates ratio relationships through multiple visual representations, including area models and bar charts. ② Core mathematical concepts include ratios, proportional reasoning, and part-whole relationships, with two quantities (quantity1 and quantity2) and their sum. ③ Construction uses GeoGebra commands such as Element, If, SelectedIndex, Point, Textfield, Segment, Sequence, Vector, Mirror, Midpoint, Text, Circle, CircleSector, Polygon, Flatten, and Zip; objects include input fields for quantities, sliders (slidePt), visual type selector (visualType), and help buttons, allowing dynamic updates. ④ Suitable for middle school mathematics instruction, this template aids in visualizing ratio concepts and supports student exploration of proportional relationships, enhancing mathematical understanding through interactive diagrams.
GeoGebra Commands & Parameters
Element(KeepIf[round(x) ≟ x, Sequence[sumQuantity12 / Element[Sequence[floor(sqrt(sumQuantity12) - k), k, 0, 5], i], i, 1, 10]], 1) → areaModelColumnsIf(quantity2 ≟ 0, areaModelRows - 1, If[areaModelColumns > quantity1, 0, If[(2 * areaModelColumns) > quantity1, 1, If[(3 * areaModelColumns) > quantity1, 2, If[(4 * areaModelColumns) > quantity1, 3, If[(5 * areaModelColumns) > quantity1, 4, 5]]]]]) → setFullRowsSelectedIndex(visualType) → visualTypeSelectedIf(quantity2 < 100, 100, If[quantity2 < 500, 10, 1]) → roundingFactorDNL2valuesPoint(Segment[(0, 0.85), (NLlength, 0.85)]) → slidePtIf(quantity1 < 100, 100, If[quantity1 < 500, 10, 1]) → roundingFactorDNL1valuesTextfield(q1labelForLengthAlwaysShow) → q1blabelInputTextfield(q2labelForLengthAlwaysShow) → q2blabelInputTextfield(quantity1) → q1avalueInputTextfield(quantity2) → q2avalueInputSegment(slidePt + (0, 1.7), slidePt - (0, 1.75)) → slideSegTextfield(locationXq1) → locationXq1InputTextfield(locationXq2) → locationXq2InputSequence(Text[(p * quantity2), ((length * p) + xOffSet, y(Master) - (1.7 * yOffSet))], p, 2, 4) → hashMarkValuesTextNL2Vector(instructionsArrowsPt, (1.4187, -1)) → instructionsArrow2Vector(instructionsArrowsPt, (0.28383, -1)) → instructionsArrow1Mirror(instructionsArrow1, x = x(instructionsArrowsPt)) → instructionsArrow3Mirror(instructionsArrow2, x = x(instructionsArrowsPt)) → instructionsArrow4Midpoint(Master, Master + (-0.8 + NLlength, 0.9)) → CircleModelCenterIf(quantity1 ≥ quantity2, ceil(quantity1), ceil(quantity2)) → ceilGreaterOfQuantity12Sequence(((length * k), y(Master)), k, 0, 4) → hashMajorNL2Segment(Master + (0, (-NLgap)), Master + (4.3, (-NLgap))) → NL3segmentSegment(Master, Master + (NLlength, 0)) → NL2segmentSequence(((length * k), y(Master) - NLgap), k, 0, 4) → hashMajorNL3Text(0, Master + (-0.035, (-1.7 * yOffSet))) → zeroNL2Text(0, Master + (-0.035, If[visualTypeSelected ≟ 3, NLgap - (1.7 * yOffSet), NLgap + yOffSet])) → zeroNL1Sequence((k, y(Master)), k, 0, NLlength, length / hashMinor) → hashMinorNL2Sequence((k, y(Master) - NLgap), k, 0, NLlength, length / hashMinor) → hashMinorNL3Text(0, Master + (-0.035, (-NLgap) - (1.7 * yOffSet))) → zeroNL3Circle(CircleModelCenter, circleModelRadius) → circleModelOutlineCircle(CircleModelCenter, circleModelRadius) → circleModelWhiteBackgroundCircleSector(CircleModelCenter, CircleModelCenter + (0, circleModelRadius), Rotate[CircleModelCenter + (0, circleModelRadius), ((2 * π) * quantity1 / sumQuantity12), CircleModelCenter]) → circleModelSectorQ1Sequence(Segment[CircleModelCenter, Rotate[CircleModelCenter + (0, circleModelRadius), ((i * 2) * π / sumQuantity12), CircleModelCenter]], i, 0, sumQuantity12 - 1, 1) → circleModelDividersSequence(Text[(p * quantity1), ((length * p) + xOffSet, y(Master) + If[visualTypeSelected ≟ 3, NLgap - (1.7 * yOffSet), NLgap + (1.1 * yOffSet)])], p, 2, 4) → hashMarkValuesTextNL1Sequence(((length * k), y(Master) + NLgap), k, If[visualTypeSelected ≟ 3, -1, 0], 4) → hashMajorNL1Sequence((k, y(Master) + NLgap), k, If[visualTypeSelected ≟ 3, -1, 0], NLlength, length / hashMinor) → hashMinorNL1Segment(Master + (If[visualTypeSelected ≟ 3, -1.2, 0], NLgap), Master + (NLlength, NLgap)) → NL1segmentPolygon(Master + (0, tapeDiagram2VerticalOffset), Master + (tapeDiagramModelsWidth, tapeDiagram2VerticalOffset), Master + (tapeDiagramModelsWidth, tapeDiagramModelsHeight + tapeDiagram2HeightDiff + tapeDiagram2VerticalOffset), Master + (0, tapeDiagramModelsHeight + tapeDiagram2HeightDiff + tapeDiagram2VerticalOffset)) → tapeDiagram2Outline, tapeDiagram2OutlineSeg_1, tapeDiagram2OutlineSeg_2, tapeDiagram2OutlineSeg_3, tapeDiagram2OutlineSegPolygon(Master + (0, tapeDiagram2VerticalOffset), Master + ((quantity1 * unit), tapeDiagram2VerticalOffset), Master + ((quantity1 * unit), tapeDiagramModelsHeight + tapeDiagram2HeightDiff + tapeDiagram2VerticalOffset), Master + (0, tapeDiagramModelsHeight + tapeDiagram2HeightDiff + tapeDiagram2VerticalOffset)) → tapeDiagram2Quantity1Poly, g, h, i, jSequence(Segment[Master + (i, tapeDiagram2VerticalOffset), Master + (i, tapeDiagramModelsHeight + tapeDiagram2HeightDiff + tapeDiagram2VerticalOffset)], i, 0, tapeDiagramModelsWidth, unit) → tapeDiagram2Quantity1DividersPolygon(Master, Master + ((quantity2 * unit), 0), Master + ((quantity2 * unit), tapeDiagramModelsHeight), Master + (0, tapeDiagramModelsHeight)) → tapeDiagram1Quantity2Poly, tapeDiagram1Quantity2PolySeg_1, tapeDiagram1Quantity2PolySeg_2, tapeDiagram1Quantity2PolySeg_3, tapeDiagram1Quantity2PolySegPolygon(MasterTape2, MasterTape2 + ((quantity1 * unit), 0), MasterTape2 + ((quantity1 * unit), tapeDiagramModelsHeight), MasterTape2 + (0, tapeDiagramModelsHeight)) → tapeDiagram1Quantity1Poly, tapeDiagram1Quantity1PolySeg, tapeDiagram1Quantity1PolySeg_1, tapeDiagram1Quantity1PolySeg_2, tapeDiagram1Quantity1PolySeg_3Polygon(MasterTape2, MasterTape2 + ((quantity1 * unit), 0), MasterTape2 + ((quantity1 * unit), tapeDiagramModelsHeight), MasterTape2 + (0, tapeDiagramModelsHeight)) → tapeDiagram1Quantity1PolyWhite, v2, k, l, mSequence(Segment[MasterTape2 + (i, 0), MasterTape2 + (i, tapeDiagramModelsHeight)], i, 0, (quantity1 * unit), unit) → tapeDiagram1Quantity1DividersSequence(Segment[Master + (0 + i, 0), Master + (0 + i, tapeDiagramModelsHeight)], i, 0, (quantity2 * unit), unit) → tapeDiagram1Quantity2DividersPolygon(Master, Master + (tapeDiagramModelsWidth, 0), Master + (tapeDiagramModelsWidth, areaModelHeight), Master + (0, areaModelHeight)) → areaModelOutline, areaModelOutlineSeg_1, areaModelOutlineSeg_2, areaModelOutlineSeg_3, areaModelOutlineSegSequence(Segment[Master + (i, 0), Master + (i, areaModelHeight)], i, 0, tapeDiagramModelsWidth, tapeDiagramModelsWidth / areaModelColumns) → areaModelColumnDivSequence(Segment[Master + (0, i), Master + (tapeDiagramModelsWidth, i)], i, 0, areaModelHeight, areaModelHeight / areaModelRows) → areaModelRowDivPolygon(Master, Master + ((floor(quantity1 / areaModelRows) * tapeDiagramModelsWidth / areaModelColumns), 0), Master + ((floor(quantity1 / areaModelRows) * tapeDiagramModelsWidth / areaModelColumns), areaModelHeight), Master + (0, areaModelHeight)) → areaModelQ1FullColumns, master, f, n, pPolygon(Master + ((floor(quantity1 / areaModelRows) * tapeDiagramModelsWidth / areaModelColumns), 0), Master + (((floor(quantity1 / areaModelRows) + 1) * tapeDiagramModelsWidth / areaModelColumns), 0), Master + (((floor(quantity1 / areaModelRows) + 1) * tapeDiagramModelsWidth / areaModelColumns), ((quantity1 - (floor(quantity1 / areaModelRows) * areaModelRows)) * areaModelHeight / areaModelRows)), Master + ((floor(quantity1 / areaModelRows) * tapeDiagramModelsWidth / areaModelColumns), ((quantity1 - (floor(quantity1 / areaModelRows) * areaModelRows)) * areaModelHeight / areaModelRows))) → areaModelQ1PartialColumn, q, r, s, tSequence(2 + i, i, 0, areaModelRows - 1) → deleteListRowsFlatten(Sequence[(k / k * Sequence[i, i, 0, areaModelColumns - 1, 1]), k, 1, areaModelRows]) → setChangeXFlatten(Sequence[(k * Sequence[i / i, i, 1, areaModelColumns, 1]), k, 0, areaModelRows - 1]) → setChangeYZip(Polygon[MS + (a, b), MS + (a + setPolyWidth, b), MS + (a + setPolyWidth, b - setPolyHeight), MS + (a, b - setPolyHeight)], a, (setSpacingHoriz * setChangeX), b, ((-setSpacingVert) * setChangeY)) → setModel1OutlinesFlatten(Sequence[(k / k * Sequence[i, i, 0, areaModelColumns - 1, 1]), k, 1, areaModelRows - 1]) → setChangeXQ1FullFlatten(Sequence[(k * Sequence[i / i, i, 1, areaModelColumns, 1]), k, 0, setFullRows - 1]) → setChangeYQ1FullZip(Polygon[MS + (a, b), MS + (a + setPolyWidth, b), MS + (a + setPolyWidth, b - setPolyHeight), MS + (a, b - setPolyHeight)], a, (setSpacingHoriz * setChangeXQ1Full), b, ((-setSpacingVert) * setChangeYQ1Full)) → setModel1Q1FullRowsSequence(Polygon[MSPart + (i, 0), MSPart + (i + setPolyWidth, 0), MSPart + (i + setPolyWidth, setPolyHeight), MSPart + (i, setPolyHeight)], i, 0, (setSpacingHoriz * (quantity1 - (setFullRows * areaModelColumns) - 1)), setSpacingHoriz) → setModel1Q1PartialRowCircle((-0.7058662075654852, 1.0923793127338763), setModel2Radius) → setModel2CircleQ1_2Circle((-0.09429794097292479, 1.2626096549812897), setModel2Radius) → setModel2CircleQ1_1Circle((0.0317986088399741, 0.6384317334074399), setModel2Radius) → setModel2CircleQ1_3Circle((0.4542220507131861, 1.098684140224521), setModel2Radius) → setModel2CircleQ1_4Circle((0.9649130774554273, 1.3382675848690295), setModel2Radius) → setModel2CircleQ1_5Circle((0.5866234280167298, 0.47450621865067083), setModel2Radius) → setModel2CircleQ1_6Circle((-0.5230262103367816, 0.5501641485384103), setModel2Radius) → setModel2CircleQ1_7Circle((1.0657903173057461, 0.7393089732577589), setModel2Radius) → setModel2CircleQ1_8Circle((1.5260427241228276, 1.1239034501871006), setModel2Radius) → setModel2CircleQ1_9Circle((0.17680964112480807, 0.12143587917455337), setModel2Radius) → setModel2CircleQ1_{10}Circle((0.8072923901893032, -0.036184808091570236), setModel2Radius) → setModel2CircleQ1_{11}Circle((1.3368978994034795, 0.2412276014968075), setModel2Radius) → setModel2CircleQ1_{12}Circle((1.7845406512392712, 0.5879931134822798), setModel2Radius) → setModel2CircleQ1_{13}Circle((2.1250013357340993, 1.0860744852432314), setModel2Radius) → setModel2CircleQ1_{14}Circle((2.358279952887962, 0.5501641485384104), setModel2Radius) → setModel2CircleQ1_{15}Circle((2.824837187195688, 1.0545503477900064), setModel2Radius) → setModel2CircleQ1_{16}Circle((3.4994537286946987, 1.0608551752806514), setModel2Radius) → setModel2CircleQ1_{17}Circle((2.9824578744618124, 0.4618965636693809), setModel2Radius) → setModel2CircleQ1_{18}Circle((2.0241240958837796, 0.045777949286814126), setModel2Radius) → setModel2CircleQ1_{19}Circle((3.562502003601148, 0.4808110461413158), setModel2Radius) → setModel2CircleQ1_{20}Circle((4.003835832062515, 0.13404758486902935), setModel2Radius) → setModel2CircleQ2_1Circle((3.7275227324367166, -0.3656799944574073), setModel2Radius) → setModel2CircleQ2_2Circle((4.395834446445083, -0.22697378966321807), setModel2Radius) → setModel2CircleQ2_3Circle((3.3618427379793094, -0.7376648164054594), setModel2Radius) → setModel2CircleQ2_4Circle((4.131031691837994, -0.6998358514615898), setModel2Radius) → setModel2CircleQ2_5Circle((3.26096549812899, -0.006304827490644951), setModel2Radius) → setModel2CircleQ2_6Circle((2.61156826659256, 0.01891448247193486), setModel2Radius) → setModel2CircleQ2_7Circle((4.3895296189544375, 0.554824819176756), setModel2Radius) → setModel2CircleQ2_8Circle((2.8133227462931987, -0.7187503339335245), setModel2Radius) → setModel2CircleQ2_9Circle((2.3152413745322478, -0.46655723430772644), setModel2Radius) → setModel2CircleQ2_{10}Circle((4.269737896632183, 1.1285641208254464), setModel2Radius) → setModel2CircleQ2_{11}Circle((1.5712717306361432, -0.2837172370790227), setModel2Radius) → setModel2CircleQ2_{12}Circle((1.8297696577525862, -0.7439696438961044), setModel2Radius) → setModel2CircleQ2_{13}Circle((1.085800013856482, -0.5043861992515962), setModel2Radius) → setModel2CircleQ2_{14}Circle((0.5688041596235955, -0.7124455064428795), setModel2Radius) → setModel2CircleQ2_{15}Circle((-0.38952961895443716, -0.7124455064428795), setModel2Radius) → setModel2CircleQ2_{16}Circle((0.10224692531586876, -0.4287282693638568), setModel2Radius) → setModel2CircleQ2_{17}Circle((-0.42105375640766207, -0.006304827490644885), setModel2Radius) → setModel2CircleQ2_{18}Circle((-0.9758785755844179, -0.7250551614241696), setModel2Radius) → setModel2CircleQ2_{19}Circle((-0.9317447831499027, -0.13870620479418896), setModel2Radius) → setModel2CircleQ2_{20}
AI Drawing Prompt Reference
Create an interactive diagram template for teaching ratios, featuring two quantity input fields and a slider. The graphic includes three main representations: a top bar chart showing the proportional segments of two quantities with tick marks, a middle area model divided into a grid to illustrate part-whole relationships, and a bottom circle model with a sector representing the first quantity's share of the total. All models update dynamically based on the entered quantities, with labels and value annotations. The background is white, and the layout is clean for classroom use.
The prompt above was compiled from the original drawing commands and is for reference only.