Class: RGeo::Geographic::SphericalMath::ArcXYZ
- Inherits:
-
Object
- Object
- RGeo::Geographic::SphericalMath::ArcXYZ
- Defined in:
- lib/rgeo/geographic/spherical_math.rb
Overview
Represents a finite arc on the sphere.
Instance Attribute Summary collapse
-
#e ⇒ Object
readonly
:nodoc:.
-
#s ⇒ Object
readonly
:nodoc:.
Instance Method Summary collapse
- #axis ⇒ Object
- #contains_point?(obj) ⇒ Boolean
- #degenerate? ⇒ Boolean
- #eql?(other) ⇒ Boolean (also: #==)
-
#initialize(start, stop) ⇒ ArcXYZ
constructor
A new instance of ArcXYZ.
- #intersects_arc?(obj) ⇒ Boolean
- #length ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize(start, stop) ⇒ ArcXYZ
Returns a new instance of ArcXYZ.
127 128 129 130 131 |
# File 'lib/rgeo/geographic/spherical_math.rb', line 127 def initialize(start, stop) @s = start @e = stop @axis = false end |
Instance Attribute Details
#e ⇒ Object (readonly)
:nodoc:
125 126 127 |
# File 'lib/rgeo/geographic/spherical_math.rb', line 125 def e @e end |
#s ⇒ Object (readonly)
:nodoc:
125 126 127 |
# File 'lib/rgeo/geographic/spherical_math.rb', line 125 def s @s end |
Instance Method Details
#axis ⇒ Object
147 148 149 150 |
# File 'lib/rgeo/geographic/spherical_math.rb', line 147 def axis @axis = @s % @e if @axis == false @axis end |
#contains_point?(obj) ⇒ Boolean
152 153 154 155 156 157 |
# File 'lib/rgeo/geographic/spherical_math.rb', line 152 def contains_point?(obj) my_axis = axis s_axis = ArcXYZ.new(@s, obj).axis e_axis = ArcXYZ.new(obj, @e).axis !s_axis || !e_axis || obj * my_axis == 0 && s_axis * my_axis > 0 && e_axis * my_axis > 0 end |
#degenerate? ⇒ Boolean
142 143 144 145 |
# File 'lib/rgeo/geographic/spherical_math.rb', line 142 def degenerate? my_axis = axis my_axis.x == 0 && my_axis.y == 0 && my_axis.z == 0 end |
#eql?(other) ⇒ Boolean Also known as: ==
137 138 139 |
# File 'lib/rgeo/geographic/spherical_math.rb', line 137 def eql?(other) other.is_a?(ArcXYZ) && @s == other.s && @e == other.e end |
#intersects_arc?(obj) ⇒ Boolean
159 160 161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/rgeo/geographic/spherical_math.rb', line 159 def intersects_arc?(obj) my_axis = axis dot1 = my_axis * obj.s dot2 = my_axis * obj.e if dot1 >= 0.0 && dot2 <= 0.0 || dot1 <= 0.0 && dot2 >= 0.0 ob_axis = obj.axis dot1 = ob_axis * @s dot2 = ob_axis * @e dot1 >= 0.0 && dot2 <= 0.0 || dot1 <= 0.0 && dot2 >= 0.0 else false end end |
#length ⇒ Object
173 174 175 |
# File 'lib/rgeo/geographic/spherical_math.rb', line 173 def length @s.dist_to_point(@e) end |
#to_s ⇒ Object
133 134 135 |
# File 'lib/rgeo/geographic/spherical_math.rb', line 133 def to_s "#{@s} - #{@e}" end |