Mixing Paints Using Ratios

Mixing Paints Using Ratios
Loading the math board and drawing, please wait…
2017-03-13 02:13
This example demonstrates how to mix paints using given ratios. Key mathematical concepts include ratios and geometric construction. Using GeoGebra commands such as Sequence, If, and Segment, the process of paint mixing is visually demonstrated. Suitable for middle school and above students to learn about ratios and geometric construction.

GeoGebra Commands & Parameters

  1. Sequence(i, i, 0, cupsMax) → mix1cupsGreen
  2. Sequence(i, i, 0, cupsMax) → mix1cupsWhite
  3. If(mix1show, ceil(mix1cupsTotal / 2), cupsMax / 2) → cupsModelRowCount
  4. Segment(Can1PtMaster, Can1PtTopL) → Can1segL
  5. Segment(Can1PtBottomR, Can1PtTopR) → Can1segR
  6. Conic(Midpoint[Can1PtTopL, Can1PtTopR] + (0, -0.5), Can1PtTopR + (-0.04, 0), Midpoint[Can1PtTopL, Can1PtTopR] + (canWidth / 3, 0.5), Midpoint[Can1PtTopL, Can1PtTopR] + (((-canWidth)) / 3, 0.5), Can1PtTopL + (0.04, 0)) → can1lidConic
  7. Polygon(Can1PtMaster + (0, -0.006), Can1PtMaster + (canWidth, -0.006), Can1PtMaster + (canWidth, (canHeight * mix1cupsTotal / ((2 * cupsMax))) - 0.01), Can1PtMaster + (0, (canHeight * mix1cupsTotal / ((2 * cupsMax))) - 0.01)) → can1fillRectGreen, a, b, c, g
  8. Polygon(Can1PtMaster + (0, -0.013), Can1PtMaster + (canWidth, -0.013), Can1PtMaster + (canWidth, (canHeight * mix1cupsTotal / ((2 * cupsMax)))), Can1PtMaster + (0, (canHeight * mix1cupsTotal / ((2 * cupsMax))))) → can1fillRectWhite, d, e, f, q
  9. Conic(Can1PtMaster + (canWidth / 2, (canHeight * mix1cupsTotal / ((2 * cupsMax))) - 0.5), Can1PtMaster + (canWidth - 0.02, (canHeight * mix1cupsTotal / ((2 * cupsMax)))), Can1PtMaster + ((5 / 6 * canWidth), (canHeight * mix1cupsTotal / ((2 * cupsMax))) + 0.5), Can1PtMaster + (canWidth / 6, (canHeight * mix1cupsTotal / ((2 * cupsMax))) + 0.5), Can1PtMaster + (0.02, (canHeight * mix1cupsTotal / ((2 * cupsMax))))) → can1fillTopConicGreen
  10. Conic(Can1PtMaster + (canWidth / 2, (canHeight * mix1cupsTotal / ((2 * cupsMax))) - 0.5), Can1PtMaster + (canWidth - 0.02, (canHeight * mix1cupsTotal / ((2 * cupsMax)))), Can1PtMaster + ((5 / 6 * canWidth), (canHeight * mix1cupsTotal / ((2 * cupsMax))) + 0.5), Can1PtMaster + (canWidth / 6, (canHeight * mix1cupsTotal / ((2 * cupsMax))) + 0.5), Can1PtMaster + (0.02, (canHeight * mix1cupsTotal / ((2 * cupsMax))))) → can1fillTopConicWhite
  11. Polygon((-10, -2.02734), (99.12, -2.02734), (19.12, 97.97266), (-10, 17.97266)) → BackgroundYellow, l, m, n, p
  12. Polygon(Can1PtMaster + (-0.1, 0.048), Can1PtBottomR + (0.1, 0.048), Can1PtTopR, Can1PtTopL) → can1fillRectYellowBack, h, i, j, k
  13. Conic(Midpoint[Can1PtMaster, Can1PtBottomR] + (0, -0.5), Can1PtBottomR, Midpoint[Can1PtMaster, Can1PtBottomR] + (canWidth / 3, 0.5), Midpoint[Can1PtMaster, Can1PtBottomR] + (((-canWidth)) / 3, 0.5), Can1PtMaster) → can1bottomConic
  14. Polygon(A, B, C, D, E, F, G) → can1brushColorGreen, a_1, b_1, c_1, d_1, e_1, f_1, g_1
  15. Polygon(A, B, C, D, E, F, G) → can1brushColorWhite, a_2, b_2, c_2, d_2, e_2, f_2, g_2
  16. Conic(Midpoint[Can1PtMaster, Can1PtBottomR] + (0, -0.45), Can1PtBottomR + (0, 0.1), Midpoint[Can1PtMaster, Can1PtBottomR] + (canWidth / 3, 0.6), Midpoint[Can1PtMaster, Can1PtBottomR] + (((-canWidth)) / 3, 0.6), Can1PtMaster + (0, 0.1)) → can1bottomConicGreen
  17. Conic(Midpoint[Can1PtMaster, Can1PtBottomR] + (0, -0.49), Can1PtBottomR + (0, 0.05), Midpoint[Can1PtMaster, Can1PtBottomR] + (canWidth / 3, 0.6), Midpoint[Can1PtMaster, Can1PtBottomR] + (((-canWidth)) / 3, 0.6), Can1PtMaster + (0, 0.05)) → can1bottomConicWhite
  18. If(mix1show, Mix1visualsMasterPt + (5.6 - (0.6 * cupsModelRowCount), setModelVerticalOffset), (4.8, 8)) → Mix1cupsGreenImagesMasterPt
  19. If(mix1show, 1.1, 0.85) → cupImagesSpacing
  20. If(mix1show, Mix1visualsMasterPt + (5.6 - (0.6 * cupsModelRowCount), setModelVerticalOffset), (10.5, 8)) → Mix1cupsWhiteImagesMasterPt
  21. If(mix1show, 1.2, 0.75) → cupImagesHeight
  22. Polygon(Mix1visualsMasterPt + (0, tapeDiagramHeight + 0.1), Mix1visualsMasterPt + (If[SelectedElement[mix1cupsGreen] ≥ SelectedElement[mix1cupsWhite], tapeDiagRectModelWidth, (SelectedElement[mix1cupsGreen] * tapeDiagRectModelWidth / SelectedElement[mix1cupsWhite])], tapeDiagramHeight + 0.1), Mix1visualsMasterPt + (If[SelectedElement[mix1cupsGreen] ≥ SelectedElement[mix1cupsWhite], tapeDiagRectModelWidth, (SelectedElement[mix1cupsGreen] * tapeDiagRectModelWidth / SelectedElement[mix1cupsWhite])], (2 * tapeDiagramHeight)), Mix1visualsMasterPt + (0, (2 * tapeDiagramHeight))) → mix1tapeDiagGreenPoly, mix1tapeDiagGreenPolySeg_1, mix1tapeDiagGreenPolySeg_2, mix1tapeDiagGreenPolySeg_3, mix1tapeDiagGreenPolySeg
  23. Polygon(Mix1visualsMasterPt + (0, 0), Mix1visualsMasterPt + (If[SelectedElement[mix1cupsWhite] ≥ SelectedElement[mix1cupsGreen], tapeDiagRectModelWidth, (SelectedElement[mix1cupsWhite] * tapeDiagRectModelWidth / SelectedElement[mix1cupsGreen])], 0), Mix1visualsMasterPt + (If[SelectedElement[mix1cupsWhite] ≥ SelectedElement[mix1cupsGreen], tapeDiagRectModelWidth, (SelectedElement[mix1cupsWhite] * tapeDiagRectModelWidth / SelectedElement[mix1cupsGreen])], tapeDiagramHeight - 0.1), Mix1visualsMasterPt + (0, tapeDiagramHeight - 0.1)) → mix1tapeDiagWhitePoly, mix1tapeDiagWhitePolySeg_1, mix1tapeDiagWhitePolySeg_2, mix1tapeDiagWhitePolySeg_3, mix1tapeDiagWhitePolySeg
  24. Polygon(Mix1visualsMasterPt + (0, rectModelVerticalOffset), Mix1visualsMasterPt + (tapeDiagRectModelWidth, rectModelVerticalOffset), Mix1visualsMasterPt + (tapeDiagRectModelWidth, 3 + rectModelVerticalOffset), Mix1visualsMasterPt + (0, 3 + rectModelVerticalOffset)) → mix1rectAreaOutline, mix1rectAreaOutlineSeg_3, mix1rectAreaOutlineSeg, mix1rectAreaOutlineSeg_1, mix1rectAreaOutlineSeg_2
  25. SelectedIndex(mix1visualType) → mix1visualTypeSelected
  26. Polygon(Mix1visualsMasterPt + (0, rectModelVerticalOffset), Mix1visualsMasterPt + ((SelectedElement[mix1cupsGreen] * tapeDiagRectModelWidth / mix1cupsTotal), rectModelVerticalOffset), Mix1visualsMasterPt + ((SelectedElement[mix1cupsGreen] * tapeDiagRectModelWidth / mix1cupsTotal), 3 + rectModelVerticalOffset), Mix1visualsMasterPt + (0, 3 + rectModelVerticalOffset)) → mix1rectAreaGreenPoly, r, s, t, h_1
  27. Midpoint(Mix1visualsMasterPt, Mix1visualsMasterPt + (tapeDiagRectModelWidth, 3.8)) → Mix1circleModelCenter
  28. Circle(Mix1circleModelCenter, circleModelRadius) → mix1circleModelOutline
  29. Circle(Mix1circleModelCenter, circleModelRadius) → mix1circleModelGreenSector2
  30. Sequence(Segment[Mix1circleModelCenter, Rotate[Mix1circleModelSectorRefPt, (i * (2 * π / mix1cupsTotal)), Mix1circleModelCenter]], i, 0, mix1cupsTotal - 1, 1) → mix1circleModelDividers
  31. CircleSector(Mix1circleModelCenter, Mix1circleModelSectorRefPt, Rotate[Mix1circleModelSectorRefPt, ((1.99999999999999 * π) * SelectedElement[mix1cupsWhite] / mix1cupsTotal), Mix1circleModelCenter]) → mix1circleModelWhiteSector
  32. Conic(Can1PtMaster + (canWidth / 2, (canHeight * mix1cupsTotal / ((2 * cupsMax))) - 0.5), Can1PtMaster + (canWidth - 0.02, (canHeight * mix1cupsTotal / ((2 * cupsMax)))), Can1PtMaster + ((5 / 6 * canWidth), (canHeight * mix1cupsTotal / ((2 * cupsMax))) + 0.5), Can1PtMaster + (canWidth / 6, (canHeight * mix1cupsTotal / ((2 * cupsMax))) + 0.5), Can1PtMaster + (0.02, (canHeight * mix1cupsTotal / ((2 * cupsMax))))) → can1fillTopConicWhiteOutline
  33. Sequence(Segment[Mix1visualsMasterPt + (0 + i, 0), Mix1visualsMasterPt + (0 + i, tapeDiagramHeight - 0.1)], i, 0, If[SelectedElement[mix1cupsWhite] ≥ SelectedElement[mix1cupsGreen], tapeDiagRectModelWidth, (SelectedElement[mix1cupsWhite] * tapeDiagRectModelWidth / SelectedElement[mix1cupsGreen])], If[SelectedElement[mix1cupsWhite] ≥ SelectedElement[mix1cupsGreen], tapeDiagRectModelWidth / SelectedElement[mix1cupsWhite], tapeDiagRectModelWidth / SelectedElement[mix1cupsGreen]]) → mix1tapeDiagramWhiteDividers
  34. Sequence(Segment[Mix1visualsMasterPt + (0 + i, tapeDiagramHeight + 0.1), Mix1visualsMasterPt + (0 + i, (2 * tapeDiagramHeight))], i, 0, If[SelectedElement[mix1cupsGreen] ≥ SelectedElement[mix1cupsWhite], tapeDiagRectModelWidth, (SelectedElement[mix1cupsGreen] * tapeDiagRectModelWidth / SelectedElement[mix1cupsWhite])], If[SelectedElement[mix1cupsGreen] ≥ SelectedElement[mix1cupsWhite], tapeDiagRectModelWidth / SelectedElement[mix1cupsGreen], tapeDiagRectModelWidth / SelectedElement[mix1cupsWhite]]) → mix1tapeDiagramGreenDividers
  35. Sequence(Segment[Mix1visualsMasterPt + (i, rectModelVerticalOffset), Mix1visualsMasterPt + (i, 3 + rectModelVerticalOffset)], i, 0, tapeDiagRectModelWidth, tapeDiagRectModelWidth / mix1cupsTotal) → mix1rectAreaDividers
  36. If(mix1show, 0.75, 0.1) → cupImagesRowsGap
  37. Sequence(Polygon[Mix1cupsGreenImagesMasterPt + ((cupImagesSpacing * If[i < cupsModelRowCount, i, i - cupsModelRowCount]), If[i < cupsModelRowCount, 0, (-cupImagesHeight) - cupImagesRowsGap]), Mix1cupsGreenImagesMasterPt + ((cupImagesSpacing * If[i < cupsModelRowCount, i + 0.5, i - cupsModelRowCount + 0.5]), If[i < cupsModelRowCount, 0, (-cupImagesHeight) - cupImagesRowsGap]), Mix1cupsGreenImagesMasterPt + ((cupImagesSpacing * If[i < cupsModelRowCount, i + 0.59, i - cupsModelRowCount + 0.59]), If[i < cupsModelRowCount, cupImagesHeight, (-cupImagesRowsGap)]), Mix1cupsGreenImagesMasterPt + ((cupImagesSpacing * If[i < cupsModelRowCount, i - 0.09, i - cupsModelRowCount - 0.09]), If[i < cupsModelRowCount, cupImagesHeight, (-cupImagesRowsGap)])], i, 0, SelectedElement[mix1cupsGreen] - 1, 1) → mix1cupImagesGreen
  38. Sequence(Polygon[Mix1cupsGreenImagesMasterPt + ((cupImagesSpacing * If[i < cupsModelRowCount, i, i - cupsModelRowCount]), If[i < cupsModelRowCount, 0, (-cupImagesHeight) - cupImagesRowsGap]), Mix1cupsGreenImagesMasterPt + ((cupImagesSpacing * If[i < cupsModelRowCount, i + 0.5, i - cupsModelRowCount + 0.5]), If[i < cupsModelRowCount, 0, (-cupImagesHeight) - cupImagesRowsGap]), Mix1cupsGreenImagesMasterPt + ((cupImagesSpacing * If[i < cupsModelRowCount, i + 0.59, i - cupsModelRowCount + 0.59]), If[i < cupsModelRowCount, cupImagesHeight, (-cupImagesRowsGap)]), Mix1cupsGreenImagesMasterPt + ((cupImagesSpacing * If[i < cupsModelRowCount, i - 0.09, i - cupsModelRowCount - 0.09]), If[i < cupsModelRowCount, cupImagesHeight, (-cupImagesRowsGap)])], i, 0, SelectedElement[mix1cupsGreen] - 1, 1) → mix1cupImagesGreenOutline
  39. Sequence(Polygon[Mix1cupsWhiteImagesMasterPt + ((cupImagesSpacing * If[i < cupsModelRowCount, i, i - cupsModelRowCount]), If[i < cupsModelRowCount, 0, (-cupImagesHeight) - cupImagesRowsGap]), Mix1cupsWhiteImagesMasterPt + ((cupImagesSpacing * If[i < cupsModelRowCount, i + 0.5, i - cupsModelRowCount + 0.5]), If[i < cupsModelRowCount, 0, (-cupImagesHeight) - cupImagesRowsGap]), Mix1cupsWhiteImagesMasterPt + ((cupImagesSpacing * If[i < cupsModelRowCount, i + 0.59, i - cupsModelRowCount + 0.59]), If[i < cupsModelRowCount, cupImagesHeight, (-cupImagesRowsGap)]), Mix1cupsWhiteImagesMasterPt + ((cupImagesSpacing * If[i < cupsModelRowCount, i - 0.09, i - cupsModelRowCount - 0.09]), If[i < cupsModelRowCount, cupImagesHeight, (-cupImagesRowsGap)])], i, 0, If[mix1show, mix1cupsTotal, SelectedElement[mix1cupsWhite]] - 1, 1) → mix1cupImagesWhiteFill
  40. Sequence(Polygon[Mix1cupsWhiteImagesMasterPt + ((cupImagesSpacing * If[i < cupsModelRowCount, i, i - cupsModelRowCount]), If[i < cupsModelRowCount, 0, (-cupImagesHeight) - cupImagesRowsGap]), Mix1cupsWhiteImagesMasterPt + ((cupImagesSpacing * If[i < cupsModelRowCount, i + 0.5, i - cupsModelRowCount + 0.5]), If[i < cupsModelRowCount, 0, (-cupImagesHeight) - cupImagesRowsGap]), Mix1cupsWhiteImagesMasterPt + ((cupImagesSpacing * If[i < cupsModelRowCount, i + 0.59, i - cupsModelRowCount + 0.59]), If[i < cupsModelRowCount, cupImagesHeight, (-cupImagesRowsGap)]), Mix1cupsWhiteImagesMasterPt + ((cupImagesSpacing * If[i < cupsModelRowCount, i - 0.09, i - cupsModelRowCount - 0.09]), If[i < cupsModelRowCount, cupImagesHeight, (-cupImagesRowsGap)])], i, 0, If[mix1show, mix1cupsTotal, SelectedElement[mix1cupsWhite]] - 1, 1) → mix1cupImagesWhiteOutline
  41. Textfield(mix2green) → mix2greenInputBox
  42. Textfield(mix2total) → mix2totalInputBox
  43. Textfield(mix2white) → mix2whiteInputBox
  44. If(round((100 * SelectedElement[mix1cupsGreen] / mix1cupsTotal)) / 100 ≟ round((100 * mix2green / mix2total)) / 100 ∧ round(((100 * mix2total / mix1cupsTotal) * SelectedElement[mix1cupsGreen])) / 100 ≟ round((100 * mix2green)) / 100 ∧ round(((100 * mix2total / mix1cupsTotal) * SelectedElement[mix1cupsWhite])) / 100 ≟ round((100 * mix2white)) / 100, true, false) → mix2accurate
  45. Conic((15.8, 6.2), (20, 6.1), (20.2, 9.3), (17, 9.8), (15.4, 8.44)) → feedbackBackgroundWhite
  46. Polygon((-100, 6.65), (100, 6.65), (100, 9.2), (-100, 9.2)) → questionBackgroundWhite, i_1, m_1, n_1, p_1
  47. Conic((15.8, 6.2), (20, 6.1), (20.2, 9.3), (17, 9.8), (15.4, 8.44)) → feedbackBackgroundWhiteBorder

AI Drawing Prompt Reference

Draw a diagram showing the mixing of paints in two containers, one for green and one for white. The green container has a mixture of green and white paints in a given ratio, and the white container also has a mixture according to the same ratio. Draw the side and top shapes of the two containers, and include a circular and bar chart showing the mixing ratio. Place the containers on a yellow background rectangle at the bottom, with the paints filled according to the given ratio. Include a circular and bar chart to display the ratio of green and white paints.
The prompt above was compiled from the original drawing commands and is for reference only.