class Pulo::Trapezoid
Attributes
angle[R]
base[R]
height[R]
side[R]
side_triangle[R]
top[R]
Public Class Methods
new(angle: nil,height: nil,base: nil, area: nil,top: nil)
click to toggle source
# File lib/pulo/figure/figure2d.rb, line 213 def initialize(angle: nil,height: nil,base: nil, area: nil,top: nil) quantity_check [angle,Angle] ,[height,Length] , [base,Length] , [top,Length], [area,Area] raise 'Need more arguments for trapezoid' unless ((angle and height and (base or top) or (base and top and height) or (area and base and top))) if angle and height and (base or top) @angle=angle; @height=height @side_triangle=Triangle.new(angles: [@angle,nil,Angle.pi/2], lengths: [@height,nil,nil]) @side=@side_triangle.lengths[2] if base @base=base; @top=@base-@side_triangle.lengths[0]*2 else #top @top=top; @base=@top+@side_triangle.lengths[0]*2 end @area=(@base+@top)/2*@height elsif base and top and height @height=height;@base=base;@top=top @side_triangle=Triangle.new(lengths: [@height,(@base-@top)/2,nil],angles: [Angle.pi/2]) @side=@side_triangle.lengths[2] @area=(@base+@top)/2*@height elsif area and base and top @area=area; @base=base; @top=top @height=(@area*2)/(@base+@top) @side_triangle=Triangle.new(angles: [Angle.pi/2], lengths: [@height,(@base-@top)/2]) @side=@side_triangle.lengths[2] elsif area and angle and base #TODO: area and angle and base #@angle=angle; @area=area; @base=base #@height=(Math.sqrt((@base**2)+(4*Math.tan(@angle)*@area))-@base)/(2*Math.tan(@angle)) #@side_triangle=Triangle.new(angles: [@angle,nil,Angle.pi/2], lengths: [@height,nil,nil]) #@side=@side_triangle.lengths[2] #@top=@base+@side_triangle.lengths[0]*2 end @perimeter=@base+@top+(@side*2) end
Public Instance Methods
extrusion_figure()
click to toggle source
# File lib/pulo/figure/figure2d.rb, line 210 def extrusion_figure TrapezoidalPrism end