Skip to content
Unique vertices

Unique vertices

Each edge endpoint has a contiguous vertex index, so clients can create an indexed list without comparing floating-point coordinates.

jcv_point* vertices = malloc(
    (size_t)jcv_get_num_vertices(&diagram) * sizeof(*vertices));
jcv_diagram_get_vertices(&diagram, vertices);

jcv_edge_iter iter;
jcv_edge edge;
jcv_diagram_get_edges(&diagram, &iter);
while( jcv_edge_next(&iter, &edge) )
    add_indexed_edge(edge.vertices[0], edge.vertices[1]);

To map each vertex to its connected sites, walk every site’s ordered loop:

int num_vertices = jcv_get_num_vertices(&diagram);
allocate_vertex_site_storage(num_vertices);

const jcv_site* sites = jcv_diagram_get_sites(&diagram);
for( int i = 0; i < diagram.numsites; ++i )
{
    const jcv_site* site = &sites[i];
    jcv_edge_iter iter;
    jcv_edge edge;
    jcv_site_get_edges(&diagram, site, &iter);
    while( jcv_edge_next(&iter, &edge) )
        link_vertex_site(edge.vertices[0], site);
}
Last updated on