#pragma once #include #include #include #include #include #include #include #include #include #include "array_hash.hpp" class graph { public: typedef struct coordinate { double x; double y; } coordinate; typedef struct vertex { coordinate r; std::vector nd; std::vector ne; std::vector polygon; } vertex; typedef struct edge { std::array v; coordinate r; std::array crossings; } edge; coordinate L; std::vector vertices; std::vector edges; std::vector dual_vertices; std::vector dual_edges; graph(unsigned Nx, unsigned Ny); graph(double Lx, double Ly, std::mt19937& rng); graph(unsigned n, double a, std::mt19937& rng); void helper(unsigned n, std::mt19937& rng); graph const rotate(); std::string write() const; };