Partitioning Areas of Rectangles with Mixed Number Side Lengths
Loading the math board and drawing, please wait…
This example calculates the areas of rectangles with fractional side lengths by partitioning and counting unit areas. It explores the relationship between the total number of square units in a rectangle and its length and width, suitable for 4-5 grade students. GeoGebra commands used include slider animation, partitioning, maximum, polygon, sequence, etc.
GeoGebra Commands & Parameters
Shuffle({{2, 2}, {2, 4}, {4, 2}, {2, 6}, {6, 2}, {3, 3}, {3, 6}, {6, 3}, {4, 4}, {5, 5}}) → m1, {{6, 2}, {2, 6}, {2, 4}, {3, 3}, {6, 3}, {5, 5}, {3, 6}, {4, 4}, {4, 2}, {2, 2}}Shuffle(Sequence[maxInt1]) → integers1, {1, 3, 2}Shuffle(Sequence[maxInt2]) → integers2, {1, 5, 6, 4, 3, 2}Element(m1, Mod[example, Length[m1]] + 1) → DenominatorsShuffle(Sequence[den1 - 1]) → numerators1, {1, 3, 4, 2, 5}Shuffle(Sequence[den2 - 1]) → numerators2, {1}LCM(Denominators) → comonDenMax(KeepIf[IsInteger[comonDen^(2) / kk], kk, Sequence[(num1 * comonDen / den1)]]) → hRecBelowMax(KeepIf[IsInteger[comonDen^(2) / kk], kk, Sequence[(num2 * comonDen / den2)]]) → wRecSidePolygon({(0, maxInt1 + 1 - int1), (0, maxInt1 + 1 - int1 - (hRecBelow * 1 / comonDen)), (wRecBelow / comonDen, maxInt1 + 1 - int1 - (hRecBelow * 1 / comonDen)), (wRecBelow / comonDen, maxInt1 + 1 - int1)}) → RecBelowSequence(Sequence[Translate[RecBelow, Vector[((ii * wRecBelow / comonDen), (jj * ((-hRecBelow)) / comonDen))]], ii, 0, floor((int2 * comonDen / wRecBelow)) - 1], jj, 0, numberOfRowsBelow - 1) → rectanglesBelowTarget, {{}}Length(Flatten[rectanglesBelowTarget]) → numOfRecBelowPolygon({(int2, maxInt1 + 1), (int2, maxInt1 + 1 - hRecSide / comonDen), (int2 + wRecSide / comonDen, maxInt1 + 1 - hRecSide / comonDen), (int2 + wRecSide / comonDen, maxInt1 + 1)}) → RecSideSequence(Sequence[Translate[RecSide, Vector[((jj * wRecSide / comonDen), (ii * ((-hRecSide)) / comonDen))]], ii, 0, floor((int1 * comonDen / hRecSide)) - 1], jj, 0, numberOfColumnsSide - 1) → rectanglesSideTarget, {{}}Length(Flatten[rectanglesSideTarget]) → numOfRecSidePolygon({(0, Max[integers1] + 1), (0, Max[integers1] + 1 - int1 - num1 / den1), (int2 + num2 / den2, Max[integers1] + 1 - int1 - num1 / den1), (int2 + num2 / den2, Max[integers1] + 1)}) → q1Mod(remainder, comonDen^(2)) → lastSquaresTranslate((int2, maxInt1 + 1), Vector[((numberOfColumnsSide * wRecSide / comonDen), (floor((int1 * comonDen / hRecSide)) * ((-hRecSide)) / comonDen))]) → EndPointLZone5Flatten(Sequence[Sequence[Polygon[EndPointLZone5 + (ii / comonDen, jj / comonDen), EndPointLZone5 + ((ii + 1) / comonDen, jj / comonDen), 4], ii, 0, ((x(EndPointRZone5) - x(EndPointLZone5)) * comonDen) - 1], jj, 0, ((y(EndPointRZone5) - y(EndPointLZone5)) * comonDen) - 1]) → Zone5Flatten(Sequence[Sequence[Polygon[EndPointLZone4 + (ii / comonDen, jj / comonDen), EndPointLZone4 + ((ii + 1) / comonDen, jj / comonDen), 4], ii, 0, ((x(EndPointRZone4) - x(EndPointLZone4)) * comonDen) - 1], jj, 0, ((y(EndPointRZone4) - y(EndPointLZone4)) * comonDen) - 1]) → Zone4Flatten(Sequence[Sequence[Polygon[EndPointLZone3 + (ii / comonDen, jj / comonDen), EndPointLZone3 + ((ii + 1) / comonDen, jj / comonDen), 4], ii, 0, ((x(EndPointRZone3) - x(EndPointLZone3)) * comonDen) - 1], jj, 0, ((y(EndPointRZone3) - y(EndPointLZone3)) * comonDen) - 1]) → Zone3Translate((0, maxInt1 + 1 - int1), Vector[((floor((int2 * comonDen / wRecBelow)) * wRecBelow / comonDen), (numberOfRowsBelow * ((-hRecBelow)) / comonDen))]) → EndPointRZone1Flatten(Sequence[Sequence[Polygon[EndPointLZone2 + (ii / comonDen, jj / comonDen), EndPointLZone2 + ((ii + 1) / comonDen, jj / comonDen), 4], ii, 0, ((x(EndPointRZone2) - x(EndPointLZone2)) * comonDen) - 1], jj, 0, ((y(EndPointRZone2) - y(EndPointLZone2)) * comonDen) - 1]) → Zone2Flatten(Sequence[Sequence[Polygon[EndPointLZone1 + (ii / comonDen, jj / comonDen), EndPointLZone1 + ((ii + 1) / comonDen, jj / comonDen), 4], ii, 0, (x(EndPointRZone1) * comonDen) - 1], jj, 0, ((y(EndPointRZone1) - y(EndPointLZone1)) * comonDen) - 1]) → Zone1Join({Zone1, Zone2, Zone3, Zone4, Zone5}) → ZoneAllCorner(5) → AppSizePolygon({CornerUS, CornerUS - (0, 1), CornerUS + (1, -1), CornerUS + (1, 0)}) → unitSquareFlatten(Sequence[Sequence[(ii, maxInt1 + 1 - jj), jj, 0, int1 - 1], ii, 0, int2 - 1]) → TargetPointsUSZip(Translate[unitSquare, Vector[(Min[Max[sliderUS - kk, 0], 1] * Vector[CornerUS, PP])]], PP, TargetPointsUS, kk, Sequence[0, (int1 * int2) - 1]) → MovableUSTranslate(RecBelow, Vector[(0, maxInt1 + 1 - int1), CornerURB]) → RecBelow'Translate(RecSide, Vector[(int2, maxInt1 + 1), CornerURS]) → RecSide'Point(Circle[(0, 5.5), int2 + num2 / den2]) → ASegment((0, maxInt1 + 1.3), (int2 + num2 / den2, maxInt1 + 1.3)) → segmenAboveSegment((-0.3, maxInt1 + 1), (-0.3, maxInt1 + 1 - int1 - num1 / den1)) → segmentSideMidpoint(segmenAbove) → LabelSegAbovePosMidpoint(segmentSide) → LablelSegmentSidePosSequence(Segment[(0, ii), (maxInt2 + 1, ii)], ii, 0, maxInt1 + 1) → GridMHSequence(Segment[(ii, 0), (ii, maxInt1 + 1)], ii, 0, maxInt2 + 1) → GridMVSequence(Segment[(0, ii), (maxInt2 + 1, ii)], ii, 0, maxInt1 + 1, 1 / comonDen) → GridmHSequence(Segment[(ii, 0), (ii, 1 + maxInt1)], ii, 0, maxInt2 + 1, 1 / comonDen) → GridmVFlatten(Sequence[Sequence[Translate[(int2, maxInt1 + 1), Vector[((jj * wRecSide / comonDen), (ii * ((-hRecSide)) / comonDen))]], ii, 0, floor((int1 * comonDen / hRecSide)) - 1], jj, 0, numberOfColumnsSide - 1]) → TargetPointsRecSZip(Translate[RecSide', Vector[(Min[Max[sliderRS - kk, 0], 1] * Vector[CornerURS, PP])]], PP, TargetPointsRecS, kk, Sequence[0, numOfRecSide]) → rectanglesSideMovableFlatten(Sequence[Sequence[Translate[(0, maxInt1 + 1 - int1), Vector[((ii * wRecBelow / comonDen), (jj * ((-hRecBelow)) / comonDen))]], ii, 0, floor((int2 * comonDen / wRecBelow)) - 1], jj, 0, numberOfRowsBelow - 1]) → TargetPointsRecBZip(Translate[RecBelow', Vector[(Min[Max[sliderRB - kk, 0], 1] * Vector[CornerURB, PP])]], PP, TargetPointsRecB, kk, Sequence[0, numOfRecBelow]) → rectanglesBelowMovableSequence(Take[ZoneAll, (ii * comonDen^(2)) + 1, ((ii + 1) * comonDen^(2))], ii, 0, floor(sliderRemainder) - 1) → ZoneAllIntoPartsLast(ZoneAll, sliderLastTiles) → ZoneAllLastMidpoint(Vertex[Element[ZoneAllLast, lastSquares / 2], 1], Vertex[Element[ZoneAllLast, lastSquares / 2], 3]) → Arrow1Text(fracAbove, LabelSegAbovePos, true, true, 0, 1) → fracAbovePlacedSequence(Flatten[Zip[Sequence[Segment[Vertex[pp, ii], Vertex[pp, If[ii ≟ 4, 1, ii + 1]]], ii, 1, 4], pp, If[Length[ZoneAllIntoParts] ≟ 0, MovableUS, Element[ZoneAllIntoParts, jj]]]], jj, 1, Length[ZoneAllIntoParts]) → auxListForZoneAllBlackSequence(Remove[Unique[Element[auxListForZoneAllBlack, ii]], Remove[Element[auxListForZoneAllBlack, ii], Unique[Element[auxListForZoneAllBlack, ii]]]], ii, 1, Length[auxListForZoneAllBlack]) → ZoneAllIntoPartsBlackText(fracSide, LablelSegmentSidePos - (0.4, 0), true, true, 0, 0) → fracSidePlacedTranslate(hGuideline, Vector[(Vector[Corner[4], Corner[1]] / 500 * 24)]) → hGuideline'_{1}Translate(vGuideline, Vector[(Vector[Corner[1], Corner[2]] / 800 * 16)]) → vGuideline'Translate(hGuideline, Vector[(Vector[Corner[4], Corner[1]] / 500 * 24)]) → hGuideline'If(numOfRecSide ≟ 0, 98, 24 + 98 + ((500 * hRecSide / comonDen) * 1 / (y(Cor3) - y(Cor1)))) → yPosSliderUTIf(floor(remainder / comonDen^(2)) ≟ 0, yPosSliderUT, yPosSliderUT + 278 - 203.5) → yPosSliderRA
AI Drawing Prompt Reference
Draw a coordinate grid containing a rectangle with mixed number side lengths, where length and width are composed of integer and fractional parts. Partition the rectangle into unit squares and further subdivide into smaller fractional unit squares. Generate two sets of movable small rectangles below and to the right of the main rectangle to represent area partitioning. Different zones inside the rectangle are distinguished by colors or shading, with fraction labels displayed. Include horizontal and vertical grid lines and interactive sliders.
The prompt above was compiled from the original drawing commands and is for reference only.