Proof Without Words: Hunger's Law of Cosine Dissection

Proof Without Words: Hunger's Law of Cosine Dissection
Loading the math board and drawing, please wait…
2018-02-18 20:13
This example demonstrates Hunger's Law of Cosine through geometric dissection. It involves trigonometry and vector concepts. Using GeoGebra commands such as Circle, Intersect, Point, Ray, PointIn, Polygon, etc., an intuitive proof process is constructed. Suitable for high school mathematics education, particularly in coordinate geometry and trigonometry.

GeoGebra Commands & Parameters

  1. Circle(Q, R) → c_1
  2. Intersect(xAxis, yAxis) → A
  3. Point(xAxis) → C
  4. Point(xAxis) → E
  5. Point(xAxis) → F
  6. Ray(E, F) → f
  7. PointIn(c_1) → D
  8. Point(f) → G
  9. Polygon(D, A, G) → t1, g, d, a
  10. Polygon(D, G, 4) → poly1, h, i, j, k, H, I
  11. Polygon(G, A, 4) → poly2, l, m, n, p, J, K
  12. Polygon(A, D, 4) → poly3, q, r, s, t, L, M
  13. Midpoint(I, G) → N
  14. Line(I, D) → e
  15. Intersect(e, poly3) → O, P
  16. Line(K, a) → f_1
  17. Intersect(f_1, m) → U
  18. If(0 < b < 1, Segment[D, Dilate[D, 1 - b, P]], Segment[D, P]) → g_1
  19. If(2 < b < 3, Segment[K, Dilate[K, 3 - b, U]], Segment[K, U]) → h_1
  20. If(2 < b < 3, Segment[G, Dilate[G, 3 - b, D]], Segment[G, D]) → i_1
  21. Segment(K, U) → j_1
  22. Polygon(P, L, D) → t2, d_1, p_1, l_1
  23. Polygon(P, M, A, D) → q1, p_2, m_1, a_1, d_2
  24. Polygon(U, J, K) → t3, k_1, u, j_2
  25. Polygon(U, A, G, K) → q2, u_1, a_2, g_2, k_2
  26. If(4 < b < 5, Polygon[Translate[P, Vector[D, Dilate[D, 5 - b, H]]], Translate[L, Vector[D, Dilate[D, 5 - b, H]]], Translate[D, Vector[D, Dilate[D, 5 - b, H]]]], Polygon[Translate[P, Vector[D, H]], Translate[L, Vector[D, H]], Translate[D, Vector[D, H]]]) → t4
  27. If(5 < b < 6, Polygon[Translate[P, Vector[D, Dilate[D, 6 - b, I]]], Translate[M, Vector[D, Dilate[D, 6 - b, I]]], Translate[A, Vector[D, Dilate[D, 6 - b, I]]], Translate[D, Vector[D, Dilate[D, 6 - b, I]]]], Polygon[Translate[P, Vector[D, I]], Translate[M, Vector[D, I]], Translate[A, Vector[D, I]], Translate[D, Vector[D, I]]]) → q3
  28. If(6 < b < 7, Polygon[Translate[U, Vector[K, Dilate[K, 7 - b, H]]], Translate[J, Vector[K, Dilate[K, 7 - b, H]]], Translate[K, Vector[K, Dilate[K, 7 - b, H]]]], Polygon[Translate[U, Vector[K, H]], Translate[J, Vector[K, H]], Translate[K, Vector[K, H]]]) → t5
  29. If(7 < b < 8, Polygon[Translate[U, Vector[K, Dilate[K, 8 - b, G]]], Translate[A, Vector[K, Dilate[K, 8 - b, G]]], Translate[G, Vector[K, Dilate[K, 8 - b, G]]], Translate[K, Vector[K, Dilate[K, 8 - b, G]]]], Polygon[Translate[U, Vector[K, G]], Translate[A, Vector[K, G]], Translate[G, Vector[K, G]], Translate[K, Vector[K, G]]]) → q4
  30. Translate(M, Vector[D, I]) → M'
  31. Translate(P, Vector[D, I]) → P'
  32. Translate(A, Vector[D, I]) → A'
  33. Translate(G, Vector[K, G]) → G'
  34. Translate(G, Vector[D, P']) → G'_1
  35. If(9 < b < 10, Polygon[M', A', Dilate[A', 10 - b, H], Dilate[M', 10 - b, G']], Polygon[M', A', H, G']) → q5
  36. Translate(U, Vector[K, H]) → U'
  37. Circle(M', Segment[U', A']) → c
  38. Segment(M', G') → n_1
  39. Intersect(c, n_1) → S,
  40. Polygon(M', S, A') → t6, a', m', s_1
  41. If(11 < b < 12, Rotate[Polygon[Translate[M', Vector[M', Dilate[M', 12 - b, A']]], Translate[S, Vector[M', Dilate[M', 12 - b, A']]], Translate[A', Vector[M', Dilate[M', 12 - b, A']]]], ((b - 11) * π / 2), A'], Rotate[Polygon[Translate[M', Vector[M', A']], Translate[S, Vector[M', A']], Translate[A', Vector[M', A']]], π / 2, A']) → t7
  42. Circle(H, Segment[G'_1, G']) → e_1
  43. Segment(G', H) → q_1
  44. Intersect(e_1, q_1) → T,
  45. Polygon(A', T, H) → t8, h_2, a'_1, t_1
  46. If(12 < b < 13, Rotate[Polygon[Translate[A', Vector[H, Dilate[H, 13 - b, G']]], Translate[T, Vector[H, Dilate[H, 13 - b, G']]], Translate[H, Vector[H, Dilate[H, 13 - b, G']]]], ((b - 12) * π / 2), G'], Rotate[Polygon[Translate[A', Vector[H, G']], Translate[T, Vector[H, G']], Translate[H, Vector[H, G']]], π / 2, G']) → t9
  47. If(10 < b < 11, Segment[A', Dilate[A', 11 - b, S]], Segment[A', S]) → r_1
  48. If(10 < b < 11, Segment[A', Dilate[A', 11 - b, T]], Segment[A', T]) → b_1
  49. Polygon(S, A', T, G') → q6, s_2, a'_2, t_2, g'
  50. If(13 < b < 14, Rotate[Polygon[Translate[S, Vector[T, Dilate[T, 14 - b, P']]], Translate[A', Vector[T, Dilate[T, 14 - b, P']]], Translate[T, Vector[T, Dilate[T, 14 - b, P']]], Translate[G', Vector[T, Dilate[T, 14 - b, P']]]], ((b - 13) * π / 2), P'], Rotate[Polygon[Translate[S, Vector[T, P']], Translate[A', Vector[T, P']], Translate[T, Vector[T, P']], Translate[G', Vector[T, P']]], π / 2, P']) → q7

AI Drawing Prompt Reference

Draw a circle c1 with center at Q and radius R. Then, draw three points C, E, and F on the x-axis, and a ray f from E to F. Pick a point D on c1, and draw triangle t1 with D, A, and G. Next, draw two similar triangles poly1 and poly2, and a triangle poly3 sharing a side with t1. Use midpoint N and line e to construct lines and triangles t2, t3, t4, t5, and so on. With translations and rotations, draw more triangles q1, q2, q3, q4, q5, q6, q7, q8, q9, and line segments r1, b1, forming a series of triangles and segments to demonstrate Hunger's Law of Cosine.
The prompt above was compiled from the original drawing commands and is for reference only.