Modelling the problem into a system of equation does not necessarily involve Sage.
Solving the equation can then be done with or without Sage, symbolically or numerically.
Here is an approach to the modelisation part.
Set up a coordinate frame so that
O
,Call A
that midpoint, and call
B
be the midpoint of the next edge of the pentagon,
so that OA
and OB
make an angle of 2*pi/5
C
the centre of the hexagon in the vertical plane containing OA
,D
the centre of the hexagon in the vertical plane containing OB
,U
and V
the vertices of those two hexagons that are distinct when
they lie horizontally, but that coincide once they have been rotated
by the mystery angle alpha
which we are looking for,r
the radius of the pentagon, R
that of the hexagon.Use complex coordinates in the xy plane. Let zeta = exp(i*2*pi/5)
. Let
ux
, uy
, uz
be the coordinates of U
, and let u = ux + i * uy
.vx
, vy
, vz
be the coordinates of V
, and let v = vx + i * vy
.In terms of distances,
OA = OB = r * cos(pi/5)
AC = BD = R * cos(pi/6)
CU = DV = R
If the corresponding hexagons have been rotated by the same angle
around their common edge with the pentagon, the z
coordinates
of U
and V
are the same: uz = vz = R * cos(pi/6) * sin(alpha)
.
Their horizontal coordinates are found by decomposing
OU
as OA + AC + CU
OV
as OB + BD + DV
and their expressions as complex numbers are:
u = r * cos(pi/5) + R * cos(pi/6) * cos(alpha) + R * i
v = zeta * (r * cos(pi/5) + R * cos(pi/6) * cos(alpha) - R * i)
We have two equations from the geometry:
the polygons share the same edge length, so r * sin(pi/5) = R * sin(pi/6)
,
the angle alpha
is such that U
and V
coincide, so we equate u = v
to find alpha
.
The first equation lets us express r
in terms of R
as r = R * sin(pi/6) / sin(pi/5)
.
From the equation u = v
, substituting the values of u
and v
,
and the value of r
in terms of R
, we get a linear equation
in terms of cos(alpha)
which easily gives cos(alpha)
,
from where we get alpha
with the arccosine function.
In terms of using Sage, some possible exercises here are:
cos(alpha)
alpha
One could try to obtain a numerical solution or an exact solution.
![]() | 2 | No.2 Revision |
Modelling the problem into a system of equation does not necessarily involve Sage.
Solving the equation
The soccer ball polyhedron is the polyhedron made of 12 regular pentagons and 20 regular hexagons, all with the same side length, glued edge to edge, each pentagon adjacent to 5 hexagons, each hexagon adjacent to 3 pentagons and 3 hexagons.
To determine the angle the hexagons make with the plane of a neighbouring pentagon, we restrict our attention to one pentagon and one adjacent hexagon.
We set up some notation. Call
P
the pentagon, E
its centreH
the hexagon, C
its centreU
, V
, W
three consecutive vertices of H
,
such that [UV]
is the common edge with P
A
the midpoint of [UV]
Q
the plane that contains P
q
the orthogonal projection to Q
B = q(C)
L
the line through E
perpendicular to Q
r
the rotation by a fifth of a turn around L
sending U
to V
Observe:
r^k(W)
form a regular pentagon R
parallel to P
C
is a midpoint of an edge of R
Here tiled by six equilateral triangles,
the side length of R
is twice that of P
FC = 2 * EA
E
, A
, B
are aligned, so, as lengths, EB = EA + AB
R
, q
is an Set up a coordinate frame so that isometry to Q
EB
and FC
are equalWe notice some right-angled triangles:
(A, B, C)
has a right angle at the origin O
,
Call A
that midpoint, and call
B
OA
and OB
make 2*pi/5
alpha
at A
, so cos(alpha) = AB / AC
(E, A, V)
has a right angle at A
and an angle pi/5
at E
, so
tan(pi/5) = AV / EA
(C, A, V)
has a right angle at A
and an angle pi/6
at C
the centre of the hexagon , so
tan(pi/6) = AV / CA
Combining the equations
FC = 2 * EA
FC = EB
EB = EA + AB
we get
EA = AB
Combining with the equations from our right-angled triangles, we get:
cos(alpha) = AB / AC
= EA / AC
= (EA / AV) / (CA / AV)
= (AV / CA) / (AV / EA)
= tan(pi/6) / tan(pi/5)
so in the vertical plane containing OA
,
D
the centre of the hexagon in the vertical plane containing OB
,U
and V
the vertices of those two hexagons that are distinct when
they lie horizontally, but that coincide once they have been rotated
by the mystery angle alpha
which end, cos(alpha) = tan(pi/6) / tan(pi/5)
and since we are looking for,
r
the radius of the pentagon, R
for a positive angle
less than a flat angle, this means: alpha = arccos(tan(pi/6)/tan(pi/5))
Even though we solved our problem with pen and paper, let's see if Sage can bring something here.
We can define this number in Sage:
sage: a = arccos(tan(pi/6)/tan(pi/5))
and see that of the hexagon.
Use complex coordinates in the xy plane. Let zeta = exp(i*2*pi/5)
. Let
uxSage turns tan(pi/6)/tan(pi/5)
into an expression
involving square roots: sage: a
arccos(1/3*sqrt(3)/sqrt(-2*sqrt(5) + 5))
We can ask Sage for a numerical approximation:
sage: a.numerical_approx()
0.652358139784368
We can check what fraction of pi that is:
sage: f = (a / pi)
sage: f
arccos(1/3*sqrt(3)/sqrt(-2*sqrt(5) + 5))/pi
and get a numerical approximation:
sage: f.numerical_approx()
0.207652045225832
We can check this does not look like a rational number:
sage: continued_fraction(f)
[0; 4, 1, 4, 2, 2, 1, 16, 7, 10, 2, 3, 4, 1, 8, 3, 1, 1, 1, 6, ...]
In the end, the nicest way to express the result is
arccos(tan(pi/6)/tan(pi/5))
, uy
, uz
"the angle whose cosine
is the ratio of tangents of pi/6 and pi/5", and this
is quite satisfactory since the quantities bear
a strong relation to the setting of hexagons
around a pentagon.
Going further
It would be the coordinates of U
, and let u = ux + i * uy
.
vx
, vy
, vz
be the coordinates of V
, and let v = vx + i * vy
.
In terms of distances,
OA = OB = r * cos(pi/5)
AC = BD = R * cos(pi/6)
CU = DV = R
If the corresponding hexagons have been rotated by the same angle
around their common edge with the pentagon, the z
coordinates
of U
and V
are the same: uz = vz = R * cos(pi/6) * sin(alpha)
.
Their horizontal coordinates are found by decomposing
- the vector
OU
as OA + AC + CU
- the vector
OV
as OB + BD + DV
and their expressions as complex numbers are:
u = r * cos(pi/5) + R * cos(pi/6) * cos(alpha) + R * i
v = zeta * (r * cos(pi/5) + R * cos(pi/6) * cos(alpha) - R * i)
We have two equations from the geometry:
the polygons share the same edge length, so r * sin(pi/5) = R * sin(pi/6)
,
the angle alpha
is such that U
and V
coincide, so we equate u = v
to find alpha
.
The first equation lets us express r
in terms of R
as r = R * sin(pi/6) / sin(pi/5)
.
From the equation u = v
, substituting the values of u
and v
,
and the value of r
in terms of R
, we get a linear equation
in terms of cos(alpha)
which easily gives cos(alpha)
,
from where we get alpha
with the arccosine function.
In terms of using Sage, some possible exercises here are:
- a fun project to draw pictures and animations
to illustrate the
question - input the various equations above
- perform the substitutions
- solve for
cos(alpha)
- solve for
alpha
problem using Sage. For example, one could
produce a 3d animated scene to illustrate folding the hexagons
from an initial position spread out in the plane of the
pentagon to a final folded up position
a 3d animated scene drawing each of the steps of the
reasoning above, highlighting the relevant right angled
triangles one after the other.
One could try to obtain a numerical solution or an exact solution.
3 No.3 Revision
Dihedral angles in a "soccer ball" Baskets of polygons
Example: the soccer ball polyhedron
The soccer ball polyhedron is the polyhedron made
of 12 regular pentagons and 20 regular hexagons,
all with the same side length, glued edge to edge,
each pentagon adjacent to 5 hexagons, each hexagon
adjacent to 3 pentagons and 3 hexagons.
To determine the angle the hexagons make with the
plane of a neighbouring pentagon, we restrict our
attention to one pentagon and one adjacent hexagon.
Modelisation and solution
We set up some notation. Call
P
the pentagon, E
its centre H
the hexagon, C
its centre U
, V
, W
three consecutive vertices of H
,
such that [UV]
is the common edge with P
A
the midpoint of [UV]
Q
the plane that contains P
q
the orthogonal projection to Q
B = q(C)
L
the line through E
perpendicular to Q
r
the rotation by a fifth of a turn around L
sending U
to V
Observe:
- the rotates
r^k(W)
form a regular pentagon R
parallel to P
C
is a midpoint of an edge of R
- since the hexagon can be tiled by six equilateral triangles,
the side length of
R
is twice that of P
- therefore, both as vectors and as lengths,
FC = 2 * EA
E
, A
, B
are aligned, so, as lengths, EB = EA + AB
- from the plane containing
R
, q
is an isometry to Q
- in particular, the lengths
EB
and FC
are equal
Right-angled triangles
We notice some right-angled triangles:
(A, B, C)
has a right angle at B
and an angle alpha
at A
, so
cos(alpha) = AB / AC
(E, A, V)
has a right angle at A
and an angle pi/5
at E
, so
tan(pi/5) = AV / EA
(C, A, V)
has a right angle at A
and an angle pi/6
at C
, so
tan(pi/6) = AV / CA
Combining our equations
Combining the equations
FC = 2 * EA
FC = EB
EB = EA + AB
we get
EA = AB
Combining with the equations from our right-angled triangles, we get:
cos(alpha) = AB / AC
= EA / AC
= (EA / AV) / (CA / AV)
= (AV / CA) / (AV / EA)
= tan(pi/6) / tan(pi/5)
so in the end,
cos(alpha) = tan(pi/6) / tan(pi/5)
and since we are looking for a positive angle
less than a flat angle, this means:
alpha = arccos(tan(pi/6)/tan(pi/5))
How can Sage be useful here?
Even though we solved our problem with pen and paper,
let's see if Sage can bring something here.
We can define this number in Sage:
sage: a = arccos(tan(pi/6)/tan(pi/5))
and see that Sage turns tan(pi/6)/tan(pi/5)
into an expression
involving square roots:
sage: a
arccos(1/3*sqrt(3)/sqrt(-2*sqrt(5) + 5))
We can ask Sage for a numerical approximation:
sage: a.numerical_approx()
0.652358139784368
We can check what fraction of pi that is:
sage: f = (a / pi)
sage: f
arccos(1/3*sqrt(3)/sqrt(-2*sqrt(5) + 5))/pi
and get a numerical approximation:
sage: f.numerical_approx()
0.207652045225832
We can check this does not look like a rational number:
sage: continued_fraction(f)
[0; 4, 1, 4, 2, 2, 1, 16, 7, 10, 2, 3, 4, 1, 8, 3, 1, 1, 1, 6, ...]
In the end, the nicest way to express the result is
arccos(tan(pi/6)/tan(pi/5))
, "the angle whose cosine
is the ratio of tangents of pi/6 and pi/5", and this
is quite satisfactory since the quantities bear
a strong relation to the setting of hexagons
around a pentagon.
Going further
It would be a fun project to draw pictures and animations
to illustrate the problem using Sage. For example, one could
produce
a 3d animated scene to illustrate folding the hexagons
from an initial position spread out in the plane of the
pentagon to a final folded up position
a 3d animated scene drawing each of the steps of the
reasoning above, highlighting the relevant right angled
triangles one after the other.
Other examples
Let us look at the more general case of a central m
-gon
surrounded by m lateral n
-gons.
The hexagon case was a bit special, in that the midpoints
of the larger pentagon were are the centre of the hexagon.
In general, it is not the centre we need to use, but really
the midpoint of the segment joining the pair of vertices
one vertex away from the adjacency side.
Calling C
that midpoint, the formulas we need are:
CW = tan(pi/m) * FC
CW = tan(pi/m) * FC
FC = EA + AB
EA = cot(pi/m)
AB = 2 * sin(tau/n) * cos(alpha)
CW = 1 + 2 * cos(alpha)
So altogether we get:
cos(alpha) = cot(tau/n) * cot(pi/m)
In Sage, define a function:
def basket_angle(m, n):
return arccos(cot(2*pi/n)*cot(pi/m))
and try it out:
sage: a = basket_angle(5, 6)
sage: a
arccos(1/15*sqrt(3)*sqrt(10*sqrt(5) + 25))
sage: a.n()
0.652358139784368
sage: (a/pi).n()
0.207652045225832
sage: (a * 180 / pi).n()
37.3773681406497
Octagons around a triangle:
sage: a = basket_angle(3, 8)
sage: a.n()
0.955316618124509
In degrees:
sage: (a * 180 / pi).n()
54.7356103172453
4 No.4 Revision
Baskets of polygons
Example: Baskets
Fix two integers m ≥ 3
and n ≥ 4
and consider, in the horizontal plane
in three-space, a regular m
-gon surrounded by m
regular n
-gons
with the same side length, glued to it edge to edge.
Depending on m
and n
, the outer n
-gons can
- overlap with their neighbours (think of
m
and n
both large) - tile perfectly, that is, intersect with each of their neighbours along an edge
- leave out some space, so that two neighbouring
n
-gons
only share a vertex
The second case happens only for finitely many pairs (m, n)
and is well studied.
The third case happens for every (m, 4)
and for finitely many other pairs.
In that third case, if we rotate each n
-gon by a same angle around
its common edge with the central m
-gon, as the rotation angle
increases, the gap between neighbouring n
-gons decreases,
until for some special value alpha
(depending on m
and n
),
it vanishes and each n
-gon shares a full edge with each of its neighbours.
We obtain a "basket" ; let's call that an (m, n)
-basket.
Link with the soccer ball polyhedron
The soccer ball polyhedron is the polyhedron made
of 12 regular pentagons and 20 regular hexagons,
all with the same side length, glued edge to edge,
each pentagon adjacent to 5 hexagons, each hexagon
adjacent to 3 pentagons and 3 hexagons.
One of the pentagons together with its five adjacent hexagons
form a (5, 6)
-basket.
Basket angle
The question is: for each m
and n
, what is the angle alpha
to use?
Modelisation and solution
To determine the angle the hexagons make with the
plane of a neighbouring pentagon, alpha
, we restrict our
attention our attention
to one pentagon m
-gon and one adjacent hexagon.
Modelisation and solution
n
-gon. For convenience we take half the side length as our length unit.
We set up some notation. Call
P
the pentagon, M
the m
-gon, E
its H
the hexagon, C
its centreN
the n
-gon,T
, U
, V
, W
HN
,
such that [UV]
is the common edge with M
A
the midpoint of [UV]
C
the midpoint of [TW]
P
A
the midpoint of [UV]
Q
the plane that contains M
L
the line through E
perpendicular to P
qp
the orthogonal projection Q
P
(parallel to L
)B = q(C)
C
to P
tau
the angle of a full turn, that is, tau = 2*pi
r
the rotation map by tau/m
(an m
-th of a turn) around L
E
perpendicular to Q
r
sending U
to V
and T
to W
;
- for each integer
k
, r^k
the rotation by a fifth of a turn (k/m)*tau
around L
sending U
to V
,
(the k
-th composition power of r
),
Observe:
Notice the rotates r^k(W)
r^k(T)
for k
from 0
to m - 1
(including T
and W
) form a regular m
-gon parallel to M
. Call R
parallel to P
C
is a midpoint of that m
-gon, and F
its centre. Notice that p(F) = E
. Since the planes containing M
and R
are parallel,
p
induces an edge of R
R
is twice that of P
FC = EB
(both as vectors and as FC = 2 * EA
Notice E
, A
, B
are aligned, so, as lengths, EB = EA + AB
R
, q
is an isometry to Q
EB
and FC
are equalWe notice some right-angled triangles:
(A, B, C)
has a right angle at B
and an angle alpha
at A
, so
cos(alpha) = AB / AC
(if n = 4
that triangle is degenerate but the formula still holds)
(E, A, V)
has a right angle at A
and an angle
at pi/5pi/mE
, so
tan(pi/5) tan(pi/m) = AV / EA
cot(pi/m) = EA / AV
(C, A, V)
and notice that by our choice of length unit,
AV = 1
(F, C, W)
has a right angle at AC
and an angle pi/6pi/m
at CF
, so
tan(pi/6) = AV tan(pi/m) = CW / CA
FC
cot(pi/m) = FC / CW
Furthermore, calling H
the orthogonal projection of U
to the line (TW)
,
(T, H, U)
has a right angle at H
and an angle tau/n
at T
, so
TH = 2 * cos(tau/n)
UH = 2 * sin(tau/n)
In the trapezoid (T, U, V, W)
, C
is the midpoint of [WT]
,
the points C
, H
, T
are aligned, and UACH
is a rectangle, so
CW = CT
CT = CH + HT
AC = UH = 2 * sin(tau/n)
CH = AU = 1
Combining our equations
Combining the equationsStarting from the equation
FC = 2 * EA
cot(pi/m) * CW
and substituting
FC = EB
EB = EA + AB
AB = cot(pi/m) + 2 * sin(tau/n) * cos(alpha)
and
CW = CT = CH + HT = AU + TH = 1 + 2 * cos(tau/n)
we get
EA = AB
cot(pi/m) + 2 * sin(tau/n) * cos(alpha) = cot(pi/m) * (1 + 2 * cos(tau/n))
Combining with the equations from our right-angled triangles, we get:which simplifies to
2 * sin(tau/n) * cos(alpha) = AB / AC
= EA / AC
= (EA / AV) / (CA / AV)
= (AV / CA) / (AV / EA)
= tan(pi/6) / tan(pi/5)
cot(pi/m) * 2 * cos(tau/n)
so in the end,and gives
cos(alpha) = tan(pi/6) / tan(pi/5)
and since we are looking for a positive angle
less than a flat angle, this means:
alpha = arccos(tan(pi/6)/tan(pi/5))
cot(pi/m) * cot(tau/n)
How can Sage be useful here?
Even though we solved our problem with pen and paper,
let's see if Sage can bring something here.
We can define this number in Sage:Define a function and try it out:
def basket_angle(m, n):
return arccos(cot(pi/m) * cot(2*pi/n))
Pentagon surrounded by hexagons:
sage: a = arccos(tan(pi/6)/tan(pi/5))
and see that Sage turns tan(pi/6)/tan(pi/5)
into an expression
involving square roots:
basket_angle(5, 6)
sage: a
arccos(1/3*sqrt(3)/sqrt(-2*sqrt(5) arccos(1/15*sqrt(3)*sqrt(10*sqrt(5) + 5))
25))
sage: a.n()
0.652358139784368
sage: (a/pi).n()
0.207652045225832
sage: (a * 180 / pi).n()
37.3773681406497
We can ask Sage for a numerical approximation:Triangle surrounded by octagons:
sage: a.numerical_approx()
0.652358139784368
a = basket_angle(3, 8)
sage: a.n()
0.955316618124509
We can check what fraction of pi that is:In degrees:
sage: f = (a * 180 / pi)
sage: f
arccos(1/3*sqrt(3)/sqrt(-2*sqrt(5) + 5))/pi
pi).n()
54.7356103172453
and get a numerical approximation:
sage: f.numerical_approx()
0.207652045225832
We can check this does not look like a rational number:
sage: continued_fraction(f)
[0; 4, 1, 4, 2, 2, 1, 16, 7, 10, 2, 3, 4, 1, 8, 3, 1, 1, 1, 6, ...]
In the end, the nicest way to express the result is
arccos(tan(pi/6)/tan(pi/5))
, "the angle whose cosine
is the ratio of tangents of pi/6 and pi/5", and this
is quite satisfactory since the quantities bear
a strong relation to the setting of hexagons
around a pentagon.
Going further
It would be a fun project to draw pictures and animations
to illustrate the problem using Sage. For example, one could
produce
a 3d animated scene to illustrate folding the hexagons
from an initial position spread out in the plane of the
pentagon to a final folded up position
a 3d animated scene drawing each of the steps of the
reasoning above, highlighting the relevant right angled
triangles one after the other.
Other examples
Let us look at the more general case of a central m
-gon
surrounded by m lateral n
-gons.
The hexagon case was a bit special, in that the midpoints
of the larger pentagon were are the centre of the hexagon.
In general, it is not the centre we need to use, but really
the midpoint of the segment joining the pair of vertices
one vertex away from the adjacency side.
Calling C
that midpoint, the formulas we need are:
CW = tan(pi/m) * FC
CW = tan(pi/m) * FC
FC = EA + AB
EA = cot(pi/m)
AB = 2 * sin(tau/n) * cos(alpha)
CW = 1 + 2 * cos(alpha)
So altogether we get:
cos(alpha) = cot(tau/n) * cot(pi/m)
In Sage, define a function:
def basket_angle(m, n):
return arccos(cot(2*pi/n)*cot(pi/m))
and try it out:
sage: a = basket_angle(5, 6)
sage: a
arccos(1/15*sqrt(3)*sqrt(10*sqrt(5) + 25))
sage: a.n()
0.652358139784368
sage: (a/pi).n()
0.207652045225832
sage: (a * 180 / pi).n()
37.3773681406497
Octagons around a triangle:
sage: a = basket_angle(3, 8)
sage: a.n()
0.955316618124509
In degrees:
sage: (a * 180 / pi).n()
54.7356103172453
Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.