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