Interior direction changes summed over all edges (collinear interior points do not count as bends).
Bounding box of all node boxes; 0-area collapses to width/height 0.
Proper pairwise edge-segment crossings (shared endpoints excluded).
Sum of polyline lengths over all edges.
bounds.width / bounds.height; 1 when height is 0 (degenerate).