[SCM] Packaging for mathgl branch, master, updated. debian/2.0.3-1-15-gc68f3d4
Dimitrios Eftaxiopoulos
eftaxi12 at otenet.gr
Sat Sep 15 01:46:38 UTC 2012
The following commit has been merged in the master branch:
commit c68f3d4631d4351c9805e046947700b8500d068b
Author: Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr>
Date: Sat Sep 15 04:27:37 2012 +0300
Clean source tree after branch merging
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 75415b9..db2c551 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,31 +6,31 @@ set(MathGL_VERSION_MAJOR 2)
set(MathGL_VERSION_MINOR 0)
option(enable-double "Enable double precision in MathGL library" ON)
-option(enable-simple "Slightly increase drawing speed but disable mglDataA class" OFF)
-option(enable-mpi "Enable mpi" ON)
-option(enable-all "Enable all features" ON)
-option(enable-langall "Enable all language interfaces" ON)
+option(enable-simple "Slightly increase drawing speed but disable mglDataA class")
+option(enable-mpi "Enable mpi")
+option(enable-all "Enable all features")
+option(enable-langall "Enable all language interfaces")
option(enable-lgpl "Enable only LGPL part of MathGL" OFF)
# option(enable-ltdl "Enable loading modules support")
-option(enable-pthread "Enable POSIX threads support" ON)
-option(enable-gsl "Enable gsl support" ON)
-option(enable-jpeg "Enable jpeg support" ON)
+option(enable-pthread "Enable POSIX threads support")
+option(enable-gsl "Enable gsl support")
+option(enable-jpeg "Enable jpeg support")
option(enable-png "Enable png support" ON)
option(enable-zlib "Enable zlib support" ON)
#option(enable-u3d "Enable u3d support")
-option(enable-pdf "Enable pdf support" ON)
-option(enable-gif "Enable gif support" ON)
-option(enable-hdf4 "Enable hdf4 support" ON)
+option(enable-pdf "Enable pdf support")
+option(enable-gif "Enable gif support")
+option(enable-hdf4 "Enable hdf4 support")
option(enable-hdf5 "Enable hdf5 1.6 support")
-option(enable-hdf5_18 "Enable hdf5 1.8 support" ON)
+option(enable-hdf5_18 "Enable hdf5 1.8 support")
option(enable-opengl "Enable OpenGL support" ON)
-option(enable-glut "Enable glut support" ON)
-option(enable-fltk "Enable fltk widget" ON)
-option(enable-wx "Enable wxWidget widget" ON)
-option(enable-qt "Enable Qt4 widget" ON)
-option(enable-python "Enable python interface" ON)
-option(enable-octave "Enable octave interface" ON)
-option(enable-doc "Enable documentation building" ON)
+option(enable-glut "Enable glut support")
+option(enable-fltk "Enable fltk widget")
+option(enable-wx "Enable wxWidget widget")
+option(enable-qt "Enable Qt4 widget")
+option(enable-python "Enable python interface")
+option(enable-octave "Enable octave interface")
+option(enable-doc "Enable documentation building")
include_directories( ${MathGL_SOURCE_DIR}/include ${MathGL_BINARY_DIR}/include)
diff --git a/debian/changelog.orig b/debian/changelog.orig
deleted file mode 100644
index 4dc213e..0000000
--- a/debian/changelog.orig
+++ /dev/null
@@ -1,435 +0,0 @@
-<<<<<<< HEAD
-mathgl (1.11.2-14) unstable; urgency=low
-
- * Make several libmgl-wx5 related symbols optional in order to fix FTBFS on
- several arches.
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Thu, 10 May 2012 22:19:03 +0300
-
-mathgl (1.11.2-13) unstable; urgency=low
-
- * Make several libmgl-qt5 related symbols optional in order to fix FTBFS on
- several arches.
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Thu, 10 May 2012 19:12:22 +0300
-
-mathgl (1.11.2-12) unstable; urgency=low
-
- * Make more libmgl5 related symbols optional in order to fix FTBFS on several
- arches.
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Thu, 10 May 2012 16:09:18 +0300
-
-mathgl (1.11.2-11) unstable; urgency=low
-
- * Update symbols files in order to fix FTBFS (Closes: #671964)
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Tue, 08 May 2012 20:18:59 +0300
-
-mathgl (1.11.2-10) unstable; urgency=low
-
- * Replace octave3.2-headers with liboctave-dev in Build-Depends in
- debian/control (Closes: #666753).
- * Add zlib1g (>= 1.2.6) to Depends of libmgl5 to deal with a symbol export
- problem in earlier versions of mgl, which is not being seen by
- debhelper's shlib expansion (spotted by D. Haley).
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Fri, 6 Apr 2012 18:03:00 +0300
-
-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> Sun, 26 Feb 2012 09:23: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 (2.0.3-1) unstable; urgency=low
-
- * New upstream release.
- * Add mpi-default-dev to build dependencies.
- * Add patch for lang/setup.py.in to enable python to read directory tree
- written in utf-8 (not ascii) encoding.
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Tue, 11 Sep 2012 21:19:08 +0300
-
-mathgl (2.0-1) experimental; urgency=low
-
- * Add udav manpage.
- * Add descriptions for the two patches.
- * Strip debian revision numbers from symbols in symbols files.
- * New upstream release.
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Wed, 18 Apr 2012 17:17:00 +0200
-
-mathgl (2~rc2+svn403-1) experimental; urgency=low
-
- * Updated source from svn repository.
- * Replace octave3.2-headers with liboctave-dev in build deps.
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Sun, 8 Apr 2012 20:49:00 +0200
-
-mathgl (2~rc2+svn400-1) experimental; urgency=low
-
- * Updated source from svn repository.
- * Fix installation of manpages for mglview, mglvonv and mgl.
- * Rename mathgl-doc binary to mathgl-doc-en.
- * Update symbols for libmgl-glut6.
- * Fix installation directory in doc-base file mathgl-doc-en.
- * Fix library package names to reflect soname.
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Sun, 1 Apr 2012 04:04:00 +0200
-
-mathgl (2~rc2+svn387-1) experimental; urgency=low
-
- * Updated source from svn repository.
- * Fix installation directory of python module and files.
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Tue, 27 Mar 2012 17:29:00 +0200
-
-mathgl (2~rc2+svn383-1) experimental; urgency=low
-
- * Updated source from svn repository.
- * Add udav, libmgl-glut and mathgl-doc packages.
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Mon, 26 Mar 2012 15:35:00 +0200
-
-mathgl (2~rc2-1) experimental; urgency=low
-
- * Updated source from svn repository.
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Tue, 6 Mar 2012 17:22:00 +0200
-
-mathgl (2~rc1-4) unreleased; urgency=low
-
- * Fix symbols FTBFS on armhf.
- * Make build dependency on libhdf5-dev only.
- * Make python-mathgl depend on python-numpy-abi9.
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Wed, 22 Feb 2012 19:39:00 +0200
-
-mathgl (2~rc1-3) experimental; urgency=low
-
- * Fix symbols FTBFS, related to libmgl-wnd6, on several arches.
- * Make libmgl-dev dependent on libmgl-wnd6.
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Wed, 4 Jan 2012 20:16:00 +0200
-
-mathgl (2~rc1-2) experimental; urgency=low
-
- * Correct typo in mathgl description in debian/control (Closes: #644863).
- * Try to fix symbols FTBFS on several arches.
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Wed, 4 Jan 2012 15:30:00 +0200
-
-mathgl (2~rc1-1) experimental; urgency=low
-
- * New experimental upstream release (Closes: #632468).
- * No documentation debian packages provided.
-
- -- Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr> Wed, 28 Sep 2011 11:30:00 +0300
->>>>>>> experimental
-
-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).
-<<<<<<< HEAD
- * Ammend symbols files for ia64, sparc and sh4 architectures (Closes: 642654).
-=======
- * Ammend symbols files for ia64, sparc and sh4 architectures (Closes: #642654).
->>>>>>> experimental
-
- -- 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.orig b/debian/control.orig
deleted file mode 100644
index 0466090..0000000
--- a/debian/control.orig
+++ /dev/null
@@ -1,179 +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
-<<<<<<< HEAD
-Build-Depends: debhelper (>= 7.2.3~), libltdl-dev, libgsl0-dev, freeglut3-dev,
- libgl1-mesa-dev | libgl-dev, libpng-dev, libhdf5-dev, gawk, swig,
- libjpeg-dev, libtiff-dev, libfltk1.3-dev | libfltk-dev, libqt4-dev, libwxgtk2.8-dev,
- texinfo, texi2html, texlive, texlive-generic-recommended, liboctave-dev,
- libgif-dev, autoconf, automake, python, python-dev, python-numpy, python-support,
- libhdf4-dev, chrpath
-=======
-Build-Depends: debhelper (>= 7.2.3~), libltdl-dev, libgsl0-dev, freeglut3-dev,
- libgl1-mesa-dev | libgl-dev, libpng-dev, libhdf5-dev, swig, cmake, libxft-dev,
- libjpeg-dev, libtiff-dev, libfltk1.3-dev, libqt4-dev, libwxgtk2.8-dev,
- texinfo, texi2html, texlive, texlive-generic-recommended, liboctave-dev,
- libgif-dev, python, python-dev, python-numpy, python-support, libfontconfig1-dev,
- libhdf4-dev, chrpath, libxinerama-dev, libxmu-dev, libxi-dev, libhpdf-dev,
- mpi-default-dev
->>>>>>> experimental
-Standards-Version: 3.9.3
-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}, libmgl6.0.0 (= ${binary:Version})
-Description: library for scientific graphs. (utilities 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: udav
-Architecture: any
-Section: libs
-Depends: ${shlibs:Depends}, ${misc:Depends}, libmgl6.0.0 (= ${binary:Version})
-Description: library for scientific graphs. (window interface)
- 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 udav window environment based on mathgl.
-
-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.
-
-Package: libmgl6.0.0
-Architecture: any
-Section: libs
-Depends: ${shlibs:Depends}, ${misc:Depends}, libmgl-data, zlib1g (>= 1.2.6)
-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.
-
-<<<<<<< HEAD
-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
-=======
-Package: libmgl-wnd6.0.0
->>>>>>> experimental
-Architecture: any
-Section: libs
-Depends: ${shlibs:Depends}, ${misc:Depends}, libmgl-data
-Description: library for scientific graphs. (windows 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 window opening related shared object files.
-
-Package: libmgl-glut6.0.0
-Architecture: any
-Section: libs
-Depends: ${shlibs:Depends}, ${misc:Depends}, libmgl-data
-Description: library for scientific graphs. (glut interface for windows)
- 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 glut interface shared object files for window
- opening.
-
-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: libmgl6.0.0 (= ${binary:Version}), libmgl-wnd6.0.0 (= ${binary:Version}),
- ${misc:Depends}, libgsl0-dev, libgl1-mesa-dev | libgl-dev, libpng-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: 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/patches/series.orig b/debian/patches/series.orig
deleted file mode 100644
index 1167984..0000000
--- a/debian/patches/series.orig
+++ /dev/null
@@ -1,15 +0,0 @@
-<<<<<<< HEAD
-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
-dircategory-and-direntry-mgl-en-texi.patch
-correct-spelling-error-in-nympy-i.patch
-texinfo-Makefile.patch
-=======
-lang-CMakeLists-txt.patch
-CMakeLists-txt.patch
-lang-setup-py-in.patch
->>>>>>> experimental
diff --git a/debian/source/options b/debian/source/options
deleted file mode 100644
index 6058341..0000000
--- a/debian/source/options
+++ /dev/null
@@ -1 +0,0 @@
- extend-diff-ignore = "(^|/)(install_manifest\.txt|include/mgl/config\.h)$"
\ No newline at end of file
diff --git a/debian/source/options.orig b/debian/source/options.orig
deleted file mode 100644
index 0d9493a..0000000
--- a/debian/source/options.orig
+++ /dev/null
@@ -1,5 +0,0 @@
-<<<<<<< HEAD
- extend-diff-ignore = "(^|/)(config\.log|texinfo/mgl_ru\.info-1|texinfo/mgl_ru\.info-2|Makefile\.in|aclocal\.m4|configure|examples/Makefile\.in|include/Makefile\.in|lang/Makefile\.in|mgl/Makefile\.in|texinfo/Makefile\.in|texinfo/png/Makefile\.in|utils/Makefile\.in|widgets/Makefile\.in)$"
-=======
- extend-diff-ignore = "(^|/)(install_manifest\.txt|include/mgl/config\.h)$"
->>>>>>> experimental
diff --git a/include/mgl/config.h b/include/mgl/config.h
deleted file mode 100644
index cc599d2..0000000
--- a/include/mgl/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-/* This define enables double precision in MathGL */
-#define MGL_USE_DOUBLE 1
-
diff --git a/install_manifest.txt b/install_manifest.txt
deleted file mode 100644
index 92e77f9..0000000
--- a/install_manifest.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-/usr/local/share/mathgl/fonts/STIX_b.vfm
-/usr/local/share/mathgl/fonts/STIX.vfm
-/usr/local/share/mathgl/fonts/STIX_bi.vfm
-/usr/local/share/mathgl/fonts/STIX_i.vfm
-/usr/local/lib/libmgl.so.6.0.0
-/usr/local/lib/libmgl.so
-/usr/local/lib/libmgl.a
-/usr/local/lib/libmgl-wnd.so.6.0.0
-/usr/local/lib/libmgl-wnd.so
-/usr/local/lib/libmgl-wnd.a
-/usr/local/bin/mglconv
-/usr/local/bin/mgl_example
-/usr/local/include/mgl/fit.h
-/usr/local/include/mgl/mgl.h
-/usr/local/include/mgl/evalc.h
-/usr/local/include/mgl/base_cf.h
-/usr/local/include/mgl/vect.h
-/usr/local/include/mgl/font.h
-/usr/local/include/mgl/type.h
-/usr/local/include/mgl/volume.h
-/usr/local/include/mgl/surf.h
-/usr/local/include/mgl/canvas_cf.h
-/usr/local/include/mgl/canvas.h
-/usr/local/include/mgl/eval.h
-/usr/local/include/mgl/other.h
-/usr/local/include/mgl/addon.h
-/usr/local/include/mgl/config.h
-/usr/local/include/mgl/config.h.in
-/usr/local/include/mgl/plot.h
-/usr/local/include/mgl/define.h
-/usr/local/include/mgl/mgl_cf.h
-/usr/local/include/mgl/base.h
-/usr/local/include/mgl/opengl.h
-/usr/local/include/mgl/cont.h
-/usr/local/include/mgl/prim.h
-/usr/local/include/mgl/parser.h
-/usr/local/include/mgl/window.h
-/usr/local/include/mgl/data.h
diff --git a/lang/CMakeLists.txt b/lang/CMakeLists.txt
index bec7d4b..cfdc3a7 100644
--- a/lang/CMakeLists.txt
+++ b/lang/CMakeLists.txt
@@ -43,7 +43,7 @@ if(MGL_HAVE_PYTHON)
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/lang
)
add_custom_target(mgl_python_module ALL DEPENDS _mathgl.so mathgl.py)
- install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_BINARY_DIR}/lang/setup.py install --prefix=${CMAKE_SOURCE_DIR}/debian/tmp/usr --install-layout=deb WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/lang )")
+ install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_BINARY_DIR}/lang/setup.py install --prefix=${CMAKE_INSTALL_PREFIX} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/lang )")
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "mgl_wrap.cpp;build;mathgl.pyc")
endif(MGL_HAVE_PYTHON)
diff --git a/lang/numpy.i.in.orig b/lang/numpy.i.in.orig
deleted file mode 100644
index 4f74663..0000000
--- a/lang/numpy.i.in.orig
+++ /dev/null
@@ -1,1638 +0,0 @@
-/* -*- C -*- (not really, but good for syntax highlighting) */
-#ifdef SWIGPYTHON
-
-%{
-#ifndef SWIG_FILE_WITH_INIT
-# define NO_IMPORT_ARRAY
-#endif
-#include "stdio.h"
-#include <numpy/arrayobject.h>
-%}
-
-/**********************************************************************/
-
-%fragment("NumPy_Backward_Compatibility", "header")
-{
-/* Support older NumPy data type names
-*/
-%#if NDARRAY_VERSION < 0x01000000
-%#define NPY_BOOL PyArray_BOOL
-%#define NPY_BYTE PyArray_BYTE
-%#define NPY_UBYTE PyArray_UBYTE
-%#define NPY_SHORT PyArray_SHORT
-%#define NPY_USHORT PyArray_USHORT
-%#define NPY_INT PyArray_INT
-%#define NPY_UINT PyArray_UINT
-%#define NPY_LONG PyArray_LONG
-%#define NPY_ULONG PyArray_ULONG
-%#define NPY_LONGLONG PyArray_LONGLONG
-%#define NPY_ULONGLONG PyArray_ULONGLONG
-%#define NPY_FLOAT PyArray_FLOAT
-%#define NPY_DOUBLE PyArray_DOUBLE
-%#define NPY_LONGDOUBLE PyArray_LONGDOUBLE
-%#define NPY_CFLOAT PyArray_CFLOAT
-%#define NPY_CDOUBLE PyArray_CDOUBLE
-%#define NPY_CLONGDOUBLE PyArray_CLONGDOUBLE
-%#define NPY_OBJECT PyArray_OBJECT
-%#define NPY_STRING PyArray_STRING
-%#define NPY_UNICODE PyArray_UNICODE
-%#define NPY_VOID PyArray_VOID
-%#define NPY_NTYPES PyArray_NTYPES
-%#define NPY_NOTYPE PyArray_NOTYPE
-%#define NPY_CHAR PyArray_CHAR
-%#define NPY_USERDEF PyArray_USERDEF
-%#define npy_intp intp
-
-%#define NPY_MAX_BYTE MAX_BYTE
-%#define NPY_MIN_BYTE MIN_BYTE
-%#define NPY_MAX_UBYTE MAX_UBYTE
-%#define NPY_MAX_SHORT MAX_SHORT
-%#define NPY_MIN_SHORT MIN_SHORT
-%#define NPY_MAX_USHORT MAX_USHORT
-%#define NPY_MAX_INT MAX_INT
-%#define NPY_MIN_INT MIN_INT
-%#define NPY_MAX_UINT MAX_UINT
-%#define NPY_MAX_LONG MAX_LONG
-%#define NPY_MIN_LONG MIN_LONG
-%#define NPY_MAX_ULONG MAX_ULONG
-%#define NPY_MAX_LONGLONG MAX_LONGLONG
-%#define NPY_MIN_LONGLONG MIN_LONGLONG
-%#define NPY_MAX_ULONGLONG MAX_ULONGLONG
-%#define NPY_MAX_INTP MAX_INTP
-%#define NPY_MIN_INTP MIN_INTP
-
-%#define NPY_FARRAY FARRAY
-%#define NPY_F_CONTIGUOUS F_CONTIGUOUS
-%#endif
-}
-
-/**********************************************************************/
-
-/* The following code originally appeared in
- * enthought/kiva/agg/src/numeric.i written by Eric Jones. It was
- * translated from C++ to C by John Hunter. Bill Spotz has modified
- * it to fix some minor bugs, upgrade from Numeric to numpy (all
- * versions), add some comments and functionality, and convert from
- * direct code insertion to SWIG fragments.
- */
-
-%fragment("NumPy_Macros", "header")
-{
-/* Macros to extract array attributes.
- */
-%#define is_array(a) ((a) && PyArray_Check((PyArrayObject *)a))
-%#define array_type(a) (int)(PyArray_TYPE(a))
-%#define array_numdims(a) (((PyArrayObject *)a)->nd)
-%#define array_dimensions(a) (((PyArrayObject *)a)->dimensions)
-%#define array_size(a,i) (((PyArrayObject *)a)->dimensions[i])
-%#define array_data(a) (((PyArrayObject *)a)->data)
-%#define array_is_contiguous(a) (PyArray_ISCONTIGUOUS(a))
-%#define array_is_native(a) (PyArray_ISNOTSWAPPED(a))
-%#define array_is_fortran(a) (PyArray_ISFORTRAN(a))
-}
-
-/**********************************************************************/
-
-%fragment("NumPy_Utilities", "header")
-{
- /* Given a PyObject, return a string describing its type.
- */
- char* pytype_string(PyObject* py_obj) {
- if (py_obj == NULL ) return "C NULL value";
- if (py_obj == Py_None ) return "Python None" ;
- if (PyCallable_Check(py_obj)) return "callable" ;
- if (PyString_Check( py_obj)) return "string" ;
- if (PyInt_Check( py_obj)) return "int" ;
- if (PyFloat_Check( py_obj)) return "float" ;
- if (PyDict_Check( py_obj)) return "dict" ;
- if (PyList_Check( py_obj)) return "list" ;
- if (PyTuple_Check( py_obj)) return "tuple" ;
- if (PyFile_Check( py_obj)) return "file" ;
- if (PyModule_Check( py_obj)) return "module" ;
- if (PyInstance_Check(py_obj)) return "instance" ;
-
-<<<<<<< HEAD:lang/numpy.i
- return "unkown type";
-=======
- return "unknow type";
->>>>>>> experimental:lang/numpy.i.in
- }
-
- /* Given a NumPy typecode, return a string describing the type.
- */
- char* typecode_string(int typecode) {
- static char* type_names[25] = {"bool", "byte", "unsigned byte",
- "short", "unsigned short", "int",
- "unsigned int", "long", "unsigned long",
- "long long", "unsigned long long",
- "float", "double", "long double",
- "complex float", "complex double",
- "complex long double", "object",
- "string", "unicode", "void", "ntypes",
- "notype", "char", "unknown"};
- return typecode < 24 ? type_names[typecode] : type_names[24];
- }
-
- /* Make sure input has correct numpy type. Allow character and byte
- * to match. Also allow int and long to match. This is deprecated.
- * You should use PyArray_EquivTypenums() instead.
- */
- int type_match(int actual_type, int desired_type) {
- return PyArray_EquivTypenums(actual_type, desired_type);
- }
-}
-
-/**********************************************************************/
-
-%fragment("NumPy_Object_to_Array", "header",
- fragment="NumPy_Backward_Compatibility",
- fragment="NumPy_Macros",
- fragment="NumPy_Utilities")
-{
- /* Given a PyObject pointer, cast it to a PyArrayObject pointer if
- * legal. If not, set the python error string appropriately and
- * return NULL.
- */
- PyArrayObject* obj_to_array_no_conversion(PyObject* input, int typecode)
- {
- PyArrayObject* ary = NULL;
- if (is_array(input) && (typecode == NPY_NOTYPE ||
- PyArray_EquivTypenums(array_type(input), typecode)))
- {
- ary = (PyArrayObject*) input;
- }
- else if is_array(input)
- {
- char* desired_type = typecode_string(typecode);
- char* actual_type = typecode_string(array_type(input));
- PyErr_Format(PyExc_TypeError,
- "Array of type '%s' required. Array of type '%s' given",
- desired_type, actual_type);
- ary = NULL;
- }
- else
- {
- char * desired_type = typecode_string(typecode);
- char * actual_type = pytype_string(input);
- PyErr_Format(PyExc_TypeError,
- "Array of type '%s' required. A '%s' was given",
- desired_type, actual_type);
- ary = NULL;
- }
- return ary;
- }
-
- /* Convert the given PyObject to a NumPy array with the given
- * typecode. On success, return a valid PyArrayObject* with the
- * correct type. On failure, the python error string will be set and
- * the routine returns NULL.
- */
- PyArrayObject* obj_to_array_allow_conversion(PyObject* input, int typecode,
- int* is_new_object)
- {
- PyArrayObject* ary = NULL;
- PyObject* py_obj;
- if (is_array(input) && (typecode == NPY_NOTYPE ||
- PyArray_EquivTypenums(array_type(input),typecode)))
- {
- ary = (PyArrayObject*) input;
- *is_new_object = 0;
- }
- else
- {
- py_obj = PyArray_FROMANY(input, typecode, 0, 0, NPY_DEFAULT);
- /* If NULL, PyArray_FromObject will have set python error value.*/
- ary = (PyArrayObject*) py_obj;
- *is_new_object = 1;
- }
- return ary;
- }
-
- /* Given a PyArrayObject, check to see if it is contiguous. If so,
- * return the input pointer and flag it as not a new object. If it is
- * not contiguous, create a new PyArrayObject using the original data,
- * flag it as a new object and return the pointer.
- */
- PyArrayObject* make_contiguous(PyArrayObject* ary, int* is_new_object,
- int min_dims, int max_dims)
- {
- PyArrayObject* result;
- if (array_is_contiguous(ary))
- {
- result = ary;
- *is_new_object = 0;
- }
- else
- {
- result = (PyArrayObject*) PyArray_ContiguousFromObject((PyObject*)ary,
- array_type(ary),
- min_dims,
- max_dims);
- *is_new_object = 1;
- }
- return result;
- }
-
- /* Given a PyArrayObject, check to see if it is Fortran-contiguous.
- * If so, return the input pointer, but do not flag it as not a new
- * object. If it is not Fortran-contiguous, create a new
- * PyArrayObject using the original data, flag it as a new object
- * and return the pointer.
- */
- PyArrayObject* make_fortran(PyArrayObject* ary, int* is_new_object,
- int min_dims, int max_dims)
- {
- PyArrayObject* result;
- if (array_is_fortran(ary))
- {
- result = ary;
- *is_new_object = 0;
- }
- else
- {
- Py_INCREF(ary->descr);
- result = (PyArrayObject*) PyArray_FromArray(ary, ary->descr, NPY_FORTRAN);
- *is_new_object = 1;
- }
- return result;
- }
-
- /* Convert a given PyObject to a contiguous PyArrayObject of the
- * specified type. If the input object is not a contiguous
- * PyArrayObject, a new one will be created and the new object flag
- * will be set.
- */
- PyArrayObject* obj_to_array_contiguous_allow_conversion(PyObject* input,
- int typecode,
- int* is_new_object)
- {
- int is_new1 = 0;
- int is_new2 = 0;
- PyArrayObject* ary2;
- PyArrayObject* ary1 = obj_to_array_allow_conversion(input, typecode,
- &is_new1);
- if (ary1)
- {
- ary2 = make_contiguous(ary1, &is_new2, 0, 0);
- if ( is_new1 && is_new2)
- {
- Py_DECREF(ary1);
- }
- ary1 = ary2;
- }
- *is_new_object = is_new1 || is_new2;
- return ary1;
- }
-
- /* Convert a given PyObject to a Fortran-ordered PyArrayObject of the
- * specified type. If the input object is not a Fortran-ordered
- * PyArrayObject, a new one will be created and the new object flag
- * will be set.
- */
- PyArrayObject* obj_to_array_fortran_allow_conversion(PyObject* input,
- int typecode,
- int* is_new_object)
- {
- int is_new1 = 0;
- int is_new2 = 0;
- PyArrayObject* ary2;
- PyArrayObject* ary1 = obj_to_array_allow_conversion(input, typecode,
- &is_new1);
- if (ary1)
- {
- ary2 = make_fortran(ary1, &is_new2, 0, 0);
- if (is_new1 && is_new2)
- {
- Py_DECREF(ary1);
- }
- ary1 = ary2;
- }
- *is_new_object = is_new1 || is_new2;
- return ary1;
- }
-
-} /* end fragment */
-
-
-/**********************************************************************/
-
-%fragment("NumPy_Array_Requirements", "header",
- fragment="NumPy_Backward_Compatibility",
- fragment="NumPy_Macros")
-{
- /* Test whether a python object is contiguous. If array is
- * contiguous, return 1. Otherwise, set the python error string and
- * return 0.
- */
- int require_contiguous(PyArrayObject* ary)
- {
- int contiguous = 1;
- if (!array_is_contiguous(ary))
- {
- PyErr_SetString(PyExc_TypeError,
- "Array must be contiguous. A non-contiguous array was given");
- contiguous = 0;
- }
- return contiguous;
- }
-
- /* Require that a numpy array is not byte-swapped. If the array is
- * not byte-swapped, return 1. Otherwise, set the python error string
- * and return 0.
- */
- int require_native(PyArrayObject* ary)
- {
- int native = 1;
- if (!array_is_native(ary))
- {
- PyErr_SetString(PyExc_TypeError,
- "Array must have native byteorder. "
- "A byte-swapped array was given");
- native = 0;
- }
- return native;
- }
-
- /* Require the given PyArrayObject to have a specified number of
- * dimensions. If the array has the specified number of dimensions,
- * return 1. Otherwise, set the python error string and return 0.
- */
- int require_dimensions(PyArrayObject* ary, int exact_dimensions)
- {
- int success = 1;
- if (array_numdims(ary) != exact_dimensions)
- {
- PyErr_Format(PyExc_TypeError,
- "Array must have %d dimensions. Given array has %d dimensions",
- exact_dimensions, array_numdims(ary));
- success = 0;
- }
- return success;
- }
-
- /* Require the given PyArrayObject to have one of a list of specified
- * number of dimensions. If the array has one of the specified number
- * of dimensions, return 1. Otherwise, set the python error string
- * and return 0.
- */
- int require_dimensions_n(PyArrayObject* ary, int* exact_dimensions, int n)
- {
- int success = 0;
- int i;
- char dims_str[255] = "";
- char s[255];
- for (i = 0; i < n && !success; i++)
- {
- if (array_numdims(ary) == exact_dimensions[i])
- {
- success = 1;
- }
- }
- if (!success)
- {
- for (i = 0; i < n-1; i++)
- {
- sprintf(s, "%d, ", exact_dimensions[i]);
- strcat(dims_str,s);
- }
- sprintf(s, " or %d", exact_dimensions[n-1]);
- strcat(dims_str,s);
- PyErr_Format(PyExc_TypeError,
- "Array must have %s dimensions. Given array has %d dimensions",
- dims_str, array_numdims(ary));
- }
- return success;
- }
-
- /* Require the given PyArrayObject to have a specified shape. If the
- * array has the specified shape, return 1. Otherwise, set the python
- * error string and return 0.
- */
- int require_size(PyArrayObject* ary, npy_intp* size, int n)
- {
- int i;
- int success = 1;
- int len;
- char desired_dims[255] = "[";
- char s[255];
- char actual_dims[255] = "[";
- for(i=0; i < n;i++)
- {
- if (size[i] != -1 && size[i] != array_size(ary,i))
- {
- success = 0;
- }
- }
- if (!success)
- {
- for (i = 0; i < n; i++)
- {
- if (size[i] == -1)
- {
- sprintf(s, "*,");
- }
- else
- {
- sprintf(s, "%ld,", (long int)size[i]);
- }
- strcat(desired_dims,s);
- }
- len = strlen(desired_dims);
- desired_dims[len-1] = ']';
- for (i = 0; i < n; i++)
- {
- sprintf(s, "%ld,", (long int)array_size(ary,i));
- strcat(actual_dims,s);
- }
- len = strlen(actual_dims);
- actual_dims[len-1] = ']';
- PyErr_Format(PyExc_TypeError,
- "Array must have shape of %s. Given array has shape of %s",
- desired_dims, actual_dims);
- }
- return success;
- }
-
- /* Require the given PyArrayObject to to be FORTRAN ordered. If the
- * the PyArrayObject is already FORTRAN ordered, do nothing. Else,
- * set the FORTRAN ordering flag and recompute the strides.
- */
- int require_fortran(PyArrayObject* ary)
- {
- int success = 1;
- int nd = array_numdims(ary);
- int i;
- if (array_is_fortran(ary)) return success;
- /* Set the FORTRAN ordered flag */
- ary->flags = NPY_FARRAY;
- /* Recompute the strides */
- ary->strides[0] = ary->strides[nd-1];
- for (i=1; i < nd; ++i)
- ary->strides[i] = ary->strides[i-1] * array_size(ary,i-1);
- return success;
- }
-}
-
-/* Combine all NumPy fragments into one for convenience */
-%fragment("NumPy_Fragments", "header",
- fragment="NumPy_Backward_Compatibility",
- fragment="NumPy_Macros",
- fragment="NumPy_Utilities",
- fragment="NumPy_Object_to_Array",
- fragment="NumPy_Array_Requirements") { }
-
-/* End John Hunter translation (with modifications by Bill Spotz)
- */
-
-/* %numpy_typemaps() macro
- *
- * This macro defines a family of 41 typemaps that allow C arguments
- * of the form
- *
- * (DATA_TYPE IN_ARRAY1[ANY])
- * (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
- * (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
- *
- * (DATA_TYPE IN_ARRAY2[ANY][ANY])
- * (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- * (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
- * (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- * (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
- *
- * (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
- * (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- * (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_ARRAY3)
- * (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- * (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
- *
- * (DATA_TYPE INPLACE_ARRAY1[ANY])
- * (DATA_TYPE* INPLACE_ARRAY1, DIM_TYPE DIM1)
- * (DIM_TYPE DIM1, DATA_TYPE* INPLACE_ARRAY1)
- *
- * (DATA_TYPE INPLACE_ARRAY2[ANY][ANY])
- * (DATA_TYPE* INPLACE_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- * (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_ARRAY2)
- * (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- * (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
- *
- * (DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY])
- * (DATA_TYPE* INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- * (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_ARRAY3)
- * (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- * (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_FARRAY3)
- *
- * (DATA_TYPE ARGOUT_ARRAY1[ANY])
- * (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
- * (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1)
- *
- * (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY])
- *
- * (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
- *
- * (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1)
- * (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEW_ARRAY1)
- *
- * (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
- * (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_ARRAY2)
- * (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
- * (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_FARRAY2)
- *
- * (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
- * (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_ARRAY3)
- * (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
- * (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_FARRAY3)
- *
- * where "DATA_TYPE" is any type supported by the NumPy module, and
- * "DIM_TYPE" is any int-like type suitable for specifying dimensions.
- * The difference between "ARRAY" typemaps and "FARRAY" typemaps is
- * that the "FARRAY" typemaps expect FORTRAN ordering of
- * multidimensional arrays. In python, the dimensions will not need
- * to be specified (except for the "DATA_TYPE* ARGOUT_ARRAY1"
- * typemaps). The IN_ARRAYs can be a numpy array or any sequence that
- * can be converted to a numpy array of the specified type. The
- * INPLACE_ARRAYs must be numpy arrays of the appropriate type. The
- * ARGOUT_ARRAYs will be returned as new numpy arrays of the
- * appropriate type.
- *
- * These typemaps can be applied to existing functions using the
- * %apply directive. For example:
- *
- * %apply (double* IN_ARRAY1, int DIM1) {(double* series, int length)};
- * double prod(double* series, int length);
- *
- * %apply (int DIM1, int DIM2, double* INPLACE_ARRAY2)
- * {(int rows, int cols, double* matrix )};
- * void floor(int rows, int cols, double* matrix, double f);
- *
- * %apply (double IN_ARRAY3[ANY][ANY][ANY])
- * {(double tensor[2][2][2] )};
- * %apply (double ARGOUT_ARRAY3[ANY][ANY][ANY])
- * {(double low[2][2][2] )};
- * %apply (double ARGOUT_ARRAY3[ANY][ANY][ANY])
- * {(double upp[2][2][2] )};
- * void luSplit(double tensor[2][2][2],
- * double low[2][2][2],
- * double upp[2][2][2] );
- *
- * or directly with
- *
- * double prod(double* IN_ARRAY1, int DIM1);
- *
- * void floor(int DIM1, int DIM2, double* INPLACE_ARRAY2, double f);
- *
- * void luSplit(double IN_ARRAY3[ANY][ANY][ANY],
- * double ARGOUT_ARRAY3[ANY][ANY][ANY],
- * double ARGOUT_ARRAY3[ANY][ANY][ANY]);
- */
-
-%define %numpy_typemaps(DATA_TYPE, DATA_TYPECODE, DIM_TYPE)
-
-/************************/
-/* Input Array Typemaps */
-/************************/
-
-/* Typemap suite for (DATA_TYPE IN_ARRAY1[ANY])
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE IN_ARRAY1[ANY])
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE IN_ARRAY1[ANY])
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[1] = { $1_dim0 };
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 1) ||
- !require_size(array, size, 1)) SWIG_fail;
- $1 = ($1_ltype) array_data(array);
-}
-%typemap(freearg)
- (DATA_TYPE IN_ARRAY1[ANY])
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[1] = { -1 };
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 1) ||
- !require_size(array, size, 1)) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
- $2 = (DIM_TYPE) array_size(array,0);
-}
-%typemap(freearg)
- (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[1] = {-1};
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 1) ||
- !require_size(array, size, 1)) SWIG_fail;
- $1 = (DIM_TYPE) array_size(array,0);
- $2 = (DATA_TYPE*) array_data(array);
-}
-%typemap(freearg)
- (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE IN_ARRAY2[ANY][ANY])
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE IN_ARRAY2[ANY][ANY])
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE IN_ARRAY2[ANY][ANY])
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[2] = { $1_dim0, $1_dim1 };
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 2) ||
- !require_size(array, size, 2)) SWIG_fail;
- $1 = ($1_ltype) array_data(array);
-}
-%typemap(freearg)
- (DATA_TYPE IN_ARRAY2[ANY][ANY])
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[2] = { -1, -1 };
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 2) ||
- !require_size(array, size, 2)) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
- $2 = (DIM_TYPE) array_size(array,0);
- $3 = (DIM_TYPE) array_size(array,1);
-}
-%typemap(freearg)
- (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[2] = { -1, -1 };
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 2) ||
- !require_size(array, size, 2)) SWIG_fail;
- $1 = (DIM_TYPE) array_size(array,0);
- $2 = (DIM_TYPE) array_size(array,1);
- $3 = (DATA_TYPE*) array_data(array);
-}
-%typemap(freearg)
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[2] = { -1, -1 };
- array = obj_to_array_fortran_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 2) ||
- !require_size(array, size, 2) || !require_fortran(array)) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
- $2 = (DIM_TYPE) array_size(array,0);
- $3 = (DIM_TYPE) array_size(array,1);
-}
-%typemap(freearg)
- (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[2] = { -1, -1 };
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 2) ||
- !require_size(array, size, 2) || !require_fortran(array)) SWIG_fail;
- $1 = (DIM_TYPE) array_size(array,0);
- $2 = (DIM_TYPE) array_size(array,1);
- $3 = (DATA_TYPE*) array_data(array);
-}
-%typemap(freearg)
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[3] = { $1_dim0, $1_dim1, $1_dim2 };
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 3) ||
- !require_size(array, size, 3)) SWIG_fail;
- $1 = ($1_ltype) array_data(array);
-}
-%typemap(freearg)
- (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
- * DIM_TYPE DIM3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[3] = { -1, -1, -1 };
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 3) ||
- !require_size(array, size, 3)) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
- $2 = (DIM_TYPE) array_size(array,0);
- $3 = (DIM_TYPE) array_size(array,1);
- $4 = (DIM_TYPE) array_size(array,2);
-}
-%typemap(freearg)
- (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
- * DATA_TYPE* IN_ARRAY3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_ARRAY3)
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_ARRAY3)
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[3] = { -1, -1, -1 };
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 3) ||
- !require_size(array, size, 3)) SWIG_fail;
- $1 = (DIM_TYPE) array_size(array,0);
- $2 = (DIM_TYPE) array_size(array,1);
- $3 = (DIM_TYPE) array_size(array,2);
- $4 = (DATA_TYPE*) array_data(array);
-}
-%typemap(freearg)
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_ARRAY3)
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
- * DIM_TYPE DIM3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[3] = { -1, -1, -1 };
- array = obj_to_array_fortran_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 3) ||
- !require_size(array, size, 3) | !require_fortran(array)) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
- $2 = (DIM_TYPE) array_size(array,0);
- $3 = (DIM_TYPE) array_size(array,1);
- $4 = (DIM_TYPE) array_size(array,2);
-}
-%typemap(freearg)
- (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
- * DATA_TYPE* IN_FARRAY3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
-{
- $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
- (PyArrayObject* array=NULL, int is_new_object=0)
-{
- npy_intp size[3] = { -1, -1, -1 };
- array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
- &is_new_object);
- if (!array || !require_dimensions(array, 3) ||
- !require_size(array, size, 3) || !require_fortran(array)) SWIG_fail;
- $1 = (DIM_TYPE) array_size(array,0);
- $2 = (DIM_TYPE) array_size(array,1);
- $3 = (DIM_TYPE) array_size(array,2);
- $4 = (DATA_TYPE*) array_data(array);
-}
-%typemap(freearg)
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
-{
- if (is_new_object$argnum && array$argnum)
- { Py_DECREF(array$argnum); }
-}
-
-/***************************/
-/* In-Place Array Typemaps */
-/***************************/
-
-/* Typemap suite for (DATA_TYPE INPLACE_ARRAY1[ANY])
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE INPLACE_ARRAY1[ANY])
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE INPLACE_ARRAY1[ANY])
- (PyArrayObject* array=NULL)
-{
- npy_intp size[1] = { $1_dim0 };
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,1) || !require_size(array, size, 1) ||
- !require_contiguous(array) || !require_native(array)) SWIG_fail;
- $1 = ($1_ltype) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE* INPLACE_ARRAY1, DIM_TYPE DIM1)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE* INPLACE_ARRAY1, DIM_TYPE DIM1)
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE* INPLACE_ARRAY1, DIM_TYPE DIM1)
- (PyArrayObject* array=NULL, int i=1)
-{
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,1) || !require_contiguous(array)
- || !require_native(array)) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
- $2 = 1;
- for (i=0; i < array_numdims(array); ++i) $2 *= array_size(array,i);
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DATA_TYPE* INPLACE_ARRAY1)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DIM_TYPE DIM1, DATA_TYPE* INPLACE_ARRAY1)
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DATA_TYPE* INPLACE_ARRAY1)
- (PyArrayObject* array=NULL, int i=0)
-{
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,1) || !require_contiguous(array)
- || !require_native(array)) SWIG_fail;
- $1 = 1;
- for (i=0; i < array_numdims(array); ++i) $1 *= array_size(array,i);
- $2 = (DATA_TYPE*) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE INPLACE_ARRAY2[ANY][ANY])
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE INPLACE_ARRAY2[ANY][ANY])
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE INPLACE_ARRAY2[ANY][ANY])
- (PyArrayObject* array=NULL)
-{
- npy_intp size[2] = { $1_dim0, $1_dim1 };
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,2) || !require_size(array, size, 2) ||
- !require_contiguous(array) || !require_native(array)) SWIG_fail;
- $1 = ($1_ltype) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE* INPLACE_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE* INPLACE_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE* INPLACE_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- (PyArrayObject* array=NULL)
-{
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,2) || !require_contiguous(array)
- || !require_native(array)) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
- $2 = (DIM_TYPE) array_size(array,0);
- $3 = (DIM_TYPE) array_size(array,1);
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_ARRAY2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_ARRAY2)
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_ARRAY2)
- (PyArrayObject* array=NULL)
-{
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,2) || !require_contiguous(array) ||
- !require_native(array)) SWIG_fail;
- $1 = (DIM_TYPE) array_size(array,0);
- $2 = (DIM_TYPE) array_size(array,1);
- $3 = (DATA_TYPE*) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- (PyArrayObject* array=NULL)
-{
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,2) || !require_contiguous(array)
- || !require_native(array) || !require_fortran(array)) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
- $2 = (DIM_TYPE) array_size(array,0);
- $3 = (DIM_TYPE) array_size(array,1);
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
- (PyArrayObject* array=NULL)
-{
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,2) || !require_contiguous(array) ||
- !require_native(array) || !require_fortran(array)) SWIG_fail;
- $1 = (DIM_TYPE) array_size(array,0);
- $2 = (DIM_TYPE) array_size(array,1);
- $3 = (DATA_TYPE*) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY])
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY])
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY])
- (PyArrayObject* array=NULL)
-{
- npy_intp size[3] = { $1_dim0, $1_dim1, $1_dim2 };
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,3) || !require_size(array, size, 3) ||
- !require_contiguous(array) || !require_native(array)) SWIG_fail;
- $1 = ($1_ltype) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE* INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
- * DIM_TYPE DIM3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE* INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE* INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- (PyArrayObject* array=NULL)
-{
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,3) || !require_contiguous(array) ||
- !require_native(array)) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
- $2 = (DIM_TYPE) array_size(array,0);
- $3 = (DIM_TYPE) array_size(array,1);
- $4 = (DIM_TYPE) array_size(array,2);
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
- * DATA_TYPE* INPLACE_ARRAY3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_ARRAY3)
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_ARRAY3)
- (PyArrayObject* array=NULL)
-{
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,3) || !require_contiguous(array)
- || !require_native(array)) SWIG_fail;
- $1 = (DIM_TYPE) array_size(array,0);
- $2 = (DIM_TYPE) array_size(array,1);
- $3 = (DIM_TYPE) array_size(array,2);
- $4 = (DATA_TYPE*) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
- * DIM_TYPE DIM3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- (PyArrayObject* array=NULL)
-{
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,3) || !require_contiguous(array) ||
- !require_native(array) || !require_fortran(array)) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
- $2 = (DIM_TYPE) array_size(array,0);
- $3 = (DIM_TYPE) array_size(array,1);
- $4 = (DIM_TYPE) array_size(array,2);
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
- * DATA_TYPE* INPLACE_FARRAY3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
- fragment="NumPy_Macros")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_FARRAY3)
-{
- $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
- DATA_TYPECODE);
-}
-%typemap(in,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_FARRAY3)
- (PyArrayObject* array=NULL)
-{
- array = obj_to_array_no_conversion($input, DATA_TYPECODE);
- if (!array || !require_dimensions(array,3) || !require_contiguous(array)
- || !require_native(array) || !require_fortran(array)) SWIG_fail;
- $1 = (DIM_TYPE) array_size(array,0);
- $2 = (DIM_TYPE) array_size(array,1);
- $3 = (DIM_TYPE) array_size(array,2);
- $4 = (DATA_TYPE*) array_data(array);
-}
-
-/*************************/
-/* Argout Array Typemaps */
-/*************************/
-
-/* Typemap suite for (DATA_TYPE ARGOUT_ARRAY1[ANY])
- */
-%typemap(in,numinputs=0,
- fragment="NumPy_Backward_Compatibility,NumPy_Macros")
- (DATA_TYPE ARGOUT_ARRAY1[ANY])
- (PyObject * array = NULL)
-{
- npy_intp dims[1] = { $1_dim0 };
- array = PyArray_SimpleNew(1, dims, DATA_TYPECODE);
- if (!array) SWIG_fail;
- $1 = ($1_ltype) array_data(array);
-}
-%typemap(argout)
- (DATA_TYPE ARGOUT_ARRAY1[ANY])
-{
- $result = SWIG_Python_AppendOutput($result,array$argnum);
-}
-
-/* Typemap suite for (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
- */
-%typemap(in,numinputs=1,
- fragment="NumPy_Fragments")
- (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
- (PyObject * array = NULL)
-{
- npy_intp dims[1];
- if (!PyInt_Check($input))
- {
- char* typestring = pytype_string($input);
- PyErr_Format(PyExc_TypeError,
- "Int dimension expected. '%s' given.",
- typestring);
- SWIG_fail;
- }
- $2 = (DIM_TYPE) PyInt_AsLong($input);
- dims[0] = (npy_intp) $2;
- array = PyArray_SimpleNew(1, dims, DATA_TYPECODE);
- if (!array) SWIG_fail;
- $1 = (DATA_TYPE*) array_data(array);
-}
-%typemap(argout)
- (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
-{
- $result = SWIG_Python_AppendOutput($result,array$argnum);
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1)
- */
-%typemap(in,numinputs=1,
- fragment="NumPy_Fragments")
- (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1)
- (PyObject * array = NULL)
-{
- npy_intp dims[1];
- if (!PyInt_Check($input))
- {
- char* typestring = pytype_string($input);
- PyErr_Format(PyExc_TypeError,
- "Int dimension expected. '%s' given.",
- typestring);
- SWIG_fail;
- }
- $1 = (DIM_TYPE) PyInt_AsLong($input);
- dims[0] = (npy_intp) $1;
- array = PyArray_SimpleNew(1, dims, DATA_TYPECODE);
- if (!array) SWIG_fail;
- $2 = (DATA_TYPE*) array_data(array);
-}
-%typemap(argout)
- (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1)
-{
- $result = SWIG_Python_AppendOutput($result,array$argnum);
-}
-
-/* Typemap suite for (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY])
- */
-%typemap(in,numinputs=0,
- fragment="NumPy_Backward_Compatibility,NumPy_Macros")
- (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY])
- (PyObject * array = NULL)
-{
- npy_intp dims[2] = { $1_dim0, $1_dim1 };
- array = PyArray_SimpleNew(2, dims, DATA_TYPECODE);
- if (!array) SWIG_fail;
- $1 = ($1_ltype) array_data(array);
-}
-%typemap(argout)
- (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY])
-{
- $result = SWIG_Python_AppendOutput($result,array$argnum);
-}
-
-/* Typemap suite for (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
- */
-%typemap(in,numinputs=0,
- fragment="NumPy_Backward_Compatibility,NumPy_Macros")
- (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
- (PyObject * array = NULL)
-{
- npy_intp dims[3] = { $1_dim0, $1_dim1, $1_dim2 };
- array = PyArray_SimpleNew(3, dims, DATA_TYPECODE);
- if (!array) SWIG_fail;
- $1 = ($1_ltype) array_data(array);
-}
-%typemap(argout)
- (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
-{
- $result = SWIG_Python_AppendOutput($result,array$argnum);
-}
-
-/*****************************/
-/* Argoutview Array Typemaps */
-/*****************************/
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1)
- */
-%typemap(in,numinputs=0)
- (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1 )
- (DATA_TYPE* data_temp , DIM_TYPE dim_temp)
-{
- $1 = &data_temp;
- $2 = &dim_temp;
-}
-%typemap(argout,
- fragment="NumPy_Backward_Compatibility")
- (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1)
-{
- npy_intp dims[1] = { *$2 };
- PyObject * array = PyArray_SimpleNewFromData(1, dims, DATA_TYPECODE, (void*)(*$1));
- if (!array) SWIG_fail;
- $result = SWIG_Python_AppendOutput($result,array);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEW_ARRAY1)
- */
-%typemap(in,numinputs=0)
- (DIM_TYPE* DIM1 , DATA_TYPE** ARGOUTVIEW_ARRAY1)
- (DIM_TYPE dim_temp, DATA_TYPE* data_temp )
-{
- $1 = &dim_temp;
- $2 = &data_temp;
-}
-%typemap(argout,
- fragment="NumPy_Backward_Compatibility")
- (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEW_ARRAY1)
-{
- npy_intp dims[1] = { *$1 };
- PyObject * array = PyArray_SimpleNewFromData(1, dims, DATA_TYPECODE, (void*)(*$2));
- if (!array) SWIG_fail;
- $result = SWIG_Python_AppendOutput($result,array);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
- */
-%typemap(in,numinputs=0)
- (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1 , DIM_TYPE* DIM2 )
- (DATA_TYPE* data_temp , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp)
-{
- $1 = &data_temp;
- $2 = &dim1_temp;
- $3 = &dim2_temp;
-}
-%typemap(argout,
- fragment="NumPy_Backward_Compatibility")
- (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
-{
- npy_intp dims[2] = { *$2, *$3 };
- PyObject * array = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$1));
- if (!array) SWIG_fail;
- $result = SWIG_Python_AppendOutput($result,array);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_ARRAY2)
- */
-%typemap(in,numinputs=0)
- (DIM_TYPE* DIM1 , DIM_TYPE* DIM2 , DATA_TYPE** ARGOUTVIEW_ARRAY2)
- (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DATA_TYPE* data_temp )
-{
- $1 = &dim1_temp;
- $2 = &dim2_temp;
- $3 = &data_temp;
-}
-%typemap(argout,
- fragment="NumPy_Backward_Compatibility")
- (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_ARRAY2)
-{
- npy_intp dims[2] = { *$1, *$2 };
- PyObject * array = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$3));
- if (!array) SWIG_fail;
- $result = SWIG_Python_AppendOutput($result,array);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
- */
-%typemap(in,numinputs=0)
- (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1 , DIM_TYPE* DIM2 )
- (DATA_TYPE* data_temp , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp)
-{
- $1 = &data_temp;
- $2 = &dim1_temp;
- $3 = &dim2_temp;
-}
-%typemap(argout,
- fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
- (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
-{
- npy_intp dims[2] = { *$2, *$3 };
- PyObject * obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$1));
- PyArrayObject * array = (PyArrayObject*) obj;
- if (!array || !require_fortran(array)) SWIG_fail;
- $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_FARRAY2)
- */
-%typemap(in,numinputs=0)
- (DIM_TYPE* DIM1 , DIM_TYPE* DIM2 , DATA_TYPE** ARGOUTVIEW_FARRAY2)
- (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DATA_TYPE* data_temp )
-{
- $1 = &dim1_temp;
- $2 = &dim2_temp;
- $3 = &data_temp;
-}
-%typemap(argout,
- fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
- (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_FARRAY2)
-{
- npy_intp dims[2] = { *$1, *$2 };
- PyObject * obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$3));
- PyArrayObject * array = (PyArrayObject*) obj;
- if (!array || !require_fortran(array)) SWIG_fail;
- $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
- DIM_TYPE* DIM3)
- */
-%typemap(in,numinputs=0)
- (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
- (DATA_TYPE* data_temp, DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp)
-{
- $1 = &data_temp;
- $2 = &dim1_temp;
- $3 = &dim2_temp;
- $4 = &dim3_temp;
-}
-%typemap(argout,
- fragment="NumPy_Backward_Compatibility")
- (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
-{
- npy_intp dims[3] = { *$2, *$3, *$4 };
- PyObject * array = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$1));
- if (!array) SWIG_fail;
- $result = SWIG_Python_AppendOutput($result,array);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3,
- DATA_TYPE** ARGOUTVIEW_ARRAY3)
- */
-%typemap(in,numinputs=0)
- (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_ARRAY3)
- (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DATA_TYPE* data_temp)
-{
- $1 = &dim1_temp;
- $2 = &dim2_temp;
- $3 = &dim3_temp;
- $4 = &data_temp;
-}
-%typemap(argout,
- fragment="NumPy_Backward_Compatibility")
- (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_ARRAY3)
-{
- npy_intp dims[3] = { *$1, *$2, *$3 };
- PyObject * array = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$3));
- if (!array) SWIG_fail;
- $result = SWIG_Python_AppendOutput($result,array);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
- DIM_TYPE* DIM3)
- */
-%typemap(in,numinputs=0)
- (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
- (DATA_TYPE* data_temp, DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp)
-{
- $1 = &data_temp;
- $2 = &dim1_temp;
- $3 = &dim2_temp;
- $4 = &dim3_temp;
-}
-%typemap(argout,
- fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
- (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
-{
- npy_intp dims[3] = { *$2, *$3, *$4 };
- PyObject * obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$1));
- PyArrayObject * array = (PyArrayObject*) obj;
- if (!array || require_fortran(array)) SWIG_fail;
- $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3,
- DATA_TYPE** ARGOUTVIEW_FARRAY3)
- */
-%typemap(in,numinputs=0)
- (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_FARRAY3)
- (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DATA_TYPE* data_temp)
-{
- $1 = &dim1_temp;
- $2 = &dim2_temp;
- $3 = &dim3_temp;
- $4 = &data_temp;
-}
-%typemap(argout,
- fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
- (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_FARRAY3)
-{
- npy_intp dims[3] = { *$1, *$2, *$3 };
- PyObject * obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$3));
- PyArrayObject * array = (PyArrayObject*) obj;
- if (!array || require_fortran(array)) SWIG_fail;
- $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-%enddef /* %numpy_typemaps() macro */
-/* *************************************************************** */
-
-/* Concrete instances of the %numpy_typemaps() macro: Each invocation
- * below applies all of the typemaps above to the specified data type.
- */
-%numpy_typemaps(signed char , NPY_BYTE , int)
-%numpy_typemaps(unsigned char , NPY_UBYTE , int)
-%numpy_typemaps(short , NPY_SHORT , int)
-%numpy_typemaps(unsigned short , NPY_USHORT , int)
-%numpy_typemaps(int , NPY_INT , int)
-%numpy_typemaps(unsigned int , NPY_UINT , int)
-%numpy_typemaps(long , NPY_LONG , int)
-%numpy_typemaps(unsigned long , NPY_ULONG , int)
-%numpy_typemaps(long long , NPY_LONGLONG , int)
-%numpy_typemaps(unsigned long long, NPY_ULONGLONG, int)
-%numpy_typemaps(float , NPY_FLOAT , int)
-%numpy_typemaps(double , NPY_DOUBLE , int)
-
-/* ***************************************************************
- * The follow macro expansion does not work, because C++ bool is 4
- * bytes and NPY_BOOL is 1 byte
- *
- * %numpy_typemaps(bool, NPY_BOOL, int)
- */
-
-/* ***************************************************************
- * On my Mac, I get the following warning for this macro expansion:
- * 'swig/python detected a memory leak of type 'long double *', no destructor found.'
- *
- * %numpy_typemaps(long double, NPY_LONGDOUBLE, int)
- */
-
-/* ***************************************************************
- * Swig complains about a syntax error for the following macro
- * expansions:
- *
- * %numpy_typemaps(complex float, NPY_CFLOAT , int)
- *
- * %numpy_typemaps(complex double, NPY_CDOUBLE, int)
- *
- * %numpy_typemaps(complex long double, NPY_CLONGDOUBLE, int)
- */
-
-#endif /* SWIGPYTHON */
diff --git a/lang/setup.py.in b/lang/setup.py.in
index 44c5730..05edce4 100644
--- a/lang/setup.py.in
+++ b/lang/setup.py.in
@@ -1,5 +1,4 @@
from distutils.core import setup, Extension
-# -*- encoding: utf-8 -*-
import os
mgl_i="${MGL_I}"
diff --git a/texinfo/mathgl_en.texi b/texinfo/mathgl_en.texi
index a423a14..fdbf3fa 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 c @dircategory MathGL documentation system
- at c @direntry
- at c * MathGL: (mathgl). The library for scientific graphics.
- at c @end direntry
+ at dircategory MathGL documentation system
+ at direntry
+* MathGL: (mathgl). The library for scientific graphics.
+ at end direntry
@titlepage
@title MathGL
diff --git a/texinfo/mathgl_ru.texi b/texinfo/mathgl_ru.texi
index fbd46a3..e2133b8 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 c @dircategory MathGL documentation system
- at c @direntry
- at c * MathGL: (mathgl). The library for scientific graphics.
- at c @end direntry
+ at dircategory MathGL documentation system
+ at direntry
+* MathGL: (mathgl). The library for scientific graphics.
+ at end direntry
@titlepage
@title MathGL
diff --git a/texinfo/mgl_en.texi b/texinfo/mgl_en.texi
index 1b09abe..9b8e8a3 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 c @dircategory MathGL documentation system
- at c @direntry
- at c * MathGL: (mathgl). The library for scientific graphics.
- at c @end direntry
+ at dircategory MathGL documentation system
+ at direntry
+* MathGL: (mathgl). The library for scientific graphics.
+ at end direntry
@titlepage
@title MGL script language
diff --git a/texinfo/mgl_ru.info-1 b/texinfo/mgl_ru.info-1
deleted file mode 100644
index e80adfa..0000000
--- a/texinfo/mgl_ru.info-1
+++ /dev/null
@@ -1,7151 +0,0 @@
-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
-
-
-
-Local Variables:
-coding: utf-8
-End:
diff --git a/texinfo/mgl_ru.info-2 b/texinfo/mgl_ru.info-2
deleted file mode 100644
index 31d85f7..0000000
Binary files a/texinfo/mgl_ru.info-2 and /dev/null differ
diff --git a/texinfo/mgl_ru.texi b/texinfo/mgl_ru.texi
index d7db1d8..4bf7574 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 c @dircategory MathGL documentation system
- at c @direntry
- at c * MathGL: (mathgl). The library for scientific graphics.
- at c @end direntry
+ at dircategory MathGL documentation system
+ at direntry
+* MathGL: (mathgl). The library for scientific graphics.
+ at end direntry
@titlepage
@title Язык MGL
--
Packaging for mathgl
More information about the debian-science-commits
mailing list