geometry
A collection of geometry-related functions for circles, spheres, boxes, polygons, and rectangle utilities. Some functionality is implemented in C and exposed here.
rect_intersection(a, b) function
Return the intersection of two rectangles. The result may be empty if no intersection.
a: The first rectangle as {x, y, w, h}.
b: The second rectangle as {x, y, w, h}.
Returns: A rectangle that is the intersection of the two. May have zero width/height if no overlap.
rect_intersects(a, b) function
a: Rectangle {x,y,w,h}.
b: Rectangle {x,y,w,h}.
Returns: A boolean indicating whether the two rectangles overlap.
rect_expand(a, b) function
Merge or combine two rectangles, returning their bounding rectangle.
a: Rectangle {x,y,w,h}.
b: Rectangle {x,y,w,h}.
Returns: A new rectangle that covers the bounds of both input rectangles.
rect_inside(inner, outer) function
inner: A rectangle to test.
outer: A rectangle that may contain 'inner'.
Returns: True if 'inner' is completely inside 'outer', otherwise false.
rect_random(rect) function
rect: A rectangle {x,y,w,h}.
Returns: A random point within the rectangle (uniform distribution).
cwh2rect(center, wh) function
Helper: convert a center point and width/height vector to a rect object.
center: A 2D point [cx, cy].
wh: A 2D size [width, height].
Returns: A rectangle {x, y, w, h} with x,y set to center and w,h set to the given size.
rect_point_inside(rect, point) function
rect: A rectangle {x,y,w,h}.
point: A 2D point [px, py].
Returns: True if the point lies inside the rectangle, otherwise false.
rect_pos(rect) function
rect: A rectangle {x,y,w,h}.
Returns: A 2D vector [x,y] giving the rectangle's position.
rect_move(rect, offset) function
rect: A rectangle {x,y,w,h}.
offset: A 2D vector to add to the rectangle's position.
Returns: A new rectangle with updated x,y offset.
box(w, h) function
Construct a box centered at the origin with the given width and height. This overrides the box object above.
w: The width of the box.
h: The height of the box.
Returns: An array of four 2D points representing the corners of a rectangle centered at [0,0].
sphere object
Sphere-related geometry functions: - volume(r): Return the volume of a sphere with radius r. - random(r, theta, phi): Return a random point on or inside a sphere.
circle object
Circle-related geometry functions: - area(r): Return the area of a circle with radius r. - random(r, theta): Return a random 2D point on a circle; uses sphere.random internally and extracts x,z.
ngon(radius, n) function
Generates a regular n-gon by calling geometry.arc with full 360 degrees.
radius: The radius of the n-gon from center to each vertex.
n: Number of sides/vertices.
Returns: An array of 2D points forming a regular n-gon.
arc(radius, angle, n, start) function
Generate an arc (or partial circle) of n points, each angle spread equally over 'angle' degrees from 'start'.
radius: The distance from center to the arc points.
angle: The total angle (in degrees) over which points are generated, capped at 360.
n: Number of segments (if <=1, empty array is returned).
start: Starting angle (in degrees), default 0.
Returns: An array of 2D points along the arc.
corners2points(ll, ur) function
Similar to box.points, but calculates differently.
ll: Lower-left 2D coordinate.
ur: Upper-right 2D coordinate (relative offset in x,y).
Returns: A four-point array of corners [ll, lower-right, upper-right, upper-left].
sortpointsccw(points) function
Sort an array of points in CCW order based on their angles from the centroid.
points: An array of 2D points.
Returns: A new array of the same points, sorted counterclockwise around their centroid.
points2cm(points) function
points: An array of 2D points.
Returns: The centroid (average x,y) of the given points.