Geometric Construction of Lemoine Point and Lemoine Hyperbola in Triangle

Geometric Construction of Lemoine Point and Lemoine Hyperbola in Triangle
Loading the math board and drawing, please wait…
2023-03-20 18:34
In collections geometriadinamica.es
This GeoGebra example demonstrates the construction of the Lemoine point (also known as the symmedian point or Brocard point) within a triangle and its associated geometric properties. The core mathematical concepts include triangle medians, angle bisectors, symmedians, and the relationship between the Lemoine point and the Lemoine hyperbola. Construction details: Using Midpoint command to create medians, AngularBisector for angle bisectors, Mirror to construct symmedians, combined with Polygon, Circle, Hyperbola and other GeoGebra commands. The construction showcases how the Lemoine point serves as the triangle's center of gravity for symmedians and its connection to the Kiepert hyperbola. Suitable for advanced high school and undergraduate geometry courses, serving as an excellent teaching example for understanding special triangle points and conic sections.

GeoGebra Commands & Parameters

  1. Midpoint(A, C) → M3
  2. Angle(C, B, A) → γ
  3. Angle(A, C, B) → β
  4. Angle(B, A, C) → α
  5. Midpoint(C, B) → M1
  6. Line(A, M1) → mediana1
  7. AngularBisector(C, A, B) → bisectrizV1
  8. Mirror(mediana1, bisectrizV1) → simediana1
  9. AngularBisector(A, C, B) → bisectrizV2
  10. Midpoint(A, B) → M2
  11. If(δ ≟ α, M1, If[δ ≟ β, M2, M3]) → M
  12. Line(C, M2) → mediana2
  13. Mirror(mediana2, bisectrizV2) → simediana2
  14. Intersect(simediana1, simediana2) → Lemoine
  15. Line(M, Lemoine) → e
  16. Polygon(A, C, B) → isleta, v3, v1, v2
  17. LineBisector(v1) → mediatriz2
  18. LineBisector(v2) → mediatriz1
  19. Intersect(mediatriz2, mediatriz1) → O
  20. OrthogonalLine(C, bisectrizV2) → i
  21. Intersect(bisectrizV1, i) → I1
  22. Intersect(bisectrizV1, bisectrizV2) → I
  23. OrthogonalLine(A, bisectrizV1) → j
  24. Intersect(i, j) → I3
  25. Conic(Lemoine, I, I3, I1, O) → h1
  26. FirstAxisLength(h1) → semieje
  27. Focus(h1) → Foco2, Foco1
  28. Hyperbola(Foco1, Foco2, semieje) → h
  29. Asymptote(h) → asintota2, asintota1
  30. Segment(O, B) → R
  31. OrthogonalLine(I, v1) → ortoI
  32. Intersect(v1, ortoI) → Ibase
  33. Segment(I, Ibase) → r
  34. Center(h1) → X110
  35. OrthogonalLine(G, v3) → g3
  36. Intersect(v3, g3) → G3
  37. Vector(G, G3) → u3
  38. Ray(P, R312) → s312
  39. Intersect(v3, s312) → S312
  40. Circle(P, d) → circuloP
  41. Intersect(circuloP, v3, 1) → P31
  42. Intersect(circuloP, v3, 2) → P32
  43. Midpoint(P31, P32) → PM3
  44. Ray(P, PM3) → sM3
  45. Intersect(circuloP, sM3) → PCM3,
  46. CircumcircleSector(P31, PCM3, P32) → sector2cE
  47. Polygon(P, P31, P32) → tri2c, z2c2, z2c3, z2c1
  48. Area(A, C, B) → areai
  49. Intersect(circuloP, v1, 1) → P11
  50. If(P11 ≟ P11, true, false) → p11
  51. Intersect(circuloP, v1, 2) → P12
  52. If(P12 ≟ P12, true, false) → p12
  53. Midpoint(P11, P12) → PM1
  54. Ray(P, PM1) → sM1
  55. Intersect(circuloP, sM1) → PCM1,
  56. CircumcircleSector(P11, PCM1, P12) → sector2aE
  57. Polygon(P, P11, P12) → tri2a, z2a2, z2a3, z2a1
  58. OrthogonalLine(G, v1) → g1
  59. Intersect(v1, g1) → G1
  60. Vector(G, G1) → u1
  61. Ray(P, R112) → s112
  62. Intersect(circuloP, s112) → P112, Cir1
  63. CircumcircleSector(P11, P112, P12) → sector2a
  64. Intersect(v1, s112) → S112
  65. If(S112 ≟ S112, sector2a - tri2a, sector2a + tri2a) → area2a
  66. Intersect(circuloP, v2, 1) → P22
  67. If(P22 ≟ P22, true, false) → p22
  68. Intersect(circuloP, v2, 2) → P21
  69. If(P21 ≟ P21, true, false) → p21
  70. Midpoint(P21, P22) → PM2
  71. Ray(P, PM2) → sM2
  72. Intersect(circuloP, sM2) → PCM2, Cir2
  73. CircumcircleSector(P21, PCM2, P22) → sector2bE
  74. Polygon(P, P21, P22) → tri2b, z2b2, z2b3, z2b1
  75. OrthogonalLine(G, v2) → g2
  76. Intersect(v2, g2) → G2
  77. Vector(G, G2) → u2
  78. Ray(P, R212) → s212
  79. Intersect(circuloP, s212) → P212, Cir3
  80. CircumcircleSector(P21, P212, P22) → sector2b
  81. Intersect(v2, s212) → S212
  82. If(S212 ≟ S212, sector2b - tri2b, sector2b + tri2b) → area2b
  83. If(P32 ≟ P32, true, false) → p32
  84. If(P31 ≟ P31, true, false) → p31
  85. If(p11 ∧ p12 ∧ p21 ∧ p22 ∧ p31 ∧ p32, true, false) → pos2E
  86. Intersect(circuloP, s312) → P312, Cir4
  87. CircumcircleSector(P31, P312, P32) → sector2c
  88. If(S312 ≟ S312, sector2c - tri2c, sector2c + tri2c) → area2c
  89. If(pos2E, aread - area2aE - area2bE - area2cE, area2) → area2E
  90. Segment(P, A) → dV1
  91. Segment(P, C) → dV2
  92. Ray(P, M3) → fuera3
  93. Segment(P, B) → dV3
  94. If(dV1 ≤ d ∧ dV2 ≤ d ∧ dV3 ≤ d, true, false) → pos5
  95. If(pos5, areai, 0) → area5
  96. If(area5 < areai, area5, areai) → area5T
  97. Intersect(v2, fuera3) → Corte32
  98. Intersect(v1, fuera3) → Corte31
  99. If(p12 ∧ (¬p11), P12, P11) → P1
  100. If(P1 ≟ P1, true, false) → p1
  101. If(Distance[P21, P1] > Distance[P22, P1], P22, P21) → P21'
  102. Polygon(P, P1, P21') → tri621, ztri621c, ztri621b, ztri621a
  103. If(Distance[P21, P1] > Distance[P22, P1], P21, P22) → P22'
  104. If(p22 ∧ (¬p21), P22, P21) → P2
  105. Midpoint(P2, P1) → V3b
  106. Ray(P, V3b) → sV3
  107. Intersect(circuloP, sV3, 1) → V3c
  108. CircumcircleSector(P2, V3c, P1) → sector1c
  109. Polygon(B, P1, P2) → tri1c, z1c2, z1c3, z1c1
  110. Polygon(P, P1, P2) → tri01c, z01c2, z01c3, z01c1
  111. If(Distance[V3b, B] < dV3 ∧ Distance[A, P] < d, aread - sector1c + tri1c + tri01c, tri1c + sector1c - tri01c) → area1c
  112. Polygon(C, A, P2, P1) → cuadri3, zcuadri3a, zcuadri3b, zcuadri3c, zcuadri3d
  113. If(Distance[P11, P2] > Distance[P12, P2], P12, P11) → P11'
  114. Polygon(P, P2, P11') → tri611, ztri611b, ztri611a, ztri611c
  115. If(Distance[P11, P2] > Distance[P12, P2], P11, P12) → P12'
  116. If(P2 ≟ P2, true, false) → p2
  117. If(Distance[P31, P2] > Distance[P32, P2], P32, P31) → P31'
  118. Polygon(P, P2, P31') → tri632, ztri632a, ztri632c, ztri632b
  119. If(Distance[P31, P2] > Distance[P32, P2], P31, P32) → P32'
  120. Polygon(B, P1, P32', P31', P2) → penta3, zpenta3e, zpenta3d, zpenta3c, zpenta3b, zpenta3a
  121. Polygon(P, P1, P32') → tri631, ztri631b, ztri631c, ztri631a
  122. If(p31 ∧ p32 ∧ p1 ∧ p2 ∧ ((¬p11) ∨ (¬p12)) ∧ ((¬p21) ∨ (¬p22)), true, false) → pos6c
  123. If(p11 ∧ p12 ∧ p21 ∧ p22 ∨ p11 ∧ p12 ∧ p31 ∧ p32 ∨ p21 ∧ p22 ∧ p31 ∧ p32, true, false) → pos2
  124. If(p32 ∧ (¬p31), P32, P31) → P3
  125. Polygon(C, P1, P21', P22', P3) → penta2, zpenta2c, zpenta2b, zpenta2a, zpenta2e, zpenta2d
  126. Polygon(P, P3, P22') → tri622, ztri622c, ztri622a, ztri622b
  127. Midpoint(P1, P3) → V2b
  128. Ray(P, V2b) → sV2
  129. Intersect(circuloP, sV2, 1) → V2c
  130. CircumcircleSector(P1, V2c, P3) → sector1b
  131. Polygon(C, P1, P3) → tri1b, z1b2, z1b3, z1b1
  132. Polygon(P, P1, P3) → tri01b, z01b2, z01b3, z01b1
  133. If(Distance[V2b, C] < dV2 ∧ Distance[A, P] < d, aread - sector1b + tri1b + tri01b, tri1b + sector1b - tri01b) → area1b
  134. Polygon(A, B, P1, P3) → cuadri2, zcuadri2a, zcuadri2b, zcuadri2c, zcuadri2d
  135. Polygon(A, P2, P11', P12', P3) → penta1, zpenta1a, zpenta1b, zpenta1c, zpenta1d, zpenta1e
  136. Polygon(P, P3, P12') → tri612, ztri612c, ztri612b, ztri612a
  137. Midpoint(P2, P3) → V1b
  138. Ray(P, V1b) → sV1
  139. Intersect(circuloP, sV1, 1) → V1c
  140. CircumcircleSector(P2, V1c, P3) → sector1a
  141. Polygon(P, P2, P3) → tri01a, z01a2, z01a3, z01a1
  142. Polygon(A, P2, P3) → tri1a, z1a2, tri1a3, z1a1
  143. If(Distance[V1b, A] < dV1 ∧ Distance[B, P] < d, aread - sector1a + tri1a + tri01a, tri1a + sector1a - tri01a) → area1a
  144. If(area1a ≟ area1a, area1a, If[area1b ≟ area1b, area1b, area1c]) → area1
  145. If(area1 < areai, area1, areai) → area1T
  146. Polygon(C, B, P2, P3) → cuadri1, zcuadri1a, zcuadri1b, zcuadri1c, zcuadri1d
  147. If(area4 < areai, area4, areai) → area4T
  148. If(P3 ≟ P3, true, false) → p3
  149. If(p21 ∧ p22 ∧ p1 ∧ p3 ∧ ((¬p11) ∨ (¬p12)) ∧ ((¬p31) ∨ (¬p32)), true, false) → pos6b
  150. If((¬p3) ∧ p1 ∧ ((¬p11) ∨ (¬p12)) ∧ p2 ∧ ((¬p21) ∨ (¬p22)), true, false) → pos1c
  151. If((¬p2) ∧ p1 ∧ ((¬p11) ∨ (¬p12)) ∧ p3 ∧ ((¬p31) ∨ (¬p32)), true, false) → pos1b
  152. If((¬p1) ∧ p2 ∧ ((¬p21) ∨ (¬p22)) ∧ p3 ∧ ((¬p31) ∨ (¬p32)), true, false) → pos1a
  153. If(pos1a ∨ pos1b ∨ pos1c, true, false) → pos1
  154. If(pos1 ∧ dV2 ≤ d ∧ dV3 ≤ d, true, false) → pos4c
  155. If(pos1 ∧ dV1 ≤ d ∧ dV3 ≤ d, true, false) → pos4b
  156. If(pos1 ∧ dV1 ≤ d ∧ dV2 ≤ d, true, false) → pos4a
  157. If(pos4a ∨ pos4b ∨ pos4c, true, false) → pos4
  158. If(p1 ∧ (¬p2) ∧ (¬p3) ∨ (¬p1) ∧ p2 ∧ (¬p3) ∨ (¬p1) ∧ (¬p2) ∧ p3, true, false) → pos3
  159. If(p11 ∧ p12 ∧ p2 ∧ p3 ∧ ((¬p21) ∨ (¬p22)) ∧ ((¬p31) ∨ (¬p32)), true, false) → pos6a
  160. If(pos6a ∨ pos6b ∨ pos6c, true, false) → pos6
  161. CircumcircleSector(P2, P312, P1) → sector6c
  162. If(pos6c, penta3 + sector6c - sector2c - tri631 - tri632, 0) → area6c
  163. CircumcircleSector(P1, P212, P3) → sector6b
  164. If(pos6b, penta2 + sector6b - sector2b - tri621 - tri622, 0) → area6b
  165. CircumcircleSector(P2, P112, P3) → sector6a
  166. If(pos6a, penta1 + sector6a - sector2a - tri611 - tri612, 0) → area6a
  167. If(area2E < areai, area2E, areai) → area2T
  168. If(area6 < areai, area6, areai) → area6T
  169. Ray(P, M2) → fuera2
  170. Intersect(v1, fuera2) → Corte21
  171. Intersect(v3, fuera2) → Corte23
  172. Ray(P, M1) → fuera1
  173. Intersect(v3, fuera1) → Corte13
  174. Intersect(v2, fuera1) → Corte12
  175. Line(B, Lemoine) → simediana3
  176. If(sector2c > aread / 2, sector2c + tri2c, sector2c) → sector2C
  177. If(areaT > 0 ∨ Corte12 ≟ Corte12 ∨ Corte13 ≟ Corte13 ∨ Corte21 ≟ Corte21 ∨ Corte23 ≟ Corte23 ∨ Corte31 ≟ Corte31 ∨ Corte32 ≟ Corte32, areaT, aread) → area
  178. Angle(isleta) → ε, ζ, η
  179. Line(B, M3) → mediana3
  180. Intersect(bisectrizV2, j) → I2
  181. Circle(O, R) → circunscrita
  182. Line(G, O) → euler
  183. Mirror(euler, v2) → eulerAB
  184. Mirror(euler, v1) → eulerBC
  185. Intersect(h1, e, 2) → H
  186. Intersect(h1, euler, 1) → J
  187. Segment(J, I) → a
  188. Intersect(euler, eulerBC) → EE
  189. Segment(O, B) → b
  190. Circle(I, Ibase) → f
  191. Line(I, B) → c
  192. OrthogonalLine(B, c) → g
  193. Point(asintota2) → D
  194. Point(asintota1) → E
  195. Angle(D, X110, E) → θ
  196. Mirror(euler, v3) → eulerAC

AI Drawing Prompt Reference

Inside a given triangle, construct the key triangle lines first: draw the relevant angle bisectors and the medians from each vertex to the midpoint of the opposite side. Using the mirror relation with those bisectors, form the two associated symmedians, and mark their intersection as the Lemoine point. Then determine several auxiliary intersection points coming from the bisectors together with orthogonal lines, and use them to define an appropriate conic whose center and focus pair can be identified through the construction. Draw the resulting hyperbola determined by the two foci and the computed semiaxis, including its two asymptotes. Finally, add the associated segments and a circumcircle-derived sector to visually connect the Lemoine point with the hyperbola’s geometry.
The prompt above was compiled from the original drawing commands and is for reference only.