revisions to pentagons.2

This commit is contained in:
queue-miscreant 2025-03-16 10:30:13 -05:00
parent f040d9c222
commit 72b9ce677e
16 changed files with 695 additions and 215 deletions

View File

@ -53,6 +53,14 @@ class PolyData:
vertex_count: int
edge_count: int
@classmethod
def from_hexagons(cls, hexagon_count: int):
return cls(
hexagon_count=hexagon_count,
vertex_count=2*hexagon_count + 20,
edge_count=3*hexagon_count + 30,
)
@dataclass
class GoldbergData:
@ -151,6 +159,11 @@ Thus, by asserting that the figure is composed of pentagons and hexagons,
This is the case even if there are no hexagons, in which case we are describing a dodecahedron
(which, incidentally, has 20 vertices).
Consequently, we get an expression for the number of vertices and edges in terms of the number of hexagons.
- $3V = 6F_6 + 5 F_5 = 6F_6 + 60 = 3V \implies V = 2F_6 + 20$
- $2V = 6F_6 + 5 F_5 \implies E = 3F_6 + 30$
### Duality
@ -417,7 +430,7 @@ $$
\end{align*}
$$
Giving an equal share of triangles to each pentagon as before, each has $\|(a, b)\|$ triangles.
Giving an equal share of triangles to each pentagon as before, each has $\|a + bu\|$ triangles.
### Triangles to Hexagons
@ -455,8 +468,8 @@ Beyond Soccer Balls
-------------------
The three cases of paths as described above are also used to delineate classes of Goldberg polyhedra.
Only class I and II polyhedra produce figures which are mirror-symmetric.
Class III polyhedra come in chiral pairs, due to the choice of a clockwise turn in their construction.
Only class I and II polyhedra produce figures which are mirror-symmetric ($I_h$, which contains $I$).
Class III polyhedra lack this; they come in chiral pairs due to the choice of a clockwise turn in their construction.
### Basic Conway Operators
@ -630,12 +643,7 @@ goldberg_classes = {
def poly_from_dodecahedral_goldberg_parameter(parameter: tuple[int, int]):
a, b = parameter
hexagon_count = 10*(a*a + a*b + b*b - 1)
vertex_count = (60 + 6*hexagon_count) // 3
return PolyData(
hexagon_count=hexagon_count,
vertex_count=vertex_count,
edge_count=(vertex_count * 3) // 2,
)
return PolyData.from_hexagons(hexagon_count)
def goldberg_table_row(data: GoldbergData) -> list[str]:
@ -655,7 +663,7 @@ def goldberg_table_row(data: GoldbergData) -> list[str]:
Markdown(tabulate(
[
([class_] if i == 0 else [""]) + goldberg_table_row(item)
([class_ if i == 0 else ""]) + goldberg_table_row(item)
for class_, items in goldberg_classes.items()
for i, item in enumerate(items)
],

View File

Before

Width:  |  Height:  |  Size: 314 KiB

After

Width:  |  Height:  |  Size: 314 KiB

View File

Before

Width:  |  Height:  |  Size: 491 KiB

After

Width:  |  Height:  |  Size: 491 KiB

View File

Before

Width:  |  Height:  |  Size: 348 KiB

After

Width:  |  Height:  |  Size: 348 KiB

View File

Before

Width:  |  Height:  |  Size: 431 KiB

After

Width:  |  Height:  |  Size: 431 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

View File

Before

Width:  |  Height:  |  Size: 497 KiB

After

Width:  |  Height:  |  Size: 497 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

View File

@ -0,0 +1 @@
../1/goldberg_triangles.py

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 428 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 449 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 342 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 551 KiB