使用比例解决相似多边形问题
几何画板及绘图内容加载中,请稍等……
这个范例演示了如何利用比例关系解决相似多边形的缺失边长问题。核心数学概念是相似多边形的比例推理。作图要点包括使用GeoGebra命令如Shuffle、RandomUniform、Polygon等来生成随机多边形,并通过比例方程求解缺失边长。该范例适合6-8年级学生,用于练习相似多边形的比例应用。
GeoGebra 命令及参数
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 绘图提示语参考
绘制两个相似多边形,左侧为较小的多边形,右侧为按比例放大的对应多边形。左侧多边形可以是三角形或四边形,其边长随机生成,右侧多边形的边长由左侧边长乘以一个缩放因子得到。两个多边形分别放置在画布左右两侧,并带有旋转角度。在多边形的每条边上标注边长数值,其中左侧多边形标注原始长度,右侧多边形标注放大后的长度。图形背景为白色,多边形使用实线边框,标注文字清晰可见。整体布局应体现相似多边形的对应边比例关系,便于观察和计算。
以上提示语为根据原始绘图命令整理而来,仅供参考。