class GMath3D::Polyline

Polyline represents a closed or open polyline on 3D space.

Attributes

is_open[RW]
vertices[RW]

Public Class Methods

new(vertices = [], is_open = true) click to toggle source
Input

vertices should be Array of Vector3.

Output

return new instance of Polyline.

Calls superclass method GMath3D::Geom::new
# File lib/polyline.rb, line 18
def initialize(vertices = [], is_open = true)
  Util3D.check_arg_type(Array, vertices)
  super()
  @vertices = vertices
  @is_open  = is_open
end

Public Instance Methods

==(rhs) click to toggle source
Input

rhs is Polyline.

Output

return true if rhs equals myself.

# File lib/polyline.rb, line 37
def ==(rhs)
  return false if rhs == nil
  return false if( !rhs.kind_of?(Polyline) )
  return false if( self.is_open != rhs.is_open )
  return false if(@vertices.size != rhs.vertices.size)
  for i in 0..(@vertices.size-1)
    return false if( self.vertices[i] != rhs.vertices[i])
  end
  return true
end
center() click to toggle source
Output

return center point as Vector3.

# File lib/polyline.rb, line 62
def center
  center = Vector3.new()
  @vertices.each do |vertex|
    center += vertex
  end
  center /= @vertices.size
  return center
end
initialize_copy( original_obj ) click to toggle source
# File lib/polyline.rb, line 25
def initialize_copy( original_obj )
  @vertices = Array.new(original_obj.vertices.size)
  for i in 0..@vertices.size-1
    @vertices[i] = original_obj.vertices[i].dup
  end
  @is_open = original_obj.is_open
end
to_s() click to toggle source
# File lib/polyline.rb, line 48
def to_s
  str = "Polyline["
  vertices.each do |vertex|
    str += vertex.to_element_s + ", "
  end
  str.slice!(str.length - 2, 2) if(vertices.size > 0)
  str += "] "
  str += "open" if(@is_open)
  str += "closed" if(!@is_open)
  return str
end