Class: AIXM::Component::Geometry
- Inherits:
-
Object
- Object
- AIXM::Component::Geometry
- Extended by:
- Forwardable
- Includes:
- Enumerable
- Defined in:
- lib/aixm/component/geometry.rb,
lib/aixm/component/geometry/arc.rb,
lib/aixm/component/geometry/point.rb,
lib/aixm/component/geometry/border.rb,
lib/aixm/component/geometry/circle.rb
Overview
Geometries define a 3D airspace horizontally. It's either exactly one circle or at least three points, arcs and borders (the last of which has to be a point with the same coordinates as the first).
For a geometry to be valid, it must be comprised of either:
-
exactly one point
-
exactly one circle
-
at least three points, arcs or borders (the last of which a point with identical coordinates as the first)
Cheat Sheet in Pseudo Code:
geometry = AIXM.geometry
geometry << AIXM.point or AIXM.arc or AIXM.border or AIXM.circle
Defined Under Namespace
Classes: Arc, Border, Circle, Point
Instance Method Summary collapse
-
#<< ⇒ Array
See Array#<<.
-
#closed? ⇒ Boolean
Whether the geometry is closed.
-
#concat ⇒ Array
See Array#concat.
-
#each ⇒ Enumerator
See Array#each.
-
#initialize(*segments) ⇒ Geometry
constructor
A new instance of Geometry.
- #inspect ⇒ String
-
#segments ⇒ Array<AIXM::Component::Geometry::Point, AIXM::Component::Geometry::Arc, AIXM::Component::Geometry::Border, AIXM::Component::Geometry::Circle>
Points, arcs, borders or circle.
-
#to_xml ⇒ String
AIXM or OFMX markup.
Constructor Details
#initialize(*segments) ⇒ Geometry
44 45 46 |
# File 'lib/aixm/component/geometry.rb', line 44 def initialize(*segments) @result_array = segments end |
Instance Method Details
#<< ⇒ Array
42 |
# File 'lib/aixm/component/geometry.rb', line 42 def_delegators :@result_array, :each, :<<, :concat |
#closed? ⇒ Boolean
62 63 64 |
# File 'lib/aixm/component/geometry.rb', line 62 def closed? point? || circle? || polygon? end |
#concat ⇒ Array
42 |
# File 'lib/aixm/component/geometry.rb', line 42 def_delegators :@result_array, :each, :<<, :concat |
#each ⇒ Enumerator
42 |
# File 'lib/aixm/component/geometry.rb', line 42 def_delegators :@result_array, :each, :<<, :concat |
#inspect ⇒ String
49 50 51 |
# File 'lib/aixm/component/geometry.rb', line 49 def inspect %Q(#<#{self.class} segments=#{segments.count.inspect}>) end |
#segments ⇒ Array<AIXM::Component::Geometry::Point, AIXM::Component::Geometry::Arc, AIXM::Component::Geometry::Border, AIXM::Component::Geometry::Circle>
57 58 59 |
# File 'lib/aixm/component/geometry.rb', line 57 def segments @result_array end |
#to_xml ⇒ String
67 68 69 70 |
# File 'lib/aixm/component/geometry.rb', line 67 def to_xml fail(GeometryError.new("geometry is not closed", self)) unless closed? @result_array.map { |h| h.to_xml }.join end |