Bar Model for Problems on Ratio, Rate, and Direct Proportion

Bar Model for Problems on Ratio, Rate, and Direct Proportion
Loading the math board and drawing, please wait…
2014-04-07 16:30
This GeoGebra applet demonstrates the arithmetic of ratio, rate, and direct proportion problems using an interactive bar model. The core mathematical concepts include proportional relationships, unit parts, and the visual representation of multiplicative comparisons between quantities. The construction uses GeoGebra commands such as Polygon to draw bars, Textfield for input boxes, Sequence for repeated elements, Vector and Midpoint for labeling and positioning, and Segment for auxiliary lines. Key objects include scalefactor, barwidth, points P_1 to P_4, input boxes (inputBox1-4), and text labels (textTitle, NameItem). Users can adjust values via input boxes or sliders, causing the bar lengths to update dynamically, which helps learners grasp the relationship between 'unit part' and 'total parts'. This applet is suitable for upper elementary to middle school students learning ratio and direct proportion, and can be used for classroom demonstrations or self-paced exploration, fostering the transition from visual models to algebraic reasoning.

GeoGebra Commands & Parameters

  1. Polygon(P_1, P_2, P_3, P_4) → ModelBar1, p_1, p_2, p_3, p_4
  2. Textfield(a) → inputBox1
  3. Textfield(NameItem1) → inputBox2
  4. Textfield(NameItem2) → inputBox3
  5. Textfield(b) → inputBox4
  6. Sequence(Segment[(x(P_1) + ((i * c) * scalefactor / a), y(P_1)), (x(P_1) + ((i * c) * scalefactor / a), barwidth)], i, 1, a, 1) → UnitPartforItem1
  7. Sequence(Segment[(x(P_1) + ((i * c) * scalefactor / b), y(P_1)), (x(P_1) + ((i * c) * scalefactor / b), barwidth)], i, 1, b, 1) → UnitPartforItem2
  8. Vector(P_{1s}, P_{1e}) → v_{1r}
  9. Vector(P_{1e}, P_{1s}) → v_{1l}
  10. Midpoint(P_{1s}, P_{1e}) → P_{1txt1}
  11. Vector(P_{2s}, P_{2e}) → v_{2r}
  12. Vector(P_{2e}, P_{2s}) → v_{2l}
  13. Midpoint(P_{2s}, P_{2e}) → P_{2txt1}
  14. Vector((x(P_1) + (c * scalefactor / a), barwidth + spacer / 3), (x(P_1), barwidth + spacer / 3)) → s_{1l}
  15. Vector((x(P_1), barwidth + spacer / 3), (x(P_1) + (c * scalefactor / a), barwidth + spacer / 3)) → s_{1r}
  16. Segment((x(P_1) + (c * scalefactor / a), barwidth), (x(P_1) + (c * scalefactor / a), barwidth + spacer / 3)) → g_1
  17. Segment((x(P_1), barwidth), (x(P_1), barwidth + spacer / 3)) → f_1
  18. Segment((x(P_1), 1), (x(P_1), 1 - spacer / 3)) → f_2
  19. Segment((x(P_1) + (c * scalefactor / a), 1), (x(P_1) + (c * scalefactor / a), 1 - spacer / 3)) → g_2
  20. Vector((x(P_1), 1 - spacer / 3), (x(P_1) + (c * scalefactor / a), 1 - spacer / 3)) → s_{12r}
  21. Vector((x(P_1) + (c * scalefactor / a), 1 - spacer / 3), (x(P_1), 1 - spacer / 3)) → s_{12l}
  22. Textfield(a_2) → inputBox5
  23. Textfield(b_2) → inputBox6
  24. Vector((x(P_1) + ((a_2 * c) * scalefactor / a), barwidth + (2 * spacer / 3)), (x(P_1), barwidth + (2 * spacer / 3))) → s_{1nl}
  25. Vector((x(P_1), barwidth + (2 * spacer / 3)), (x(P_1) + ((a_2 * c) * scalefactor / a), barwidth + (2 * spacer / 3))) → s_{1nr}
  26. Sequence(Segment[(x(P_1) + ((i * c) * scalefactor / a), y(P_1)), (x(P_1) + ((i * c) * scalefactor / a), barwidth)], i, 1, a_2, 1) → nPartsForItem1
  27. Polygon(P_1, P_{2n1}, P_{3n1}, P_4) → ModelBarn1, p_5, p_{2n1}, p_{3n1}, p_6
  28. Segment((x(P_1), barwidth), (x(P_1), barwidth + (2 * spacer / 3))) → f_{1n}
  29. Segment((x(P_{2n1}), barwidth), (x(P_{2n1}), barwidth + (2 * spacer / 3))) → g_{1n}
  30. Segment((x(P_1), barwidth), (x(P_1), barwidth + spacer)) → f_0
  31. Segment((x(P_2), barwidth), (x(P_2), barwidth + spacer)) → g_0
  32. Vector((x(P_1), 1 - (2 * spacer / 3)), (x(P_1) + ((a_2 * c) * scalefactor / a), 1 - (2 * spacer / 3))) → s_{1n2r}
  33. Vector((x(P_1) + ((a_2 * c) * scalefactor / a), 1 - (2 * spacer / 3)), (x(P_1), 1 - (2 * spacer / 3))) → s_{1n2l}
  34. Segment((x(P_1), 1), (x(P_1), 1 - (2 * spacer / 3))) → f_{1n2}
  35. Segment((x(P_{2n1}), 1), (x(P_{2n1}), 1 - (2 * spacer / 3))) → g_{1n2}
  36. Segment((x(P_1), 1), (x(P_1), 1 - spacer)) → d_0
  37. Segment((x(P_2), 1), (x(P_2), 1 - spacer)) → e_0
  38. Vector((x(P_1) + (c * scalefactor / b), 1 - spacer / 3), (x(P_1), 1 - spacer / 3)) → s_{2l}
  39. Vector((x(P_1), 1 - spacer / 3), (x(P_1) + (c * scalefactor / b), 1 - spacer / 3)) → s_{2r}
  40. Segment((x(P_1), 1), (x(P_1), 1 - spacer / 3)) → d_1
  41. Segment((x(P_1) + (c * scalefactor / b), 1), (x(P_1) + (c * scalefactor / b), 1 - spacer / 3)) → e_1
  42. Segment((x(P_1) + (c * scalefactor / b), barwidth), (x(P_1) + (c * scalefactor / b), barwidth + spacer / 3)) → e_2
  43. Segment((x(P_1), barwidth), (x(P_1), barwidth + spacer / 3)) → d_2
  44. Vector((x(P_1), barwidth + spacer / 3), (x(P_1) + (c * scalefactor / b), barwidth + spacer / 3)) → s_{21r}
  45. Vector((x(P_1) + (c * scalefactor / b), barwidth + spacer / 3), (x(P_1), barwidth + spacer / 3)) → s_{21l}
  46. Polygon(P_1, P_{2n2}, P_{3n2}, P_4) → ModelBarn2, p_7, p_{2n2}, p_{3n2}, p_8
  47. Sequence(Segment[(x(P_1) + ((i * c) * scalefactor / b), y(P_1)), (x(P_1) + ((i * c) * scalefactor / b), barwidth)], i, 1, b_2, 1) → nPartsForItem2
  48. Segment((x(P_{2n2}), 1), (x(P_{2n2}), 1 - (2 * spacer / 3))) → e_{1n}
  49. Segment((x(P_1), 1), (x(P_1), 1 - (2 * spacer / 3))) → d_{1n}
  50. Vector((x(P_{2n2}), 1 - (2 * spacer / 3)), (x(P_1), 1 - (2 * spacer / 3))) → s_{2nl}
  51. Vector((x(P_1), 1 - (2 * spacer / 3)), (x(P_{2n2}), 1 - (2 * spacer / 3))) → s_{2nr}
  52. Segment((x(P_{2n2}), barwidth), (x(P_{2n2}), barwidth + (2 * spacer / 3))) → e_{1n2}
  53. Segment((x(P_1), barwidth), (x(P_1), barwidth + (2 * spacer / 3))) → d_{1n2}
  54. Vector((x(P_1), barwidth + (2 * spacer / 3)), (x(P_{2n2}), barwidth + (2 * spacer / 3))) → s_{2n1r}
  55. Vector((x(P_{2n2}), barwidth + (2 * spacer / 3)), (x(P_1), barwidth + (2 * spacer / 3))) → s_{2n1l}

AI Drawing Prompt Reference

Draw a bar model to represent ratio, rate, and direct proportion problems. First, draw a rectangular bar. Then, based on the values in input boxes a and b, draw a total of a units and b units on the bar. Next, draw auxiliary lines and vectors to mark the start and end points of the bar. Finally, adjust the number of unit parts based on the values in input boxes a_2 and b_2, and draw new auxiliary lines and vectors.
The prompt above was compiled from the original drawing commands and is for reference only.