subdivide#
Functions
|
Subdivide an arc by inserting a new 2-valent vertex. |
|
Subdivide all arcs incident to |
|
Subdivide an endpoint by inserting a new 2-valent vertex on its incident arc. |
|
Insert a new crossing on the arc incident to |
- subdivide_arc(k, arc, new_node_name=None, **attr)#
Subdivide an arc by inserting a new 2-valent vertex.
If
arcis not a set (e.g., tuple/list), the new node is inserted between the two endpoints given. Order does not matter.- Parameters:
k (PlanarDiagram) – Planar diagram to modify (in place).
arc – Two endpoints defining the arc to subdivide. Usually a
frozensetof two endpoints, but tuples/lists also work. Each endpoint can be a pair(node, position)or anEndpoint.new_node_name (str | None) – Optional explicit name for the new node.
**attr – Extra attributes to apply to the newly created endpoints.
- Returns:
The name of the newly created node.
- Return type:
str
- subdivide_endpoint(k, endpoint, **attr)#
Subdivide an endpoint by inserting a new 2-valent vertex on its incident arc.
The created node will have the given
endpointat position 0, and its twin at position 1 (via a call tosubdivide_arc()).- Parameters:
k (PlanarDiagram) – Planar diagram to modify (in place).
endpoint (Endpoint | tuple) – An
Endpointinstance or a pair(node, position).**attr – Extra attributes to apply to the newly created endpoints.
- Returns:
The name of the newly created node.
- Return type:
str
- subdivide_endpoint_by_crossing(k, endpoint, crossing_position, **attr)#
Insert a new crossing on the arc incident to
endpoint.The new crossing connects at
crossing_positionand its opposite position (+2 mod 4) to the twin. This is a specialized subdivision producing a 4-valent crossing instead of a 2-valent vertex.- Parameters:
k (PlanarDiagram) – Planar diagram to modify (in place).
endpoint (Endpoint | tuple) – An
Endpointinstance or a pair(node, position).crossing_position (int) – Position (0..3), normalized mod 4, where the endpoint is attached.
**attr – Attributes for the new crossing.
- Returns:
The name of the newly created crossing node.
- Return type:
str
- subdivide_arcs_around_node(k, node)#
Subdivide all arcs incident to
node(in place).For each incident endpoint at
node, insert a new 2-valent vertex on that arc.- Parameters:
k (PlanarDiagram) – Planar diagram to modify (in place).
node – Node label whose incident arcs will be subdivided.
- Returns:
A list of newly created node names, one per incident arc.
- Return type:
list[str]