class Disp3D::NodeWorkplane
Public Class Methods
new(geom, name = nil)
click to toggle source
Calls superclass method
Disp3D::NodeLeaf::new
# File lib/node/node_workplane.rb, line 8 def initialize(geom, name = nil) Util3D.check_arg_type(Symbol, name, true) Util3D.check_arg_type(GMath3D::Plane, geom, false) super @length = 1000 @grid = nil end
Public Instance Methods
box()
click to toggle source
# File lib/node/node_workplane.rb, line 16 def box return Box.new(@geom.base_point) end
Protected Instance Methods
draw_element()
click to toggle source
# File lib/node/node_workplane.rb, line 21 def draw_element if(@geom && @geom.kind_of?(GMath3D::Plane)) draw_color GL.Begin(GL::QUADS) GL.Normal(@geom.normal.x, @geom.normal.y, @geom.normal.z) calc_vertices.each do |vertex| GL.Vertex( vertex.x, vertex.y, vertex.z ) end GL.End() GL.Color(0,0,0,1) GL.LineWidth(3) if(!@grid.nil?) line_vertices_ary = grid_lines_vertices GL.Begin(GL::LINES) line_vertices_ary.each do |vertex| GL.Vertex( vertex.x, vertex.y, vertex.z ) end GL.End() end else raise end end
Private Instance Methods
calc_vertices()
click to toggle source
# File lib/node/node_workplane.rb, line 66 def calc_vertices tan_vec1 = @geom.normal.arbitrary_orthogonal tan_vec2 = @geom.normal.cross(tan_vec1) vertices = Array.new(4) vertices[0] = @geom.base_point - tan_vec1*@length/2.0 - tan_vec2*@length/2.0 vertices[1] = @geom.base_point + tan_vec1*@length/2.0 - tan_vec2*@length/2.0 vertices[2] = @geom.base_point + tan_vec1*@length/2.0 + tan_vec2*@length/2.0 vertices[3] = @geom.base_point - tan_vec1*@length/2.0 + tan_vec2*@length/2.0 return vertices end
grid_lines_vertices()
click to toggle source
# File lib/node/node_workplane.rb, line 47 def grid_lines_vertices count = (@length/@grid) + 1 u_vec = @geom.normal u_vec = @geom.normal.arbitrary_orthogonal v_vec = @geom.normal.cross(u_vec) vertices = Array.new(count*4) count.times.each do |idx| point_tmp = @geom.base_point + u_vec * @grid * (idx - count/2) vertices[2*idx] = point_tmp + v_vec * @length/2.0 vertices[2*idx+1] = point_tmp - v_vec * @length/2.0 end count.times.each do |idx| point_tmp = @geom.base_point + v_vec * @grid * (idx - count/2) vertices[2*idx+2*count] = point_tmp + u_vec * @length/2.0 vertices[2*idx+2*count+1] = point_tmp - u_vec * @length/2.0 end return vertices end