class GeometricLine
Public Class Methods
new_by_arrays(point1_coordinates, point2_coordinates)
click to toggle source
# File lib/flash_math/modules/geometry/geometric_line.rb, line 3 def self.new_by_arrays(point1_coordinates, point2_coordinates) self.new(GeometricPoint.new_by_array(point1_coordinates), GeometricPoint.new_by_array(point2_coordinates)) end
Public Instance Methods
angle_to(another_line)
click to toggle source
# File lib/flash_math/modules/geometry/geometric_line.rb, line 8 def angle_to(another_line) sa = Math::atan(slope) oa = Math::atan(another_line.slope) (sa-oa).abs end
distance_to(point)
click to toggle source
# File lib/flash_math/modules/geometry/geometric_line.rb, line 14 def distance_to(point) x0 = point.x y0 = point.y x1 = point1.x x2 = point2.x y1 = point1.y y2 = point2.y (((x2-x1)*(y1-y0))-((x1-x0)*(y2-y1))).abs/Math.sqrt((x2-x1)**2+(y2-y1)**2) end
horizontal?()
click to toggle source
# File lib/flash_math/modules/geometry/geometric_line.rb, line 26 def horizontal? slope == 0 end
intersect_x(another_line)
click to toggle source
# File lib/flash_math/modules/geometry/geometric_line.rb, line 30 def intersect_x(another_line) if vertical? and another_line.vertical? if x_intercept == another_line.x_intercept return x_intercept else return nil end end return nil if horizontal? and another_line.horizontal? return x_intercept if vertical? return another_line.x_intercept if another_line.vertical? d_intercept = another_line.y_intercept - y_intercept d_slope = slope - another_line.slope d_intercept / d_slope end
parallel_to?(another_line)
click to toggle source
# File lib/flash_math/modules/geometry/geometric_line.rb, line 50 def parallel_to?(another_line) return true if slope.infinite? and another_line.slope.infinite? slope == another_line.slope end
slope()
click to toggle source
# File lib/flash_math/modules/geometry/geometric_line.rb, line 56 def slope dy = Float(point2.y - point1.y) dx = Float(point2.x - point1.x) return 0.0 if dy == 0 dy / dx end
vertical?()
click to toggle source
# File lib/flash_math/modules/geometry/geometric_line.rb, line 65 def vertical? if slope.infinite? return true else return false end end
x_intercept()
click to toggle source
# File lib/flash_math/modules/geometry/geometric_line.rb, line 73 def x_intercept return nil if horizontal? dx = point1.y / slope point1.x - dx end
y_intercept()
click to toggle source
# File lib/flash_math/modules/geometry/geometric_line.rb, line 80 def y_intercept return nil if vertical? dy = point1.x * slope point1.y - dy end