Module catan.logic.grid
Hexagonal grid parts and relations.
We use the axial coordinate system, since it is the simplest to implement.
We'll use letters q
and r
for integers, and e
and v
for strings.
In this system, faces are located by a tuple <q,r>
.
Each edge is either northeast, northwest or west to some face, thus <q,r,e>
,
where e
is either "NE"
(for northeast), "NW"
(for northwest), or "W"
(for west).
Each vertex is either north or south to some face, thus <q,r,v>
,
where v
is either "N"
(for north), or "S"
(for south).
Functions
face (q, r) | Create a face from axial coordinates <q,r> |
edge (q, r, e) | Create an edge from axial coordinates <q,r,e> |
vertex (q, r, v) | Create a vertex from axial coordinates <q,r,v> |
unpack (x) | Get axial coordinates of grid parts |
borders (q, r) | Get list of 6 edges that border face <q,r> |
corners (q, r) | Get list of 6 vertices that corner face <q,r> |
touches (q, r, v) | Get list of 3 faces that touch vertex <q,r,v> |
protrudingEdges (q, r, v) | Get list of 3 edges that protrude vertex <q,r,v> |
adjacentVertices (q, r, v) | Get list of 3 vertices that are adjacent to vertex <q,r,v> |
joins (q, r, e) | Get list of 2 faces joined by edge <q,r,e> |
endpoints (q, r, e) | Get list of 2 vertices that are endpoints of edge <q,r,e> |
adjacentEdgeVertexPairs (q, r, v) | Get list of 3 edge-vertex pairs that stem from vertex <q,r,v> |
edgeInBetween (vertex1, vertex2) | Get edge in between two vertices, if there is any |
edgeOrientationInFace (face, edge) | Get orientation of edge in relation to a face it borders |
Functions
- face (q, r)
-
Create a face from axial coordinates
<q,r>
Parameters:
- q number
- r number
Returns:
-
Face
- edge (q, r, e)
-
Create an edge from axial coordinates
<q,r,e>
Parameters:
- q number
- r number
- e string
Returns:
-
Edge
- vertex (q, r, v)
-
Create a vertex from axial coordinates
<q,r,v>
Parameters:
- q number
- r number
- v string
Returns:
-
Vertex
- unpack (x)
-
Get axial coordinates of grid parts
Parameters:
- x Face, Edge or Vertex grid part
Returns:
- number q
- number r
- optional string e or v
- borders (q, r)
-
Get list of 6 edges that border face
<q,r>
Parameters:
- q number
- r number
Returns:
-
{Edge,...}
- corners (q, r)
-
Get list of 6 vertices that corner face
<q,r>
Parameters:
- q number
- r number
Returns:
-
{Vertex,...}
- touches (q, r, v)
-
Get list of 3 faces that touch vertex
<q,r,v>
Parameters:
- q number
- r number
- v string
Returns:
-
{Face,...}
- protrudingEdges (q, r, v)
-
Get list of 3 edges that protrude vertex
<q,r,v>
Parameters:
- q number
- r number
- v string
Returns:
-
{Edge,...}
- adjacentVertices (q, r, v)
-
Get list of 3 vertices that are adjacent to vertex
<q,r,v>
Parameters:
- q number
- r number
- v string
Returns:
-
{Vertex,...}
- joins (q, r, e)
-
Get list of 2 faces joined by edge
<q,r,e>
Parameters:
- q number
- r number
- e string
Returns:
-
{Face,...}
- endpoints (q, r, e)
-
Get list of 2 vertices that are endpoints of edge
<q,r,e>
Parameters:
- q number
- r number
- e string
Returns:
-
{Vertex,...}
- adjacentEdgeVertexPairs (q, r, v)
-
Get list of 3 edge-vertex pairs that stem from vertex
<q,r,v>
Parameters:
- q number
- r number
- v string
Returns:
- edgeInBetween (vertex1, vertex2)
-
Get edge in between two vertices, if there is any
Parameters:
- vertex1 Vertex
- vertex2 Vertex
Returns:
-
optional Edge
- edgeOrientationInFace (face, edge)
-
Get orientation of edge in relation to a face it borders
Parameters:
- face Face
- edge Edge
Returns:
-
'E', 'NE', 'NW', 'W', 'SW' or 'SE'
orientation