Making Similar Triangles
Loading the math board and drawing, please wait…
This activity demonstrates how to create similar triangles using proportions. The key mathematical concepts involve the properties of similar triangles and the relationships between their corresponding parts. Construction involves GeoGebra commands such as RandomUniform, Polygon, Rotate, etc. Suitable for students in grades 6-8 for geometry practice.
GeoGebra Commands & Parameters
RandomUniform(0, 0.99, 200) → allRandomSeeds, {0.1973291391909136, 0.6432058017785154, 0.5220962330650862, 0.3406966616037323, 0.7799136318344704, 0.20397857036896422, 0.4204266090082648, 0.6848733518068142, 0.2778293275431739, 0.8684731623484921, 0.2121712309447309, 0.8549263189483602, 0.5971477709352958, 0.19950859406898777, 0.4090108149668096, 0.8899268130908313, 0.9644849306959234, 0.6816813809857319, 0.7665811336541813, 0.5632353491354566, 0.38958492878233764, 0.5781168849286876, 0.5823501793966774, 0.9155612129192731, 0.6944178150642528, 0.6362323470605767, 0.2399239337148903, 0.13053141523324055, 0.1302687677007886, 0.5312921276157896, 0.7390469226044747, 0.9467985748832267, 0.2907325361268494, 0.7572673135972761, 0.9524678579665011, 0.15566799777127135, 0.8133997391058173, 0.7011827498144554, 0.08618262682717855, 0.9391128943791076, 0.49633180280145184, 0.7697411859622655, 0.5383458671752971, 0.6398733610066295, 0.547170038649443, 0.43555938627384544, 0.7843594977703918, 0.5830976261404588, 0.8729094198978986, 0.2748338334980686, 0.7413008460527021, 0.42768605332759035, 0.5369907745419658, 0.12867282162547264, 0.4239443990610622, 0.9451361619204791, 0.34742570715404963, 0.7966900895726556, 0.1471611917561689, 0.5842643421060739, 0.5751666223120148, 0.793749263685063, 0.13544584897588305, 0.9816920145056246, 0.9258697627054625, 0.9789811271004502, 0.649726365111329, 0.08043675096379434, 0.5305720480332028, 0.19036580578885706, 0.834453051331257, 0.19233641632268894, 0.5016134441008352, 0.21827911841528166, 0.2742421495081112, 0.12436093011367583, 0.8193841298709819, 0.917447391426608, 0.9390673195457571, 0.11413026272587852, 0.53316172238101, 0.5287374018587652, 0.6701453661115752, 0.06615781383528967, 0.0354266426875939, 0.5901281766015841, 0.2352551354106864, 0.5774774665077795, 0.16360412743597985, 0.6400684696485176, 0.41225770920334387, 0.7193886424213919, 0.04617997086600173, 0.7962191711375907, 0.9530525008525688, 0.7510672511827904, 0.08157182951657337, 0.3383117854835251, 0.9371083249011084, 0.5007417362696466, 0.3980116542361158, 0.49552435363621355, 0.3340506429674714, 0.40102217667215206, 0.07100518575637813, 0.6363837390749949, 0.708564804448165, 0.7267961790203483, 0.7516820658795272, 0.16274747322766533, 0.8980924724483736, 0.006869506075969807, 0.18453646623029973, 0.4589018862054273, 0.9744525177395256, 0.024229983389185007, 0.616680284858681, 0.6522317696988099, 0.5146093762406228, 0.6044526702809849, 0.8727923154905505, 0.6732757003674189, 0.19334149358384564, 0.6273393581423965, 0.7504443602276323, 0.8102748030135234, 0.8615284747780941, 0.5134003579526704, 0.6194207157389863, 0.8065559919610069, 0.9881812075561275, 0.0842367457523407, 0.9360211105071451, 0.08826045415924379, 0.832179518950985, 0.21427029007947115, 0.7691470444569606, 0.7650350809556452, 0.2709623142907219, 0.5505946548649364, 0.9792198098788456, 0.7773504284802918, 0.1081315055253332, 0.15798471242075499, 0.7536641918056352, 0.32109012240608964, 0.750085338394068, 0.7773023006463384, 0.13381461761426958, 0.7729774193207871, 0.7433885180885575, 0.2976752182319037, 0.8276610724552951, 0.2692616338479101, 0.10961606155380411, 0.4959026008416251, 0.3108504486690363, 0.6948820492315709, 0.7928743632919496, 0.48055349942969544, 0.9647942980025912, 0.4910594690643345, 0.527107096322375, 0.6231762824502348, 0.855606839538919, 0.9259357686921853, 0.005636077422172855, 0.09492579346898235, 0.650908074865662, 0.3154882798740696, 0.26416548004074253, 0.7737407427399046, 0.6432746179491672, 0.02049214677353729, 0.23069558540578228, 0.5649678232478307, 0.5993063488325018, 0.8697848948336719, 0.5914458752692994, 0.7670303973756225, 0.721900144380018, 0.2405083132560324, 0.26097937337265165, 0.6733775326194165, 0.7303825930758941, 0.4523596196237405, 0.17724923231981238, 0.19252622577002168, 0.9786514545548936, 0.4851791120220793, 0.9282558920707329, 0.6795228647684076, 0.8854112681863545, 0.9374337478670834, 0.7964063601100783, 0.24460101777340643, 0.3929614470740334, 0.687326042408966, 0.869510353104017, 0.7582017311325526}Polygon({(-1, -1), (-1, maxDisplay), (maxDisplay, maxDisplay), (maxDisplay, -1)}) → moveAreaPointIn(moveArea) → FMoveTake(allRandomSeeds, randIndex, randIndex + numRandoms - 1) → currentRandomSeedsElement({0.5, 0.6, 0.75, 0.8, 2, 1.25, 1.5}, 1 + floor((currentRandomSeeds(2) * 7))) → scaleFactorIf(scaleFactor < 1, 1 / scaleFactor, scaleFactor) → scaleUpElement({{3, 4, 5}, {3, 6, 4}, {4, 7, 6}, {3, 7, 6}, {3, 8, 6}}, caseNum) → lengthsCurrentRotate(TemplateA + (lengthsCurrent(2), 0), angleA, TemplateA) → TemplateCTriangleCenter(TemplateA, TemplateB, TemplateC, 1) → CenterTemplateRotate(templateVertices, rotationAngle, CenterTemplate) → templateVerticesRotatedIf(smallLeft, Max[x(TemplateB), x(TemplateC)], Max[(0.75 * maxXRotated), maxYRotated]) → maxLengthIf(smallLeft, Dilate[templateVertices, maxDisplay / maxLength, TemplateA], Dilate[templateVerticesRotated, maxDisplay / maxLength, CenterTemplate]) → templateVerticesLargeIf(smallLeft, Dilate[templateVerticesRotated, (maxDisplay / maxLength * 1 / scaleUp), CenterTemplate], Dilate[templateVertices, (maxDisplay / maxLength * 1 / scaleUp), TemplateA]) → templateVerticesSmallIf(smallLeft, templateVerticesLarge, templateVerticesSmall) → verticesRightTriangleCenter(templateVerticesSmall(1), templateVerticesSmall(2), templateVerticesSmall(3), 1) → CenterSmallNumerator(scaleUp) → multiplierSegment(verticesRight(1), verticesRight(2)) → sideDESegment(verticesRight(1), If[(¬showsolution) ∧ (¬showanswer), FMove, FSoln]) → sideFDSegment(verticesRight(2), If[(¬showsolution) ∧ (¬showanswer), FMove, FSoln]) → sideEFZip(Midpoint[A, B] + UnitOrthogonalVector[A - B], A, {verticesRight(1), verticesRight(2), If[(¬showsolution) ∧ (¬showanswer), FMove, FSoln]}, B, {verticesRight(2), If[(¬showsolution) ∧ (¬showanswer), FMove, FSoln], verticesRight(1)}) → lblPosRightIf(FMove ≟ verticesRight(3), sidesSolution, Zip[closestFraction[(displayFactor * A), denominators], A, {sideDE, sideEF, sideFD}]) → displayLengthsRightMin(Zip[x(A), A, templateVerticesLarge]) → minXLargeMax(Zip[x(A), A, templateVerticesLarge]) → maxXLargeMin(Zip[y(A), A, templateVerticesLarge]) → minYLargeTranslate(If[smallLeft, templateVerticesSmall, templateVerticesLarge], If[smallLeft, CenterLeft - CenterSmall, vMove]) → verticesLeftZip(Midpoint[A, B] + (0.7 * UnitOrthogonalVector[A - B]), A, verticesLeft, B, {verticesLeft(2), verticesLeft(3), verticesLeft(1)}) → lblPosLeftMax(Zip[y(A), A, templateVerticesLarge]) → maxYLargeZip(Distance[CenterTemplate, A], A, {TemplateA, TemplateB, TemplateC}) → distanceFromCenterTriangleCenter(templateVerticesLarge(1), templateVerticesLarge(2), templateVerticesLarge(3), 1) → CenterLargeIf(¬showsolution, 250, 250) → layoutYCorner(5) → layoutAppSizeonboardingTextOffset(Corner[onboardingText, 1], Corner[onboardingText, 3], onboardingCase, Corner[1], Corner[3], Corner[5]) → OnboardingTextOffsetPolygon(verticesRight) → solnTrianglegetLabelPos(verticesLeft(1), verticesLeft(2), verticesLeft(3), 0.7, 1) → lblPosVertsLeftZip(Text[("" * A), B, false, true, 0, 0], A, {"A", "B", "C", "D"}, B, lblPosVertsLeft) → labelVertsLeftZip(Text[("" * A), B, true, true, 0, 0], A, lblLeftColor, B, lblPosLeft) → lblLeftFractionText(scaleFactor) → scaleLatexPolygon({verticesRight(1), verticesRight(2), FMove}) → studentTriangleZip(Text[("" * A), B, true, true, 0, 0], A, lblRightColor, B, lblPosRight) → lblRightSegment(verticesLeft(1), verticesLeft(2)) → sideABSegment(verticesLeft(2), verticesLeft(3)) → sideBCSegment(verticesLeft(3), verticesLeft(1)) → sideCAcirclePixels(FMove, 7 + (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingPointPolygon({verticesRight(1), verticesRight(2), FMove}) → studentAnswerText("D", (0, 0), true, true, -1, -1) → lblDText("E", verticesRight(2), true, true, 1, -1) → lblEIf(¬showsolution, 15, 30) → xMaxSequence(acosd(((lengthsCurrent(2))^(2) + (lengthsAll(n, 3))^(2) - (lengthsAll(n, 1))^(2)) / (((2 * lengthsCurrent(2)) * lengthsAll(n, 3)))), n, 1, 5) → anglesA, {36.86989764584401*°, 44.04862567408433*°, 41.40962210927086*°, 26.38432974940796*°, 26.38432974940796*°}Sequence(Rotate[TemplateA + (lengthsAll(n, 2), 0), anglesA(n), TemplateA], n, 1, 5) → TemplatesCIf(smallLeft, Dilate[TemplatesC, maxDisplay / maxLength, TemplateA], Dilate[TemplatesC, (maxDisplay / maxLength * 1 / scaleUp), TemplateA]) → thirdPossibilitiesStartFlatten(Zip[{n, Mirror[n, x = x(Element[verticesRight, 2]) / 2]}, n, thirdPossibilitiesStart]) → thirdPossibilitiesClosestPoint(thirdPossibilities, FMove) → closestVal
AI Drawing Prompt Reference
Draw two similar triangles, one with vertices A, B, C and the other with vertices D, E, F. Use a scale factor to ensure the corresponding sides of the triangles are proportional. Start by randomly generating one triangle, then create a similar triangle by scaling it up or down according to the scale factor. Make sure the corresponding sides of the similar triangles are proportional and the vertices are correctly positioned.
The prompt above was compiled from the original drawing commands and is for reference only.