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