## Generated by Codox

# Walkmap 0.1.0-SNAPSHOT

# walkmap.vertex

Essentially the specification for things we shall consider to be vertices.

Note that there’s no `distance` function here; to find the distance between two vertices, create an edge from them and use `walkmap.edge/length`.

### canonicalise

`(canonicalise o)`

If `o` is a map with numeric values for `:x`, `:y` and optionally `:z`, upgrade it to something we will recognise as a vertex.

view source

### ensure2d

If `o` is a vertex, set its `:z` value to zero; else throw an exception.

view source

### ensure3d

Given a vertex `o`, if `o` has a `:z` value, just return `o`; otherwise return a vertex like `o` but having thie `dflt` value as the value of its `:z` key, or zero as the value of its `:z` key if `dflt` is not specified.

If `o` is not a vertex, throws an exception.

view source

### vertex

`(vertex x y)``(vertex x y z)`

Make a vertex with this `x`, `y` and (if provided) `z` values. Returns a map with those values, plus a unique `:id` value, and `:kind` set to `:vertex`. It’s not necessary to use this function to create a vertex, but the `:id` must be present and must be unique.

view source

### vertex-key

`(vertex-key o)`

Making sure we get the same key everytime we key a vertex with the same coordinates. `o` must have numeric values for `:x`, `:y`, and optionally `:z`; it is an error and an exception will be thrown if `o` does not conform to this specification.

Note: these keys can be quite long. No apology is made: it is required that the same key can never refer to two different locations in space.

view source

### vertex?

`(vertex? o)`

True if `o` satisfies the conditions for a vertex. That is, essentially, that it must rerpresent a two- or three- dimensional vector. A vertex is shall be a map having at least the keys `:x` and `:y`, where the value of those keys is a number. If the key `:z` is also present, its value must also be a number.

The name `vector?` was not used as that would clash with a function of that name in `clojure.core` whose semantics are entirely different.

view source