Correa 1
C++ library with Python bindings to analyse the shape of simple closed curves in R^2
Loading...
Searching...
No Matches
Comp2DShapes.cpp File Reference

compare 2 polygons with automatic focal points More...

#include "Comp2DShapes.h"

Functions

int main (int argc, char **argv)
 Main function for comparing 2D shapes with automatic focal point computation.
 
bool parse_args (int argc, char **argv, std::string *file1, std::string *file2, int *disttype, double *microns_per_pixel1, double *microns_per_pixel2, bool *verbose)
 Parse command-line arguments for Comp2DShapes.
 

Detailed Description

compare 2 polygons with automatic focal points

Author
Patrice Koehl
Yossi Bokor Bleile
Date
December 2025
Version
1.1

Function Documentation

◆ main()

int main ( int argc,
char ** argv )

Main function for comparing 2D shapes with automatic focal point computation.

This program compares two 2D polygons using various distance metrics. Unlike Comp2DShapesFocal, this version automatically computes focal points (centroids) for each polygon and centers them before comparison. The polygons are also scaled to a normalized range for comparison.

The program supports multiple distance metrics:

  • Fréchet distance: Measures curve similarity (minimum leash length)
  • Ellipse-based: Compares fitted ellipse properties (inscribed, inscribing, least-squares)
  • Curvature-based: Willmore energy and Wasserstein distance on curvature distributions
  • Persistence diagrams: Topological comparison using persistent homology
Parameters
argcNumber of command-line arguments
argvArray of command-line argument strings
Returns
0 on success, 1 on failure
See also
parse_args() for command-line argument details

◆ parse_args()

bool parse_args ( int argc,
char ** argv,
std::string * file1,
std::string * file2,
int * disttype,
double * microns_per_pixel1,
double * microns_per_pixel2,
bool * verbose )

Parse command-line arguments for Comp2DShapes.

Parses command-line arguments for the Comp2DShapes program, extracting input files, distance type, microns per pixel settings, and verbose flag. This version automatically computes focal points (unlike Comp2DShapesFocal).

Parameters
argcArgument count from main()
argvArgument vector from main()
[out]file1Path to first input polygon file (set by -i1 flag)
[out]file2Path to second input polygon file (set by -i2 flag)
[out]disttypeDistance type flag (set by -d flag):
  • 0: Fréchet distance - measures similarity between curves, representing the minimum leash length needed for a person walking a dog along each curve
  • 1: Ellipse-based distances - compares aspect ratios of inscribed, inscribing, and least-squares fitted ellipses
  • 2: Curvature-based distances - includes Willmore energy (bending energy) and Wasserstein distance between curvature distributions
  • 3: 2-Wasserstein distance between persistence diagrams - topological shape descriptor based on persistent homology
  • 4: All distances - computes all of the above metrics
[out]microns_per_pixel1Microns per pixel conversion for polygon 1 (set by -mpp1 or -mpp flag, default: 1.0)
[out]microns_per_pixel2Microns per pixel conversion for polygon 2 (set by -mpp2 or -mpp flag, default: 1.0)
[out]verboseEnable verbose output (set by -v or –verbose flag, default: false)
Returns
true if arguments were parsed successfully, false otherwise