Implementation of basic 2D geometry algorithms in Ruby.
-
Point
-
Segment
-
Vector
-
Polygon
-
Line
-
Do segments overlap? { Segments#overlaps? }
-
Do segments lie on one line? { Segment#lies_on_one_line_with? }
-
Do segments intersect? { Segment#intersects_with? }
-
Segments intersection point { Segment#intersection_point_with }
-
Does segment contain given point? { Segment#contains_point? }
-
Are segments parallel? { Segment#parallel_to? }
-
Are vectors collinear? { Vector#collinear_with? }
-
Vectors cross product (outer product, vector product) { Vector#cross_product }
-
Vectors scalar product (inner product, dot product) { Vector#scalar_product }
-
Segment length { Segment#length }
-
Vector modulus { Vector#modulus }
-
Trivial vector arithmetics: summation, subtraction, vector-number multiplication { Vector#+(vector); Vector#-(vector); Vector#*(numeric) }
-
Euclid distance { Geometry#distance }
-
Line slope { Line#slope }
-
Y-intercept of a line { Line#y_intercept }
-
X-intercept of a line { Line#x_intercept }
-
Are lines parallel? { Line#parallel_to? }
-
What x-value do lines intersect at? { Line#intersect_x }
-
What is the angle between two lines? { Line#angle_to }
-
Rectangular bounds of polygon { Polygon#bounding_box }
-
Does polygon contain a given point? { Polygon#contains? }
-
Is polygon self-intersecting?
-
Area of polygon
-
Is polygon convex?
-
Do polygons intersect?
-
Does circle contain given point?
-
Do circles intersect?
-
Area of circle
Copyright (c) 2008 Daniel Vartanov, released under the MIT license