![]() |
PK_LOOP_ask_type |
PK_ERROR_code_t PK_LOOP_ask_type ( --- received arguments --- PK_LOOP_t loop, --- the loop --- returned arguments --- PK_LOOP_type_t *const loop_type --- the type of the loop ) This function classifies the given loop. The 'loop_type' is one of: PK_LOOP_type_vertex_c loop is just a vertex without any edges PK_LOOP_type_wire_c loop has no interior, e.g. from a wire body PK_LOOP_type_outer_c simple peripheral loop PK_LOOP_type_inner_c loop is a simple hole PK_LOOP_type_winding_c winding loop on a periodic surface e.g. a circle on a cylinder or doughnut PK_LOOP_type_inner_sing_c loop is a hole around the surface singularity e.g. chopping the top off a cone PK_LOOP_type_likely_outer_c an apparently peripheral loop on a doubly closed surface PK_LOOP_type_likely_inner_c an apparent hole in a doubly closed surface PK_LOOP_type_unclear_c a loop dividing a periodic degenerate surface in two (contains just one pole), or in a face with facet geometry PK_LOOP_type_error_c invalid loop or algorithm failure The range of types returned depends on the behaviour of the underlying surface of the face to which the loop belongs. PK_LOOP_type_vertex_c and PK_LOOP_type_wire_c are generic return values that cover simple degenerate special cases; on solid and sheet bodies these loop types correspond to edges and vertices scribed inside a face. If the surface is a mesh, PK_LOOP_type_unclear_c is returned. For planes and other non-periodic surfaces, all 2D loops are either PK_LOOP_type_outer_c or PK_LOOP_type_inner_c. Each face has one outer peripheral loop (PK_LOOP_type_outer_c) and any number of holes (PK_LOOP_type_inner_c). For cylindrical topology, i.e. surfaces that are periodic in one parameter only, closed loops that wind once around the periodic parameter space are of type PK_LOOP_type_winding_c. To define the periphery of a face in a body that is periodic in one parameter, you need either: * A matched pair of PK_LOOP_type_winding_c loops * A PK_LOOP_type_outer_c loop A surface that is periodic in one parameter may contain any number of PK_LOOP_type_inner_c. Surfaces such as cones, that are periodic in one parameter and degenerate at one end, can be treated as if they were flattened into a plane (with the degeneracy in the centre of the plane). Thus, a cone contains just one PK_LOOP_type_outer_c. Conversely, such a surface can also be treated as a tapered cylinder if it has a winding loop that completely surrounds the degeneracy; such a loop is of type PK_LOOP_type_inner_sing_c. Doubly-periodic surfaces, such as doughnut torii, can have closed loops that wind one or more times in either parameter; these are of type PK_LOOP_type_winding_c. Any other loops form either the periphery of open regions, or holes in the whole closed surface. * Those that could contain a winding loop are PK_LOOP_type_likely_inner_c * Those that do not wrap around completely in parameter space are PK_LOOP_type_likely_outer_c. Closed loops in spherical topology (closed in one parameter and degenerate in the other) split the whole surface in two. There are three types of closed loop on a spherical surface: * A PK_LOOP_type_likely_outer_c loop contains neither pole * A PK_LOOP_type_likely_inner_c loop surrounds both poles. * A PK_LOOP_type_unclear_c loop is used for closed loops which surround only one pole, dividing the surface in two. These types of loop apply to spherical topology in which the degeneracy is either smooth or sharp in 3D. Note that the doubly periodic topologies can support arbitrarily complex loops that are not intuitively holes or peripheries; but PK_LOOP_type_likely_outer_c and PK_LOOP_type_likely_inner_c are meaningful for simple faces.Generated on: Fri, 04 Oct 2024 12:20:15 GMT