CosSinCalc

CosSinCalc is a web application able to calculate the variables of a triangle and even draw it for you!

This is an offline version of the calculator available as a Ruby gem. You can use the included command line utility to generate a PDF page containing all the results, formulae and a drawing of the triangle, or you can include it as a library in your Ruby application and use just the features you care about.

The main features are:

  • Calculating the missing variables of the triangle
  • Calculating additional variables (ie. altitudes, medians, angle bisectors, area, circumference)
  • Generating an SVG or PNG (via ImageMagick) drawing of the triangle
  • Generating a LaTeX or PDF (via pdflatex) document containing the calculations, the steps performed and a drawing.

Usage

For instructions on how to use the command line utility, please run cossincalc --help after installation.

Basic usage through an irb console:

>> require 'rubygems'
=> true
>> require 'cossincalc'
=> true

# Pass the known side and angle values to the initialization method as two
# hashes. The valid keys (variable names) are :a, :b and :c.
# It is important that you provide the values as strings as they wouldn't
# be parsed and converted properly, otherwise.
>> triangle = CosSinCalc::Triangle.new({ :a => "3.0", :c => "5" }, { :c => "90" })
=> #<CosSinCalc::Triangle:0x25058e8>

>> triangle.calculate!
=> true

# Fetch angle A, but in radians and unrounded.
>> triangle.angle(:a)
=> 0.643501108793284

# Fetch angle A in degrees and rounded.
>> triangle.humanize.angle(:a)
=> "36.87"

# Change the output precision.
>> triangle.humanize(3).angle(:a)
=> "36.870"

# Fetch another variable (side b).
>> triangle.humanize.side(:b)
=> "4.00"

# There are many available variables:
# altitude(:c), median(:a), angle_bisector(:a), area(), circumference()

Change angle unit

The default unit used for angles is degrees, however both radians and gon may be used.

>> triangle = CosSinCalc::Triangle.new({ :a => "3.0", :c => "5" }, { :c => (Math::PI/2).to_s, :unit => :radian })
=> #<CosSinCalc::Triangle:0x25058e8>

>> triangle = CosSinCalc::Triangle.new({ :a => "3.0", :c => "5" }, { :c => "100", :unit => :gon })
=> #<CosSinCalc::Triangle:0x25058e8>

Note that no unit is used for side values as it doesn't matter to the calculation.

Generate an SVG or PNG drawing

>> triangle = ...; triangle.calculate!
=> true

# Save an SVG version of the drawing by initializing a new Drawing
# instance and passing the name of the file to be created to the save_svg
# method.
>> CosSinCalc::Triangle::Drawing.new(triangle.humanize).save_svg('my-vector-drawing')
=> true

# Save a PNG version of the drawing by initializing a new Drawing
# instance and passing the name of the file to be created to the save_png
# method.
# In fact, an SVG file is created first and then converted to a PNG image
# by ImageMagick. Make sure to have ImageMagick installed if you want to
# use this feature.
>> CosSinCalc::Triangle::Drawing.new(triangle.humanize).save_png('my-png-drawing')
=> true

Generate a PDF document

>> triangle = ...; triangle.calculate!
=> true

# Pass the wanted filename to the save_pdf method of the Latex instance.
# Make sure to have a LaTeX distribution installed (as well as the
# amsmath, amsfonts and graphicx packages) if you want to make use
# of this feature.
>> CosSinCalc::Triangle::Formatter::Latex.new(triangle.humanize).save_pdf('my-result-document')
=> true

Installation

To install it as a Ruby gem, please run

gem install cossincalc

In order for this to work, you must have Ruby and RubyGems installed.


Feature requests, ideas, questions etc. is recieved at http://getsatisfaction.com/cossincalc.
Bugs should be submitted to the issue tracker.

Copyright (c) 2010-2011 Molte Emil Strange Andersen, released under the MIT license.