{'fraction_non_alphanumeric': 0.014230271668822769, 'fraction_numerical': 0.0, 'mean_word_length': 5.582978723404255, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Geometry Freedom in Geometric Computation—Towards Higher-Order Genericity through Purely Combinatorial Geometric Algorithms

Any geometric algorithm can be dissected into combinatorial parts and geometric parts. The two parts intertwine in both the description and the implementation of the algorithm. We consider the benefits of relaxing this tight coupling. Coordinate freedom is widely considered the most important principle in designing and implementing geometric systems. By ensuring that client code not manipulate individual coordinates and by developing two foundations for homogeneous and Cartesian coordinates, switching from one to the other can be easily performed after the system has been completed. We take another step and show that geometry freedom is possible. By removing the geometric classes from the implementation of a geometric algorithm, the algorithm becomes purely combinatorial. An arbitrary Euclidean or spherical geometry is then used as a parameter to the combinatorial algorithm to produce a geometric system in that geometry. Geometric freedom is helpful, for instance, when a geographic input is no longer constrained to a small area of Earth and one wishes to use spherical instead of Euclidean geometry. We apply geometry freedom to three classical problems. For the first two problems—convex hulls and Delaunay triangulations—the algorithms become generic with respect to the geometry. For the third—binary space partitioning—the algorithm becomes generic with respect to both the geometry and the dimension.