# 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

• 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?