14
$\begingroup$

As the Wiki

The three points of intersection of the adjacent angle trisectors form an equilateral triangle, called the Morley triangle

enter image description here

So I write this code:

RandomInstance[
 GeometricScene[{a, b, c, d, e, f}, {Triangle[{a, b, c}], 
   Triangle[{d, e, f}], 
   GeometricAssertion[{c, e, f, b}, {"EqualAngles", a}], 
   GeometricAssertion[{c, d, f, a}, {"EqualAngles", b}], 
   GeometricAssertion[{a, e, d, b}, {"EqualAngles", c}]}]]

But I get nothing. Or have I made some mistake?

$\endgroup$
17
  • $\begingroup$ I think the task currently is too complex for GeometricScene. The following RandomInstance[ GeometricScene[{a, b, c, d, e, f}, {Triangle[{a, b, c}], GeometricAssertion[{c, e, f, b}, {"EqualAngles", a}]}]] works. $\endgroup$
    – user64494
    Jan 21 at 9:48
  • $\begingroup$ RandomInstance[ GeometricScene[{a -> {0, 0}, b -> {1, 0}, c -> {0, 1}, d, e, f}, {Triangle[{a, b, c}], GeometricAssertion[{c, e, f, b}, {"EqualAngles", a}], GeometricAssertion[{c, d, f, a}, {"EqualAngles", b}]}]] fails. $\endgroup$
    – user64494
    Jan 21 at 10:09
  • $\begingroup$ @user64494 To be honest, I haven't had any success so far with GeometricScene for geometric problems $\endgroup$
    – yode
    Jan 21 at 10:18
  • $\begingroup$ @user64494 Look the current answer :) $\endgroup$
    – yode
    Jan 21 at 13:49
  • 1
    $\begingroup$ It's 1 for 4 in my trials, good enough to play MLB. And once is enough to claim I can reproduce the answer, but it's not very satisfying. $\endgroup$
    – Michael E2
    Jan 21 at 19:45

4 Answers 4

6
$\begingroup$

Thanks at @Koiadk Grizzly and @yode some hint about this question. Here we set the orienteering of the angle and triangle and it seems that faster then before.

  • Edit-3
RandomInstance[GeometricScene[{a, b, c, d, e, f}, {
    PlanarAngle[a -> {b, f}] == 1/3 PlanarAngle[a -> {b, c}],
    PlanarAngle[a -> {e, c}] == 1/3 PlanarAngle[a -> {b, c}],
    PlanarAngle[b -> {f, a}] == 1/3 PlanarAngle[b -> {c, a}],
    PlanarAngle[b -> {c, d}] == 1/3 PlanarAngle[b -> {c, a}],
    PlanarAngle[c -> {d, b}] == 1/3 PlanarAngle[c -> {a, b}],
    PlanarAngle[c -> {a, e}] == 1/3 PlanarAngle[c -> {a, b}],
    GeometricAssertion[{Triangle[{a, b, f}], Triangle[{b, c, d}], 
      Triangle[{c, a, e}], Triangle[{d, e, f}], Triangle[{a, b, c}]}, 
     "Counterclockwise"]}], RandomSeeding -> Automatic] // Timing

enter image description here

  • Edit-2
RandomInstance[
  GeometricScene[{a, b, c, d, e, f}, {Triangle[{a, b, c}], 
    Triangle[{d, e, f}], 
    PlanarAngle[a -> {b, f}, "Counterclockwise"] == 
     PlanarAngle[a -> {f, e}, "Counterclockwise"] == 
     PlanarAngle[a -> {e, c}, "Counterclockwise"], 
    PlanarAngle[b -> {c, d}, "Counterclockwise"] == 
     PlanarAngle[b -> {d, f}, "Counterclockwise"] == 
     PlanarAngle[b -> {f, a}, "Counterclockwise"], 
    PlanarAngle[c -> {a, e}, "Counterclockwise"] == 
     PlanarAngle[c -> {e, d}, "Counterclockwise"] == 
     PlanarAngle[c -> {d, b}, "Counterclockwise"], 
    GeometricAssertion[{Triangle[{a, b, f}], Triangle[{b, c, d}], 
      Triangle[{c, a, e}], Triangle[{d, e, f}], Triangle[{a, b, c}]}, 
     "Counterclockwise"]}]] // Timing

enter image description here

  • Edit-1
