class Disp3D::NodeCone

Public Class Methods

new(geom=nil, name=nil) click to toggle source
Calls superclass method
# File lib/node/node_cone.rb, line 10
def initialize(geom=nil, name=nil)
  super
  @radius = 1.0
  @height = 3.0
  @slices = 10
  @stacks = 10
  @base_point = Vector3.new()
  @direction = Vector3.new(0,0,1)
end

Public Instance Methods

box() click to toggle source
# File lib/node/node_cone.rb, line 20
def box
  rtn_box = Box.new(Vector3.new(-@radius,-@radius,0), Vector3.new(@radius,@radius,@height))
  rtn_box = box_transform(rtn_box)
  rot = calc_rotate_from_direction
  rtn_box = rtn_box.rotate(rot) if(!rot.nil?)
  rtn_box = rtn_box.translate(@base_point)
  return rtn_box
end

Protected Instance Methods

draw_element() click to toggle source
# File lib/node/node_cone.rb, line 30
def draw_element
  GL.PushMatrix()
  rot = calc_rotate_from_direction
  GL.Translate(@base_point.x, @base_point.y, @base_point.z) if(@base_point)
  GL.MultMatrix(rot.to_array) if(!rot.nil?)
  draw_color
  GLUT.SolidCone(@radius, @height, @slices, @stacks)
  GL.PopMatrix()
end

Private Instance Methods

calc_rotate_from_direction() click to toggle source
# File lib/node/node_cone.rb, line 41
def calc_rotate_from_direction
  return nil if(@direction.length < 1e-2)
  base_direction = Vector3.new(0,0,1)
  angle = base_direction.angle(@direction)
  axis = base_direction.cross(@direction)
  rotate = Quat.from_axis(axis, angle)
end