Geometric Derivation of the Second Binomial Formula

Geometric Derivation of the Second Binomial Formula
Loading the math board and drawing, please wait…
2025-09-23 23:35
In collections Binomische Formeln
This GeoGebra example demonstrates the geometric derivation of the second binomial formula (a-b)² = a² - 2ab + b² using area models. Key mathematical concepts include perfect square formulas, area-based proofs, and polynomial operations. Construction highlights: Using Polygon to draw squares representing a² and b², constructing two rectangles of area ab with Rectangle/Polygon tools, displaying derivation steps via Textfield, and providing InputBox for students to practice (5-h)² and (2c-3d)² calculations. Includes a sorting exercise to help students understand the geometric reasoning process. Designed for grade 7-8 students to comprehend the geometric meaning of binomial formulas and develop algebraic-visual thinking.

GeoGebra Commands & Parameters

  1. Sequence(Random[1, 10], i, 1, 10) → randomNumbers, {6, 2, 4, 4, 7, 6, 4, 1, 7, 3}
  2. Element(randomNumbers, Mod[questionCount, Length[randomNumbers]] + 1) → randomNumber
  3. Textfield(input) → inputBox
  4. PolyLine(PosSB, Corner[txt011, 2] + (-0.5, 0.1), Corner[txt011, 1] + (-0.1, 0.1), Corner[txt011, 4] + (-0.1, 0.1), Corner[txt011, 3] + (0, 0.1), Corner[txt011, 2] + (0, 0.5), PosSB) → sb01
  5. Textfield(input023) → InputBox023
  6. PolyLine(PosSB, Corner[txt021, 2] + (-0.5, 0.1), Corner[txt021, 1] + (-0.1, 0.1), Corner[txt021, 4] + (-0.1, 0.1), Corner[txt021, 3] + (0, 0.1), Corner[txt021, 2] + (0, 0.5), PosSB) → sb02
  7. Polygon((0.16, 7.389999999999999), (12.139999999999993, 7.389999999999999), (12.139999999999993, 3.389999999999999), (0.16, 3.389999999999999)) → polyLight2, r, s, t, a
  8. PointIn(polyLight2) → Light
  9. Circle(Light, radius) → CTaschenlampe1
  10. Circle(Light, radius) → CTaschenlampe2
  11. Circle(MPTaschenlampe, 2.5) → CTaschenlampe3
  12. Line(MPTaschenlampe, Light) → GTaschenlampe
  13. Intersect(CTaschenlampe3, GTaschenlampe, 2) → PosTL1
  14. Intersect(CTaschenlampe3, GTaschenlampe, 1) → PosTL2
  15. Rotate(PosTL2 + (0.2 * UnitOrthogonalVector[GTaschenlampe]), -67°, MPTaschenlampe) → PosImgTaschenlampe2
  16. Tangent(PosTL2, CTaschenlampe1) → tangent1, tangent2
  17. PolyLine(PosSB, Corner[txt051, 2] + (0, 0.5), Corner[txt051, 2] + (0, 0), Corner[txt051, 1] + (-0.1, 0), Corner[txt051, 4] + (-0.1, 0.1), Corner[txt051, 3] + (0, 0.1), Corner[txt051, 2] + (0, 1), PosSB) → sb05
  18. Midpoint(PosA, PosC) → MPQuadrat
  19. Segment(MPQuadrat + (0.45, 0.45), PosC) → Diagonale1
  20. Point(Diagonale1) → PosP
  21. Segment(PosA + (0, If[step ≟ 11 ∨ step ≟ 12 ∧ PosP ≟ PosC, (-disCap1), (-disCap2)]), PosB + (0, If[step ≟ 11 ∨ step ≟ 12 ∧ PosP ≟ PosC, (-disCap1), (-disCap2)])) → segCap111
  22. Segment(PosB + (If[step ≟ 11 ∨ step ≟ 12 ∧ PosP ≟ PosC, disCap1, disCap2 + 0.7], 0), PosC + (If[step ≟ 11 ∨ step ≟ 12 ∧ PosP ≟ PosC, disCap1, disCap2 + 0.7], 0)) → segCap112
  23. Text("\textsf{a}", Midpoint[segCap112], false, true, 1, 0) → Cap112
  24. Segment(PosA + (0, (-disCap1)), PosP1 + (0, (-disCap1))) → segCap121
  25. Segment(PosB + (0, (-disCap1)), PosP1 + (0, (-disCap1))) → segCap122
  26. Segment(PosB + (disCap1, 0), PosP2 + (disCap1, 0)) → segCap123
  27. Segment(PosC + (disCap1, 0), PosP2 + (disCap1, 0)) → segCap124
  28. Text("\textsf{a \(-\) b}", Midpoint[segCap123], false, true, 1, 0) → Cap123
  29. Text("\textsf{b}", Midpoint[segCap124], false, true, 1, 0) → Cap124
  30. Text("\textsf{a}", Midpoint[segCap111] + (0, 0.05), false, true, 0, -1) → Cap111
  31. Text("\textsf{a \(-\) b}", Midpoint[segCap121] + (0, 0.05), false, true, 0, -1) → Cap121
  32. Text("\textsf{b}", Midpoint[segCap122] + (0, 0.05), false, true, 0, -1) → Cap122
  33. Segment(PosP1, PosP1 + (sidelength + 4, 0)) → segR1
  34. Point(segR1) → PosR1
  35. Polygon(PosR1, PosR1 + (2.049999999999999, 0), PosR1 + (2.049999999999999, 0) + (0, sidelength), PosR1 + (0, sidelength)) → polyR1, f, g, h, b
  36. Segment(PosP4, PosP4 + (sidelength + 4, 0)) → segR2
  37. Point(segR2) → PosR2
  38. Polygon(PosR2, PosR2 + (sidelength, 0), PosR2 + PosC - PosP2 + (sidelength, 0), PosR2 + PosC - PosP2) → polyR2, posr2, i, j, k
  39. Polygon(PosDD1, PosDD1 + (-0.85, -0.35), PosDD1 + (0.85, -0.35), PosDD1 + (0.85, 0.35), PosDD1 + (-0.85, 0.35), PosDD1 + (-0.85, -0.35)) → polyDD1, posdd1, l, m, n, p, q
  40. Text("\textsf{(a \(-\) b)²}", PosDD1 + (0, 0.1), false, true, 0, 0) → txtDD1
  41. PolyLine(PosSB, Corner[txt191, 2] + (0, 1), Corner[txt191, 2] + (0, 0), Corner[txt191, 1] + (-0.1, 0), Corner[txt191, 4] + (-0.1, 0.1), Corner[txt191, 3] + (0, 0.1), Corner[txt191, 2] + (0, 1.75), PosSB) → sb19
  42. PolyLine(PosSB, Corner[txt201, 2] + (0, 0.75), Corner[txt201, 2] + (0, 0), Corner[txt201, 1] + (-0.1, 0), Corner[txt201, 4] + (-0.1, 0.1), Corner[txt201, 3] + (0, 0.1), Corner[txt201, 2] + (0, 1.5), PosSB) → sb20
  43. Text("\textsf{\colorbox{white}{a \cdot b}}", PosR1 + (0.5 * (PosB - PosP1)) + (0.5 * (PosP2 - PosB)), false, true, 0, 0) → CapR1
  44. Text("\textsf{\colorbox{white}{a \cdot b}}", PosR2 + (0.5 * (PosP1 - PosA)) + (0.5 * (PosC - PosP2)), false, true, 0, 0) → CapR2
  45. PolyLine(PosR2, PosR2 + PosP1 - PosA, PosR1) → PL20
  46. PolyLine(PosR3 + {(0, 0), PosP2 - PosP, PosC - PosP, PosP3 - PosP, (0, 0)}) → PLB4R
  47. PolyLine(PosSB + (0.15, -0.75), Corner[txt211, 2] + (0, 0.75), Corner[txt211, 2] + (0, 0), Corner[txt211, 1] + (-0.1, 0), Corner[txt211, 4] + (-0.1, 0.1), Corner[txt211, 3] + (0, 0.1), Corner[txt211, 2] + (0, 1.5), PosSB + (0.15, -0.75)) → sb21
  48. Textfield(input021) → InputBox021
  49. Textfield(input022) → InputBox022
  50. Sort({"$\textsf{\phantom{a²b²}\vphantom{+\(-\)b²}}$", "$\textsf{a²\phantom{b}\vphantom{+\(-\)b²}}$", "$\textsf{b²\phantom{b}\vphantom{+\(-\)b²}}$", "$\textsf{\(-\)ab\phantom{²}\vphantom{+\(-\)b²}}$", "$\textsf{ba\phantom{²}\vphantom{+\(-\)b²}}$"}, OrderDD061) → dropdown061
  51. SelectedIndex(dropdown061) → index061
  52. Sort({"$\textsf{\phantom{a²b²}\vphantom{+\(-\)b²}}$", "$\textsf{\(-\) ab\phantom{²}\vphantom{+\(-\)b²}}$", "$\textsf{+ b²\phantom{b}\vphantom{+\(-\)b²}}$", "$\textsf{\(-\) a²\phantom{b²}\vphantom{+\(-\)b²}}$", "$\textsf{+ ab\phantom{²}\vphantom{+\(-\)b²}}$"}, OrderDD062) → dropdown062
  53. SelectedIndex(dropdown062) → index062
  54. Sort({"$\textsf{\phantom{a²b²}\vphantom{+\(-\)b²}}$", "$\textsf{\(-\) ba\phantom{²}\vphantom{+\(-\)b²}}$", "$\textsf{+ ab\phantom{²}\vphantom{+\(-\)b²}}$", "$\textsf{+ a²\phantom{b}\vphantom{+\(-\)b²}}$", "$\textsf{\(-\) b²\phantom{b}\vphantom{+\(-\)b²}}$"}, OrderDD063) → dropdown063
  55. SelectedIndex(dropdown063) → index063
  56. Sort({"$\textsf{\phantom{a²b²}\vphantom{+\(-\)b²}}$", "$\textsf{+ b²\phantom{a}\vphantom{+\(-\)b²}}$", "$\textsf{+ ab\phantom{²}\vphantom{+\(-\)b²}}$", "$\textsf{\(-\) b²\phantom{b}\vphantom{+\(-\)b²}}$", "$\textsf{\(-\) ba\phantom{²}\vphantom{+\(-\)b²}}$"}, OrderDD064) → dropdown064
  57. SelectedIndex(dropdown064) → index064
  58. PathParameter(PosP) → parP
  59. Join({{1}, Shuffle[2…5]}) → OrderDD161
  60. Sort({"$\textsf{\phantom{ a \(-\) b }\vphantom{(b\(-\)a)}}$", "$\textsf{\phantom{\(-\) }a\phantom{ b}\vphantom{(b\(-\)a)}}$", "$\textsf{\phantom{ \(-\) }b\phantom{ a}\vphantom{(b\(-\)a)}}$", "$\textsf{(a \(-\) b) \vphantom{(b\(-\)a)}}$", "$\textsf{(b \(-\) a) \vphantom{(b\(-\)a)}}$"}, OrderDD161) → dropdown161
  61. SelectedIndex(dropdown161) → index161
  62. Join({{1}, Shuffle[2…5]}) → OrderDD162
  63. Sort({"$\textsf{\phantom{ a \(-\) b }\vphantom{(b\(-\)a)}}$", "$\textsf{\phantom{\(-\) }a\phantom{ b}\vphantom{(b\(-\)a)}}$", "$\textsf{\phantom{ \(-\) }b\phantom{ a}\vphantom{(b\(-\)a)}}$", "$\textsf{(a \(-\) b) \vphantom{(b\(-\)a)}}$", "$\textsf{(b \(-\) a) \vphantom{(b\(-\)a)}}$"}, OrderDD162) → dropdown162
  64. SelectedIndex(dropdown162) → index162
  65. Join({{1}, Shuffle[2…5]}) → OrderDD191
  66. Sort({"$\textsf{\phantom{ a \(-\) b }\vphantom{(b\(-\)a)}}$", "$\textsf{\phantom{\(-\) }a\phantom{ b}\vphantom{(b\(-\)a)}}$", "$\textsf{\phantom{ \(-\) }b\phantom{ a}\vphantom{(b\(-\)a)}}$", "$\textsf{(a \(-\) b) \vphantom{(b\(-\)a)}}$", "$\textsf{(b \(-\) a) \vphantom{(b\(-\)a)}}$"}, OrderDD191) → dropdown191
  67. SelectedIndex(dropdown191) → index191
  68. Join({{1}, Shuffle[2…5]}) → OrderDD192
  69. Sort({"$\textsf{\phantom{ a \(-\) b }\vphantom{(b\(-\)a)}}$", "$\textsf{\phantom{\(-\) }a\phantom{ b}\vphantom{(b\(-\)a)}}$", "$\textsf{\phantom{ \(-\) }b\phantom{ a}\vphantom{(b\(-\)a)}}$", "$\textsf{(a \(-\) b) \vphantom{(b\(-\)a)}}$", "$\textsf{(b \(-\) a) \vphantom{(b\(-\)a)}}$"}, OrderDD192) → dropdown192
  70. SelectedIndex(dropdown192) → index192
  71. PointIn(polyLight2) → Light08
  72. Circle(Light08, radius) → CTaschenlampe081
  73. If(correct061 ∧ correct062 ∧ correct063, 4, correct061 ∧ correct062, 3, correct061, 2, 1) → step6
  74. CircleArc(Midpoint[PosCalc11, PosCalc14] + (0, dis6), PosCalc14, PosCalc11) → arc062
  75. CircleArc(Midpoint[PosCalc11, PosCalc13] + (0, dis6), PosCalc13, PosCalc11) → arc061
  76. If(IsInRegion[Corner[txtDD1, 1], Bereich1(1)] ∧ IsInRegion[Corner[txtDD1, 3], Bereich1(1)], 1, IsInRegion[Corner[txtDD1, 1], Bereich2(1)] ∧ IsInRegion[Corner[txtDD1, 3], Bereich2(1)], 2, IsInRegion[Corner[txtDD1, 1], Bereich3(1)] ∧ IsInRegion[Corner[txtDD1, 3], Bereich3(1)], 3, IsInRegion[Corner[txtDD1, 1], Bereich4(1)] ∧ IsInRegion[Corner[txtDD1, 3], Bereich4(1)], 4, NaN) → DragDrop14
  77. Circle(PointListMinus(2), radius) → sol031
  78. PolyLine(PosSB, Corner[txt041, 2] + (-0.5, 0.1), Corner[txt041, 1] + (-0.1, 0.1), Corner[txt041, 4] + (-0.1, 0.1), Corner[txt041, 3] + (0, 0.1), Corner[txt041, 2] + (0, 0.5), PosSB) → sb04
  79. PolyLine(PosSB, Corner[txt061, 2] + (-0.5, 0.1), Corner[txt061, 1] + (-0.1, 0.1), Corner[txt061, 4] + (-0.1, 0.1), Corner[txt061, 3] + (0, 0.1), Corner[txt061, 2] + (0, 0.5), PosSB) → sb06
  80. Mirror(CircleArc[Midpoint[PosCalc12, PosCalc13] + (0, dis6), PosCalc13, PosCalc12], SpiegelGerade) → arc063
  81. Mirror(CircleArc[Midpoint[PosCalc12, PosCalc14] + (0, dis6), PosCalc14, PosCalc12], SpiegelGerade) → arc064
  82. Text("\textsf{(a \(-\) b)²}", Midpoint[PosA, PosP] + (0, 0.1), false, true, 0, 0) → txt152
  83. Text("\textsf{\bold{Zieh mich!}}", PosP + (0.4, 0.3), false, true, 1, 0) → CapP12
  84. Segment(PosP + (-0.25, -0.25), PosP + (-0.75, -0.75)) → arrow12
  85. Textfield(input024) → InputBox024
  86. Textfield(input091) → InputBox091
  87. Text("\textsf{\bold{Zieh mich!}}", (11.5, 3.5) + (0, 1.25), false, true, 0, 0) → CapDD14
  88. Segment(Midpoint[Corner[CapDD14, 1], Corner[CapDD14, 2]], Midpoint[Corner[CapDD14, 1], Corner[CapDD14, 2]] + (0, -0.34)) → arrowDD14
  89. PolyLine(PosSB, Corner[txt071, 2] + (0, 0.25), Corner[txt071, 2] + (0, 0), Corner[txt071, 1] + (-0.1, 0), Corner[txt071, 4] + (-0.1, 0.1), Corner[txt071, 3] + (0, 0.1), Corner[txt071, 2] + (0, 0.75), PosSB) → sb07
  90. PolyLine(PosSB, Corner[txt031, 2] + (0, 0.25), Corner[txt031, 2] + (0, 0), Corner[txt031, 1] + (-0.1, 0), Corner[txt031, 4] + (-0.1, 0.1), Corner[txt031, 3] + (0, 0.1), Corner[txt031, 2] + (0, 0.75), PosSB) → sb03
  91. Circle(Light08, radius) → CTaschenlampe082
  92. Line(MPTaschenlampe, Light08) → GTaschenlampe08
  93. Intersect(CTaschenlampe3, GTaschenlampe08, 2) → PosTL081
  94. Intersect(CTaschenlampe3, GTaschenlampe08, 1) → PosTL082
  95. Rotate(PosTL082 + (0.2 * UnitOrthogonalVector[GTaschenlampe08]), -67°, MPTaschenlampe) → PosImgTaschenlampe082
  96. Tangent(PosTL082, CTaschenlampe081) → tangent081, tangent082
  97. Circle(PointList08(2) + (0.1, 0), radius) → sol081
  98. PolyLine(PosSB, Corner[txt082, 2] + (0, 0.25), Corner[txt082, 2] + (0, 0), Corner[txt082, 1] + (-0.1, 0), Corner[txt082, 4] + (-0.1, 0.1), Corner[txt082, 3] + (0, 0.1), Corner[txt082, 2] + (0, 0.75), PosSB) → sb08
  99. PolyLine(PosSB, Corner[txt092, 2] + (0, 0.25), Corner[txt092, 2] + (0, 0), Corner[txt092, 1] + (-0.1, 0), Corner[txt092, 4] + (-0.1, 0.1), Corner[txt092, 3] + (0, 0.1), Corner[txt092, 2] + (0, 0.75), PosSB) → sb09
  100. PolyLine(PosSB, Corner[txt112, 2] + (0, 0.25), Corner[txt112, 2] + (0, 0), Corner[txt112, 1] + (-0.1, 0), Corner[txt112, 4] + (-0.1, 0.1), Corner[txt112, 3] + (0, 0.1), Corner[txt112, 2] + (0, 0.75), PosSB) → sb11
  101. PolyLine(PosSB, Corner[txt121, 2] + (0, 0.25), Corner[txt121, 2] + (0, 0), Corner[txt121, 1] + (-0.1, 0), Corner[txt121, 4] + (-0.1, 0.1), Corner[txt121, 3] + (0, 0.1), Corner[txt121, 2] + (0, 0.75), PosSB) → sb12
  102. PolyLine(PosSB, Corner[txt131, 2] + (0, 0.25), Corner[txt131, 2] + (0, 0), Corner[txt131, 1] + (-0.1, 0), Corner[txt131, 4] + (-0.1, 0.1), Corner[txt131, 3] + (0, 0.1), Corner[txt131, 2] + (0, 0.75), PosSB) → sb13
  103. PolyLine(PosSB, Corner[txt141, 2] + (0, 0.25), Corner[txt141, 2] + (0, 0), Corner[txt141, 1] + (-0.1, 0), Corner[txt141, 4] + (-0.1, 0.1), Corner[txt141, 3] + (0, 0.1), Corner[txt141, 2] + (0, 0.75), PosSB) → sb14
  104. PolyLine(PosSB, Corner[txt151, 2] + (0, 0.25), Corner[txt151, 2] + (0, 0), Corner[txt151, 1] + (-0.1, 0), Corner[txt151, 4] + (-0.1, 0.1), Corner[txt151, 3] + (0, 0.1), Corner[txt151, 2] + (0, 0.75), PosSB) → sb15
  105. PolyLine(PosSB, Corner[txt161, 2] + (0, 0.75), Corner[txt161, 2] + (0, 0), Corner[txt161, 1] + (-0.1, 0), Corner[txt161, 4] + (-0.1, 0.1), Corner[txt161, 3] + (0, 0.1), Corner[txt161, 2] + (0, 1.25), PosSB) → sb16
  106. Sequence(PosQ4 + (k / 20 * (PosQ1 - PosQ4)), k, 0, 20) → PointsP11
  107. Point(PointsP11) → PosP11
  108. Text("\textsf{\bold{\begin{array}{c}Zieh mich!\\↓\end{array}}}", PosP11 + (-0.25, 0), false, true, 1, -1) → CapZiehMich11
  109. Segment(PosQ4 + (0, disQ1), PosQ34 + (0, disQ1)) → segQ111
  110. Segment(PosQ3 + (0, disQ1), PosQ34 + (0, disQ1)) → segQ112
  111. Segment(PosQ3 + (0, If[step ≟ 12, 0, 0.65] + disQ1), PosQ4 + (0, If[step ≟ 12, 0, 0.65] + disQ1)) → segQ113
  112. Segment(PosQ4 + ((-disQ1), 0), PosQ41 + ((-disQ1), 0)) → segQ114
  113. Segment(PosQ1 + ((-disQ1), 0), PosQ41 + ((-disQ1), 0)) → segQ115
  114. Segment(PosQ1 + (If[step ≟ 12, 0, -1.65] - disQ1, 0), PosQ4 + (If[step ≟ 12, 0, -1.65] - disQ1, 0)) → segQ116
  115. Text("\textsf{(a \(-\) b)}", Midpoint[segQ111] + (0, 0.35), false, true, 0, 0) → CapQ111
  116. Text("\textsf{b}", Midpoint[segQ112] + (0, 0.35), false, true, 0, 0) → CapQ112
  117. Text("\textsf{a}", Midpoint[segQ113] + (0, 0.35), false, true, 0, 0) → CapQ113
  118. Text("\textsf{(a \(-\) b)}", Midpoint[segQ114] + (0.1, 0), false, true, -1, 0) → CapQ114
  119. Text("\textsf{b}", Midpoint[segQ115] + (0, 0), false, true, -1, 0) → CapQ115
  120. Text("\textsf{a}", Midpoint[segQ116] + (0, 0), false, true, -1, 0) → CapQ116
  121. Sequence(PosQ41 + (k / 20 * (PosQ23 - PosQ41)) + (dimQ / 2, ((-(1 - parQ)) * dimQ / 2)), k, 0, 25) → PointsP13
  122. Point(PointsP13) → PosP13
  123. Reverse(Sequence[PosQM + (k / 20 * (PosQ2 - PosQ12)) + (((1 - parQ) * dimQ / 2), ((-(1 - parQ)) * dimQ / 2)), k, 0, 60]) → PointsP14
  124. Point(PointsP14) → PosP14
  125. Sequence(Midpoint[PosQ12, PosQ3] + (k / 20 * (PosQ2 - PosQ12)), k, 0, 60) → PointsP15
  126. Point(PointsP15) → PosP15
  127. If(step ≟ 2, correct021 ∧ correct022 ∧ correct023 ∧ correct024, step ≟ 17, PosR1 ≟ Point[segR1, 1], step ≟ 18, PosR2 ≟ Point[segR2, 1], step ≟ 19, correct191 ∧ correct192, step ≟ 3, correct031 ∧ validate ∨ showsolution, step ≟ 8, correct081 ∧ validate08 ∨ showsolution08, step ≟ 6, step ≟ 20, sliderR3 ≟ 1, step ≟ 11, PosP11 ≟ PosQ1, step ≟ 14, correct141 ∧ IndexOf[PosP14, PointsP14] ≟ Length[PointsP14], step ≟ 15, IndexOf[PosP15, PointsP15] ≟ Length[PointsP15], step ≟ 4, PosP041 ≟ PosDD041 ∧ PosP042 ≟ PosDD042, correct06, true, step ≟ 9, correct091, step ≟ 13, IndexOf[PosP13, PointsP13] ≟ Length[PointsP13], step ≟ 16, correct16) → clickableBtnNext
  128. Text("\textsf{\bold{\begin{array}{c}Zieh mich!\\→\end{array}}}", PosP13 + (dimQ / 2 - 0.25, 0), false, true, 1, 0) → CapZiehMich13
  129. Text("\textsf{a \cdot b}", PosP13 + (0, 0.05), false, true, 0, 0) → Cap131
  130. Segment(PosQ41, PosQ23) → segQ131
  131. Textfield(input141) → InputBox141
  132. Text("\textsf{a \cdot b}", Midpoint[PosQ34, PosQ2], false, true, 0, 0) → CapQ141
  133. Text("\textsf{b²}", PosP14 + (0, 0.1), false, true, 0, 0) → CapQ142
  134. Text("\textsf{\bold{\begin{array}{c}Zieh mich!\\←\end{array}}}", PosP14 + (0, ((1 - parQ) * dimQ / 2) + 0.5), false, true, 0, 0) → CapZiehMich14
  135. PolyLine(PosSB, Corner[txt142, 2] + (0, 0.25), Corner[txt142, 2] + (0, 0), Corner[txt142, 1] + (-0.1, 0), Corner[txt142, 4] + (-0.1, 0.1), Corner[txt142, 3] + (0, 0.1), Corner[txt142, 2] + (0, 0.75), PosSB) → sb142
  136. Text("\textsf{a \cdot b}", PosP15, false, true, 0, 0) → CapQ151
  137. Text("\textsf{\textcolor{#50c1ce}{\bold{Zieh mich!}}", Midpoint[ParkP041, ParkP042] + (0, heightDD04 + 0.5), false, true, 0, 0) → CapZiehMich04
  138. Text("\textsf{1. Binomische Formel\vphantom{g}}", PosP041 + (0, 0.05), false, true, 0, 0) → txtDD041
  139. Text("\textsf{2. Binomische Formel\vphantom{g}}", PosP042 + (0, 0.05), false, true, 0, 0) → txtDD042
  140. Text("\textsf{\bold{\begin{array}{c}Zieh mich!\\→\end{array}}}", PosP15 + (0.65, 0), false, true, 1, 0) → CapZiehMich15
  141. IndexOf(PosP14, PointsP14) → indexP14
  142. PolyLine(PosSB, Corner[txt102, 2] + (0, 0.5), Corner[txt102, 2] + (0, 0), Corner[txt102, 1] + (-0.1, 0), Corner[txt102, 4] + (-0.1, 0.1), Corner[txt102, 3] + (0, 0.1), Corner[txt102, 2] + (0, 0.75), PosSB) → sb10

AI Drawing Prompt Reference

Please draw a geometric derivation of (a-b)^2 = a^2 - 2ab + b^2. The figure should include two squares representing a^2 and b^2, and two rectangles each with area ab. The rectangles should be connected to the squares to form a complete area model. Squares and rectangles should be labeled with text such as "a^2", "b^2", "a*b". The figure should clearly show the expansion and combination process to help understand the formula. The construction order should be: first draw the two squares, then the two rectangles, then connect the parts, and finally add text labels.
The prompt above was compiled from the original drawing commands and is for reference only.