Geometry in Ruby
Implementation of basic 2D geometry algorithms in Ruby.
Installation
gem 'ruby-geometry', require: 'geometry'
Defined geometry objects
Point
Segment
Vector
Polygon
Line
Already implemented algorithms
Area of convex polygon
Polygon#area
Distance from point to a line or segment
Line#distance_to(point)
,Segment#distance_to(point)
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?
Coming up
Is polygon self-intersecting?
Is polygon convex?
Do polygons intersect?
Does circle contain given point?
Do circles intersect?
Copyright (c) 2008 Daniel Vartanov, released under the MIT license