set_triangles Subroutine

private subroutine set_triangles(self, vertices, triangles)

Faces given as triangles (3, m) of vertex numbers (1-based); the edges are their sides (each once).

Type Bound

Polyhedron

Arguments

Type IntentOptional Attributes Name
class(Polyhedron), intent(inout) :: self
real(kind=wp), intent(in) :: vertices(:,:)

(3, n), frame coordinates

integer, intent(in) :: triangles(:,:)

(3, m)


Calls

proc~~set_triangles~~CallsGraph proc~set_triangles Polyhedron%set_triangles proc~drop_colors drop_colors proc~set_triangles->proc~drop_colors proc~make_polyhedron make_polyhedron proc~set_triangles->proc~make_polyhedron proc~unique_edges unique_edges proc~set_triangles->proc~unique_edges interface~vkf_switch_create vkf_switch_create proc~make_polyhedron->interface~vkf_switch_create proc~add add proc~make_polyhedron->proc~add proc~line_node line_node proc~make_polyhedron->proc~line_node proc~marker_node marker_node proc~make_polyhedron->proc~marker_node proc~replace ShapeNodes%replace proc~make_polyhedron->proc~replace proc~surface_node surface_node proc~make_polyhedron->proc~surface_node proc~unit_normal unit_normal proc~make_polyhedron->proc~unit_normal proc~vertex_normals vertex_normals proc~make_polyhedron->proc~vertex_normals proc~vertices_sphere vertices_sphere proc~make_polyhedron->proc~vertices_sphere proc~sort_keys sort_keys proc~unique_edges->proc~sort_keys interface~vkf_node_add_child vkf_node_add_child proc~add->interface~vkf_node_add_child interface~vkf_node_delete vkf_node_delete proc~add->interface~vkf_node_delete proc~check_status check_status proc~add->proc~check_status interface~vkf_line_create vkf_line_create proc~line_node->interface~vkf_line_create proc~line_node->proc~check_status proc~line_set_points line_set_points proc~line_node->proc~line_set_points proc~line_set_segments line_set_segments proc~line_node->proc~line_set_segments proc~line_set_style line_set_style proc~line_node->proc~line_set_style interface~vkf_marker_create vkf_marker_create proc~marker_node->interface~vkf_marker_create proc~marker_node->proc~check_status proc~marker_node->proc~line_set_points proc~marker_set_style marker_set_style proc~marker_node->proc~marker_set_style interface~vkf_compile_node vkf_compile_node proc~replace->interface~vkf_compile_node proc~replace->interface~vkf_node_add_child proc~replace->interface~vkf_node_delete interface~vkf_node_remove_child vkf_node_remove_child proc~replace->interface~vkf_node_remove_child proc~replace->proc~check_status interface~vkf_mesh_array vkf_mesh_array proc~surface_node->interface~vkf_mesh_array interface~vkf_mesh_create vkf_mesh_create proc~surface_node->interface~vkf_mesh_create interface~vkf_mesh_set_bound vkf_mesh_set_bound proc~surface_node->interface~vkf_mesh_set_bound proc~surface_node->proc~check_status proc~mesh_arrays mesh_arrays proc~surface_node->proc~mesh_arrays proc~cross cross proc~unit_normal->proc~cross proc~vertex_normals->proc~cross interface~vkf_line_points vkf_line_points proc~line_set_points->interface~vkf_line_points interface~vkf_line_points_changed vkf_line_points_changed proc~line_set_points->interface~vkf_line_points_changed interface~vkf_line_style vkf_line_style proc~line_set_segments->interface~vkf_line_style interface~vkf_line_style_changed vkf_line_style_changed proc~line_set_segments->interface~vkf_line_style_changed proc~line_set_style->interface~vkf_line_style proc~line_set_style->interface~vkf_line_style_changed proc~marker_set_style->interface~vkf_line_style proc~marker_set_style->interface~vkf_line_style_changed proc~mesh_arrays->interface~vkf_mesh_array

Source Code

    subroutine set_triangles(self, vertices, triangles)
        class(Polyhedron), intent(inout) :: self
        real(wp), intent(in) :: vertices(:,:)               !! (3, n), frame coordinates
        integer, intent(in) :: triangles(:,:)               !! (3, m)
        self%v = vertices
        self%tri = triangles
        self%edge = unique_edges(reshape([triangles(1:2, :), triangles(2:3, :), triangles(3:1:-2, :)], &
                                         [2, 3 * size(triangles, 2)]), size(vertices, 2))
        call drop_colors(self)
        call make_polyhedron(self)
    end subroutine set_triangles