/* GeoLab Menu (algorithms) file */

/* This menu file is searched for in the	 */
/* following directories (in this order):	 */
/*						 */
/* 1. The current directory;			 */
/* 2. The user's home directory;		 */
/* 3. Where the environment variable GEOLAB_MENU */
/*    points to.				 */
/*						 */
/* If not found, GeoLab is started with an	 */
/* empty algorithm's menu.			 */

/* The full path-name for shared libraries is	 */
/* not necessary. The GEOLAB_ALGORITHMS environ- */
/* ment can be used to shorten the menu.	 */

TITLE "Algorithms"

MENU "External Input Tools"
	"Draw Polygon"			"draw_polygon"	"draw_polygon.so"
	"Draw String"			"draw_string"	"draw_string.so"
	"Draw Arrow"			"draw_arrow"	"draw_arrow.so"
	"Event catcher (sample)"	"EO"		"EO.so"
END

MENU "External Function Tools"
	"Rotate Objects"		"rotate"	"rotate.so"
	"PSPM in one dimension"		"PSPM1"		"PSPM.so"
	"PSPM in two dimensions"	"PSPM2"		"PSPM.so"
	"Event catcher (sample)"	"EF"		"EF.so"
END

MENU "Input Generators"
  MENU "Random Polygons"
	"Simple"		"simple_polygon"	"random_polygon.so"
	"Convex"		"convex_polygon"	"random_polygon.so"
	"StarShaped"		"starshaped_polygon"	"random_polygon.so"
	"Generic"		"generic_polygon"	"random_polygon.so"
  END
END

MENU "Extract Components"
  MENU "Works for Polygons only"
	"Get vertices"		"get_points"		"Polygon_test.so"
	"Get edges"		"get_segments"		"Polygon_test.so"
  END
END

MENU "Points"
  MENU "Convex Hulls"
	"Jarvis' March"			"jarvis_march"		"ConvexHull.so"
	"Graham's Scan"			"graham_scan"		"ConvexHull.so"
	"Layers (using Jarvis)"		"convex_layers_jarvis"	"ConvexHull.so"
	"Layers (using Graham)"		"convex_layers_graham"	"ConvexHull.so"
  END
  MENU "Proximity Problems"
	"Diameter (brute force)"			"diameter_set_of_points_bf" "Diameter.so"
	"Diameter (Preparata & Shamos)"			"diameter_set_of_points" "Diameter.so"
	"Closest Pair (brute force)"			"closest_pair_bf"	 "Proximity.so"
	"Closest Pair (Divide & Conquer)"		"closest_pair_dc"	 "Proximity.so"
	"Closest Pair (using Voronoi Diagram)"		"closest_pair_vd"	 "Proximity.so"
	"All Nearest Neighbors (brute force)"		"all_nn_bf"		 "Proximity.so"
	"All Nearest Neighbors (using Voronoi Diagram)"	"all_nn_vd"		 "Proximity.so"
	"Euclidean Minimum Spanning Tree"		"emst"			 "MinSpanningTree.so"
  END
  MENU "Gaps and Covers"
	"Smallest Enclosing Circle (Shamos)"	"smallest_enclosing_circle_shamos"	"GapsCovers.so" 
	"Smallest Enclosing Circle (Toussaint)"	"smallest_enclosing_circle_toussaint"	"GapsCovers.so" 
	"Largest Empty Circle (P & S)"		"largest_empty_circle"			"GapsCovers.so" 
  END
  MENU "Triangulations"
	"Delaunay Triangulation"		"DelaunayTriangulation"	"voronoi.so"
	"Farthest-Neighbor Triangulation"	"FNTriangulation"	"voronoi.so"
  END
  MENU "Voronoi Diagrams"
	"Voronoi Diagram"			"VoronoiDiagram"	"voronoi.so"
	"Farthest-Neighbor Voronoi Diagram"	"FNVoronoiDiagram"	"voronoi.so"
  END
END

MENU "Segments"
/*
	"Point In?"				"point_in"			"Segment2D_test.so"
	"Two Segments Intersect?"		"intersect"			"Segment2D_test.so"
	"Intersection between Two"		"intersection"			"Segment2D_test.so"
*/
	"Intersections Counting (brute force)"	"all_intersections_counting_bf"	"Intersections.so"
	"Intersections Report (brute force)"	"all_intersections_report_bf"	"Intersections.so"
END

MENU "Rays"
/*	"Two Rays Intersect?"			"intersect_rays"		"Ray2D_test.so"
	"Intersection between Two"		"intersection_rays"		"Ray2D_test.so"
*/
	"Intersections Counting (brute force)"	"all_intersections_rays_counting_bf"	"Intersections.so"
	"Intersections Report (brute force)"	"all_intersections_rays_report_bf"	"Intersections.so"
END

MENU "Lines"
/*
	"Two Lines Intersect?"			"intersect_lines"		"Line2D_test.so"
	"Intersection between Two"		"intersection_lines"		"Line2D_test.so"
*/
	"Intersections Counting (brute force)"	"all_intersections_lines_counting_bf"	"Intersections.so"
	"Intersections Report (brute force)"	"all_intersections_lines_report_bf"	"Intersections.so"
END

/*
MENU "Circles"
	"Given Three Points"	"three_points_circle"	"three_points_circle.so"
END
*/

MENU "Polygons"
	"Test and Set Simple"	"test_and_set_simple"	"Polygon_test.so"
	"Test and Set Convex"	"test_and_set_convex"	"Polygon_test.so"
	"Winding Number"	"winding_number"	"MiscClasses.so"
	"Kernel"		"kernel_simple_polygon"	"Kernel.so"
	"Antipodal Pairs"	"antipodal_pairs"	"Diameter.so"
  MENU "Convex Hulls"
	"Generic Polygon"		"generic_polygon_hull"		"ConvexHull.so"
	"Simple Polygon"		"simple_polygon_hull"		"ConvexHull.so"
	"Starshaped Polygon"		"starshaped_polygon_hull"	"ConvexHull.so"
  END
  MENU "Diameter"
	"Generic Polygon"	"diameter_generic_polygon"	"Diameter.so"
	"Simple Polygon"	"diameter_simple_polygon"	"Diameter.so"
	"StarShaped Polygon"	"diameter_star_shaped_polygon"	"Diameter.so"
	"Convex Polygon"	"diameter_convex_polygon"	"Diameter.so"
  END
END

/*
MENU "External Classes (examples)"
	"Message"	"message"	"ExternalClasses.so"
	"Boolean"	"boolean"	"ExternalClasses.so"
	"Integer"	"integer"	"ExternalClasses.so"
	"Real"		"real"		"ExternalClasses.so"
END
*/
