Sha256: 60134f70c647917ccb4bb2b8566bc589a4f133cf05447be82b5a32e2d78f5320
Contents?: true
Size: 1.06 KB
Versions: 1
Compression:
Stored size: 1.06 KB
Contents
require_relative 'point' module Geometry =begin rdoc An edge. It's a line segment between 2 points. Generally part of a {Polygon}. == Usage edge = Geometry::Edge([1,1], [2,2]) =end class Edge attr_reader :first, :last # Construct a new {Edge} object from any two things that can be converted # to a {Point}. def initialize(point0, point1) @first, @last = [Point[point0], Point[point1]] end # Two Edges are equal if both have equal {Point}s in the same order def ==(other) (@first == other.first) && (@last == other.last) end # Return a new {Edge} with swapped endpoints def reverse Edge.new(@last, @first) end # In-place swap the endpoints def reverse! @first, @last = @last, @first self end # Return the {Edge}'s length along the Y axis def height (@first.y - @last.y).abs end # Return the {Edge}'s length along the X axis def width (@first.x - @last.x).abs end def inspect 'Edge(' + @first.inspect + ', ' + @last.inspect + ')' end alias :to_s :inspect def to_a [@first, @last] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
geometry-4 | lib/geometry/edge.rb |