# 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