Cutting Equilateral Triangles into Rectangles & Dudeney's Puzzle
Loading the math board and drawing, please wait…
This example demonstrates how to dissect an equilateral triangle into a rectangle and investigates the positions of the dissection points. It involves core mathematical concepts like equilateral triangles, rectangles, coordinate geometry, vectors, rotations, and geometric transformations. The construction utilizes GeoGebra commands and objects such as UnitVector, Segment, Intersect, Point, If, Circle, Rotate, Polygon, Angle, UnitOrthogonalVector, Distance, OrthogonalVector, Translate, and Midpoint. Suitable for high school and above, it helps learners understand geometric dissection and transformation principles, enhancing spatial reasoning skills.
GeoGebra Commands & Parameters
UnitVector(Vector[A, B]) → uSegment(A, B) → cSegment(C, B) → aIntersect(OrthogonalLine[Midpoint[a], c], c) → G'Point(Segment[A, G']) → EIf(x(E) < x(A + c / 2 * u), E + c / 2 * u, B) → MIf(x(E) < x(A) + c / 2, {Segment[E, M - 0.03 * c * u], M, Segment[M + 0.03 * c * u, B]}, {Segment[E, B]}) → list1Segment(A, C) → bIntersect(OrthogonalLine[Midpoint[b], c], c) → GCircle(Midpoint[a], sqrt(Distance[A, a] * a / 2)) → k_1Intersect(k_1, c) → S, TIf(γ < 180°, γ, 180*°) → θUnitVector(Vector[B, C]) → vPoint(a) → DRotate(B, θ, D) → PIf(γ < 180°, 0*°, γ - 180°) → ϕPoint(list1) → FRotate(F, Angle[B, D, P], D) → F'Rotate(E, Angle[B, D, P], D) → E'UnitVector(Vector[A, C]) → wPoint(b) → ISegment(D, E) → dRotate(D, Angle[B, D, P], D) → D'Rotate(B, Angle[B, D, P], D) → B'Polygon(D', E', B') → poly1, b', d', e'Intersect(OrthogonalLine[I, d], d) → JRotate(A, -θ, I) → KRotate(I, Angle[A, I, K], I) → I'Rotate(J, Angle[A, I, K], I) → J'Rotate(E, Angle[A, I, K], I) → E'_1Rotate(A, Angle[A, I, K], I) → A'Polygon(C, D, J, I) → poly5, c_1, d_2, j, iIntersect(OrthogonalLine[F, d], d) → LRotate(L, Angle[B, D, P], D) → L'Polygon(P, D, L', F') → poly3, e, f, g, hSegment(L, F) → kSegment(I, J) → lRotate(E', ϕ, F') → NPolygon(I', J', E'_1, A') → poly4, i', j', e'_1, a'Rotate(E', Angle[E', F', N], F') → E''_1Rotate(L', Angle[E', F', N], F') → L''_1Rotate(F', Angle[E', F', N], F') → F''_1Polygon(E''_1, L''_1, F''_1) → poly6, f''_1, e''_1, l''_1Angle(j, d) → βAngle(F, L, D) → αUnitOrthogonalVector(u) → zDistance(D, A) → DAUnitVector(Vector[F''_1, L''_1]) → u_1Segment(L''_1 + 0.15 * u_1, L''_1 + 0.4 * u_1) → a_1OrthogonalVector(u_1) → v_1Segment(Midpoint[a_1], Translate[Midpoint[a_1], Vector[(f''_1 + j') * v_1]]) → b_1Translate(a_1, Vector[(f''_1 + j') * v_1]) → d_1Midpoint(b_1) → QSegment(L''_1 - 0.15 * v_1, L''_1 - 0.4 * v_1) → e_1Segment(Midpoint[e_1], Translate[Midpoint[e_1], Vector[-(e''_1 + g) * u_1]]) → f_1Translate(e_1, Vector[-(e''_1 + g) * u_1]) → g_1Midpoint(f_1) → RMidpoint(Midpoint[a], B) → HMidpoint(Midpoint[a], C) → OUnitOrthogonalVector(Segment[Midpoint[a], Intersect[LineBisector[a], Line[A, a]]]) → nIntersect(a, OrthogonalLine[A, a]) → USegment(I, C) → mSegment(I, A) → rSegment(D, C) → pSegment(D, B) → sSegment(B, F) → tSegment(E, F) → h_1Segment(E, A) → i_1Segment(E, J) → qSegment(J, L) → j_1Segment(L, D) → l_1Circle(Midpoint[a], sqrt(Distance[A, a] * a / 2)) → p_1Segment(A, Intersect[a, OrthogonalLine[A, a]]) → m_1Segment(Midpoint[a], S) → n_1Angle(A, Intersect[a, OrthogonalLine[A, a]], B) → δSegment(I, E) → q_1Angle(I, E, A) → εSegment(F, D) → r_1Angle(D, F, B) → ζ