The standard library Geometry2d api the basic geometry types and operations.
The Geometry2d api is implemented by the src/lib/std/2d/geometry2d.pkg package.
The Geometry2d api source code is in src/lib/std/2d/geometry2d.api.
The above information is manually maintained and may contain errors.
api { Point = {col:Int, row:Int}; Line = (Point , Point); Size = {high:Int, wide:Int}; Box = {col:Int, high:Int, row:Int, wide:Int}; Arc = {col:Int, fill_angle:Float, high:Int, row:Int, start_angle:Float, wide:Int}; Arc64 = {angle1:Int, angle2:Int, col:Int, high:Int, row:Int, wide:Int}; Window_Site = {border_thickness:Int, size:Size, upperleft:Point}; package point : api { zero : Point; row : Point -> Int; col : Point -> Int; scale : (Point , Int) -> Point; add : (Point , Point) -> Point; subtract : (Point , Point) -> Point; add_size : (Point , Size) -> Point; clip : (Point , Size) -> Point; ne : (Point , Point) -> Bool; eq : (Point , Point) -> Bool; lt : (Point , Point) -> Bool; le : (Point , Point) -> Bool; gt : (Point , Point) -> Bool; ge : (Point , Point) -> Bool; in_box : (Point , Box) -> Bool; compare_xy : (Point , Point) -> Order; mean : List(Point ) -> Point;};; package size : api { add : (Size , Size) -> Size; subtract : (Size , Size) -> Size; scale : (Size , Int) -> Size; eq : (Size , Size) -> Bool;};; package box : api { zero : Box; ne : (Box , Box) -> Bool; eq : (Box , Box) -> Bool; make : (Point , Size) -> Box; upperleft : Box -> Point; lowerright : Box -> Point; lowerright1 : Box -> Point; size : Box -> Size; area : Box -> Int; midpoint : Box -> Point; to_points : Box -> List(Point ); box_corners : Box -> {lower_left:Point, lower_right:Point, upper_left:Point, upper_right:Point}; upperleft_and_size : Box -> (Point , Size); clip_point : (Box , Point) -> Point; translate : (Box , Point) -> Box; rtranslate : (Box , Point) -> Box; intersect : (Box , Box) -> Bool; intersection : (Box , Box) -> Null_Or(Box ); union : (Box , Box) -> Box; xor : (Box , Box) -> List(Box ); point_in_box : (Point , Box) -> Bool; box_a_in_box_b : {a:Box, b:Box} -> Bool; point_on_box_perimeter : (Point , Box) -> Bool; make_nested_box : (Box , Int) -> Box; intersect_box_with_boxes : (Box , List(Box )) -> List(Box ); intersect_boxes_with_boxes : (List(Box ) , List(Box )) -> List(Box ); quadsect_box : (Box , Point) -> List(Box ); quadsect_boxes : (List(Box ) , Point) -> List(Box ); subtract_box_b_from_box_a : {a:Box, b:Box} -> List(Box ); subtract_boxes_b_from_boxes_a : {a:List(Box ), b:List(Box )} -> List(Box );};; package line : api { intersection : (Line , Line) -> Null_Or(Point ); rotate_90_degrees_counterclockwise : Line -> Line;};; bounding_box : List(Point ) -> Box; convex_hull : List(Point ) -> List(Point ); point_in_polygon : (Point , List(Point )) -> Bool;};