This is the cl-geometry Reference Manual, version 0.0.3, generated automatically by Declt version 4.0 beta 2 "William Riker" on Sun Dec 15 04:58:10 2024 GMT+0.
cl-geometry/cl-geometry.asd
cl-geometry/package.lisp
cl-geometry/trivial-geometry.lisp
cl-geometry/basic-point.lisp
cl-geometry/bounding-box.lisp
cl-geometry/basic-line.lisp
cl-geometry/representations.lisp
cl-geometry/polygon-class.lisp
cl-geometry/basic-polygon.lisp
cl-geometry/triangulation.lisp
cl-geometry/decomposition.lisp
cl-geometry/heap.lisp
cl-geometry/bentley-ottmann.lisp
cl-geometry/trapezoidation.lisp
cl-geometry/polygon.lisp
cl-geometry/polygon-binary.lisp
The main system appears first, followed by any subsystem dependency.
cl-geometry
Library for two dimensional geometry.
Jakub Higersberger <ramarren@gmail.com>
BSD-style
0.0.3
iterate
(system).
trees
(system).
package.lisp
(file).
trivial-geometry.lisp
(file).
basic-point.lisp
(file).
bounding-box.lisp
(file).
basic-line.lisp
(file).
representations.lisp
(file).
polygon-class.lisp
(file).
basic-polygon.lisp
(file).
triangulation.lisp
(file).
decomposition.lisp
(file).
heap.lisp
(file).
bentley-ottmann.lisp
(file).
trapezoidation.lisp
(file).
polygon.lisp
(file).
polygon-binary.lisp
(file).
Files are sorted by type and then listed depth-first from the systems components trees.
cl-geometry/cl-geometry.asd
cl-geometry/package.lisp
cl-geometry/trivial-geometry.lisp
cl-geometry/basic-point.lisp
cl-geometry/bounding-box.lisp
cl-geometry/basic-line.lisp
cl-geometry/representations.lisp
cl-geometry/polygon-class.lisp
cl-geometry/basic-polygon.lisp
cl-geometry/triangulation.lisp
cl-geometry/decomposition.lisp
cl-geometry/heap.lisp
cl-geometry/bentley-ottmann.lisp
cl-geometry/trapezoidation.lisp
cl-geometry/polygon.lisp
cl-geometry/polygon-binary.lisp
cl-geometry/package.lisp
heap.lisp
(file).
cl-geometry
(system).
cl-geometry/trivial-geometry.lisp
package.lisp
(file).
cl-geometry
(system).
area-circle
(function).
area-ellipse-axes
(function).
area-rectangle
(function).
area-square
(function).
area-triangle-edge-edge-angle
(function).
area-triangle-edges
(function).
area-triangle-edges-small-angles
(function).
area-triangle-vertices
(function).
circumference-circle
(function).
circumference-ellipse-axes
(function).
distance
(function).
perimeter-rectangle
(function).
perimeter-square
(function).
perimeter-triangle
(function).
cl-geometry/basic-point.lisp
package.lisp
(file).
cl-geometry
(system).
colinear-p
(function).
coords-to-points
(function).
point
(class).
point-equal-p
(function).
print-object
(method).
x
(reader method).
y
(reader method).
between-p
(function).
intersect-p
(function).
intersect-proper-p
(function).
left-on-p
(function).
left-p
(function).
make-point
(function).
point-sort-fun
(function).
xor
(function).
cl-geometry/bounding-box.lisp
package.lisp
(file).
cl-geometry
(system).
print-object
(method).
bounding-box
(class).
bounding-boxes-intersect-p
(function).
construct-bounding-box
(generic function).
intersect-boxes
(function).
point-in-box-exclusive
(function).
point-in-box-inclusive
(function).
x-max
(reader method).
(setf x-max)
(writer method).
x-min
(reader method).
(setf x-min)
(writer method).
y-max
(reader method).
(setf y-max)
(writer method).
y-min
(reader method).
(setf y-min)
(writer method).
cl-geometry/basic-line.lisp
bounding-box.lisp
(file).
package.lisp
(file).
cl-geometry
(system).
a
(reader method).
(setf a)
(writer method).
b
(reader method).
(setf b)
(writer method).
c
(reader method).
(setf c)
(writer method).
end
(reader method).
(setf end)
(writer method).
line
(class).
line-from-segment
(function).
line-segment
(class).
line-segment-length
(function).
line-segments-intersection-point
(function).
line-segments-intersection-segment
(function).
line-x-at-y
(function).
line-y-at-x
(function).
lines-equal-p
(function).
lines-intersection-point
(function).
lines-parralel-p
(function).
print-object
(method).
print-object
(method).
start
(reader method).
(setf start)
(writer method).
construct-bounding-box
(method).
copy-line-segment
(function).
make-line-segment
(function).
point-line-position
(function).
cl-geometry/representations.lisp
package.lisp
(file).
basic-point.lisp
(file).
basic-line.lisp
(file).
cl-geometry
(system).
print-object
(method).
x
(method).
y
(method).
collect-ring-nodes
(function).
double-linked-ring-from-point-list
(function).
edge-list-from-point-list
(function).
next-node
(reader method).
(setf next-node)
(writer method).
point-list-from-ring
(function).
poly-ring-node
(class).
prev-node
(reader method).
(setf prev-node)
(writer method).
ring-to-list-of-edges
(function).
val
(reader method).
(setf val)
(writer method).
cl-geometry/polygon-class.lisp
package.lisp
(file).
representations.lisp
(file).
cl-geometry
(system).
edge-list
(reader method).
make-polygon-from-coords
(function).
make-polygon-from-point-list
(function).
make-polygon-from-point-ring
(function).
point-list
(reader method).
polygon
(class).
print-object
(method).
point-ring
(reader method).
cl-geometry/basic-polygon.lisp
basic-point.lisp
(file).
polygon-class.lisp
(file).
basic-line.lisp
(file).
cl-geometry
(system).
area-simple-polygon
(function).
frustrated-polygon-p
(function).
point-in-polygon-crossing-p
(function).
point-in-polygon-winding-number
(function).
point-in-polygon-winding-p
(function).
polygon-orientation
(function).
simple-polygon-p
(function).
construct-bounding-box
(method).
filter-ray-intersection
(function).
notany-symmetric-test
(function).
cl-geometry/triangulation.lisp
basic-line.lisp
(file).
trivial-geometry.lisp
(file).
basic-polygon.lisp
(file).
representations.lisp
(file).
polygon-class.lisp
(file).
cl-geometry
(system).
triangulate
(function).
diagonal-p
(function).
ear
(reader method).
(setf ear)
(writer method).
ear-init
(function).
ear-ring-node
(class).
in-cone-p
(function).
possible-diagonal-p
(function).
remove-ear
(function).
cl-geometry/decomposition.lisp
basic-line.lisp
(file).
basic-polygon.lisp
(file).
triangulation.lisp
(file).
representations.lisp
(file).
polygon-class.lisp
(file).
cl-geometry
(system).
decompose-complex-polygon-nondisjoint
(function).
find-intersection
(function).
cl-geometry/heap.lisp
cl-geometry
(system).
heap-empty
(function).
heap-peek
(function).
heapify
(function).
nheap-extract
(function).
nheap-insert
(function).
heap-lchild
(function).
heap-parent
(function).
heap-rchild
(function).
cl-geometry/bentley-ottmann.lisp
heap.lisp
(file).
representations.lisp
(file).
polygon-class.lisp
(file).
cl-geometry
(system).
bentley-ottmann
(function).
initialize-instance
(method).
shamos-hoey
(function).
(setf x)
(generic function).
(setf y)
(generic function).
add-if-intersection
(function).
check-node-integrity
(function).
check-tree-integrity
(function).
create-initial-event-list
(function).
delete-edge
(function).
direction
(reader method).
(setf direction)
(writer method).
edge
(reader method).
(setf edge)
(writer method).
edge-tree
(reader method).
(setf edge-tree)
(writer method).
edge1
(reader method).
(setf edge1)
(writer method).
edge2
(reader method).
(setf edge2)
(writer method).
event-endpoint
(class).
event-intersection
(class).
insert-edge
(function).
left-endpoint
(function).
move-sweep-line
(function).
order-line-segments-at-point
(function).
recurse-bentley-ottmann
(function).
recurse-shamos-hoey
(function).
right-endpoint
(function).
sweep-line
(class).
taint
(reader method).
(setf taint)
(writer method).
taint-segment
(class).
cl-geometry/trapezoidation.lisp
bentley-ottmann.lisp
(file).
polygon-class.lisp
(file).
cl-geometry
(system).
collapse-trapezoid
(function).
orient-edge-right
(function).
split-trapezoid
(function).
trapezoidize-edges
(function).
vertical-edge-p
(function).
cl-geometry/polygon.lisp
basic-polygon.lisp
(file).
polygon-class.lisp
(file).
triangulation.lisp
(file).
decomposition.lisp
(file).
trapezoidation.lisp
(file).
cl-geometry
(system).
decompose-complex-polygon-bentley-ottmann
(function).
decompose-complex-polygon-triangles
(function).
simple-polygon-sh-p
(function).
trapezoids-to-triangles
(function).
triangle-center-point
(function).
cl-geometry/polygon-binary.lisp
polygon.lisp
(file).
polygon-class.lisp
(file).
cl-geometry
(system).
polygon-difference
(function).
polygon-difference-nary
(function).
polygon-intersection
(function).
polygon-union
(function).
merge-line-segment-into
(function).
polygon-binary
(function).
recurse-sanitize-edges
(function).
sanitize-edges
(function).
Packages are listed by definition order.
2d-geometry
geometry
cl-geometry
common-lisp
.
iterate
.
ramarren-utils
.
a
(generic reader).
(setf a)
(generic writer).
area-circle
(function).
area-ellipse-axes
(function).
area-rectangle
(function).
area-simple-polygon
(function).
area-square
(function).
area-triangle-edge-edge-angle
(function).
area-triangle-edges
(function).
area-triangle-edges-small-angles
(function).
area-triangle-vertices
(function).
b
(generic reader).
(setf b)
(generic writer).
bentley-ottmann
(function).
c
(generic reader).
(setf c)
(generic writer).
circumference-circle
(function).
circumference-ellipse-axes
(function).
colinear-p
(function).
coords-to-points
(function).
decompose-complex-polygon-bentley-ottmann
(function).
decompose-complex-polygon-nondisjoint
(function).
decompose-complex-polygon-triangles
(function).
distance
(function).
edge-list
(generic reader).
end
(generic reader).
(setf end)
(generic writer).
frustrated-polygon-p
(function).
line
(class).
line-from-segment
(function).
line-segment
(class).
line-segment-length
(function).
line-segments-intersection-point
(function).
line-segments-intersection-segment
(function).
line-x-at-y
(function).
line-y-at-x
(function).
lines-equal-p
(function).
lines-intersection-point
(function).
lines-parralel-p
(function).
make-polygon-from-coords
(function).
make-polygon-from-point-list
(function).
make-polygon-from-point-ring
(function).
perimeter-rectangle
(function).
perimeter-square
(function).
perimeter-triangle
(function).
point
(class).
point-equal-p
(function).
point-in-polygon-crossing-p
(function).
point-in-polygon-winding-number
(function).
point-in-polygon-winding-p
(function).
point-list
(generic reader).
polygon
(class).
polygon-difference
(function).
polygon-difference-nary
(function).
polygon-intersection
(function).
polygon-orientation
(function).
polygon-union
(function).
shamos-hoey
(function).
simple-polygon-p
(function).
simple-polygon-sh-p
(function).
start
(generic reader).
(setf start)
(generic writer).
triangulate
(function).
x
(generic function).
(setf x)
(generic function).
y
(generic function).
(setf y)
(generic function).
add-if-intersection
(function).
between-p
(function).
bounding-box
(class).
bounding-boxes-intersect-p
(function).
check-node-integrity
(function).
check-tree-integrity
(function).
collapse-trapezoid
(function).
collect-ring-nodes
(function).
construct-bounding-box
(generic function).
copy-line-segment
(function).
create-initial-event-list
(function).
delete-edge
(function).
diagonal-p
(function).
direction
(generic reader).
(setf direction)
(generic writer).
double-linked-ring-from-point-list
(function).
ear
(generic reader).
(setf ear)
(generic writer).
ear-init
(function).
ear-ring-node
(class).
edge
(generic reader).
(setf edge)
(generic writer).
edge-list-from-point-list
(function).
edge-tree
(generic reader).
(setf edge-tree)
(generic writer).
edge1
(generic reader).
(setf edge1)
(generic writer).
edge2
(generic reader).
(setf edge2)
(generic writer).
event-endpoint
(class).
event-intersection
(class).
filter-ray-intersection
(function).
find-intersection
(function).
in-cone-p
(function).
insert-edge
(function).
intersect-boxes
(function).
intersect-p
(function).
intersect-proper-p
(function).
left-endpoint
(function).
left-on-p
(function).
left-p
(function).
make-line-segment
(function).
make-point
(function).
merge-line-segment-into
(function).
move-sweep-line
(function).
next-node
(generic reader).
(setf next-node)
(generic writer).
notany-symmetric-test
(function).
order-line-segments-at-point
(function).
orient-edge-right
(function).
point-in-box-exclusive
(function).
point-in-box-inclusive
(function).
point-line-position
(function).
point-list-from-ring
(function).
point-ring
(generic reader).
point-sort-fun
(function).
poly-ring-node
(class).
polygon-binary
(function).
possible-diagonal-p
(function).
prev-node
(generic reader).
(setf prev-node)
(generic writer).
recurse-bentley-ottmann
(function).
recurse-sanitize-edges
(function).
recurse-shamos-hoey
(function).
remove-ear
(function).
right-endpoint
(function).
ring-to-list-of-edges
(function).
sanitize-edges
(function).
split-trapezoid
(function).
sweep-line
(class).
taint
(generic reader).
(setf taint)
(generic writer).
taint-segment
(class).
trapezoidize-edges
(function).
trapezoids-to-triangles
(function).
triangle-center-point
(function).
val
(generic reader).
(setf val)
(generic writer).
vertical-edge-p
(function).
x-max
(generic reader).
(setf x-max)
(generic writer).
x-min
(generic reader).
(setf x-min)
(generic writer).
xor
(function).
y-max
(generic reader).
(setf y-max)
(generic writer).
y-min
(generic reader).
(setf y-min)
(generic writer).
ramarren-utils
common-lisp
.
heap-empty
(function).
heap-peek
(function).
heapify
(function).
nheap-extract
(function).
nheap-insert
(function).
heap-lchild
(function).
heap-parent
(function).
heap-rchild
(function).
Definitions are sorted by export status, category, package, and then by lexicographic order.
Area of a circle.
Area of an ellipse given semimajor and semiminor axes.
Area of a rectangle given length of edges.
Calculate an area of a simple polygon.
Area of a square given length of a side.
Area of a triangle given length of two edges and an angle between them.
Area of a triangle given length of edges using Heron’s formula. Numerically unstable for triangles with very small angles.
Area of a triangle given length of edges using numerically stabilized Heron’s formula.
Area of a triangle given positions of vertices. Will return negative for clockwise oriented triangle.
Return a list of intersection points (events).
Circumference of a circle.
Circumference of an ellipse given semimajor and semiminro axes using Ramanujan’s approximation.
Is c on the line defined by a->b?
Coordinate list (x1 y1 x2 y2 ... xn yn) to point list
Decompose polygon using bentley-ottmann, hopefully in something close to quadratic time.
Decomposes a complex polygon into a set of simple ones, possibly some entirely contained in others.
Decomposes a complex polygon into triangles. Returns a list of triangles inside polygon according to :in-test, which is a function taking a point and a polygon.
Distance between two points on a plane.
Check if there are any zero length edges or that any two colinear edges intersect.
Turns list into a heap
Calculate line from line segment.
Calculate length of a segment.
Find point of intersection of two segments. Returns nil if they do not intersect and point instance otherwise.
Find an intersection of two colinear line segments.
Return x coordinate of a point with a given y coordinate on a line.
Return y coordinate of a point with a given x coordinate on a line.
Check if two lines are equal.
Find point of intersection of two lines. Returns nil if lines are parallel and point instance otherwise.
Check if two lines are parrallel.
Perimeter of a rectangle given length of edges.
Perimeter of a square given length of a side.
Perimeter of a triangle given length of edges.
Checks if two points are geometrically equal.
Determine if a point belongs to a polygon using crossing (oddeven) rule.
Calculate winding number of a point.
Check if point is in polygon using winding number rule.
Return triangles of polygon1 minus polygon2.
Return triangles of polygon with some holes.
Return triangles of an intersection of two polygons.
Return 1 if polygon is counterclockwise and -1 if it is oriented clockwise. Assumes simple polygon.
Return triangles of an union of two polygons.
Returns t if there is at least one intersection.
Check if polygon is simple, ie. if no two edges intersect, assuming only point intersections are possible. This uses brute force, comparing each edge to every other edge.
Check if polygon is simple using Shamos-Hoey algorithm.
Triangulate polygon. Returns list of triangles.
line-segment
)) ¶automatically generated reader method
end
.
line-segment
)) ¶automatically generated writer method
end
.
line-segment
)) ¶automatically generated reader method
line-segment
)) ¶automatically generated writer method
poly-ring-node
)) ¶sweep-line
)) ¶poly-ring-node
)) ¶sweep-line
)) ¶sweep-line
) &rest initargs) ¶Create a tree, use closure over the sweep line as ordering function.
line-segment
) stream) ¶poly-ring-node
) stream) ¶bounding-box
) stream) ¶A line with an equation Ax+By+C=0.
A directed line segment defined by two points.
A point on a plane, with cartesian coordinates.
print-object
.
x
.
y
.
Add intersection to event queue if edge1 intersects edge2.
Is c colinear with a->b and lies between them?
Check if two bounding boxes intersect.
Verify sweep line tree node integrity, recursively descending into children.
Verify sweep line tree integrity.
Reduce degenerate trapezoids to triangles.
Construct a list of all nodes in a ring.
Create initial list of endpoint events.
Delete an edge from sweep-line, returns a cons of newly neighbouring edges.
Is a line segment between two nodes a diagonal of polygon the nodes belong to?
Change polygon representation from list of points to double linked ring of points.
Takes a list of points and creates a ring initialized with ear data.
Change polygon represented as a list of points into a list of edges (line segments).
Return t if edge does not intersect ray from point properly.
Is line segment ring-node->b in cone defined by angle with vertex defined by ring-node?
Insert new edge into sweep-line, returns a cons of neighbouring edges.
Return bounding box common to both boxes.
Do segments a->b and c->d intersect?
Do segments a->b and c->d intersect?
Return left endpoint of an edge.
Is c to the left or on the oriented line defined by a->b?
Is c to the left of the oriented line defined by a->b?
Create a new line segment.
Create a new point like object.
If two segments are colinear and intersect, extends the first one to include the second. Reorients the first edge to the left.
Move sweep line to new location.
Return t if test is nil for every combination of elements of list, assuming test is symmetric.
Return t if lv is above rv at point.
Returns an edge oriented up. It makes a new object event if argument is already up.
Check if point is contained inside a bounding box.
Check if point is contained inside or directly on a bounding box.
Returns >0 if point is to left/above the line, 0 if on the line and <0 if to the right/below the line.
Return a list of points in a ring.
Order points by increasing x then y.
Return all triangles fulfilling triangle-test from triangulation of all edges of two polygons.
Checks if ring-diag does not intersect any edge in a ring.
Recurse down event queue.
Recurse down event list.
Remove an ear centered on node from ring, returning new node, the removed ear and new edge list.
Return right endpoint of an edge.
Construct a list of edges attached to vertexes.
Drop zero length edges and merge all segment intersecting edges.
Split trapezoid into two triangles. Return a cons.
Returns a list of trapezoids build from a set of edges and their bounding box.
Convert list of trapezoids to list of triangles.
Return a central point of triangle.
Returns t if edge is horizontal.
Exlusive or logical operation.
Construct a bounding box of a given object.
line-segment
)) ¶event-endpoint
)) ¶automatically generated reader method
event-endpoint
)) ¶automatically generated writer method
ear-ring-node
)) ¶automatically generated reader method
ear
.
ear-ring-node
)) ¶automatically generated writer method
ear
.
event-endpoint
)) ¶automatically generated reader method
edge
.
event-endpoint
)) ¶automatically generated writer method
edge
.
sweep-line
)) ¶automatically generated reader method
sweep-line
)) ¶automatically generated writer method
event-intersection
)) ¶automatically generated reader method
event-intersection
)) ¶automatically generated writer method
event-intersection
)) ¶automatically generated reader method
event-intersection
)) ¶automatically generated writer method
poly-ring-node
)) ¶automatically generated reader method
next
.
poly-ring-node
)) ¶automatically generated writer method
next
.
poly-ring-node
)) ¶automatically generated reader method
prev
.
poly-ring-node
)) ¶automatically generated writer method
prev
.
taint-segment
)) ¶automatically generated reader method
taint-segment
)) ¶automatically generated writer method
poly-ring-node
)) ¶automatically generated reader method
val
.
poly-ring-node
)) ¶automatically generated writer method
val
.
bounding-box
)) ¶automatically generated reader method
bounding-box
)) ¶automatically generated writer method
bounding-box
)) ¶automatically generated reader method
bounding-box
)) ¶automatically generated writer method
bounding-box
)) ¶automatically generated reader method
bounding-box
)) ¶automatically generated writer method
bounding-box
)) ¶automatically generated reader method
bounding-box
)) ¶automatically generated writer method
A bounding box.
Ring node with ear information.
Endpoint event for Bentley-Ottmann algorithm.
Intersection event for Bentley-Ottmann algorithm.
Double linked ring node.
Sweep line.
Extend line-segment with taint boolean.
Jump to: | (
A B C D E F G H I L M N O P R S T V X Y |
---|
Jump to: | (
A B C D E F G H I L M N O P R S T V X Y |
---|
Jump to: | A B C D E N P S T V X Y |
---|
Jump to: | A B C D E N P S T V X Y |
---|
Jump to: | 2
B C D E F H L P R S T |
---|
Jump to: | 2
B C D E F H L P R S T |
---|