[SCM] Packaging for mathgl branch, master, updated. debian/1.11.2-7-4-g9f6ca8a
Dimitrios Eftaxiopoulos
eftaxi12 at otenet.gr
Sun Feb 26 18:03:42 UTC 2012
The following commit has been merged in the master branch:
commit 9cc1769b846737e15e1dd8a35d56477eb96fe0c5
Author: Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr>
Date: Sun Feb 26 12:39:05 2012 +0200
Fix build failure releted to conflicting pointer types
diff --git a/debian/changelog b/debian/changelog
index 5d40100..998c46e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,10 +1,12 @@
mathgl (1.11.2-9) unstable; urgency=low
+ * Add patches that fix conflicting pointer type issues in files
+ mgl/mgl_eps.cpp and mgl/mgl_export.cpp (Closes: #661292).
* Change dependency of python-mathgl package from python-numpy to
python-numpy-abi9.
* Update Debian Policy to 3.9.3.
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Thu, 23 Feb 2012 12:00:00 +0200
+ -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Sun, 26 Feb 2012 09:23:00 +0200
mathgl (1.11.2-8) unstable; urgency=low
diff --git a/debian/changelog~ b/debian/changelog~
deleted file mode 100644
index 1e71caa..0000000
--- a/debian/changelog~
+++ /dev/null
@@ -1,304 +0,0 @@
-mathgl (1.11.2-9) unstable; urgency=low
-
- * Change dependency of python-mathgl package from python-numpy to
- python-numpy-abi9.
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Thu, 23 Feb 2012 12:00:00 +0200
-
-mathgl (1.11.2-8) unstable; urgency=low
-
- * Team upload
- * Build only against libhdf5-dev (transition 1.8.6 => 1.8.8)
-
- -- Sylvestre Ledru <sylvestre at debian.org> Wed, 18 Jan 2012 19:29:33 +0100
-
-mathgl (1.11.2-7) unstable; urgency=low
-
- * Fix FTBFS for sparc64.
- * Ammend symbols files for alpha.
- * Make libmgl-dev package dependent on libmgl-*5 packages (Closes: #646923).
- * Create new texinfo-png-Makefile.patch in the place of
- createpngdirectory.patch.
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Mon, 2 Jan 2012 18:32:00 +0200
-
-mathgl (1.11.2-6) unstable; urgency=low
-
- * Fix FTBFS for sparc (Closes: #642654).
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Mon, 26 Sep 2011 16:23:12 +0300
-
-mathgl (1.11.2-5) unstable; urgency=low
-
- * Resolve differences for all non-optional symbols, in symbols files for ia64,
- sparc and sh4 architectures (Closes: #642654).
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Mon, 26 Sep 2011 10:25:00 +0300
-
-mathgl (1.11.2-4) unstable; urgency=low
-
- * Add python-numpy to Depnds of python-mathgl in debian/control and add
- dh_numpy in binary-arch in debian/rules (Closes: #641793).
- * Ammend symbols files for ia64, sparc and sh4 architectures (Closes: 642654).
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Sat, 24 Sep 2011 23:16:00 +0300
-
-mathgl (1.11.2-3) unstable; urgency=low
-
- * Replace libfltk-dev with libfltk1.3-dev | libfltk-dev in debian/control
- Build-Depends (Closes: #638834).
- * Ammend symbols files for s390x architecture (Closes: #639492).
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Wed, 7 Sep 2011 06:04:00 +0300
-
-mathgl (1.11.2-2) unstable; urgency=low
-
- * Add debian/source/options file in order to avoid the generation of unneeded debian-
- changes patch, due to the creation of extra file config.log during build.
- * Ammend symbols files.
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Thu, 18 Aug 2011 20:48:00 +0300
-
-mathgl (1.11.2-1) unstable; urgency=low
-
- * Incorporate changes due to the last two NMU's.
- * New upstream version.
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Tue, 28 Jun 2011 17:01:00 +0200
-
-mathgl (1.11.1.1-2.2) unstable; urgency=low
-
- * Non-maintainer upload (closes: #610777).
- * debian/libmgl-qt5.symbols: _ZN10QByteArrayD1Ev is needed on sparc and
- ia64, so add it as optional.
- * debian/libmgl-wx5.symbols: three destructors known to be undefined on
- armel/armhf are also not defined on ia64 or sparc, so mark these as
- optional also. Destructors of foreign classes are not part of the
- library ABI, so it's fine to ignore these.
-
- -- Steve Langasek <vorlon at debian.org> Sun, 19 Jun 2011 07:57:43 +0000
-
-mathgl (1.11.1.1-2.1) unstable; urgency=low
-
- * Non-maintainer upload.
- * Fix library symbols files (closes: #610777):
- - debian/libmgl-qt5.symbols: drop _ZN10QByteArrayD2Ev, which is not
- present on *any* architecture anymore.
- - debian/libmgl-fltk5.symbols: _ZN9Fl_PixmapC2EPKPKc is not present on
- ia64 or sparc and never has been.
- - debian/libmgl5.symbols:
- + _ZN7mglFuncD1Ev is present on all architectures, drop the
- architecture list (fixing the 'kfeebsd' typo that caused a build
- failure on kfreebsd-amd64).
- + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED2Ev,
- _ZN8u3dLightD2Ev: symbols not seen on *any* archs, drop.
- + Drop 18 symbols whose exclusion list included all 15 architectures
- that have been tested.
- + Other symbols that are template instantiations are now marked as
- optional symbols instead of tagged with an arch list, since they are
- not part of the ABI and will come and go based on the compiler
- version used, *not* just on the architecture.
- + If there are 8 or more architectures in the arch qualifier, invert
- it. In some cases this reveals that certain symbols are actually
- 64-bit specific - so infer that not-yet-tested 32-bit archs follow
- the pattern.
- - debian/*.symbols: any symbols marked for armel should also be marked
- for armhf.
- * debian/rules: clean the dependency_libs out of .la files at build
- time, per Policy 10.2. Closes: #620629.
-
- -- Steve Langasek <vorlon at debian.org> Sat, 18 Jun 2011 07:33:55 +0000
-
-mathgl (1.11.1.1-3) unreleased; urgency=low
-
- * Further attempt to fix symbol breakages
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Sun, 29 May 2011 19:41:00 +0200
-
-mathgl (1.11.1.1-2) unstable; urgency=low
-
- * Try to fix libmgl5 related symbols breakage on all arches
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Sun, 22 May 2011 20:50:00 +0200
-
-mathgl (1.11.1.1-1) unstable; urgency=low
-
- * New upstream version
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Tue, 26 Apr 2011 01:15:00 +0200
-
-mathgl (1.11.0.1-9) unreleased; urgency=low
-
- * Again try to fix build failure due to broken symbols for several architectures
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Sat, 2 Apr 2011 02:05:00 +0200
-
-mathgl (1.11.0.1-8) unstable; urgency=low
-
- * Try to fix build failure due to broken symbols for several architectures
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Thu, 24 Mar 2011 23:56:00 +0200
-
-mathgl (1.11.0.1-7) unstable; urgency=low
-
- * Create patch for the removal of the texinfo/mgl_ru.info-* files
- * Update symbols files (Closes: #618235)
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Mon, 14 Mar 2011 00:10:00 +0200
-
-mathgl (1.11.0.1-6) unstable; urgency=low
-
- * Try to fix build failure due to broken symbols for sparc64
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Sat, 5 Mar 2011 21:27:00 +0200
-
-mathgl (1.11.0.1-5) unstable; urgency=low
-
- * Try to fix build failure due to broken symbols for armel and s390
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Fri, 25 Feb 2011 21:30:00 +0200
-
-mathgl (1.11.0.1-4) unstable; urgency=low
-
- * Create mixed symbols files for amd64 and i386 with tagged symbols
- (Closes: #610777)
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Sat, 19 Feb 2011 23:10:00 +0200
-
-mathgl (1.11.0.1-3) unstable; urgency=low
-
- * Upload in unstable
- * Change symbols files for pbuilder --distribution unstable (Closes: #610777)
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Sat, 12 Feb 2011 22:14:00 +0200
-
-mathgl (1.11.0.1-2) experimental; urgency=low
-
- * Update symbols files for pbuilder --distribution experimental.
- * Remove createpngdirectory.patch from series.
- * Apply patch for FTBFS on i386 (Closes: #607539).
- * Add Replaces tags for old mathgl-doc package in debian/control.
- * Various improvements in the debian/rules file.
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Mon, 17 Jan 2011 21:43:00 +0200
-
-mathgl (1.11.0.1-1) experimental; urgency=low
-
- * Correct debian/copyright file.
- * Create proper patches for the changes in the source tree.
- * Add new package for Russian documentation.
- * New upstream release (Closes: #603004).
- * Correct several spelling mistakes in manpages and in lang/numpy.i
- * Create symbols files for libraries.
- * Register documentation to doc-base.
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Sun, 12 Dec 2010 19:13:00 +0200
-
-mathgl (1.10.2.1-2) unstable; urgency=low
-
- * Make .png pictures visible from the html documentation.
- * Add python support (Closes: #541481).
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Sun, 11 Sep 2010 12:37:00 +0200
-
-mathgl (1.10.2.1-1) unstable; urgency=low
-
- [ D Eftaxiopoulos ]
- * Update to Debian Policy 3.9.1
- * Put myself and D. Haley to the maintainers list.
- * Comment out parallel-build-png.patch in the debian/patches/series file
- since it seems to apply to a texinfo/Makefile.am file that is not
- included in the source tree.
- * Append package quilt to the build-depends list for the source in the
- debian/control file, in order to fix a lintian error.
- * Reinstate debian/source/format file with content '3.0 (quilt)'.
- * Fix Lintian warnings related to manpages.
-
- [ D Haley ]
- * New upstream release 1.10.2.1 (Closes: #562743).
-
- [ Salvatore Bonaccorso ]
- * New Maintainer (Closes: #564422). Set Maintainer to Debian Science
- Maintainers <debian-science-maintainers at lists.alioth.debian.org>.
- * Convert to '3.0 (quilt)' package source format. Drop quilt framework for
- packaging.
- * debian/control:
- - Change Vcs-Browser and Vcs-Git to the debian-science git repository.
- - Change Section for source package to 'science' as per debian-science
- group policy.
- - Set DM-Upload-Allowed field to yes.
- * Add myself to Uploaders.
-
- [ Sylvestre Ledru ]
- * Missing dependency against automake added.
-
- -- Sylvestre Ledru <sylvestre at debian.org> Sun, 15 Aug 2010 21:45:47 +0200
-
-mathgl (1.9-3) unstable; urgency=low
-
- * QA upload.
- * Properly orphan the package (see #564422), set maintainer to QA.
- * Bump Standards-Version to 3.8.4, no changes needed.
- * Add debian/README.source, pointing to quilt doc.
- * Bump build-deps on octave from 3.0 to 3.2 (Closes: #574025).
-
- -- Stefano Zacchiroli <zack at debian.org> Fri, 26 Mar 2010 14:06:08 +0100
-
-mathgl (1.9-2) unstable; urgency=low
-
- * Fix FTBFS. Closes: #545882.
- * Update Standards-Version to 3.8.3.
-
- -- Bradley Smith <bradsmith at debian.org> Wed, 09 Sep 2009 22:44:44 +0100
-
-mathgl (1.9-1) unstable; urgency=low
-
- * New upstream release. Closes: #535503.
- * QT -> qt in package descriptions. Closes: #534425.
-
- -- Bradley Smith <bradsmith at debian.org> Sun, 19 Jul 2009 16:41:41 +0100
-
-mathgl (1.8.1-6) unstable; urgency=low
-
- * Redo descriptions.
-
- -- Bradley Smith <bradsmith at debian.org> Tue, 09 Jun 2009 20:26:42 +0100
-
-mathgl (1.8.1-5) unstable; urgency=low
-
- * Correct info-dir-section in texinfo/mathgl.texi. Closes: #528893.
-
- -- Bradley Smith <bradsmith at debian.org> Wed, 27 May 2009 17:52:50 +0100
-
-mathgl (1.8.1-4) unstable; urgency=low
-
- * Correct libltdl-dev Build-Depend. Closes: #526426.
- * Further improve descriptions.
-
- -- Bradley Smith <bradsmith at debian.org> Fri, 01 May 2009 12:59:05 +0100
-
-mathgl (1.8.1-3) unstable; urgency=low
-
- * Tidy up descriptions. Closes: #521830, #521917.
- * Update Standards-Version to 3.8.1. (No changes).
- * Fix watch file.
-
- -- Bradley Smith <bradsmith at debian.org> Sat, 18 Apr 2009 17:42:59 +0100
-
-mathgl (1.8.1-2) unstable; urgency=low
-
- * Fix parallel builds. Closes: #519738.
-
- -- Bradley Smith <bradsmith at debian.org> Thu, 19 Mar 2009 19:08:37 +0000
-
-mathgl (1.8.1-1) unstable; urgency=low
-
- * New upstream release. Closes: #518769.
-
- -- Bradley Smith <bradsmith at debian.org> Sun, 08 Mar 2009 13:29:33 +0000
-
-mathgl (1.8-1) unstable; urgency=low
-
- * Initial release. Closes: #510378.
-
- -- Bradley Smith <bradsmith at debian.org> Thu, 01 Jan 2009 11:27:32 +0000
diff --git a/debian/control~ b/debian/control~
deleted file mode 100644
index 4be9e4a..0000000
--- a/debian/control~
+++ /dev/null
@@ -1,164 +0,0 @@
-Source: mathgl
-Section: science
-Priority: optional
-Maintainer: Debian Science Maintainers <debian-science-maintainers at lists.alioth.debian.org>
-Uploaders: Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr>, D Haley <mycae at yahoo.com>
-DM-Upload-Allowed: yes
-Build-Depends: debhelper (>= 7.2.3~), libltdl-dev, libgsl0-dev, freeglut3-dev,
- libgl1-mesa-dev | libgl-dev, libpng-dev, libhdf5-dev,
- libjpeg-dev, libtiff-dev, libfltk1.3-dev | libfltk-dev, libqt4-dev, libwxgtk2.8-dev, swig,
- texinfo, texi2html, texlive, texlive-generic-recommended, octave3.2-headers,
- libgif-dev, autoconf, automake, python, python-dev, python-numpy, python-support,
- libhdf4-dev, chrpath
-Standards-Version: 3.9.2
-Homepage: http://mathgl.sourceforge.net/index.html
-Vcs-Git: git://git.debian.org/debian-science/packages/mathgl.git
-Vcs-Browser: http://git.debian.org/?p=debian-science/packages/mathgl.git
-
-Package: mathgl
-Architecture: any
-Section: libs
-Depends: ${shlibs:Depends}, ${misc:Depends}, libmgl5 (= ${binary:Version})
-Description: library for scientific graphs. (utlities and examples)
- A free cross-platform library of fast C++ routines for plotting data in up
- to 3 dimensions. It can export plots to bitmaps and vector EPS, SVG, IDTF
- files. There are simple window interfaces based on GLUT, FLTK and/or Qt.
- MathGL can also be used in the console. There are interfaces to a set of
- languages, such as, C, Fortran, Pascal, Forth, Python, Octave.
- .
- This package contains MathGL utilities and examples.
-
-Package: mathgl-doc-en
-Architecture: all
-Section: doc
-Depends: dpkg (>= 1.15.4) | install-info, ${misc:Depends}
-Replaces: mathgl-doc
-Description: library for scientific graphs. (English documentation)
- A free cross-platform library of fast C++ routines for plotting data in up
- to 3 dimensions. It can export plots to bitmaps and vector EPS, SVG, IDTF
- files. There are simple window interfaces based on GLUT, FLTK and/or Qt.
- MathGL can also be used in the console. There are interfaces to a set of
- languages, such as, C, Fortran, Pascal, Forth, Python, Octave.
- .
- This package contains the MathGL documentation in English.
-
-Package: mathgl-doc-ru
-Architecture: all
-Section: doc
-Depends: dpkg (>= 1.15.4) | install-info, ${misc:Depends}
-Replaces: mathgl-doc
-Description: library for scientific graphs. (Russian documentation)
- A free cross-platform library of fast C++ routines for plotting data in up
- to 3 dimensions. It can export plots to bitmaps and vector EPS, SVG, IDTF
- files. There are simple window interfaces based on GLUT, FLTK and/or Qt.
- MathGL can also be used in the console. There are interfaces to a set of
- languages, such as, C, Fortran, Pascal, Forth, Python, Octave.
- .
- This package contains the MathGL documentation in Russian.
-
-Package: libmgl5
-Architecture: any
-Section: libs
-Depends: ${shlibs:Depends}, ${misc:Depends}, libmgl-data
-Description: library for scientific graphs. (main runtime library)
- A free cross-platform library of fast C++ routines for plotting data in up
- to 3 dimensions. It can export plots to bitmaps and vector EPS, SVG, IDTF
- files. There are simple window interfaces based on GLUT, FLTK and/or Qt.
- MathGL can also be used in the console. There are interfaces to a set of
- languages, such as, C, Fortran, Pascal, Forth, Python, Octave.
- .
- This package contains the shared object files.
-
-Package: libmgl-data
-Architecture: all
-Section: misc
-Depends: ${misc:Depends}
-Description: library for scientific graphs. (data files)
- A free cross-platform library of fast C++ routines for plotting data in up
- to 3 dimensions. It can export plots to bitmaps and vector EPS, SVG, IDTF
- files. There are simple window interfaces based on GLUT, FLTK and/or Qt.
- MathGL can also be used in the console. There are interfaces to a set of
- languages, such as, C, Fortran, Pascal, Forth, Python, Octave.
- .
- This package contains the MathGL data files.
-
-Package: libmgl-dev
-Architecture: any
-Section: libdevel
-Depends: libmgl5 (= ${binary:Version}), ${misc:Depends},
- libmgl-fltk5 (= ${binary:Version}), libmgl-qt5 (= ${binary:Version}),
- libmgl-wx5 (= ${binary:Version}), libmgl-glut5 (= ${binary:Version}),
- libgsl0-dev, libpng-dev, libgl1-mesa-dev | libgl-dev
-Description: library for scientific graphs. (development files)
- A free cross-platform library of fast C++ routines for plotting data in up
- to 3 dimensions. It can export plots to bitmaps and vector EPS, SVG, IDTF
- files. There are simple window interfaces based on GLUT, FLTK and/or Qt.
- MathGL can also be used in the console. There are interfaces to a set of
- languages, such as, C, Fortran, Pascal, Forth, Python, Octave.
- .
- This package contains the development files.
-
-Package: libmgl-fltk5
-Architecture: any
-Section: libs
-Depends: ${shlibs:Depends}, ${misc:Depends}, libmgl5 (= ${binary:Version})
-Description: library for scientific graphs. (FLTK runtime library)
- A free cross-platform library of fast C++ routines for plotting data in up
- to 3 dimensions. It can export plots to bitmaps and vector EPS, SVG, IDTF
- files. There are simple window interfaces based on GLUT, FLTK and/or Qt.
- MathGL can also be used in the console. There are interfaces to a set of
- languages, such as, C, Fortran, Pascal, Forth, Python, Octave.
- .
- This package contains the FLTK frontend.
-
-Package: libmgl-qt5
-Architecture: any
-Section: libs
-Depends: ${shlibs:Depends}, ${misc:Depends}, libmgl5 (= ${binary:Version})
-Description: library for scientific graphs. (Qt runtime library)
- A free cross-platform library of fast C++ routines for plotting data in up
- to 3 dimensions. It can export plots to bitmaps and vector EPS, SVG, IDTF
- files. There are simple window interfaces based on GLUT, FLTK and/or Qt.
- MathGL can also be used in the console. There are interfaces to a set of
- languages, such as, C, Fortran, Pascal, Forth, Python, Octave.
- .
- This package contains the Qt4 frontend.
-
-Package: libmgl-wx5
-Architecture: any
-Section: libs
-Depends: ${shlibs:Depends}, ${misc:Depends}, libmgl5 (= ${binary:Version})
-Description: library for scientific graphs. (wxWidgets runtime library)
- A free cross-platform library of fast C++ routines for plotting data in up
- to 3 dimensions. It can export plots to bitmaps and vector EPS, SVG, IDTF
- files. There are simple window interfaces based on GLUT, FLTK and/or Qt.
- MathGL can also be used in the console. There are interfaces to a set of
- languages, such as, C, Fortran, Pascal, Forth, Python, Octave.
- .
- This package contains the wxWidgets frontend.
-
-Package: libmgl-glut5
-Architecture: any
-Section: libs
-Depends: ${shlibs:Depends}, ${misc:Depends}, libmgl5 (= ${binary:Version})
-Description: library for scientific graphs. (GLUT runtime library)
- A free cross-platform library of fast C++ routines for plotting data in up
- to 3 dimensions. It can export plots to bitmaps and vector EPS, SVG, IDTF
- files. There are simple window interfaces based on GLUT, FLTK and/or Qt.
- MathGL can also be used in the console. There are interfaces to a set of
- languages, such as, C, Fortran, Pascal, Forth, Python, Octave.
- .
- This package containst the GLUT frontend.
-
-Package: python-mathgl
-Architecture: any
-Section: python
-Depends: ${shlibs:Depends}, ${misc:Depends}, ${python:Depends}, python-numpy-abi9
-Description: library for scientific graphs. (Python module)
- A free cross-platform library of fast C++ routines for plotting data in up
- to 3 dimensions. It can export plots to bitmaps and vector EPS, SVG, IDTF
- files. There are simple window interfaces based on GLUT, FLTK and/or Qt.
- MathGL can also be used in the console. There are interfaces to a set of
- languages, such as, C, Fortran, Pascal, Forth, Python, Octave.
- .
- This package provides the Python module for mathgl.
diff --git a/debian/libmgl-fltk5.symbols b/debian/libmgl-fltk5.symbols
index 1ae3f5d..08391fc 100644
--- a/debian/libmgl-fltk5.symbols
+++ b/debian/libmgl-fltk5.symbols
@@ -60,9 +60,9 @@ libmgl-fltk.so.5 libmgl-fltk5 #MINVER#
_ZN9Fl_MathGLD2Ev at Base 1.11
(arch=!powerpcspe)_ZN9Fl_PixmapC1EPKPKc at Base 1.11
_ZN9Fl_PixmapC2EPKPKc at Base 1.11
- _ZN9Fl_Widget12as_gl_windowEv at Base 1.11
- _ZN9Fl_Widget8as_groupEv at Base 1.11
- _ZN9Fl_Widget9as_windowEv at Base 1.11
+ (optional)_ZN9Fl_Widget12as_gl_windowEv at Base 1.11
+ (optional)_ZN9Fl_Widget8as_groupEv at Base 1.11
+ (optional)_ZN9Fl_Widget9as_windowEv at Base 1.11
_ZTI12mglGraphFLTK at Base 1.11
_ZTI9Fl_MathGL at Base 1.11
_ZTS12mglGraphFLTK at Base 1.11
diff --git a/debian/libmgl5.symbols b/debian/libmgl5.symbols
index 3e09928..f26b114 100644
--- a/debian/libmgl5.symbols
+++ b/debian/libmgl5.symbols
@@ -131,7 +131,8 @@ libmgl.so.5 libmgl5 #MINVER#
_Z11mgl_fgetstrP8_IO_FILE at Base 1.11
_Z11mgl_fit__dfPK10gsl_vectorPvP10gsl_matrix at Base 1.11
_Z11mgl_init_raiPKfP6mgl_ap at Base 1.11
- _Z11mgl_read_gzPv at Base 1.11
+ (optional)_Z11mgl_read_gzPv at Base 1.11
+ _Z11mgl_read_gzP8gzFile_s at Base 1.11
_Z11mgl_spline3PfS_iifRf at Base 1.11
_Z11mgl_spline5PfS_iifRf at Base 1.11
_Z11mgl_strtrimPc at Base 1.11
diff --git a/debian/patches/mgl-mgl-eps-cpp.patch b/debian/patches/mgl-mgl-eps-cpp.patch
new file mode 100644
index 0000000..2c10522
--- /dev/null
+++ b/debian/patches/mgl-mgl-eps-cpp.patch
@@ -0,0 +1,178 @@
+Fix conversion issues between distinct pointer types
+--- a/mgl/mgl_eps.cpp
++++ b/mgl/mgl_eps.cpp
+@@ -19,7 +19,7 @@
+ ***************************************************************************/
+ #include <stdlib.h>
+ #include <time.h>
+-#include <zlib.h>
++#include <zlib.h>
+ #include "mgl/mgl_eps.h"
+ #include "mgl/mgl_c.h"
+ #include "mgl/mgl_f.h"
+@@ -85,7 +85,7 @@
+ a.x[0]=p1[0]; a.y[0]=p1[1]; a.x[1]=p2[0]; a.y[1]=p2[1];
+ a.zz[0]=p1[2]; a.zz[1]=p2[2];
+ a.c[0]=(c1[0]+c2[0])/2; a.c[1]=(c1[1]+c2[1])/2; a.c[2]=(c1[2]+c2[2])/2;
+-// a.c[0]=c1[0]; a.c[1]=c1[1]; a.c[2]=c1[2];
++// a.c[0]=c1[0]; a.c[1]=c1[1]; a.c[2]=c1[2];
+ a.style=all? 0xffff:PDef; a.s = pPos;
+ add_prim(a);
+ pPos = fmod(pPos+hypot(p2[0]-p1[0], p2[1]-p1[1])/pw/1.5, 16);
+@@ -197,7 +197,7 @@
+ {
+ mglPrim a(4);
+ a.s = fscl/PlotFactor; a.w = ftet;
+- a.x[0] = (xPos - zoomx1*Width) /zoomx2;
++ a.x[0] = (xPos - zoomx1*Width) /zoomx2;
+ a.y[0] = (yPos - zoomy1*Height)/zoomy2;
+ a.x[1] = x; a.y[1] = y;
+ a.zz[1] = f/fnt->GetFact(s&3);
+@@ -260,10 +260,10 @@
+ }
+ //-----------------------------------------------------------------------------
+ void mglGraphPS::add_light(mreal *b, mreal n0,mreal n1, mreal n2)
+-{
+- mreal n[3]={n0,n1,n2};
+- unsigned char r[4];
+- col2int(b,n,r);
++{
++ mreal n[3]={n0,n1,n2};
++ unsigned char r[4];
++ col2int(b,n,r);
+ b[0]=r[0]/255.; b[1]=r[1]/255.; b[2]=r[2]/255.; b[3]=r[3]/255.;
+ }
+ //-----------------------------------------------------------------------------
+@@ -303,9 +303,9 @@
+ if(!Finished) Finish();
+ time_t now;
+ time(&now);
+-
+- bool gz = fname[strlen(fname)-1]=='z';
+- void *fp = gz ? gzopen(fname,"wt") : fopen(fname,"wt");
++
++ bool gz = fname[strlen(fname)-1]=='z';
++ void *fp = gz ? static_cast<void *>(gzopen(fname,"wt")) : fopen(fname,"wt");
+ if(!fp) { SetWarn(mglWarnOpen,fname); return; }
+ mgl_printf(fp, gz, "%%!PS-Adobe-3.0 EPSF-3.0\n%%%%BoundingBox: 0 0 %d %d\n",Width,Height);
+ mgl_printf(fp, gz, "%%%%Creator: MathGL library\n%%%%Title: %s\n",descr ? descr : fname);
+@@ -320,9 +320,9 @@
+ mgl_printf(fp, gz, "/m_c {ss 0.3 mul 0 360 arc} def\n");
+ mgl_printf(fp, gz, "/d0 {[] 0 setdash} def\n/sd {setdash} def\n");
+
+- bool m_p=false,m_x=false,m_d=false,m_v=false,m_t=false,
+- m_s=false,m_a=false,m_o=false,m_T=false,
+- m_V=false,m_S=false,m_D=false,m_Y=false,m_l=false,
++ bool m_p=false,m_x=false,m_d=false,m_v=false,m_t=false,
++ m_s=false,m_a=false,m_o=false,m_T=false,
++ m_V=false,m_S=false,m_D=false,m_Y=false,m_l=false,
+ m_L=false,m_r=false,m_R=false,m_X=false,m_P=false;
+ register long i;
+ // add mark definition if present
+@@ -336,11 +336,11 @@
+ if(P[i].m=='S') m_S = true; if(P[i].m=='D') m_D = true;
+ if(P[i].m=='V') m_V = true; if(P[i].m=='T') m_T = true;
+ if(P[i].m=='<') m_l = true; if(P[i].m=='L') m_L = true;
+- if(P[i].m=='>') m_r = true; if(P[i].m=='R') m_R = true;
+- if(P[i].m=='Y') m_Y = true;
++ if(P[i].m=='>') m_r = true; if(P[i].m=='R') m_R = true;
++ if(P[i].m=='Y') m_Y = true;
+ if(P[i].m=='P') m_P = true; if(P[i].m=='X') m_X = true;
+- }
+- if(m_P) { m_p=true; m_s=true; }
++ }
++ if(m_P) { m_p=true; m_s=true; }
+ if(m_X) { m_x=true; m_s=true; }
+ if(m_p) mgl_printf(fp, gz, "/m_p {sm 0 rm s2 0 rl sm sm rm 0 s2 rl d0} def\n");
+ if(m_x) mgl_printf(fp, gz, "/m_x {sm sm rm s2 s2 rl 0 sm 2 mul rm sm 2 mul s2 rl d0} def\n");
+@@ -453,7 +453,7 @@
+ }
+ for(i=0;i<pNum;i++) if(P[i].type==-1) P[i].type = 1;
+ mgl_printf(fp, gz, "\nshowpage\n%%%%EOF\n");
+- if(gz) gzclose(fp); else fclose((FILE *)fp);
++ if(gz) gzclose((gzFile)fp); else fclose((FILE *)fp);
+ }
+ //-----------------------------------------------------------------------------
+ void mglGraphPS::WriteSVG(const char *fname,const char *descr)
+@@ -463,8 +463,8 @@
+ time_t now;
+ time(&now);
+
+- bool gz = fname[strlen(fname)-1]=='z';
+- void *fp = gz ? gzopen(fname,"wt") : fopen(fname,"wt");
++ bool gz = fname[strlen(fname)-1]=='z';
++ void *fp = gz ? static_cast<void *>(gzopen(fname,"wt")) : fopen(fname,"wt");
+ if(!fp) { SetWarn(mglWarnOpen,fname); return; }
+ mgl_printf(fp, gz, "<?xml version=\"1.0\" standalone=\"no\"?>\n");
+ mgl_printf(fp, gz, "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 20000303 Stylable//EN\" \"http://www.w3.org/TR/2000/03/WD-SVG-20000303/DTD/svg-20000303-stylable.dtd\">\n");
+@@ -576,10 +576,10 @@
+ // const char *dash[]={"", "8 8","4 4","1 3","7 4 1 4","3 2 1 2"};
+ mgl_printf(fp, gz, "<g stroke=\"#%02x%02x%02x\"",
+ int(255*P[i].c[0]),int(255*P[i].c[1]),int(255*P[i].c[2]));
+- if(P[i].style)
+- {
+- mgl_printf(fp, gz, " stroke-dasharray=\"%s\"", mgl_get_dash(P[i].style,P[i].w));
+- mgl_printf(fp, gz, " stroke-dashoffset=\"%g\"", P[i].s*P[i].w);
++ if(P[i].style)
++ {
++ mgl_printf(fp, gz, " stroke-dasharray=\"%s\"", mgl_get_dash(P[i].style,P[i].w));
++ mgl_printf(fp, gz, " stroke-dashoffset=\"%g\"", P[i].s*P[i].w);
+ }
+ if(P[i].w>1) mgl_printf(fp, gz, " stroke-width=\"%g\"", P[i].w);
+ memcpy(cp,P[i].c,3*sizeof(mreal));
+@@ -620,7 +620,7 @@
+
+ for(i=0;i<pNum;i++) if(P[i].type==-1) P[i].type = 1;
+ mgl_printf(fp, gz, "</g></svg>");
+- if(gz) gzclose(fp); else fclose((FILE *)fp);
++ if(gz) gzclose((gzFile)fp); else fclose((FILE *)fp);
+ }
+ //-----------------------------------------------------------------------------
+ void mglGraphPS::Finish()
+@@ -643,31 +643,31 @@
+ #define imax(a,b) (a)>(b) ? (a) : (b)
+ #define imin(a,b) (a)<(b) ? (a) : (b)
+ void mglPrim::Draw(mglGraphPS *gr)
+-{
+- mreal pp[12]={x[0],y[0],z, x[1],y[1],z, x[2],y[2],z, x[3],y[3],z};
+- gr->draw_prim(this, pp, c);
+-}
++{
++ mreal pp[12]={x[0],y[0],z, x[1],y[1],z, x[2],y[2],z, x[3],y[3],z};
++ gr->draw_prim(this, pp, c);
++}
+ //-----------------------------------------------------------------------------
+-void mglGraphPS::draw_prim(mglPrim *pr, mreal *pp, mreal *c)
+-{
++void mglGraphPS::draw_prim(mglPrim *pr, mreal *pp, mreal *c)
++{
+ ObjId = pr->id; memcpy(CDef,c,4*sizeof(mreal));
+- bool ul=UseLight; UseLight=false;
+- int m = pr->m, s = pr->style;
+- switch(pr->type)
+- {
+- case 0: mglGraphAB::mark_plot(pp,pr->m); break;
+- case 1: PDef = pr->style; pPos = pr->s;
++ bool ul=UseLight; UseLight=false;
++ int m = pr->m, s = pr->style;
++ switch(pr->type)
++ {
++ case 0: mglGraphAB::mark_plot(pp,pr->m); break;
++ case 1: PDef = pr->style; pPos = pr->s;
+ mglGraphAB::line_plot(pp,pp+3,c,c); break;
+ case 2: mglGraphAB::trig_plot(pp,pp+3,pp+6,c,c,c); break;
+ case 3: mglGraphAB::quad_plot(pp,pp+3,pp+6,pp+9,c,c,c,c); break;
+ case 4:
+ mreal pf=PlotFactor; Push();
+- SetPosScale(pp[0],pp[1],pp[2],pr->s*PlotFactor); RotateN(pr->w,0,0,1);
++ SetPosScale(pp[0],pp[1],pp[2],pr->s*PlotFactor); RotateN(pr->w,0,0,1);
+ mglGraphAB::Glyph(pr->x[1],pr->y[1],pr->zz[1]*fnt->GetFact(s&3),s,m,0);
+- Pop(); PlotFactor=pf;
++ Pop(); PlotFactor=pf;
+ break;
+ }
+- UseLight=ul;
++ UseLight=ul;
+ }
+ //-----------------------------------------------------------------------------
+ void mglGraphPS::pnt_plot(long x,long y, mreal, unsigned char c[4])
diff --git a/debian/patches/mgl-mgl-export-cpp.patch b/debian/patches/mgl-mgl-export-cpp.patch
new file mode 100644
index 0000000..822937e
--- /dev/null
+++ b/debian/patches/mgl-mgl-export-cpp.patch
@@ -0,0 +1,30 @@
+Fix conversion issues between distinct pointer types
+--- a/mgl/mgl_export.cpp
++++ b/mgl/mgl_export.cpp
+@@ -232,7 +232,7 @@
+ va_start(lst,str);
+ vsprintf(buf,str,lst);
+ va_end(lst);
+- if(gz) gzprintf(fp, "%s", buf);
++ if(gz) gzprintf((gzFile)fp, "%s", buf);
+ else fprintf((FILE *)fp, "%s", buf);
+ }
+ //---------------------------------------------------------------------------
+@@ -243,7 +243,7 @@
+ register long i,j;
+ bool gz = fname[strlen(fname)-1]=='z';
+
+- void *fp = gz ? gzopen(fname,"wt") : fopen(fname,"wt");
++ void *fp = gz ? static_cast<void *>(gzopen(fname,"wt")) : fopen(fname,"wt");
+ mgl_printf(fp, gz, "%%!PS-Adobe-3.0 EPSF-3.0\n%%%%BoundingBox: 0 0 %d %d\n",w,h);
+ mgl_printf(fp, gz, "%%%%Creator: MathGL library\n%%%%Title: %s\n", fname);
+ mgl_printf(fp, gz, "%%%%CreationDate: %s\n",ctime(&now));
+@@ -255,7 +255,7 @@
+ mgl_printf(fp, gz, "%02x%02x%02x",p[j][3*i],p[j][3*i+1],p[j][3*i+2]);
+ }
+ mgl_printf(fp, gz, "\n\nshowpage\n%%%%EOF\n");
+- if(gz) gzclose(fp); else fclose((FILE *)fp);
++ if(gz) gzclose((gzFile)fp); else fclose((FILE *)fp);
+ return 0;
+ }
+ //-----------------------------------------------------------------------------
diff --git a/debian/patches/series b/debian/patches/series
index bb58b3d..1428abd 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,4 +1,6 @@
texinfo-png-Makefile.patch
+mgl-mgl-eps-cpp.patch
+mgl-mgl-export-cpp.patch
dircategory-and-direntry-mathgl-en-texi.patch
dircategory-and-direntry-mathgl-ru-texi.patch
dircategory-and-direntry-mgl-ru-texi.patch
diff --git a/debian/patches/texinfo-Makefile.patch b/debian/patches/texinfo-Makefile.patch
index ce7821c..11f07cc 100644
--- a/debian/patches/texinfo-Makefile.patch
+++ b/debian/patches/texinfo-Makefile.patch
@@ -13,7 +13,7 @@ Fix removal of files texinfo/mgl_ru.info-*
TEXI2PDF = texi2pdf
--- a/texinfo/Makefile.in
+++ b/texinfo/Makefile.in
-@@ -296,7 +296,8 @@
+@@ -298,7 +298,8 @@
top_srcdir = @top_srcdir@
SUBDIRS = png .
CLEANFILES = mathgl_en.info mathgl_en.info-1 mathgl_en.info-2 mathgl_en.info-3 mgl_en.info \
diff --git a/lang/numpy.i b/lang/numpy.i
index 3757077..72fc4f9 100644
--- a/lang/numpy.i
+++ b/lang/numpy.i
@@ -111,7 +111,7 @@
if (PyModule_Check( py_obj)) return "module" ;
if (PyInstance_Check(py_obj)) return "instance" ;
- return "unknown type";
+ return "unkown type";
}
/* Given a NumPy typecode, return a string describing the type.
diff --git a/texinfo/Makefile.am b/texinfo/Makefile.am
index 82ec329..d35c1b3 100644
--- a/texinfo/Makefile.am
+++ b/texinfo/Makefile.am
@@ -1,8 +1,7 @@
SUBDIRS = png .
CLEANFILES = mathgl_en.info mathgl_en.info-1 mathgl_en.info-2 mathgl_en.info-3 mgl_en.info \
-mathgl_ru.info mathgl_ru.info-1 mathgl_ru.info-2 mathgl_ru.info-3 mathgl_ru.info-4 mgl_ru.info \
-mgl_ru.info-*
+mathgl_ru.info mathgl_ru.info-1 mathgl_ru.info-2 mathgl_ru.info-3 mathgl_ru.info-4 mgl_ru.info
MAKEINFOHTML = texi2html
TEXI2PDF = texi2pdf
diff --git a/texinfo/Makefile.in b/texinfo/Makefile.in
index 37bc413..a9cf8ed 100644
--- a/texinfo/Makefile.in
+++ b/texinfo/Makefile.in
@@ -298,8 +298,7 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
SUBDIRS = png .
CLEANFILES = mathgl_en.info mathgl_en.info-1 mathgl_en.info-2 mathgl_en.info-3 mgl_en.info \
-mathgl_ru.info mathgl_ru.info-1 mathgl_ru.info-2 mathgl_ru.info-3 mathgl_ru.info-4 mgl_ru.info \
-mgl_ru.info-*
+mathgl_ru.info mathgl_ru.info-1 mathgl_ru.info-2 mathgl_ru.info-3 mathgl_ru.info-4 mgl_ru.info
MAKEINFOHTML = texi2html
TEXI2PDF = texi2pdf
diff --git a/texinfo/mathgl_en.texi b/texinfo/mathgl_en.texi
index f48ac50..dce0911 100644
--- a/texinfo/mathgl_en.texi
+++ b/texinfo/mathgl_en.texi
@@ -25,10 +25,10 @@ supports it in developing GNU and promoting software freedom.''
@end quotation
@end copying
- at dircategory MathGL documentation system
- at direntry
-* MathGL: (mathgl). The library for scientific graphics.
- at end direntry
+ at c @dircategory MathGL documentation system
+ at c @direntry
+ at c * MathGL: (mathgl). The library for scientific graphics.
+ at c @end direntry
@titlepage
@title MathGL
diff --git a/texinfo/mathgl_ru.texi b/texinfo/mathgl_ru.texi
index 0e98a07..ea267fb 100644
--- a/texinfo/mathgl_ru.texi
+++ b/texinfo/mathgl_ru.texi
@@ -27,10 +27,10 @@ supports it in developing GNU and promoting software freedom.''
@end quotation
@end copying
- at dircategory MathGL documentation system
- at direntry
-* MathGL: (mathgl). The library for scientific graphics.
- at end direntry
+ at c @dircategory MathGL documentation system
+ at c @direntry
+ at c * MathGL: (mathgl). The library for scientific graphics.
+ at c @end direntry
@titlepage
@title MathGL
diff --git a/texinfo/mgl_en.texi b/texinfo/mgl_en.texi
index 68d7c34..66c5f81 100644
--- a/texinfo/mgl_en.texi
+++ b/texinfo/mgl_en.texi
@@ -25,10 +25,10 @@ supports it in developing GNU and promoting software freedom.''
@end quotation
@end copying
- at dircategory MathGL documentation system
- at direntry
-* MathGL: (mathgl). The library for scientific graphics.
- at end direntry
+ at c @dircategory MathGL documentation system
+ at c @direntry
+ at c * MathGL: (mathgl). The library for scientific graphics.
+ at c @end direntry
@titlepage
@title MGL script language
diff --git a/texinfo/mgl_ru.info-1 b/texinfo/mgl_ru.info-1
new file mode 100644
index 0000000..15034fc
--- /dev/null
+++ b/texinfo/mgl_ru.info-1
@@ -0,0 +1,6077 @@
+This is mgl_ru.info, produced by makeinfo version 4.13 from mgl_ru.texi.
+
+Это документация для MathGL (версии 1.11) - библиотеки классов и
+функций для построения научной графики. Пожалуйста сообщайте о любых
+ошибках в этом руководстве на <mathgl.abalakin at gmail.org>.
+
+ Copyright (C) 2009 Алексей Балакин.
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.2 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, with the Front-Cover Texts
+ being "A GNU Manual," and with the Back-Cover Texts as in (a)
+ below. A copy of the license is included in the section entitled
+ "GNU Free Documentation License."
+
+ (a) The FSF's Back-Cover Text is: "You have the freedom to copy
+ and modify this GNU manual. Buying copies from the FSF supports
+ it in developing GNU and promoting software freedom."
+
+INFO-DIR-SECTION MathGL documentation system
+START-INFO-DIR-ENTRY
+* MathGL: (mathgl). The library for scientific graphics.
+END-INFO-DIR-ENTRY
+
+
+File: mgl_ru.info, Node: Top, Next: MGL interface, Up: (dir)
+
+Язык MGL
+************
+
+Это документация для языка MGL (версии 1.11). Пожалуйста сообщайте о
+любых ошибках в этом руководстве на <mathgl.abalakin at gmail.org>.
+Дополнительную информацию о MGL и MathGL можно найти на домашней
+странице проекта `http://mathgl.sourceforge.net/'.
+
+ Copyright (C) 2010 Алексей Балакин.
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.2 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, with the Front-Cover Texts
+ being "A GNU Manual," and with the Back-Cover Texts as in (a)
+ below. A copy of the license is included in the section entitled
+ "GNU Free Documentation License."
+
+ (a) The FSF's Back-Cover Text is: "You have the freedom to copy
+ and modify this GNU manual. Buying copies from the FSF supports
+ it in developing GNU and promoting software freedom."
+
+* Menu:
+
+* MGL interface::
+* Examples::
+* Samples::
+* Copying This Manual::
+* Index::
+
+
+File: mgl_ru.info, Node: MGL interface, Next: Examples, Up: Top
+
+1 Язык MGL
+**************
+
+MathGL имеет встроенный скриптовый язык MGL для обработки и отображения
+данных. Скрипты MGL можно использовать как независимо (программами
+UDAV, mgl2png, mgl2eps, mgl2svg и пр., *note Utilities::) так и
+вызовами библиотеки.
+
+ Язык MGL достаточно простой. Каждая строка - отдельная команда.
+Первое слово - имя команды, а все остальные ее аргументы. Команда может
+иметь до 1000 аргументов (по крайней мере сейчас). Слова разделяются
+одно от другого пробелом или символом табуляции. Различий между верхним
+и нижним индексом нет, т.е. переменные A и A идентичны. Символ `#'
+начинает комментарий - все символы после него игнорируются до конца
+строки. Исключением является случай, когда `#' входит в строку. Опции
+команды указываются после символа `;' (*note Command options::). Символ
+`:' начинает новую команду (подобно переводу строки) если он расположен
+не внутри скобок или строки.
+
+ Если строка содержит ссылки на внешние параметры (`$0', `$1' ...
+`$9') или макроопределения (`$a', `$b' ... `$z'), то текущие значения
+параметров/макроопределений подставляются в строку вместо ссылки до
+выполнением команды. Это позволяет использовать один и тот же скрипт
+при различных входных параметрах командной строки или вводить
+макроопределения по ходу исполнения команд скрипта.
+
+ Аргументы команды могут быть строками, переменными или числами.
+ * Строка - произвольный набор символов между метками `''.
+
+ * Обычно переменная имеет имя, состоящее из букв и чисел (должно
+ начинаться с буквы и не быть длиннее 64 символов). В качестве
+ переменной можно использовать временные массивы, включающие в себя:
+ * срезы ("подмассивы") массивов данных (подобно команде *note
+ subdata::). Например, `a(1)' или `a(1,:)' или `a(1,:,:)' -
+ вторая строка массива A, `a(:,2)' или `a(:,2,:)' - третий
+ столбец, `a(:,:,0)' - первый срез и т.д. Также можно выделить
+ часть массива с m-го по n-ый элемент `a(m:n,:,:)' или просто
+ `a(m:n)'.
+
+ * произвольные комбинации столбцов данных (например,
+ `a('n*w^2/exp(t)')'), если столбцы данных были именованы
+ командой *note idset:: или в файле данных (в строке
+ начинающейся с `##').
+
+ * произвольное выражение из существующих переменных и констант.
+ Например, `sqrt(dat(:,5)+1)' даст временный массив данных с
+ элементами равными `tmp[i,j] = sqrt(dat[i,5,j]+1)'.
+
+ * массивы с элементами заданными в квадратных скобках [],
+ разделенные `,'. При этом внутри выражения не должно быть
+ пробелов! Например, `[1,2,3]' даст временный массив из 3
+ элементов {1, 2, 3}; `[[11,12],[21,22]]' даст матрицу 2*2 и
+ т.д. Элементами такой конструкции могут быть и массивы если
+ их размерности одинаковые, например `[v1,v2,...,vn]'.
+
+ * результат команд построения новых данных (*note Make another
+ data::), если они заключены в фигурные скобки {}. Например,
+ `{sum dat 'x'}' даст временный массив, который есть результат
+ суммирования DAT вдоль 'x'. Это такой же массив как и TMP,
+ полученный командой `sum tmp dat 'x''. При этом можно
+ использовать вложенные конструкции, например `{sum {max dat
+ 'z'} 'x'}'.
+ Временные массивы не могут стоять в качестве первого аргумента
+ команд, создающих массивы (например, `new', `read', `hist' и т.д.).
+
+ * К скалярным переменным, кроме собственно чисел, относятся:
+ специальные переменные `nan=#QNAN, pi=3.1415926..., on=1, off=0,
+ :=-1', переменные с суффиксами (*note Suffixes::), переменные
+ определенные командой *note define::. Также массивы размером 1x1x1
+ считаются скалярами (например, `pi/dat.nx').
+ Перед первым использованием все переменные должны быть определены с
+помощью команд, создающих массивы (*note new::, *note var::, *note
+list::, *note copy::, *note read::, *note hist::, *note sum:: и др.,
+*note Data create:: и *note Make another data::).
+
+ Команды могут иметь несколько наборов аргументов (например, `plot
+ydat' и `plot xdat ydat'). Все аргументы команды для выбранного набора
+должны быть указаны, однако часть из них могут иметь значения по
+умолчанию. Такие аргументы в описании команд будут помещены в
+квадратные скобки [], например `plot ydat ['stl'='' zval=nan]'. При
+этом запись `[arg1 arg2 arg3 ...]' подразумевает `[arg1 [arg2 [arg3
+...]]]', т.е. опускать можно только аргументы с конца, если вы согласны
+с их значениями по умолчанию. Например, `plot ydat '' 1' или `plot ydat
+''' правильно, а `plot ydat 1' не правильно (аргумент `'stl'' пропущен).
+
+ Все команды MGL можно разделить на несколько групп. В дальнейшем
+будет использованы следующие обозначения при описании команд: имя
+команды выделено жирным, строки заключены в одинарные кавычки ",
+переменные выделены курсивом, числа (скаляры) выделены моноширинным
+шрифтом. Необязательные аргументы будут помещены в квадратные скобки []
+и показаны их значения по умолчанию. Подробную информацию о цвете и
+стиле линий (*note Line styles::), цветовых схемах (*note Color
+scheme::), стиле текста и символах TeX (*note Font styles::), текстовых
+формулах (*note Textual formulas::) можно найти в соответствующих
+разделах.
+
+* Menu:
+
+
+* General concepts::
+* Graphics setup ::
+* Axis settings ::
+* Transformation matrix ::
+* Export to file ::
+* Primitives drawing ::
+* Text printing ::
+* Axis and Colorbar ::
+* Legend ::
+* 1D plotting ::
+* 2D plotting ::
+* 3D plotting ::
+* Dual plotting ::
+* Vector fields ::
+* Other plotting ::
+* Nonlinear fitting ::
+* Data create ::
+* Data filling ::
+* Rearrange data ::
+* File I/O ::
+* Make another data ::
+* Change data ::
+* Operators ::
+* Program flow ::
+* Command options ::
+* Suffixes::
+* Utilities::
+
+
+File: mgl_ru.info, Node: General concepts, Prev: Utilities, Up: MGL interface
+
+1.1 Основные принципы
+=====================================
+
+Возможности библиотеки MathGL довольно богаты - число только основных
+типов графиков превышает 50 видов. Кроме того, есть функции для
+обработки данных, настройки вида графика и пр. и пр. Тем не менее, я
+старался придерживаться единого стиля в порядке аргументов функций и
+способе их "настройки". В основном все ниже сказанное относится к
+функциям рисования различных графиков.
+
+ Всего основных концепций (базисных идей) четыре:
+ 1. *Все настройки графиков (стиль линий, цветовые схемы поверхностей,
+ стиль и цвет текста) задаются строками.* Это обеспечивает:
+ удобство для пользователя - короткую строку легче читать и здесь
+ тяжелее ошибиться, чем в большом списке параметров; переносимость
+ - строки выглядят одинаково на всех платформах и не надо
+ заботиться о типе и числе аргументов.
+
+ 2. *Все функции имеют "упрощенный" и "продвинутый" варианты.* Сделано
+ опять из-за удобства. В "упрощенном" варианте для построения
+ графика нужны только один-два массив(а) данных, которые
+ автоматически равнораспределяются в заданном диапазоне осей
+ координат. В "продвинутой" версии можно не только указать явно
+ диапазон построения графика, но и задать его параметрически.
+ Последнее позволяет легко строить довольно сложные кривые и
+ поверхности. В обоих вариантах функций порядок аргументов
+ стандартен: сначала идут массивы данных, потом необязательный
+ строковый параметр стиля графика, а далее - второстепенные
+ необязательные параметры для более точной настройки графика.
+
+ 3. *Все элементы рисунков векторные.* Изначально библиотека MathGL
+ была ориентированна на работу с научными данными, которые по своей
+ природе векторные (линии, грани, матрицы и т.д.). Поэтому
+ векторность используется во всех рисунках! Причем иногда даже в
+ ущерб производительности (например, при выводе шрифтов). Помимо
+ всего прочего, векторность позволяет легко масштабировать рисунок
+ - измените размер картинки в 2 раза, и рисунок пропорционально
+ растянется.
+
+ 4. *Новые графики не удаляют уже нарисованное.* Этот, в чем-то
+ неожиданный, подход позволяет создавать огромное количество
+ "комбинированных" графиков. Например, поверхность с наложенными
+ линиями уровня строится двумя последовательными вызовами функций
+ рисования поверхности и линий уровня (в любом порядке). И
+ совершенно не надо писать специальную функцию (как в Matlab и
+ некоторых других программах) для рисования этого графика. Примеров
+ таких графиков можно привести множество (см. раздел *note Hints::
+ и сайт программы `http://mathgl.sf.net/index.html').
+
+ Кроме основных концепций я хотел бы остановиться на нескольких, как
+оказалось, нетривиальных моментах - способе указания положения графика,
+осей координат и строковых параметров линий, поверхностей, текста.
+
+* Menu:
+
+* Coordinate axes::
+* Line styles::
+* Color scheme::
+* Font styles::
+* Textual formulas::
+
+
+File: mgl_ru.info, Node: Coordinate axes, Next: Line styles, Up: General concepts
+
+1.1.1 Оси координат
+-------------------------------
+
+Представление системы координат в MathGL состоит из двух частей.
+Вначале координаты нормируются в интервал MINxMAX (*note Axis
+settings::). Если флаг CUT установлен, то точки вне интервала
+отбрасываются, в противном случае, они проецируются на ограничивающий
+параллелепипед (*note Cutting::). Кроме того, отбрасываются точки
+внутри границ, определенных переменными CUTMINxCUTMAX и точки, для
+которых значение функции `CutOff'() не равно нулю. После этого формулы
+перехода в криволинейную систему координат `SetFunc()'применяются к
+каждой точке. Наконец, точка данных отображается с помощью одной из
+графических функций.
+
+ Величины MAX, MIN можно изменять вручную. Однако, после этого
+необходимо вызвать функцию `RecalcBorder()' для настройки графика.
+Более удобный и безопасный путь состоит в вызове функций `Axis(),
+SetRanges()' и др. В последнем случае функция `RecalcBorder()'
+вызывается автоматически. Размеры осей можно задавать и автоматически
+по минимальному и максимальному значениям массива данных. Для этого
+предназначены функции `XRange(), YRange(), ZRange()'. Второй не
+обязательный аргумент указывает, заменять ли новые значения диапазона
+изменения оси координат (по умолчанию) или только расширить уже
+существующий диапазон.
+
+ Точка пересечения осей координат задается переменной ORG и действует
+на последующие вызовы функций рисования осей координат и сетки. По
+умолчанию, если точка пересечения осей координат попадает вне диапазона
+осей координат, то она проецируется на границу области. Изменить такое
+поведение можно, задав AUTOORG=`false'. В случае, если одно из значений
+ORG равно NAN, то соответствующее значение будет выбрано автоматически.
+
+ Кроме привычных осей _x, y, z_ есть еще одна ось - цветовая шкала -
+ось _c_. Она используется при окрашивании поверхностей и задает границы
+изменения функции при окрашивании. При вызове `Axis()' ее границы
+автоматически устанавливаются равными Min.z и Max.z. Возможно и ручное
+изменение границ цветового интервала посредством вызова функции
+`CAxis()' или изменение границ по заданному массиву `CRange()'.
+Используйте `Colorbar()' для отображения цветовой шкалы.
+
+ Вид меток по осям определяется функцией `SetTicks()' (*note Axis
+settings::). Она имеет 3 аргумента: первый D задает шаг меток (если
+положительны) или их число (если отрицательны) или логарифмические
+метки (если равны нулю); второ NS задает число "подметок"; последний
+определяет начальную точку для меток (по умолчанию это точка
+пересечения осей). Функция SETTUNETICKS включает/выключает выделение
+общего множителя (большого или малого факторов в диапазоне) для меток
+осей координат. Наконец, если стандартный вид меток не устраивает
+пользователя, то их шаблон можно задать явно (можно использовать и ТеХ
+символы), воспользовавшись функциями `SetXTT(), SetYTT(). SetZTT().
+SetCTT()'. Кроме того, в качестве меток можно вывести произвольный
+текст использовав функцию `SetTicksVal()'.
+
+
+File: mgl_ru.info, Node: Line styles, Next: Color scheme, Prev: Coordinate axes, Up: General concepts
+
+1.1.2 Стиль линий
+---------------------------
+
+Стиль линии задается строкой, которая может содержать символ цвета
+(`wkrgbcymhRGBCYMHWlenupqLENUPQ'), тип пунктира (`-|;:ji' или пробел),
+ширину линии (`0123456789') и тип маркера (`o+xsd.^v' и модификатор
+`#'). Если пропущен цвет или тип пунктира, то используется значение по
+умолчанию с последним указанным цветом или значение из палитры (для
+*note 1D plotting::). По умолчанию палитры содержит следующие цвета:
+темно серый `H', синий `b', зеленый `g', красный `r', голубой `c',
+пурпурный `m', yellow `y', серый `h', сине-зеленый `l', небесно-синий
+`n', оранжевый `q', желто-зеленый `e', сине-фиолетовый `u', фиолетовый
+`p'.
+
+ Символы цвета те же, что и в классе mglColor (*note mglColor
+class::): `k' - черный, `r' - красный, `R' - темно красный, `g' -
+зеленый, `G' - темно зеленый, `b' - синий, `B' - темно синий, `c' -
+голубой, `C' - темно голубой, `m' - пурпурный, `M' - темно пурпурный,
+`y' - желтый, `Y' - темно желтый (золотой), `h' - серый, `H' - темно
+серый, `w' - белый, `W' - светло серый, `l' - сине-зеленый, `L' - темно
+сине-зеленый, `e' - желто-зеленый, `E' - темно желто-зеленый, `n' -
+небесно-синий, `N' - темно небесно-синий, `u' - сине-фиолетовый, `U' -
+темно сине-фиолетовый, `p' - фиолетовый, `P' - темно фиолетовый, `q' -
+оранжевый, `Q' - темно оранжевый (коричневый).
+
+ Тип пунктира: пробел - нет линии (для рисования только маркеров),
+`-' - сплошная линия (################), `|' - длинный пунктир
+(########________), `;' - пунктир (####____####____), `=' - короткий
+пунктир (##__##__##__##__), `:' - точки (#___#___#___#___), `j' -
+пунктир с точками (#######____#____), `i' - мелкий пунктир с точками
+(###__#__###__#__).
+
+ Типы маркеров: `o' - окружность, `+' - крест, `x' - косой крест, `s'
+- квадрат, `d' - ромб, `.' - точка, `^' - треугольник вверх, `v' -
+треугольник вниз, `<' - треугольник влево, `>' - треугольник вправо,
+`#*' - знак Y, `#+' - крест в квадрате, `#x' - косой крест в квадрате,
+`#.' - точка в окружности. Если в строке присутствует символ `#', то
+используются символы с заполнением.
+
+ [image src="../png/sample5.png" ]
+
+Стили линий и маркеров.
+
+ На конце и в начале линии можно выводить специальный символ
+(стрелку), если в строке указать один из символов: `A' - стрелка
+наружу, `V' - стрелка внутрь, `I' - поперечная черта, `K' - стрелка с
+чертой, `T' - треугольник, `S' - квадрат, `D' - ромб, `O' - круг, `_' -
+нет стрелки (по умолчанию). При этом действует следующее правило:
+первый символ определяет стрелку на конце линии, второй символ -
+стрелку в начале линии. Например, `r-A' - красная сплошная линия со
+стрелкой на конце, `b|AI' - синий пунктир со стрелкой на конце и чертой
+вначале, `_O' - линия с текущим стилем и кружком вначале. Эти стили
+действуют и при построении графиков (например, *note 1D plotting::).
+
+ [image src="../png/sampled.png" ]
+
+Стили стрелок.
+
+
+File: mgl_ru.info, Node: Color scheme, Next: Font styles, Prev: Line styles, Up: General concepts
+
+1.1.3 Цветовая схема
+---------------------------------
+
+Цветовая схема используется для определения цвета поверхностей, линий
+уровня и пр. Цветовая схема задается строкой _s_, которая содержит
+символы цвета (*note Line styles::) или символы `d#:|'. Символ `d'
+указывает на определение цвета в зависимости от положения точки в
+пространстве, а не по амплитуде данных. Символ `#' переключает
+рисование поверхности на сетчатое (для трехмерных поверхностей) или
+включает рисование сетки на поверхности. Символ `|' отключает
+интерполяцию цвета в цветовой схеме. Это может быть полезно для
+"резких" цветов, например, при рисовании матриц. Если в строке
+встречается символ `:', то он принудительно заканчивает разбор строки
+для стиля поверхности. После этого символа могут идти описание стиля
+текста или оси вращения кривой/линий уровня. Цветовая схема может
+содержать до 32 значений цвета.
+
+ В цветовой схеме можно использовать тональные ("подсвеченные") цвета
+(_не в стиле линий!_). Тональный цвет задается двумя символами: первый
+- обычный цвет, второй - его яркость цифрой. Цифра может быть в
+диапазоне `1'...`9'. При этом `5' соответствует нормальному цвету, `1'
+- очень темная версия цвета (почти черный), `9' - очень светлая версия
+цвета (почти белый). Например цветовая схема может быть `b2b7wr7r2'.
+
+ [image src="../png/colors.png" ]
+
+Цвета и их идентификаторы.
+
+ При определении цвета по _амплитуде_ (наиболее часто используется)
+окончательный цвет определяется путем линейной интерполяции массива
+цветов. Массив цветов формируется из цветов, указанных в строке
+спецификации. Аргумент - амплитуда, нормированная между CMIN - CMAX
+(*note Axis settings::). Например, строка из 4 символов `bcyr'
+соответствует изменению цвета от синего (минимальное значение) через
+голубой и желтый (промежуточные значения) к красному (максимальное
+значение). Строка `kw' соответствует изменению цвета от черного
+(минимальное значение) к белому (максимальное значение). Строка из
+одного символа (например, `g') соответствует однотонному цвету (в
+данному случае зеленому).
+
+ Есть несколько полезных цветовых схем. Строка `kw' дает обычную
+серую (черно-белую) схему, когда большие значения светлее. Строка `wk'
+представляет обратную серую схему, когда большие значения темнее.
+Строки `kRryw', `kGgw', `kBbcw' представляют собой хорошо известные
+схемы _hot_, _summer_ и _winter_. Строки `BbwrR' и `bBkRr' позволяют
+рисовать двухцветные фигуры на белом или черном фоне, когда
+отрицательные значения показаны синим цветом, а положительные -
+красным. Строка `BbcyrR' дает цветовую схему, близкую к хорошо
+известной схеме _jet_.
+
+ [image src="../png/color_schemes.png" ]
+
+Наиболее популярные цветовые схемы.
+
+ При определении цвета по _положению точки в пространстве_
+окончательный цвет определяется по формуле c=x*c[1] + y*c[2] + z*c[3].
+Здесь c[1], c[2], c[3] - первые три цвета в цветовом массиве; x, y, z -
+координаты точки, нормированные на MINxMAX. Такой тип определения цвета
+полезен, например, при построении поверхностей уровня, когда цвет дает
+представление о положении точки в пространстве.
+
+
+File: mgl_ru.info, Node: Font styles, Next: Textual formulas, Prev: Color scheme, Up: General concepts
+
+1.1.4 Стиль текста
+-----------------------------
+
+Стиль текста задается строкой, которая может содержать несколько
+символов: тип шрифта (`ribwou') и/или выравнивания (`LRC'), а также
+цвет текста `wkrgbcymhRGBCYMHW' (*note Line styles::) после символа
+`:'. Например, `biC:b' соответствует жирному курсиву с выравниванием по
+центру синего цвета.
+
+ Начертания шрифта: `r' - прямой шрифт, `i' - курсив, `b' - жирный.
+По умолчанию используется прямой шрифт. Типы выравнивания текста: `L' -
+по левому краю (по умолчанию), `C' - по центру, `R' - по правому краю.
+Дополнительные эффекты шрифта: `w' - контурный, `o' - надчеркнутый, `u'
+- подчеркнутый.
+
+ Синтаксический разбор LaTeX-их команд по умолчанию включен. Это
+команды смены стиля текста (например, \b для жирного текста): \a или
+\overline - надчеркивание, \b или \textbf - жирный, \i или \textit -
+курсив, \r или \textrm - прямой (отменяет стили жирного и курсива), \u
+или \underline - подчеркнутый, \w или \wire - контурный, \big -
+большего размера, @ - меньшего размера. Нижний и верхний индексы
+задаются символами `_' и `^'. При этом изменение стиля применяется
+только к следующему символу или к символам в фигурных скобках {},
+которые понимаются как единый блок. Например, сравните строки `sin
+(x^{2^3})' и `sin (x^2^3)'. Можно также менять цвет текста внутри
+строки с помощью команд #? или \color?, где `?' - символ цвета (*note
+Line styles::). Например, слова `Blue' и `red' будут окрашены в
+соответствующий цвет в строке `#b{Blue} and \colorr{red} text'.
+Большинство функций понимает символ новой строки `\n' и позволяет
+выводить много строчный текст. Наконец, можно использовать символы с
+произвольным UTF кодом с помощью команды `\utf0x????'. Например,
+`\utf0x3b1' даст символ \alpha.
+
+ Распознаются также большинство символов TeX и AMSTeX, команды смены
+стиля текста (\textrm, \textbf, \textit, \textsc, \overline,
+\underline), акценты (\hat, \tilde, \dot, \ddot, \acute, \check,
+\grave, \bar, \breve) и корни (\sqrt, \sqrt3, \sqrt4). Полный список
+содержит около 2000 символов. Отмечу, что первый пробел (пробел,
+табуляция и пр.) после команды игнорируется, а все остальные пробелы
+печатаются обычным образом. Например, следующие строки дают одинаковый
+результат \tilde a: `\tilde{a}'; `\tilde a'; `\tilde{}a'.
+
+ В частности, распознаются греческие буквы: \alpha - \alpha, \beta -
+\beta, \gamma - \gamma, \delta - \delta, \epsilon - \epsilon, \eta -
+\eta, \iota - \iota, \chi - \chi, \kappa - \kappa, \lambda - \lambda,
+\mu - \mu, \nu - \nu, o - \o, \omega - \omega, \phi - \phi, \pi - \pi,
+\psi - \psi, \rho - \rho, \sigma - \sigma, \theta - \theta, \tau -
+\tau, \upsilon - \upsilon, \xi - \xi, \zeta - \zeta, \varsigma -
+\varsigma, \varepsilon - \varepsilon, \vartheta - \vartheta, \varphi -
+\varphi, A - \Alpha, B - \Beta, \Gamma - \Gamma, \Delta - \Delta, E -
+\Epsilon, H - \Eta, I - \Iota, C - \Chi, K - \Kappa, \Lambda - \Lambda,
+M - \Mu, N - \Nu, O - \O, \Omega - \Omega, \Phi - \Phi, \Pi - \Pi, \Psi
+- \Psi, R - \Rho, \Sigma - \Sigma, \Theta - \Theta, T - \Tau, \Upsilon
+- \Upsilon, \Xi - \Xi, Z - \Zeta.
+
+ Еще примеры наиболее общеупотребительных TeX-их символов: \angle -
+\angle, \aleph - \aleph, \cdot - \cdot, \clubsuit - \clubsuit, \cup -
+\cup, \cap - \cap, \diamondsuit - \diamondsuit, \diamond - \diamond,
+\div - \div, \downarrow - \downarrow, \dag - \dag, \ddag - \ddag,
+\equiv - \equiv, \exists - \exists, \frown - \frown, \flat - \flat, \ge
+- \ge, \geq - \geq, \gets - \gets, \heartsuit - \heartsuit, \infty -
+\infty, \in - \in, \int - \int, \Im - \Im, \langle - \langle, \le -
+\le, \leq - \leq, \leftarrow - \leftarrow, \mp - \mp, \nabla - \nabla,
+\ne - \ne, \neq - \neq, \natural - \natural, \oint - \oint, \odot -
+\odot, \oplus - \oplus, \partial - \partial, \parallel - \parallel,
+\perp - \perp, \pm - \pm, \propto - \propto, \prod - \prod, \Re - \Re,
+\rightarrow - \rightarrow, \rangle - \rangle, \spadesuit - \spadesuit,
+\sim - \sim, \smile - \smile, \subset - \subset, \supset - \supset,
+\surd - \sqrt or \surd, \S - \S, \sharp - \sharp, \sum - \sum, \times -
+\times, \to - \to, \uparrow - \uparrow, \wp - \wp and so on.
+
+ Размер текста может быть задан явно (если SIZE>0) или относительно
+базового размера шрифта для рисунка |SIZE|*FONTSIZE при SIZE<0.
+Значение SIZE=0 указывает, что соответствующая строка выводиться не
+будет. Базовый размер шрифта измеряется во внутренних единицах.
+Специальные функции `SetFontSizePT(), SetFontSizeCM(), SetFontSizeIN()'
+позволяют задавать его в более "привычных" единицах.
+
+
+File: mgl_ru.info, Node: Textual formulas, Prev: Font styles, Up: General concepts
+
+1.1.5 Текстовые формулы
+---------------------------------------
+
+MathGL имеет быстрый парсер текстовых формул , понимающий большое число
+функций и операций. Базовые операции: `+' - сложение, `-' - вычитание,
+`*' - умножение, `/' - деление, `^' - возведение в целосичленную
+степень. Также есть логические операции: `<' - истина если if x<y, `>'
+- истина если x>y, `=' - истина если x=y, `&' - истина если x и y оба
+не равны нулю, `|' - истина если x или y не нуль. Логические операции
+имеют наинизший приоритет и возвращают 1 если истина или 0 если ложно.
+
+ Базовые функции: `sqrt(x)' - квадратный корень из X, `pow(x,y)' - X
+в степени Y, `ln(x)' - натуральный логарифм X, `lg(x)' - десятичный
+логарифм X, `log(a,x)' - логарифм по основанию A от X, `abs(x)' -
+модуль X, `sign(x)' - знак X, `mod(x,y)' - остаток от деления x на y,
+`step(x)' - ступенчатая функция, `int(x)' - целая часть X, `rnd' -
+случайное число, `pi' - число \pi=3.1415926...
+
+ Тригонометрические функции: `sin(x)', `cos(x)', `tan(x)' (или
+`tg(x)'). Обратные тригонометрические функции: `asin(x)', `acos(x)',
+`atan(x)'. Гиперболические функции: `sinh(x)' (или `sh(x)'), `cosh(x)'
+(или `ch(x)'), `tanh(x)' (или `th(x)'). Обратные гиперболические
+функции: `asinh(x)', `acosh(x)', `atanh(x)'.
+
+ Специальные функции: `gamma(x)' - гамма функция \Gamma(x) =
+\int_0^\infty dt t^{x-1} \exp(-t) , `psi(x)' - дигамма функция \psi(x)
+= \Gamma</samp>’(x)/\Gamma(x) для x!=0, `ai(x)' - Эйри функция
+Ai(x), `bi(x)' - Эйри функция Bi(x), `cl(x)' - функция Клаузена,
+`li2(x)' (или `dilog(x)') - дилогарифм Li_2(x) = - \Re \int_0^x ds
+\log(1-s)/s, `sinc(x)' - функция sinc(x) = \sin(\pi x) / (\pi x) для
+любых x, `zeta(x)' - зета функция Римана \zeta(s) = \sum_{k=1}^\infty
+k^{-s} для s!=1, `eta(x)' - эта функция \eta(s) = (1-2^{1-s}) \zeta(s)
+для произвольного s, `lp(l,x)' - полином Лежандра P_l(x), (|x|<=1,
+l>=0), `w0(x)', `w1(x)' - функции Ламберта W. Функции W(x) определены
+как решение уравнения W \exp(W) = x.
+
+ Экспоненциальные интегралы: `ci(x)' - cos-интеграл Ci(x) = \int_0^x
+dt \cos(t)/t, `si(x)' - sin-интеграл Si(x) = \int_0^x dt \sin(t)/t,
+`erf(x)' - функция ошибки erf(x) = (2/\sqrt(\pi)) \int_0^x dt
+\exp(-t^2), `ei(x)' - интеграл Ei(x) := - PV(\int_{-x}^\infty dt
+\exp(-t)/t) (где PV обозначает главное значение), `e1(x)' - интеграл
+E_1(x) := Re \int_1^\infty dt \exp(-xt)/t , `e2(x)' - интеграл E_2(x)
+:= Re \int_1^\infty dt \exp(-xt)/t^2, `ei3(x)' - интеграл Ei_3(x) =
+\int_0^x dt \exp(-t^3) для x>=0.
+
+ Функции Бесселя: `j(nu,x)' - функция Бесселя первого рода, `y(nu,x)'
+- функция Бесселя второго рода, `i(nu,x)' - модифицированная функция
+Бесселя первого рода, `k(nu,x)' - модифицированная функция Бесселя
+второго рода.
+
+ Эллиптические интегралы: `ee(k)' - полный эллиптический интеграл
+E(k) = E(\pi/2, k), `ek(k)' - полный эллиптический интеграл K(k) =
+F(\pi/2, k), `e(phi,k)' - эллиптический интеграл E(\phi,k) =
+\int_0^\phi dt \sqrt((1 - k^2 \sin^2(t))), `f(phi,k)' - эллиптический
+интеграл F(\phi,k) = \int_0^\phi dt 1/\sqrt((1 - k^2 \sin^2(t))).
+
+ Функции Якоби: `sn(u,m)', `cn(u,m)', `dn(u,m)', `sc(u,m)',
+`sd(u,m)', `ns(u,m)', `cs(u,m)', `cd(u,m)', `nc(u,m)', `ds(u,m)',
+`dc(u,m)', `nd(u,m)'.
+
+ Некоторые из функций могут быть недоступны если флаг NO_GSL был
+определен при компиляции библиотеки MathGL.
+
+ При разборе формул нет различия между верхним и нижним регистром.
+Если аргумент лежит вне области определения функции, то возвращается
+NaN.
+
+
+File: mgl_ru.info, Node: Graphics setup, Next: Axis settings, Prev: General concepts, Up: MGL interface
+
+1.2 Настройка графика
+=====================================
+
+Команды в этой группе влияют на вид всего рисунка. Соответственно они
+должны располагаться _перед_ вызовом функций непосредственно рисующих
+графики.
+
+* Menu:
+
+* Transparency ::
+* Lighting ::
+* Fog ::
+* Default sizes ::
+* Zooming ::
+* Cutting ::
+* Other settings ::
+
+
+File: mgl_ru.info, Node: Transparency, Next: Lighting, Up: Graphics setup
+
+1.2.1 Прозрачность
+------------------------------
+
+Эти команды настраивают тип и степень прозрачности поверхностей.
+Главной является функция *note alpha::, которая включает/выключает
+прозрачность для всех графиков, созданных после вызова *note alpha::.
+Функция *note alphadef:: устанавливает величину alpha-канала по
+умолчанию. Прозрачность можно выключить для отдельного графика с
+помощью *note transparent::. Наконец, функция *note transptype:: задает
+тип прозрачности. См. раздел *note Transparent surface sample::, для
+примеров кода и графика.
+
+ -- Команда MGL: alpha `[val=on]'
+ Включает/выключает прозрачность для _всего_ рисунка. По умолчанию
+ прозрачность выключена. Используйте `transparent off' для
+ конкретного графика для выключения прозрачности.
+
+ -- Команда MGL: alphadef `val'
+ Задает значение прозрачности по умолчанию для всех графиков.
+ Начальное значение 0.5.
+
+ -- Команда MGL: transparent `val'
+ Временно включает/возвращает прозрачность графиков.
+
+ -- Команда MGL: transptype `val'
+ Задает тип прозрачности. Обычная прозрачность (`0') - "закрытые"
+ объекты видны меньше чем закрывающие. "Стеклянная" прозрачность
+ (`1') - закрытые и закрывающие объекты единообразно ослабляют
+ интенсивность света (по RGB каналам). "Ламповая" прозрачность
+ (`2') - закрытые и закрывающие объекты являются источниками
+ дополнительного освещения (рекомендую установить `alphadef 0.3'
+ или меньше в этом случае). *Note Normal transparency::, *note
+ Glass-like transparency::, *note Lamp-like transparency::.
+
+
+File: mgl_ru.info, Node: Lighting, Next: Fog, Prev: Transparency, Up: Graphics setup
+
+1.2.2 Освещение
+------------------------
+
+Эти функции настраивают освещение графика. Главная функция *note
+light:: включает/выключает освещение графиков построенных после ее
+вызова. MathGL поддерживает до 10 независимых источников света.
+Положение, цвет, яркость каждого источника света можно задавать по
+отдельности. По умолчанию включен только первый (с порядковым номером
+`0') источник света белого цвета, расположенный сверху.
+
+ -- Команда MGL: light `[val=on]'
+ Включает/выключает освещение графика. По умолчанию освещение
+ выключено.
+
+ -- Команда MGL: light `n val'
+ Включает/выключает N-ый источник света.
+
+ -- Команда MGL: light `n xpos ypos zpos' ['col'='w' `br=0.5']
+ Добавляет источник света с номером N в положение {XPOS, YPOS,
+ ZPOS} с цветом COL и яркостью BR, которая должна быть в диапазоне
+ [0,1].
+
+ -- Команда MGL: ambient `val'
+ Задает яркость рассеянного освещения. Значение должно быть в
+ диапазоне [0,1].
+
+
+File: mgl_ru.info, Node: Fog, Next: Default sizes, Prev: Lighting, Up: Graphics setup
+
+1.2.3 Туман
+----------------
+
+ -- Команда MGL: fog `val [dz=0.25]'
+ Имитирует туман на графике. Туман начинается на относительном
+ расстоянии DZ от точки обзора и его плотность растет
+ экспоненциально вглубь по закону ~1-exp(-d*z). Здесь _z_ -
+ нормализованная на 1 глубина графика. Если D=`0' то туман
+ отсутствует. См. раздел *note Surface in fog sample::, для
+ примеров кода и графика.
+
+
+File: mgl_ru.info, Node: Default sizes, Next: Zooming, Prev: Fog, Up: Graphics setup
+
+1.2.4 Базовые размеры
+-----------------------------------
+
+Эти команды задают величины большинства параметров графика, включая
+размеры маркеров, стрелок, толщину линий и т.д. Как и любые другие
+настройки, они подействуют только на графики созданные после изменения
+настроек.
+
+ -- Команда MGL: barwidth `val'
+ Относительный размер прямоугольников в `bars, barh, boxplot'.
+ Значение по умолчанию `0.7'.
+
+ -- Команда MGL: marksize `val'
+ Размер маркеров для *note 1D plotting::. Значение по умолчанию `1'.
+
+ -- Команда MGL: arrowsize `val'
+ Размер стрелок для *note 1D plotting::, линий и кривых (*note
+ Primitives drawing::). Значение по умолчанию `1'.
+
+ -- Команда MGL: linewidth `val'
+ Базовая толщина линий. Значения <1 игнорируются. Для значений >1
+ реальная толщина получается перемножением указанной ширины линии
+ на данное значение. Увеличение ширины линии актуально для больших
+ растровых рисунков. Значение по умолчанию `1'.
+
+ -- Команда MGL: ticklen `val' [`stt=1']
+ Относительная длина меток осей координат. Значение по умолчанию
+ `0.1'. Параметр STT>0 задает относительную длину подметок, которые
+ в `sqrt(1+stt)' раз меньше.
+
+ -- Команда MGL: tickstl 'stl' ['sub'="]
+ Стиль меток (STL) и подметок (SUB) осей координат. Если `stl=''',
+ то используется стиль по умолчанию (`k' или `w' в зависимости от
+ типа прозрачности). Если `sub=''', то используется стиль меток
+ (т.е. STL).
+
+
+File: mgl_ru.info, Node: Zooming, Next: Cutting, Prev: Default sizes, Up: Graphics setup
+
+1.2.5 Масштабирование
+------------------------------------
+
+Эти команды управляют масштабированием всего рисунка (*note zoom::) или
+отдельной картинки (*note plotfactor::). Обычно эти функции
+используются для удаления пустого места вокруг графиков.
+
+ -- Команда MGL: plotfactor `val'
+ Масштаб картинки (значение должно быть больше 1). Не рекомендуется
+ устанавливать значения меньше 1.5. Это аналог *note zoom::, но
+ применяется только к конкретной картинке, заданной *note inplot::.
+ Используйте ноль для включения автоматического масштабирования.
+
+ -- Команда MGL: zoom `x1 y1 x2 y2'
+ Масштабирует весь рисунок. После вызова функции текущий график
+ будет очищен и в дальнейшем рисунок будет содержать только область
+ [x1,x2]*[y1,y2] от исходного рисунка. Координаты X1, X2, Y1, Y2
+ меняются в диапазоне от 0 до 1. Внимание! эти настройки не могут
+ быть переписаны никакими другими функциями. Используйте `zoom 0 0
+ 1 1' для перехода в масштаб по умолчанию.
+
+
+File: mgl_ru.info, Node: Cutting, Next: Other settings, Prev: Zooming, Up: Graphics setup
+
+1.2.6 Обрезание
+------------------------
+
+Эти команды задают условия когда точка будет исключена (вырезана) из
+рисования. Замечу, что все точки со значением(-ями) `nan' по одной из
+координат или амплитуде автоматически исключаются из рисования.
+
+ -- Команда MGL: cut `val'
+ Задает обрезание точек за пределами осей координат. Если `on' то
+ такие точки исключаются из рисования (это по умолчанию) иначе они
+ проецируются на ограничивающий прямоугольник.
+
+ -- Команда MGL: cut `x1 y1 z1 x2 y2 z2'
+ Задает границы параллелепипеда внутри которого точки не рисуются.
+ Если границы одинаковы (переменные равны), то параллелепипеда
+ считается пустым. См. раздел *note CutMinMax sample::, для
+ примеров кода и графика.
+
+ -- Команда MGL: cut 'cond'
+ Задает условие обрезания по формуле COND. Это условие исключает
+ точки из рисования если результат вычисления формулы не равен
+ нулю. Установите аргумент `''' для выключения условия обрезания.
+ См. раздел *note CutOff sample::, для примеров кода и графика.
+
+
+File: mgl_ru.info, Node: Other settings, Prev: Cutting, Up: Graphics setup
+
+1.2.7 Прочие настройки
+-------------------------------------
+
+ -- Команда MGL: font 'fnt' [`val=6']
+ Задает стиль и размер шрифта (*note Text printing::). Вначале
+ используется `rC' - прямой шрифт с выравниванием по центру. По
+ умолчанию размер подписей оси координат в 1.4 раза больше.
+
+ -- Команда MGL: rotatetext `val'
+ Включает/выключает вращение меток и подписей осей координат вдоль
+ оси. Начальное значение `on'.
+
+ -- Команда MGL: palette 'colors'
+ Задает палитру как последовательность цветов. Значение по
+ умолчанию `"Hbgrcmyhlnqeup"', что соответствует цветам: темно
+ серый `H', синий `b', зеленый `g', красный `r', голубой `c',
+ малиновый `m', желтый `y', серый `h', сине-зеленый `l',
+ небесно-голубой `n', оранжевый `q', желто-зеленый `e',
+ сине-фиолетовый `u', фиолетовый `p'. Палитра в основном
+ используется в 1D графиках (*note 1D plotting::) для кривых с
+ неопределенным стилем линии.
+
+ -- Команда MGL: meshnum `num'
+ Задает ориентировочное число линий в *note mesh::, *note fall::,
+ *note grid::, число стрелок (штрихов) в *note vect::, *note dew::
+ и число ячеек в *note cloud::. По умолчанию (=0) рисуются все
+ линии, стрелки, ячейки.
+
+ -- Команда MGL: axialdir 'dir'
+ Задает ось вращения для *note axial::, *note torus::. По умолчанию
+ это 'z'.
+
+
+File: mgl_ru.info, Node: Axis settings, Next: Transformation matrix, Prev: Graphics setup, Up: MGL interface
+
+1.3 Параметры осей координат
+==================================================
+
+Этот большой набор команд определяет вид осей и меток координат. Перед
+построением для каждой точки выполняются 3 преобразования: сначала
+определяется возможность рисования точки (*note Cutting::), далее
+применяются формулы перехода к криволинейным координатам и наконец
+точка отображается.
+
+ -- Команда MGL: axis `x1 y1 x2 y2'
+ -- Команда MGL: axis `x1 y1 z1 x2 y2 z2'
+ -- Команда MGL: ranges `x1 x2 y1 y2 [z1=0 z2=0]'
+ Задает диапазон изменения координат. Если минимальное и
+ максимальное значение координаты равны, то они игнорируются по
+ данному направлению. Также устанавливает размер цветовой шкалы,
+ аналогично команде `caxis z1 z2'. Начальные диапазоны равны [-1,
+ 1].
+
+ -- Команда MGL: axis 'fx' 'fy' ['fz'=" 'fa'="]
+ Задает формулы перехода к криволинейным координатам. Каждая строка
+ является математическим выражением, зависящим от старых координат
+ `x', `y', `z' и `a' или `c' для цветовой шкалы. Например, для
+ цилиндрических координат будет `axis 'x*cos(y)' 'x*sin(y)' 'z''.
+ Для удаления формул соответствующий параметр должен быть пустым
+ `'''. Использование формул преобразования слегка замедляет
+ программу, т.е.. `axis '' '' ''' быстрее чем `axis '1*x' '1*y'
+ '1*z''. Параметр FA задает аналогичную формулу для цветовой шкалы.
+ *Note Textual formulas::.
+
+ -- Команда MGL: axis `how'
+ Устанавливает одну из предопределенных систем криволинейных
+ координат в зависимости от параметра HOW: `0' - декартова система
+ (нет преобразования координат, наиболее быстрая); `1' - полярные
+ координаты x_n=x*cos(y),y_n=x*sin(y), z_n=z; `2' - сферические
+ координаты x_n=x*sin(y)*cos(z), y_n=x*sin(y)*sin(z), z_n=x*cos(y);
+ `3' - параболические координаты x_n=x*y, y_n=(x*x-y*y)/2, z_n=z;
+ `4' - Paraboloidal coordinates x_n=(x*x-y*y)*cos(z)/2,
+ y_n=(x*x-y*y)*sin(z)/2, z_n=x*y; `5' - Oblate coordinates
+ x_n=cosh(x)*cos(y)*cos(z), y_n=cosh(x)*cos(y)*sin(z),
+ z_n=sinh(x)*sin(y); `6' - Prolate coordinates
+ x_n=sinh(x)*sin(y)*cos(z), y_n=sinh(x)*sin(y)*sin(z),
+ z_n=cosh(x)*cos(y); `7' - эллиптические координаты
+ x_n=cosh(x)*cos(y), y_n=sinh(x)*sin(y), z_n=z; `8' - тороидальные
+ координаты x_n=sinh(x)*cos(z)/(cosh(x)-cos(y)),
+ y_n=sinh(x)*sin(z)/(cosh(x)-cos(y)), z_n=sin(y)/(cosh(x)-cos(y));
+ `9' - бисферические координаты x_n=sin(y)*cos(z)/(cosh(x)-cos(y)),
+ y_n=sin(y)*sin(z)/(cosh(x)-cos(y)), z_n=sinh(x)/(cosh(x)-cos(y));
+ `10' - биполярные координаты x_n=sinh(x)/(cosh(x)-cos(y)),
+ y_n=sin(y)/(cosh(x)-cos(y)), z_n=z.
+
+ -- Команда MGL: caxis `z1 z2'
+ Задает масштаб цветовой шкалы (c-координаты). Эти значения
+ используются для определения цвета поверхностей и прочих 2D и 3D
+ графиков. Начальный диапазон равен [-1, 1].
+
+ -- Команда MGL: origin `x0 y0 [z0=nan]'
+ Задает центр пересечения осей координат. Если одно из значений
+ равно `nan', то выбрается оптимальное положение осей координат по
+ этому направлению.
+
+ -- Команда MGL: ternary `val'
+ Задает рисование треугольных (Ternary) осей координат. Это
+ специальный тип графика для 3 зависимых координат (компонент) A,
+ B, C таких, что A+B+C=1. MathGL использует только 2 независимые
+ координаты A=x и B=y поскольку их достаточно для построения всех
+ графиков. При этом третья координата z является независимым
+ параметром для построения линий уровня, поверхностей и т.д. См.
+ раздел *note Ternary plot sample::, для примеров кода и графика.
+
+ -- Команда MGL: xrange dat [`add=off fact=0']
+ -- Команда MGL: yrange dat [`add=off fact=0']
+ -- Команда MGL: zrange dat [`add=off fact=0']
+ -- Команда MGL: crange dat [`add=off fact=0']
+ Задает диапазон изменения x-,y-,z-,c- координат как минимальное и
+ максимальное значение массива DAT. Параметр ADD указывает
+ добавлять новый диапазон к существующему или заменять его.
+ Параметр FACT дополнительно расширяет диапазон на величину
+ (MAX-MIN)*FACT.
+
+ -- Команда MGL: xrange `x1 x2'
+ -- Команда MGL: yrange `x1 x2'
+ -- Команда MGL: zrange `x1 x2'
+ -- Команда MGL: crange `x1 x2'
+ Задает диапазон изменения x-,y-,z-,c- координат. См. также *note
+ axis::.
+
+ -- Команда MGL: xtick `val [sub=0 org=nan]'
+ -- Команда MGL: ytick `val [sub=0 org=nan]'
+ -- Команда MGL: ztick `val [sub=0 org=nan]'
+ -- Команда MGL: ctick `val'
+ Задает шаг меток осей VAL, число подметок NS и начальное положение
+ меток ORG. Переменная VAL задает шаг меток (если положительна) или
+ их число на оси (если отрицательна). Нулевое значение задает
+ логарифмические метки. Если ORG=`NAN', то используется значение из
+ *note origin::.
+
+ -- Команда MGL: xtick 'templ'
+ -- Команда MGL: ytick 'templ'
+ -- Команда MGL: ztick 'templ'
+ -- Команда MGL: ctick 'templ'
+ Задает шаблоны для меток вдоль x-,y-,z-оси или colorbar. Шаблон
+ может содержать и символы TeX. Если XTT, YTT, ZTT, CTT=`''', то
+ используется шаблон по умолчанию (в простейшем случае `%.2g').
+ Установка шаблона выключает автоматическое улучшение вида меток.
+
+ -- Команда MGL: xtick `val1' 'lbl1' [`val2' 'lbl2' ...]
+ -- Команда MGL: ytick `val1' 'lbl1' [`val2' 'lbl2' ...]
+ -- Команда MGL: ztick `val1' 'lbl1' [`val2' 'lbl2' ...]
+ Задает явное положение VAL и подписи LBL для меток вдоль оси.
+ Метки могут содержать и символы TeX.
+
+ -- Команда MGL: adjust ['dir'='xyzc']
+ Автоматически задает шаг меток осей, число подметок и начальное
+ положение меток для осей координат DIR в виде наиболее удобном для
+ человека.
+
+
+File: mgl_ru.info, Node: Transformation matrix, Next: Export to file, Prev: Axis settings, Up: MGL interface
+
+1.4 Матрица преобразования
+===============================================
+
+Эти команды контролируют где и как график будет расположен. Существует
+определенный порядок вызова этих функций для лучшего вида графика.
+Вначале должны вызываться команды *note subplot:: или *note inplot::
+для указания местоположения вывода. После них - команды вращения *note
+rotate:: и сжатия *note aspect::. И наконец любые другие функции для
+рисования графика. Вместо вращения графика можно вызвать команды *note
+columnplot:: для расположения графиков в столбец одного над другим или
+*note stickplot:: для расположения в линейку.
+
+ -- Команда MGL: subplot `nx ny m [dx=0 dy=0]'
+ Помещает последующий вывод в M-ую ячейку сетки размером NX*NY от
+ всего рисунка. Функция сбрасывает матрицу трансформации (повороты
+ и сжатие графика) и должна вызываться первой для создания
+ "подграфика". С эстетической точки зрения не рекомендуется
+ вызывать эту функцию с различными (или не кратными) размерами
+ сетки. Ячейка может быть дополнительно сдвинута относительно
+ своего обычного положения на относительный размер DX, DY.
+
+ -- Команда MGL: subplot `nx ny m' 'style'
+ Аналогично предыдущему, но место для осей/colorbar резервируется
+ только если строка STYLE содержит: `L' или `<' - с левого края,
+ `R' или `>' - с правого края, `A' или `^' - с верхнего края, `U'
+ или `_' - с нижнего края.
+
+ -- Команда MGL: inplot `x1 x2 y1 y2 [rel=off]'
+ Помещает последующий вывод в прямоугольную область [X1, X2]*[Y1,
+ Y2] (исходный размер [0,1]*[0,1]). Эта функция позволяет поместить
+ график в произвольную область рисунка. Если параметр REL=`on', то
+ используется позиция относительно текщего *note subplot:: (или
+ *note inplot:: с REL=`off'). Функция сбрасывает матрицу
+ трансформации (повороты и сжатие графика) и должна вызываться
+ первой для создания "подграфика".
+
+ -- Команда MGL: columnplot `num ind [d=0]'
+ Помещает последующий вывод в IND-ую строку столбца из NUM строк.
+ Положение столбца выбирается относительно последнего вызова *note
+ subplot:: (или *note inplot:: с REL=`off'). Параметр D задает
+ дополнительный зазор между строк. См. раздел *note ColumnPlot
+ sample::, для примеров кода и графика.
+
+ -- Команда MGL: stickplot `num ind tet phi'
+ Помещает последующий вывод в IND-ую ячейку "бруска" из NUM ячеек.
+ При этом сам брусок повернут на углы TET, PHI. Положение
+ выбирается относительно последнего вызова *note subplot:: (или
+ *note inplot:: с REL=`off'). См. раздел *note StickPlot sample::,
+ для примеров кода и графика.
+
+ -- Команда MGL: rotate `tetz tetx [tety=0]'
+ Вращает систему координат относительно осей {x, z, y}
+ последовательно на углы TETX, TETZ, TETY.
+
+ -- Команда MGL: rotate `tet x y z'
+ Вращает систему координат относительно вектора {X, Y, Z} на угол
+ TET.
+
+ -- Команда MGL: aspect `ax ay [az=1]'
+ Устанавливает соотношение размеров осей в отношении AX:AY:AZ. Для
+ лучшего вида следует вызывать после функции *note rotate::.
+
+ -- Команда MGL: perspective `val'
+ Добавляет (включает) перспективу для графика. Параметр val ~
+ 1/z_{eff} \in [0,1). По умолчанию (`val=0') перспектива отключена.
+
+
+File: mgl_ru.info, Node: Export to file, Next: Primitives drawing, Prev: Transformation matrix, Up: MGL interface
+
+1.5 Экспорт в файл
+==============================
+
+ -- Команда MGL: write 'fname' [`solid=off']
+ Экспортирует текущий кадр в файл 'fname' (тип определяется по
+ расширению). Параметр SOLID задает вывод картинки на текущем фоне
+ (обычно белом) или полупрозрачной. Если 'fname'=", то используется
+ имя `frame####.jpg', где `####' - текущий номер кадра.
+
+ -- Команда MGL: setsize `w h'
+ Изменяет размер картинки в пикселях. Функция должна вызываться
+ *перед* любыми функциями построения потому что полностью очищает
+ содержимое рисунка. В некоторых программах исполнение этой команды
+ может запрещено.
+
+
+File: mgl_ru.info, Node: Primitives drawing, Next: Text printing, Prev: Export to file, Up: MGL interface
+
+1.6 Рисование примитивов
+===========================================
+
+Эти команды рисуют рисуют простые объекты типа линий, точек, сфер,
+капель, конусов, и т.д.
+
+ -- Команда MGL: clf
+ Очищает рисунок и заполняет его цветом по умолчанию (обычно белым).
+
+ -- Команда MGL: ball `x y' ['col'='r']
+ -- Команда MGL: ball `x y z' ['col'='r']
+ Рисует точку (шарик) с координатами {X, Y, Z} и цветом COL.
+
+ -- Команда MGL: line `x1 y1 x2 y2' ['stl'="]
+ -- Команда MGL: line `x1 y1 z1 x2 y2 z2' ['stl'="]
+ Рисует геодезическую линию (декартовых координатах - прямую) из
+ точки {X1,Y1,Z1} в {X2,Y2,Z2} использую стиль линии STL. Кривая
+ рисуется даже если часть ее лежит вне диапазона осей координат.
+
+ -- Команда MGL: curve `x1 y1 dx1 dy1 x2 y2 dx2 dy2' ['stl'="]
+ -- Команда MGL: curve `x1 y1 z1 dx1 dy1 dz1 x2 y2 z2 dx2 dy2 dz2'
+ ['stl'="]
+ Рисует кривую Безье из точки {X1,Y1,Z1} в {X2,Y2,Z2} использую
+ стиль линии STL. Касательные в точках пропорциональны
+ {DX1,DY1,DZ1}, {DX2,DY2,DZ2}. Кривая рисуется даже если часть ее
+ лежит вне диапазона осей координат.
+
+ -- Команда MGL: facex `x0 y0 z0 wy wz' ['stl'=" `d1=0 d2=0']
+ -- Команда MGL: facey `x0 y0 z0 wx wz' ['stl'=" `d1=0 d2=0']
+ -- Команда MGL: facez `x0 y0 z0 wx wy' ['stl'=" `d1=0 d2=0']
+ Рисует закрашенный прямоугольник (грань) перпендикулярно оси
+ [x,y,z] в точке {X0, Y0, Z0} цветом STL и шириной WX, WY, WZ вдоль
+ соответствующего направления. При этом цвет может быть один для
+ всей грани, или различным для разных вершин если указаны все 4
+ цвета (полезно для градиента цвета, например `wwrr'). Параметры
+ D1!=0, D2!=0 задают дополнительный сдвиг последней точки (т.е.
+ рисуют четырехугольник). Грань будет нарисована даже если часть ее
+ лежит вне диапазона осей координат.
+
+ -- Команда MGL: sphere `x0 y0 r' ['col'='r']
+ -- Команда MGL: sphere `x0 y0 z0 r' ['col'='r']
+ Рисует сферу радиуса R с центром в точке {X, Y, Z} цветом STL.
+
+ -- Команда MGL: drop `x0 y0 dx dy r' ['col'='b' `sh=1 asp=1']
+ -- Команда MGL: drop `x0 y0 z0 dx dy dz r' ['col'='b' `sh=1 asp=1']
+ Рисует каплю радиуса R в точке {X0,Y0,Z0} вытянутую вдоль
+ направления {DX,DY,DZ} цветом COL. Параметр SH определяет степень
+ вытянутости: `0' - сфера, `1' - классическая капля. Параметр ASP
+ определяет относительную ширину капли (аналог "эллиптичности" для
+ сферы). См. раздел *note Drops sample::, для примеров кода и
+ графика.
+
+ -- Команда MGL: cone `x1 y1 z1 x2 y2 z2 r1' [`r2=-1' 'stl'="
+ `edge=off']
+ Рисует трубу (или усеченный конус если EDGE=`off') между точками
+ {X1,Y1,Z1}, {X2,Y2,Z2} с радиусами на концах R1, R2. Если R2<0, то
+ полагается R2=R1. Цвет конуса задается строкой STL.
+
+ -- Команда MGL: rect `x1 y1 x2 y2' ['st'="]
+ -- Команда MGL: rect `x1 y1 z1 x2 y2 z2' ['st'="]
+ Рисует закрашенный прямоугольник (грань) с противоположными
+ вершинами в точках {X1,Y1,Z1}, {X2,Y2,Z2} цветом STL. При этом
+ цвет может быть один для всей грани, или различным для разных
+ вершин если указаны все 4 цвета (полезно для градиента цвета,
+ например `wwrr'). Грань будет нарисована даже если часть ее лежит
+ вне диапазона осей координат.
+
+
+File: mgl_ru.info, Node: Text printing, Next: Axis and Colorbar, Prev: Primitives drawing, Up: MGL interface
+
+1.7 Вывод текста
+===========================
+
+Команды для вывода текста позволяют вывести строку текста в
+произвольном месте рисунка, в произвольном направлении и вдоль
+произвольной кривой. Можно использовать произвольное начертание шрифта
+и многие ТеХ-ие команды (детальнее *note Font styles::). Аргумент SIZE
+определяет размер текста: размер шрифта если положителен или
+относительный размер (=-SIZE*FONTSIZE) если отрицателен.
+
+ Параметры шрифта задаются строкой, которая может содержать символы
+стиля (`rbiwou') и/или выравнивания (`LRC'). Также строка может
+содержать символы цвета `wkrgbcymhRGBCYMHW' (*note Line styles::) после
+символа `:'. Стили шрифта: `r' - прямой, `i' - курсив, `b' - жирный,
+`w' - контурный, `o' - надчеркнутый, `u' - подчеркнутый. По умолчанию
+используется прямой шрифт. Типы выравнивания: `L' - по левому краю (по
+умолчанию), `C' - по центру, `R' - по правому краю. Например, строка
+`iC:b' соответствует курсиву синего цвета с выравниванием по центру. По
+умолчанию используются параметры, определенные командой *note font::.
+
+ Если строка содержит символы `aA', то текст выводится в абсолютных
+координатах (полагаются в диапазоне [0,1]). При этом используются
+координаты относительно рисунка (если указано `A') или относительно
+последнего *note subplot::/*note inplot:: (если указано `a').
+
+ -- Команда MGL: text `x y' 'text' ['fnt'=" `size=-1.4']
+ -- Команда MGL: text `x y z' 'text' ['fnt'=" `size=-1.4']
+ Выводит строку TEXT от точки {X,Y,Z} шрифтом FNT и размером SIZE.
+
+ -- Команда MGL: text `x y dx dy' 'text' [`size=-1.4']
+ -- Команда MGL: text `x y z dx dy dz' 'text' [`size=-1.4']
+ Выводит строку TEXT от точки {X,Y,Z} вдоль направления {DX,DY,DZ}
+ шрифтом FNT и размером SIZE.
+
+ -- Команда MGL: text ydat 'text' ['fnt'=" `size=-1 zval=nan']
+ -- Команда MGL: text xdat ydat 'text' ['fnt'=" `size=-1 zval=nan']
+ -- Команда MGL: text xdat ydat zdat 'text' ['fnt'=" `size=-1']
+ Выводит строку TEXT вдоль кривой {XDAT[i], YDAT[i], ZDAT[i]}
+ шрифтом FONT. Строка FONT может содержать символы: `t' для вывода
+ текста под кривой (по умолчанию), или `T' для вывода текста над
+ кривой. Если массив XDAT не указан, то используется массив со
+ значениями равно распределенными вдоль оси x. Если массив ZDAT не
+ указан, то используется ZDAT[i] = ZVAL. См. раздел *note Text
+ sample::, для примеров кода и графика.
+
+ -- Команда MGL: title 'text' ['fnt'=" `size=-2']
+ Выводит строку TEXT как заголовок (сверху рисунка). Может
+ использоваться в любом месте (даже внутри *note subplot::).
+
+ -- Команда MGL: fgets `x y' 'fname' [`n=0' 'fnt'=" `size=-1.4']
+ -- Команда MGL: fgets `x y z' 'fname' [`n=0' 'fnt'=" `size=-1.4']
+ Выводит N-ую строку файла FNAME от точки {X,Y,Z} шрифтом FNT и
+ размером SIZE.
+
+
+File: mgl_ru.info, Node: Axis and Colorbar, Next: Legend, Prev: Text printing, Up: MGL interface
+
+1.8 Оси и Colorbar
+======================
+
+Эти команды рисуют объекты для "измерения" типа осей координат,
+цветовой таблицы (colorbar), сетку по осям, обрамляющий параллелепипед
+и подписи по осям координат. См. также *note Axis settings::.
+
+ -- Команда MGL: axis ['dir'='xyz' `adjust=off']
+ Рисует оси координат и метки на них (*note Axis settings::) в
+ направлениях, указанных строкой DIR. Если строка содержит символ
+ `_', то подписи меток отображаться не будут. Шрифт подписей
+ определяется командой *note font::. Метки будут "подогнаны" если
+ ADJUST=`on' (с помощью вызова `adjust 'dir'').
+
+ -- Команда MGL: colorbar ['sch'=" `pos=0']
+ Рисует полосу соответствия цвета и числовых значений (colorbar)
+ для цветовой схемы SCH (используется текущая для `sch=''') с краю
+ от графика. Параметр POS задает местоположение: `0' - справа (по
+ умолчанию), `1' - слева, `2' - сверху, `3' - снизу. Если строка
+ SCH содержит `<>^_', то параметр POS определяется как: `pos=0' для
+ `>' (справа), `pos=1' для `<' (слева), `pos=2' для `^' (сверху),
+ `pos=3' для `_' (снизу). Если строка содержит `A', то используются
+ абсолютные координаты (относительно рисунка). См. раздел *note
+ Dens sample::, для примеров кода и графика.
+
+ -- Команда MGL: colorbar vdat ['sch'=" `pos=0']
+ Аналогично предыдущему, но для цветовой схемы без сглаживания с
+ заданными значениями VDAT. См. раздел *note ContD sample::, для
+ примеров кода и графика.
+
+ -- Команда MGL: colorbar 'sch' `pos x y w h'
+ Аналогично первому, но в произвольном месте графика {X, Y}
+ (полагаются в диапазоне [0,1]). Параметры W, H задают
+ относительную ширину и высоту colorbar.
+
+ -- Команда MGL: grid ['dir'='xyz' 'pen'='B']
+ Рисует линии сетки в направлениях перпендикулярным DIR. Шаг сетки
+ такой же как у меток осей координат. Стиль линий задается
+ параметром PEN (по умолчанию - сплошная темно синяя линия `B-').
+
+ -- Команда MGL: box ['stl'='k' `ticks=on']
+ Рисует ограничивающий параллелепипед цветом 'stl'. При `ticks=on'
+ рисуются метки в соответствии с текущими настройками осей
+ координат *note axis::.
+
+ -- Команда MGL: xlabel 'text' [`pos=0 size=-1.4 shift=0']
+ -- Команда MGL: ylabel 'text' [`pos=0 size=-1.4 shift=0']
+ -- Команда MGL: zlabel 'text' [`pos=0 size=-1.4 shift=0']
+ -- Команда MGL: tlabel 'text' [`pos=0 size=-1.4 shift=0']
+ Выводит подпись TEXT для x-,y-,z-,t-оси (где `t' - "тернарная" ось
+ t=1-x-y). Параметр POS задает положение подписи: при POS=0 - по
+ центру оси, при POS>0 - около максимальных значений, при POS<0 -
+ около минимальных значений. Параметр SIZE задает размер шрифта (по
+ умолчанию в 1.4 раза больше чем у меток). *Note Text printing::.
+
+
+File: mgl_ru.info, Node: Legend, Next: 1D plotting, Prev: Axis and Colorbar, Up: MGL interface
+
+1.9 Легенда
+==================
+
+Эти команды обеспечивают рисование легенды графика (полезно для *note
+1D plotting::). Запись в легенде состоит из двух строк: одна для стиля
+линии и маркеров, другая с текстом описания (с включенным разбором
+TeX-их команд), накапливаемые во внутренние массивы с помощью команды
+*note addlegend:: или опции *note legend::. Положение легенды можно
+задать автоматически или вручную. Параметры FONT и SIZE задают стиль и
+размер шрифта. Параметр LLEN задает относительную ширину примера линии.
+Ели стиль линии пустой, то соответствующий текст печатается без
+отступа. Если строка FONT содержит символ `A', то координаты легенды
+считаются относительно картинки (а не текущего subplot). См. раздел
+*note Legend sample::, для примеров кода и графика.
+
+ -- Команда MGL: legend [`pos=3' 'fnt'='rL' `size=-1 llen=0.1']
+ Рисует легенду из накопленных записей шрифтом FNT размером SIZE.
+ Параметр POS задает положение легенды: `0' - в нижнем левом углу,
+ `1' - нижнем правом углу, `2' - верхнем левом углу, `3' - верхнем
+ правом углу (по умолчанию).
+
+ -- Команда MGL: legend `x y' ['fnt'='rL' `size=-1 llen=0.1']
+ Рисует легенду из накопленных записей шрифтом FONT размером SIZE.
+ Положение легенды задается параметрами X, Y, которые полагаются
+ нормированными в диапазоне [0,1].
+
+ -- Команда MGL: addlegend 'text' 'stl'
+ Добавляет описание TEXT кривой со стилем STL (*note Line styles::)
+ во внутренний массив записей легенды. Максимальное число записей
+ 100.
+
+ -- Команда MGL: clearlegend
+ Очищает внутренний массив записей легенды.
+
+ -- Команда MGL: legendbox `val'
+ Включает/выключает рисование прямоугольника вокруг легенды. По
+ умолчанию (=`on') прямоугольник рисуется.
+
+ -- Команда MGL: legendmarks `val'
+ Задает число маркеров в легенде. По умолчанию используется 1
+ маркер.
+
+
+File: mgl_ru.info, Node: 1D plotting, Next: 2D plotting, Prev: Legend, Up: MGL interface
+
+1.10 1D графики
+======================
+
+Эти команды строят графики для одномерных (1D) массивов. Одномерными
+считаются массивы, зависящие только от одного параметра (индекса)
+подобно кривой в параметрической форме {x(i),y(i),z(i)}, i=1...n. Есть
+5 основных типов 1D графиков: линия (*note plot::), линия с заполнением
+(*note area::), ступеньки (*note step::), прямоугольники (*note bars::,
+*note barh::) и вертикальные линии (*note stem::). Все эти типы
+графиков имеют похожий интерфейс. Есть версии для рисования в
+пространстве и на плоскости. В последнем случае имеется возможность
+использования только одного массива. Стиль линии и маркеров указывается
+строковой переменной. Если она равна `'''. Кроме того, есть еще
+несколько типов графиков для одномерных массивов, имеющих другой
+интерфейс и вид: поверхность вращения кривой (*note torus::), диаграмма
+(*note chart::), размер ошибки (*note error::), маркеры переменного
+размера (*note mark::), трубками (*note tube::) и т.д. См. раздел *note
+1D plot sample::, для примеров кода и графика.
+
+ График рисуется для каждой строки если один из массивов матрица.
+Размер по 1-ой координате *должен быть одинаков* для всех массивов
+`xdat.nx=ydat.nx=zdat.nx'. Если массив XDAT не указан, то используется
+массив со значениями равно распределенными вдоль оси x. Если массив
+ZDAT не указан, то используется ZDAT[i] = ZVAL. Строка STL задает цвет
+и стиль линии и маркеров (*note Line styles::). По умолчанию (`stl=''')
+рисуется сплошная линия с текущим цветом из палитры.
+
+ -- Команда MGL: plot ydat ['stl'=" `zval=nan']
+ -- Команда MGL: plot xdat ydat ['stl'=" `zval=nan']
+ -- Команда MGL: plot xdat ydat zdat ['stl'="]
+ Рисует ломанную линию между точками {X[i], Y[i], Z[i]}. См. также
+ *note area::, *note step::, *note stem::, *note tube::, *note
+ mark::, *note error::, *note belt::, *note tens::. См. раздел
+ *note Plot sample::, для примеров кода и графика.
+
+ -- Команда MGL: radar adat ['stl'=" `r=-1']
+ Рисует radar chart, представляющий собой ломанную с вершинами на
+ радиальных линиях (типа ломанной в полярных координатах). График
+ рисуется для каждой строки если один из массивов матрица. Параметр
+ R задает дополнительный сдвиг данных (т.е. используется A+R вместо
+ A). Если `r<0', то `r=max(0, -min(a)'. Если STL содержит символ
+ `#', то также рисуется "сетка" (радиальные линии и круг для R).
+ См. также *note plot::. См. раздел *note Radar sample::, для
+ примеров кода и графика.
+
+ -- Команда MGL: tens ydat cdat ['stl'=" `zval=nan']
+ -- Команда MGL: tens xdat ydat cdat ['stl'=" `zval=nan']
+ -- Команда MGL: tens xdat ydat zdat cdat ['stl'="]
+ Рисует ломанную линию по точкам {X[i], Y[i], Z[i]} с цветом,
+ определяемым массивом C[i] (типа графика натяжений). См. также
+ *note plot::, *note mesh::, *note fall::. См. раздел *note Tens
+ sample::, для примеров кода и графика.
+
+ -- Команда MGL: area ydat ['stl'=" `zval=nan']
+ -- Команда MGL: area xdat ydat ['stl'=" `zval=nan']
+ -- Команда MGL: area xdat ydat zdat ['stl'="]
+ Рисует ломанную линию по точками {XDAT[i], YDAT[i], ZDAT[i]} и
+ закрашивает ее вниз до плоскости осей координат. Можно
+ использовать градиентное закрашивание если число указанных цветов
+ в STL равно удвоенному числу кривых для построения. Если строка
+ содержит символ `a', то линии рисуются одна поверх другой (с
+ суммированием) - того же эффекта можно достичь вызовом `cumsum
+ ydat 'y'' перед построением графика. См. также *note plot::, *note
+ bars::, *note stem::, *note region::. См. раздел *note Area
+ sample::, для примеров кода и графика.
+
+ -- Команда MGL: region fdat gdat ['stl'=" `inside=off']
+ -- Команда MGL: region xdat fdat gdat ['stl'=" `inside=off']
+ Закрашивает область между 2 кривыми {XDAT[i], FDAT[i]} и {XDAT[i],
+ GDAT[i]}. При `inside=off' закрашивается только область y1<y<y2,
+ в противном случае также будет закращена область y2<y<y1. Можно
+ использовать градиентное закрашивание если число указанных цветов
+ STL равно удвоенному числу кривых для построения. См. также *note
+ area::, *note bars::, *note stem::. См. раздел *note Region
+ sample::, для примеров кода и графика.
+
+ -- Команда MGL: stem ydat ['stl'=" `zval=nan']
+ -- Команда MGL: stem xdat ydat ['stl'=" `zval=nan']
+ -- Команда MGL: stem xdat ydat zdat ['stl'="]
+ Рисует вертикальные линии из точек {XDAT[i], YDAT[i], ZDAT[i]} до
+ плоскости осей координат. См. также *note area::, *note bars::,
+ *note plot::, *note mark::. См. раздел *note Stem sample::, для
+ примеров кода и графика.
+
+ -- Команда MGL: bars ydat ['stl'=" `zval=nan']
+ -- Команда MGL: bars xdat ydat ['stl'=" `zval=nan']
+ -- Команда MGL: bars xdat ydat zdat ['stl'="]
+ Рисует вертикальные полосы (прямоугольники) из точек {XDAT[i],
+ YDAT[i], ZDAT[i]} до плоскости осей координат. Если строка STL
+ содержит символ `a', то линии рисуются одна поверх другой. Если
+ строка содержит символ `f', то рисуется график типа waterfall для
+ определения кумулятивного эффекта последовательности положительных
+ и отрицательных значений. Можно использовать разные цвета для
+ положительных и отрицательных значений если число указанных цветов
+ равно удвоенному числу кривых для построения. См. также *note
+ barh::, *note area::, *note stem::, *note chart::. См. раздел
+ *note Bars sample::, для примеров кода и графика.
+
+ -- Команда MGL: barh xdat ['stl'=" `zval=nan']
+ -- Команда MGL: barh ydat xdat ['stl'=" `zval=nan']
+ Рисует горизонтальные полосы (прямоугольники) из точек {XDAT[i],
+ YDAT[i]} до плоскости оси y. Если массив YDAT не указан, то
+ используется массив со значениями равно распределенными вдоль оси
+ y. Если строка STL содержит символ `a', то линии рисуются одна
+ поверх другой. Если строка содержит символ `f', то рисуется график
+ типа waterfall для определения кумулятивного эффекта
+ последовательности положительных и отрицательных значений. Можно
+ использовать разные цвета для положительных и отрицательных
+ значений если число указанных цветов равно удвоенному числу кривых
+ для построения. См. также *note bars::. См. раздел *note Barh
+ sample::, для примеров кода и графика.
+
+ -- Команда MGL: chart adat ['col'="]
+ Рисует цветные полосы (пояса) для массива данных ADAT. Число полос
+ равно числу строк ADAT (равно A.NY). Цвет полос поочередно
+ меняется из цветов указанных в COL или в палитре (если `col=''').
+ Пробел в цветах соответствует прозрачному "цвету", т.е.
+ соответствующая полоса не рисуется. Ширина полосы пропорциональна
+ значению элемента в ADAT. График строится только для массивов не
+ содержащих отрицательных значений. Если строка COL содержит `#',
+ то рисуется также черная граница полос. График выглядит лучше в 3d
+ (после вращения системы координат) и/или в полярной системе
+ координат (становится Pie chart). См. раздел *note Chart sample::,
+ для примеров кода и графика.
+
+ -- Команда MGL: step ydat ['stl'=" `zval=nan']
+ -- Команда MGL: step xdat ydat ['stl'=" `zval=nan']
+ -- Команда MGL: step xdat ydat zdat ['stl'="]
+ Рисует ступеньки для точек массива {XDAT[i], YDAT[i], ZDAT[i]}.
+ См. также *note plot::, *note stem::, *note tile::, *note boxs::.
+ См. раздел *note Step sample::, для примеров кода и графика.
+
+ -- Команда MGL: torus zdat ['stl'="]
+ -- Команда MGL: torus rdat zdat ['stl'="]
+ Рисует поверхность вращения кривой {RDAT[i], ZDAT[i], ZDAT[i]}
+ относительно оси *note axialdir::. Если массив RDAT не указан, то
+ используется массив со значениями равно распределенными вдоль оси
+ x. См. также *note plot::, *note axial::. См. раздел *note Torus
+ sample::, для примеров кода и графика.
+
+ -- Команда MGL: tube ydat rdat ['stl'=" `zval=nan']
+ -- Команда MGL: tube ydat `rval' ['stl'=" `zval=nan']
+ -- Команда MGL: tube xdat ydat rdat ['stl'=" `zval=nan']
+ -- Команда MGL: tube xdat ydat `rval' ['stl'=" `zval=nan']
+ -- Команда MGL: tube xdat ydat zdat rdat ['stl'="]
+ -- Команда MGL: tube xdat ydat zdat `rval' ['stl'="]
+ Рисует трубу радиуса RDAT[i] (or RVAL) вдоль кривой между точками
+ {XDAT[i], YDAT[i], ZDAT[i]}. См. также *note plot::. См. раздел
+ *note Tube sample::, для примеров кода и графика.
+
+ -- Команда MGL: mark ydat rdat ['stl'=" `zval=nan']
+ -- Команда MGL: mark xdat ydat rdat ['stl'=" `zval=nan']
+ -- Команда MGL: mark xdat ydat zdat rdat ['stl'="]
+ Рисует маркеры размером RDAT[i]*`marksize' в точках {XDAT[i],
+ YDAT[i], ZDAT[i]}. Для рисования маркеров одинакового размера
+ можно использовать функцию `plot' с невидимой линией (со стилем
+ содержащим ` '). См. также *note plot::, *note textmark::, *note
+ stem::, *note error::. См. раздел *note Mark sample::, для
+ примеров кода и графика.
+
+ -- Команда MGL: textmark ydat 'txt' ['stl'=" `zval=nan']
+ -- Команда MGL: textmark ydat rdat 'txt' ['stl'=" `zval=nan']
+ -- Команда MGL: textmark xdat ydat rdat 'txt' ['stl'=" `zval=nan']
+ -- Команда MGL: textmark xdat ydat zdat rdat 'txt' ['stl'="]
+ Рисует текст TXT как маркер с размером пропорциональным
+ RDAT[i]*`marksize' в точках {XDAT[i], YDAT[i], ZDAT[i]}. Если
+ массив RDAT не указан, то полагается RDAT[i] = 1. См. также *note
+ plot::, *note mark::, *note stem::. См. раздел *note TextMark
+ sample::, для примеров кода и графика.
+
+ -- Команда MGL: error ydat yerr ['stl'=" `zval=nan']
+ -- Команда MGL: error xdat ydat yerr ['stl'=" `zval=nan']
+ -- Команда MGL: error xdat ydat xerr yerr ['stl'=" `zval=nan']
+ Рисует размер ошибки {XERR[i], YERR[i]} в точках {XDAT[i],
+ YDAT[i]} на плоскости Z = ZVAL. Такой график полезен для
+ отображения ошибки эксперимента, вычислений и пр. См. также *note
+ plot::. См. раздел *note Error sample::, для примеров кода и
+ графика.
+
+ -- Команда MGL: boxplot adat ['stl'=" `zval=nan']
+ -- Команда MGL: boxplot xdat adat ['stl'=" `zval=nan']
+ Рисует boxplot (называемый также как box-and-whisker diagram или
+ как "ящик с усами") в точках XDAT[i] на плоскости Z = ZVAL. Это
+ график, компактно изображающий распределение вероятностей
+ ADAT[i,j] (минимум, нижний квартиль (Q1), медиана (Q2), верхний
+ квартиль (Q3) и максимум) вдоль второго (j-го) направления. См.
+ также *note plot::, *note error::, *note bars::. См. раздел *note
+ BoxPlot sample::, для примеров кода и графика.
+
+
+File: mgl_ru.info, Node: 2D plotting, Next: 3D plotting, Prev: 1D plotting, Up: MGL interface
+
+1.11 2D графики
+======================
+
+Эти команды строят графики для двумерных (2D) массивов. Двумерными
+считаются массивы, зависящие только от двух параметров (индексов)
+подобно матрице f(x_i,y_j), i=1...n, j=1...m. Есть несколько основных
+типов 2D графиков: сплошная поверхность (*note surf::), сетчатая
+поверхность (*note mesh::), поверхность из ящиков (*note boxs::),
+поверхность из плиток (*note tile::), водопад (*note fall::), ленточки
+(*note belt::), график плотности (*note dens::), линии уровня (*note
+cont::), линии уровня с заполнением (*note contf::) и результат их
+вращения (*note axial::). В функциях *note cont::, *note contf:: и
+*note axial:: значения уровней можно задавать автоматически и вручную.
+Можно также нарисовать сетку (*note grid::) по массиву данных для
+улучшения вида графика плотности или линий уровня. Каждый тип графика
+имеет похожий интерфейс. Есть версия для рисования одного массива с
+автоматическими координатами и версия для параметрически заданной
+поверхности. См. раздел *note 1D plot sample::, для примеров кода и
+графика.
+
+ Строка SCH задает цветовую схему (*note Color scheme::. Предыдущая
+цветовая схема используется по умолчанию. Младшие размерности массивов
+XDAT, YDAT, ZDAT должны быть одинаковы `xdat.nx=zdat.nx &&
+ydat.nx=zdat.ny' или `xdat.nx=ydat.nx=zdat.nx &&
+xdat.ny=ydat.ny=zdat.ny'. Массивы XDAT и YDAT могут быть векторами (не
+матрицами как ZDAT). Если массивы XDAT, YDAT не указаны, то
+используются массивы со значениями равно распределенными вдоль осей x,
+y. График строится для каждого z среза данных.
+
+ -- Команда MGL: surf zdat ['sch'="]
+ -- Команда MGL: surf xdat ydat zdat ['sch'="]
+ Рисует параметрически заданную поверхность {XDAT[i,j], YDAT[i,j],
+ ZDAT[i,j]}. Если SCH содержит `#', то на поверхности рисуется
+ сетка. См. также *note mesh::, *note dens::, *note belt::, *note
+ tile::, *note boxs::, *note surfc::, *note surfa::. См. раздел
+ *note Surf sample::, для примеров кода и графика.
+
+ -- Команда MGL: mesh zdat ['sch'="]
+ -- Команда MGL: mesh xdat ydat zdat ['sch'="]
+ Рисует сетчатую поверхность, заданную параметрически {XDAT[i,j],
+ YDAT[i,j], ZDAT[i,j]}. См. также *note surf::, *note fall::, *note
+ meshnum::, *note cont::, *note tens::. См. раздел *note Mesh
+ sample::, для примеров кода и графика.
+
+ -- Команда MGL: fall zdat ['sch'="]
+ -- Команда MGL: fall xdat ydat zdat ['sch'="]
+ Рисует водопад для параметрически заданной поверхности {XDAT[i,j],
+ YDAT[i,j], ZDAT[i,j]}. График удобен для построения нескольких
+ кривых, сдвинутых вглубь друг относительно друга. Если SCH
+ содержит `x', то линии рисуются вдоль x-оси (по умолчанию линии
+ рисуются вдоль y-оси). См. также *note belt::, *note mesh::, *note
+ tens::, *note meshnum::. См. раздел *note Fall sample::, для
+ примеров кода и графика.
+
+ -- Команда MGL: belt zdat ['sch'="]
+ -- Команда MGL: belt xdat ydat zdat ['sch'="]
+ Рисует ленточки для параметрически заданной поверхности
+ {XDAT[i,j], YDAT[i,j], ZDAT[i,j]}. Если SCH содержит `x', то линии
+ рисуются вдоль x-оси (по умолчанию линии рисуются вдоль y-оси).
+ См. также *note fall::, *note surf::, *note plot::, *note
+ meshnum::. См. раздел *note Belt sample::, для примеров кода и
+ графика.
+
+ -- Команда MGL: boxs zdat ['sch'="]
+ -- Команда MGL: boxs xdat ydat zdat ['sch'="]
+ Рисует вертикальные ящики для параметрически заданной поверхности
+ {XDAT[i,j], YDAT[i,j], ZDAT[i,j]}. См. также *note surf::, *note
+ dens::, *note tile::, *note step::. См. раздел *note Boxs
+ sample::, для примеров кода и графика.
+
+ -- Команда MGL: tile zdat ['sch'="]
+ -- Команда MGL: tile xdat ydat zdat ['sch'="]
+ Рисует плитки для параметрически заданной поверхности {XDAT[i,j],
+ YDAT[i,j], ZDAT[i,j]}. График может использоваться как 3d
+ обобщение *note step::. См. также *note surf::, *note boxs::,
+ *note step::, *note tiles::. См. раздел *note Tile sample::, для
+ примеров кода и графика.
+
+ -- Команда MGL: dens zdat ['sch'=" `zval=nan']
+ -- Команда MGL: dens xdat ydat zdat ['sch'=" `zval=nan']
+ Рисует график плотности для параметрически заданной поверхности
+ {XDAT[i,j], YDAT[i,j], ZDAT[i,j]} при Z = ZVAL. Если SCH содержит
+ `#', то рисуется сетка. См. также *note surf::, *note cont::,
+ *note contf::, *note boxs::, *note tile::, `dens[xyz]'. См. раздел
+ *note Dens sample::, для примеров кода и графика.
+
+ -- Команда MGL: cont vdat zdat ['sch'=" `zval=nan']
+ -- Команда MGL: cont vdat xdat ydat zdat ['sch'=" `zval=nan']
+ Рисует линии уровня для параметрически заданной поверхности
+ {XDAT[i,j], YDAT[i,j], ZDAT[i,j]} при Z = ZVAL (или при Z=VDAT[k]
+ если `zval==nan'). Линии уровня рисуются для Z=VDAT[k]. Если SCH
+ содержит `#', то рисуется сетка. Если SCH содержит `t' или `T', то
+ значения VDAT[k] будут выведены вдоль контуров над (или под)
+ кривой. См. также *note dens::, *note contf::, *note contd::,
+ *note axial::, `cont[xyz]'. См. раздел *note Cont sample::, для
+ примеров кода и графика.
+
+ -- Команда MGL: cont zdat ['sch'=" `num=7 zval=nan']
+ -- Команда MGL: cont xdat ydat zdat ['sch'=" `num=7 zval=nan']
+ Как предыдущий с вектором V из NUM элементов равно распределенных
+ в интервале цветовой шкалы (см., *note caxis::).
+
+ -- Команда MGL: contf vdat zdat ['sch'=" `zval=nan']
+ -- Команда MGL: contf vdat xdat ydat zdat ['sch'=" `zval=nan']
+ Рисует закрашенные линии (контуры) уровня для параметрически
+ заданной поверхности {XDAT[i,j], YDAT[i,j], ZDAT[i,j]} при Z =
+ ZVAL (или при Z=V[k] если `zval=nan'). Линии уровня рисуются для
+ Z=VDAT[k]. Если SCH содержит `#', то рисуется сетка. См. также
+ *note dens::, *note cont::, *note contd::, `contf[xyz]'. См.
+ раздел *note ContF sample::, для примеров кода и графика.
+
+ -- Команда MGL: contf zdat ['sch'=" `num=7 zval=nan']
+ -- Команда MGL: contf xdat ydat zdat ['sch'=" `num=7 zval=nan']
+ Как предыдущий с вектором V из NUM элементов равно распределенных
+ в интервале цветовой шкалы (см., *note caxis::).
+
+ -- Команда MGL: contd vdat zdat ['sch'=" `zval=nan']
+ -- Команда MGL: contd vdat xdat ydat zdat ['sch'=" `zval=nan']
+ Рисует закрашенные линии (контуры) уровня для параметрически
+ заданной поверхности {XDAT[i,j], YDAT[i,j], ZDAT[i,j]} при Z =
+ ZVAL (или при Z=V[k] если `zval==nan') цветами заданными явно.
+ Линии уровня рисуются для Z=VDAT[k]. Строка SCH задает цвет
+ контуров: цвет k-го контура определяется символом
+ `sch[k%strlen(sch)]'. См. также *note dens::, *note cont::, *note
+ contf::, `cont[xyz]'. См. раздел *note ContD sample::, для
+ примеров кода и графика.
+
+ -- Команда MGL: contd zdat ['sch'=" `num=7 zval=nan']
+ -- Команда MGL: contd xdat ydat zdat ['sch'=" `num=7 zval=nan']
+ Как предыдущий с вектором V из NUM элементов равно распределенных
+ в интервале цветовой шкалы (см., *note caxis::).
+
+ -- Команда MGL: axial vdat zdat ['sch'="]
+ -- Команда MGL: axial vdat xdat ydat zdat ['sch'="]
+ Рисует поверхность вращения линии уровня для параметрически
+ заданной поверхности {XDAT[i,j], YDAT[i,j], ZDAT[i,j]}. Линии
+ уровня рисуются для ZDAT[i,j]=VDAT[k]. Если SCH содержит `#', то
+ рисуется сетчатая поверхность. Если строка содержит символы `x',
+ `y' или `z', то ось вращения устанавливается в указанное
+ направление (по умолчанию вдоль оси *note axialdir::). См. также
+ *note cont::, *note contf::, *note torus::, *note surf3::. См.
+ раздел *note Axial sample::, для примеров кода и графика.
+
+ -- Команда MGL: axial zdat ['sch'=" `num=3']
+ -- Команда MGL: axial xdat ydat zdat ['sch'=" `num=3']
+ Как предыдущий с вектором V из NUM элементов равно распределенных
+ в интервале цветовой шкалы (см., *note caxis::).
+
+ -- Команда MGL: grad pdat ['sch'=" `num=5 zval=nan']
+ -- Команда MGL: grad xdat ydat pdat ['sch'=" `num=5 zval=nan']
+ -- Команда MGL: grad xdat ydat zdat pdat ['sch'=" `num=5']
+ Рисует линии градиента скалярного поля PDAT заданного
+ параметрически {XDAT[i,j], YDAT[i,j]} или {XDAT[i,j,k],
+ YDAT[i,j,k], ZDAT[i,j,k]}. Число линий пропорционально NUM. Линии
+ рисуются только с границ интервала при NUM<0. См. также *note
+ dens::, *note cont::, *note dens3::, *note cont3::, *note flow::.
+ См. раздел *note Grad sample::, для примеров кода и графика.
+
+ -- Команда MGL: grid2 zdat ['sch'=" `zval=nan']
+ -- Команда MGL: grid2 xdat ydat zdat ['sch'=" `zval=nan']
+ Рисует плоскую сету для параметрически заданной поверхности
+ {XDAT[i,j], YDAT[i,j], ZDAT[i,j]} при Z = ZVAL. См. также *note
+ dens::, *note cont::, *note contf::.
+
+
+File: mgl_ru.info, Node: 3D plotting, Next: Dual plotting, Prev: 2D plotting, Up: MGL interface
+
+1.12 3D графики
+======================
+
+Эти функции строят графики для трехмерных (3D) массивов. Трехмерными
+считаются массивы, зависящие от трех параметров (индексов) подобно
+матрице f(x_i,y_j,z_k), i=1...n, j=1...m, k=1...l. Есть 5 основных
+типов 3D графиков: поверхность постоянного уровня (*note surf3::),
+график плотности на срезе (DENS3), линии уровня на срезе (*note
+cont3::), закрашенные контуры уровня на срезе (*note contf3::) и график
+объемной прозрачности типа облака (*note cloud::). В функциях *note
+cont3::, *note contf3:: и *note surf3:: значения уровней можно задавать
+автоматически и вручную. Можно также нарисовать на срезе сетку (*note
+grid3::) по массиву данных для улучшения вида графика плотности или
+линий уровня. Каждый тип графика имеет похожий интерфейс. Есть версия
+для рисования одного массива с автоматическими координатами и версия
+для параметрически заданного массива. См. раздел *note 3D plot
+sample::, для примеров кода и графика.
+
+ Строка SCH задает цветовую схему (*note Color scheme::). Предыдущая
+цветовая схема используется по умолчанию. Массивы X, Y, Z могут быть
+векторами (не 3d массивами как A). Если массивы XDAT, YDAT, ZDAT не
+указаны, то используются массивы со значениями равно распределенными
+вдоль осей x, y, z.
+
+ -- Команда MGL: surf3 adat `val' ['sch'="]
+ -- Команда MGL: surf3 xdat ydat zdat adat `val' ['sch'="]
+ Рисует поверхность уровня для 3d массива, заданного параметрически
+ ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k], ZDAT[i,j,k]) при
+ ADAT(x,y,z)=VAL. Если SCH содержит `#', то рисуется сетчатая
+ поверхность. См. также *note cloud::, *note dens3::, *note
+ surf3c::, *note surf3a::, *note axial::. См. раздел *note Surf3
+ sample::, для примеров кода и графика.
+
+ -- Команда MGL: surf3 adat ['sch'=" `num=5']
+ -- Команда MGL: surf3 xdat ydat zdat adat ['sch'=" `num=5']
+ Рисует NUM поверхностей уровня равномерно распределенных в
+ интервале цветовой шкалы (см. *note caxis::).
+
+ -- Команда MGL: dens3 adat 'dir' [`sval=-1' 'sch'="]
+ -- Команда MGL: dens3 xdat ydat zdat adat 'dir' [`sval=-1' 'sch'="]
+ Рисует график плотности для 3d массива, заданного параметрически
+ ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k], ZDAT[i,j,k]). График
+ рисуется на срезе SVAL в направлении DIR={`x', `y', `z'}. Если STL
+ содержит `#', то на срезе рисуется сетка. См. также *note cont3::,
+ *note contf3::, *note dens::, *note grid3::. См. раздел *note
+ Dens3 sample::, для примеров кода и графика.
+
+ -- Команда MGL: densa adat ['sch'="]
+ -- Команда MGL: densa xdat ydat zdat adat ['sch'="]
+ Рисует графики плотности на всех центральных срезах 3d данных.
+
+ -- Команда MGL: cont3 vdat adat 'dir' [`sval=-1' 'sch'="]
+ -- Команда MGL: cont3 vdat xdat ydat zdat adat 'dir' [`sval=-1'
+ 'sch'="]
+ Рисует линии уровня для 3d массива, заданного параметрически
+ ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k], ZDAT[i,j,k]). Линии рисуются
+ для значений из массива V на срезе SVAL в направлении DIR={`x',
+ `y', `z'}. Если STL содержит `#', то на срезе рисуется сетка. Если
+ SCH содержит `t' или `T', то значения VDAT[k] будут выведены вдоль
+ контуров над (или под) кривой. См. также *note dens3::, *note
+ contf3::, *note cont::, *note grid3::. См. раздел *note Cont3
+ sample::, для примеров кода и графика.
+
+ -- Команда MGL: cont3 adat 'dir' [`sval=-1' 'sch'=" `num=7']
+ -- Команда MGL: cont3 xdat ydat zdat adat 'dir' [`sval=-1' 'sch'="
+ `num=7']
+ Как предыдущий с вектором V из NUM элементов равно распределенных
+ в интервале цветовой шкалы (см., *note caxis::).
+
+ -- Команда MGL: conta adat ['sch'=" `num=7']
+ -- Команда MGL: conta xdat ydat zdat adat ['sch'=" `num=7']
+ Рисует линии уровня на всех центральных срезах 3d данных.
+
+ -- Команда MGL: contf3 vdat adat 'dir' [`sval=-1' 'sch'="]
+ -- Команда MGL: contf3 vdat xdat ydat zdat adat 'dir' [`sval=-1'
+ 'sch'="]
+ Рисует закрашенные линии (контуры) уровня для 3d массива,
+ заданного параметрически ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k],
+ ZDAT[i,j,k]). Линии рисуются для значений из массива V на срезе
+ SVAL в направлении DIR={`x', `y', `z'}. Если STL содержит `#', то
+ на срезе рисуется сетка. См. также *note dens3::, *note cont3::,
+ *note contf::, *note grid3::. См. раздел *note ContF3 sample::,
+ для примеров кода и графика.
+
+ -- Команда MGL: contf3 adat 'dir' [`sval=-1' 'sch'=" `num=7']
+ -- Команда MGL: contf3 xdat ydat zdat adat 'dir' [`sval=-1' 'sch'="
+ `num=7']
+ Как предыдущий с вектором V из NUM элементов равно распределенных
+ в интервале цветовой шкалы (см., *note caxis::).
+
+ -- Команда MGL: contfa adat ['sch'=" `num=7']
+ -- Команда MGL: contfa xdat ydat zdat adat ['sch'=" `num=7']
+ Рисует закрашенные линии (контуры) уровня на всех центральных
+ срезах 3d данных.
+
+ -- Команда MGL: grid3 adat 'dir' [`sval=-1' 'sch'="]
+ -- Команда MGL: grid3 xdat ydat zdat adat 'dir' [`sval=-1' 'sch'="]
+ Рисует сетку для 3d массива, заданного параметрически
+ ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k], ZDAT[i,j,k]). График
+ рисуется на срезе SVAL в направлении DIR={`x', `y', `z'}. См.
+ также *note cont3::, *note contf3::, *note dens3::, *note grid2::.
+
+ -- Команда MGL: grida adat ['sch'="]
+ -- Команда MGL: grida xdat ydat zdat adat ['sch'="]
+ Рисует сетку на всех центральных срезах 3d данных.
+
+ -- Команда MGL: cloud adat ['sch'="]
+ -- Команда MGL: cloud xdat ydat zdat adat ['sch'="]
+ Рисует облачный график для 3d массива, заданного параметрически
+ ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k], ZDAT[i,j,k]). График состоит
+ из кубиков с цветом и прозрачностью пропорциональной значениям
+ ADAT. Результат похож на облако - малые значения прозрачны, а
+ большие нет. Число кубиков зависит от *note meshnum::. Параметр
+ ALPHA меняет общую прозрачность графика. См. также *note surf3::.
+ См. раздел *note Cloud sample::, для примеров кода и графика.
+
+ -- Команда MGL: beam tr g1 g2 adat `rval' ['sch'=" `flag=0 num=3']
+ Рисует поверхность уровня для 3d массива ADAT при постоянном
+ значении ADAT=VAL. Это специальный тип графика для ADAT заданного
+ в сопровождающей системе координат вдоль кривой TR с ортами G1, G2
+ и с поперечным размером RVAL. Переменная FLAG - битовый флаг:
+ `0x1' - рисовать в сопровождающих (не лабораторных) координатах;
+ `0x2' - рисовать проекцию на плоскость \rho-z; `0x4' - рисовать
+ нормированное в каждом сечении поле. Размеры массивов по 1-му
+ индексу TR, G1, G2 должны быть nx>2. Размеры массивов по 2-му
+ индексу TR, G1, G2 и размер по 3-му индексу массива ADAT должны
+ быть одинаковы. См. также *note surf3::.
+
+
+File: mgl_ru.info, Node: Dual plotting, Next: Vector fields, Prev: 3D plotting, Up: MGL interface
+
+1.13 Парные графики
+================================
+
+Эти команды строят графики для двух связанных массивов. Есть несколько
+основных типов 3D графиков: поверхность и поверхность уровня с окраской
+по второму массиву (*note surfc::, *note surf3c::), поверхность и
+поверхность уровня с прозрачностью по второму массиву (*note surfa::,
+*note surf3a::), плитки переменного размера (*note tiles::), диаграмма
+точечного отображения (*note map::), STFA диаграмма (*note stfa::). В
+командах *note surf3a:: и *note surf3c:: значения уровней можно
+задавать автоматически и вручную. Каждый тип графика имеет похожий
+интерфейс. Есть версия для рисования одного массива с автоматическими
+координатами и версия для параметрически заданного массива.
+
+ Строка SCH задает цветовую схему (*note Color scheme::). Предыдущая
+цветовая схема используется по умолчанию. Массивы X, Y, Z могут быть
+векторами (не 3d массивами как A). Если массивы XDAT, YDAT, ZDAT не
+указаны, то используются массивы со значениями равно распределенными
+вдоль осей x, y, z.
+
+ -- Команда MGL: surfc zdat cdat ['sch'="]
+ -- Команда MGL: surfc xdat ydat zdat cdat ['sch'="]
+ Рисует параметрически заданную поверхность {XDAT[i,j], YDAT[i,j],
+ ZDAT[i,j]} с цветом, заданным массивом CDAT[i,j]. Если SCH
+ содержит `#', то на поверхности рисуется сетка. См. также *note
+ surf::, *note surfa::, *note surf3c::. См. раздел *note SurfC
+ sample::, для примеров кода и графика.
+
+ -- Команда MGL: surf3c adat cdat `val' ['sch'="]
+ -- Команда MGL: surf3c xdat ydat zdat adat cdat `val' ['sch'="]
+ Рисует поверхность уровня для 3d массива, заданного параметрически
+ ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k], ZDAT[i,j,k]) при
+ A(x,y,z)=VAL. Аналогично *note surf3::, но цвет задается массивом
+ CDAT. Если SCH содержит `#', то рисуется сетчатая поверхность. См.
+ также *note surf3::, *note surfc::, *note surf3a::. См. раздел
+ *note Surf3C sample::, для примеров кода и графика.
+
+ -- Команда MGL: surf3c adat cdat ['sch'=" `num=5']
+ -- Команда MGL: surf3c xdat ydat zdat adat cdat ['sch'=" `num=5']
+ Рисует NUM поверхностей уровня равномерно распределенных в
+ интервале цветовой шкалы (см. *note caxis::).
+
+ -- Команда MGL: surfa zdat cdat ['sch'="]
+ -- Команда MGL: surfa xdat ydat zdat cdat ['sch'="]
+ Рисует параметрически заданную поверхность {XDAT[i,j], YDAT[i,j],
+ ZDAT[i,j]} с прозрачностью, заданным массивом CDAT[i,j]. Если SCH
+ содержит `#', то на поверхности рисуется сетка. См. также *note
+ surf::, *note surfc::, *note surf3a::. См. раздел *note SurfA
+ sample::, для примеров кода и графика.
+
+ -- Команда MGL: surf3a adat cdat `val' ['sch'="]
+ -- Команда MGL: surf3a xdat ydat zdat adat cdat `val' ['sch'="]
+ Рисует поверхность уровня для 3d массива, заданного параметрически
+ ADAT[i,j,k](XDAT[i,j,k], YDAT[i,j,k], ZDAT[i,j,k]) при
+ A(x,y,z)=VAL. Аналогично *note surf3::, но прозрачность задается
+ массивом CDAT. Если SCH содержит `#', то рисуется сетчатая
+ поверхность. См. также *note surf3::, *note surfa::, *note
+ surf3c::. См. раздел *note Surf3A sample::, для примеров кода и
+ графика.
+
+ -- Команда MGL: surf3a adat cdat ['sch'=" `num=5']
+ -- Команда MGL: surf3a xdat ydat zdat adat cdat ['sch'=" `num=5']
+ Рисует NUM поверхностей уровня равномерно распределенных в
+ интервале цветовой шкалы (см. *note caxis::).
+
+ -- Команда MGL: tiles zdat rdat ['sch'="]
+ -- Команда MGL: tiles xdat ydat zdat rdat ['sch'="]
+ Рисует плитки для параметрически заданной поверхности {XDAT[i,j],
+ YDAT[i,j], ZDAT[i,j]}. Аналогично *note tile::, но размер плиток
+ задается массивов RDAT. Это создает эффект "прозрачности" при
+ экспорте в файлы EPS. См. также *note surfa::, *note tile::. См.
+ раздел *note TileS sample::, для примеров кода и графика.
+
+ -- Команда MGL: map udat vdat ['sch'=" `pnts=on']
+ -- Команда MGL: map xdat ydat udat vdat ['sch'=" `pnts=on']
+ Визуализирует точечное отображение для матриц {UDAT, VDAT }
+ параметрически зависящих от координат XDAT, YDAT. Исходное
+ положение ячейки задает ее цвет. Высота пропорциональна якобиану
+ Jacobian(udat,vdat). График является аналогом диаграммы Арнольда.
+ Если `pnts=off', то рисуются грани, иначе цветные точки рисуются в
+ узлах матриц (полезно для "запутанного" отображения). См. раздел
+ *note Map sample::, для примеров кода и графика.
+
+ -- Команда MGL: stfa re im `dn' ['sch'=" `pnts=on']
+ -- Команда MGL: stfa xdat ydat re im `dn' ['sch'=" `pnts=on']
+ Рисует спектрограмму комплексного массива RE+i*`im' для Фурье
+ размером DN точек. Параметр DN - любое четное число. Например в 1D
+ случае, результатом будет график плотности от массива
+ res[i,j]=|\sum_d^dn exp(I*j*d)*(re[i*dn+d]+I*im[i*dn+d])|/dn
+ размером {int(nx/dn), dn, ny}. Массивы RE, IM параметрически
+ зависят от координат XDAT, YDAT. См. раздел *note STFA sample::,
+ для примеров кода и графика.
+
+
+File: mgl_ru.info, Node: Vector fields, Next: Other plotting, Prev: Dual plotting, Up: MGL interface
+
+1.14 Векторные поля
+================================
+
+Эти функции рисуют графики для 2D и 3D векторных полей. Есть несколько
+типов графиков: просто векторное поле (*note vect::), вектора вдоль
+траектории (*note traj::), векторное поле каплями (*note dew::), нити
+тока (*note flow::), трубки тока (*note pipe::). Каждый тип графика
+имеет похожий интерфейс. Есть версия для рисования одного массива с
+автоматическими координатами и версия для параметрически заданного
+массива.
+
+ Строка SCH задает цветовую схему (*note Color scheme::). Предыдущая
+цветовая схема используется по умолчанию. Все размеры массивов AX и AY
+должны быть одинаковы. Младшие размерности массивов X, Y и AX должны
+быть одинаковы. Массивы X и Y могут быть векторами (не матрицами как
+AX). График строится для каждого z среза AX, AY для 2D случаев.
+
+ -- Команда MGL: traj xdat ydat udat vdat ['sch'=" `zval=nan len=0']
+ -- Команда MGL: traj xdat ydat zdat udat vdat wdat ['sch'=" `len=0']
+ Рисует вектора {UDAT, VDAT, WDAT} вдоль кривой {XDAT, YDAT, ZDAT}.
+ Длина векторов пропорциональна \sqrt{udat^2+vdat^2+wdat^2}. Строка
+ PEN задает цвет (*note Line styles::). По умолчанию (`pen=''').
+ Параметр LEN задает фактор длины векторов (если не нуль) или
+ выбирать длину пропорционально расстоянию между точками кривой
+ (если LEN=0). См. также *note vect::. См. раздел *note Traj
+ sample::, для примеров кода и графика.
+
+ -- Команда MGL: vect udat vdat ['sch'=" `zval=nan flag=0']
+ -- Команда MGL: vect xdat ydat udat vdat ['sch'=" `zval=nan flag=0']
+ Рисует векторное поле {UDAT, VDAT} параметрически зависящее от
+ координат XDAT, YDAT на плоскости при Z=ZVAL. Длина и цвет
+ векторов пропорциональна \sqrt{ax^2+ay^2}. Число рисуемых векторов
+ зависит от *note meshnum::. Параметр FLAG побитовый флаг для
+ настройки вид векторов: `1' - двуцветный вектор, `2' - одинаковая
+ длина векторов, `4' - рисует стрелку в точку сетки, `8' - рисует
+ стрелку с серединой в точке сетки, `16' - рисует штрихи вместо
+ стрелок. См. также *note flow::, *note dew::, *note vectc::. См.
+ раздел *note Vect sample::, для примеров кода и графика.
+
+ -- Команда MGL: vect udat vdat wdat ['sch'=" `flag=0']
+ -- Команда MGL: vect xdat ydat zdat udat vdat wdat ['sch'=" `flag=0']
+ Это 3D версия графика. Здесь массивы UDAT, VDAT, WDAT должны быть
+ 3d массивами, а длина и цвет пропорциональны
+ \sqrt{udat^2+vdat^2+wdat^2}. См. раздел *note Vect 3D sample::,
+ для примеров кода и графика.
+
+ -- Команда MGL: vectc udat vdat ['sch'=" `zval=nan']
+ -- Команда MGL: vectc xdat ydat udat vdat ['sch'=" `zval=nan']
+ Аналогично *note vect:: c `flag=2+16=18'. См. раздел *note VectC
+ sample::, для примеров кода и графика.
+
+ -- Команда MGL: vectc udat vdat wdat ['sch'="]
+ -- Команда MGL: vectc xdat ydat zdat udat vdat wdat ['sch'="]
+ Это 3D версия графика. Здесь массивы UDAT, VDAT, WDAT должны быть
+ 3d массивами, а длина и цвет пропорциональны
+ \sqrt{udat^2+vdat^2+wdat^2}. См. раздел *note VectC 3D sample::,
+ для примеров кода и графика.
+
+ -- Команда MGL: vectl udat vdat ['sch'=" `zval=nan']
+ -- Команда MGL: vectl xdat ydat udat vdat ['sch'=" `zval=nan']
+ Аналогично *note vect:: c `flag=1+16=17'. См. раздел *note VectL
+ sample::, для примеров кода и графика.
+
+ -- Команда MGL: vectl udat vdat wdat ['sch'="]
+ -- Команда MGL: vectl xdat ydat zdat udat vdat wdat ['sch'="]
+ Это 3D версия графика. Здесь массивы UDAT, VDAT, WDAT должны быть
+ 3d массивами, а длина и цвет пропорциональны
+ \sqrt{udat^2+vdat^2+wdat^2}. См. раздел *note VectL 3D sample::,
+ для примеров кода и графика.
+
+ -- Команда MGL: dew udat vdat ['sch'=" `zval=nan']
+ -- Команда MGL: dew xdat ydat udat vdat ['sch'=" `zval=nan']
+ Рисует капли для векторного поля {UDAT, VDAT}, параметрически
+ зависящего от координат XDAT, YDAT при Z=ZVAL. Замечу, что график
+ требует много памяти и процессорного времени для своего создания!
+ Цвет капель пропорционален \sqrt{ax^2+ay^2}. Число капель
+ определяется *note meshnum::. См. также *note vect::. См. раздел
+ *note Dew sample::, для примеров кода и графика.
+
+ -- Команда MGL: flow udat vdat ['sch'=" `num=5 zval=nan']
+ -- Команда MGL: flow xdat ydat udat vdat ['sch'=" `num=5 zval=nan']
+ Рисует нити тока для векторного поля {UDAT, VDAT}, параметрически
+ зависящего от координат XDAT, YDAT на плоскости при z = ZVAL.
+ Число нитей пропорционально NUM. При NUM>0 нитей могут стартовать
+ и изнутри сетки, в противном случае только с краев. Цвет нитей
+ пропорционален \sqrt{udat^2+vdat^2}. Теплые цвета соответствуют
+ нормальному току (типа стока). Холодные цвета соответствуют
+ обратному току (типа источника). См. также *note pipe::, *note
+ vect::. См. раздел *note Flow sample::, для примеров кода и
+ графика.
+
+ -- Команда MGL: flow udat vdat wdat ['sch'=" `num=3']
+ -- Команда MGL: flow xdat ydat zdat udat vdat wdat ['sch'=" `num=3']
+ Это 3D версия графика. Здесь массивы UDAT, VDAT, WDAT должны быть
+ 3d массивами, а цвет пропорционален \sqrt{udat^2+vdat^2+wdat^2}.
+ См. раздел *note Flow 3D sample::, для примеров кода и графика.
+
+ -- Команда MGL: flow `x0 y0' udat vdat ['sch'=" `zval=nan']
+ -- Команда MGL: flow `x0 y0' xdat ydat udat vdat ['sch'=" `zval=nan']
+ Рисует нить тока из точки {X0, Y0} для векторного поля {UDAT,
+ VDAT}, параметрически зависящего от координат XDAT, YDAT на
+ плоскости при z = ZVAL. Цвет нити пропорционален
+ \sqrt{udat^2+vdat^2}. Теплые цвета соответствуют нормальному току
+ (типа стока). Холодные цвета соответствуют обратному току (типа
+ источника).
+
+ -- Команда MGL: flow `x0 y0 z0' udat vdat wdat ['sch'="]
+ -- Команда MGL: flow `x0 y0 z0' xdat ydat zdat udat vdat wdat ['sch'="]
+ Это 3D версия графика. Здесь массивы UDAT, VDAT, WDAT должны быть
+ 3d массивами, а цвет пропорционален \sqrt{udat^2+vdat^2+wdat^2}.
+
+ -- Команда MGL: pipe udat vdat ['sch'=" `r0=0.05 num=5 zval=nan']
+ -- Команда MGL: pipe xdat ydat udat vdat ['sch'=" `r0=0.05 num=5
+ zval=nan']
+ Рисует трубки тока для векторного поля {UDAT, VDAT},
+ параметрически зависящего от координат XDAT, YDAT на плоскости при
+ z = ZVAL. Число трубок пропорционально NUM. При NUM>0 нитей могут
+ стартовать и изнутри сетки, в противном случае только с краев.
+ Цвет и радиус трубок пропорционален \sqrt{udat^2+vdat^2}. Теплые
+ цвета соответствуют нормальному току (типа стока). Холодные цвета
+ соответствуют обратному току (типа источника). Параметр R0 задает
+ радиус трубок. При R0<0 радиус трубок обратно пропорционален их
+ амплитуде. См. также *note flow::, *note vect::. См. раздел *note
+ Pipe sample::, для примеров кода и графика.
+
+ -- Команда MGL: pipe udat vdat wdat ['sch'=" `r0=0.05 num=3']
+ -- Команда MGL: pipe xdat ydat zdat udat vdat wdat ['sch'=" `r0=0.05
+ num=3']
+ Это 3D версия графика. Здесь массивы UDAT, VDAT, WDAT должны быть
+ 3d массивами, а цвет пропорционален \sqrt{udat^2+vdat^2+wdat^2}.
+ См. раздел *note Pipe 3D sample::, для примеров кода и графика.
+
+
+File: mgl_ru.info, Node: Other plotting, Next: Nonlinear fitting, Prev: Vector fields, Up: MGL interface
+
+1.15 Прочие графики
+================================
+
+Это команды, не относящиеся к какой-то специальной категории. Сюда
+входят функции построения графиков по текстовым формулам (*note
+fplot::, *note fsurf::), рисования поверхностей из треугольников (*note
+triplot::), произвольных точек в пространстве (*note dots::) и
+реконструкции по ним поверхности (*note crust::), графики плотности и
+линии уровня на плоскостях, перпендикулярных осям x, y или z
+(dens[xyz], cont[xyz], contf[xyz]). Каждый тип графика имеет похожий
+интерфейс. Есть версия для рисования одного массива с автоматическими
+координатами и версия для параметрически заданного массива. Строка SCH
+задает цветовую схему (*note Color scheme::). Предыдущая цветовая схема
+используется по умолчанию.
+
+ -- Команда MGL: densx dat ['sch'=" `val=nan']
+ -- Команда MGL: densy dat ['sch'=" `val=nan']
+ -- Команда MGL: densz dat ['sch'=" `val=nan']
+ Рисуют график плотности на x, y или z плоскостях. Если DAT - 3d
+ массив, то выполняется интерполяция к заданному срезу VAL. Функции
+ полезны для создания проекций 3D массивов на оси координат. См.
+ также `cont[xyz], contf[xyz]', *note dens::. См. раздел *note Dens
+ projection sample::, для примеров кода и графика.
+
+ -- Команда MGL: contx dat ['sch'=" `val=nan num=7']
+ -- Команда MGL: conty dat ['sch'=" `val=nan num=7']
+ -- Команда MGL: contz dat ['sch'=" `val=nan num=7']
+ Рисуют линии уровня на x, y или z плоскостях. Если DAT - 3d
+ массив, то выполняется интерполяция к заданному срезу VAL. Функции
+ полезны для создания проекций 3D массивов на оси координат. См.
+ также `dens[xyz], contf[xyz]', *note cont::. См. раздел *note Cont
+ projection sample::, для примеров кода и графика.
+
+ -- Команда MGL: contfx dat ['sch'=" `val=nan num=7']
+ -- Команда MGL: contfy dat ['sch'=" `val=nan num=7']
+ -- Команда MGL: contfz dat ['sch'=" `val=nan num=7']
+ Рисуют закрашенные контуры уровня на x, y или z плоскостях. Если
+ DAT - 3d массив, то выполняется интерполяция к заданному срезу
+ VAL. Функции полезны для создания проекций 3D массивов на оси
+ координат. См. также `dens[xyz], cont[xyz]', *note contf::.
+
+ -- Команда MGL: dots xdat ydat zdat ['sch'="]
+ -- Команда MGL: dots xdat ydat zdat adat ['sch'="]
+ Рисует произвольно расположенные точки {XDAT[i], YDAT[i],
+ ZDAT[i]}. Если определен массив ADAT[i], то он задает прозрачность
+ точек. См. также *note crust::, *note mark::, *note plot::. См.
+ раздел *note Dots sample::, для примеров кода и графика.
+
+ -- Команда MGL: crust xdat ydat zdat ['sch'="]
+ Реконструирует и рисует поверхность по произвольно расположенным
+ точкам {XDAT[i], YDAT[i], ZDAT[i]}. Если строка содержит `#', то
+ рисуется сетчатая поверхность. См. также *note dots::, *note
+ triplot::. См. раздел *note Crust sample::, для примеров кода и
+ графика.
+
+ -- Команда MGL: triplot idat xdat ydat ['sch'=" `zval=nan']
+ -- Команда MGL: triplot idat xdat ydat zdat ['sch'="]
+ -- Команда MGL: triplot idat xdat ydat zdat cdat ['sch'="]
+ Рисует поверхность из треугольников. Вершины треугольников
+ задаются индексами IDAT в массиве точек {XDAT[i], YDAT[i],
+ ZDAT[i]}. Если строка содержит `#', то рисуется сетчатая
+ поверхность. Размер по 1-му индексу массива IDAT должен быть 3 или
+ больше. Массивы XDAT, YDAT, ZDAT должны иметь одинаковые размеры.
+ Массив CDAT задает цвет треугольников (если IDAT.ny=CDAT.nx) или
+ цвет вершин (если XDAT.nx=CDAT.nx). См. также *note dots::, *note
+ crust::, *note quadplot::, *note tricont::.
+
+ -- Команда MGL: tricont vdat idat xdat ydat zdat cdat ['sch'="
+ `zval=nan']
+ -- Команда MGL: tricont vdat idat xdat ydat zdat ['sch'=" `zval=nan']
+ -- Команда MGL: tricont idat xdat ydat zdat ['sch'=" `num=7 zval=nan']
+ Рисует линии уровня поверхности из треугольников при Z = ZVAL (или
+ для z=VDAT[k] если `zval==NAN'). Вершины треугольников задаются
+ индексами IDAT в массиве точек {XDAT[i], YDAT[i], ZDAT[i]}. Размер
+ по 1-му индексу массива IDAT должен быть 3 или больше. Массивы
+ XDAT, YDAT, ZDAT должны иметь одинаковые размеры. Массив CDAT
+ (если указан) задает цвет треугольников (если IDAT.ny=CDAT.nx) или
+ цвет вершин (если XDAT.nx=CDAT.nx). См. также *note triplot::,
+ *note cont::.
+
+ -- Команда MGL: quadplot idat xdat ydat ['sch'=" `zval=nan']
+ -- Команда MGL: quadplot idat xdat ydat zdat ['sch'="]
+ -- Команда MGL: quadplot idat xdat ydat zdat cdat ['sch'="]
+ Рисует поверхность из четырехугольников. Вершины треугольников
+ задаются индексами IDAT в массиве точек {XDAT[i], YDAT[i],
+ ZDAT[i]}. Если строка содержит `#', то рисуется сетчатая
+ поверхность. Размер по 1-му индексу массива IDAT должен быть 4 или
+ больше. Массивы XDAT, YDAT, ZDAT должны иметь одинаковые размеры.
+ Массив CDAT задает цвет четырехугольников (если IDAT.ny=CDAT.nx)
+ или цвет вершин (если XDAT.nx=CDAT.nx). См. также *note triplot::.
+
+ -- Команда MGL: fplot 'y(x)' ['pen'=" `zval=nan num=100']
+ Рисует функцию `y(x)' в плоскости z=ZVAL с координатой `x' в
+ диапазоне x-оси координат. Параметр NUM задает минимальное число
+ точек по координате для графика. См. также *note plot::.
+
+ -- Команда MGL: fplot 'x(t)' 'y(t)' 'z(t)' ['pen'=" `num=100']
+ Рисует параметрическую кривую {`x(t)', `y(t)', `z(t)'}, где
+ координата `t' меняется в диапазоне [0, 1]. Параметр NUM задает
+ минимальное число точек по координате для графика. См. также *note
+ plot::.
+
+ -- Команда MGL: fsurf 'z(x,y)' ['sch'=" `num=100']
+ Рисует поверхность `z(x,y)' с координатами `x', `y' в диапазоне
+ x-,y-осей координат. Параметр NUM задает минимальное число точек
+ по координатам для графика. См. также *note surf::.
+
+ -- Команда MGL: fsurf 'x(u,v)' 'y(u,v)' 'z(u,v)' ['sch'=" `num=100']
+ Рисует параметрическую поверхность {`x(u,v)', `y(u,v)', `z(u,v)'},
+ где координаты `u', `v' меняются в диапазоне [0, 1]. Параметр NUM
+ задает минимальное число точек по координатам для графика. См.
+ также *note surf::.
+
+
+File: mgl_ru.info, Node: Nonlinear fitting, Next: Data create, Prev: Other plotting, Up: MGL interface
+
+1.16 Nonlinear fitting
+======================
+
+Эти команды подбирают параметры функций для наилучшей аппроксимации
+данных, т.е. минимизируют сумму \sum_i (f(x_i, y_i, z_i) -
+a_i)^2/s_i^2. При этом аппроксимирующая функция `f' может зависеть от
+одного аргумента `x' (1D случай), от двух аргументов `x,y' (2D случай)
+или от трех аргументов `x,y,z' (3D случай). Функция `f' также может
+зависеть от параметров. Список параметров задается строкой VAR
+(например, `abcd'). Обычно пользователь должен предоставить начальные
+значения параметров в переменной INI. Однако, при его отсутствии
+используются нулевые значения.
+
+ Команды *note fit:: и *note fits:: не рисуют полученные массивы. Они
+заполняют массив FIT по формуле `f' с найденными коэффициентами. При
+этом, координаты `x,y,z' равно распределены в вдоль осей координат.
+Число точек в FIT выбирается максимальным из размера массива FIT и 100.
+Формулу с найденными коэффициентами можно вывести с помощью команды
+*note putsfit::. См. раздел *note Fitting sample::, для примеров кода и
+графика.
+
+ Размерность массивов должны быть не меньше, чем число указанных
+массивов XDAT, YDAT, ZDAT. Также подбор коэффициентов будет
+осуществляться только вдоль указанных направлений (например, вдоль x и
+y если указаны только XDAT и YDAT). Если массив XDAT не указан, то
+используется массив со значениями равно распределенными вдоль оси x.
+
+ -- Команда MGL: fits adat sdat 'func' 'var' [ini=0]
+ -- Команда MGL: fits xdat adat sdat 'func' 'var' [ini=0]
+ -- Команда MGL: fits xdat ydat adat sdat 'func' 'var' [ini=0]
+ -- Команда MGL: fits xdat ydat zdat adat sdat 'func' 'var' [ini=0]
+ "Подгоняют" формулу вдоль x-, y- и z-направлений для массива
+ заданного параметрически A[i,j,k](X[i,j,k], Y[i,j,k], Z[i,j,k]) с
+ весовыми коэффициентами SDAT[i,j,k].
+
+ -- Команда MGL: fit adat 'func' 'var' [ini=0]
+ -- Команда MGL: fit xdat adat 'func' 'var' [ini=0]
+ -- Команда MGL: fit xdat ydat adat 'func' 'var' [ini=0]
+ -- Команда MGL: fit xdat ydat zdat adat 'func' 'var' [ini=0]
+ "Подгоняют" формулу вдоль x-, y- и z-направлений для массива
+ заданного параметрически A[i,j,k](X[i,j,k], Y[i,j,k], Z[i,j,k]) с
+ весовыми коэффициентами равными 1.
+
+ -- Команда MGL: putsfit `x y' ['pre'=" 'fnt'=" `size=-1']
+ Печатает последнюю подобранную формулу с найденными коэффициентами
+ в точке {X, Y}. Строка PRE будет напечатана перед формулой. Все
+ другие параметры такие же как в *note Text printing::.
+
+
+File: mgl_ru.info, Node: Data create, Next: Data filling, Prev: Nonlinear fitting, Up: MGL interface
+
+1.17 Создание данных
+==================================
+
+ -- Команда MGL: new dat [`nx=1 ny=1 nz=1']
+ Создает/пересоздает массив с именем DAT данных указанного размера
+ и заполняет его нулями. Ничего не делает при NX, NY, NZ
+ отрицательных или равных нулю.
+
+ -- Команда MGL: var dat `num v1 [v2=nan]'
+ Создает одномерный массив с именем DAT размером `num' и заполняет
+ его равномерно в диапазоне [V1, V2]. Если V2=`nan', то
+ используется V2=V1.
+
+ -- Команда MGL: list dat `v1 ...'
+ Создает массив с именем DAT и заполняет его числовыми значениями
+ аргументов `v1 ...'. Команда может создавать 1d- и 2d-массивы. Для
+ создания 2d-массивов требуется указать разделитель строк данных
+ `|'. Размер массива будет [максимальное число чисел в строке *
+ число строк]. Например, команда `list 1 | 2 3' создаст массив [1
+ 0; 2 3]. Отмечу, что максимальное число аргументов 1000.
+
+ -- Команда MGL: list dat d1 ...
+ Создает массив с именем DAT и заполняет его числами из массивов
+ `d1 ...'. Команда может создавать 2d- и 3d-массивы (если аргументы
+ 2d массивы). Младшие размерности всех массивов в аргументах должны
+ быть равны размерности D1. Отмечу, что максимальное число
+ аргументов 1000.
+
+ -- Команда MGL: copy dat dat2 ['eq'=" `on_axis=on']
+ -- Команда MGL: copy dat `val'
+ Создает массив с именем DAT и копирует в него данные из массива
+ DAT2. При этом, если указан параметр EQ, то данные будут изменены
+ по формуле аналогично команде *note fill:: (для `on_axis=on') или
+ *note modify:: (для `on_axis=off').
+
+ -- Команда MGL: idset dat 'ids'
+ Устанавливает символьные обозначения для колонок данных. Строка
+ должна содержать символы 'a'...'z' один на колонку (без пробелов).
+
+ -- Команда MGL: info dat [`detail=off']
+ Выводит информацию о массиве (размер, максимальное/минимальное
+ значение, моменты и пр.). При `detail=off' показывается только
+ краткая информация.
+
+ -- Команда MGL: info 'text'
+ Выводит текст TEXT как информацию (предупреждение).
+
+
+File: mgl_ru.info, Node: Data filling, Next: Rearrange data, Prev: Data create, Up: MGL interface
+
+1.18 Заполнение данных
+======================================
+
+ -- Команда MGL: fill dat v1 v2 ['dir'='x']
+ Заполняет значениями равно распределенными в диапазоне [V1, V2] в
+ направлении DIR={`x',`y',`z'}.
+
+ -- Команда MGL: fill dat 'eq' [vdat=0 wdat=0]
+ Заполняет значениями вычисленными по формуле EQ. Формула
+ представляет собой произвольное выражение, зависящее от переменных
+ `x', `y', `z', `u', `v', `w'. Координаты `x', `y', `z' полагаются
+ меняющимися в диапазоне осей координат (в отличие от *note
+ modify::). Переменная `u' - значения исходного массива, переменные
+ `v', `w' - значения массивов VDAT, WDAT. Последние могут быть
+ опущены.
+
+ -- Команда MGL: modify dat 'eq' [`dim=0']
+ -- Команда MGL: modify dat 'eq' vdat [wdat=0]
+ Заполняет значениями вычисленными по формуле EQ. Формула
+ представляет собой произвольное выражение, зависящее от переменных
+ `x', `y', `z', `u', `v', `w'. Координаты `x', `y', `z' полагаются
+ меняющимися в диапазоне [0,1] (в отличие от *note fill::).
+ Переменная `u' - значения исходного массива, переменные `v', `w' -
+ значения массивов VDAT, WDAT. Последние могут быть опущены. Если
+ указан DIM>0, то изменяются только слои >=DIM.
+
+ -- MGL command: put dat `val [i=: j=: k=:]'
+ Присваивает значения (под-)массива DAT[I, J, K] = VAL. Индексы I,
+ J, K равные `:' задают значениия VAL для всего диапазона
+ соответствующего направления(ий). Например, `put dat val : 0 :'
+ задает DAT[i,0,j]=VAL для i=0...(DAT.nx-1), j=0...(DAT.nz-1).
+
+ -- MGL command: put dat vdat [`i=: j=: k=:']
+ Копирует значения из массива VDAT в диапазон значений массива DAT.
+ Индексы I, J, K равные `:' задают диапазон изменения значений в
+ соответствующих направление(ях). Младшие размерности массива VDAT
+ должны быть больше выбранного диапазона массива DAT. Например,
+ `put dat v : 0 :' присвоит DAT[i,0,j]=VDAT.ny>DAT.nz ? VDAT[i,j] :
+ VDAT[i], где i=0...(DAT.nx-1), j=0...(DAT.nz-1) и условие
+ vdat.nx>=dat.nx выполнено.
+
+
+File: mgl_ru.info, Node: Rearrange data, Next: File I/O, Prev: Data filling, Up: MGL interface
+
+1.19 Изменение размеров данных
+=====================================================
+
+ -- Команда MGL: rearrange dat `mx [my=0 mz=0]'
+ Изменяет размерность данных без изменения самого массива данных,
+ так что результирующий массив MX*MY*MZ < nx*ny*nz. Если один из
+ параметров MY или MZ ноль, то он будет выбран оптимальным образом.
+ Например, если MY=0, то будет MY=nx*ny*nz/MX и MZ=1.
+
+ -- Команда MGL: extend dat `n1 [n2=0]'
+ Увеличивает размер данных путем вставки (|N1|+1) новых срезов
+ после (для N1>0) или перед (для N1<0) существующими данными. Можно
+ добавить сразу 2 размерности для 1d массива, используя второй
+ параметр N2. Данные в новые срезы будут скопированы из
+ существующих. Например, для N1>0 новый массив будет a_ij^new =
+ a_i^old where j=0...N1. Соответственно, для N1<0 новый массив
+ будет a_ij^new = a_j^old, где i=0...|N1|.
+
+ -- Команда MGL: transpose dat ['dim'='yxz']
+ Транспонирует (меняет порядок размерностей) массив данных. Новый
+ порядок размерностей задается строкой DIM.
+
+ -- Команда MGL: squeeze dat `rx [ry=1 rz=1 sm=off]'
+ Уменьшает размер данных путем удаления элементов с индексами не
+ кратными RX, RY, RZ соответственно. Параметр SMOOTH задает
+ использовать сглаживания (т.е. out[i]=\sum_{j=i,i+r} a[j]/r) или
+ нет (т.е. out[i]=a[j*r]).
+
+ -- Команда MGL: crop dat `n1 n2' 'dir'
+ Обрезает границы данных при I<N1 и I>N2 (при N2>0) или
+ I>`n[xyz]'-N2 (при N2<=0) вдоль направления DIR.
+
+ -- Команда MGL: delete dat
+ Удаляет массив DAT и освобождает использованную память. Может быть
+ полезно для больших неиспользуемых массивов.
+
+ -- Команда MGL: delete dat 'dir' `[pos=off num=0]'
+ Удаляет NUM срезов вдоль направления DIR с позиции POS.
+
+ -- Команда MGL: insert dat 'dir' `[pos=off num=0]'
+ Вставляет NUM срезов вдоль направления DIR с позиции POS и
+ заполняет их нулями.
+
+
+File: mgl_ru.info, Node: File I/O, Next: Make another data, Prev: Rearrange data, Up: MGL interface
+
+1.20 Чтение/сохранение данных
+===================================================
+
+ -- Команда MGL: read dat 'fname'
+ Читает данные из текстового файла с разделителями символом
+ пробела/табуляции с автоматическим определением размера массива.
+ Двойной перевод строки начинает новый срез данных (по направлению
+ z).
+
+ -- Команда MGL: read dat 'fname' `mx [my=1 mz=1]'
+ Читает данные из текстового файла с заданными размерами. Ничего не
+ делается если параметры MX, MY или MZ равны нулю или отрицательны.
+
+ -- Команда MGL: readmat dat 'fname' [`dim=2']
+ Читает данные из текстового файла с размерами, указанными в первых
+ DIM числах файла. При этом переменная DIM задает размерность (1d,
+ 2d, 3d) данных.
+
+ -- Команда MGL: readall dat 'templ' `v1 v2 [dv=1 slice=off]'
+ Объединяет данные из нескольких текстовых файлов. Имена файлов
+ определяются вызовом функции `sprintf(fname,templ,val);', где VAL
+ меняется от V1 до V2 с шагом DV. Данные загружаются один за другим
+ в один и тот же срез данных (при SLICE=`off') или срез-за-срезом
+ (при SLICE=`on').
+
+ -- Команда MGL: readall dat 'templ' `[slice=off]'
+ Объединяет данные из нескольких текстовых файлов, чьи имена
+ удовлетворяют шаблону TEMPL (например, TEMPL=`"t_*.dat"'). Данные
+ загружаются один за другим в один и тот же срез данных (при
+ SLICE=`off') или срез-за-срезом (при SLICE=`on').
+
+ -- Команда MGL: save dat 'fname'
+ Сохраняет массив данных в текстовый файл.
+
+ -- Команда MGL: readhdf dat 'fname' 'dname'
+ Читает массив с именем DNAME из HDF5 или HDF4 файла FNAME.
+
+ -- Команда MGL: savehdf dat 'fname' 'dname'
+ Сохраняет массив под именем DNAME в HDF5 или HDF4 файл FNAME.
+
+ -- Команда MGL: import dat 'fname' 'sch' [`v1=0 v2=1']
+ Читает данные из растрового файла. RGB значения пикселов
+ преобразуются в число в диапазоне [V1, V2] используя цветовую
+ схему SCH (*note Color scheme::).
+
+ -- Команда MGL: export dat 'fname' 'sch' [`v1=0 v2=0']
+ Сохраняет данные в растровый файл. Числовые значения,
+ нормированные в диапазон [V1, V2], преобразуются в RGB значения
+ пикселов, используя цветовую схему SCH (*note Color scheme::).
+ Если V1>=V2, то значения V1, V2 определяются автоматически как
+ минимальное и максимальное значение данных.
+
+
+File: mgl_ru.info, Node: Make another data, Next: Change data, Prev: File I/O, Up: MGL interface
+
+1.21 Создание новых данных
+=============================================
+
+ -- Команда MGL: combine res adat bdat
+ Возвращает в массиве данных RES прямое произведение массивов
+ (наподобие, res[i,j] = adat[i]*bdat[j] и т.д.).
+
+ -- Команда MGL: evaluate res dat idat [`norm=on']
+ -- Команда MGL: evaluate res dat idat jdat [`norm=on']
+ -- Команда MGL: evaluate res dat idat jdat kdat [`norm=on']
+ Возвращает массив данных RES, полученный в результате интерполяции
+ исходного массива в точках других массивов (например,
+ res[i,j]=dat[idat[i,j],jdat[i,j]]). Размеры массивов IDAT, JDAT,
+ KDAT должны совпадать. Координаты в IDAT, JDAT, KDAT полагаются
+ нормированными в диапазон [0,1] (при NORM=`on') или в диапазоны
+ [0,nx], [0,ny], [0,nz] соответственно.
+
+ -- Команда MGL: hist res dat `num v1 v2 [nsub=0]'
+ -- Команда MGL: hist res dat wdat `num v1 v2 [nsub=0]'
+ Возвращает распределение (гистограмму) RES из NUM точек от
+ значений массива DAT в диапазоне [V1, V2]. Массив WDAT задает веса
+ элементов (все веса равны 1 если WDAT не указан). Параметр NSUB
+ задает число дополнительных точек интерполяции (для сглаживания
+ получившейся гистограммы).
+
+ -- Команда MGL: hist res xdat adat
+ -- Команда MGL: hist res xdat ydat adat
+ -- Команда MGL: hist res xdat ydat zdat adat
+ Возвращает распределение (гистограмму) RES от значений массива
+ ADAT, параметрически зависящего от координат {XDAT,YDAT,ZDAT} в
+ диапазоне осей координат. Массив ADAT играет роль веса точки.
+ Число точек в результате RES - максимум из размера RES и 100.
+
+ -- Команда MGL: momentum res dat 'how' ['dir'='z']
+ Возвращает в массиве данных RES момент (1d массив) данных DAT
+ вдоль направления DIR. Строка HOW определяет тип момента. Момент
+ определяется как res_k = \sum_ij how(x_i,y_j,z_k) dat_ij/ \sum_ij
+ a_ij если DIR=`z' и т.д. Координаты `x', `y', `z' - индексы
+ массива в диапазоне [0,1].
+
+ -- Команда MGL: sum res dat 'dir'
+ Возвращает в массиве данных RES результат суммирования DAT вдоль
+ направления(ий) DIR.
+
+ -- Команда MGL: max res dat 'dir'
+ Возвращает в массиве данных RES максимальное значение DAT вдоль
+ направления(ий) DIR. Gets array which is the maximal data values
+ in given direction or direction(s).
+
+ -- Команда MGL: min res dat 'dir'
+ Возвращает в массиве данных RES минимальное значение DAT вдоль
+ направления(ий) DIR.
+
+ -- Команда MGL: resize res dat `mx [my=1 mz=1]'
+ Возвращает массив данных RES размером MX, MY, MZ со значениями
+ полученными интерполяцией значений массива DAT.
+
+ -- Команда MGL: subdata res dat `xx [yy=: zz=:]'
+ Возвращает в RES подмассив массива данных DAT с фиксированными
+ значениями индексов с положительными значениями. Например,
+ `subdata a b : 2' выделяет третью строку (индексы начинаются с
+ нуля), `subdata a b 4 :' выделяет 5-ую колонку, `subdata a b : :
+ 3' выделяет 4-ый срез и т.д.
+
+ -- Команда MGL: trace res dat
+ Возвращает массив REF диагональных элементов DAT[i,i] (для 2D
+ данных) или DAT[i,i,i] (для 3D данных) где i=0...nx-1. В 1D случае
+ возвращается сам массив данных DAT. Размеры массива данных должен
+ быть DAT.ny, DAT.nz >= DAT.nx или DAT.ny, DAT.nz = 1.
+
+ -- Команда MGL: transform dat 'type' real imag
+ Выполняет интегральное преобразование комплексных данных REAL,
+ IMAG в выбранном направлении и возвращает модуль результата в RES.
+ Порядок и тип преобразований задается строкой TYPE: первый символ
+ для x-направления, второй для y-направления, третий для
+ z-направления. Возможные символы: `f' - прямое преобразование
+ Фурье, `i' - обратное преобразование Фурье, `s' - синус
+ преобразование, `c' - косинус преобразование, `h' - преобразование
+ Ханкеля, `n' или ` ' - нет преобразования.
+
+ -- Команда MGL: transforma dat 'type' ampl phase
+ Аналогично предыдущему с заданными амплитудой AMPL и фазой PHASE
+ комплексных чисел.
+
+ -- Команда MGL: stfad res real imag `dn' ['dir'='x']
+ Выполняет оконное преобразование Фурье длиной DN для комплексных
+ данных REAL, IMAG и возвращает модуль результата в RES. Например,
+ для DIR=`x' результат будет иметь размер {int(nx/dn), dn, ny} и
+ будет равен res[i,j,k]=|\sum_d^dn
+ exp(I*j*d)*(real[i*dn+d,k]+I*imag[i*dn+d,k])|/dn.
+
+ -- Команда MGL: pde res 'ham' ini_re ini_im [`dz=0.1 k0=100']
+ Решает уравнение в частных производных du/dz =
+ i*k0*HAM(p,q,x,y,z,|u|)[u], где p=-i/k0*d/dx, q=-i/k0*d/dy -
+ псевдо-дифференциальные операторы. Параметры INI_RE, INI_IM задают
+ начальное распределение поля. Координаты в уравнении и в решении
+ полагаются в диапазоне осей координат. Замечу, что внутри этот
+ диапазон увеличивается в 3/2 раза для уменьшения отражения от
+ границ расчетного интервала. Параметр DZ задает шаг по
+ эволюционной координате z. В данный момент использован упрощенный
+ алгоритм, когда все "смешанные" члена (типа `x*p'->x*d/dx)
+ исключаются. Например, в 2D случае это функции типа ham = f(p,z) +
+ g(x,z,u). При этом допускаются коммутирующие комбинации (типа
+ `x*q'->x*d/dy). Переменная `u' используется для обозначения
+ амплитуды поля |u|. Это позволяет решать нелинейные задачи -
+ например, нелинейное уравнение Шредингера `ham='p^2+q^2-u^2''.
+ Также можно указать мнимую часть для поглощения (типа `ham =
+ 'p^2+i*x*(x>0)''), но только если зависимость от `i' линейная,
+ т.е. ham = hre+i*him. См. раздел *note PDE sample::, для примеров
+ кода и графика.
+
+ -- Команда MGL: ray res 'ham' `x0 y0 z0 p0 q0 v0 [dt=0.1 tmax=10]'
+ Решает систему геометрооптических уравнений d_r_/dt = d HAM/d_p_,
+ d_p_/dt = -d HAM/d_r_. Это гамильтоновы уравнения для траектории
+ частицы в 3D случае. Гамильтониан HAM может зависеть от координат
+ `x', `y', `z', импульсов `p'=px, `q'=py, `v'=pz и времени `t': ham
+ = H(x,y,z,p,q,v,t). Начальная точка (при `t=0') задается
+ переменными {X0, Y0, Z0, P0, Q0, V0}. Параметры DT и TMAX задают
+ шаг и максимальное время интегрирования. Результат RES - массив
+ {x,y,z,p,q,v,t} с размером {7 * int(TMAX/DT+1) }. См. раздел *note
+ Beam tracing sample::, для примеров кода и графика.
+
+ -- Команда MGL: qo2d res 'ham' ini_re ini_im ray [`r=1 k0=100' xx=0
+ yy=0]
+ Решает уравнение в частных производных du/dt =
+ i*k0*HAM(p,q,x,y,|u|)[u] в сопровождающей системе координат, где
+ p=-i/k0*d/dx, q=-i/k0*d/dy - псевдо-дифференциальные операторы.
+ Параметры INI_RE, INI_IM задают начальное распределение поля.
+ Параметр RAY задает опорный луч для сопровождающей системы
+ координат. Можно использовать луч найденный с помощью `ray'.
+ Опорный луч должен быть достаточно гладкий, чтобы система
+ координат была однозначной и для исключения ошибок интегрирования.
+ Если массивы XX и YY указаны, то в них записываются декартовы
+ координаты для каждой точки найденного решения. См. также *note
+ pde::. См. раздел *note Beam tracing sample::, для примеров кода и
+ графика.
+
+ -- Команда MGL: jacobian res xdat ydat [zdat=0]
+ Вычисляет якобиан преобразования {i,j,k} в {XDAT,YDAT,ZDAT}, где
+ координаты {i,j,k} полагаются нормированными в интервал [0,1].
+ Якобиан находится по формуле det||dr_\alpha/d\xi_\beta||, где
+ r={XDAT,YDAT,ZDAT} и \xi={i,j,k}. Все размерности всех массивов
+ должны быть одинаковы. Данные должны быть трехмерными если указаны
+ все 3 массива {XDAT,YDAT,ZDAT} или двумерными если только 2
+ массива {XDAT,YDAT}.
+
+
+File: mgl_ru.info, Node: Change data, Next: Operators, Prev: Make another data, Up: MGL interface
+
+1.22 Изменение данных
+====================================
+
+Эти команды изменяют данные вдоль заданного направления(ий) типа
+например дифференцирования, интегрирования и т.д. Направление
+указывается строкой DIR, которая может содержать символы `x', `y' и/или
+`z', вдоль которых изменения будут применены.
+
+ -- Команда MGL: cumsum dat 'dir'
+ Суммирует с накоплением в выбранном направлении(ях).
+
+ -- Команда MGL: integrate dat 'dir'
+ Выполняет интегрирование (подобно суммированию с накоплением) в
+ выбранном направлении(ях).
+
+ -- Команда MGL: diff dat 'dir'
+ Выполняет дифференцирование в выбранном направлении(ях).
+
+ -- Команда MGL: diff dat xdat ydat [zdat=0]
+ Выполняет дифференцирование данных DAT, параметрически зависящих
+ от координат, в направлении XDAT с YDAT, ZDAT=constant. Параметр
+ ZDAT может быть опущен, что соответствует 2D случаю. Используются
+ следующие формулы (2D случай): da/dx =
+ (a_j*y_i-a_i*y_j)/(x_j*y_i-x_i*y_j), где a_i=da/di, a_j=da/dj
+ обозначает дифференцирование вдоль 1-ой и 2-ой размерности.
+ Похожие формулы используются и в 3D случае. Порядок аргументов
+ можно менять - например, если данные a(i,j) зависят от координат
+ {x(i,j), y(i,j)}, то обычная производная по `x' будет равна `diff
+ a x y', а обычная производная по `y' будет равна `diff a y x'.
+
+ -- Команда MGL: diff2 dat 'dir'
+ Выполняет двойное дифференцирование (как в операторе Лапласа) в
+ выбранном направлении(ях).
+
+ -- Команда MGL: sinfft dat 'dir'
+ Выполняет синус преобразование в выбранном направлении(ях). Синус
+ преобразование есть \sum a_i \sin(k i).
+
+ -- Команда MGL: cosfft dat 'dir'
+ Выполняет косинус преобразование в выбранном направлении(ях).
+ Синус преобразование есть \sum a_i \cos(k i).
+
+ -- Команда MGL: hankel dat 'dir'
+ Выполняет преобразование Ханкеля в выбранном направлении(ях).
+ Преобразование Ханкеля есть \sum a_i J_0(k i).
+
+ -- Команда MGL: swap dat 'dir'
+ Меняет местами левую и правую части данных в выбранном
+ направлении(ях). Полезно для отображения результата FFT.
+
+ -- Команда MGL: roll dat 'dir' num
+ Сдвигает данные на NUM ячеек в выбранном направлении(ях).
+ Соответствует замене индекса на I->(I+NUM)%N.
+
+ -- Команда MGL: mirror dat 'dir'
+ Отражает данные в выбранном направлении(ях). Соответствует замене
+ индекса на I->N-I.
+
+ -- Команда MGL: sew dat ['dir'='xyz' `da=2*pi']
+ Удаляет скачки данных (например, скачки фазы после обратных
+ тригонометрических функций) с периодом DA в выбранном
+ направлении(ях).
+
+ -- Команда MGL: smooth data `type' ['dir'='xyz']
+ Сглаживает данные в выбранном направлении(ях) методом TYPE. Сейчас
+ поддерживаются 4 метода: `0' ничего не делает, `1' линейное
+ усреднение по 3 точкам, `2' линейное усреднение по 5 точкам, `3'
+ квадратичное усреднение по 5 точкам.
+
+ -- Команда MGL: envelop dat ['dir'='x']
+ Находит огибающую данных в выбранном направлении. Только одно
+ направление может быть выбрано за раз.
+
+ -- Команда MGL: normsl dat `v1 v2' ['dir'='z' `keep=on sym=off']
+ Нормирует данные срез-за-срезом в выбранном направлении DIR в
+ интервал [V1,V2]. Если SYM=`on', то используется симметричный
+ интервал [-max(|v1|,|v2|), max(|v1|,|v2|)]. Если KEEP=`on', то
+ максимальное значение k-го среза ограничено величиной \sqrt{\sum
+ a_ij(k)/\sum a_ij(0)}.
+
+ -- Команда MGL: norm dat `v1 v2 [sym=off dim=0]'
+ Нормирует данные в интервал [V1,V2]. Если SYM=`on', то
+ используется симметричный интервал [-max(|v1|,|v2|),
+ max(|v1|,|v2|)]. Изменения применяются только к срезам >=DIM.
+
+
+File: mgl_ru.info, Node: Operators, Next: Program flow, Prev: Change data, Up: MGL interface
+
+1.23 Операторы
+=======================
+
+ -- Команда MGL: multo dat dat2
+ Поэлементно умножает массив DAT на DAT2.
+
+ -- Команда MGL: multo dat `val'
+ Умножает каждый элемент на число.
+
+ -- Команда MGL: divto dat dat2
+ Поэлементно делит массив DAT на DAT2.
+
+ -- Команда MGL: divto dat `val'
+ Делит каждый элемент на число.
+
+ -- Команда MGL: addto dat dat2
+ Поэлементно прибавляет DAT2 к массиву DAT.
+
+ -- Команда MGL: addto dat `val'
+ Прибавляет число к каждому элементу.
+
+ -- Команда MGL: subto dat dat2
+ Поэлементно вычитает DAT2 из массива DAT.
+
+ -- Команда MGL: subto dat `val'
+ Вычитает число из каждого элемента.
+
+
+File: mgl_ru.info, Node: Program flow, Next: Command options, Prev: Operators, Up: MGL interface
+
+1.24 Программирование
+=====================================
+
+Эти команды управляют порядком выполнения других команд (условия,
+циклы, подпрограммы), (пере-)определяют аргументы скрипта и пр.
+
+ -- Команда MGL: chdir 'path'
+ Переходит в папку PATH.
+
+ -- Команда MGL: define $N smth
+ Задает N-ый аргумент скрипта равным SMTH. Отмечу, что SMTH
+ используется как есть (с символами `'' если присутствуют).
+ Выполняется только подстановка других макроопределений $0...$9,
+ $a...$z. Здесь N это цифра (0...9) или буква (a...z).
+
+ -- Команда MGL: define name smth
+ Определяет константу (скаляр) с именем `name' и числовым значением
+ `smth'. Позднее она может быть использована как обычное число.
+
+ -- Команда MGL: defchr $N smth
+ Задает N-ый аргумент скрипта равным символу с UTF кодом SMTH.
+ Здесь N это цифра (0...9) или буква (a...z).
+
+ -- Команда MGL: defnum $N smth
+ Задает N-ый аргумент скрипта равным числовому значению SMTH. Здесь
+ N это цифра (0...9) или буква (a...z).
+
+ -- Команда MGL: defpal $N smth
+ Задает N-ый аргумент скрипта равным символу палитры с индексом,
+ найденным из SMTH. Здесь N это цифра (0...9) или буква (a...z).
+
+ -- Команда MGL: call 'fname' [ARG1 ARG2 ... ARG9]
+ Переходит к выполнению (вызывает) подпрограммы FNAME (или внешнего
+ скрипта, если функция не была найдена). Опциональные аргументы
+ передаются в подпрограмму. См. также *note func::.
+
+ -- Команда MGL: func 'fname' [narg=0]
+ Определяет подпрограмму с именем FNAME и задает число требуемых
+ аргументов. Аргументы будут помещены в параметры скрипта $1, $2,
+ ... $9. Отмечу, что выполнение основной программы должно быть
+ остановлено до начала определений подпрограмм. См. также *note
+ stop::, *note return::.
+
+ -- Команда MGL: return
+ Возвращается из подпрограммы.
+
+ -- Команда MGL: if dat 'cond'
+ Начинает блок команд, выполняемый если каждый элемент DAT
+ удовлетворяет условию COND.
+
+ -- Команда MGL: if `val'
+ Начинает блок команд, выполняемый если `val' не ноль.
+
+ -- Команда MGL: elseif dat 'cond'
+ Начинает блок команд, выполняемый если предыдущий `if' или
+ `elseif' не был выполнен и каждый элемент DAT удовлетворяет
+ условию COND.
+
+ -- Команда MGL: elseif `val'
+ Начинает блок команд, выполняемый если предыдущий `if' или
+ `elseif' не был выполнен и `val' не ноль.
+
+ -- Команда MGL: else
+ Начинает блок команд, выполняемый если предыдущий `if' или
+ `elseif' не был выполнен.
+
+ -- Команда MGL: endif
+ Заканчивает определение блока `if/elseif/else'.
+
+ -- Команда MGL: for $N `v1 v2 [dv=1]'
+ Начинает блок команд, выполняемый в цикле с $N-ым аргументом
+ изменяющимся от V1 до V2 с шагом DV. Здесь N это цифра (0...9) или
+ буква (a...z).
+
+ -- Команда MGL: for $N dat
+ Начинает блок команд, выполняемый в цикле с $N-ым аргументом
+ пробегающим значения массива DAT. Здесь N это цифра (0...9) или
+ буква (a...z).
+
+ -- Команда MGL: next
+ Заканчивает блок цикла `for'.
+
+ -- Команда MGL: once `val'
+ Определяет код (между `once on' и `once off') который будет
+ выполнен только один раз. Полезно для работы с большими данными в
+ программах типа UDAV.
+
+ -- Команда MGL: stop
+ Останавливает выполнение скрипта.
+
+
+File: mgl_ru.info, Node: Command options, Next: Suffixes, Prev: Program flow, Up: MGL interface
+
+1.25 Опции команд
+============================
+
+Опции команд позволяют легко настроить вид отдельного графика не меняя
+глобальных настроек для все рисунка. Опции указываются после команды.
+Каждая опция отделяется от предыдущей символом `;'. Опции работают так,
+что запоминают текущие настройки рисунка, применяют собственные
+настройки, выполняют команду и возвращают глобальные настройки обратно.
+Поэтому использование опций для команд обработки данных или настройки
+графика бесполезно.
+
+ Наиболее часто используемые опции - `xrange, yrange, zrange',
+устанавливающие границы изменения осей координат (и тем самым
+автоматических массивов). Например, команда `plot y; xrange 0.1 0.9'
+построит кривую с x-координатой равно распределенной в интервале 0.1
+... 0.9, а не вдоль текущей оси x.
+
+ Полный список опций:
+
+ -- Опция MGL: alpha `val'
+ -- Опция MGL: alphadef `val'
+ Задает величину прозрачности поверхности. Значение должно быть в
+ диапазоне [0, 1]. См. также *note alphadef::
+
+ -- Опция MGL: ambient `val'
+ Задает яркость фонового освещения. Значение должно быть в
+ диапазоне [0, 1]. См. также *note ambient::
+
+ -- Опция MGL: crange `val1 val2'
+ Задает границы цветовой шкалы. См. также *note crange::
+
+ -- Опция MGL: xrange `val1 val2'
+ Задает границы изменения координаты x. См. также *note xrange::
+
+ -- Опция MGL: yrange `val1 val2'
+ Задает границы изменения координаты y. См. также *note yrange::
+
+ -- Опция MGL: zrange `val1 val2'
+ Задает границы изменения координаты z. См. также *note zrange::
+
+ -- Опция MGL: cut `val'
+ Задает обрезание точек за пределами осей координат. См. также
+ *note cut::
+
+ -- Опция MGL: fontsize `val'
+ Задает размер текста. См. также *note font::
+
+ -- Опция MGL: marksize `val'
+ Задает размер маркеров. См. также *note marksize::
+
+ -- Опция MGL: meshnum `val'
+ Задает ориентировочное число линий, стрелок, ячеек и пр. См. также
+ *note meshnum::
+
+ -- Опция MGL: legend 'txt'
+ Добавляет строку 'txt' во внутренний массив записей легенды. Стиль
+ линии и маркера аргумента последней вызванной команды построения
+ *note 1D plotting::. См. также *note legend::
+
+
+File: mgl_ru.info, Node: Suffixes, Next: Utilities, Prev: Command options, Up: MGL interface
+
+1.26 Суффиксы переменных
+==========================================
+
+Суффиксы позволяют быстро получить числовую характеристику (размер,
+максимальное или минимальное значение, сумму элементов и т.д.) массива
+данных и использовать ее как число (скаляр) в аргументах. Суффиксы
+начинаются с точки `.' сразу после (без пробелов) имени переменной и
+временного массива. Например, `a.nx' даст размер массива A по оси х,
+`b(1).max' даст максимальное значение второй строки массива B,
+`(c(:,0)^2).sum' даст сумму квадратов элементов первой колонки массива
+C и т.д.
+
+ Полный список суффиксов:
+*nx, ny, nz*
+ Размер массива в направлении x, y, z соответственно.
+
+*max*
+ Максимальное значение массива.
+
+*min*
+ Минимальное значение массива.
+
+*sum*
+ Сумма элементов массива.
+
+*a*
+ Первый элемент массива (элемент с индексами 0,0,0).
+
+*fst*
+ Первое не нулевое значение массива.
+
+*lst*
+ Последнее не нулевое значение массива.
+
+*mx, my, mz*
+ Положение максимума в направлении x, y, z соответственно.
+
+*ax, ay, az, aa*
+ Положение центра масс в направлении x, y, z соответственно или
+ среднее значение массива.
+
+*wx, wy, wz, wa*
+ Ширина в направлении x, y, z соответственно или дисперсия
+ элементов массива.
+
+*sx, sy, sz, sa*
+ Асимметрия в направлении x, y, z соответственно или элементов
+ массива.
+
+*kx, ky, kz, ka*
+ Эксцесс в направлении x, y, z соответственно или элементов массива.
+
+
+File: mgl_ru.info, Node: Utilities, Prev: Suffixes, Up: MGL interface
+
+1.27 Утилиты для MGL
+==============================
+
+MathGL содержит несколько программ для работы со скриптами MGL. Есть
+утилита для сохранения в растровое (`mgl2png', `mgl2gif') или векторное
+(`mgl2eps', `mgl2svg') изображения. Программа `mglview' показывает
+результат выполнения скрипта MGL и позволяет вращать и настраивать
+график. Также можно транслировать MGL скрипт в C++ файл с помощью
+программы `mgl2cpp'.
+
+ Все эти программы имеют схожий набор аргументов. Первым идет имя
+скрипта, а вторым идет имя выходного файлы (может быть опущено),
+последние аргументы - опции скрипта и программы. К опциям относятся
+параметры скрипта (это `$0, $1, ... $9') и настройки локали. Параметры
+скрипта имеют формат `-Nval', где N=0,1...9 - номер параметра, val -
+его значние. Например, опция `-1test' заменит `$1' на `test' в скрипте.
+Опция -Lval устанавливает локаль в значение val. Например, `-Lutf8'
+будет использовать UTF-8 в скрипте.
+
+ Также можно создавать анимированные изображения GIF или набор JPEG
+файлов с именами `frameNNNN.jpg' (где `NNNN' - номер кадра). Для этого
+в скрипте надо указать параметры анимации для каждого кадра (строками с
+коментариями `##a val' или опциями `-Aval') или в цикле (строкой с
+комментарием `##с v1 v2 [dv]' или опцию `-Cn1:n2'), которые будут
+подставлены в качестве параметра `$0' при последовательном вызове
+скрипта. Для сохранения кадров в JPEG просто добавьте команду `write
+''' в конце скрипта.
+
+
+File: mgl_ru.info, Node: Examples, Next: Samples, Prev: MGL interface, Up: Top
+
+2 MathGL examples
+*****************
+
+This chapter contain information about basic and advanced MathGL, hints
+and samples for all types of graphics. I recommend you read first 2
+sections one after another and at least look on "Hints" section. Also I
+recommend you to look at *note General concepts::. Sample code for some
+of these examples can be found in `http://mathgl.sf.net/pictures.html'
+and in *note Samples::.
+
+* Menu:
+
+* Basic usage::
+* Advanced usage::
+* Data handling::
+* Data plotting::
+* Hints::
+
+
+File: mgl_ru.info, Node: Basic usage, Next: Advanced usage, Up: Examples
+
+2.1 Basic usage
+===============
+
+MGL script can be used by several manners. Each has positive and
+negative sides:
+ * _The using of MGL in UDAV._
+
+ Positive side is the possibility to view the plot at once and to
+ modify it, rotate, zoom or switch on transparency or lighting) by
+ hand or by mouse. Negative sides are: the need of X-terminal.
+
+ * _Direct writing to file in bitmap or vector format without
+ creation of graphical window._
+
+ Positive aspects are: batch processing of similar data set, for
+ example, a set of resulting data files for different calculation
+ parameters), running from the console program, including the
+ cluster calculation), fast and automated drawing, saving pictures
+ for further analysis, or demonstration). Negative sides are: the
+ usage of the external program for picture viewing. Also, the data
+ plotting is non-visual. So, you have to imagine the picture, view
+ angles, lighting and so on) before the plotting. I recommend to
+ use graphical window for determining the optimal parameters of
+ plotting on the base of some typical data set. And later use these
+ parameters for batch processing in console program.
+
+ In this case you can use a set of programs: `mgl2png', `mgl2gif',
+ `mgl2eps', `mgl2svg' or `mglview' for viewing.
+
+ The simplest script is
+box # draw bounding box
+axis # draw axis
+fplot 'x^3' # draw some function
+
+ Just type it in UDAV and press F5. Also you can save it in text file
+`test.mgl' and type in the console `mgl2png test.mgl' what produce file
+`test.mgl.png' with resulting picture.
+
+
+File: mgl_ru.info, Node: Advanced usage, Next: Data handling, Prev: Basic usage, Up: Examples
+
+2.2 Advanced usage
+==================
+
+Now I show several non-obvious features of MGL: several subplots in a
+single picture, curvilinear coordinates, text printing and so on.
+Generally you may miss this section at first reading, but I don't
+recommend it.
+
+* Menu:
+
+* Subplots::
+* Axis and grids::
+* Curvilinear coordinates::
+* Text printing example::
+
+
+File: mgl_ru.info, Node: Subplots, Next: Axis and grids, Up: Advanced usage
+
+2.2.1 Subplots
+--------------
+
+Let me demonstrate possibilities of axes transformation. MathGL has the
+following functions: `SubPlot', `InPlot', `Aspect' and `Rotate', *note
+Transformation matrix::). The order of their calling is strictly
+determined. First, one changes the position of axes in image area,
+functions `SubPlot' and `InPlot'). After that one may rotate the plot,
+function `Rotate'). Finally, one may change aspects of axes, function
+`Aspect'). The following code illustrates the aforesaid it:
+subplot 2 2 0:box
+text -1 1.1 'Just box' 'L'
+inplot 0.2 0.5 0.7 1:box
+text 0 1.2 'Inplot example'
+
+subplot 2 2 1
+rotate 60 40:aspect 1 1 1
+box:text 1 1 1.5 'rotate only' 'R'
+
+subplot 2 2 2
+rotate 60 40:aspect 1 1 2
+box:text 0 0 2 'aspect and rotate'
+
+subplot 2 2 3
+rotate 60 40:aspect 1 2 2
+box:text 0 0 1.5 'Aspect in other direction'
+ Here I used function `text' for printing the text in arbitrary
+position of picture, *note Text printing::). Text coordinates and size
+are connected with axes. However, text coordinates may be everywhere,
+including the outside the bounding box. I shall show its features later
+in *Note Text printing example::.
+
+ Note that several commands can be placed in a string if they are
+separated by `:' symbol.
+
+ [image src="../png/sample1.png" ]
+
+Example of several subplots on the single picture.
+
+
+File: mgl_ru.info, Node: Axis and grids, Next: Curvilinear coordinates, Prev: Subplots, Up: Advanced usage
+
+2.2.2 Axis and grids
+--------------------
+
+MathGL library can draw not only the bounding box but also the axes,
+grids, labels and so on. The limits of axes and their origin (the point
+of intersection) are determined by function `axis'. Also you can use
+`xrange, yrange, zrange' functions (*note Axis settings::). Ticks on
+axis are specified by functions `xtick, ytick, ztick, ttick'. First
+argument the direction for each change will be applied. Second argument
+gives the step between ticks (if positive) or gives the number of ticks
+on the axis (if negative) or set to use logarithmic ticks (if zero).
+Third argument gives numbers of sub-ticks between ticks (default is
+zero). Last argument define the initial ticks position.
+
+ Function `Axis' draws axes. Its textual string shows in which
+directions the axis or axes will be drawn (by default `'xyz'', function
+draws axes in all directions). Function `Grid' draws grid
+perpendicularly to specified directions. Example of axes and grid
+drawing is:
+subplot 2 2 0
+xtick 0.4 3 # sets tick step to 0.5
+ytick 0.4 3 # and draws 3 subticks
+box # should be after the ticks change
+axis 'xy': grid
+text 0 1.3 1 'axis and grid'
+
+xtick -5: ytick -5 # restore back
+subplot 2 2 1:rotate 60 40
+origin 0 0 0
+axis
+xlabel 'x' 1
+ylabel 'y' 1
+zlabel 'z' 1
+text 0 0 1.5 'axis and labels'
+
+subplot 2 2 2:rotate 60 40
+xtick 0.2: ytick 0.2: ztick 0.2 # too low step of ticks
+origin -1 -1 -1
+axis:grid
+text 0 0 1.5 'shift origin and add grid'
+text 0 0 1.2 '(note, too many ticks)'
+
+subplot 2 2 3:rotate 60 40
+xtick -6: ytick -6 # decrease the number of ticks
+axis 'yz'
+ylabel 'y axis'
+zlabel 'z axis'
+text 0 0 1.5 'remove x axis, and'
+text 0 0 1.2 'decrease number of ticks'
+
+ This example shows the importance of the correct choosing of the
+number of ticks on axis. If tick step is too small then its text may
+overlap and becomes unreadable. This code has the example of `Label'
+function. It draws label for axis in specified direction. The text
+position on axis is specified by third argument of `Label' function. If
+it is positive then then text is drawn near the axis maximum, if
+negative then the same takes place near the minimum of axis, if zero -
+then at the center of axis.
+
+ [image src="../png/sample2.png" ]
+
+Example of setting up axis range and axis ticks.
+
+
+File: mgl_ru.info, Node: Curvilinear coordinates, Next: Text printing example, Prev: Axis and grids, Up: Advanced usage
+
+2.2.3 Curvilinear coordinates
+-----------------------------
+
+Now let use curvilinear coordinates. In difference from other systems
+of plot creation, MathGL uses textual formulas for connection of the
+old (data) and new (output) coordinates. This allows one to plot in
+arbitrary coordinates. The following code plots the line Y=0, Z=0 in
+Cartesian, polar, parabolic and spiral coordinates:
+new x 50: new y 50: new z 50
+fill y 0.5 0.5: fill x -1 1 # creates data arrays
+origin -1 1 -1
+
+subplot 2 2 0:rotate 60 40
+plot x y z 'r2'
+axis: grid
+text 0 1.3 1 'cartesian'
+
+subplot 2 2 1:rotate 60 40
+axis 'y*sin(pi*x)' 'y*cos(pi*x)' ''
+plot x y z 'r2'
+axis: grid
+text 0 1.3 1 'cylindrical'
+
+subplot 2 2 2:rotate 60 40
+axis '2*y*x' 'y*y - x*x' ''
+plot x y z 'r2'
+axis: grid
+text 0 1.3 1 'parabolic'
+
+subplot 2 2 3:rotate 60 40
+axis 'y*sin(pi*x)' 'y*cos(pi*x)' 'x+z'
+plot x y z 'r2'
+axis: grid
+text 0 1.3 1 'spiral'
+
+ [image src="../png/sample3.png" ]
+
+Example of curvilinear coordinates
+
+
+File: mgl_ru.info, Node: Text printing example, Prev: Curvilinear coordinates, Up: Advanced usage
+
+2.2.4 Text printing example
+---------------------------
+
+MathGL prints text by vector font. There are functions for manual
+specifying of text position (like `Puts') and for its automatic
+selection (like `Label', `legend' and so on). MathGL prints text always
+in specified position even if it lies outside the bounding box. The
+default size of font is specified by command FONTSIZE. However, the
+actual size of output string depends on position of axes (depends on
+functions `SubPlot', `InPlot'). The switching of the font style
+(italic, bold, wire and so on) can be done for the whole string (by
+function parameter) or inside the string. By default MathGL parses
+TeX-like commands for symbols and indexes (see *note Font styles::).
+Example of MathGL font drawing is:
+text 0 1 'Text can be in ASCII and in Unicode'
+text 0 0.6 'It can be \wire{wire}, \big{big} or #r{colored}'
+text 0 0.2 'One can change style in string: \b{bold}, \i{italic, \b{both}}'
+text 0 -0.2 'Easy to \a{overline} or \u{underline}'
+text 0 -0.6 'Easy to change indexes ^{up} _{down} @{center}'
+text 0 -1 'It parse TeX: \int \alpha \cdot \sqrt3{sin(\pi x)^2 + \gamma_{i_k}} dx'
+
+ [image src="../png/sample4.png" ]
+
+Example of text printing with different font effects
+
+ Another example demonstrate the features of TeX formula parsing.
+text 0 0 '\sqrt{\frac{\alpha^{\gamma^2}+\overset 1{\big\infty}}{\sqrt3{2+b}}}', 0, -4
+
+ [image src="../png/samplee.png" ]
+
+Example of TeX formula parsing
+
+
+File: mgl_ru.info, Node: Data handling, Next: Data plotting, Prev: Advanced usage, Up: Examples
+
+2.3 Data handling
+=================
+
+* Menu:
+
+* Array creation::
+* Data changing::
+
+
+File: mgl_ru.info, Node: Array creation, Next: Data changing, Up: Data handling
+
+2.3.1 Array creation
+--------------------
+
+One can put numbers into the data instance by several ways. Let us do
+it for sinus function:
+ * one can create array by `list' command list a 0 0.04 0.16 0.36 0.64 1
+
+ * another way is to copy from "inline" array copy a [0,0.04,0.16,0.36,0.64,1]
+
+ * next way is to fill the data by textual formula with the help of
+ `modify' function new a 6
+ modify a 'x^2'
+
+ * or one may fill the array in some interval and modify it later new a 6
+ fill a 0 1
+ modify a 'u^2'
+
+ * or fill the array using current axis range new a 6
+ fill a '(x+1)^2/4'
+
+ * finally it can be loaded from file new s 6: modify s 'x^2'
+ save s 'sqr.dat' # create file first
+ read a 'sqr.dat' # load it
+
+ * at this one can read only part of data new s 6: modify s 'x^2'
+ save s 'sqr.dat' # create file first
+ read a 'sqr.dat' 5 # load it
+
+ Creation of 2d- and 3d-arrays is mostly the same. One can use direct
+data filling by `list' command
+list a 11 12 13 | 21 22 23 | 31 32 33
+ or by inline arrays
+copy a [[11,12,13],[21,22,23],[31,32,33]]
+ Also data can be filled by formula
+new z 30 40
+fill z 'sin(pi*x)*cos(pi*y)'
+ or loaded from file.
+
+ The only non-obvious thing here is using multidimensional arrays in
+C/C++, i.e. arrays defined like `float dat[40][30];'. Since, formaly
+this arrays element `dat[i]' can address the memory in arbitrary place
+you should use the proper function to convert such arrays to `mglData'
+object. For C++ this is functions like `mglData::Set(float **dat, int
+N1, int N2'. For C this is functions like `mgl_data_set_float2(HMDT d,
+const float **dat, int N1, int N2'. At this, you should keep in mind
+that `nx=N2' and `ny=N1' after conversion.
+
+
+File: mgl_ru.info, Node: Data changing, Prev: Array creation, Up: Data handling
+
+2.3.2 Data changing
+-------------------
+
+MathGL has functions for data processing: differentiating, integrating,
+smoothing and so on. Let us consider some examples. The simplest ones
+are integration and differentiation. The direction in which operation
+will be performed is specified by textual string, which may contain
+symbols `x', `y' or `z'. For example, the call of `diff a 'x'' will
+differentiate data along `x' direction; the call of `integrate a 'xy''
+perform the double integration of data along `x' and `y' directions;
+the call of `diff2 a 'xyz'' will apply 3d Laplace operator to data and
+so on. Example of this operations on 2d array a=x*y is presented in
+code:
+new a 30 40: modify a 'x*y'
+axis 0 0 0 1 1 1
+subplot 2 2 0:rotate 60 40
+surf a: box
+text 0.7 1 1.2 'a(x,y)'
+subplot 2 2 1:rotate 60 40
+diff a 'x': surf a: box
+text 0.7 1 1.2 'da/dx'
+subplot 2 2 2:rotate 60 40
+integrate a 'xy': surf a: box
+text 0.7 1 1.2 '\int da/dx dxdy'
+subplot 2 2 3:rotate 60 40
+diff2 a 'y': surf a: box
+text 0.7 1 1.2 '\int {d^2}a/dxdy dx'
+
+ [image src="../png/sample6.png" ]
+
+Example of data differentiation and integration
+
+ Data smoothing (function `Smooth') is more interesting and
+important. This function has 2 main arguments: type of smoothing and
+its direction. Now 4 methods are supported: `0' does nothing for
+delta=0 or approaches data to zero with the step delta, `1' linear
+averaging by 3 points, `2' linear averaging by 5 points, `3' quadratic
+averaging by 5 points. Let me demonstrate it for 1d case:
+new y0 30
+modify y0 '0.4*sin(2*pi*x)+0.3*cos(3*pi*x)-0.4*sin(4*pi*x)+0.2*rnd'
+copy y1 y0: smooth y1 1
+copy y2 y0: smooth y2 2
+copy y3 y0: smooth y3 3
+
+plot y0 'k': addlegend 'none' 'k'
+plot y1 'r': addlegend 'line 3' 'r'
+plot y2 'g': addlegend 'line 5' 'g'
+plot y3 'b': addlegend 'quad 5' 'b'
+legend: box
+
+ [image src="../png/sample7.png" ]
+
+Example of data smoothing
+
+ Finally one can create new data arrays on base of the existing one:
+extract slice, row or column of data (`SubData'), summarize along some
+of direction(s) (`Sum'), find distribution of data elements (`Hist').
+Note, that all these functions are not thread-safe because they use
+static internal variable for output array. In particular, the using of
+several of them in arguments of the same function will lead to
+unpredictable result.
+
+
+File: mgl_ru.info, Node: Data plotting, Next: Hints, Prev: Data handling, Up: Examples
+
+2.4 Data plotting
+=================
+
+Let me now show how to plot the data. MathGL generally has 2 types of
+plotting functions. Simple variant requires a single data array for
+plotting, other data (coordinates) are considered uniformly distributed
+in interval MIN*MAX. Second variant requires data arrays for all
+coordinates. It allows one to plot rather complex multivalent curves
+and surfaces (in case of parametric dependencies). Argument setting to
+default values allows one to plot data in standard form. Manual
+arguments setting gives possibility for fine tuning of colors,
+positions and view of graphics. Note, that the call of drawing function
+adds something to picture but does not clear the previous plots (as it
+does in Matlab). Another difference from Matlab is that all setup (like
+transparency, lightning, axis borders and so on) must be specified
+*before* plotting functions.
+
+* Menu:
+
+* Plots for 1D data::
+* Plots for 2D data::
+* Plots for 3D data::
+* Surface transparency::
+
+
+File: mgl_ru.info, Node: Plots for 1D data, Next: Plots for 2D data, Up: Data plotting
+
+2.4.1 Plots for 1D data
+-----------------------
+
+Term "1D data" means that data depend on single index (parameter) like
+curve in parametric form {x(i),y(i),z(i)}, i=1...n. There are 5
+generally different types of data representations: simple line plot,
+line plot with filling under it, stairs plot, bar plot and vertical
+lines (*note 1D plotting::). Each type of plotting has similar
+interface. There are 3D version and two 2D versions. One of last
+requires single array. The parameters of line and marks (*note Line
+styles::) are specified by the string argument. If the string parameter
+is `NULL' then solid line with color from palette is used.
+
+ Below I shall show the features of 1D plotting on base of `plot'
+function (*note 1D plotting::). Let us start from sinus plot:
+new y0 50: modify y0 'sin(pi*(2*x-1))'
+subplot 2 2 0
+plot y0: box
+ Style of line is not specified in `plot' function. So MathGL uses the
+solid line with first color of palette (this is blue). Next subplot
+shows array Y1 with 2 rows:
+subplot 2 2 1
+new y1 50 2
+modify y1 'sin(pi*2*x-pi)'
+modify y1 'cos(pi*2*x-pi)/2' 1
+plot y1: box
+ As previously I did not specify the style of lines. As a result,
+MathGL again uses solid line with next colors in palette (there are
+green and red). Now let us plot a circle on the same subplot. The
+circle is parametric curve x=cos(\pi t), y=sin(\pi t). I will set the
+color of the circle (dark yellow, `Y') and put marks `+' at point
+position:
+new x 50: modify x 'cos(pi*2*x-pi)'
+plot x y0 'Y+'
+ Note that solid line is used because I did not specify the type of
+line. The same picture can be achieved by `Plot2' function. Let us draw
+ellipse by orange dash line:
+plot y1(:,0) y(:,1) 'q|'
+
+ Drawing in 3D space is mostly the same. Let us draw spiral with
+default line style. Now its color is 4-th color from palette (this is
+cyan):
+subplot 2 2 2:rotate 60 40
+new z 50: modify z '2*x-1'
+plot x y0 z 'g':box
+ Function `Plot3' does 3D curve plot but for single array. Use it to
+put circle marks on the previous plot:
+new y2 10 3
+modify y2 'cos(pi*(2*x-1-y))'
+modify y2 '2*x-1' 2
+plot y2(:,0) y2(:,1) y2(:,2) 'bo '
+ Note that line style is empty ` ' here. Usage of other 1D plotting
+functions looks similar:
+subplot 2 2 3:rotate 60 40
+bars x y0 z 'r':box
+
+ [image src="../png/sample8.png" ]
+
+Example of 1D data plot
+
+
+File: mgl_ru.info, Node: Plots for 2D data, Next: Plots for 3D data, Prev: Plots for 1D data, Up: Data plotting
+
+2.4.2 Plots for 2D data
+-----------------------
+
+Surfaces `Surf' and other 2D plots (*note 2D plotting::) are drown the
+same simpler as 1D one. The difference is that the string parameter
+specifies not by line style but by the color scheme of the plot (*note
+Color scheme::). Here I draw attention on 4 most interesting color
+schemes. There is gray scheme where color is changed from black to
+white (string `kw') or from white to black (string `wk'). Another
+scheme is useful for accentuation of negative (by blue color) and
+positive (by red color) regions on plot (string `'BbwrR''). Last one is
+the popular "jet" scheme (string `'BbcyrR'').
+
+ Now I shall show the example of a surface drawing. At first let us
+switch lightning on
+light on
+ and draw the surface, considering coordinates x,y to be uniformly
+distributed in interval MIN*MAX
+new a0 50 40
+modify a0 '0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))'
+subplot 2 2 0:rotate 60 40
+surf a0: box
+ Color scheme was not specified. So previous color scheme is used. In
+this case it is default color scheme ("jet") for the first plot. Next
+example is a sphere. The sphere is parametrically specified surface:
+new x 50 40: new y 50 40: new z 50 40
+modify x '0.8*sin(2*pi*x)*sin(pi*y)'
+modify y '0.8*cos(2*pi*x)*sin(pi*y)'
+modify z '0.8*cos(pi*y)'
+subplot 2 2 1:rotate 60 40
+surf x y z 'bbwrr': box
+ I set color scheme to `'BbwrR'' that corresponds to red top and blue
+bottom of the sphere.
+
+ Surfaces will be plotted for each of slice of the data if NZ>1. Next
+example draws surfaces for data arrays with NZ=3:
+new a1 50 40 3
+modify a1 '0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))'
+modify a1 '0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*sin(3*pi*(x*y))' 1
+modify a1 '0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*cos(3*pi*(x*y))' 2
+subplot 2 2 2:rotate 60 40
+alpha on
+surf a1: box
+ Note, that it may entail a confusion. However, if one will use density
+plot then the picture will look better:
+subplot 2 2 3: rotate 60 40
+dens a1: box
+ Note, that the previous color scheme is used in last plots because
+there are no direct specification of the one.
+
+ [image src="../png/sample9.png" ]
+
+Example of surface plot for 2D data
+
+ Drawing of other 2D plots is analogous. The only peculiarity is the
+usage of flag `#'. By default this flag switches on the drawing of a
+grid on plot (`grid' or `mesh' for plots in plain or in volume).
+However, for isosurfaces (including surfaces of rotation `axial') this
+flag switches the face drawing off. Figure becomes wired. The
+following code gives example of flag `#' using (compare with normal
+function drawing as in its description):
+alpha on: light on: light 0 0 0 1
+new a 30 20
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+
+subplot 2 2 0: rotate 40 60
+surf a 'bbcyrr#': box
+subplot 2 2 1: rotate 40 60
+dens a 'bbcyrr#': box
+subplot 2 2 2: rotate 40 60
+cont a 'bbcyrr#': box
+subplot 2 2 3: rotate 40 60
+axial a 'bbcyrr#': box
+
+ [image src="../png/samplea.png" ]
+
+Example of 2D data plot with color scheme contained `#' symbol
+
+
+File: mgl_ru.info, Node: Plots for 3D data, Next: Surface transparency, Prev: Plots for 2D data, Up: Data plotting
+
+2.4.3 Plots for 3D data
+-----------------------
+
+Drawing procedures for 3D plot looks similarly to 1D and 2D plots
+described above. There are 3 general types of 3D plots (*note 3D
+plotting::): (i) plots on slices or on projections, (ii) isosurfaces,
+(iii) cloud-like plots. Plots on slice are clear enough - one specifies
+a slice (as its index or as coordinate value) and MathGL draws contour
+lines or density plot on slice plane. Isosurface gives more
+information. Isosurface is 3D analogue of the contour line `cont'. It
+shows the region where data array values exceed specified isosurface
+level. Plot becomes more informative if one adds transparency,
+lightning or sets color scheme depending on coordinates. Generalization
+of isosurface is the cloud-like plot. For this plot the darker color
+and less transparent regions correspond to higher values of data.
+Contrary, the regions with low values are transparent. For plotting of
+the phase of fields (or beams or pulses) one can use isosurface which
+transparency depends on the other data array (see function `surf3a').
+As example of 3D data plots let us draw the Gaussian beam diffraction
+in space. Beam propagates along X axis:
+alpha on: light on
+light 0 0 0 1
+new a 30 30 30: new b 30 30 30
+modify a 'exp(-16*((z-0.5)^2+(y-0.5)^2)/(1+4*x^2))'
+modify b '16*((z-0.5)^2+(y-0.5)^2)*(x)/(1+4*x^2)'
+caxis 0 1
+
+subplot 2 2 0: rotate 40 60
+surf3 a 'wgk': box
+subplot 2 2 1: rotate 40 60
+densa a: box: axis
+subplot 2 2 2: rotate 40 60
+cloud a: box
+subplot 2 2 3: rotate 40 60
+surf3a b a 'q': box
+
+ [image src="../png/sampleb.png" ]
+
+Example of Gaussian beam diffraction (3D data)
+
+
+File: mgl_ru.info, Node: Surface transparency, Prev: Plots for 3D data, Up: Data plotting
+
+2.4.4 Surface transparency
+--------------------------
+
+MathGL library has advanced features for setting and handling the
+surface transparency. The simplest way to add transparency is the using
+of function `Alpha'. As a result, all further surfaces (and
+isosurfaces, density plots and so on) become transparent. However,
+their look can be additionally improved.
+
+ First, the selected surface will be non-transparent if one sets the
+flag `transparent' before the surface drawing and sets it off after the
+drawing.
+
+ Second, the value of transparency can be different from surface to
+surface. To do it just change the value of `alphadef' before the
+drawing of the selected surface. If its value is close to 0 then the
+surface becomes more and more transparent. Contrary, if its value is
+close to 1 then the surface becomes practically non-transparent. This
+is some analogue of `transparent on'.
+
+ Third feature is the changing of the way how the light goes through
+overlapped surfaces. The variable `transptype' defines it. By default
+the usual transparency is used (`transptype 0') - surfaces below is
+less visible than the upper ones. A "glass-like" transparency
+(`transptype 1') has a different look when the surface just decreases
+the background light (the surfaces are commutable in this case).
+
+ A "neon-like" transparency (`transptype 2') has more interesting
+look. In this case a surface is the light source (like a lamp on the
+dark background) and just adds some intensity to the color. At this,
+the library sets automatically the black color for the background and
+changes the default line color to white.
+
+ As example I shall show the variant of plot from *note Plots for 2D
+data:: (grid drawing is disabled) for different types of transparency.
+ [image src="../png/type0.png" ]
+
+Example of `TranspType=0'.
+
+ [image src="../png/type1.png" ]
+
+Example of `TranspType=1'.
+
+ [image src="../png/type2.png" ]
+
+Example of `TranspType=2'.
+
+
+File: mgl_ru.info, Node: Hints, Prev: Data plotting, Up: Examples
+
+2.5 Hints
+=========
+
+In this section I have included some small hints and advices for the
+improving of the quality of plots and for the demonstration of some
+non-trivial features of MathGL library. In contrast to previous
+examples I showed mostly the idea but not the whole drawing function.
+More examples with the source code can be find at
+`http://mathgl.sf.net/' or in section *note Samples::.
+
+* Menu:
+
+* ``Compound'' graphics::
+* Two axes in one plot::
+* Titles for the plot::
+* Changing of the color range::
+* Management of a point cutting::
+* Vector field visualization::
+* Several light sources::
+* CutMin and CutMax features::
+* Mapping visualization::
+* Log-scaled plot::
+* Nonlinear fitting hints::
+* PDE solving hints::
+* Stereo image::
+
+
+File: mgl_ru.info, Node: ``Compound'' graphics, Next: Two axes in one plot, Up: Hints
+
+2.5.1 "Compound" graphics
+-------------------------
+
+As I noted above, MathGL functions (except the special one, like `clf')
+do not erase the previous plotting but just add the new one. It allows
+one to draw "compound" plots easily. For example, popular Matlab
+command `surfc' can be emulated in MathGL by 2 calls:
+surf a
+cont a 0 7 -1 # draw contours at z = -1
+ Here A is 2-dimensional data for the plotting, `-1' is the value of
+z-coordinate at which the contour should be plotted (at the bottom in
+this example). Analogously, one can draw density plot instead of
+contour lines and so on.
+
+ Another nice plot is contour lines plotted directly on the surface:
+light on # switch on light for the surface
+surf a 'bbcyrr' # select 'jet' colormap for the surface
+cont a 'y' # and yellow color for contours
+ The possible difficulties arise in black&white case, when the color of
+the surface can be close to the color of a contour line. In that case I
+may suggest the following code:
+light on # switch on light for the surface
+surf a 'kw' # select 'gray' colormap for the surface
+caxis -1 0 # first draw for darker surface colors
+conta 'w' # white contours
+caxis 0 1 # now draw for brighter surface colors
+cont a 'k' # black contours
+ The idea is to divide the color range on 2 parts (dark and bright) and
+to select the contrasting color for contour lines for each of part.
+
+ Similarly, one can plot flow thread over density plot of vector
+field amplitude (this is another amusing plot from Matlab) and so on.
+The list of compound graphics can be prolonged but I hope that the
+general idea is clear.
+
+
+File: mgl_ru.info, Node: Two axes in one plot, Next: Titles for the plot, Prev: ``Compound'' graphics, Up: Hints
+
+2.5.2 Two axes in one plot
+--------------------------
+
+Developing the previous hint one can make a plot with 2 or more axes.
+The idea is that the change of settings does not influence on the
+already drawn graphics. So, for 2-axes plot let us set the first axis
+and draw everything concerning it. Then let us setup the second axis
+and draw things for the second axis. The corresponding code is (*note
+2-axes sample::):
+# set up first axis
+axis -1 -1 1 1: origin -1 -1
+axis:fplot 'sin(pi*x)' # draw something in first axis
+# set up second axis
+axis 0 0 1 1: origin 1 1
+axis: fplot 'cos(4*pi*x^2)' # draw something in second axis
+ Note, that the first and the second axes look better if being placed
+in different corners. In the code presented above the first axis is
+placed in the left-bottom corner, and the second one is placed in the
+right-top corner.
+
+
+File: mgl_ru.info, Node: Titles for the plot, Next: Changing of the color range, Prev: Two axes in one plot, Up: Hints
+
+2.5.3 Titles for the plot
+-------------------------
+
+The printing of nice titles for the plot is not so trivial task in
+general case. The problem is that the rotation and aspect change lead
+to different looks for titles of different subplots. So, the resulting
+look is not so good as it could be. The solution is simple - to print
+titles exactly after `subplot' call and before any rotation, aspect
+change and so on! Analogously, the title for the whole picture looks
+better if it is printed first (before any `subplot' calls).
+Alternatively you can use function `title' for plotting title for the
+picture at any time.
+
+
+File: mgl_ru.info, Node: Changing of the color range, Next: Management of a point cutting, Prev: Titles for the plot, Up: Hints
+
+2.5.4 Changing of the color range
+---------------------------------
+
+By default (for the user comfort), the color range is set equal to
+z-range of the plot. However, there are different ranges. So, one can
+obtain amusing plot by the change of color range manually. For example,
+there are plots with one-color bottom (or top) or practically bi-color
+picture and so on.
+
+ For example, compare 2 surfaces:
+subplot 2 1 0
+surf a # usual coloring range
+subplot 2 1 1
+caxis 0 1
+surf a # bottom of the surface have one-colour filling
+
+
+File: mgl_ru.info, Node: Management of a point cutting, Next: Vector field visualization, Prev: Changing of the color range, Up: Hints
+
+2.5.5 Management of a point cutting
+-----------------------------------
+
+Sometimes an experimental or numerical surface has outstanding points.
+Visualization of such surface will lead to the hole(s) in place of such
+points. The standard method of "fighting" - to change data values - is
+not always good and is not so convenient. MathGL library has another
+method - to set variable `cut off'. As a consequence, all outstanding
+points will be projected on the bounding box.
+
+ Such method is good not only for outstanding points but also for the
+case when one need to plane the bottom or the top of the plot. Exactly
+such case is demonstrated in the code:
+new a 20 30 # create some data
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+# set lower border above the data minimal value
+axis -1 -1 0 1 1 1:rotate 40 60
+cut off # set off cutting flag
+surf a # and draw the surface
+ It is an interesting result, is not it?
+
+
+File: mgl_ru.info, Node: Vector field visualization, Next: Several light sources, Prev: Management of a point cutting, Up: Hints
+
+2.5.6 Vector field visualization
+--------------------------------
+
+Vector field visualization (especially in 3d case `vect3' or `vectc')
+may look tangly - there are too many overlapping lines. I may suggest 2
+ways to solve this problem. The first one is to change `meshnum' for
+decreasing the number of hachures. The second way is to use the flow
+thread chart `Flow'. Unfortunately, I don't know any other methods to
+visualize 3d vector field. If you know any, e-mail me and I shall add
+it to MatGL.
+
+
+File: mgl_ru.info, Node: Several light sources, Next: CutMin and CutMax features, Prev: Vector field visualization, Up: Hints
+
+2.5.7 Several light sources
+---------------------------
+
+In contrast to the most of other programs, MathGL supports several (up
+to 10) light sources. Moreover, the color each of them can be
+different: white (this is usual), yellow, red, cyan, green and so on.
+The use of several light sources may be interesting for the
+highlighting of some peculiarities of the plot or just to make an
+amusing picture. Note, each light source can be switched on/off
+individually (*note Several light sample::).
+
+
+File: mgl_ru.info, Node: CutMin and CutMax features, Next: Mapping visualization, Prev: Several light sources, Up: Hints
+
+2.5.8 CutMin and CutMax features
+--------------------------------
+
+MathGL library has a feature for cutting of points in some region
+CUTMIN*CUTMAX. Such an excision can be used to improve the look of the
+graphics. Moreover, this cutting may help to show an internal structure
+of an object (like `isocaps' plot in Matlab). For example, let us use
+the standard 3D data array and show its interior (*note CutMinMax
+sample::).
+
+new c 61 51 40 # create the data
+new v 10: fill v -0.5 1
+modify c '(-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1))'
+cut 0 -1 -1 1 0 1.1
+rotate 40 60: surf3 c -0.5 'bbcyrr'
+contf3 v c 'x' -1 'bbcyrr': contf3 v c 'y' -1 'bbcyrr'
+contf3 v c 'z' 0 'bbcyrr': contf3 v c 'z' 39 'bbcyrr'
+
+ One can also exclude points from arbitrary area in space. This area
+defined by textual formula `cut' (*note Cutting::). The algorithm is
+the same as shown for "rectangular cutting".
+
+
+File: mgl_ru.info, Node: Mapping visualization, Next: Log-scaled plot, Prev: CutMin and CutMax features, Up: Hints
+
+2.5.9 Mapping visualization
+---------------------------
+
+Sometime ago I worked with mapping and have a question about its
+visualization. Let me remember you that mapping is some transformation
+rule for one set of number to another one. The 1d mapping is just an
+ordinary function - it takes a number and transforms it to another one.
+The 2d mapping (which I used) is a pair of functions which take 2
+numbers and transform them to another 2 ones. Except general plots
+(like `surfc', `surfa') there is a special plot - Arnold diagram. It
+shows the area which is the result of mapping of some initial area
+(usually square).
+
+ I tried to make such plot in `map'. It shows the set of points or
+set of faces, which final position is the result of mapping. At this,
+the color gives information about their initial position and the height
+describes Jacobian value of the transformation. Unfortunately, it looks
+good only for the simplest mapping but for the real multivalent
+quasi-chaotic mapping it produces a confusion. So, use it if you like
+:).
+
+
+File: mgl_ru.info, Node: Log-scaled plot, Next: Nonlinear fitting hints, Prev: Mapping visualization, Up: Hints
+
+2.5.10 Log-scaled plot
+----------------------
+
+Log-scaled plot can be drawn by 2 steps. First, one should change the
+scale of axis by call `axis 'lg(x)' 'lg(y)'' (in this example, x- and
+y-axis will be log-scaled). Second, one should set logarithmic scale
+for axis ticks by changing variables: `xtick 0: yticks 0'. Finally, one
+should check (or change) the axis ranges and origin so that their
+values to be positive. For example of log-log plot *note Log-log
+sample::.
+
+
+File: mgl_ru.info, Node: Nonlinear fitting hints, Next: PDE solving hints, Prev: Log-scaled plot, Up: Hints
+
+2.5.11 Nonlinear fitting hints
+------------------------------
+
+Nonlinear fitting is rather simple. All that you need is the data to
+fit, the approximation formula and the list of coefficients to fit
+(better with its initial guess values). Let me demonstrate it on the
+following simple example (*note Fitting sample::). First, let us use
+sin function with some random noise:
+new rnd 100: new idl 50 # data to be fitted and ideal data
+modify rnd '0.4*rnd+0.1+sin(4*pi*x)'
+modify idl '0.3+sin(4*pi*x)'
+ and plot it to see that data we will fit
+axis -1 -2 1 2
+plot rnd '. ':plot idl 'b'
+box:text 0 2.2 'initial: y = 0.3+sin(2\pi x)' 'C:b' -1
+
+ The next step is the fitting itself. For that let me specify an
+initial values INI for coefficients `abc' and do the fitting for
+approximation formula `a+b*sin(c*x)'
+new res # The data for found formula
+fit res rnd 'a+b*sin(c*x)' 'abc' [1, 1, 3]
+ Now display it
+plot res 'r'
+text -1 -1.3 'fitted:' 'L:r' -1
+putsfit 0 -1.8 'y = ' 'C:r' -1
+
+ NOTE! the fitting results may have strong dependence on initial
+values for coefficients due to algorithm features. The problem is that
+in general case there are several local 'optimums' for coefficients and
+the program returns only first found one! There are no guaranties that
+it will be the best. Try for example to set `ini = [0, 0, 0]' in the
+code above.
+
+
+File: mgl_ru.info, Node: PDE solving hints, Next: Stereo image, Prev: Nonlinear fitting hints, Up: Hints
+
+2.5.12 PDE solving hints
+------------------------
+
+Solving of Partial Differential Equations (PDE, including beam tracing)
+and ray tracing (or finding particle trajectory) are more or less
+common task. So, MathGL have several functions for that. There are
+`ray' for ray tracing, `pde' for PDE solving, `qo2d' for beam tracing
+in 2D case. Note, that these functions take "Hamiltonian" or equations
+as string values. And I don't plan now to allow one to use user-defined
+functions. There are 2 reasons: the complexity of corresponding
+interface; and the basic nature of used methods which are good for
+samples but may not good for serious scientific calculations.
+
+ The ray tracing can be done by `ray' function. Really ray tracing
+equation is Hamiltonian equation for 3D space. So, the function can be
+also used for finding a particle trajectory (i.e. solve Hamiltonian
+ODE) for 1D, 2D or 3D cases. The function have a set of arguments.
+First of all, it is Hamiltonian which defined the media (or the
+equation) you are planning to use. The Hamiltonian is defined by string
+which may depend on coordinates `x', `y', `z', time `t' (for particle
+dynamics) and momentums `p'=p_x, `q'=p_y, `v'=p_z. Next, you have to
+define the initial conditions for coordinates and momentums at `t'=0
+and set the integrations step (default is 0.1) and its duration
+(default is 10). The Runge-Kutta method of 4-th order is used for
+integration.
+new re 128:new im 128
+ray r 'p^2+q^2-x-1' -0.7 -1 0 0 0.5 0
+plot r(0) r(1)
+ This example calculate the reflection from linear layer (media with
+Hamiltonian `p^2+q^2-x-1'=p_x^2+p_y^2-x-1). This is parabolic curve.
+The resulting array have 7 columns which contain data for
+{x,y,z,p,q,v,t}.
+
+ The solution of PDE is a bit more complicated. As previous you have
+to specify the equation as pseudo-differential operator \hat H(x,
+\nabla) which is called sometime as "Hamiltonian" (for example, in beam
+tracing). As previously, it is defined by string which may depend on
+coordinates `x', `y', `z' (but not time!), momentums `p'=(d/dx)/i k_0,
+`q'=(d/dy)/i k_0 and field amplitude `u'=|u|. The evolutionary
+coordinate is `z' in all cases. So that, the equation look like du/dz =
+ik_0 H(x,y,\hat p, \hat q, |u|)[u]. Dependence on field amplitude
+`u'=|u| allows one to solve nonlinear problems too. For example, for
+nonlinear Shrodinger equation you may set `ham='p^2 + q^2 - u^2''. Also
+you may specify imaginary part for wave absorption, like `ham = 'p^2 +
+i*x*(x>0)'', but only if dependence on variable `i' is linear (i.e. H =
+Hre+i*Him).
+
+ Next step is specifing the initial conditions at `z'=`Min.z'. The
+function need 2 arrays for real and for imaginary part. Note, that
+coordinates x,y,z are supposed to be in specified range [Min, Max]. So,
+the data arrays should have corresponding scales. Finally, you may set
+the integration step and paramter k0=k_0. Also keep in mind, that
+internally the 2 times large box is used (for suppressing numerical
+reflection from boundaries) and the equation should well defined even
+in this extended range.
+
+ Final comment is concerning the possible form of pseudo-differential
+operator H. At this moment, simplified form of operator H is supported
+- all "mixed" terms (like `x*p'->x*d/dx) are excluded. For example, in
+2D case this operator is effectively H = f(p,z) + g(x,z,u). However
+commutable combinations (like `x*q'->x*d/dy) are allowed for 3D case.
+
+ So, for example let solve the equation for beam deflected from
+linear layer and absorbed later. The operator will have the form
+`'p^2+q^2-x-1+i*0.5*(z+x)*(z>-x)'' that correspond to equation ik_0
+\partial_z u + \Delta u + x \cdot u + i (x+z)/2 \cdot u = 0. This is
+typical equation for Electron Cyclotron (EC) absorption in magnetized
+plasmas. For initial conditions let me select the beam with plane phase
+front exp(-48*(x+0.7)^2). The corresponding code looks like this (*note
+PDE sample::):
+new re 128: new im 128
+fill re 'exp(-48*(x+0.7)^2)'
+pde a 'p^2+q^2-x-1+i*0.5*(z+x)*(z>-x)' re im 0.01, 30
+transpose a 'yxz'
+caxis 0 1
+dens a 'wyrRk'
+
+ The last example is example of beam tracing. Beam tracing equation
+is special kind of PDE equation written in coordinates accompanied to a
+ray. Generally this is the same parameters and limitation as for PDE
+solving but the coordinates are defined by the ray and by parameter of
+grid width W in direction transverse the ray. So, you don't need to
+specify the range of coordinates. *BUT* there is limitation. The
+accompanied coordinates are well defined only for smooth enough rays,
+i.e. then the ray curvature K (which is defined as 1/K^2 = (|\ddot r|^2
+|\dot r|^2 - (\ddot r, \dot r)^2)/|\dot r|^6) is much large then the
+grid width: K>>w. So, you may receive incorrect results if this
+condition will be broken.
+
+ You may use following code for obtaining the same solution as in
+previous example:
+new re 128: new im 128
+define $1 'p^2+q^2-x-1+i*0.5*(y+x)*(y>-x)'
+ray r $1 -0.7 -1 0 0 0.5 0 0.02 2
+# now start beam tracing
+fill re 'exp(-48*x^2)'
+new xx: new yy
+qo2d a $1 re im r 1 30 xx yy
+caxis 0 1
+dens xx yy a 'wyrRk'
+
+
+File: mgl_ru.info, Node: Stereo image, Prev: PDE solving hints, Up: Hints
+
+2.5.13 Stereo image
+-------------------
+
+One can easily create stereo image in MathGL. Stereo image can be
+produced by making two subplots with slightly different rotation
+angles. The corresponding code looks like this (*note Stereo image
+sample::):
+subplot 2 1 0 # left image
+rotate 40 60+3
+# draw something here
+subplot 2 1 1 # right image
+rotate 40 60-3
+# draw the same here
+
+
+File: mgl_ru.info, Node: Samples, Next: Copying This Manual, Prev: Examples, Up: Top
+
+3 Примеры использования MathGL
+**************************************************
+
+Эта глава содержит множество примеров кода для всех типов графиков,
+наиболее важных возможностей библиотеки и советов. Аналогичные примеры
+(с картинками) можно найти на `http://mathgl.sf.net/pictures.html'.
+
+* Menu:
+
+* 1D plotting samples::
+* 2D plotting samples::
+* 3D plotting samples::
+* Dual plotting samples::
+* Basic features::
+* Additional features::
+* Advanced features::
+
+
+File: mgl_ru.info, Node: 1D plotting samples, Next: 2D plotting samples, Up: Samples
+
+3.1 Примеры 1D графиков
+======================================
+
+* Menu:
+
+* Plot sample::
+* Radar sample::
+* Tens sample::
+* Area sample::
+* Area gradient sample::
+* Bars sample::
+* Bars 2 colors sample::
+* Bars above sample::
+* Bars fall sample::
+* Barh sample::
+* Step sample::
+* Stem sample::
+* Region sample::
+* Region gradient sample::
+* Error sample::
+* BoxPlot sample::
+* Mark sample::
+* TextMark sample::
+* Tube sample::
+* Text sample::
+* Torus sample::
+* Chart sample::
+* Pie chart sample::
+* Ring chart sample::
+
+
+File: mgl_ru.info, Node: Plot sample, Next: Radar sample, Up: 1D plotting samples
+
+3.1.1 Plot - пример использования
+----------------------------------------------------
+
+ [image src="../png/plot.png" ]
+
+new y 50 3
+modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
+modify y 'sin(2*pi*x)' 1
+modify y 'cos(2*pi*x)' 2
+box
+plot y
+
+
+File: mgl_ru.info, Node: Radar sample, Next: Tens sample, Prev: Plot sample, Up: 1D plotting samples
+
+3.1.2 Radar - пример использования
+-----------------------------------------------------
+
+ [image src="../png/radar.png" ]
+
+new y 10 3
+modify y '0.4*sin(pi*(2*x+y/2))+0.1*rnd'
+radar y '#'
+
+
+File: mgl_ru.info, Node: Tens sample, Next: Area sample, Prev: Radar sample, Up: 1D plotting samples
+
+3.1.3 Tens - пример использования
+----------------------------------------------------
+
+ [image src="../png/tens.png" ]
+
+new y 50
+new c 50
+modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
+modify c 'sin(2*pi*x)'
+box
+tens y c
+
+
+File: mgl_ru.info, Node: Area sample, Next: Area gradient sample, Prev: Tens sample, Up: 1D plotting samples
+
+3.1.4 Area - пример использования
+----------------------------------------------------
+
+ [image src="../png/area.png" ]
+
+new y 50 3
+modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
+modify y 'sin(2*pi*x)' 1
+modify y 'cos(2*pi*x)' 2
+origin 0 0
+box
+area y
+
+
+File: mgl_ru.info, Node: Area gradient sample, Next: Bars sample, Prev: Tens sample, Up: 1D plotting samples
+
+3.1.5 Area с градиентной заливкой - пример использования
+-----------------------------------------------------------------------------------------------
+
+ [image src="../png/area_2.png" ]
+
+new y 50 3
+modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
+modify y 'sin(2*pi*x)' 1
+modify y 'cos(2*pi*x)' 2
+origin 0 0
+box
+area y 'cbgGyr'
+
+
+File: mgl_ru.info, Node: Bars sample, Next: Bars 2 colors sample, Prev: Area gradient sample, Up: 1D plotting samples
+
+3.1.6 Bars - пример использования
+----------------------------------------------------
+
+ [image src="../png/bars.png" ]
+
+new y 10 3
+modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
+origin 0 0
+box
+bars y
+
+
+File: mgl_ru.info, Node: Bars 2 colors sample, Next: Bars above sample, Prev: Bars sample, Up: 1D plotting samples
+
+3.1.7 Bars (2 цвета) - пример использования
+-------------------------------------------------------------------
+
+ [image src="../png/bars_2.png" ]
+
+new y 10 3
+modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
+origin 0 0
+box
+bars y 'cbgGyr'
+
+
+File: mgl_ru.info, Node: Bars above sample, Next: Bars fall sample, Prev: Bars 2 colors sample, Up: 1D plotting samples
+
+3.1.8 Bars (один над другим) - пример использования
+-----------------------------------------------------------------------------------
+
+ [image src="../png/bars_a.png" ]
+
+new y 10 3
+modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
+origin 0 0
+box
+bars y 'a'
+
+
+File: mgl_ru.info, Node: Bars fall sample, Next: Bars above sample, Prev: Bars above sample, Up: 1D plotting samples
+
+3.1.9 Bars "водопад" - пример использования
+---------------------------------------------------------------------
+
+ [image src="../png/bars_f.png" ]
+
+new y 10 3
+modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
+origin 0 0
+box
+bars y 'f'
+
+
+File: mgl_ru.info, Node: Barh sample, Next: Step sample, Prev: Bars fall sample, Up: 1D plotting samples
+
+3.1.10 Barh - пример использования
+-----------------------------------------------------
+
+ [image src="../png/barh.png" ]
+
+new y 10 3
+modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
+origin 0 0
+box
+barh y
+
+
+File: mgl_ru.info, Node: Step sample, Next: Stem sample, Prev: Barh sample, Up: 1D plotting samples
+
+3.1.11 Step - пример использования
+-----------------------------------------------------
+
+ [image src="../png/step.png" ]
+
+new y 50 3
+modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
+modify y 'sin(2*pi*x)' 1
+modify y 'cos(2*pi*x)' 2
+box
+step y
+
+
+File: mgl_ru.info, Node: Stem sample, Next: Region sample, Prev: Step sample, Up: 1D plotting samples
+
+3.1.12 Stem - пример использования
+-----------------------------------------------------
+
+ [image src="../png/stem.png" ]
+
+new y 50 3
+modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
+modify y 'sin(2*pi*x)' 1
+modify y 'cos(2*pi*x)' 2
+origin 0 0
+box
+stem y 'o'
+
+
+File: mgl_ru.info, Node: Region sample, Next: Region gradient sample, Prev: Stem sample, Up: 1D plotting samples
+
+3.1.13 Region - пример использования
+-------------------------------------------------------
+
+ [image src="../png/region.png" ]
+
+new y1 50
+new y2 50
+modify y1 '0.3*sin(2*pi*x)'
+modify y2 '0.5+0.3*cos(2*pi*x)'
+box
+region y1 y2 'r'
+plot y1 'k2'
+plot y2 'k2'
+
+
+File: mgl_ru.info, Node: Region gradient sample, Next: Error sample, Prev: Region sample, Up: 1D plotting samples
+
+3.1.14 Region с градиентной заливкой - пример использования
+--------------------------------------------------------------------------------------------------
+
+ [image src="../png/region_2.png" ]
+
+new y1 50
+new y2 50
+modify y1 '0.3*sin(2*pi*x)'
+modify y2 '0.5+0.3*cos(2*pi*x)'
+box
+region y1 y2 'yr'
+plot y1 'k2'
+plot y2 'k2'
+
+
+File: mgl_ru.info, Node: Error sample, Next: BoxPlot sample, Prev: Region gradient sample, Up: 1D plotting samples
+
+3.1.15 Error - пример использования
+------------------------------------------------------
+
+ [image src="../png/error.png" ]
+
+new y 50
+new x0 10
+new y0 10
+new ex 10
+new ey 10
+modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
+modify x0 '2*x-1 + 0.1*rnd-0.05'
+modify y0 '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x) + 0.2*rnd-0.1'
+modify ey '0.2'
+modify ex '0.1'
+box
+plot y
+error x0 y0 ex ey 'ko'
+
+
+File: mgl_ru.info, Node: BoxPlot sample, Next: Mark sample, Prev: Error sample, Up: 1D plotting samples
+
+3.1.16 BoxPlot - пример использования
+--------------------------------------------------------
+
+ [image src="../png/boxplot.png" ]
+
+new a 10 7
+modify a '(2*rnd-1)^3/2'
+box
+boxplot a
+plot a ' ko'
+
+
+File: mgl_ru.info, Node: Mark sample, Next: TextMark sample, Prev: BoxPlot sample, Up: 1D plotting samples
+
+3.1.17 Mark - пример использования
+-----------------------------------------------------
+
+ [image src="../png/mark.png" ]
+
+new y 50 3
+modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
+modify y 'sin(2*pi*x)' 1
+modify y 'cos(2*pi*x)' 2
+new y1 50
+modify y1 '0.5+0.3*cos(2*pi*x)'
+box
+mark y y1 'bs'
+
+
+File: mgl_ru.info, Node: TextMark sample, Next: Tube sample, Prev: Mark sample, Up: 1D plotting samples
+
+3.1.18 TextMark - пример использования
+---------------------------------------------------------
+
+ [image src="../png/textmark.png" ]
+
+new y 50 3
+modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
+modify y 'sin(2*pi*x)' 1
+modify y 'cos(2*pi*x)' 2
+new y1 50
+modify y1 '0.5+0.3*cos(2*pi*x)'
+box
+textmark y y1 '\gamma'
+
+
+File: mgl_ru.info, Node: Tube sample, Next: Text sample, Prev: TextMark sample, Up: 1D plotting samples
+
+3.1.19 Tube - пример использования
+-----------------------------------------------------
+
+ [image src="../png/tube.png" ]
+
+new y 50 3
+modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
+modify y 'sin(2*pi*x)' 1
+modify y 'cos(2*pi*x)' 2
+rotate 40 60
+light on
+box
+tube y 0.05
+
+
+File: mgl_ru.info, Node: Text sample, Next: Torus sample, Prev: Tube sample, Up: 1D plotting samples
+
+3.1.20 Text - пример использования
+-----------------------------------------------------
+
+ [image src="../png/text.png" ]
+
+new y 50 3
+modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
+modify y 'sin(2*pi*x)' 1
+modify y 'cos(2*pi*x)' 2
+box
+plot y(:,0)
+text y 'This is very long string drawn along a curve' ':k'
+text y 'Another string drawn above a curve' 'T:r'
+
+
+File: mgl_ru.info, Node: Torus sample, Next: Chart sample, Prev: Text sample, Up: 1D plotting samples
+
+3.1.21 Torus - пример использования
+------------------------------------------------------
+
+ [image src="../png/torus.png" ]
+
+new y1 50
+new y2 50
+modify y1 '0.5+0.3*cos(2*pi*x)'
+modify y2 '0.3*sin(2*pi*x)'
+rotate 40 60
+light on
+box
+torus y1 y2 'pz'
+
+
+File: mgl_ru.info, Node: Chart sample, Next: Pie chart sample, Prev: Torus sample, Up: 1D plotting samples
+
+3.1.22 Chart - пример использования
+------------------------------------------------------
+
+ [image src="../png/chart.png" ]
+
+new ch 7 2
+modify ch 'rnd+0.1'
+rotate 40 60
+light on
+box
+chart ch
+
+
+File: mgl_ru.info, Node: Pie chart sample, Next: Ring chart sample, Prev: Chart sample, Up: 1D plotting samples
+
+3.1.23 Pie chart - пример использования
+----------------------------------------------------------
+
+ [image src="../png/pie_chart.png" ]
+
+new ch 7 2
+modify ch 'rnd+0.1'
+rotate 40 60
+light on
+axis '(y+1)/2*cos(pi*x)' '(y+1)/2*sin(pi*x)' ''
+box
+chart ch 'bgr cmy#'
+
+
+File: mgl_ru.info, Node: Ring chart sample, Prev: Pie chart sample, Up: 1D plotting samples
+
+3.1.24 Ring chart - пример использования
+-----------------------------------------------------------
+
+ [image src="../png/ring_chart.png" ]
+
+new ch 7 2
+modify ch 'rnd+0.1'
+rotate 40 60
+light on
+axis '(y+2)/3*cos(pi*x)' '(y+2)/3*sin(pi*x)' ''
+box
+chart ch 'bgr cmy#'
+
+
+File: mgl_ru.info, Node: 2D plotting samples, Next: 3D plotting samples, Prev: 1D plotting samples, Up: Samples
+
+3.2 Примеры 2D графиков
+======================================
+
+* Menu:
+
+* Surf sample::
+* Transparent surface sample::
+* Surface in fog sample::
+* Sharp colors sample::
+* Mesh sample::
+* Fall sample::
+* Belt sample::
+* Tile sample::
+* Boxs sample::
+* Dens sample::
+* Cont sample::
+* ContF sample::
+* ContD sample::
+* Axial sample::
+* Grad sample::
+
+
+File: mgl_ru.info, Node: Surf sample, Next: Transparent surface sample, Up: 2D plotting samples
+
+3.2.1 Surf - пример использования
+----------------------------------------------------
+
+ [image src="../png/surf.png" ]
+
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+rotate 40 60
+light on
+box
+surf a
+
+
+File: mgl_ru.info, Node: Transparent surface sample, Next: Surface in fog sample, Prev: Surf sample, Up: 2D plotting samples
+
+3.2.2 Transparent surface - пример использования
+-------------------------------------------------------------------
+
+ [image src="../png/surf_alpha.png" ]
+
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+rotate 40 60
+light on
+alpha on
+box
+surf a
+
+
+File: mgl_ru.info, Node: Surface in fog sample, Next: Sharp colors sample, Prev: Transparent surface sample, Up: 2D plotting samples
+
+3.2.3 Surface in fog - пример использования
+--------------------------------------------------------------
+
+ [image src="../png/surf_fog.png" ]
+
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+rotate 40 60
+light on
+fog 1
+box
+surf a
+
+
+File: mgl_ru.info, Node: Sharp colors sample, Next: Mesh sample, Prev: Surface in fog sample, Up: 2D plotting samples
+
+3.2.4 Sharp colors - пример использования
+------------------------------------------------------------
+
+ [image src="../png/surf_sl.png" ]
+
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+rotate 40 60
+light on
+box
+surf a 'BbcyrR|'
+
+
+File: mgl_ru.info, Node: Mesh sample, Next: Fall sample, Prev: Sharp colors sample, Up: 2D plotting samples
+
+3.2.5 Mesh - пример использования
+----------------------------------------------------
+
+ [image src="../png/mesh.png" ]
+
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+rotate 40 60
+box
+mesh a
+
+
+File: mgl_ru.info, Node: Fall sample, Next: Belt sample, Prev: Mesh sample, Up: 2D plotting samples
+
+3.2.6 Fall - пример использования
+----------------------------------------------------
+
+ [image src="../png/fall.png" ]
+
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+rotate 40 60
+box
+fall a
+
+
+File: mgl_ru.info, Node: Belt sample, Next: Tile sample, Prev: Fall sample, Up: 2D plotting samples
+
+3.2.7 Belt - пример использования
+----------------------------------------------------
+
+ [image src="../png/belt.png" ]
+
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+rotate 40 60
+light on
+box
+belt a
+
+
+File: mgl_ru.info, Node: Tile sample, Next: Boxs sample, Prev: Belt sample, Up: 2D plotting samples
+
+3.2.8 Tile - пример использования
+----------------------------------------------------
+
+ [image src="../png/tile.png" ]
+
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+rotate 40 60
+light on
+box
+tile a
+
+
+File: mgl_ru.info, Node: Boxs sample, Next: Dens sample, Prev: Tile sample, Up: 2D plotting samples
+
+3.2.9 Boxs - пример использования
+----------------------------------------------------
+
+ [image src="../png/boxs.png" ]
+
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+rotate 40 60
+light on
+origin 0 0 0
+box
+boxs a
+
+
+File: mgl_ru.info, Node: Dens sample, Next: Cont sample, Prev: Boxs sample, Up: 2D plotting samples
+
+3.2.10 Dens - пример использования
+-----------------------------------------------------
+
+ [image src="../png/dens.png" ]
+
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+box
+dens a
+colorbar
+
+
+File: mgl_ru.info, Node: Cont sample, Next: ContF sample, Prev: Dens sample, Up: 2D plotting samples
+
+3.2.11 Cont - пример использования
+-----------------------------------------------------
+
+ [image src="../png/cont.png" ]
+
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+rotate 40 60
+box
+cont a
+
+
+File: mgl_ru.info, Node: ContF sample, Next: ContD sample, Prev: Cont sample, Up: 2D plotting samples
+
+3.2.12 ContF - пример использования
+------------------------------------------------------
+
+ [image src="../png/contf.png" ]
+
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+rotate 40 60
+light on
+box
+contf a
+
+
+File: mgl_ru.info, Node: ContD sample, Next: Axial sample, Prev: ContF sample, Up: 2D plotting samples
+
+3.2.13 ContD - пример использования
+------------------------------------------------------
+
+ [image src="../png/contd.png" ]
+
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+var v 9 -1 1
+box
+contd v a
+colorbar v
+
+
+File: mgl_ru.info, Node: Axial sample, Next: Grad sample, Prev: ContD sample, Up: 2D plotting samples
+
+3.2.14 Axial - пример использования
+------------------------------------------------------
+
+ [image src="../png/axial.png" ]
+
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+rotate 40 60
+light on
+alpha on
+box
+axial a
+
+
+File: mgl_ru.info, Node: Grad sample, Prev: Axial sample, Up: 2D plotting samples
+
+3.2.15 Grad - пример использования
+-----------------------------------------------------
+
+ [image src="../png/grad.png" ]
+
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+box:alpha on:dens a
+grad a
+
+
+File: mgl_ru.info, Node: 3D plotting samples, Next: Dual plotting samples, Prev: 2D plotting samples, Up: Samples
+
+3.3 Примеры 3D графиков
+======================================
+
+* Menu:
+
+* Surf3 sample::
+* Cloud sample::
+* CloudP sample::
+* Dens3 sample::
+* Cont3 sample::
+* ContF3 sample::
+* Cont projection sample::
+* Dens projection sample::
+* CutMinMax sample::
+* Isocaps sample::
+* CutOff sample::
+
+
+File: mgl_ru.info, Node: Surf3 sample, Next: Cloud sample, Up: 3D plotting samples
+
+3.3.1 Surf3 - пример использования
+-----------------------------------------------------
+
+ [image src="../png/surf3.png" ]
+
+new a 60 50 40
+modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
+rotate 40 60
+light on
+alpha on
+box
+surf3 a
+
+
+File: mgl_ru.info, Node: Cloud sample, Next: CloudP sample, Prev: Surf3 sample, Up: 3D plotting samples
+
+3.3.2 Cloud - пример использования
+-----------------------------------------------------
+
+ [image src="../png/cloud.png" ]
+
+new a 60 50 40
+modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
+rotate 40 60
+alpha on
+box
+cloud a 'wyrRk'
+
+
+File: mgl_ru.info, Node: CloudP sample, Next: Dens3 sample, Prev: Cloud sample, Up: 3D plotting samples
+
+3.3.3 CloudP - пример использования
+------------------------------------------------------
+
+ [image src="../png/cloudp.png" ]
+
+Not available.
+
+
+File: mgl_ru.info, Node: Dens3 sample, Next: Cont3 sample, Prev: CloudP sample, Up: 3D plotting samples
+
+3.3.4 Dens3 - пример использования
+-----------------------------------------------------
+
+ [image src="../png/densa.png" ]
+
+new a 60 50 40
+modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
+rotate 40 60
+alpha on
+origin 0 0 0
+box
+densa a
+axis
+
+
+File: mgl_ru.info, Node: Cont3 sample, Next: ContF3 sample, Prev: Dens3 sample, Up: 3D plotting samples
+
+3.3.5 Cont3 - пример использования
+-----------------------------------------------------
+
+ [image src="../png/conta.png" ]
+
+new a 60 50 40
+modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
+rotate 40 60
+box
+conta a
+
+
+File: mgl_ru.info, Node: ContF3 sample, Next: Cont projection sample, Prev: Cont3 sample, Up: 3D plotting samples
+
+3.3.6 ContF3 - пример использования
+------------------------------------------------------
+
+ [image src="../png/contfa.png" ]
+
+new a 60 50 40
+modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
+rotate 40 60
+light on
+box
+contfa a
+
+
+File: mgl_ru.info, Node: Cont projection sample, Next: Dens projection sample, Prev: ContF3 sample, Up: 3D plotting samples
+
+3.3.7 Cont projection - пример использования
+---------------------------------------------------------------
+
+ [image src="../png/cont_xyz.png" ]
+
+new a 60 50 40
+modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
+rotate 40 60
+box
+sum s a 'x'
+contx s '' -1
+sum s a 'y'
+conty s '' 1
+sum s a 'z'
+contz s '' -1
+
+
+File: mgl_ru.info, Node: Dens projection sample, Next: CutMinMax sample, Prev: Cont projection sample, Up: 3D plotting samples
+
+3.3.8 Dens projection - пример использования
+---------------------------------------------------------------
+
+ [image src="../png/dens_xyz.png" ]
+
+new a 60 50 40
+modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
+rotate 40 60
+box
+sum s a 'x'
+densx s '' -1
+sum s a 'y'
+densy s '' 1
+sum s a 'z'
+densz s '' -1
+
+
+File: mgl_ru.info, Node: CutMinMax sample, Next: Isocaps sample, Prev: Dens projection sample, Up: 3D plotting samples
+
+3.3.9 CutMinMax - пример использования
+---------------------------------------------------------
+
+ [image src="../png/cutminmax.png" ]
+
+new a 60 50 40
+modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
+rotate 40 60
+light on
+alpha on
+cut 0 -1 -1 1 0 1
+box
+surf3 a
+
+
+File: mgl_ru.info, Node: Isocaps sample, Next: CutOff sample, Prev: CutMinMax sample, Up: 3D plotting samples
+
+3.3.10 "Isocaps" - пример использования
+----------------------------------------------------------
+
+ [image src="../png/cutminmax2.png" ]
+
+new a 61 51 40
+modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
+rotate 40 60
+light on
+cut 0 -1 -1 1 0 1.1
+box
+surf3 a -1
+contf3 a 'x' -1
+contf3 a 'y' -1
+contf3 a 'z' 0
+contf3 a 'z' 39
+
+
+File: mgl_ru.info, Node: CutOff sample, Prev: Isocaps sample, Up: 3D plotting samples
+
+3.3.11 CutOff - пример использования
+-------------------------------------------------------
+
+ [image src="../png/surf3_cutoff.png" ]
+
+new a 60 50 40
+modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
+rotate 40 60
+light on
+alpha on
+cut '(z>(x+0.5*y-1)^2-1) & (z>(x-0.5*y-1)^2-1)'
+box
+surf3 a
+
+
+File: mgl_ru.info, Node: Dual plotting samples, Next: Basic features, Prev: 3D plotting samples, Up: Samples
+
+3.4 Примеры парных/векторных графиков
+===================================================================
+
+* Menu:
+
+* SurfC sample::
+* SurfA sample::
+* TileS sample::
+* Map sample::
+* Traj sample::
+* Vect sample::
+* VectL sample::
+* VectC sample::
+* Flow sample::
+* Pipe sample::
+* Dew sample::
+* Surf3C sample::
+* Surf3A sample::
+* Vect 3D sample::
+* VectL 3D sample::
+* VectC 3D sample::
+* Flow 3D sample::
+* Pipe 3D sample::
+* Crust sample::
+* Dots sample::
+
+
+File: mgl_ru.info, Node: SurfC sample, Next: SurfA sample, Up: Dual plotting samples
+
+3.4.1 SurfC - пример использования
+-----------------------------------------------------
+
+ [image src="../png/surfc.png" ]
+
+new a 50 40
+new b 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+rotate 40 60
+light on
+box
+surfc a b
+
+
+File: mgl_ru.info, Node: SurfA sample, Next: TileS sample, Prev: SurfC sample, Up: Dual plotting samples
+
+3.4.2 SurfA - пример использования
+-----------------------------------------------------
+
+ [image src="../png/surfa.png" ]
+
+new a 50 40
+new b 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+rotate 40 60
+light on
+alpha on
+box
+surfa a b
+
+
+File: mgl_ru.info, Node: TileS sample, Next: Map sample, Prev: SurfA sample, Up: Dual plotting samples
+
+3.4.3 TileS - пример использования
+-----------------------------------------------------
+
+ [image src="../png/tiles.png" ]
+
+new a 50 40
+new b 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+box
+tile a b
+
+
+File: mgl_ru.info, Node: Map sample, Next: Traj sample, Prev: TileS sample, Up: Dual plotting samples
+
+3.4.4 Map - пример использования
+---------------------------------------------------
+
+ [image src="../png/map.png" ]
+
+new a 50 40
+new b 50 40
+text 0 0 '\to'
+zrange -2 2
+subplot 2 1 0
+text 0 1.1 '\{x, y\}' '' -2
+box
+fill a 'x'
+fill b 'y'
+map a b 'brgk' 0 0
+subplot 2 1 1
+text 0 1.1 '\{\frac{x^3+y^3}{2}, \frac{x-y}{2}\}' '' -2
+box
+fill a '(x^3+y^3)/2'
+fill b '(x-y)/2'
+map a b 'brgk' 0 0
+
+
+File: mgl_ru.info, Node: Traj sample, Next: Vect sample, Prev: Map sample, Up: Dual plotting samples
+
+3.4.5 Traj - пример использования
+----------------------------------------------------
+
+ [image src="../png/traj.png" ]
+
+new y 50 3
+new x 50
+new y1 50
+new y2 50
+modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
+modify y 'sin(2*pi*x)' 1
+modify y 'cos(2*pi*x)' 2
+fill x -1 1
+modify y1 '0.5+0.3*cos(2*pi*x)'
+modify y2 '0.3*sin(2*pi*x)'
+box
+plot x y
+traj x y y1 y2
+
+
+File: mgl_ru.info, Node: Vect sample, Next: VectL sample, Prev: Traj sample, Up: Dual plotting samples
+
+3.4.6 Vect - пример использования
+----------------------------------------------------
+
+ [image src="../png/vect.png" ]
+
+new a 20 30
+new b 20 30
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+box
+vect a b
+
+
+File: mgl_ru.info, Node: VectL sample, Next: VectC sample, Prev: Vect sample, Up: Dual plotting samples
+
+3.4.7 VectL - пример использования
+-----------------------------------------------------
+
+ [image src="../png/vectl.png" ]
+
+new a 20 30
+new b 20 30
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+box
+vectl a b
+
+
+File: mgl_ru.info, Node: VectC sample, Next: Flow sample, Prev: VectL sample, Up: Dual plotting samples
+
+3.4.8 VectC - пример использования
+-----------------------------------------------------
+
+ [image src="../png/vectc.png" ]
+
+new a 20 30
+new b 20 30
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+box
+vectc a b
+
+
+File: mgl_ru.info, Node: Flow sample, Next: Pipe sample, Prev: VectC sample, Up: Dual plotting samples
+
+3.4.9 Flow - пример использования
+----------------------------------------------------
+
+ [image src="../png/flow.png" ]
+
+new a 20 30
+new b 20 30
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+box
+flow a b
+
+
+File: mgl_ru.info, Node: Pipe sample, Next: Dew sample, Prev: Flow sample, Up: Dual plotting samples
+
+3.4.10 Pipe - пример использования
+-----------------------------------------------------
+
+ [image src="../png/pipe.png" ]
+
+new a 20 30
+new b 20 30
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+light on
+box
+pipe a b
+
+
+File: mgl_ru.info, Node: Dew sample, Next: Surf3C sample, Prev: Pipe sample, Up: Dual plotting samples
+
+3.4.11 Dew - пример использования
+----------------------------------------------------
+
+ [image src="../png/dew.png" ]
+
+new a 20 30
+new b 20 30
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+box
+light on
+dew a b
+
+
+File: mgl_ru.info, Node: Surf3C sample, Next: Surf3A sample, Prev: Dew sample, Up: Dual plotting samples
+
+3.4.12 Surf3C - пример использования
+-------------------------------------------------------
+
+ [image src="../png/surf3c.png" ]
+
+new a 60 50 40
+new b 60 50 40
+modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
+modify b '1-2*tanh(4*(x+y-1)^2)'
+rotate 40 60
+light on
+alpha on
+box
+surf3c a b
+
+
+File: mgl_ru.info, Node: Surf3A sample, Next: Vect 3D sample, Prev: Surf3C sample, Up: Dual plotting samples
+
+3.4.13 Surf3A - пример использования
+-------------------------------------------------------
+
+ [image src="../png/surf3a.png" ]
+
+new a 60 50 40
+new b 60 50 40
+modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
+modify b '1-2*tanh(4*(x+y-1)^2)'
+rotate 40 60
+light on
+alpha on
+box
+surf3a a b
+
+
+File: mgl_ru.info, Node: Vect 3D sample, Next: VectL 3D sample, Prev: Surf3A sample, Up: Dual plotting samples
+
+3.4.14 Vect 3D - пример использования
+--------------------------------------------------------
+
+ [image src="../png/vect3.png" ]
+
+new ex 10 10 10
+new ey 10 10 10
+new ez 10 10 10
+fill ex '0.2*x/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*x/pow(x^2+y^2+(z+0.3)^2,1.5)'
+fill ey '0.2*y/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*y/pow(x^2+y^2+(z+0.3)^2,1.5)'
+fill ez '0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*(z+0.3)/pow(x^2+y^2+(z+0.3)^2,1.5)'
+rotate 40 60
+box
+vect ex ey ez 'bwr'
+
+
+File: mgl_ru.info, Node: VectL 3D sample, Next: VectC 3D sample, Prev: Vect 3D sample, Up: Dual plotting samples
+
+3.4.15 VectL 3D - пример использования
+---------------------------------------------------------
+
+ [image src="../png/vectl3.png" ]
+
+new ex 10 10 10
+new ey 10 10 10
+new ez 10 10 10
+fill ex '0.2*x/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*x/pow(x^2+y^2+(z+0.3)^2,1.5)'
+fill ey '0.2*y/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*y/pow(x^2+y^2+(z+0.3)^2,1.5)'
+fill ez '0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*(z+0.3)/pow(x^2+y^2+(z+0.3)^2,1.5)'
+rotate 40 60
+box
+vectl ex ey ez 'bwr'
+
+
+File: mgl_ru.info, Node: VectC 3D sample, Next: Flow 3D sample, Prev: VectL 3D sample, Up: Dual plotting samples
+
+3.4.16 VectC 3D - пример использования
+---------------------------------------------------------
+
+ [image src="../png/vectc3.png" ]
+
+new ex 10 10 10
+new ey 10 10 10
+new ez 10 10 10
+fill ex '0.2*x/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*x/pow(x^2+y^2+(z+0.3)^2,1.5)'
+fill ey '0.2*y/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*y/pow(x^2+y^2+(z+0.3)^2,1.5)'
+fill ez '0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*(z+0.3)/pow(x^2+y^2+(z+0.3)^2,1.5)'
+rotate 40 60
+box
+vectc ex ey ez 'bwr'
+
+
+File: mgl_ru.info, Node: Flow 3D sample, Next: Pipe 3D sample, Prev: VectC 3D sample, Up: Dual plotting samples
+
+3.4.17 Flow 3D - пример использования
+--------------------------------------------------------
+
+ [image src="../png/flow3.png" ]
+
+new ex 30 30 30
+new ey 30 30 30
+new ez 30 30 30
+fill ex '0.2*x/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*x/pow(x^2+y^2+(z+0.3)^2,1.5)'
+fill ey '0.2*y/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*y/pow(x^2+y^2+(z+0.3)^2,1.5)'
+fill ez '0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*(z+0.3)/pow(x^2+y^2+(z+0.3)^2,1.5)'
+rotate 40 60
+box
+flow ex ey ez 'bwr'
+
+
+File: mgl_ru.info, Node: Pipe 3D sample, Next: Crust sample, Prev: Flow 3D sample, Up: Dual plotting samples
+
+3.4.18 Pipe 3D - пример использования
+--------------------------------------------------------
+
+ [image src="../png/pipe3.png" ]
+
+new ex 10 10 10
+new ey 10 10 10
+new ez 10 10 10
+fill ex '0.2*x/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*x/pow(x^2+y^2+(z+0.3)^2,1.5)'
+fill ey '0.2*y/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*y/pow(x^2+y^2+(z+0.3)^2,1.5)'
+fill ez '0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - 0.2*(z+0.3)/pow(x^2+y^2+(z+0.3)^2,1.5)'
+rotate 40 60
+light on
+box
+pipe ex ey ez 'bwr'
+
+
+File: mgl_ru.info, Node: Crust sample, Next: Dots sample, Prev: Pipe 3D sample, Up: Dual plotting samples
+
+3.4.19 Crust - пример использования
+------------------------------------------------------
+
+ [image src="../png/crust.png" ]
+
+read a 'hotdogs.pts'
+norm a -1 1 on
+rotate 40 60
+light on
+box
+crust a 'p'
+
+
+File: mgl_ru.info, Node: Dots sample, Prev: Crust sample, Up: Dual plotting samples
+
+3.4.20 Dots - пример использования
+-----------------------------------------------------
+
+ [image src="../png/dots.png" ]
+
+read a 'hotdogs.pts'
+norm a -1 1 on
+rotate 40 60
+box
+dots a 'p'
+
+
+File: mgl_ru.info, Node: Basic features, Next: Additional features, Prev: Dual plotting samples, Up: Samples
+
+3.5 Базовые возможности
+=========================================
+
+* Menu:
+
+* 1D plot sample::
+* 2D plot sample::
+* 3D plot sample::
+* Line styles sample::
+* Arrow styles sample::
+* Text styles sample::
+* TeX parsing sample::
+* Font faces sample::
+* Colors sample::
+* Color schemes sample::
+* Normal transparency::
+* Glass-like transparency::
+* Lamp-like transparency::
+
+
+File: mgl_ru.info, Node: 1D plot sample, Next: 2D plot sample, Up: Basic features
+
+3.5.1 Пример графиков 1D данных
+---------------------------------------------------
+
+ [image src="../png/sample8.png" ]
+
+new y0 50: modify y0 'sin(pi*(2*x-1))'
+subplot 2 2 0
+plot y0: box
+
+subplot 2 2 1
+new y1 50 2
+modify y1 'sin(pi*2*x-pi)'
+modify y1 'cos(pi*2*x-pi)/2' 1
+plot y1: box
+
+new x 50: modify x 'cos(pi*2*x-pi)'
+plot x y0 'Y+'
+plot y1(:,0) y(:,1) 'q|'
+
+subplot 2 2 2:rotate 60 40
+new z 50: modify z '2*x-1'
+plot x y0 z 'g':box
+new y2 10 3
+modify y2 'cos(pi*(2*x-1-y))'
+modify y2 '2*x-1' 2
+plot y2(:,0) y2(:,1) y2(:,2) 'bo '
+
+subplot 2 2 3:rotate 60 40
+bars x y0 z 'r':box
+
+
+File: mgl_ru.info, Node: 2D plot sample, Next: 3D plot sample, Prev: 1D plot sample, Up: Basic features
+
+3.5.2 Пример графиков 2D данных
+---------------------------------------------------
+
+ [image src="../png/sample9.png" ]
+
+light on
+
+new a0 50 40
+modify a0 '0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))'
+subplot 2 2 0:rotate 60 40
+surf a0: box
+
+new x 50 40: new y 50 40: new z 50 40
+modify x '0.8*sin(2*pi*x)*sin(pi*y)'
+modify y '0.8*cos(2*pi*x)*sin(pi*y)'
+modify z '0.8*cos(pi*y)'
+subplot 2 2 1:rotate 60 40
+surf x y z 'bbwrr': box
+
+new a1 50 40 3
+modify a1 '0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))'
+modify a1 '0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*sin(3*pi*(x*y))' 1
+modify a1 '0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*cos(3*pi*(x*y))' 2
+subplot 2 2 2:rotate 60 40
+alpha on
+surf a1: box
+
+subplot 2 2 3: rotate 60 40
+dens a1: box
+
+
+File: mgl_ru.info, Node: 3D plot sample, Next: Line styles sample, Prev: 2D plot sample, Up: Basic features
+
+3.5.3 Пример графиков 3D данных
+---------------------------------------------------
+
+ [image src="../png/sampleb.png" ]
+
+alpha on: light on
+light 0 0 0 1
+new a 30 30 30: new b 30 30 30
+modify a 'exp(-16*((z-0.5)^2+(y-0.5)^2)/(1+4*x^2))'
+modify b '16*((z-0.5)^2+(y-0.5)^2)*(x)/(1+4*x^2)'
+caxis 0 1
+
+subplot 2 2 0: rotate 40 60
+surf3 a 'wgk': box
+subplot 2 2 1: rotate 40 60
+densa a: box: axis
+subplot 2 2 2: rotate 40 60
+cloud a: box
+subplot 2 2 3: rotate 40 60
+surf3a b a 'q': box
+
+
+File: mgl_ru.info, Node: Line styles sample, Next: Arrow styles sample, Prev: 3D plot sample, Up: Basic features
+
+3.5.4 Пример стилей линий и маркеров
+--------------------------------------------------------------
+
+ [image src="../png/sample5.png" ]
+
+NOT AVAILABLE
+
+
+File: mgl_ru.info, Node: Arrow styles sample, Next: Text styles sample, Prev: Line styles sample, Up: Basic features
+
+3.5.5 Пример стилей стрелок
+----------------------------------------------
+
+ [image src="../png/sampled.png" ]
+
+NOT AVAILABLE
+
+
+File: mgl_ru.info, Node: Text styles sample, Next: TeX parsing sample, Prev: Arrow styles sample, Up: Basic features
+
+3.5.6 Пример стилей текста
+--------------------------------------------
+
+ [image src="../png/sample4.png" ]
+
+text 0 1 'Text can be in ASCII and in Unicode'
+text 0 0.6 'It can be \wire{wire}, \big{big} or #r{colored}'
+text 0 0.2 'One can change style in string: \b{bold}, \i{italic, \b{both}}'
+text 0 -0.2 'Easy to \a{overline} or \u{underline}'
+text 0 -0.6 'Easy to change indexes ^{up} _{down} @{center}'
+text 0 -1 'It parse TeX: \int \alpha \cdot \sqrt3{sin(\pi x)^2 + \gamma_{i_k}} dx'
+
+
+File: mgl_ru.info, Node: TeX parsing sample, Next: Font faces sample, Prev: Text styles sample, Up: Basic features
+
+3.5.7 Пример TeX формулы
+-------------------------------------
+
+ [image src="../png/samplee.png" ]
+
+text 0 0 '\sqrt{\frac{\alpha^{\gamma^2}+\overset 1{\big\infty}}{\sqrt3{2+b}}}' '' -4
+
+
+File: mgl_ru.info, Node: Font faces sample, Next: Colors sample, Prev: TeX parsing sample, Up: Basic features
+
+3.5.8 Примеры начертаний шрифта
+------------------------------------------------------
+
+ [image src="../png/fonts.png" ]
+
+NOT AVAILABLE
+
+
+File: mgl_ru.info, Node: Colors sample, Next: Color schemes sample, Prev: Font faces sample, Up: Basic features
+
+3.5.9 Примеры цветов
+---------------------------------
+
+ [image src="../png/colors.png" ]
+
+#LENUQ
+facez -1 -1 0 0.4 0.3 'L#': text -0.8 -0.9 'L' 'C:w'
+facez -0.6 -1 0 0.4 0.3 'E#': text -0.4 -0.9 'E' 'C:w'
+facez -0.2 -1 0 0.4 0.3 'N#': text 0 -0.9 'N' 'C:w'
+facez 0.2 -1 0 0.4 0.3 'U#': text 0.4 -0.9 'U' 'C:w'
+facez 0.6 -1 0 0.4 0.3 'Q#': text 0.8 -0.9 'Q' 'C:w'
+#lenuq
+facez -1 -0.7 0 0.4 0.3 'l#': text -0.8 -0.6 'l' 'C:k'
+facez -0.6 -0.7 0 0.4 0.3 'e#': text -0.4 -0.6 'e' 'C:k'
+facez -0.2 -0.7 0 0.4 0.3 'n#': text 0 -0.6 'n' 'C:k'
+facez 0.2 -0.7 0 0.4 0.3 'u#': text 0.4 -0.6 'u' 'C:k'
+facez 0.6 -0.7 0 0.4 0.3 'q#': text 0.8 -0.6 'q' 'C:k'
+#CMYkP
+facez -1 -0.4 0 0.4 0.3 'C#': text -0.8 -0.3 'C' 'C:w'
+facez -0.6 -0.4 0 0.4 0.3 'M#': text -0.4 -0.3 'M' 'C:w'
+facez -0.2 -0.4 0 0.4 0.3 'Y#': text 0 -0.3 'Y' 'C:w'
+facez 0.2 -0.4 0 0.4 0.3 'k#': text 0.4 -0.3 'k' 'C:w'
+facez 0.6 -0.4 0 0.4 0.3 'P#': text 0.8 -0.3 'P' 'C:w'
+#lenuq
+facez -1 -0.1 0 0.4 0.3 'c#': text -0.8 0 'c' 'C:k'
+facez -0.6 -0.1 0 0.4 0.3 'm#': text -0.4 0 'm' 'C:k'
+facez -0.2 -0.1 0 0.4 0.3 'y#': text 0 0 'y' 'C:k'
+facez 0.2 -0.1 0 0.4 0.3 'w#': text 0.4 0 'w' 'C:k'
+facez 0.6 -0.1 0 0.4 0.3 'p#': text 0.8 0 'p' 'C:k'
+#BGRHW
+facez -1 0.2 0 0.4 0.3 'B#': text -0.8 0.3 'B' 'C:k'
+facez -0.6 0.2 0 0.4 0.3 'G#': text -0.4 0.3 'G' 'C:k'
+facez -0.2 0.2 0 0.4 0.3 'R#': text 0 0.3 'R' 'C:k'
+facez 0.2 0.2 0 0.4 0.3 'H#': text 0.4 0.3 'H' 'C:k'
+facez 0.6 0.2 0 0.4 0.3 'W#': text 0.8 0.3 'W' 'C:k'
+#bgrhw
+facez -1 0.5 0 0.4 0.3 'b#': text -0.8 0.6 'b' 'C:w'
+facez -0.6 0.5 0 0.4 0.3 'g#': text -0.4 0.6 'g' 'C:w'
+facez -0.2 0.5 0 0.4 0.3 'r#': text 0 0.6 'r' 'C:w'
+facez 0.2 0.5 0 0.4 0.3 'h#': text 0.4 0.6 'h' 'C:w'
+facez 0.6 0.5 0 0.4 0.3 'w#': text 0.8 0.6 'w' 'C:w'
+#brighted
+facez -1 0.8 0 0.4 0.3 'r1#': text -0.8 0.9 'r1' 'C:k'
+facez -0.6 0.8 0 0.4 0.3 'r3#': text -0.4 0.9 'r3' 'C:k'
+facez -0.2 0.8 0 0.4 0.3 'r5#': text 0 0.9 'r5' 'C:k'
+facez 0.2 0.8 0 0.4 0.3 'r7#': text 0.4 0.9 'r7' 'C:k'
+facez 0.6 0.8 0 0.4 0.3 'r9#': text 0.8 0.9 'r9' 'C:k'
+
+
+File: mgl_ru.info, Node: Color schemes sample, Next: Normal transparency, Prev: Colors sample, Up: Basic features
+
+3.5.10 Примеры цветовых схем
+-----------------------------------------------
+
+ [image src="../png/color_schemes.png" ]
+
+new a 256 2: fill a 'x'
+subplot 2 10 0 0.2:dens a 'kw'
+text -1.4 -0.3 'kw' '' -8
+subplot 2 10 1 0.2:dens a 'wk'
+text -1.4 -0.3 'wk' '' -8
+subplot 2 10 2 0.2:dens a 'kHCcw'
+text -1.4 -0.3 'kHCcw' '' -8
+subplot 2 10 3 0.2:dens a 'kBbcw'
+text -1.4 -0.3 'kBbcw' '' -8
+subplot 2 10 4 0.2:dens a 'kRryw'
+text -1.4 -0.3 'kRryw' '' -8
+subplot 2 10 5 0.2:dens a 'kGgew'
+text -1.4 -0.3 'kGgew' '' -8
+subplot 2 10 6 0.2:dens a 'BbwrR'
+text -1.4 -0.3 'BbwrR' '' -8
+subplot 2 10 7 0.2:dens a 'BbwgG'
+text -1.4 -0.3 'BbwgG' '' -8
+subplot 2 10 8 0.2:dens a 'GgwmM'
+text -1.4 -0.3 'GgwmM' '' -8
+subplot 2 10 9 0.2:dens a 'UuwqR'
+text -1.4 -0.3 'UuwqR' '' -8
+subplot 2 10 10 0.2:dens a 'QqwcC'
+text -1.4 -0.3 'QqwcC' '' -8
+subplot 2 10 11 0.2:dens a 'CcwyY'
+text -1.4 -0.3 'CcwyY' '' -8
+subplot 2 10 12 0.2:dens a 'bcwyr'
+text -1.4 -0.3 'bcwyr' '' -8
+subplot 2 10 13 0.2:dens a 'bwr'
+text -1.4 -0.3 'bwr' '' -8
+subplot 2 10 14 0.2:dens a 'BbcyrR'
+text -1.4 -0.3 'BbcyrR' '' -8
+subplot 2 10 15 0.2:dens a 'UbcyqR'
+text -1.4 -0.3 'UbcyqR' '' -8
+subplot 2 10 16 0.2:dens a 'BbcwyrR'
+text -1.4 -0.3 'BbcwyrR' '' -8
+subplot 2 10 17 0.2:dens a 'bcyr'
+text -1.4 -0.3 'bcyr' '' -8
+subplot 2 10 18 0.2:dens a 'BbcyrR|'
+text -1.4 -0.3 'BbcyrR|' '' -8
+subplot 2 10 19 0.2:dens a 'bgr'
+text -1.4 -0.3 'bgr' '' -8
+
+
+File: mgl_ru.info, Node: Normal transparency, Next: Glass-like transparency, Prev: Color schemes sample, Up: Basic features
+
+3.5.11 Обычная прозрачность
+----------------------------------------------
+
+ [image src="../png/type0.png" ]
+
+alpha on: light on
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+
+transptype 0: clf
+subplot 2 2 0: rotate 40 60: surf a: box
+subplot 2 2 1: rotate 40 60: dens a: box
+subplot 2 2 2: rotate 40 60: cont a: box
+subplot 2 2 3: rotate 40 60: axial a: box
+
+
+File: mgl_ru.info, Node: Glass-like transparency, Next: Lamp-like transparency, Prev: Normal transparency, Up: Basic features
+
+3.5.12 "Стеклянная" прозрачность
+------------------------------------------------------
+
+ [image src="../png/type1.png" ]
+
+alpha on: light on
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+
+transptype 1: clf
+subplot 2 2 0: rotate 40 60: surf a: box
+subplot 2 2 1: rotate 40 60: dens a: box
+subplot 2 2 2: rotate 40 60: cont a: box
+subplot 2 2 3: rotate 40 60: axial a: box
+
+
+File: mgl_ru.info, Node: Lamp-like transparency, Prev: Glass-like transparency, Up: Basic features
+
+3.5.13 "Ламповая" прозрачность
+--------------------------------------------------
+
+ [image src="../png/type2.png" ]
+
+alpha on: light on
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+
+transptype 2: clf
+subplot 2 2 0: rotate 40 60: surf a: box
+subplot 2 2 1: rotate 40 60: dens a: box
+subplot 2 2 2: rotate 40 60: cont a: box
+subplot 2 2 3: rotate 40 60: axial a: box
+
+
+File: mgl_ru.info, Node: Additional features, Next: Advanced features, Prev: Basic features, Up: Samples
+
+3.6 Дополнительные возможности
+=======================================================
+
+* Menu:
+
+* Legend sample::
+* Adding mesh sample::
+* Surf & Cont sample::
+* Flow & Dens sample::
+* Several light sample::
+* Mirrored surface sample::
+* Cont with labels sample::
+* Ternary plot sample::
+* Coloring by coordinates sample::
+* Drops sample::
+* Molecules drawing sample::
+
+
+File: mgl_ru.info, Node: Legend sample, Next: Adding mesh sample, Up: Additional features
+
+3.6.1 Legend - пример использования
+------------------------------------------------------
+
+ [image src="../png/legend.png" ]
+
+new f 50 3
+modify f 'sin(2*pi*x*x)'
+modify f 'sin(2*pi*x)' 1
+modify f 'sin(2*pi*sqrt(x))' 2
+axis 0 -1 1 1
+box
+plot f
+axis
+addlegend 'sin(\pi {x^2})' 'b'
+addlegend 'sin(\pi x)' 'g*'
+addlegend 'sin(\pi \sqrt{\a x})' 'r+'
+legend
+
+
+File: mgl_ru.info, Node: Adding mesh sample, Next: Surf & Cont sample, Prev: Legend sample, Up: Additional features
+
+3.6.2 Добавляем сетку
+-----------------------------------
+
+ [image src="../png/samplea.png" ]
+
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+alpha on
+light on
+subplot 2 2 0
+rotate 40 60
+surf a 'BbcyrR#'
+box
+subplot 2 2 1
+rotate 40 60
+dens a 'BbcyrR#'
+box
+subplot 2 2 2
+rotate 40 60
+cont a 'BbcyrR#'
+box
+subplot 2 2 3
+rotate 40 60
+axial a 'BbcyrR#'
+box
+
+
+File: mgl_ru.info, Node: Surf & Cont sample, Next: Flow & Dens sample, Prev: Adding mesh sample, Up: Additional features
+
+3.6.3 Surf & Cont - пример использования
+-----------------------------------------------------------
+
+ [image src="../png/surf_cont_y.png" ]
+
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+rotate 40 60
+light on
+box
+surf a
+cont a 'y'
+
+
+File: mgl_ru.info, Node: Flow & Dens sample, Next: Several light sample, Prev: Surf & Cont sample, Up: Additional features
+
+3.6.4 Flow & Dens - пример использования
+-----------------------------------------------------------
+
+ [image src="../png/flow_dens.png" ]
+
+new a 50 40
+new b 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+copy d a
+modify d 'sqrt(v^2+w^2)' a b
+box
+flow a b 'br'
+dens d 'BbcyrR'
+
+
+File: mgl_ru.info, Node: Several light sample, Next: Mirrored surface sample, Prev: Flow & Dens sample, Up: Additional features
+
+3.6.5 Несколько источников света
+--------------------------------------------------------
+
+ [image src="../png/several_light.png" ]
+
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+rotate 40 60
+light on
+light 1 0 1 0 'c'
+light 2 1 0 0 'y'
+light 3 0 -1 0 'm'
+box
+surf a 'h'
+
+
+File: mgl_ru.info, Node: Mirrored surface sample, Next: Cont with labels sample, Prev: Several light sample, Up: Additional features
+
+3.6.6 Отражение поверхности
+-----------------------------------------------
+
+ [image src="../png/mirror.png" ]
+
+new a 30 40
+modify a 'pi*(1-2*x)*exp(-4*y^2-4*(2*x-1)^2)'
+rotate 40 60
+light on
+surf a 'r'; yrange 0 1
+surf a 'b'; yrange 0 -1
+box
+ or
+new a 30 40
+var x 30 -1 1
+var y1 40 0 1
+var y2 40 0 -1
+modify a 'pi*(1-2*x)*exp(-4*y^2-4*(2*x-1)^2)'
+rotate 40 60
+light on
+surf x y1 a 'r'
+surf x y2 a 'b'
+box
+
+
+File: mgl_ru.info, Node: Cont with labels sample, Next: Ternary plot sample, Prev: Mirrored surface sample, Up: Additional features
+
+3.6.7 Cont и подписи - пример использования
+----------------------------------------------------------------------
+
+ [image src="../png/contt.png" ]
+
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+box
+cont a 'BbcyrRt'
+
+
+File: mgl_ru.info, Node: Ternary plot sample, Next: Coloring by coordinates sample, Prev: Cont with labels sample, Up: Additional features
+
+3.6.8 Ternary plot - пример использования
+------------------------------------------------------------
+
+ [image src="../png/ternary.png" ]
+
+new rx 10
+new ry 10
+new x 50
+new y 50
+new a 20 30
+modify a '4*x*y'
+modify x '0.25*(1+cos(2*pi*x))'
+modify y '0.25*(1+sin(2*pi*x))'
+modify rx 'rnd'
+modify ry 'rnd*(1-v)' rx
+text -0.8 1.3 'Ternary plot (x+y+t=1)'
+ternary on
+plot x y 'r2'
+plot rx ry 'q^ '
+cont a
+line 0.5 0 0 0.75 'g2'
+axis
+grid 'xyz' 'B;'
+xlabel 'x comp.'
+ylabel 'y comp.'
+tlabel 't comp.'
+
+
+File: mgl_ru.info, Node: Coloring by coordinates sample, Next: Drops sample, Prev: Ternary plot sample, Up: Additional features
+
+3.6.9 Окрашивание по положению грани
+---------------------------------------------------------------
+
+ [image src="../png/surf3_rgbd.png" ]
+
+new a 60 50 40
+modify a '-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)'
+rotate 40 60
+box
+surf3 a 'bgrd'
+
+
+File: mgl_ru.info, Node: Drops sample, Next: Molecules drawing sample, Prev: Coloring by coordinates sample, Up: Additional features
+
+3.6.10 Drops - пример использования
+------------------------------------------------------
+
+ [image src="../png/drops.png" ]
+
+light on
+text -1 1.2 'sh=0'
+drop -1 0 0 1 0.5 'r' 0
+text -0.33 1.2 'sh=0.33'
+drop -0.33 0 0 1 0.5 'r' 0.33
+text 0.33 1.2 'sh=0.67'
+drop 0.33 0 0 1 0.5 'r' 0.67
+text 1 1.2 'sh=1'
+drop 1 0 0 1 0.5 'r' 1
+ball -1 0 1 'k'
+ball -0.33 0 1 'k'
+ball 0.33 0 1 'k'
+ball 1 0 1 'k'
+line -1 0 1 1 0 1 'b'
+new h 100
+modify h '0.25*(1+x)^2'
+plot h 'k|'
+text -1 0.6 'h\sim(1+sh)^2' 'rL'
+
+
+File: mgl_ru.info, Node: Molecules drawing sample, Prev: Drops sample, Up: Additional features
+
+3.6.11 Рисование молекул
+----------------------------------------
+
+ [image src="../png/molecule.png" ]
+
+alpha on
+light on
+subplot 2 2 0
+text 0 1.2 'Methane, CH_4' '' -3
+rotate 60 120
+sphere 0 0 0 0.25 'k'
+drop 0 0 0 0 0 1 0.35 'h' 1 2
+sphere 0 0 0.7 0.25 'g'
+drop 0 0 0 -0.94 0 -0.33 0.35 'h' 1 2
+sphere -0.66 0 -0.23 0.25 'g'
+drop 0 0 0 0.47 0.82 -0.33 0.35 'h' 1 2
+sphere 0.33 0.57 -0.23 0.25 'g'
+drop 0 0 0 0.47 -0.82 -0.33 0.35 'h' 1 2
+sphere 0.33 -0.57 -0.23 0.25 'g'
+subplot 2 2 1
+text 0 1.2 'Water, H{_2}O' '' -3
+rotate 60 100
+sphere 0 0 0 0.25 'r'
+drop 0 0 0 0.3 0.5 0 0.3 'm' 1 2
+sphere 0.3 0.5 0 0.25 'g'
+drop 0 0 0 0.3 -0.5 0 0.3 'm' 1 2
+sphere 0.3 -0.5 0 0.25 'g'
+subplot 2 2 2
+text 0 1.2 'Oxygen, O_2' '' -3
+rotate 60 120
+drop 0 0.5 0 0 -0.3 0 0.3 'm' 1 2
+sphere 0 0.5 0 0.25 'r'
+drop 0 -0.5 0 0 0.3 0 0.3 'm' 1 2
+sphere 0 -0.5 0 0.25 'r'
+subplot 2 2 3
+text 0 1.2 0 'Ammonia, NH_3' '' -3
+rotate 60 120
+sphere 0 0 0 0.25 'b'
+drop 0 0 0 0.33 0.57 0 0.32 'n' 1 2
+sphere 0.33 0.57 0 0.25 'g'
+drop 0 0 0 0.33 -0.57 0 0.32 'n' 1 2
+sphere 0.33 -0.57 0 0.25 'g'
+drop 0 0 0 -0.65 0 0 0.32 'n' 1 2
+sphere -0.65 0 0 0.25 'g'
+
+
+File: mgl_ru.info, Node: Advanced features, Prev: Additional features, Up: Samples
+
+3.7 "Продвинутые" возможности
+===================================================
+
+* Menu:
+
+* Curvelinear coorinates sample::
+* 2-axes sample::
+* Semi-log sample::
+* Log-log sample::
+* Fitting sample::
+* Envelop sample::
+* Sew sample::
+* STFA sample::
+* PDE sample::
+* Beam tracing sample::
+* Parser sample::
+* Manual ticks sample::
+* ColumnPlot sample::
+* StickPlot sample::
+* Stereo image sample::
+
+
+File: mgl_ru.info, Node: Curvelinear coorinates sample, Next: 2-axes sample, Up: Advanced features
+
+3.7.1 Криволинейные координаты
+-----------------------------------------------------
+
+ [image src="../png/sample3.png" ]
+
+origin -1 1 -1
+subplot 2 2 0
+rotate 60 40
+line -1 0.5 0 1 0.5 0 'r2'
+axis
+grid
+text 0 1.3 1 'Cartesian'
+subplot 2 2 1
+rotate 60 40
+axis 'y*sin(pi*x)' 'y*cos(pi*x)' ''
+line -1 0.5 0 1 0.5 0 'r2'
+axis
+grid
+text 0 1.3 1 'Cylindrical'
+subplot 2 2 2
+rotate 60 40
+axis '2*y*x' 'y*y - x*x' ''
+line -1 0.5 0 1 0.5 0 'r2'
+axis
+grid
+text 0 1.3 1 'Parabolic'
+subplot 2 2 3
+rotate 60 40
+axis 'y*sin(pi*x)' 'y*cos(pi*x)' 'x+z'
+line -1 0.5 0 1 0.5 0 'r2'
+axis
+grid
+text 0 1.3 1 'Spiral'
+axis '' '' '' # set to default Cartesian
+
+
+File: mgl_ru.info, Node: 2-axes sample, Next: Semi-log sample, Prev: Curvelinear coorinates sample, Up: Advanced features
+
+3.7.2 Несколько осей на одном графике
+----------------------------------------------------------------
+
+ [image src="../png/2_axis.png" ]
+
+new y1 50
+new y2 50
+modify y1 '0.3*sin(2*pi*x)'
+modify y2 '0.5+0.3*cos(2*pi*x)'
+axis -1 -1 -1 1 1 1
+origin -1 -1 -1
+axis
+ylabel 'axis 1' 0
+plot y1 'b'
+axis 0 0 0 1 1 1
+origin 1 1 1
+axis
+ylabel 'axis 2' 0
+stem y2 'r'
+
+
+File: mgl_ru.info, Node: Semi-log sample, Next: Log-log sample, Prev: 2-axes sample, Up: Advanced features
+
+3.7.3 Semi-log - пример использования
+--------------------------------------------------------
+
+ [image src="../png/semilog.png" ]
+
+new x 2000
+new y 2000
+modify x '0.01/(x+10^(-5))'
+modify y 'sin(1/v)' x
+xrange 0.01 1000
+origin 0.01 -1 0
+xtick 0
+axis 'lg(x)' '' ''
+plot x y 'b2'
+axis
+grid 'xy' 'g'
+xlabel 'x' 0
+ylabel 'y = sin 1/x' 0
+box
+
+
+File: mgl_ru.info, Node: Log-log sample, Next: Fitting sample, Prev: Semi-log sample, Up: Advanced features
+
+3.7.4 Log-log - пример использования
+-------------------------------------------------------
+
+ [image src="../png/loglog.png" ]
+
+new x 100
+new y 100
+modify x 'pow(10,6*x-3)'
+modify y 'sqrt(1+v^2)' x
+axis 0.001 0.1 1000 1000
+xtick 0
+ytick 0
+axis 'lg(x)' 'lg(y)' ''
+plot x y 'b2'
+axis
+grid 'xy' 'g;'
+xlabel 'x' 0
+ylabel 'y=\sqrt{1+x^2}' 0
+box
+
+
+File: mgl_ru.info, Node: Fitting sample, Next: Envelop sample, Prev: Log-log sample, Up: Advanced features
+
+3.7.5 Fitting - пример использования
+-------------------------------------------------------
+
+ [image src="../png/fit.png" ]
+
+new rnd 100
+fill rnd '0.4*rnd+0.1+sin(2*pi*x)'
+new in 100
+fill in '0.3+sin(2*pi*x)'
+yrange -2 2
+plot rnd '. '
+box
+list ini 1 1 3
+fit res rnd 'a+b*sin(c*x)' 'abc' ini
+plot res 'r'
+plot in 'b'
+text -1 -1.3 'fitted:' 'L:r' -1
+putsfit 0 -1.8 'y = ' 'C:r'
+text 0 2.2 'initial: y = 0.3+sin(2\pi x)' 'C:b' -1
+
+
+File: mgl_ru.info, Node: Envelop sample, Next: Sew sample, Prev: Fitting sample, Up: Advanced features
+
+3.7.6 Envelop - пример использования
+-------------------------------------------------------
+
+ [image src="../png/envelop.png" ]
+
+new a 1000
+fill a 'exp(-8*x^2)*sin(10*pi*x)'
+plot a 'b'
+envelop a
+plot a 'r'
+axis
+
+
+File: mgl_ru.info, Node: Sew sample, Next: STFA sample, Prev: Envelop sample, Up: Advanced features
+
+3.7.7 Sew - пример использования
+---------------------------------------------------
+
+ [image src="../png/sew.png" ]
+
+new a 100 100
+modify a 'mod((y^2-(1-x)^2)/2,0.1)'
+rotate 40 60
+light on
+alpha on
+surf a 'b'
+sew a 'xy' 0.1
+surf a 'r'
+box
+
+
+File: mgl_ru.info, Node: STFA sample, Next: PDE sample, Prev: Sew sample, Up: Advanced features
+
+3.7.8 STFA - пример использования
+----------------------------------------------------
+
+ [image src="../png/stfa.png" ]
+
+new a 2000
+new b 2000
+fill a 'cos(50*pi*x)*(x<-.5)+cos(100*pi*x)*(x<0)*(x>-.5)+
+ cos(200*pi*x)*(x<.5)*(x>0)+cos(400*pi*x)*(x>.5)'
+subplot 1 2 0
+plot a
+axis
+xlabel '\i t'
+subplot 1 2 1
+stfa a b 64 ''
+axis
+ylabel '\omega' 0
+xlabel '\i t'
+
+
+File: mgl_ru.info, Node: PDE sample, Next: Beam tracing sample, Prev: STFA sample, Up: Advanced features
+
+3.7.9 PDE - пример использования
+---------------------------------------------------
+
+ [image src="../png/pde.png" ]
+
+axis
+xlabel '\i x'
+ylabel '\i z'
+new re 128
+new im 128
+fill re 'exp(-48*(x+0.7)^2)'
+pde a 'p^2+q^2-x-1+i*0.5*(z+x)*(z>-x)' re im 0.01 30
+transpose a
+crange 0 1
+dens a 'wyrRk'
+fplot '-x' 'k|'
+text 0 0.85 'absorption: (x+z)/2 for x+z>0' '' -1
+title 'Equation: ik_0\partial_zu + \Delta u + x\cdot u + i \frac{x+z}{2}\cdot u = 0' 'iC' -1.5
+
+
+File: mgl_ru.info, Node: Beam tracing sample, Next: Parser sample, Prev: PDE sample, Up: Advanced features
+
+3.7.10 Beam tracing - пример использования
+-------------------------------------------------------------
+
+ [image src="../png/qo2d.png" ]
+
+define $1 'p^2+q^2-x-1+i*0.5*(y+x)*(y>-x)'
+ray r $1 -0.7 -1 0 0 0.5 0 0.02 2
+plot r(0) r(1) 'k'
+axis
+xlabel '\i x'
+ylabel '\i z'
+new re 128
+new im 128
+new xx
+new yy
+fill re 'exp(-48*x^2)'
+qo2d a $1 re im r 1 30 xx yy
+crange 0 1
+dens xx yy a 'wyrRk'
+fplot '-x' 'k|'
+text -0.8 0.85 'absorption: (x+y)/2 for x+y>0' 'L' -1
+text 0.5 -0.05 'central ray' 'L' -1
+title 'Beam and ray tracing' 'C' -1.5
+
+
+File: mgl_ru.info, Node: Parser sample, Next: Manual ticks sample, Prev: Beam tracing sample, Up: Advanced features
+
+3.7.11 Parser - пример использования
+-------------------------------------------------------
+
+
+File: mgl_ru.info, Node: Manual ticks sample, Next: ColumnPlot sample, Prev: Parser sample, Up: Advanced features
+
+3.7.12 Особые метки по осям
+--------------------------------------------
+
+ [image src="../png/tval.png" ]
+
+axis -pi 0 pi 2
+xtick -pi '-\pi' -1.571 '-\pi/2' 0 '0' 0.886 'x^*' 1.571 '\pi/2' pi '\pi'
+axis
+grid
+fplot '2*cos(x^2)^2' 'r2' nan 300
+
+
+File: mgl_ru.info, Node: ColumnPlot sample, Next: StickPlot sample, Prev: Manual ticks sample, Up: Advanced features
+
+3.7.13 ColumnPlot - пример использования
+-----------------------------------------------------------
+
+ [image src="../png/column.png" ]
+
+for $1 0 3
+columnplot 4 $1
+box
+text -0.5 0.5 'Plot $1 of 4'
+fplot 'sin(pi*x+pi*$1/2)'
+next
+
+
+File: mgl_ru.info, Node: StickPlot sample, Prev: ColumnPlot sample, Up: Advanced features
+
+3.7.14 StickPlot - пример использования
+----------------------------------------------------------
+
+ [image src="../png/stick.png" ]
+
+ranges -1 1 -1 1 0 1:light on
+stickplot 3 0 40 30 : axis 'xyz_'
+fsurf 'exp(-10*y^2-6*x^2)'
+text 0.2 0 1.2 'z=0' '' -2
+stickplot 3 1 40 30 : axis 'xy_'
+fsurf 'exp(-10*y^2/2-6*x^2)/sqrt(2)'
+text 0.2 0 1.2 'z=1' '' -2
+stickplot 3 2 40 30 : axis 'xy_'
+fsurf 'exp(-10*y^2/5-6*x^2)/sqrt(5)'
+text 0.2 0 1.2 'z=2' '' -2
+xlabel '\tau' 0 : ylabel '\rho'
+
+
+File: mgl_ru.info, Node: Stereo image sample, Prev: StickPlot sample, Up: Advanced features
+
+3.7.15 Пример стерео изображения
+-------------------------------------------------------
+
+ [image src="../png/stereo.png" ]
+
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+light on
+subplot 2 1 0
+rotate 40 60+3
+box:surf a
+subplot 2 1 1
+rotate 40 60-3
+box:surf a
+
+
+
+Local Variables:
+coding: utf-8
+End:
diff --git a/texinfo/mgl_ru.info-2 b/texinfo/mgl_ru.info-2
new file mode 100644
index 0000000..82e8068
--- /dev/null
+++ b/texinfo/mgl_ru.info-2
@@ -0,0 +1,889 @@
+This is mgl_ru.info, produced by makeinfo version 4.13 from mgl_ru.texi.
+
+Это документация для MathGL (версии 1.11) - библиотеки классов и
+функций для построения научной графики. Пожалуйста сообщайте о любых
+ошибках в этом руководстве на <mathgl.abalakin at gmail.org>.
+
+ Copyright (C) 2009 Алексей Балакин.
+
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.2 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, with the Front-Cover Texts
+ being "A GNU Manual," and with the Back-Cover Texts as in (a)
+ below. A copy of the license is included in the section entitled
+ "GNU Free Documentation License."
+
+ (a) The FSF's Back-Cover Text is: "You have the freedom to copy
+ and modify this GNU manual. Buying copies from the FSF supports
+ it in developing GNU and promoting software freedom."
+
+INFO-DIR-SECTION MathGL documentation system
+START-INFO-DIR-ENTRY
+* MathGL: (mathgl). The library for scientific graphics.
+END-INFO-DIR-ENTRY
+
+
+File: mgl_ru.info, Node: Copying This Manual, Next: Index, Prev: Samples, Up: Top
+
+Appendix A GNU Free Documentation License
+*****************************************
+
+ Version 1.2, November 2002
+
+ Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ 0. PREAMBLE
+
+ The purpose of this License is to make a manual, textbook, or other
+ functional and useful document "free" in the sense of freedom: to
+ assure everyone the effective freedom to copy and redistribute it,
+ with or without modifying it, either commercially or
+ noncommercially. Secondarily, this License preserves for the
+ author and publisher a way to get credit for their work, while not
+ being considered responsible for modifications made by others.
+
+ This License is a kind of "copyleft", which means that derivative
+ works of the document must themselves be free in the same sense.
+ It complements the GNU General Public License, which is a copyleft
+ license designed for free software.
+
+ We have designed this License in order to use it for manuals for
+ free software, because free software needs free documentation: a
+ free program should come with manuals providing the same freedoms
+ that the software does. But this License is not limited to
+ software manuals; it can be used for any textual work, regardless
+ of subject matter or whether it is published as a printed book.
+ We recommend this License principally for works whose purpose is
+ instruction or reference.
+
+ 1. APPLICABILITY AND DEFINITIONS
+
+ This License applies to any manual or other work, in any medium,
+ that contains a notice placed by the copyright holder saying it
+ can be distributed under the terms of this License. Such a notice
+ grants a world-wide, royalty-free license, unlimited in duration,
+ to use that work under the conditions stated herein. The
+ "Document", below, refers to any such manual or work. Any member
+ of the public is a licensee, and is addressed as "you". You
+ accept the license if you copy, modify or distribute the work in a
+ way requiring permission under copyright law.
+
+ A "Modified Version" of the Document means any work containing the
+ Document or a portion of it, either copied verbatim, or with
+ modifications and/or translated into another language.
+
+ A "Secondary Section" is a named appendix or a front-matter section
+ of the Document that deals exclusively with the relationship of the
+ publishers or authors of the Document to the Document's overall
+ subject (or to related matters) and contains nothing that could
+ fall directly within that overall subject. (Thus, if the Document
+ is in part a textbook of mathematics, a Secondary Section may not
+ explain any mathematics.) The relationship could be a matter of
+ historical connection with the subject or with related matters, or
+ of legal, commercial, philosophical, ethical or political position
+ regarding them.
+
+ The "Invariant Sections" are certain Secondary Sections whose
+ titles are designated, as being those of Invariant Sections, in
+ the notice that says that the Document is released under this
+ License. If a section does not fit the above definition of
+ Secondary then it is not allowed to be designated as Invariant.
+ The Document may contain zero Invariant Sections. If the Document
+ does not identify any Invariant Sections then there are none.
+
+ The "Cover Texts" are certain short passages of text that are
+ listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+ that says that the Document is released under this License. A
+ Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+ be at most 25 words.
+
+ A "Transparent" copy of the Document means a machine-readable copy,
+ represented in a format whose specification is available to the
+ general public, that is suitable for revising the document
+ straightforwardly with generic text editors or (for images
+ composed of pixels) generic paint programs or (for drawings) some
+ widely available drawing editor, and that is suitable for input to
+ text formatters or for automatic translation to a variety of
+ formats suitable for input to text formatters. A copy made in an
+ otherwise Transparent file format whose markup, or absence of
+ markup, has been arranged to thwart or discourage subsequent
+ modification by readers is not Transparent. An image format is
+ not Transparent if used for any substantial amount of text. A
+ copy that is not "Transparent" is called "Opaque".
+
+ Examples of suitable formats for Transparent copies include plain
+ ASCII without markup, Texinfo input format, LaTeX input format,
+ SGML or XML using a publicly available DTD, and
+ standard-conforming simple HTML, PostScript or PDF designed for
+ human modification. Examples of transparent image formats include
+ PNG, XCF and JPG. Opaque formats include proprietary formats that
+ can be read and edited only by proprietary word processors, SGML or
+ XML for which the DTD and/or processing tools are not generally
+ available, and the machine-generated HTML, PostScript or PDF
+ produced by some word processors for output purposes only.
+
+ The "Title Page" means, for a printed book, the title page itself,
+ plus such following pages as are needed to hold, legibly, the
+ material this License requires to appear in the title page. For
+ works in formats which do not have any title page as such, "Title
+ Page" means the text near the most prominent appearance of the
+ work's title, preceding the beginning of the body of the text.
+
+ A section "Entitled XYZ" means a named subunit of the Document
+ whose title either is precisely XYZ or contains XYZ in parentheses
+ following text that translates XYZ in another language. (Here XYZ
+ stands for a specific section name mentioned below, such as
+ "Acknowledgements", "Dedications", "Endorsements", or "History".)
+ To "Preserve the Title" of such a section when you modify the
+ Document means that it remains a section "Entitled XYZ" according
+ to this definition.
+
+ The Document may include Warranty Disclaimers next to the notice
+ which states that this License applies to the Document. These
+ Warranty Disclaimers are considered to be included by reference in
+ this License, but only as regards disclaiming warranties: any other
+ implication that these Warranty Disclaimers may have is void and
+ has no effect on the meaning of this License.
+
+ 2. VERBATIM COPYING
+
+ You may copy and distribute the Document in any medium, either
+ commercially or noncommercially, provided that this License, the
+ copyright notices, and the license notice saying this License
+ applies to the Document are reproduced in all copies, and that you
+ add no other conditions whatsoever to those of this License. You
+ may not use technical measures to obstruct or control the reading
+ or further copying of the copies you make or distribute. However,
+ you may accept compensation in exchange for copies. If you
+ distribute a large enough number of copies you must also follow
+ the conditions in section 3.
+
+ You may also lend copies, under the same conditions stated above,
+ and you may publicly display copies.
+
+ 3. COPYING IN QUANTITY
+
+ If you publish printed copies (or copies in media that commonly
+ have printed covers) of the Document, numbering more than 100, and
+ the Document's license notice requires Cover Texts, you must
+ enclose the copies in covers that carry, clearly and legibly, all
+ these Cover Texts: Front-Cover Texts on the front cover, and
+ Back-Cover Texts on the back cover. Both covers must also clearly
+ and legibly identify you as the publisher of these copies. The
+ front cover must present the full title with all words of the
+ title equally prominent and visible. You may add other material
+ on the covers in addition. Copying with changes limited to the
+ covers, as long as they preserve the title of the Document and
+ satisfy these conditions, can be treated as verbatim copying in
+ other respects.
+
+ If the required texts for either cover are too voluminous to fit
+ legibly, you should put the first ones listed (as many as fit
+ reasonably) on the actual cover, and continue the rest onto
+ adjacent pages.
+
+ If you publish or distribute Opaque copies of the Document
+ numbering more than 100, you must either include a
+ machine-readable Transparent copy along with each Opaque copy, or
+ state in or with each Opaque copy a computer-network location from
+ which the general network-using public has access to download
+ using public-standard network protocols a complete Transparent
+ copy of the Document, free of added material. If you use the
+ latter option, you must take reasonably prudent steps, when you
+ begin distribution of Opaque copies in quantity, to ensure that
+ this Transparent copy will remain thus accessible at the stated
+ location until at least one year after the last time you
+ distribute an Opaque copy (directly or through your agents or
+ retailers) of that edition to the public.
+
+ It is requested, but not required, that you contact the authors of
+ the Document well before redistributing any large number of
+ copies, to give them a chance to provide you with an updated
+ version of the Document.
+
+ 4. MODIFICATIONS
+
+ You may copy and distribute a Modified Version of the Document
+ under the conditions of sections 2 and 3 above, provided that you
+ release the Modified Version under precisely this License, with
+ the Modified Version filling the role of the Document, thus
+ licensing distribution and modification of the Modified Version to
+ whoever possesses a copy of it. In addition, you must do these
+ things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title
+ distinct from that of the Document, and from those of
+ previous versions (which should, if there were any, be listed
+ in the History section of the Document). You may use the
+ same title as a previous version if the original publisher of
+ that version gives permission.
+
+ B. List on the Title Page, as authors, one or more persons or
+ entities responsible for authorship of the modifications in
+ the Modified Version, together with at least five of the
+ principal authors of the Document (all of its principal
+ authors, if it has fewer than five), unless they release you
+ from this requirement.
+
+ C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+
+ D. Preserve all the copyright notices of the Document.
+
+ E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+
+ F. Include, immediately after the copyright notices, a license
+ notice giving the public permission to use the Modified
+ Version under the terms of this License, in the form shown in
+ the Addendum below.
+
+ G. Preserve in that license notice the full lists of Invariant
+ Sections and required Cover Texts given in the Document's
+ license notice.
+
+ H. Include an unaltered copy of this License.
+
+ I. Preserve the section Entitled "History", Preserve its Title,
+ and add to it an item stating at least the title, year, new
+ authors, and publisher of the Modified Version as given on
+ the Title Page. If there is no section Entitled "History" in
+ the Document, create one stating the title, year, authors,
+ and publisher of the Document as given on its Title Page,
+ then add an item describing the Modified Version as stated in
+ the previous sentence.
+
+ J. Preserve the network location, if any, given in the Document
+ for public access to a Transparent copy of the Document, and
+ likewise the network locations given in the Document for
+ previous versions it was based on. These may be placed in
+ the "History" section. You may omit a network location for a
+ work that was published at least four years before the
+ Document itself, or if the original publisher of the version
+ it refers to gives permission.
+
+ K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the
+ section all the substance and tone of each of the contributor
+ acknowledgements and/or dedications given therein.
+
+ L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section
+ titles.
+
+ M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+
+ N. Do not retitle any existing section to be Entitled
+ "Endorsements" or to conflict in title with any Invariant
+ Section.
+
+ O. Preserve any Warranty Disclaimers.
+
+ If the Modified Version includes new front-matter sections or
+ appendices that qualify as Secondary Sections and contain no
+ material copied from the Document, you may at your option
+ designate some or all of these sections as invariant. To do this,
+ add their titles to the list of Invariant Sections in the Modified
+ Version's license notice. These titles must be distinct from any
+ other section titles.
+
+ You may add a section Entitled "Endorsements", provided it contains
+ nothing but endorsements of your Modified Version by various
+ parties--for example, statements of peer review or that the text
+ has been approved by an organization as the authoritative
+ definition of a standard.
+
+ You may add a passage of up to five words as a Front-Cover Text,
+ and a passage of up to 25 words as a Back-Cover Text, to the end
+ of the list of Cover Texts in the Modified Version. Only one
+ passage of Front-Cover Text and one of Back-Cover Text may be
+ added by (or through arrangements made by) any one entity. If the
+ Document already includes a cover text for the same cover,
+ previously added by you or by arrangement made by the same entity
+ you are acting on behalf of, you may not add another; but you may
+ replace the old one, on explicit permission from the previous
+ publisher that added the old one.
+
+ The author(s) and publisher(s) of the Document do not by this
+ License give permission to use their names for publicity for or to
+ assert or imply endorsement of any Modified Version.
+
+ 5. COMBINING DOCUMENTS
+
+ You may combine the Document with other documents released under
+ this License, under the terms defined in section 4 above for
+ modified versions, provided that you include in the combination
+ all of the Invariant Sections of all of the original documents,
+ unmodified, and list them all as Invariant Sections of your
+ combined work in its license notice, and that you preserve all
+ their Warranty Disclaimers.
+
+ The combined work need only contain one copy of this License, and
+ multiple identical Invariant Sections may be replaced with a single
+ copy. If there are multiple Invariant Sections with the same name
+ but different contents, make the title of each such section unique
+ by adding at the end of it, in parentheses, the name of the
+ original author or publisher of that section if known, or else a
+ unique number. Make the same adjustment to the section titles in
+ the list of Invariant Sections in the license notice of the
+ combined work.
+
+ In the combination, you must combine any sections Entitled
+ "History" in the various original documents, forming one section
+ Entitled "History"; likewise combine any sections Entitled
+ "Acknowledgements", and any sections Entitled "Dedications". You
+ must delete all sections Entitled "Endorsements."
+
+ 6. COLLECTIONS OF DOCUMENTS
+
+ You may make a collection consisting of the Document and other
+ documents released under this License, and replace the individual
+ copies of this License in the various documents with a single copy
+ that is included in the collection, provided that you follow the
+ rules of this License for verbatim copying of each of the
+ documents in all other respects.
+
+ You may extract a single document from such a collection, and
+ distribute it individually under this License, provided you insert
+ a copy of this License into the extracted document, and follow
+ this License in all other respects regarding verbatim copying of
+ that document.
+
+ 7. AGGREGATION WITH INDEPENDENT WORKS
+
+ A compilation of the Document or its derivatives with other
+ separate and independent documents or works, in or on a volume of
+ a storage or distribution medium, is called an "aggregate" if the
+ copyright resulting from the compilation is not used to limit the
+ legal rights of the compilation's users beyond what the individual
+ works permit. When the Document is included in an aggregate, this
+ License does not apply to the other works in the aggregate which
+ are not themselves derivative works of the Document.
+
+ If the Cover Text requirement of section 3 is applicable to these
+ copies of the Document, then if the Document is less than one half
+ of the entire aggregate, the Document's Cover Texts may be placed
+ on covers that bracket the Document within the aggregate, or the
+ electronic equivalent of covers if the Document is in electronic
+ form. Otherwise they must appear on printed covers that bracket
+ the whole aggregate.
+
+ 8. TRANSLATION
+
+ Translation is considered a kind of modification, so you may
+ distribute translations of the Document under the terms of section
+ 4. Replacing Invariant Sections with translations requires special
+ permission from their copyright holders, but you may include
+ translations of some or all Invariant Sections in addition to the
+ original versions of these Invariant Sections. You may include a
+ translation of this License, and all the license notices in the
+ Document, and any Warranty Disclaimers, provided that you also
+ include the original English version of this License and the
+ original versions of those notices and disclaimers. In case of a
+ disagreement between the translation and the original version of
+ this License or a notice or disclaimer, the original version will
+ prevail.
+
+ If a section in the Document is Entitled "Acknowledgements",
+ "Dedications", or "History", the requirement (section 4) to
+ Preserve its Title (section 1) will typically require changing the
+ actual title.
+
+ 9. TERMINATION
+
+ You may not copy, modify, sublicense, or distribute the Document
+ except as expressly provided for under this License. Any other
+ attempt to copy, modify, sublicense or distribute the Document is
+ void, and will automatically terminate your rights under this
+ License. However, parties who have received copies, or rights,
+ from you under this License will not have their licenses
+ terminated so long as such parties remain in full compliance.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+ The Free Software Foundation may publish new, revised versions of
+ the GNU Free Documentation License from time to time. Such new
+ versions will be similar in spirit to the present version, but may
+ differ in detail to address new problems or concerns. See
+ `http://www.gnu.org/copyleft/'.
+
+ Each version of the License is given a distinguishing version
+ number. If the Document specifies that a particular numbered
+ version of this License "or any later version" applies to it, you
+ have the option of following the terms and conditions either of
+ that specified version or of any later version that has been
+ published (not as a draft) by the Free Software Foundation. If
+ the Document does not specify a version number of this License,
+ you may choose any version ever published (not as a draft) by the
+ Free Software Foundation.
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+ Copyright (C) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.2
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+
+ If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with
+ the Front-Cover Texts being LIST, and with the Back-Cover Texts
+ being LIST.
+
+ If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+ If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License, to
+permit their use in free software.
+
+
+File: mgl_ru.info, Node: Index, Prev: Copying This Manual, Up: Top
+
+Индекс
+************
+
+ [index ]
+* Menu:
+
+* AddLegend: Legend sample. (line 6)
+* addlegend: Legend. (line 29)
+* addto: Operators. (line 18)
+* adjust: Axis settings. (line 114)
+* Alpha <1>: 3D plot sample. (line 6)
+* Alpha <2>: 2D plot sample. (line 6)
+* Alpha: Transparent surface sample.
+ (line 6)
+* alpha <1>: Command options. (line 20)
+* alpha: Transparency. (line 15)
+* alphadef <1>: Command options. (line 20)
+* alphadef: Transparency. (line 19)
+* ambient <1>: Command options. (line 26)
+* ambient: Lighting. (line 25)
+* Area <1>: Area gradient sample.
+ (line 6)
+* Area: Area sample. (line 6)
+* area: 1D plotting. (line 56)
+* arrowsize: Default sizes. (line 18)
+* aspect: Transformation matrix.
+ (line 61)
+* Axial <1>: Adding mesh sample. (line 6)
+* Axial: Axial sample. (line 6)
+* axial: 2D plotting. (line 135)
+* axialdir: Other settings. (line 31)
+* Axis <1>: Log-log sample. (line 6)
+* Axis <2>: Semi-log sample. (line 6)
+* Axis <3>: 2-axes sample. (line 6)
+* Axis <4>: Curvelinear coorinates sample.
+ (line 6)
+* Axis <5>: Dens3 sample. (line 6)
+* Axis <6>: Ring chart sample. (line 6)
+* Axis: Pie chart sample. (line 6)
+* axis <1>: Axis and Colorbar. (line 10)
+* axis: Axis settings. (line 12)
+* ball: Primitives drawing. (line 12)
+* Barh: Barh sample. (line 6)
+* barh: 1D plotting. (line 101)
+* Bars <1>: 1D plot sample. (line 6)
+* Bars <2>: Bars fall sample. (line 6)
+* Bars <3>: Bars above sample. (line 6)
+* Bars <4>: Bars 2 colors sample.
+ (line 6)
+* Bars: Bars sample. (line 6)
+* bars: 1D plotting. (line 87)
+* barwidth: Default sizes. (line 11)
+* beam: 3D plotting. (line 119)
+* Belt: Belt sample. (line 6)
+* belt: 2D plotting. (line 57)
+* box: Axis and Colorbar. (line 43)
+* BoxPlot: BoxPlot sample. (line 6)
+* boxplot: 1D plotting. (line 182)
+* Boxs: Boxs sample. (line 6)
+* boxs: 2D plotting. (line 66)
+* call: Program flow. (line 34)
+* caxis: Axis settings. (line 53)
+* Chart <1>: Ring chart sample. (line 6)
+* Chart <2>: Pie chart sample. (line 6)
+* Chart: Chart sample. (line 6)
+* chart: 1D plotting. (line 115)
+* chdir: Program flow. (line 9)
+* clearlegend: Legend. (line 34)
+* clf: Primitives drawing. (line 9)
+* Cloud: Cloud sample. (line 6)
+* cloud: 3D plotting. (line 109)
+* CloudP: CloudP sample. (line 6)
+* Colorbar <1>: Color schemes sample.
+ (line 6)
+* Colorbar: Dens sample. (line 6)
+* colorbar: Axis and Colorbar. (line 17)
+* columnplot: Transformation matrix.
+ (line 39)
+* combine: Make another data. (line 6)
+* cone: Primitives drawing. (line 55)
+* Cont <1>: Cont with labels sample.
+ (line 6)
+* Cont <2>: Surf & Cont sample. (line 6)
+* Cont <3>: Adding mesh sample. (line 6)
+* Cont: Cont sample. (line 6)
+* cont: 2D plotting. (line 89)
+* Cont3: Cont3 sample. (line 6)
+* cont3: 3D plotting. (line 54)
+* conta: 3D plotting. (line 72)
+* ContD: ContD sample. (line 6)
+* contd: 2D plotting. (line 119)
+* ContF: ContF sample. (line 6)
+* contf: 2D plotting. (line 105)
+* ContF3 <1>: Isocaps sample. (line 6)
+* ContF3: ContF3 sample. (line 6)
+* contf3: 3D plotting. (line 76)
+* contfa: 3D plotting. (line 93)
+* contfx: Other plotting. (line 36)
+* contfy: Other plotting. (line 36)
+* contfz: Other plotting. (line 36)
+* ContX: Cont projection sample.
+ (line 6)
+* contx: Other plotting. (line 27)
+* ContY: Cont projection sample.
+ (line 6)
+* conty: Other plotting. (line 27)
+* ContZ: Cont projection sample.
+ (line 6)
+* contz: Other plotting. (line 27)
+* copy: Data create. (line 31)
+* cosfft: Change data. (line 40)
+* crange <1>: Command options. (line 30)
+* crange: Axis settings. (line 75)
+* crop: Rearrange data. (line 31)
+* Crust: Crust sample. (line 6)
+* crust: Other plotting. (line 51)
+* ctick: Axis settings. (line 92)
+* cumsum: Change data. (line 11)
+* curve: Primitives drawing. (line 22)
+* cut <1>: Command options. (line 42)
+* cut: Cutting. (line 10)
+* CutMax <1>: Isocaps sample. (line 6)
+* CutMax: CutMinMax sample. (line 6)
+* CutMin <1>: Isocaps sample. (line 6)
+* CutMin: CutMinMax sample. (line 6)
+* CutOff: CutOff sample. (line 6)
+* defchr: Program flow. (line 21)
+* define: Program flow. (line 12)
+* defnum: Program flow. (line 25)
+* defpal: Program flow. (line 29)
+* delete: Rearrange data. (line 35)
+* Dens <1>: Flow & Dens sample. (line 6)
+* Dens <2>: Adding mesh sample. (line 6)
+* Dens <3>: 3D plot sample. (line 6)
+* Dens <4>: 2D plot sample. (line 6)
+* Dens: Dens sample. (line 6)
+* dens: 2D plotting. (line 81)
+* Dens3: Dens3 sample. (line 6)
+* dens3: 3D plotting. (line 41)
+* densa: 3D plotting. (line 50)
+* DensX: Dens projection sample.
+ (line 6)
+* densx: Other plotting. (line 18)
+* DensY: Dens projection sample.
+ (line 6)
+* densy: Other plotting. (line 18)
+* DensZ: Dens projection sample.
+ (line 6)
+* densz: Other plotting. (line 18)
+* Dew: Dew sample. (line 6)
+* dew: Vector fields. (line 73)
+* diff: Change data. (line 17)
+* diff2: Change data. (line 33)
+* divto: Operators. (line 12)
+* Dots: Dots sample. (line 6)
+* dots: Other plotting. (line 44)
+* Drop <1>: Molecules drawing sample.
+ (line 6)
+* Drop: Drops sample. (line 6)
+* drop: Primitives drawing. (line 46)
+* else: Program flow. (line 64)
+* elseif: Program flow. (line 55)
+* endif: Program flow. (line 68)
+* Envelop: Envelop sample. (line 6)
+* envelop: Change data. (line 72)
+* Error: Error sample. (line 6)
+* error: 1D plotting. (line 173)
+* evaluate: Make another data. (line 10)
+* export: File I/O. (line 48)
+* extend: Rearrange data. (line 12)
+* facex: Primitives drawing. (line 30)
+* facey: Primitives drawing. (line 31)
+* facez: Primitives drawing. (line 32)
+* Fall: Fall sample. (line 6)
+* fall: 2D plotting. (line 47)
+* fgets: Text printing. (line 52)
+* fill: Data filling. (line 6)
+* Fit: Fitting sample. (line 6)
+* fit: Nonlinear fitting. (line 38)
+* fits: Nonlinear fitting. (line 30)
+* Flow <1>: Flow & Dens sample. (line 6)
+* Flow <2>: Flow 3D sample. (line 6)
+* Flow: Flow sample. (line 6)
+* flow: Vector fields. (line 82)
+* Fog: Surface in fog sample.
+ (line 6)
+* fog: Fog. (line 6)
+* font: Other settings. (line 6)
+* fontsize: Command options. (line 46)
+* for: Program flow. (line 72)
+* fplot: Other plotting. (line 94)
+* fsurf: Other plotting. (line 105)
+* func: Program flow. (line 38)
+* Grad: Grad sample. (line 6)
+* grad: 2D plotting. (line 151)
+* grid: Axis and Colorbar. (line 38)
+* grid2: 2D plotting. (line 161)
+* grid3: 3D plotting. (line 98)
+* grida: 3D plotting. (line 105)
+* hankel: Change data. (line 44)
+* hist: Make another data. (line 20)
+* idset: Data create. (line 38)
+* if: Program flow. (line 49)
+* import: File I/O. (line 43)
+* info: Data create. (line 42)
+* inplot: Transformation matrix.
+ (line 30)
+* insert: Rearrange data. (line 42)
+* integrate: Change data. (line 13)
+* jacobian: Make another data. (line 140)
+* Legend: Legend sample. (line 6)
+* legend <1>: Command options. (line 56)
+* legend: Legend. (line 18)
+* legendbox: Legend. (line 37)
+* legendmarks: Legend. (line 41)
+* Light: Several light sample.
+ (line 6)
+* light: Lighting. (line 13)
+* Line <1>: Arrow styles sample. (line 6)
+* Line: Line styles sample. (line 6)
+* line: Primitives drawing. (line 16)
+* linewidth: Default sizes. (line 22)
+* list: Data create. (line 16)
+* Map: Map sample. (line 6)
+* map: Dual plotting. (line 76)
+* Mark <1>: Line styles sample. (line 6)
+* Mark: Mark sample. (line 6)
+* mark: 1D plotting. (line 153)
+* marksize <1>: Command options. (line 49)
+* marksize: Default sizes. (line 15)
+* max: Make another data. (line 47)
+* Mesh: Mesh sample. (line 6)
+* mesh: 2D plotting. (line 40)
+* meshnum <1>: Command options. (line 52)
+* meshnum: Other settings. (line 25)
+* mglParse: Parser sample. (line 6)
+* mglPDE: PDE sample. (line 6)
+* mglQO2d: Beam tracing sample. (line 6)
+* mglRay <1>: Beam tracing sample. (line 6)
+* mglRay: PDE sample. (line 6)
+* min: Make another data. (line 52)
+* mirror: Change data. (line 57)
+* modify: Data filling. (line 6)
+* momentum: Make another data. (line 36)
+* multo: Operators. (line 6)
+* new: Data create. (line 6)
+* next: Program flow. (line 81)
+* norm: Change data. (line 83)
+* normsl: Change data. (line 76)
+* once: Program flow. (line 85)
+* origin: Axis settings. (line 58)
+* palette: Other settings. (line 15)
+* pde: Make another data. (line 94)
+* perspective: Transformation matrix.
+ (line 65)
+* Pipe <1>: Pipe 3D sample. (line 6)
+* Pipe: Pipe sample. (line 6)
+* pipe: Vector fields. (line 114)
+* Plot <1>: Log-log sample. (line 6)
+* Plot <2>: Semi-log sample. (line 6)
+* Plot <3>: Legend sample. (line 6)
+* Plot <4>: 1D plot sample. (line 6)
+* Plot: Plot sample. (line 6)
+* plot: 1D plotting. (line 30)
+* plotfactor: Zooming. (line 10)
+* put: Data filling. (line 29)
+* Puts <1>: Font faces sample. (line 6)
+* Puts <2>: TeX parsing sample. (line 6)
+* Puts: Text styles sample. (line 6)
+* PutsFit: Fitting sample. (line 6)
+* putsfit: Nonlinear fitting. (line 46)
+* qo2d: Make another data. (line 125)
+* quadplot: Other plotting. (line 83)
+* Radar: Radar sample. (line 6)
+* radar: 1D plotting. (line 38)
+* ranges: Axis settings. (line 14)
+* ray: Make another data. (line 114)
+* read: File I/O. (line 6)
+* readall: File I/O. (line 21)
+* readhdf: File I/O. (line 37)
+* readmat: File I/O. (line 16)
+* rearrange: Rearrange data. (line 6)
+* rect: Primitives drawing. (line 61)
+* Region <1>: Region gradient sample.
+ (line 6)
+* Region: Region sample. (line 6)
+* region: 1D plotting. (line 69)
+* resize: Make another data. (line 56)
+* return: Program flow. (line 45)
+* roll: Change data. (line 52)
+* rotate: Transformation matrix.
+ (line 53)
+* rotatetext: Other settings. (line 11)
+* save: File I/O. (line 34)
+* savehdf: File I/O. (line 40)
+* setsize: Export to file. (line 12)
+* SetTicks <1>: Log-log sample. (line 6)
+* SetTicks: Semi-log sample. (line 6)
+* SetTicksVal <1>: StickPlot sample. (line 6)
+* SetTicksVal <2>: ColumnPlot sample. (line 6)
+* SetTicksVal: Manual ticks sample. (line 6)
+* Sew: Sew sample. (line 6)
+* sew: Change data. (line 61)
+* sinfft: Change data. (line 37)
+* smooth: Change data. (line 66)
+* Sphere: Molecules drawing sample.
+ (line 6)
+* sphere: Primitives drawing. (line 42)
+* squeeze: Rearrange data. (line 25)
+* Stem: Stem sample. (line 6)
+* stem: 1D plotting. (line 79)
+* Step: Step sample. (line 6)
+* step: 1D plotting. (line 128)
+* STFA: STFA sample. (line 6)
+* stfa: Dual plotting. (line 86)
+* stfad: Make another data. (line 87)
+* stickplot: Transformation matrix.
+ (line 46)
+* stop: Program flow. (line 89)
+* subdata: Make another data. (line 60)
+* SubPlot <1>: Adding mesh sample. (line 6)
+* SubPlot: 1D plot sample. (line 6)
+* subplot: Transformation matrix.
+ (line 15)
+* subto: Operators. (line 24)
+* sum: Make another data. (line 43)
+* Surf <1>: Mirrored surface sample.
+ (line 6)
+* Surf <2>: Several light sample.
+ (line 6)
+* Surf <3>: Surf & Cont sample. (line 6)
+* Surf <4>: Adding mesh sample. (line 6)
+* Surf <5>: 3D plot sample. (line 6)
+* Surf <6>: 2D plot sample. (line 6)
+* Surf <7>: Sharp colors sample. (line 6)
+* Surf <8>: Surface in fog sample.
+ (line 6)
+* Surf <9>: Transparent surface sample.
+ (line 6)
+* Surf: Surf sample. (line 6)
+* surf: 2D plotting. (line 32)
+* Surf3 <1>: Coloring by coordinates sample.
+ (line 6)
+* Surf3 <2>: CutOff sample. (line 6)
+* Surf3 <3>: Isocaps sample. (line 6)
+* Surf3 <4>: CutMinMax sample. (line 6)
+* Surf3: Surf3 sample. (line 6)
+* surf3: 3D plotting. (line 27)
+* Surf3A: Surf3A sample. (line 6)
+* surf3a: Dual plotting. (line 53)
+* Surf3C: Surf3C sample. (line 6)
+* surf3c: Dual plotting. (line 31)
+* SurfA: SurfA sample. (line 6)
+* surfa: Dual plotting. (line 45)
+* SurfC: SurfC sample. (line 6)
+* surfc: Dual plotting. (line 23)
+* swap: Change data. (line 49)
+* Tens: Tens sample. (line 6)
+* tens: 1D plotting. (line 48)
+* Ternary: Ternary plot sample. (line 6)
+* ternary: Axis settings. (line 63)
+* Text: Text sample. (line 6)
+* text: Text printing. (line 28)
+* TextMark: TextMark sample. (line 6)
+* textmark: 1D plotting. (line 163)
+* ticklen: Default sizes. (line 28)
+* tickstl: Default sizes. (line 33)
+* Tile: Tile sample. (line 6)
+* tile: 2D plotting. (line 73)
+* TileS: TileS sample. (line 6)
+* tiles: Dual plotting. (line 68)
+* title: Text printing. (line 48)
+* tlabel: Axis and Colorbar. (line 51)
+* Torus: Torus sample. (line 6)
+* torus: 1D plotting. (line 135)
+* trace: Make another data. (line 67)
+* Traj: Traj sample. (line 6)
+* traj: Vector fields. (line 20)
+* transform: Make another data. (line 73)
+* transforma: Make another data. (line 83)
+* transparent: Transparency. (line 23)
+* transpose: Rearrange data. (line 21)
+* TranspType <1>: Lamp-like transparency.
+ (line 6)
+* TranspType <2>: Glass-like transparency.
+ (line 6)
+* TranspType: Normal transparency. (line 6)
+* transptype: Transparency. (line 26)
+* tricont: Other plotting. (line 70)
+* triplot: Other plotting. (line 58)
+* Tube: Tube sample. (line 6)
+* tube: 1D plotting. (line 143)
+* var: Data create. (line 11)
+* Vect <1>: Vect 3D sample. (line 6)
+* Vect: Vect sample. (line 6)
+* vect: Vector fields. (line 30)
+* VectC <1>: VectC 3D sample. (line 6)
+* VectC: VectC sample. (line 6)
+* vectc: Vector fields. (line 49)
+* VectL <1>: VectL 3D sample. (line 6)
+* VectL: VectL sample. (line 6)
+* vectl: Vector fields. (line 61)
+* write: Export to file. (line 6)
+* xlabel: Axis and Colorbar. (line 48)
+* xrange <1>: Command options. (line 33)
+* xrange: Axis settings. (line 72)
+* xtick: Axis settings. (line 89)
+* ylabel: Axis and Colorbar. (line 49)
+* yrange <1>: Command options. (line 36)
+* yrange: Axis settings. (line 73)
+* ytick: Axis settings. (line 90)
+* zlabel: Axis and Colorbar. (line 50)
+* zoom: Zooming. (line 16)
+* zrange <1>: Command options. (line 39)
+* zrange: Axis settings. (line 74)
+* ztick: Axis settings. (line 91)
+* Стиль линий: Line styles. (line 6)
+* Стиль маркеров: Line styles. (line 6)
+* Стиль стрелок: Line styles. (line 6)
+* Стиль текста: Font styles. (line 6)
+* Текстовые формулы: Textual formulas. (line 6)
+* Цветовая схема: Color scheme. (line 6)
+
+
+
+
+Local Variables:
+coding: utf-8
+End:
diff --git a/texinfo/mgl_ru.texi b/texinfo/mgl_ru.texi
index 7a6b702..cee1571 100644
--- a/texinfo/mgl_ru.texi
+++ b/texinfo/mgl_ru.texi
@@ -27,10 +27,10 @@ supports it in developing GNU and promoting software freedom.''
@end quotation
@end copying
- at dircategory MathGL documentation system
- at direntry
-* MathGL: (mathgl). The library for scientific graphics.
- at end direntry
+ at c @dircategory MathGL documentation system
+ at c @direntry
+ at c * MathGL: (mathgl). The library for scientific graphics.
+ at c @end direntry
@titlepage
@title Язык MGL
diff --git a/texinfo/png/Makefile.am b/texinfo/png/Makefile.am
index 1d28940..80e5143 100644
--- a/texinfo/png/Makefile.am
+++ b/texinfo/png/Makefile.am
@@ -7,6 +7,5 @@ CLEANFILES = $(png_images)
$(png_images): hotdogs.pts # $(top_builddir)/examples/mgl_example
$(top_builddir)/examples/mgl_example -kind=${@:.png=}
- if test ! -d ../../png; then mkdir ../../png/; fi
cp ${@} ../../png/
touch $(srcdir)/../mathgl.texi
diff --git a/texinfo/png/Makefile.in b/texinfo/png/Makefile.in
index 8ed1804..f5e89c6 100644
--- a/texinfo/png/Makefile.in
+++ b/texinfo/png/Makefile.in
@@ -463,7 +463,6 @@ uninstall-am: uninstall-pngDATA
$(png_images): hotdogs.pts # $(top_builddir)/examples/mgl_example
$(top_builddir)/examples/mgl_example -kind=${@:.png=}
- if test ! -d ../../png; then mkdir ../../png/; fi
cp ${@} ../../png/
touch $(srcdir)/../mathgl.texi
--
Packaging for mathgl
More information about the debian-science-commits
mailing list