class Pulo::Cylinder

Attributes

face[R]
length[R]

Public Class Methods

new(face: nil, length: nil, volume: nil, radius: nil, diameter: nil) click to toggle source
# File lib/pulo/figure/figure3d.rb, line 98
def initialize (face: nil, length: nil, volume: nil, radius: nil, diameter: nil)
  quantity_check [face,Circle] ,[length,Length] , [volume,Volume], [radius, Length], [diameter, Length]
  raise 'Cylinder needs length and face or volume and length or volume and radius or diameter.' unless
      (face && length) || (volume && length) || (volume && (radius || diameter)) || (length && (radius || diameter))

  if face and length
    @face=face
    @length=length
    @volume=@face.area*@length
  else
    if volume and length
      @length=length
      @volume=volume
      @face=Circle.new(area: @volume/@length)
    else
      if (radius or diameter) and volume
        @face=Circle.new(radius: radius, diameter: diameter)
        @volume=volume
        @length=volume/@face.area
      else
        @face=Circle.new(radius: radius, diameter: diameter)
        @length=length
        @volume=@face.area*@length
      end
    end
  end

  @surfacearea=@face.area*2+@face.perimeter*@length
  @area=@face.area
  @radius=@face.radius
end