#include <list>
#include <set>
#include <map>
#include <stdexcept>
#include <ostream>
#include <string>
Go to the source code of this file.
| Namespaces | |
| namespace | hex | 
| namespace | hex::svg | 
| Classes | |
| class | hex::exception | 
| Base class for hex exceptions.  More... | |
| class | hex::invalid_argument | 
| class | hex::out_of_range | 
| class | hex::svg::Identity | 
| Parent class for objects that can have an id, SVG style & SVG class name.  More... | |
| struct | hex::Point | 
| X-Y coordinate.  More... | |
| class | hex::Grid | 
| A square field of hexagons that form the universe in which the other objects exist.  More... | |
| class | hex::Edge | 
| The interface between a hex and one of its six neighbours.  More... | |
| class | hex::Hex | 
| A single hexagonal quanta of area.  More... | |
| class | hex::Area | 
| A connected set of hexes.  More... | |
| class | hex::Path | 
| A sequence of adjacent hexes.  More... | |
| class | hex::Boundary | 
| A sequence of adjacent edges.  More... | |
| Defines | |
| #define | FIRETREE__HEX_H 1 | 
| #define | HEX_PARANOID_CHECKS | 
| Typedefs | |
| typedef double | hex::Distance | 
| Enumerations | |
| enum | hex::Direction { hex::A = 0, hex::B = 1, hex::C = 2, hex::D = 3, hex::E = 4, hex::F = 5 } | 
| The six directions are labelled A to F anti-clockwise.  More... | |
| Functions | |
| Direction | hex::to_direction (char c) throw (hex::invalid_argument) | 
| char | hex::to_char (Direction d) | 
| Direction & | hex::operator+= (Direction &d, int i) | 
| Direction | hex::operator+ (const Direction &d, int i) | 
| Direction & | hex::operator++ (Direction &d) | 
| Prefix increment. | |
| Direction | hex::operator++ (const Direction &d, int) | 
| Postfix increment. | |
| Direction & | hex::operator-= (Direction &d, int i) | 
| Direction | hex::operator- (const Direction &d, int i) | 
| Direction & | hex::operator-- (Direction &d) | 
| Prefix decrement. | |
| Direction | hex::operator-- (const Direction &d, int) | 
| Postfix decrement. | |
| std::ostream & | hex::operator<< (std::ostream &os, const Direction &d) | 
| std::string | hex::rotate (const std::string &steps, int i) | 
| steps is a string of characters A-F, representing a set of Directions. | |
| void | hex::go (int &i, int &j, Direction d, int distance=1) | 
| Translates coordinates i,j in direction d. | |
| void | hex::go (int &i, int &j, const std::string &steps) | 
| Translates coordinates i,j along steps. | |
| std::string | hex::steps (const Hex *from, const Hex *to) | 
| Calculates a minimum-length path between two hexes. | |
| int | hex::distance (const Hex *from, const Hex *to) | 
| The length of the shortest path between two hexes. | |
| std::set< Hex * > | hex::range (Hex *h, int distance) | 
| Calculates the set of hexes that are range r from hex h. | |
| std::set< Hex * > | hex::set_difference (const std::set< Hex * > &a, const std::set< Hex * > &b) | 
| The set difference between a and b. | |
| std::set< Hex * > | hex::set_intersection (const std::set< Hex * > &a, const std::set< Hex * > &b) | 
| The set intersection between a and b. | |
| std::set< Hex * > | hex::set_union (const std::set< Hex * > &a, const std::set< Hex * > &b) | 
| The set union between a and b. | |
| std::string | hex::set_str (const std::set< Hex * > &a) | 
| Generates a string representation of hex-set a. | |
| bool | hex::bounding_box (const std::set< Hex * > &a, int &i0, int &j0, int &i1, int &j1) | 
| Calculate a bounding box for hex-set a. | |
| Area | hex::fill (const std::set< Hex * > &beyond, Hex *h) | 
| Calc. | |
| Area | hex::fill (const std::set< Hex * > &beyond, const Area &a) | 
| Max. | |
| std::list< Area > | hex::areas (const std::set< Hex * > &s) | 
| Find all of the Areas (connected sets) in s. | |
| bool | hex::is_connected (const std::set< Hex * > &s) | 
| TRUE iff s is connected. | |
| std::list< Boundary > | hex::skeleton (const std::list< Area > &a, bool include_boundary=true) | 
| The skeletons of areas a. | |
| Variables | |
| const Distance | hex::M_SQRT3 = 1.73205080756887729352744634150587236 | 
| const Distance | hex::I = 1.0 | 
| Distance between centres of adjacent hexes. | |
| const Distance | hex::J = M_SQRT3/2.0 | 
| Distance between adjacent hex rows. | |
| const Distance | hex::K = 1.0/M_SQRT3 | 
| Length of hex's edge. | |
| const int | hex::DIRECTIONS = 6 | 
 1.5.1
 1.5.1