Applying Proportions to Similar Polygons
Loading the math board and drawing, please wait…
This example demonstrates how to use proportions to solve for missing side lengths in similar polygons. The key mathematical concept is proportional reasoning for similar polygons. Construction involves using GeoGebra commands like Shuffle, RandomUniform, Polygon, and equations to set up and solve proportions. It is suitable for students in grades 6-8 to practice applying proportional reasoning to similar polygons.
GeoGebra Commands & Parameters
Shuffle({1, 2, 3}) → randomTriangleIndices, {3, 2, 1}Shuffle(Sequence[5, 12]) → randomLengths, {6, 7, 12, 9, 8, 5, 11, 10}Shuffle(Remove[Sequence[A, A, pi / 12, (23 * pi / 12), pi / 12], {pi}]) → randomRotations, {2.6179938779914944, 3.6651914291880927, 4.71238898038469, 1.0471975511965976, 0.7853981633974483, 5.497787143782137, 1.8325957145940457, 4.188790204786391, 4.974188368183839, 0.5235987755982988, 5.235987755982988, 2.356194490192345, 0.2617993877991494, 2.879793265790644, 3.403392041388943, 2.0943951023931953, 6.021385919380435, 4.4505895925855405, 1.5707963267948963, 3.9269908169872423, 1.308996938995747, 5.759586531581286}Shuffle({2, 1.5}) → randomScales, {1.5, 2}Shuffle({1, 2, 3, 4}) → randomQuadIndices, {3, 4, 2, 1}RandomUniform(0.1, 0.99, 100) → randomSeeds, {0.9159242885544292, 0.7194722776909817, 0.9074735971434146, 0.6128008993023989, 0.6398424420560205, 0.8476743339724296, 0.23708350263339747, 0.47145764691659575, 0.5844839968135862, 0.1334438830349507, 0.4573305252766091, 0.23648333817669845, 0.5850007551380615, 0.4116709711637444, 0.5603809173535015, 0.8987351586063724, 0.3024573988334601, 0.7323727958119245, 0.6312053729671658, 0.24241167720296278, 0.25138142635656, 0.31058419244100366, 0.10033509766738295, 0.4293866648285155, 0.31383042449484, 0.2952737761672871, 0.18949233362772308, 0.5138777477802821, 0.6257695639525194, 0.7344084951276636, 0.5131778462626245, 0.2625271748494207, 0.4365221467333904, 0.750213786629001, 0.6213000117973142, 0.7401767305344435, 0.7535898613204102, 0.354662467057993, 0.18149427870205279, 0.1908870831317645, 0.9032350372364875, 0.9002745369089312, 0.584909314849013, 0.9570810413449745, 0.7518749121312592, 0.755421261744991, 0.6259248421994813, 0.4570835825594882, 0.9245593102568908, 0.32650074218762515, 0.28451870723579153, 0.3427861128003934, 0.5645856480236486, 0.16158863155632064, 0.3198150295531721, 0.5946801588855877, 0.19265157550413198, 0.8014664200546204, 0.3647219628611411, 0.4610857021093919, 0.23485324618705317, 0.7342908987762164, 0.20450754088234366, 0.22204211737698748, 0.756307997865953, 0.6695924564101424, 0.5966636340487064, 0.6760345454796468, 0.5712137937343463, 0.5257761363030851, 0.9254725642078748, 0.7494960694222188, 0.6907527618191324, 0.12284801084788498, 0.2923180159061032, 0.38485651384230435, 0.6374053545836568, 0.14870110363617653, 0.5119713718006532, 0.9528008592739939, 0.5779613818113712, 0.8129686403808443, 0.8258362211346547, 0.6883555130353801, 0.28779796317947676, 0.14718877888495246, 0.555448578418895, 0.9484381836122161, 0.42583998139340296, 0.37382401042565694, 0.18340729659359528, 0.12058747562360442, 0.1730269268160666, 0.8795393706363878, 0.6843482517268716, 0.8487302713722331, 0.47708030120654676, 0.4500678928699585, 0.8355783613763982, 0.6420508930294732}Zip(floor((A * 100)), A, randomSeeds) → randomValuesRemoveUndefined(Zip[If[A ≠ HOME, A], A, inputProportion]) → studentArrangementRemoveUndefined(Sequence[If[currentLocations(A) ≠ HOME, A], A, 1, Length[currentLocations]]) → studentValuesIf(IsInteger[countQuestion / 2], 1, 2) → caseNumIf(caseNum ≟ 1, randomTriangleIndices, randomQuadIndices) → randomIndicesIf(countQuestion ≟ 0, 2, Element[randomIndices, Mod[(2 * countQuestion) + 1, Length[randomIndices]] + 1]) → indexSideIf(countQuestion ≟ 0, 1, Element[randomIndices, Mod[(2 * countQuestion), Length[randomIndices]] + 1]) → indexXIf(countQuestion ≟ 0, pi / 2, randomRotations(Mod[countQuestion, Length[randomRotations]] + 1)) → rotationStartIf(rotationStart > pi, 1, -1) → rotateDirectionPointToPixels(Corner[1], Corner[3], Corner[5], P3) → StartPixelsIf(countQuestion ≟ 0, {5, 7, 8, 9}, Sort[{val1, val2, val3, val4}]) → currentValsIf(currentVals(3) ≥ currentVals(1) + currentVals(2), currentVals(1) + currentVals(2) - 1, currentVals(3)) → length3If(caseNum ≟ 1, {length1, length3, length2}, {length1, length3, length4, length2}) → leftLengthsIf(countQuestion ≟ 0, 2, Element[randomScales, Mod[countQuestion, Length[randomScales]] + 1]) → scaleFactorZip((scaleFactor * A), A, leftLengths) → rightLengthsIf(labelledObject ≟ RIGHT, leftLengths(indexX), rightLengths(indexX)) → expectedAnsElement(movingPoints, movingIndex) → PMovecenterBox(boxWidth, boxWidth, boxAnchors(4)) → frame4centerBox(boxWidth, boxWidth, boxAnchors(3)) → frame3centerBox(boxWidth, boxWidth, boxAnchors(2)) → frame2centerBox(boxWidth, boxWidth, boxAnchors(1)) → frame1Rotate(PtA + (length2, 0), angleA, PtA) → PtCCircleArc(PtB, PtB + (length3 * UnitVector[PtB - PtC]), PtB - (length3 * UnitVector[PtB - PtC])) → arcBCircleArc(PtC, PtC + (length4 * UnitVector[PtA - PtC]), PtC - (length4 * UnitVector[PtA - PtC])) → arcCIntersect(arcB, arcC) → PtD, , ,If(caseNum ≟ 1, {PtA, PtB, PtC}, {PtA, PtB, PtD, PtC}) → templateVerticesZip(PtA + (scaleFactor * (K - PtA)), K, templateVertices) → templateVerticesLargeIf(caseNum ≟ 1, TriangleCenter[templateVertices(1), templateVertices(2), templateVertices(3), 1], Midpoint[templateVertices(1), templateVertices(3)]) → CenterLeftZip(Rotate[A, rotationAngle, CenterLeft], A, templateVertices) → verticesLeftMax(Flatten[Sequence[Zip[Distance[verticesLeft(A), B], B, verticesLeft], A, 1, Length[verticesLeft]]]) → maxWidthLeftPolygon({(0, 0), (50, 0), (50, 32), (0, 32)}) → viewboxIf(scaleFactor < 1, 1 / scaleFactor, scaleFactor) → scaleUpCorner(5) → layoutAppSizePolygon(verticesLeft) → polyLeftVector(HomePoint, (5, 5)) → vSolnStartonboardingTextOffset(Corner[onboardingText, 1], Corner[onboardingText, 3], onboardingCase, Corner[1], Corner[3], Corner[5]) → OnboardingTextOffsetSort(Take[Append[randomLengths, randomLengths], Mod[(4 * countQuestion), Length[randomLengths]] + 1]) → currentLengthsPolygon(templateVerticesLarge) → templateLargeTranslate(templateVerticesLarge, vTrans) → verticesRightPolygon(verticesRight) → polyRightZip(Midpoint[A, B] + (3 * UnitOrthogonalVector[A - B]), A, verticesLeft, B, Append[Take[verticesLeft, 2], verticesLeft(1)]) → lblPosLeftZip(Midpoint[A, B] + (3 * UnitOrthogonalVector[A - B]), A, verticesRight, B, Append[Take[verticesRight, 2], verticesRight(1)]) → lblPosRightIf(caseNum ≟ 1, getLabelPos3[verticesLeft(1), verticesLeft(2), verticesLeft(3), 2, 1], getLabelPos4[verticesLeft(1), verticesLeft(2), verticesLeft(3), verticesLeft(4), 2, 1]) → lblPosVertsLeftZip(Text[("" * A), B, false, true, 0, 0], A, {"A", "B", "C", "D"}, B, lblPosVertsLeft) → labelVertsLeftIf(caseNum ≟ 1, getLabelPos3[verticesRight(1), verticesRight(2), verticesRight(3), 2, 1], getLabelPos4[verticesRight(1), verticesRight(2), verticesRight(3), verticesRight(4), 2, 1]) → lblPosVertsRightZip(Text[("" * A), B, false, true, 0, 0], A, {"X", "Y", "Z", "W"}, B, lblPosVertsRight) → labelVertsRightIf(caseNum ≟ 2, Join[{lblPosLeft, lblPosRight}], Join[{lblPosLeft, {(0, 0)}, lblPosRight, {(0, 0)}}]) → allHomeAnchorscenterBox(boxWidth, boxWidth, P1) → box1centerBox(boxWidth, boxWidth, P2) → box2centerBox(boxWidth, boxWidth, P3) → box3centerBox(boxWidth, boxWidth, P4) → box4centerBox(boxWidth, boxWidth, P5) → box5centerBox(boxWidth, boxWidth, P6) → box6centerBox(boxWidth, boxWidth, P7) → box7centerBox(boxWidth, boxWidth, P8) → box8IndexOf(true, Zip[IsInRegion[PMove, A], A, {frame1, frame2, frame3, frame4}]) → locationPMovecenterBox(boxWidth, boxWidth, PMove) → highlightBoxcenterBox(boxWidth, boxWidth, boxAnchors(locationPMove)) → highlightFrameIf(labelledObject ≟ RIGHT, Zip[(("" * A) * ""), A, rightLengths], Sequence[If[i ≟ indexX, "x", If[i ≟ indexSide, (("" * rightLengths(indexSide)) * ""), ""]], i, 1, 4]) → textRightIf(labelledObject ≟ LEFT, Sequence[If[A > Length[leftLengths], "", ("" * leftLengths(A))], A, 1, 4], Sequence[If[i ≟ indexX, "x", If[i ≟ indexSide, (("" * leftLengths(indexSide)) * ""), ""]], i, 1, 4]) → textLeftJoin({textLeft, textRight}) → textAllBoxesText(("" * textAllBoxes(movingIndex)), If[Defined[PMove], PMove, (300, 300)], false, true, 0, 0) → textHighlightDefined(IndexOf[studentArrangement, possibleCorrectArrangements]) → correctArrangementIf(labelledObject ≟ LEFT, rightLengths(indexSide), leftLengths(indexSide)) → denom1If(labelledObject ≟ LEFT, leftLengths(indexX), rightLengths(indexX)) → numer2If(labelledObject ≟ LEFT, leftLengths(indexSide), rightLengths(indexSide)) → denom2Textfield(studentX) → inputAnsZip(expandQuad[Vertex[A, 1], Vertex[A, 2], Vertex[A, 3], Vertex[A, 4], (7 * pulsing), Corner[1], Corner[3], Corner[5]], A, {box1, box2, box3, box4, box5, box6}) → pulsingObjectsSequence(If[currentLocations(i) ≟ HOME, i], i, 1, Length[allHomeAnchors]) → rotatePointsSequence(allHomeAnchors(A), A, 1, Length[movingPoints]) → homeLocationsRemoveUndefined(Sequence[If[currentLocations(A) ≟ HOME, (((("SetValue(P" * A) * ",homeLocations(") * A) * "))")], A, 1, 4]) → cmdRotateSequence(If[Defined[IndexOf[A, expectedIndices]], textAllBoxes(A), ""], A, 1, Length[movingPoints]) → textNecessaryZip(Text[("" * A), B, true, true, 0, 0], A, If[step ≟ 1 ∧ triesStep1 > 2, textNecessary, textAllBoxes], B, movingPoints) → boxTextDisplayZip(Text[("" * A), B, true, true, 0, 0], A, If[step ≟ 1 ∧ triesStep1 > 3, Take[textNecessary, 5], textRight], B, lblPosRight) → lblRightZip(Text[("" * A), B, true, true, 0, 0], A, If[step ≟ 1 ∧ triesStep1 > 2, textNecessary, textLeft], B, lblPosLeft) → lblLeftZip(boxTextDisplay(IndexOf[A, currentLocations]), A, {1, 2, 3, 4}) → studentDigitsOrderedRemoveUndefined(Sequence[If[¬Defined[IndexOf[A, expectedIndices]], (("SetValue(currentLocations," * A) * ",HOME)")], A, 1, numPoints]) → cmdSendDistractorsHomeSequence((("SetFixed(box" * A) * ",false,enableInput)"), A, 1, numPoints) → cmdFixBoxesSequence((((((((("SetValue(P" * A) * ",If(currentLocations(") * A) * ")==HOME,homeLocations(") * A) * "),boxAnchors(currentLocations(") * A) * "))))"), A, 1, numPoints) → cmdOrganize
AI Drawing Prompt Reference
Draw two similar polygons side by side, with the left one smaller and the right one larger by a scale factor. Each polygon can be a triangle or quadrilateral with randomly chosen side lengths. The right polygon's sides are the left's sides multiplied by the scale factor. Place them horizontally with some rotation, and label each side with its length: original lengths on the left, scaled lengths on the right. Use solid outlines and clear text labels on a white background, emphasizing the proportional relationship between corresponding sides.
The prompt above was compiled from the original drawing commands and is for reference only.