Clear[a, b, c, d, e, f]; 
RandomInstance[
 GeometricScene[{a, b, c, d, e, f}, {Triangle[{a, b, c}], 
   Triangle[{d, e, f}], 
   PlanarAngle[a -> {b, f}, "Counterclockwise"] == 
    PlanarAngle[a -> {f, e}, "Counterclockwise"] == 
    PlanarAngle[a -> {e, c}, "Counterclockwise"], 
   PlanarAngle[b -> {c, d}, "Counterclockwise"] == 
    PlanarAngle[b -> {d, f}, "Counterclockwise"] == 
    PlanarAngle[b -> {f, a}, "Counterclockwise"], 
   PlanarAngle[c -> {a, e}, "Counterclockwise"] == 
    PlanarAngle[c -> {e, d}, "Counterclockwise"] == 
    PlanarAngle[c -> {d, b}, "Counterclockwise"], 
   RegionMember[Triangle[{a, b, c}], d], 
   RegionMember[Triangle[{a, b, c}], e], 
   RegionMember[Triangle[{a, b, c}], f]}]]

enter image description here

$\endgroup$
1
  • $\begingroup$ RandomInstance[ GeometricScene[{a -> {0, 0}, b -> {1, 0}, c -> {1, 1}, , d, e, f}, {Triangle[{a, b, c}], Triangle[{d, e, f}], PlanarAngle[a -> {b, f}, "Counterclockwise"] == PlanarAngle[a -> {f, e}, "Counterclockwise"] == PlanarAngle[a -> {e, c}, "Counterclockwise"], PlanarAngle[b -> {c, d}, "Counterclockwise"] == PlanarAngle[b -> {d, f}, ...] also fails. (The whole code is too long to be quoted here.) $\endgroup$
    – user64494
    Jan 22 at 10:27
10
$\begingroup$

Use PlanarAngle instead of "EqualAngles".

RandomInstance[
 GeometricScene[{a, b, c, d, e, f}, {Triangle[{a, b, c}], 
   PlanarAngle[{b, a, d}] == PlanarAngle[{e, a, d}] == 
    PlanarAngle[{e, a, c}], 
   PlanarAngle[{d, b, a}] == PlanarAngle[{d, b, f}] == 
    PlanarAngle[{f, b, c}], 
   PlanarAngle[{a, c, e}] == PlanarAngle[{b, c, f}] == 
    PlanarAngle[{f, c, e}], 
   GeometricAssertion[{d, e, f}, {"SameSide", 
     Line[{a, b}]}, {"SameSide", Line[{b, c}]}, {"SameSide", 
     Line[{c, a}]}], Triangle[{d, e, f}]}]]

Then you can find the small triangle is a regular triangle.

FindGeometricConjectures[%]

Which is the Morley triangle.

$\endgroup$
7
  • $\begingroup$ It should be noticed that RandomInstance[ GeometricScene[{a -> {0, 0}, b -> {1, 0}, c -> {1, 1}, d, e, f}, {Triangle[{a, b, c}], PlanarAngle[{b, a, d}] == PlanarAngle[{e, a, d}] == PlanarAngle[{e, a, c}], PlanarAngle[{d, b, a}] == PlanarAngle[{d, b, f}] == PlanarAngle[{f, b, c}], PlanarAngle[{a, c, e}] == PlanarAngle[{b, c, f}] == PlanarAngle[{f, c, e}], GeometricAssertion[{d, e, f}, {"SameSide", Line[{a, b}]}, {"SameSide", Line[{b, c}]}, {"SameSide", Line[{c, a}]}], Triangle[{d, e, f}]}]] fails. $\endgroup$
    – user64494
    Jan 22 at 6:02
  • $\begingroup$ @user64494 Remove , Triangle[{d, e, f}] and it will be fine, but I don't know why this triangle thing would crush it. $\endgroup$ Jan 22 at 7:20
  • $\begingroup$ @KodiadkGrizzly: Then FindGeometricConjectures[%] produces a conjecture which does not deal with Triangle[{d, e, f}]. $\endgroup$
    – user64494
    Jan 22 at 8:27
  • $\begingroup$ d ∈ Triangle[{a, b, c}], e ∈ Triangle[{a, b, c}], f ∈ Triangle[{a, b, c}] is elegant a little than those Sameside. Just make a note here. :) $\endgroup$
    – yode
    Jan 22 at 9:48
  • $\begingroup$ @yode; RandomInstance[ GeometricScene[{a -> {0, 0}, b -> {1, 0}, c -> {1, 1}, d, e, f}, {Triangle[{a, b, c}], PlanarAngle[{b, a, d}] == PlanarAngle[{e, a, d}] == PlanarAngle[{e, a, c}], PlanarAngle[{d, b, a}] == PlanarAngle[{d, b, f}] == PlanarAngle[{f, b, c}], PlanarAngle[{a, c, e}] == PlanarAngle[{b, c, f}] == PlanarAngle[{f, c, e}], GeometricAssertion[d \[Element] Triangle[{a, b, c}], e \[Element] Triangle[{a, b, c}], f \[Element] Triangle[{a, b, c}]], Triangle[{d, e, f}]}]] also fails. $\endgroup$
    – user64494
    Jan 22 at 10:21
7
$\begingroup$

We can prove the Morley theorem by Mathematica.

Without loss of generality,we can assume that a={1,0} and b,c on the unit-circle.

we can divide the angle $\angle bca$ by divide the arc $\overset{\frown}{ab}$ by two points ca and cb etc.

Clear["Global`*"];
{a, ca, cb, b} = AngleVector /@ Subdivide[0, β, 3];
{b, ab, ac, c} = AngleVector /@ Subdivide[β, γ, 3];
{c, bc, ba, a} = AngleVector /@ Subdivide[γ, 2 π, 3];
d = Block[{s, t}, 
   Rescale[s, {0, 1}, {b, bc}] /. 
    Solve[Rescale[s, {0, 1}, {b, bc}] == 
      Rescale[t, {0, 1}, {c, cb}], {s, t}]] // 
  First;(* intersection point of Line[b,bc] and Line[c,cb] *)
e = Block[{s, t}, 
   Rescale[s, {0, 1}, {c, ca}] /. 
    Solve[Rescale[s, {0, 1}, {c, ca}] == 
      Rescale[t, {0, 1}, {a, ac}], {s, t}]] // First;
f = Block[{s, t}, 
    Rescale[s, {0, 1}, {a, ab}] /. 
     Solve[Rescale[s, {0, 1}, {a, ab}] == 
       Rescale[t, {0, 1}, {b, ba}], {s, t}]] // First;
FullSimplify[{(d - e) . (d - e) == (e - f) . (e - f), (e - f) . (e - 
      f) == (f - d) . (f - d), (f - d) . (f - d) == (d - e) . (d - e)}]

β = 50 Degree;
γ = 200 Degree;
Manipulate[
 Dynamic@Graphics[{Circle[], {Dashed, 
     Line[{{a, ab}, {a, ac}, {b, bc}, {b, ba}, {c, ca}, {c, 
        cb}}]}, {FaceForm[], EdgeForm[Blue], 
     Triangle[{a, b, c}]}, {Opacity[.5], Green, Triangle[{a, b, f}], 
     Triangle[{b, c, d}], Triangle[{c, a, e}]}, {Red, 
     Point[{a, b, c}]}, {Orange, Triangle[{d, e, f}]}, 
    Text[Style[#, Blue, FontSize -> 20], 
       ToExpression@#, -1.2 ToExpression@#] & /@ {"a", "b", "c", "ab",
       "ac", "bc", "ba", "ca", "cb"}}], {β, 
  0.1, γ}, {γ, β, 2 π}, 
 LocalizeVariables -> False]

{True, True, True}

enter image description here

$\endgroup$
5
  • $\begingroup$ +1. Nice. Also see that demonstation. $\endgroup$
    – user64494
    Jan 23 at 17:19
  • $\begingroup$ And that info. As far as I rememder it, your proof is similar to the proof from Coxeter, H. S. M. and Greitzer, S. L. $\endgroup$
    – user64494
    Jan 23 at 17:28
  • $\begingroup$ A good code is a commented code. Your "etc" is too poor. $\endgroup$
    – user64494
    Jan 23 at 20:15
  • $\begingroup$ @user64494 Thanks! I have add some labels to this animation. The proof is different from Coxeter, H. S. M. and Greitzer, S. L. since here we only need the one outside circle instead of three small circles. $\endgroup$
    – cvgmt
    Jan 24 at 0:22
  • $\begingroup$ d = Block[{s, t}, {1 - s, s} . {b, bc} /. Solve[{1 - s, s} . {b, bc} == {1 - t, t} . {c, cb}, {s, t}]] // First; and {# . # &[d - e] == # . # &[ e - f], # . # &[e - f] need to be commented. $\endgroup$
    – user64494
    Jan 24 at 6:37
4
$\begingroup$

Well actually it is a built-in entity:

RandomInstance[Entity["GeometricScene", "MorleysTheorem"][
  EntityProperty["GeometricScene", "Scene"]]]

enter image description here

$\endgroup$
1
  • $\begingroup$ The fact that this theorem is built-in rather than easy to construct does solve the problem posed, which is impressive. Kudos, yode. But a different problem of comparable complexity might not be so honored. So this (admirable!) solution does not make the feature any more reliable or easy to use. I have often faced similar situations with built-in examples. They help in the short run, only. $\endgroup$ Jan 27 at 15:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.