Judging Similar Triangles
Loading the math board and drawing, please wait…
This example uses the properties of similar triangles to help students determine if two given triangles are similar. It involves constructing shapes using GeoGebra commands such as RandomUniform and Polygon. Suitable for 6-8 grade students to learn about similar triangles and their corresponding parts.
GeoGebra Commands & Parameters
RandomUniform(0, 0.99, 200) → allRandoms, {0.3438178205657234, 0.746020028279177, 0.12418450827442479, 0.5194510824823372, 0.6307089976456115, 0.3435450845292223, 0.21140922462104966, 0.31950607565693934, 0.144390082740804, 0.5556418212358933, 0.9817581916738138, 0.38845414637544523, 0.2696703282905974, 0.11330937267554143, 0.5947023701482836, 0.9467318487110481, 0.8162014088846398, 0.15705710239777193, 0.6222293370830434, 0.6737678085489628, 0.915648602966501, 0.07889247316150517, 0.2623403833506792, 0.5586671898616962, 0.9214464814698087, 0.17176091817253458, 0.561827037854188, 0.9899733087005463, 0.4890280734650017, 0.4608867999811926, 0.7053318767571093, 0.9036575357481326, 0.20475838890318154, 0.35235300489714083, 0.18600992465259825, 0.6860965564069228, 0.365582635113442, 0.21608369141592124, 0.2398541278045835, 0.9623400826916634, 0.28861593576404654, 0.5531574027725052, 0.5409347294960757, 0.15945583317383255, 0.20055595494711373, 0.841079677352228, 0.9384247471356065, 0.07015695590641756, 0.270891512240603, 0.6852825106214414, 0.39834473648101026, 0.8532759802494462, 0.48040950435699065, 0.5306944415162658, 0.6434579778995526, 0.03494335902114193, 0.06746925480940026, 0.7737385631888734, 0.9636826198157076, 0.16756119867575764, 0.02891807520393452, 0.7225671745207572, 0.41676040143707, 0.6228331789060644, 0.8303628355822998, 0.5017298261865297, 0.20473255702506485, 0.5302186802533977, 0.691792553856379, 0.7767988139247586, 0.6060205333715807, 0.8532238311358723, 0.9292630475539465, 0.8447385424336826, 0.5955961695793476, 0.6429254540569901, 0.9815095247664432, 0.34700728763863914, 0.5368472846409067, 0.9710428284589221, 0.09194450104610194, 0.744518197210916, 0.8583069944093554, 0.5237302762445277, 0.31152764769119934, 0.5366626889167715, 0.2564115870912179, 0.2120582337835406, 0.78646139942781, 0.8306127157422232, 0.9418882229625982, 0.7358829846782665, 0.056570048250682965, 0.13207008198024436, 0.032246431081104185, 0.5744750006066718, 0.1355617757924178, 0.7045193158199864, 0.22615828586950096, 0.19988350752828063, 0.793152968348434, 0.28086663785377625, 0.4872593270510439, 0.3275596058061987, 0.5512501660464969, 0.3091119014029072, 0.8650892042761275, 0.20324265970925706, 0.27203989401793305, 0.5424005265443741, 0.55951247538645, 0.8355350146025676, 0.20492824023711087, 0.3134422407565783, 0.7120221015105703, 0.6899468351848521, 0.8818010605452083, 0.1738586708300286, 0.622824885187883, 0.032488316226371786, 0.9260431241620045, 0.6505361911465802, 0.11654471500267825, 0.8991189281442069, 0.9601580171236863, 0.9435108394185129, 0.531751556626891, 0.5815329004478003, 0.08967313224318, 0.5533020882605233, 0.6003356930562277, 0.8298677164782158, 0.987292907481096, 0.0899365577782215, 0.4219938863642446, 0.6089678749322758, 0.6209805183151662, 0.7111684664799424, 0.39678012546124813, 0.2568174873545355, 0.50280222987132, 0.9036029413674709, 0.4647966098630453, 0.4916763944241659, 0.23196098743666693, 0.4975684420846379, 0.006661173682431569, 0.18831076528528665, 0.44547443045193963, 0.344659863179527, 0.9713853146802045, 0.023505387816723754, 0.45341970077016847, 0.29588769685205024, 0.47973249302180204, 0.026775649571667344, 0.12257170565457133, 0.47832015464566746, 0.5309998016883974, 0.13386881880285426, 0.04260333223632247, 0.3889934457667841, 0.149475951063911, 0.768250392861111, 0.042794902876029925, 0.6666917017541041, 0.013577497961709085, 0.8093166194893464, 0.9544179753723564, 0.004961687730535336, 0.7458496372208019, 0.07555729565897118, 0.3146116959433998, 0.9634288625123097, 0.715642087635954, 0.9763115285581402, 0.8616626139988997, 0.359119466516881, 0.3983304242745412, 0.9471180985897983, 0.39912775817749896, 0.875070163499545, 0.025451394827170345, 0.41095592172474515, 0.9072076527054083, 0.9300198612974467, 0.7890563348971759, 0.510902836609072, 0.3141802317549148, 0.6704297827739512, 0.11096006109907808, 0.028911065231398844, 0.19854843466474922, 0.23446658888148414, 0.523372760139748, 0.9605048164053139, 0.6638335628686153, 0.7869094744619392, 0.8316508524089884, 0.12625063671461306}Take(allRandoms, randIndex, randIndex + numRandoms - 1) → currentRandomSeedsIf(randomNum1 > 1, currentRandomSeeds(2), 0.25 + (currentRandomSeeds(2) * 0.75)) → rand2OddsIf(randomOrder ≟ 1, (2.5, 0), (18, 0)) → PointAStartPolygon({(25.5, 0), (25.5, 6), (18, 6), (18, 0)}) → problemRegion2Midpoint(Vertex[problemRegion2, 1], Vertex[problemRegion2, 3]) → MidBox2Polygon({(3, 0), (3, 6), (10.5, 6), (10.5, 0)}) → problemRegion1Centroid(problemRegion1) → MidBox1Element(randomScales, 1 + floor((currentRandomSeeds(9) * 5))) → randomScaleElement(sidesN, randomNum3) → startSidesNCircle(PointAStart, randomSide2N) → side2CircleNPoint(Circle[PointAStart, randomSide1N]) → PointBStartNCircle(PointBStartN, randomSide3N) → side3CircleNMax(Zip[y(k), k, PointCChoicesN]) → PointCMaxYNKeepIf(y(k) ≟ PointCMaxYN, k, PointCChoicesN) → PointCTopPointNVertHorCenter(PointAStart, PointBStartN, PointCStartN) → MidABCStartNVector(MidABCStartN, If[randomOrder ≟ 1, MidBox1, MidBox2]) → translateABCVectorNTranslate({PointAStart, PointBStartN, PointCStartN}, translateABCVectorN) → translatedABCNCentroid(Polygon[translatedABCN]) → MidABCTranslatedNRotate(translatedABCN, randomRotationABC°, MidABCTranslatedN) → randomPointsABCNElement(sides, randomNum3) → startSidesPoint(Circle[PointAStart, randomSide1]) → PointBStartCircle(PointAStart, randomSide2) → side2CircleCircle(PointBStart, randomSide3) → side3CircleMax(Zip[y(k), k, PointCChoices]) → PointCMaxYKeepIf(y(k) ≟ PointCMaxY, k, PointCChoices) → PointCTopPointVertHorCenter(PointAStart, PointBStart, PointCStart) → MidABCStartVector(MidABCStart, If[randomOrder ≟ 1, MidBox1, MidBox2]) → translateABCVectorTranslate(PointCStart, translateABCVector) → translatedPointCTranslate(PointBStart, translateABCVector) → translatedPointBTranslate(PointAStart, translateABCVector) → translatedPointACentroid(Polygon[{translatedPointA, translatedPointB, translatedPointC}]) → MidABCTranslatedRotate(translatedPointC, randomRotationABC°, MidABCTranslated) → randomPointCRotate(translatedPointB, randomRotationABC°, MidABCTranslated) → randomPointBRotate(translatedPointA, randomRotationABC°, MidABCTranslated) → randomPointACentroid(Polygon[If[randomNum2 ≟ 1, {randomPointA, randomPointB, randomPointC}, randomPointsABCN]]) → MidABCDilate(If[randomNum2 ≟ 1, randomPointA, randomPointsABCN(1)], randomScale, MidABC) → dilatedPointDDilate(If[randomNum2 ≟ 1, randomPointC, randomPointsABCN(3)], randomScale, MidABC) → dilatedPointFDilate(If[randomNum2 ≟ 1, randomPointB, randomPointsABCN(2)], randomScale, MidABC) → dilatedPointETranslate(dilatedPointD, translationVector) → translatedPointDTranslate(dilatedPointF, translationVector) → translatedPointFTranslate(dilatedPointE, translationVector) → translatedPointERotate(translatedPointF, randomRotation°, MidTranslated) → rotatedTriangleFRotate(translatedPointE, randomRotation°, MidTranslated) → rotatedTriangleERotate(translatedPointD, randomRotation°, MidTranslated) → rotatedTriangleDMin({x(rotatedTriangleD), x(rotatedTriangleE), x(rotatedTriangleF)}) → xMinRotatedMax({y(rotatedTriangleD), y(rotatedTriangleE), y(rotatedTriangleF)}) → yMaxRotatedAngle(randomPointC, randomPointB, randomPointA) → angle2QAngle(randomPointB, randomPointA, randomPointC) → angle1QPolygon(randomPointA, randomPointB, randomPointC) → questionTriangle, sideABT1, sideBCT1, sideCAT1If(yMaxRotated > yMaxT, Vector[If[xMinRotated < 0, Vector[(0 - xMinRotated, yMaxT - yMaxRotated)], Vector[(0, yMaxT - yMaxRotated)]]], xMinRotated < 0, Vector[(0 - xMinRotated, 0)], Vector[(0, 0)]) → translationCorrectionTranslate(rotatedTriangleE, translationCorrection) → answerTriangleETranslate(rotatedTriangleD, translationCorrection) → answerTriangleDTranslate(rotatedTriangleF, translationCorrection) → answerTriangleFAngle(answerTriangleF, answerTriangleE, answerTriangleD) → angle2AAngle(answerTriangleE, answerTriangleD, answerTriangleF) → angle1APolygon(answerTriangleD, answerTriangleE, answerTriangleF) → answerTriangle, answerTriangleDE, answerTriangleEF, answerTriangleFDDenominator((randomMultiplierStart * randomScale)) → randomDenomclosestFraction(sideDE, denominators) → sideDEImproperclosestFraction(sideEFAnswer, denominators) → sideEFAnswerImproperclosestFraction(sideFDAnswer, denominators) → sideFDAnswerImproperclosestFraction(sideBC, denominators) → sideBCImproperclosestFraction(sideCA, denominators) → sideCAImproperclosestFraction(sideAB, denominators) → sideABImproperZip("$\text{" + (n) + " }$", n, textOptions) → textDropDownZip(answerTriangleE + (n, 0), n, {1, 2, 3, 4, 5, 6}) → PointStartsEZip(answerTriangleD + (n, 0), n, {1, 2, 3, 4, 5, 6}) → PointStartsDMax(abs(y(Corner[textSideDE, 1]) - y(Corner[textSideDE, 3])), 1.4) → hDEMax(2, abs(x(Corner[textSideDE, 1]) - x(Corner[textSideDE, 3]))) → wDEPolygon({(19, -6), (19, 2), (28.5, 2), (28.5, -6)}) → solutionRegionMidpoint(Vertex[solutionRegion, 1], Vertex[solutionRegion, 3]) → MidBoxSolutionTranslate(answerTriangleD, Vector[MidDEFFinal, MidBoxSolution]) → NewAnswerDTranslate(answerTriangleE, Vector[MidDEFFinal, MidBoxSolution]) → NewAnswerETranslate(answerTriangleF, Vector[MidDEFFinal, MidBoxSolution]) → NewAnswerFIf(solDiff(1) > 0 ∨ solDiff(2) > 0, Min[solBoxWdthHt / (solBoxWdthHt + solDiff)], 1) → numSolScaleDilate(NewAnswerF, numSolScale, MidBoxSolution) → NewAnswerF'Dilate(NewAnswerE, numSolScale, MidBoxSolution) → NewAnswerE'Dilate(NewAnswerD, numSolScale, MidBoxSolution) → NewAnswerD'Distance(randomPointA, randomPointB) → bigABDistance(randomPointA, randomPointC) → bigCADistance(randomPointC, randomPointB) → bigBCclosestFraction(sideFDAnswer - sideFDAnswerWhole, denominators) → sideFDAnswerFracMax(abs(y(Corner[textSideFDAnswer, 1]) - y(Corner[textSideFDAnswer, 3])), 1.4) → hFDMax(2, abs(x(Corner[textSideFDAnswer, 1]) - x(Corner[textSideFDAnswer, 3]))) → wFDclosestFraction(sideEFAnswer - sideEFAnswerWhole, denominators) → sideEFAnswerFracMax(abs(y(Corner[textSideEFAnswer, 1]) - y(Corner[textSideEFAnswer, 3])), 1.4) → hEFMax(2, abs(x(Corner[textSideEFAnswer, 1]) - x(Corner[textSideEFAnswer, 3]))) → wEFclosestFraction(sideDE - sideDEWhole, denominators) → sideDEFracclosestFraction(sideAB - sideABWhole, denominators) → sideABFracclosestFraction(sideBC - sideBCWhole, denominators) → sideBCFracclosestFraction(sideCA - sideCAWhole, denominators) → sideCAFracPolygon(Zip[PixelsToPoint[Corner[1], Corner[3], Corner[5], A], A, {(pixelsLeft, pixelsTop), (pixelsLeft, y(Corner[5]) - pixelsBottom), Corner[5] - (pixelsRight, pixelsBottom), (x(Corner[5]) - pixelsRight, pixelsTop)}]) → borderBoxCorner(5) → DimsIf(randomScale < 1, "$F$", "$C$") → movePointLabel3asideLabelNew(randomPointA, randomPointB, wAB, hAB, randomPointC) → boxLabelABsideLabelNew(randomPointB, randomPointC, wBC, hBC, randomPointA) → boxLabelBCsideLabelNew(randomPointC, randomPointA, wCA, hCA, randomPointB) → boxLabelCAsideLabelNew(answerTriangleD, answerTriangleE, wDE, hDE, answerTriangleF) → boxLabelAnswerDEsideLabelNew(answerTriangleF, answerTriangleD, wFD, hFD, answerTriangleE) → boxLabelAnswerFDsideLabelNew(answerTriangleF, answerTriangleE, wEF, hEF, answerTriangleD) → boxLabelAnswerEFPolygon(dilatedPointD, dilatedPointE, dilatedPointF) → dilatedTriangle, dilatedDE, dilatedEF, dilatedFDPolygon(translatedPointD, translatedPointE, translatedPointF) → translatedTriangle, translatedDE, translatedEF, translatedFDPolygon(Rotate[translatedPointD, randomRotation°, MidTranslated], Rotate[translatedPointE, randomRotation°, MidTranslated], Rotate[translatedPointF, randomRotation°, MidTranslated]) → rotatedTriangle, rotatedTriangleDE, rotatedTriangleEF, rotatedTriangleFDtriPointLabelPosition(randomPointA, randomPointB, randomPointC, 0.75) → textAlignAtriPointLabelPosition(randomPointB, randomPointA, randomPointC, 0.75) → textAlignBtriPointLabelPosition(randomPointC, randomPointB, randomPointA, 0.75) → textAlignCSegment(PointAStart, PointBStart) → ABStartPolygon(PointAStart, PointBStart, PointCStart) → triangleABCStart, triangleABStart, triangleBCStart, triangleCAStartPolygon(translatedPointA, translatedPointB, translatedPointC) → translatedTriangleABC, translatedTriangleAB, translatedTriangleBC, translatedTriangleCAtriPointLabelPosition(answerTriangleF, answerTriangleD, answerTriangleE, 0.75) → textAlignFAnswerVertex(boxLabelCA, 1) → textAlignCAVertex(boxLabelAB, 1) → textAlignABVertex(boxLabelBC, 1) → textAlignBCPolygon(NewAnswerD, NewAnswerE, NewAnswerF) → translatedSolutionP1, userAnswerDEP1, userAnswerEFP1, userAnswerFDP1sideLabelNew(NewAnswerE', NewAnswerF', wEF, hEF, NewAnswerD') → userBoxLabelEFsideLabelNew(NewAnswerF', NewAnswerD', wFD, hFD, NewAnswerE') → userBoxLabelFDsideLabelNew(NewAnswerD', NewAnswerE', wDE, hDE, NewAnswerF') → userBoxLabelDEtriPointLabelPosition(NewAnswerD', NewAnswerE', NewAnswerF', 0.75) → NewAlignDtriPointLabelPosition(NewAnswerE', NewAnswerD', NewAnswerF', 0.75) → NewAlignEtriPointLabelPosition(NewAnswerF', NewAnswerD', NewAnswerE', 0.75) → NewAlignFIf(randomOrder ≟ 1, (10, -6), (0, -5)) → AnswerTextPositiononboardingTextOffset(Corner[onboardingText, 1], Corner[onboardingText, 3], onboardingCase, Corner[1], Corner[3], Corner[5]) → OnboardingTextOffsetPointToPixels(Corner[1], Corner[3], Corner[5], (9.9975, yAnswerText)) → YourAnswerPointPixCentroid(questionTriangle) → CenterABCZip(UnitVector[Line[CenterABC, n]] + n, n, {randomPointA, randomPointB, randomPointC}) → ABCCenterLabelsSequence(ABCCenterLabels(n) + (((-Element[dimSize, 1])) / 2, Element[dimSize, 2] / 2) - Element[dimSize, 3], n, 1, 3) → PointLabelABCTriangleCenter(randomPointA, randomPointB, randomPointC, 1) → InCentABCZip((1.5 * UnitVector[Line[InCentABC, n]]) + m, n, InCentsABC, m, MidpointsABC) → StartLabelABCTriangleCenter(NewAnswerD', NewAnswerE', NewAnswerF', 1) → InCentDEFAZip((1.5 * UnitVector[Line[InCentDEFA, n]]) + m, n, InCentsDEF', m, MidpointsDEF') → StartLabelDEF'Centroid(answerTriangle) → CenterDEF''Zip(UnitVector[Line[CenterDEF'', n]] + n, n, {answerTriangleD, answerTriangleE, answerTriangleF}) → DEFCenterLabels''TriangleCenter(answerTriangleD, answerTriangleE, answerTriangleF, 1) → InCentDEFA'Sequence(DEFCenterLabels''(n) + (((-Element[dimSize, 1])) / 2, Element[dimSize, 2] / 2) - Element[dimSize, 3], n, 1, 3) → PointLabelDEF''Zip((1.5 * UnitVector[Line[InCentDEFA', n]]) + m, n, InCentsDEF'', m, MidpointsDEF'') → StartLabelDEF''Angle(answerTriangleD, answerTriangleF, answerTriangleE) → angle3AAngle(randomPointA, randomPointC, randomPointB) → angle3QAngle(answerTriangleF, answerTriangleE, answerTriangleD) → angle2ANAngle(answerTriangleE, answerTriangleD, answerTriangleF) → angle1ANZip(Vertex[n, 1], n, {boxLabelAB, boxLabelBC, boxLabelCA, boxLabelAnswerDE, boxLabelAnswerEF, boxLabelAnswerFD}) → PointSideTextLabels
AI Drawing Prompt Reference
The figure consists of a randomly generated triangle, with multiple transformed triangle copies obtained through rotation, scaling, translation, and further transformations. The initial triangle is based on two rectangular regions, and random points determine vertex positions. Subsequent transformations yield a series of transformed triangles. The figure includes random points, the original triangle, and its transformed versions, illustrating the construction and transformation of similar triangles.
The prompt above was compiled from the original drawing commands and is for reference only.