Graphviz 13.0.0~dev.20241220.2304
|
#include <assert.h>
#include <sparse/SparseMatrix.h>
#include <sparse/general.h>
#include <math.h>
#include <sparse/QuadTree.h>
#include <stdbool.h>
#include <stddef.h>
#include <string.h>
#include <cgraph/list.h>
#include <cgraph/cgraph.h>
#include "make_map.h"
#include <sfdpgen/stress_model.h>
#include "country_graph_coloring.h"
#include <sparse/colorutil.h>
#include <neatogen/delaunay.h>
#include <util/agxbuf.h>
#include <util/alloc.h>
#include <util/prisize_t.h>
#include <edgepaint/lab.h>
#include <edgepaint/node_distinct_coloring.h>
Go to the source code of this file.
Data Structures | |
struct | Triangle |
Macros | |
#define | STANDALONE |
Functions | |
void | map_palette_optimal_coloring (char *color_scheme, SparseMatrix A0, float **rgb_r, float **rgb_g, float **rgb_b) |
void | map_optimal_coloring (int seed, SparseMatrix A, float *rgb_r, float *rgb_g, float *rgb_b) |
static int | get_poly_id (int ip, SparseMatrix point_poly_map) |
void | improve_contiguity (int n, int dim, int *grouping, SparseMatrix poly_point_map, double *x, SparseMatrix graph) |
static void | normal (double v[], double normal[]) |
static void | triangle_center (double x[], double y[], double z[], double c[]) |
static SparseMatrix | matrix_add_entry (SparseMatrix A, int i, int j, int val) |
static void | plot_dot_edges (FILE *f, SparseMatrix A) |
static void | plot_dot_labels (FILE *f, int n, int dim, double *x, char **labels, float *fsz) |
static void | dot_polygon (agxbuf *sbuff, doubles_t xp, doubles_t yp, double line_width, bool fill, const char *cstring) |
static void | plot_dot_polygons (agxbuf *sbuff, double line_width, const char *line_color, SparseMatrix polys, double *x_poly, int *polys_groups, float *r, float *g, float *b, const char *opacity) |
void | plot_dot_map (Agraph_t *gr, int n, int dim, double *x, SparseMatrix polys, SparseMatrix poly_lines, double line_width, const char *line_color, double *x_poly, int *polys_groups, char **labels, float *fsz, float *r, float *g, float *b, const char *opacity, SparseMatrix A, FILE *f) |
static int | get_tri (int n, int dim, double *x, int *nt, struct Triangle **T, SparseMatrix *E) |
static SparseMatrix | get_country_graph (int n, SparseMatrix A, int *groups, int GRP_RANDOM, int GRP_BBOX) |
static void | conn_comp (int n, SparseMatrix A, int *groups, SparseMatrix *poly_point_map) |
static void | get_poly_lines (int nt, SparseMatrix E, int ncomps, int *comps_ptr, int *comps, int *groups, SparseMatrix *poly_lines, int **polys_groups, int GRP_RANDOM, int GRP_BBOX) |
static void | cycle_print (int head, int *cycle, int *edge_table) |
static int | same_edge (int ecur, int elast, int *edge_table) |
static void | get_polygon_solids (int nt, SparseMatrix E, int ncomps, int *comps_ptr, int *comps, SparseMatrix *polys) |
static void | get_polygons (int n, int nrandom, int dim, int *grouping, int nt, struct Triangle *Tp, SparseMatrix E, int *nverts, double **x_poly, SparseMatrix *poly_lines, SparseMatrix *polys, int **polys_groups, SparseMatrix *poly_point_map, SparseMatrix *country_graph) |
static int | make_map_internal (bool include_OK_points, int n, int dim, double *x0, int *grouping0, SparseMatrix graph, double bounding_box_margin, int nrandom, int nedgep, double shore_depth_tol, int *nverts, double **x_poly, SparseMatrix *poly_lines, SparseMatrix *polys, int **polys_groups, SparseMatrix *poly_point_map, SparseMatrix *country_graph, int highlight_cluster) |
static void | add_point (int *n, int igrp, double **x, int *nmax, double point[], int **groups) |
static void | get_boundingbox (int n, int dim, double *x, double *width, double *bbox) |
int | make_map_from_rectangle_groups (bool include_OK_points, int n, int dim, double *x, double *sizes, int *grouping, SparseMatrix graph, double bounding_box_margin, int nrandom, int *nart, int nedgep, double shore_depth_tol, int *nverts, double **x_poly, SparseMatrix *poly_lines, SparseMatrix *polys, int **polys_groups, SparseMatrix *poly_point_map, SparseMatrix *country_graph, int highlight_cluster) |
#define STANDALONE |
Definition at line 11 of file make_map.c.
|
static |
Definition at line 1203 of file make_map.c.
References gv_recalloc().
Referenced by make_map_from_rectangle_groups(), and nextpage().
|
static |
Definition at line 464 of file make_map.c.
References A, B, FORMAT_COORD, FORMAT_CSR, free(), MATRIX_TYPE_INTEGER, MATRIX_TYPE_PATTERN, NULL, SparseMatrix_coordinate_form_add_entry(), SparseMatrix_delete(), SparseMatrix_from_coordinate_format(), SparseMatrix_new(), and SparseMatrix_weakly_connected_components().
Referenced by get_polygons().
|
static |
Definition at line 592 of file make_map.c.
References cycle_next, edge_head, edge_tail, and head.
Referenced by get_polygon_solids().
|
static |
Definition at line 251 of file make_map.c.
References agxbprint(), NULL, and PRISIZE_T.
Referenced by plot_dot_polygons().
|
static |
Definition at line 1218 of file make_map.c.
Referenced by make_map_from_rectangle_groups().
|
static |
Definition at line 431 of file make_map.c.
References A, B, FORMAT_COORD, MATRIX_TYPE_INTEGER, MAX, MIN, NULL, SparseMatrix_coordinate_form_add_entry(), SparseMatrix_delete(), SparseMatrix_from_coordinate_format(), and SparseMatrix_new().
Referenced by get_polygons().
|
static |
Definition at line 111 of file make_map.c.
References SparseMatrix_struct::ia, and SparseMatrix_struct::ja.
Referenced by improve_contiguity().
|
static |
Definition at line 496 of file make_map.c.
References A, E, FORMAT_COORD, free(), gv_calloc(), MATRIX_TYPE_INTEGER, neighbor, SparseMatrix_coordinate_form_add_entry(), SparseMatrix_delete(), SparseMatrix_from_coordinate_format_not_compacted(), and SparseMatrix_new().
Referenced by get_polygons().
|
static |
Definition at line 617 of file make_map.c.
References SparseMatrix_struct::a, B, cycle_next, cycle_prev, cycle_print(), E, edge_head, edge_tail, FORMAT_COORD, free(), gv_calloc(), head, SparseMatrix_struct::ia, SparseMatrix_struct::ja, SparseMatrix_struct::m, MATRIX_TYPE_INTEGER, neighbor, SparseMatrix_struct::nz, same_edge(), SparseMatrix_coordinate_form_add_entry(), SparseMatrix_delete(), SparseMatrix_from_coordinate_format_not_compacted(), and SparseMatrix_new().
Referenced by get_polygons().
|
static |
Definition at line 869 of file make_map.c.
References Triangle::center, conn_comp(), dim, E, free(), get_country_graph(), get_poly_lines(), get_polygon_solids(), gv_calloc(), MAX, NULL, and Verbose.
Referenced by make_map_internal().
|
static |
construct triangles
Always contains a self edge and is symmetric.
n | Number of points |
dim | Dimension, only first2D is used |
x | Point j is stored x[j × dim] – x[j × dim + dim - 1] |
nt | [out] Number of triangles |
T | [out] triangles |
E | [out] A matrix of size n×n, if two points i > j are connected by an triangulation edge, and is neighboring two triangles t1 and t2, then A[i, j] is both t1 and t2 |
Definition at line 395 of file make_map.c.
References A, B, center(), dim, E, FORMAT_COORD, free(), get_triangles(), gv_calloc(), matrix_add_entry(), MATRIX_TYPE_INTEGER, NULL, SparseMatrix_delete(), SparseMatrix_from_coordinate_format_not_compacted(), SparseMatrix_new(), SparseMatrix_sort(), T, and triangle_center().
Referenced by make_map_internal().
void improve_contiguity | ( | int | n, |
int | dim, | ||
int * | grouping, | ||
SparseMatrix | poly_point_map, | ||
double * | x, | ||
SparseMatrix | graph | ||
) |
Definition at line 115 of file make_map.c.
References D, dim, dist(), distance_cropped(), get_poly_id(), graph(), maxit, SparseMatrix_delete(), SparseMatrix_get_real_adjacency_matrix_symmetrized(), SparseMatrix_transpose(), stress_model(), and Verbose.
Referenced by makeMap().
int make_map_from_rectangle_groups | ( | bool | include_OK_points, |
int | n, | ||
int | dim, | ||
double * | x, | ||
double * | sizes, | ||
int * | grouping, | ||
SparseMatrix | graph, | ||
double | bounding_box_margin, | ||
int | nrandom, | ||
int * | nart, | ||
int | nedgep, | ||
double | shore_depth_tol, | ||
int * | nverts, | ||
double ** | x_poly, | ||
SparseMatrix * | poly_lines, | ||
SparseMatrix * | polys, | ||
int ** | polys_groups, | ||
SparseMatrix * | poly_point_map, | ||
SparseMatrix * | country_graph, | ||
int | highlight_cluster | ||
) |
Definition at line 1231 of file make_map.c.
References add_point(), bbox(), delta, dim, drand(), free(), get_boundingbox(), graph(), gv_calloc(), make_map_internal(), MAX, MIN, N, Verbose, and X.
Referenced by makeMap().
|
static |
Definition at line 942 of file make_map.c.
References area2(), dim, drand(), E, free(), get_polygons(), get_tri(), graph(), gv_calloc(), gv_recalloc(), imin(), QuadTree_get_nearest(), QuadTree_new_from_point_list(), SparseMatrix_delete(), Verbose, xmax, xmin, and ymin.
Referenced by make_map_from_rectangle_groups().
void map_optimal_coloring | ( | int | seed, |
SparseMatrix | A, | ||
float * | rgb_r, | ||
float * | rgb_g, | ||
float * | rgb_b | ||
) |
Definition at line 93 of file make_map.c.
References A, country_graph_coloring(), free(), NULL, seed, and vector_float_take().
Referenced by makeMap().
void map_palette_optimal_coloring | ( | char * | color_scheme, |
SparseMatrix | A0, | ||
float ** | rgb_r, | ||
float ** | rgb_g, | ||
float ** | rgb_b | ||
) |
Definition at line 34 of file make_map.c.
References A, dist(), free(), gv_calloc(), SparseMatrix_struct::m, node_distinct_coloring(), NULL, seed, SparseMatrix_delete(), SparseMatrix_distance_matrix(), SparseMatrix_export(), SparseMatrix_from_dense(), SparseMatrix_remove_diagonal(), and SparseMatrix_symmetrize().
Referenced by makeMap().
|
static |
Definition at line 212 of file make_map.c.
References A, and SparseMatrix_coordinate_form_add_entry().
Referenced by get_tri().
|
static |
Definition at line 167 of file make_map.c.
References normal().
Referenced by normal(), and triangle_center().
|
static |
Definition at line 221 of file make_map.c.
References A.
Referenced by plot_dot_map().
|
static |
Definition at line 236 of file make_map.c.
References dim.
Referenced by plot_dot_map().
void plot_dot_map | ( | Agraph_t * | gr, |
int | n, | ||
int | dim, | ||
double * | x, | ||
SparseMatrix | polys, | ||
SparseMatrix | poly_lines, | ||
double | line_width, | ||
const char * | line_color, | ||
double * | x_poly, | ||
int * | polys_groups, | ||
char ** | labels, | ||
float * | fsz, | ||
float * | r, | ||
float * | g, | ||
float * | b, | ||
const char * | opacity, | ||
SparseMatrix | A, | ||
FILE * | f | ||
) |
Definition at line 326 of file make_map.c.
References A, agattr(), AGEDGE, AGNODE, AGRAPH, agwrite(), agxbfree(), agxbuse(), dim, NULL, plot_dot_edges(), plot_dot_labels(), and plot_dot_polygons().
Referenced by makeMap().
|
static |
Definition at line 278 of file make_map.c.
References SparseMatrix_struct::a, agxbfree(), agxbput(), agxbuse(), dot_polygon(), SparseMatrix_struct::ia, SparseMatrix_struct::ja, SparseMatrix_struct::m, SparseMatrix_struct::n, rgb2hex(), and Verbose.
Referenced by plot_dot_map().
|
static |
Definition at line 612 of file make_map.c.
References edge_head, and edge_tail.
Referenced by get_polygon_solids().
|
static |
Definition at line 176 of file make_map.c.
Referenced by get_tri().