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