Class: Geospatial::Line
- Inherits:
-
Object
- Object
- Geospatial::Line
- Defined in:
- lib/geospatial/line.rb
Instance Attribute Summary collapse
-
#a ⇒ Object
readonly
Returns the value of attribute a.
-
#b ⇒ Object
readonly
Returns the value of attribute b.
Instance Method Summary collapse
-
#initialize(a, b) ⇒ Line
constructor
A new instance of Line.
- #intersect?(other) ⇒ Boolean
- #offset ⇒ Object
Constructor Details
#initialize(a, b) ⇒ Line
25 26 27 28 |
# File 'lib/geospatial/line.rb', line 25 def initialize(a, b) @a = a @b = b end |
Instance Attribute Details
#a ⇒ Object (readonly)
Returns the value of attribute a.
30 31 32 |
# File 'lib/geospatial/line.rb', line 30 def a @a end |
#b ⇒ Object (readonly)
Returns the value of attribute b.
31 32 33 |
# File 'lib/geospatial/line.rb', line 31 def b @b end |
Instance Method Details
#intersect?(other) ⇒ Boolean
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/geospatial/line.rb', line 37 def intersect?(other) t = self.offset o = other.offset d = (o[1] * t[0]) - (o[0] * t[1]) return false if d.zero? na = o[0] * (self.a[1] - other.a[1]) - o[1] * (self.a[0] - other.a[0]) left_time = na.fdiv(d); if left_time < 0.0 or left_time > 1.0 return false end nb = t[0] * (self.a[1] - other.a[1]) - t[1] * (self.a[0] - other.a[0]) right_time = nb.fdiv(d) if right_time < 0.0 or right_time > 1.0 return false end return left_time end |
#offset ⇒ Object
33 34 35 |
# File 'lib/geospatial/line.rb', line 33 def offset @b - @a end |