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:

Returns:

    Edge
vertex (q, r, v)
Create a vertex from axial coordinates <q,r,v>

Parameters:

Returns:

    Vertex
unpack (x)
Get axial coordinates of grid parts

Parameters:

  • x Face, Edge or Vertex grid part

Returns:

  1. number q
  2. number r
  3. 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:

Returns:

    {Face,...}
protrudingEdges (q, r, v)
Get list of 3 edges that protrude vertex <q,r,v>

Parameters:

Returns:

    {Edge,...}
adjacentVertices (q, r, v)
Get list of 3 vertices that are adjacent to vertex <q,r,v>

Parameters:

Returns:

    {Vertex,...}
joins (q, r, e)
Get list of 2 faces joined by edge <q,r,e>

Parameters:

Returns:

    {Face,...}
endpoints (q, r, e)
Get list of 2 vertices that are endpoints of edge <q,r,e>

Parameters:

Returns:

    {Vertex,...}
adjacentEdgeVertexPairs (q, r, v)
Get list of 3 edge-vertex pairs that stem from vertex <q,r,v>

Parameters:

Returns:

    {{edge=Edge,vertex=Vertex},...}
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
generated by LDoc 1.5.0 Last updated 2023-07-02 05:10:58