PreviousUpNext

14.4.22  Geometry2d

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;};


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext