@c ------------------------------------------------------------------
@chapter Website
@nav{}

@menu
* Main::
* News::
* Features::
* Pictures::
@c * MGL scripts::
* Download::
* Other projects::
@end menu

@external{}

@node Main, News, , Website
@section MathGL is ...
@nav{}

@ifhtml
@html
<a href="Adding-fog.html"><img border="0" align="right" hspace="30" vspace="20" alt="Surface in fog" src="../small/fog-sm.png"></a>
@end html
@end ifhtml
@itemize @bullet
@item
a library for making high-quality scientific graphics under Linux and Windows;
@item
a library for the fast data plotting and data processing of large data arrays;
@item
a library for working in window and console modes and for easy embedding into other programs;
@item
a library with large and growing set of graphics.
@end itemize

Now MathGL has more than 35000 lines of code, more than 55 general types of graphics for 1d, 2d and 3d data arrays, including special ones for chemical and statistical graphics. It can export graphics to raster and vector (EPS or SVG) formats. It has Qt, FLTK, OpenGL interfaces and can be used even from console programs. It has functions for data processing and script MGL language for simplification of data plotting. Also it has several types of transparency and smoothed lightning, vector fonts and TeX-like symbol parsing, arbitrary curvilinear coordinate system and many over useful things. It can be used from code written on C++/C/Fortran/Python/Octave and many other languages. Finally it is platform independent and free (under GPL v.2.0 license).

There is a @uref{http://sourceforge.net/forum/?group_id=152187, forum} where you can ask a question or suggest an improvement. However the @uref{http://groups.google.com/group/mathgl, MathGL group} is preferable for quicker answer.

For subscribing to @uref{http://groups.google.com/group/mathgl, MathGL group} you can use form below
@ifhtml
@html
<form action="http://groups.google.com/group/mathgl/boxsubscribe">
Email: <input type=text name=email> <input type=submit name="sub" value="Subscribe">
</form>
@end html
@end ifhtml

@strong{About LGPL and GPL licenses.}
Generally, MathGL is GPL library. However, you can use LGPL license for MathGL core and widgets if you don't use SWIG-based interfaces and disable GSL features. This can be done by using @code{lgpl} option at build time. According this, I've added the LGPL win32 binaries into @ref{Download} page.

@strong{Latest news}
@itemize

@item @strong{31 March 2025}
New version (v.8.0.3) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are docs update, compatibility changes, bugfixes and improvents.

@item @strong{3 October 2024}
New version (v.8.0.2) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are new commands (@ref{mode} for Poisson equation solving, @ref{histl} for advanced histogram, jumps in @ref{ode}, robust approximations in @ref{fit} and @ref{fits}) and minor bugfixes and improvents.

@item @strong{12 January 2022}
New version (v.8.0.1) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are increase accuracy at line segment skipping, changes in SOVERSION numbering, minor spelling fix (thanks to Rafael Laboissière).

@item @strong{1 January 2022.}
New version (v.8.0) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are change version numbering according Debian rules, and add accurate line segment and quadrangle/triangle face cutting at axis border crossing.

@item @strong{8 December 2021.}
New version (v.2.5) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are big improve in formula evaluation (user-defined function, summation and product, new functions for data interpolation), new plot kind @ref{dcont} and @ref{lines}, set of functions for random distributions, new data handling functions (like, @ref{keep}), extend @ref{ode} to solve PDE/cascade/etc, add mask for most of plotting functions and bugfixes, which denoted @ref{News, here}.

@item @strong{8 July 2019.}
New version (v.2.4.4) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are new @ref{minmax} for positions of local minimums and maximums, add @ref{conts} for coordinates of contour lines, extend formula evaluation to read and interpolate data files.

@item @emph{17 May 2017.}
New version (v.2.4) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released. There are @code{mgllab} executable, string manipulation in MGL, new functions, plot types and styles, translation to Russian using @code{gettext} and bugfixes, which denoted @ref{News, here}.
@end itemize

There is detailed @ref{News, news list}. Sourceforge project page @uref{http://sourceforge.net/projects/mathgl/, here}.

@ifhtml
@html
<a href="http://www.datadvance.net"><img border="0" align="right" hspace="10" alt="DATADVANCE" src="../datadvance.png"></a>
@end html
@end ifhtml
Javascript interface was developed with support of @url{http://www.datadvance.net, DATADVANCE} company.

@external{}

@node News, Features, Main, Website
@section News
@nav{}

@itemize

@item @strong{31 March 2025.}
New version (v.8.0.3) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released.
@itemize @bullet
@item Improve @ref{mode} for small grid sizes.
@item Update python usage for compatibility with NumPy2.
@item Add samples for @ref{mode} and @ref{histl}.
@item Minor fixes, improvements and spelling issues.
@end itemize

@item @strong{3 October 2024.}
New version (v.8.0.2) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released.
@itemize @bullet
@item Add @ref{mode} for finding sulution of Poisson equation with arbitrary boundary.
@item Add @ref{histl} for histogram by linear interpolation.
@item Add jumps functionality for @ref{ode} solver.
@item Add robust approximation by using numbers 1,2,3 or 4 in variable list of @ref{fit} and @ref{fits} commands: '1' for norm sqrt(1+|u|^2), '2' for norm |u|^4, '3' for norm 1-cos(u), '4' for norm |u|^2*(2-|u|^2/6^2), default norm |u|^2.
@item Add power deposition for @ref{qo2d} if k0<0.
@item Update fonts. Add STIX2 and CJK fonts.
@item Compatibility changes for Qt6.
@item Improve complex number reading from files.
@item Exclude @code{NAN} values from momentum estiamtions.
@item Minor bugfixes and optimizations.
@end itemize

@item @strong{12 January 2022.}
New version (v.8.0.1) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released.
@itemize @bullet
@item Increase accuracy at line segment skipping.
@item Changes in SOVERSION numbering.
@item Minor spelling fix (thanks to Rafael Laboissière).
@end itemize

@item @strong{1 January 2022.}
New version (v.8.0) of @uref{http://sourceforge.net/projects/mathgl, MathGL} is released.
@itemize @bullet

@item  Change version numbering according Debian rules.
@item  Add accurate line segment and quadrangle/triangle face cutting at axis border crossing.
@item  Add @ref{fastcut} for disable accurate but slow line/trig/quad primitives cutting at axis borders.
@item  Restore back transparent background by default. You can set non-transparent background by using @ref{clf} or @ref{background} functions.
@item  Compatibility changes for Qt5.15 and MSVC.

@strong{INCOMPATIBLE:}
@item  Change @ref{colorbar} C-functions by adding last argument for options.
@item Add alpha-value in @ref{background}.
@item  Disable Qt4 interface by default.

@end itemize


@item @strong{8 December 2021.} Version 2.5 was released.
@item @strong{8 July 2019.} Version 2.4.4 was released.
@item @strong{14 March 2019.} Version 2.4.3 was released.
@item @strong{31 March 2018.} Version 2.4.2.1 was released.
@item @strong{21 March 2018.} Version 2.4.2 was released.
@item @strong{20 July 2017.} Version 2.4.1 was released.
@item @strong{17 May 2017.} Version 2.4 was released.
@item @strong{20 June 2016.} Version 2.3.5.1 was released.
@item @strong{16 May 2016.} Version 2.3.5 was released.
@item @strong{13 February 2016.} Version 2.3.4 was released.
@item @strong{1 June 2015.} Version 2.3.3 was released.
@item @strong{2 February 2015.} Version 2.3.2 was released.
@item @strong{21 October 2014.} Version 2.3.1 was released.
@item @strong{7 August 2014.} Version 2.3 was released.
@item @strong{19 March 2014.} Version 2.2.2.1 was released.
@item @strong{10 March 2014.} Version 2.2.2 was released.
@item @strong{22 January 2014.} Version 2.2.1 was released.
@item @strong{11 November 2013.} Version 2.2 was released.
@item @strong{8 May 2013.} Version 2.1.3.1 was released.
@item @strong{2 May 2013.} Version 2.1.3 was released.
@item @strong{28 January 2013.} Version 2.1.2 was released.
@item @strong{24 December 2012.} Version 2.1.1 was released.
@item @strong{13 December 2012.} Version 2.1 was released.
@item @strong{23 August 2011.} Version 2.0.beta was released.
@item @strong{30 May 2011.} Version 1.11.2 was released.
@item @strong{8 November 2010.} Version 1.11 was released.
@item @strong{28 December 2009.} Version 1.10 was released.
@item @strong{8 July 2009.} Version 1.9 was released.
@item @strong{27 November 2008.} Version 1.8 was released.
@item @strong{5 June 2008.} Version 1.7 was released.
@item @strong{17 March 2008.} Version 1.6 was released.
@item @strong{11 January 2008.} Version 1.5 was released.
@item @strong{30 October 2007.} Version 1.4 was released.
@item @strong{15 October 2007.} Version 1.3 was released.
@item @strong{10 September 2007.} Version 1.2 was released.
@item @strong{23 May 2007.} Version 1.1 was released.
@item @strong{2 April 2007.} Version 1.0 was released.
@item @strong{24 January 2007.} First public release (v.0.8).
@end itemize

@external{}


@node Features, Pictures, News, Website
@section Features
@nav{}

MathGL can plot a wide range of graphics. It includes:
@itemize @bullet
@item
one-dimensional: @ref{plot}, @ref{area}, @ref{bars}, @ref{step}, @ref{stem}, @ref{torus}, @ref{chart}, @ref{error}, @ref{tube}, @ref{mark}, (@ref{1D plotting});

@item
two-dimensional plots: @ref{mesh}, @ref{surf}, @ref{dens}, @ref{cont}, @ref{contf}, @ref{boxs}, @ref{axial}, @ref{fall}, @ref{belt}, @ref{tile}, including surfaces transparent (@ref{surfa}) or colored (@ref{surfc}) by another data (@ref{2D plotting});

@item
three-dimensional plots: @ref{surf3}, @ref{dens3}, @ref{cont3}, @ref{contf3}, @ref{cloud}-like, including isosurfaces transparent (@ref{surf3a}) or colored (@ref{surf3c}) by another data (@ref{3D plotting});

@item
vector fields plots: vector fields @ref{vect}, @ref{vect3} and @ref{traj}, @ref{flow} threads, flow @ref{pipe}, @ref{map} chart, and so on (@ref{Vector fields});

@item
and so on. See also @ref{All samples}.
@end itemize

In fact, I created the functions for drawing of all the types of scientific plots that I know. The list of plots is growing; if you need some special type of a plot then please email me @email{mathgl.abalakin@@gmail.com, e-mail} and it will appear in the new version.

I tried to make plots as nice looking as possible: e.g., a surface can be transparent and highlighted by several (up to 10) light sources. Most of the drawing functions have 2 variants: simple one for the fast plotting of data, complex one for specifying of the exact position of the plot (including parametric representation). Resulting image can be saved in bitmap PNG, JPEG, TGA, BMP format, or in vector EPS, SVG or TeX format, or in 3D formats OBJ, OFF, STL or in PRC format.

All texts are drawn by vector fonts, which allows for high scalability and portability. Texts may contain commands for: some of the TeX-like symbols, changing index (upper or lower indexes) and the style of font inside the text string. Texts of ticks are rotated with axis rotation. It is possible to create a legend of plot and put text in an arbitrary position on the plot. Arbitrary text encoding (by the help of function @code{setlocale()}) and UTF-16 encoding are supported.

Special class mglData is used for data encapsulation. In addition to a safe creation and deletion of data arrays it includes functions for data processing (smoothing, differentiating, integrating, interpolating and so on) and reading of data files with automatic size determination. Class mglData can handle arrays with up to three dimensions (arrays which depend on up to 3 independent indexes @math{a_@{ijk@}}). Using an array with higher number of dimensions is not meaningful, because I do not know how it can be plotted. Data filling and modification may be done manually or by textual formulas.

There is fast evaluation of a textual mathematical expression. It is based on string precompilation to tree-like code at the creation of class instance. At evaluation stage code performs only fast tree-walk and returns the value of the expression. In addition to changing data values, textual formulas are also used for drawing in @emph{arbitrary} curvilinear coordinates. A set of such curvilinear coordinates is limited only by user's imagination rather than a fixed list like: polar, parabolic, spherical, and so on.

@external{}

@node Pictures, Download, Features, Website
@section Pictures
@nav{}

@include samples_list.texi

@external{}

@node Download, Other projects, Pictures, Website
@section Download
@nav{}

@strong{Stable version (v.@value{VERSION})}

You may download current version of MathGL for following configurations:
@itemize @bullet
@item
@uref{http://downloads.sourceforge.net/mathgl/mathgl-@value{VERSION}@value{MINVER}.tar.gz, Source} file with cmake build system.
@c  @item
@c  @uref{http://downloads.sourceforge.net/mathgl/mathgl-@value{VERSION}@value{MINVER}-mingw.win32.7z,GPL} or @uref{http://downloads.sourceforge.net/mathgl/mathgl-@value{VERSION}@value{MINVER}.LGPL-mingw.win32.7z,LGPL} binaries for MinGW, 32-bit build for Pentium IV.
@item
@uref{http://downloads.sourceforge.net/mathgl/mathgl-@value{VERSION}@value{MINVER}-mingw.win64.7z,GPL binaries} for MinGW, 64-bit build, with all utilities and required DLLs in @code{bin} folder.
@item
@uref{http://downloads.sourceforge.net/mathgl/mathgl-@value{VERSION}@value{MINVER}-ucrt64.7z,GPL binaries} for MS VisualStudio, 64-bit build, with all utilities and required DLLs in @code{bin} folder.
@item
@uref{http://downloads.sourceforge.net/mathgl/mathgl-@value{VERSION}@value{MINVER}.eng.pdf,PDF} documentation in English.
@item
@uref{http://downloads.sourceforge.net/mathgl/mathgl-doc-html-@value{VERSION}@value{MINVER}.7z, Archive} with HTML documentation and figures.
@c @item
@c @uref{http://downloads.sourceforge.net/mathgl/mathgl_slides-@value{VERSION}@value{MINVER}.pdf,PDF} slideshow of main features
@end itemize

@strong{Font files}

There are a set of @uref{http://sourceforge.net/project/showfiles.php?group_id=152187&package_id=267177,font files} for MathGL with following typefaces. Note, that the set of glyphs can be less than in default font. As result not all TeX symbols can be displayed.
@itemize @bullet
@item
@uref{http://downloads.sourceforge.net/mathgl/STIX_font.tgz,STIX} font -- default font for MathGL.
@item
@uref{http://downloads.sourceforge.net/mathgl/adventor_font.tgz,Adventor font} -- the @uref{http://www.gust.org.pl/projects/e-foundry/tex-gyre/index_html,TeX Gyre} sansserif font based on the URW Gothic L family (like Avant Garde Gothic).
@item
@uref{http://downloads.sourceforge.net/mathgl/bonum_font.tgz,Bonum font} -- the @uref{http://www.gust.org.pl/projects/e-foundry/tex-gyre/index_html,TeX Gyre} serif font based on the URW Bookman L family.
@item
@uref{http://downloads.sourceforge.net/mathgl/chorus_font.tgz,Chorus font} -- the @uref{http://www.gust.org.pl/projects/e-foundry/tex-gyre/index_html,TeX Gyre} font based on the URW Chancery L Medium Italic.
@item
@uref{http://downloads.sourceforge.net/mathgl/cursor_font.tgz,Cursor font} -- the @uref{http://www.gust.org.pl/projects/e-foundry/tex-gyre/index_html,TeX Gyre} monospaced serif font based on the URW Nimbus Mono L (like Courier).
@item
@uref{http://downloads.sourceforge.net/mathgl/heros_font.tgz,Heros font} -- the @uref{http://www.gust.org.pl/projects/e-foundry/tex-gyre/index_html,TeX Gyre} sansserif font based on the URW Nimbus Sans L (like Helvetica).
@item
@uref{http://downloads.sourceforge.net/mathgl/heroscn_font.tgz,HerosCN font} -- the "compressed" version of previous one.
@item
@uref{http://downloads.sourceforge.net/mathgl/pagella_font.tgz,Pagella font} -- the @uref{http://www.gust.org.pl/projects/e-foundry/tex-gyre/index_html,TeX Gyre} serif font based on the URW Palladio L (like Palatino).
@item
@uref{http://downloads.sourceforge.net/mathgl/schola_font.tgz,Schola font} -- the @uref{http://www.gust.org.pl/projects/e-foundry/tex-gyre/index_html,TeX Gyre} serif fonts is based on the URW Century Schoolbook L.
@item
@uref{http://downloads.sourceforge.net/mathgl/termes_font.tgz,Termes font} -- the @uref{http://www.gust.org.pl/projects/e-foundry/tex-gyre/index_html,TeX Gyre} serif fonts is based on the Nimbus Roman No9 L (like Times).
@end itemize

@external{}

@node Other projects, , Download, Website
@section Other projects
@nav{}

Except scientific (non public) projects I also have some general interest projects:
@itemize @bullet
@item
@uref{http://sourceforge.net/projects/pocketmk/, PocketMK} is small program for PocketPC which simulate famous Russian calculators MK-61 and slightly extend it.
@item
@uref{http://udav.sourceforge.net/,UDAV} is front-end for MGL scripts. It has windows interface for data viewing, changing and plotting. Also it can execute MGL scripts, setup and rotating graphics and so on.
@end itemize

Also I recommend to look at:
@itemize @bullet
@item
@uref{http://englab.bugfest.net/,EngLab} is a cross-compile mathematical platform with a C like syntax intended to be used both by engineers and users with small programming knowledge. It is extremely scalable and allows users and the community to easily compile their own functions as shared objects.
@item
@uref{http://threedepict.sourceforge.net/,3Depict} is software for analysis of scientific datasets commonly encountered in atom probe tomography. You can manipulate, interact with and analyse point based datasets.
@item
@uref{http://www.sourceforge.net/projects/graphplot/,Graphplot} is function plotter based on MathGL.
@item
@uref{http://www.sourceforge.net/projects/graphplot/,OscillViewer} is oscilloscope monitoring program. Working with L-Card 14-140 AD-Convertor. Based on Qt and MathGL libraries.
@end itemize

Finally, few links to free software and libraries:
@itemize @bullet
@item
@uref{http://www.thefreecountry.com/,thefreecountry.com} have a lot of Free Programmers', Webmasters' and Security Resources
@item
@uref{http://gnuwin32.sourceforge.net/,GnuWin} provides ports of tools with a GNU or similar open source license, to modern MS-Windows.
@item
@uref{http://loll.sourceforge.net/,LLoL} is project collecting, organising, classifying, and maintaining important URLs about Linux and the Open Source movement for all levels of Linux users. The LoLL project now has 4000+ links which are updated usually on a daily basis.
@end itemize

@external{}
