Calculator
Links
This plugin is available for Linux and Windows.

Source SaltyPaws: Github Calculator Plugin

Source Rasbats (with windows): Github Calculator muparser Windows fix

Release: Linux and Windows release

Download: https://opencpn.org/OpenCPN/plugins/calculator.html

Forum: CF Calculator_pi Thread

Forum: Plugincalculator
Goals
This is a light weight yet powerful calculator plugin for OpenCPN which includes functions to solve nautical questions.

Would you like to know your hull speed?

Increase of draft due to heel.

More functions can be added by the author.
Key features are:

Storing results in variables

Shows historic calculations

Full complement of nautical functions

Screen footprint can be optimized & minimized as required
Adding formulas is easy. If your favorite nautical equation is missing, please let me know your equation via flyspray, and I will add it.
Use
The calculator plugin allows you to carry out all nautical calculations, without having to leave the OpenCPN environment. The scientific calculator is capable of working with, and retaining variables. * When starting the plugin for the first time, go to
to find the plugin tab. Click on the calculator plugin, then the “Enable” button.

Back in the OpenCPN menu the calculator icon
brings up the calculator.

Tick the “Help” tickbox to bring up a comprehensive help screen. Unticking the help button brings you back to the calculator only interface and resizes the menu to the original size.

Enter calculations in the box and press enter or “Calculate” for evaluation. Press the up or down button, to retrieve historic input and results (max 30).
Examples
Examples of expressions that work in the calculator are: (comments are in brackets, some results depend on other example calculations):
Conversions:

ftm=0.3048 (feet to meters)

km_to_nm=0.539957 (Kilometers to nautical Mile)

ftm*LWL (waterline length in meters)
Distance to horizon

R=6378.1*1000 (Radius of the earth in m)

H=2.5 (Height of the eye above sealevel in m)

d = R * acos(R/(R h)) (Distance to horizon in m)

ans*km_to_nm (Distance to horizon in nm)
Distance to lighthouse

H1=200 (height of lighthouse in m)

d1 = R*acos(R/(R H1)) (Distance to horizon in m)

distance=d1+d (visibility range of lighthouse in m)
Useful Notes

Ans is the result of the previous calculation

Variables can be defined (e.g. myvariable=10/8*cos(dtr*90) or yourvariable=Ans)

% modulus  Divides the value of one expression by the value of another, and returns the remainder.

! factorial

Sign Returns .1 for negative numbers and 1 for positive numbers

Factorial Variables: Pi, e

dtr is the conversion factor from degrees to radians
Builtin functions
The following table gives an overview of the functions supported by the default implementation. It lists the function names, the number of arguments and a brief description.
Name  Argc.  Explanation 

TRIGONOMETRY 
default entry use radians e.g. sin(dtr*90) to calculate in degrees 

sin 
1 
sine function 
cos 
1 
cosine function 
tan 
1 
tangens function 
asin 
1 
arcus sine function 
acos 
1 
arcus cosine function 
atan 
1 
arcus tangens function 
sinh 
1 
hyperbolic sine function 
cosh 
1 
hyperbolic cosine 
tanh 
1 
hyperbolic tangens function 
asinh 
1 
hyperbolic arcus sine function 
acosh 
1 
hyperbolic arcus tangens function 
atanh 
1 
hyperbolic arcur tangens function 
LOGARITHMIC 

log2 
1 
logarithm to the base 2 
log10 
1 
logarithm to the base 10 
log 
1 
logarithm to the base 10 
ln 
1 
logarithm to base e (2.71828…) 
OTHER 

exp 
1 
e raised to the power of x 
sqrt 
1 
square root of a value 
sign 
1 
sign function 1 if x<0; 1 if x>0 
rint 
1 
round to nearest integer 
abs 
1 
absolute value 
min 
var. 
min of all arguments 
max 
var. 
max of all arguments 
sum 
var. 
sum of all arguments 
avg 
var. 
mean value of all arguments 
Binary Operators
The following table lists the default binary operators supported by the parser.
Operator  Meaning  Priority 

= 
assignment 
1 
&& 
logical and 
1 
or 
logical or 
2 
⇐ 
less or equal 
4 
>= 
greater or equal 
4 
!= 
not equal 
4 
== 
equal 
4 
> 
greater than 
4 
< 
less than 
4 
+ 
addition 
5 
 
subtraction 
5 
* 
multiplication 
6 
/ 
division 
6 
^ 
raise x to the power of y 
7 
^ 
use ^(1/2) for square root 
7 

The assignment operator is special since it changes one of its arguments and can only by applied to variables.
MuParser
muParser has built in support for the if.. then.. else operator. It uses lazy evaluation in order to make sure only the necessary branch of the expression is evaluated.
Operator  Meaning 

?: 
if then else operator 
Variables:
pi, e  well known 

ans 
the result of the previous calculation 
dtr 
conversion factor from degrees to radians 
Define variables 
e.g. myvariable=10/8*cos(dtr*90) or yourvariable=ans 
clear 
removes results in the history and leaves defined variables intact 
User Interface:
Type these commands in the command window:
history  Toggle the history panel 

showhelp 
Show/Hide the Help button 
showcalculate 
Show/Hide the Calculate button 
showhistory 
Show/Hide the history toggle 
help 
show the help menu 
Settings/Plugins/Preferences:

Show/Hide Calculate

Help and History toggle buttons

History Settings: max Results this is the number of results that will be stored in the history pull down. The history pulldown will contain five times this value.

Log to opencpn: Enable/Disable logging of results to opencpn logfile.
Compiling
You have to be able to compile OpenCPN itself  Get the info at Developers Manual

git clone https://github.com/Rasbats/calculator_pi
Build out of OpenCPN branch!
in folder calculator_pi

mkdir build

cd build

cmake ..

make

sudo make installf
After using wxformbuilder to modify the interface, use degreefix.sh, to facilitate the windows build. When updating the Excel file with formulas and conversions, convert to cpp code by running the supplied perl script
Changes to version 1.6

Added Willson Fetch Equation

Added wind speed to Beaufort equation

Changed to MuParser math interface

Added History pulldown box, improved history box behaviour

Added reporting modes (1000 separator, SI prefixes, accuracy)

Added function button in OpenCPN toolbar, with option to switch off from plugin settings

Minor tweaks and fixes
SaltyPaws aka Walbert Schulpen
Support for Diagrams
I believe the plugin supports small jpg & png images for the purpose of better visualization. What is needed to implement this system is some diagrams and more knowledge about the plugin. Rgleason
Early Executables
Earlier compiled library files can be downloaded/uploaded here. https://sourceforge.net/projects/opencpnplugins/
License
The plugin is licensed under the terms of GPL v2 or, at your will, later. The MuParser files are by Ingo Berg and is open source. For full licence, please see the muparser source files.