[SCM] Packaging for mathgl branch, upstream, updated. upstream/1.10.2.1-1-g9f3effd
Dimitrios Eftaxiopoulos
eftaxi12 at otenet.gr
Sun Nov 14 08:28:39 UTC 2010
The following commit has been merged in the upstream branch:
commit 9f3effd9ce39674d836be6edad1f52e87c5c7eeb
Author: Dimitrios Eftaxiopoulos <eftaxi12 at otenet.gr>
Date: Sun Nov 14 02:47:58 2010 +0200
New upstream source 1.11 loaded
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 07cf8fa..8a6141c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -9,6 +9,7 @@ option(enable-pthread "Enable POSIX threads support")
option(enable-gsl "Enable gsl support")
option(enable-jpeg "Enable jpeg support")
option(enable-gif "Enable gif support")
+option(enable-hdf4 "Enable hdf4 support")
option(enable-hdf5 "Enable hdf5 support")
option(enable-hdf5_18 "Enable hdf5 1.8 support")
option(enable-glut "Enable glut support")
@@ -33,6 +34,9 @@ endif(enable-all OR enable-jpeg)
if(enable-all OR enable-gif)
set(use_gif 1)
endif(enable-all OR enable-gif)
+if(enable-all OR enable-hdf4)
+ set(use_hdf4 1)
+endif(enable-all OR enable-hdf4)
if(enable-all OR enable-hdf5)
set(use_hdf5 1)
endif(enable-all OR enable-hdf5)
@@ -106,6 +110,16 @@ if(NOT GIF_FOUND)
endif(use_gif)
endif(NOT GIF_FOUND)
+find_library(HDF4_LIB df mfhdf)
+find_path(HDF4_INCLUDE_DIR hdf/mfhdf.h)
+if(NOT HDF4_LIB OR NOT HDF4_INCLUDE_DIR)
+ if(use_hdf4)
+ message(SEND_ERROR "${HDF4_LIB}")
+ message(SEND_ERROR "${HDF4_INCLUDE_DIR}")
+ message(SEND_ERROR "Couldn't find HDF4 libraries.")
+ endif(use_hdf4)
+endif(NOT HDF4_LIB OR NOT HDF4_INCLUDE_DIR)
+
find_library(HDF5_LIB hdf5)
find_path(HDF5_INCLUDE_DIR hdf5.h)
if(NOT HDF5_LIB OR NOT HDF5_INCLUDE_DIR)
diff --git a/ChangeLog.txt b/ChangeLog.txt
index d7d7da6..d2ad377 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -1,5 +1,63 @@
-1.10.2.1 Released ?? March 2010
- - Add multiline (i.e. separated by \n) text printing.
+1.11 Released 8 November 2010
+ - Add new plot Grad() -- gradient of scalar field by flow threads.
+ - Add new plot QuadPlot() -- plot of irregular quadrangle mesh (like TriPlot()).
+ - Add new plot TriCont[V]() -- contour lines for irregular triangle mesh.
+ - Add gradient filling in Area() and Region() plots if number of specified colors (colors in palette) is equal to 2*number of curves.
+ - Allow 2 colors diagrams (in Bars(), Barh()) -- one for positive, one for negative.
+ - Add style 'f' for Bars(), Barh() which draw diagrams like water-fall ones.
+ - Move argument 'above' of Bars(), Barh() to string (if it contain 'a' symbol).
+ - Add marks '<', '>', '#<', '#>', '#*', '#x', '#+', '#.' for left/right wire/solid triangles, Y sign, squared + and x signs.
+ - Add mini-dash for '=' line style symbol.
+ - Colorbar position can be specified in sch string: '>' - right, '<' - left, '^' - above, '_' - under. If string have 'A' then absolute coordinates is used.
+ - Add "styled" version of SubPlot() for better fitting of subplot according axis/colorbar/title layouts.
+ - Legend coordinates set absolute position if font argument contain 'A' symbol.
+ - Add optional gap for ColumnPlot.
+ - Axis now can have "arrows" at the end by setting arrow style ("AKDTVISO") for Axis().
+ - Add extra text align for axis label if it is located near minimal or maximal axis value.
+ - Allow defining manual array in MGL command argument as [v1,v2,v3,...]. Array can be multidimensional like [[v1,v2],[v3,v4]].
+ - Add functions to MGL by 'func' command.
+ - Add functions mglData::Hankel(), mglData::SinFFT(), mglData::CosFFT(), mglData::FillSample().
+ - Add 's','c','h' symbols for Sine/Cosine/Hankel transforms in functions mglTransform(), mglTransformA().
+ - Add mglData::Roll() for "rolling" data along direction. Improve Swap() function.
+ - Add MGL commands: "insert dat 'dir' [at=0 num=1]", "delete dat 'dir' [at=0 num=1]", "roll Dat 'dir' num".
+ - Now Plot() and Tens() now "accurately" cut off line segments.
+ - Add 'int(x)' function to the expression parser (class mglFormula).
+ - Add \textsc{} for small-caps to TeX parsing.
+ - Now $N is substituted into the second argument of MGL commands 'define', 'defnum', 'defpal', 'defchr'.
+ - Add definitions $a...$z used by the same order as arguments $0...$9.
+ - Add new function SetLegendMarks() to allow multiple marks in Legend() sample.
+ - Add functions GetWarnCode(), mgl_get_warn_code() for getting code of the last warning.
+ - Add possibility to read HDF4 files in mglData.
+ - Now parameter 'cnt' of Flow() and Pipe() is always defined by value of 'num' -- cnt = (num>0)!
+ - Add C/Fortran interface functions for widget features.
+ - Allow to read compressed data files (like, *.dat.gz).
+ - Allow to save compressed files with extensions "eps.gz" and "svgz" as output.
+ - Font files can be compressed now by 'gzip'.
+ - Reduce animation delay to 1 sec.
+ - Add TeX symbol sample in documentation.
+ - Now MathGL use standard random numbers generator: GSL one or simple rand() if NO_GSL is defined.
+ - Now curves always start dashing from zero position.
+ - Restrict usage of original and wrapper classes simultaneously.
+ - Rename MGL command 'grid' to 'grid2' for case of plain grid drawing for data array(s).
+ - Rename MGL command 'set_id' to 'idset'.
+ - Disable color gradient in Vect() by default -- still enabled in VectC(), VectL().
+ - Add extra options/comments for animation parameters in mgl2png.
+ - Update printing in QMathGL.
+ - mglGraphFLTK::Update() now force window redrawing.
+ - Bugfix with newline symbol '\n'
+ - Bugfix with wrong restore previous InPlot() after text with style 'a'.
+ - Bugfix for label position for log-scale axis.
+ - Bugfix for mglData::Insert().
+ - Bugfix for text and marks drawing in OpenGL mode.
+ - Bugfix for T-ticks orientation in Ternary plot.
+ - Bugfix for text position with 'a' option after Rotate().
+ - Bugfix for keeping bold/italic text formatting of next symbol.
+ - Bugfix for Ternary axis with Min.y!=0.
+ - Bugfix for multi-line labels.
+
+
+1.10.2.1 Released 28 March 2010
+ - Add multi-line (i.e. separated by \n) text printing.
- Ticks adjusting now correctly work with log-scaled axis.
- Bug with MGL options including bug with 'legend' option for automatic colors.
- Bug with 'A' option of text style.
@@ -44,6 +102,7 @@
- MGL command 'define' now can define scalar variables, like "define xmin dat.min-1". These variables can be used as later as a number, like "xrange xmin 1".
- Add MGL command 'ranges' for setting plot ranges (like 'axis' command).
- Add MGL commands 'break', 'continue' for improving for-cycles.
+ - Add function in MGL by commands "function 'name' [arg1 arg2 ... arg9]", "return" and modify "call 'name' [arg1 arg2 ... arg9]"
- Add automatic increase of the point numbers in plots by formula with singularities (i.e. like Plot("sin(1/x)");
- Add mglGraph::GetFit() function which return fitted formula.
- Add function mglGraph::Label() for drawing text at arbitrary place of the screen.
diff --git a/Makefile.in b/Makefile.in
index 5700690..9aec9a4 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -149,6 +149,8 @@ GREP = @GREP@
GSL_FLAGS = @GSL_FLAGS@
GSL_LIBS = @GSL_LIBS@
HAVE_SWIG = @HAVE_SWIG@
+HDF4_FLAGS = @HDF4_FLAGS@
+HDF4_LIBS = @HDF4_LIBS@
HDF5_FLAGS = @HDF5_FLAGS@
HDF5_LIBS = @HDF5_LIBS@
INSTALL = @INSTALL@
@@ -169,6 +171,7 @@ LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MGL_AGE = @MGL_AGE@
MGL_CURRENT = @MGL_CURRENT@
+MGL_RELEASE = @MGL_RELEASE@
MGL_REVISION = @MGL_REVISION@
MKDIR_P = @MKDIR_P@
MOC = @MOC@
@@ -353,7 +356,7 @@ distclean-libtool:
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
- @failcom='exit 1'; \
+ @fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
@@ -378,7 +381,7 @@ $(RECURSIVE_TARGETS):
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
- @failcom='exit 1'; \
+ @fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
@@ -542,7 +545,8 @@ distdir: $(DISTFILES)
fi; \
done
-test -n "$(am__skip_mode_fix)" \
- || find "$(distdir)" -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+ || find "$(distdir)" -type d ! -perm -755 \
+ -exec chmod u+rwx,go+rx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
@@ -586,17 +590,17 @@ dist dist-all: distdir
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
- bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lzma*) \
- unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
+ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
*.tar.xz*) \
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
- GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
diff --git a/TODO b/TODO
index c3ae449..27449bb 100644
--- a/TODO
+++ b/TODO
@@ -1,44 +1,59 @@
MathGL (for v.1.11.*)
-c. Colorbar: print more digits for manual arrays ... but avoid overlapping ???
-0. Miss MAJOR labels or decrease its fontsize if labels too close.
+1. Colorbar: print more digits for manual arrays ... but avoid overlapping ???
+
+2. Miss MAJOR labels or decrease its fontsize if labels too close.
Also check that enough digits is printed to distingush the labels
Also allow "time"-labels
Also allow rotate labels if they too dense
-4. Plot for gradients of scalar field (like flow)
-8. Contour label should not rotated on ~180 degree
-
-
-1. Import/Export via GIF (as 3d data) ??? + 16bit PNG ?!!
-2. Plot for isolines of vector fields ???
-3. Cloud by boxes?!
-
-4. Add plot layot -- i.e. reserve space for title and so on ... May be the best way to analyze code itself ???
-5. Try to decrease font size if tick labels overlap ???
-
-6. \dfrac for normal size and centering ???
-7. "Chaos" in area.png (near axis) ???
-
-8. Options "iI_-aA" for colorbar
-9. Hankel transform
-
-10. http://en.wikipedia.org/wiki/Waterfall_chart
-
-AA. New docs:
-- Update documentation (Russian)
+5. Legend in OpenGL mode
+
+11. Update STIX fonts (new release) + create PWT fonts
+12. Problem with \calB and so on (\calH, ...) -- they are present only in italic font :(.
+
+21. INCOMPATIBLE CHANGES!!! swap color and font style in text option ('bR:r' -> 'r:bR')
+22. INCOMPATIBLE CHANGES!!! hide 'dir' argument as ':[xyz]' for cont3, dens3, contf3, grid3 + remove conta, densa, grida, contfa
+23. INCOMPATIBLE!!! Allow slice definition as real: sl<1 ? sl=int(n*sl) : int(sl);
+24. INCOMPATIBLE CHANGES!!! tune colors as {} -- for example, 'b{3}'
+25. INCOMPATIBLE CHANGES!!! hide unused arguments (like "size")
+26. Quaternary diagrams plotted in a tetrahedron: equivalent to ternary diagrams, but in 3D.
+27. Export to X3D
+28. Save glyph then it is used for mglGraphPS -- allow different font family in EPS|SVG ??!
+29. Multithreading by "subplots" -- for parser first of all !!!
+
+30. Sample about pthread using.
+
+32. Regroup pictures in WWW by big classes + combo plots
+
+=========================
+ Later
+
+1. Plot for isolines of vector fields ???
+2. Named arguments in MGL ???
+3. \dfrac for normal size and centering ???
+4. "Chaos" in area.png (near axis) ???
+5. save data coordinates in picture??? -- NO -- slow + a lot of memory!
+6. "Cut off" curves if text is printed along it (for contour labels) ?!?
+7. Allow interpolation in MGL if argument is not integer ???
+8. Check if widget functions can be added to mgl_w.h !?! -- use #define ??!
+9. Add '[' as separator in string ???
+10. Save id of subplots and axis for getting value of click coordinates arbitrary inplot -- fill only part which is overlapped. Clear it at Clf() + update for any Rotate, Aspect, InPlot, SetRanges,
+11. Surface by interpolation for arbitrary points {x,y,z} -- seems to be too complicated :(
+12. Rename 'stl'->'style', 'sch'->'scheme' in MGL docs ???
+13. Add option ':[xyzd]' in color scheme for coloring along coordinate (default 'z') ?!?
+14. Save ALL plot styles for each curve (0...N) for each subplot (0...M) in format \leg{N_M} ?!?
+15. Add TeX command \leg{plot style} for line+mark of specified style.
+16. Import/Export via GIF (as 3d data) ??? + 16bit PNG ?!!
+17. Contour label should not rotated on ~180 degree ?!
+18. The same function for ticks of axis and colorbar ???
+13. Add "colorbar x y ['sch'='' w=1 h=1]" + "colorbar x y dat ['sch'='' w=1 h=1]" -- NO because need w,h !
MathGL (for v.2.?) ???
1. GTK window ???
-3. Interface for Gambas
-4. Interface for Scilab
-7. Converter MGL->C (+ interface for MGL->Fortran by change HMDT->int, HMGL->int, "->');
-10. Derive mglGraphGL from mglGraphPS ??? (see mgl_gl_new.*)
11. Use Hershey as built-in font ???
-
-
FAQ
1. On which things the subplot influence
diff --git a/aclocal.m4 b/aclocal.m4
index 553dd58..846920e 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.11 -*- Autoconf -*-
+# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
@@ -13,8 +13,8 @@
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.64],,
-[m4_warning([this file was generated for autoconf 2.64.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.67],,
+[m4_warning([this file was generated for autoconf 2.67.
You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically `autoreconf'.])])
@@ -2460,7 +2460,7 @@ linux*oldld* | linux*aout* | linux*coff*)
;;
# This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
version_type=linux
need_lib_prefix=no
need_version=no
@@ -3099,7 +3099,7 @@ irix5* | irix6* | nonstopux*)
;;
# This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
lt_cv_deplibs_check_method=pass_all
;;
@@ -3720,7 +3720,7 @@ m4_if([$1], [CXX], [
;;
esac
;;
- linux* | k*bsd*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
case $cc_basename in
KCC*)
# KAI C++ Compiler
@@ -4004,7 +4004,7 @@ m4_if([$1], [CXX], [
_LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
;;
- linux* | k*bsd*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
case $cc_basename in
# old Intel for x86_64 which still supported -KPIC.
ecc*)
@@ -4300,6 +4300,7 @@ dnl Note also adjust exclude_expsyms for C++ above.
fi
supports_anon_versioning=no
case `$LD -v 2>&1` in
+ *GNU\ gold*) supports_anon_versioning=yes ;;
*\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
*\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
*\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
@@ -4391,7 +4392,7 @@ _LT_EOF
_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
;;
- gnu* | linux* | tpf* | k*bsd*-gnu)
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
tmp_diet=no
if test "$host_os" = linux-dietlibc; then
case $cc_basename in
@@ -5871,7 +5872,7 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(inherit_rpath, $1)=yes
;;
- linux* | k*bsd*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
case $cc_basename in
KCC*)
# Kuck and Associates, Inc. (KAI) C++ Compiler
@@ -7878,15 +7879,15 @@ m4_define([lt_dict_filter],
# Generated from ltversion.in.
-# serial 3012 ltversion.m4
+# serial 3017 ltversion.m4
# This file is part of GNU Libtool
-m4_define([LT_PACKAGE_VERSION], [2.2.6])
-m4_define([LT_PACKAGE_REVISION], [1.3012])
+m4_define([LT_PACKAGE_VERSION], [2.2.6b])
+m4_define([LT_PACKAGE_REVISION], [1.3017])
AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.2.6'
-macro_revision='1.3012'
+[macro_version='2.2.6b'
+macro_revision='1.3017'
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
_LT_DECL(, macro_revision, 0)
])
@@ -7999,7 +8000,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.11'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.11], [],
+m4_if([$1], [1.11.1], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -8015,7 +8016,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11])dnl
+[AM_AUTOMAKE_VERSION([1.11.1])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
@@ -8831,6 +8832,14 @@ python2.1 python2.0])
am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
;;
+ *)
+ case $am_py_prefix in
+ /usr|/System*) ;;
+ *)
+ am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
+ ;;
+ esac
+ ;;
esac
])
AC_SUBST([pythondir], [$am_cv_python_pythondir])
@@ -8861,6 +8870,14 @@ python2.1 python2.0])
am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
;;
+ *)
+ case $am_py_exec_prefix in
+ /usr|/System*) ;;
+ *)
+ am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
+ ;;
+ esac
+ ;;
esac
])
AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
diff --git a/configure b/autom4te.cache/output.0
old mode 100755
new mode 100644
similarity index 94%
copy from configure
copy to autom4te.cache/output.0
index 4016c53..26594eb
--- a/configure
+++ b/autom4te.cache/output.0
@@ -1,15 +1,17 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.64 for mathgl 1.10.
-#
-# Report bugs to <mathgl.abalakin at gmail.com>.
-#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software
-# Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
+@%:@! /bin/sh
+@%:@ Guess values for system-dependent variables and create Makefiles.
+@%:@ Generated by GNU Autoconf 2.67 for mathgl 1.10.
+@%:@
+@%:@ Report bugs to <mathgl.abalakin at gmail.com>.
+@%:@
+@%:@
+@%:@ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+@%:@ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+@%:@ Foundation, Inc.
+@%:@
+@%:@
+@%:@ This configure script is free software; the Free Software Foundation
+@%:@ gives unlimited permission to copy, distribute and modify it.
## -------------------- ##
## M4sh Initialization. ##
## -------------------- ##
@@ -24,9 +26,9 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
- case `(set -o) 2>/dev/null` in #(
+ case `(set -o) 2>/dev/null` in @%:@(
*posix*) :
- set -o posix ;; #(
+ set -o posix ;; @%:@(
*) :
;;
esac
@@ -57,7 +59,7 @@ else
as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
as_echo_n_body='eval
arg=$1;
- case $arg in #(
+ case $arg in @%:@(
*"$as_nl"*)
expr "X$arg" : "X\\(.*\\)$as_nl";
arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -89,7 +91,7 @@ fi
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
-case $0 in #((
+case $0 in @%:@((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
@@ -142,9 +144,9 @@ if test "x$CONFIG_SHELL" = x; then
alias -g '\${1+\"\$@\"}'='\"\$@\"'
setopt NO_GLOB_SUBST
else
- case \`(set -o) 2>/dev/null\` in #(
+ case \`(set -o) 2>/dev/null\` in @%:@(
*posix*) :
- set -o posix ;; #(
+ set -o posix ;; @%:@(
*) :
;;
esac
@@ -162,7 +164,7 @@ as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
+
else
exitcode=1; echo positional parameters were not saved.
fi
@@ -178,7 +180,7 @@ else
as_have_required=no
fi
if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
+
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_found=false
@@ -187,7 +189,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
as_found=:
- case $as_dir in #(
+ case $as_dir in @%:@(
/*)
for as_base in sh bash ksh sh5; do
# Try only shells that exist, to save several forks.
@@ -247,36 +249,36 @@ unset CLICOLOR_FORCE GREP_OPTIONS
## --------------------- ##
## M4sh Shell Functions. ##
## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
as_fn_unset ()
{
{ eval $1=; unset $1;}
}
as_unset=as_fn_unset
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
as_fn_set_status ()
{
return $1
-} # as_fn_set_status
+} @%:@ as_fn_set_status
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
as_fn_exit ()
{
set +e
as_fn_set_status $1
exit $1
-} # as_fn_exit
+} @%:@ as_fn_exit
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
as_fn_mkdir_p ()
{
@@ -317,16 +319,16 @@ $as_echo X"$as_dir" |
test -d "$as_dir" && break
done
test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-} # as_fn_mkdir_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
+} @%:@ as_fn_mkdir_p
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
eval 'as_fn_append ()
{
@@ -339,11 +341,11 @@ else
}
fi # as_fn_append
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
eval 'as_fn_arith ()
{
@@ -357,21 +359,21 @@ else
fi # as_fn_arith
-# as_fn_error ERROR [LINENO LOG_FD]
-# ---------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with status $?, using 1 if that was 0.
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
as_fn_error ()
{
- as_status=$?; test $as_status -eq 0 && as_status=1
- if test "$3"; then
- as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
- $as_echo "$as_me: error: $1" >&2
+ $as_echo "$as_me: error: $2" >&2
as_fn_exit $as_status
-} # as_fn_error
+} @%:@ as_fn_error
if expr a : '\(a\)' >/dev/null 2>&1 &&
test "X`expr 00001 : '.*\(...\)'`" = X001; then
@@ -451,7 +453,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
}
ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
+case `echo -n x` in @%:@(((((
-n*)
case `echo 'xy\c'` in
*c*) ECHO_T=' ';; # ECHO_T is single tab character.
@@ -510,10 +512,10 @@ else
if test -d "$1"; then
test -d "$1/.";
else
- case $1 in #(
+ case $1 in @%:@(
-*)set "./$1";;
esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in @%:@((
???[sx]*):;;*)false;;esac;fi
'\'' sh
'
@@ -736,10 +738,11 @@ as_awk_strverscmp='
}
'
-exec 7<&0 </dev/null 6>&1
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
# Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
# so uname gets run too.
ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
@@ -749,7 +752,7 @@ ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
ac_default_prefix=/usr/local
ac_clean_files=
ac_config_libobj_dir=.
-LIBOBJS=
+LIB@&t at OBJS=
cross_compiling=no
subdirs=
MFLAGS=
@@ -803,7 +806,7 @@ ac_includes_default="\
ac_subst_vars='am__EXEEXT_FALSE
am__EXEEXT_TRUE
LTLIBOBJS
-LIBOBJS
+LIB@&t at OBJS
AM_CXXFLAGS
USE_DOCS_FALSE
USE_DOCS_TRUE
@@ -862,6 +865,10 @@ USE_GIF_FALSE
USE_GIF_TRUE
GIF_LIBS
GIF_FLAGS
+USE_HDF4_FALSE
+USE_HDF4_TRUE
+HDF4_LIBS
+HDF4_FLAGS
USE_HDF5_FALSE
USE_HDF5_TRUE
HDF5_LIBS
@@ -958,6 +965,7 @@ INSTALL_PROGRAM
MGL_AGE
MGL_REVISION
MGL_CURRENT
+MGL_RELEASE
target_alias
host_alias
build_alias
@@ -1014,6 +1022,7 @@ enable_gsl
enable_glut
enable_hdf5
enable_hdf5_18
+enable_hdf4
enable_gif
enable_jpeg
enable_fltk
@@ -1101,8 +1110,9 @@ do
fi
case $ac_option in
- *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
- *) ac_optarg=yes ;;
+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *=) ac_optarg= ;;
+ *) ac_optarg=yes ;;
esac
# Accept the important Cygnus configure options, so we can diagnose typos.
@@ -1147,7 +1157,7 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error "invalid feature name: $ac_useropt"
+ as_fn_error $? "invalid feature name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
@@ -1173,7 +1183,7 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error "invalid feature name: $ac_useropt"
+ as_fn_error $? "invalid feature name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
@@ -1377,7 +1387,7 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error "invalid package name: $ac_useropt"
+ as_fn_error $? "invalid package name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
@@ -1393,7 +1403,7 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error "invalid package name: $ac_useropt"
+ as_fn_error $? "invalid package name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
@@ -1423,8 +1433,8 @@ do
| --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
x_libraries=$ac_optarg ;;
- -*) as_fn_error "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information."
+ -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
;;
*=*)
@@ -1432,7 +1442,7 @@ Try \`$0 --help' for more information."
# Reject names that are not valid shell variable names.
case $ac_envvar in #(
'' | [0-9]* | *[!_$as_cr_alnum]* )
- as_fn_error "invalid variable name: \`$ac_envvar'" ;;
+ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
esac
eval $ac_envvar=\$ac_optarg
export $ac_envvar ;;
@@ -1450,13 +1460,13 @@ done
if test -n "$ac_prev"; then
ac_option=--`echo $ac_prev | sed 's/_/-/g'`
- as_fn_error "missing argument to $ac_option"
+ as_fn_error $? "missing argument to $ac_option"
fi
if test -n "$ac_unrecognized_opts"; then
case $enable_option_checking in
no) ;;
- fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
+ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
*) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
esac
fi
@@ -1479,7 +1489,7 @@ do
[\\/$]* | ?:[\\/]* ) continue;;
NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
esac
- as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
+ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
done
# There might be people who depend on the old broken behavior: `$host'
@@ -1493,8 +1503,8 @@ target=$target_alias
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
- $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used." >&2
+ $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used" >&2
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
fi
@@ -1509,9 +1519,9 @@ test "$silent" = yes && exec 6>/dev/null
ac_pwd=`pwd` && test -n "$ac_pwd" &&
ac_ls_di=`ls -di .` &&
ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
- as_fn_error "working directory cannot be determined"
+ as_fn_error $? "working directory cannot be determined"
test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
- as_fn_error "pwd does not report name of working directory"
+ as_fn_error $? "pwd does not report name of working directory"
# Find the source files, if location was not specified.
@@ -1550,11 +1560,11 @@ else
fi
if test ! -r "$srcdir/$ac_unique_file"; then
test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
- as_fn_error "cannot find sources ($ac_unique_file) in $srcdir"
+ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
fi
ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
ac_abs_confdir=`(
- cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
pwd)`
# When building in place, set srcdir=.
if test "$ac_abs_confdir" = "$ac_pwd"; then
@@ -1594,7 +1604,7 @@ Configuration:
--help=short display options specific to this package
--help=recursive display the short help of all the included packages
-V, --version display version information and exit
- -q, --quiet, --silent do not print \`checking...' messages
+ -q, --quiet, --silent do not print \`checking ...' messages
--cache-file=FILE cache test results in FILE [disabled]
-C, --config-cache alias for \`--cache-file=config.cache'
-n, --no-create do not create output files
@@ -1602,9 +1612,9 @@ Configuration:
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
+ @<:@@S|@ac_default_prefix@:>@
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
+ @<:@PREFIX@:>@
By default, \`make install' will install all the files in
\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
@@ -1628,7 +1638,7 @@ Fine tuning of the installation directories:
--infodir=DIR info documentation [DATAROOTDIR/info]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
- --docdir=DIR documentation root [DATAROOTDIR/doc/mathgl]
+ --docdir=DIR documentation root @<:@DATAROOTDIR/doc/mathgl@:>@
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
@@ -1660,10 +1670,10 @@ Optional Features:
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors
- --enable-shared[=PKGS] build shared libraries [default=yes]
- --enable-static[=PKGS] build static libraries [default=yes]
- --enable-fast-install[=PKGS]
- optimize for fast installation [default=yes]
+ --enable-shared@<:@=PKGS@:>@ build shared libraries @<:@default=yes@:>@
+ --enable-static@<:@=PKGS@:>@ build static libraries @<:@default=yes@:>@
+ --enable-fast-install@<:@=PKGS@:>@
+ optimize for fast installation @<:@default=yes@:>@
--disable-libtool-lock avoid locking (might break parallel builds)
--enable-double Turn on double precision in MathGL library
--enable-all Turn on all features
@@ -1673,6 +1683,7 @@ Optional Features:
--enable-glut Turn on glut
--enable-hdf5 Turn on hdf5
--enable-hdf5_18 Turn on hdf5 version 1.8
+ --enable-hdf4 Turn on hdf4
--enable-gif Turn on gif
--enable-jpeg Turn on jpeg
--enable-fltk Turn on fltk
@@ -1686,10 +1697,10 @@ Optional Features:
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --with-pic try to use only PIC/non-PIC objects [default=use
- both]
- --with-gnu-ld assume the C compiler uses GNU ld [default=no]
- --with-qt Path to Qt [Look in PATH and /usr/local/Trolltech]
+ --with-pic try to use only PIC/non-PIC objects @<:@default=use
+ both@:>@
+ --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@
+ --with-qt Path to Qt @<:@Look in PATH and /usr/local/Trolltech@:>@
Some influential environment variables:
CC C compiler command
@@ -1697,13 +1708,13 @@ Some influential environment variables:
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
nonstandard directory <lib dir>
LIBS libraries to pass to the linker, e.g. -l<library>
- CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
you have headers in a nonstandard directory <include dir>
CXX C++ compiler command
CXXFLAGS C++ compiler flags
CPP C preprocessor
CXXCPP C++ preprocessor
- TMPDIR A temporary directory with write access [/tmp]
+ TMPDIR A temporary directory with write access @<:@/tmp@:>@
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
@@ -1772,9 +1783,9 @@ test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
mathgl configure 1.10
-generated by GNU Autoconf 2.64
+generated by GNU Autoconf 2.67
-Copyright (C) 2009 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1785,9 +1796,9 @@ fi
## Autoconf initialization. ##
## ------------------------ ##
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_c_try_compile LINENO
+@%:@ --------------------------
+@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
ac_fn_c_try_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1819,13 +1830,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- return $ac_retval
+ as_fn_set_status $ac_retval
-} # ac_fn_c_try_compile
+} @%:@ ac_fn_c_try_compile
-# ac_fn_cxx_try_compile LINENO
-# ----------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_cxx_try_compile LINENO
+@%:@ ----------------------------
+@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
ac_fn_cxx_try_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1857,13 +1868,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- return $ac_retval
+ as_fn_set_status $ac_retval
-} # ac_fn_cxx_try_compile
+} @%:@ ac_fn_cxx_try_compile
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_c_try_link LINENO
+@%:@ -----------------------
+@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
ac_fn_c_try_link ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1903,26 +1914,26 @@ fi
# left behind by Apple's compiler. We do this before executing the actions.
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- return $ac_retval
+ as_fn_set_status $ac_retval
-} # ac_fn_c_try_link
+} @%:@ ac_fn_c_try_link
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
+@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+@%:@ -------------------------------------------------------
+@%:@ Tests whether HEADER exists and can be compiled using the include files in
+@%:@ INCLUDES, setting the cache variable VAR accordingly.
ac_fn_c_check_header_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
-#include <$2>
+@%:@include <$2>
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
eval "$3=yes"
@@ -1936,11 +1947,11 @@ eval ac_res=\$$3
$as_echo "$ac_res" >&6; }
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-} # ac_fn_c_check_header_compile
+} @%:@ ac_fn_c_check_header_compile
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_c_try_cpp LINENO
+@%:@ ----------------------
+@%:@ Try to preprocess conftest. at S|@ac_ext, and return whether this succeeded.
ac_fn_c_try_cpp ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1959,7 +1970,7 @@ $as_echo "$ac_try_echo"; } >&5
mv -f conftest.er1 conftest.err
fi
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } >/dev/null && {
+ test $ac_status = 0; } > conftest.i && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
}; then :
@@ -1971,14 +1982,14 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- return $ac_retval
+ as_fn_set_status $ac_retval
-} # ac_fn_c_try_cpp
+} @%:@ ac_fn_c_try_cpp
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
+@%:@ ac_fn_c_try_run LINENO
+@%:@ ----------------------
+@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded. Assumes
+@%:@ that executables *can* be run.
ac_fn_c_try_run ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2013,19 +2024,19 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- return $ac_retval
+ as_fn_set_status $ac_retval
-} # ac_fn_c_try_run
+} @%:@ ac_fn_c_try_run
-# ac_fn_c_check_func LINENO FUNC VAR
-# ----------------------------------
-# Tests whether FUNC exists, setting the cache variable VAR accordingly
+@%:@ ac_fn_c_check_func LINENO FUNC VAR
+@%:@ ----------------------------------
+@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly
ac_fn_c_check_func ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -2082,11 +2093,11 @@ eval ac_res=\$$3
$as_echo "$ac_res" >&6; }
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-} # ac_fn_c_check_func
+} @%:@ ac_fn_c_check_func
-# ac_fn_cxx_try_cpp LINENO
-# ------------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_cxx_try_cpp LINENO
+@%:@ ------------------------
+@%:@ Try to preprocess conftest. at S|@ac_ext, and return whether this succeeded.
ac_fn_cxx_try_cpp ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2105,7 +2116,7 @@ $as_echo "$ac_try_echo"; } >&5
mv -f conftest.er1 conftest.err
fi
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } >/dev/null && {
+ test $ac_status = 0; } > conftest.i && {
test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
test ! -s conftest.err
}; then :
@@ -2117,13 +2128,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- return $ac_retval
+ as_fn_set_status $ac_retval
-} # ac_fn_cxx_try_cpp
+} @%:@ ac_fn_cxx_try_cpp
-# ac_fn_cxx_try_link LINENO
-# -------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_cxx_try_link LINENO
+@%:@ -------------------------
+@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
ac_fn_cxx_try_link ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2163,22 +2174,22 @@ fi
# left behind by Apple's compiler. We do this before executing the actions.
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- return $ac_retval
+ as_fn_set_status $ac_retval
-} # ac_fn_cxx_try_link
+} @%:@ ac_fn_cxx_try_link
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
+@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+@%:@ -------------------------------------------------------
+@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using
+@%:@ the include files in INCLUDES and setting the cache variable VAR
+@%:@ accordingly.
ac_fn_c_check_header_mongrel ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ if eval "test \"\${$3+set}\"" = set; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
$as_echo_n "(cached) " >&6
fi
eval ac_res=\$$3
@@ -2191,7 +2202,7 @@ $as_echo_n "checking $2 usability... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
-#include <$2>
+@%:@include <$2>
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
ac_header_compiler=yes
@@ -2207,14 +2218,14 @@ $as_echo "$ac_header_compiler" >&6; }
$as_echo_n "checking $2 presence... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <$2>
+@%:@include <$2>
_ACEOF
if ac_fn_c_try_cpp "$LINENO"; then :
ac_header_preproc=yes
else
ac_header_preproc=no
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
$as_echo "$ac_header_preproc" >&6; }
@@ -2237,17 +2248,15 @@ $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( cat <<\_ASBOX
-## ---------------------------------------- ##
+( $as_echo "## ---------------------------------------- ##
## Report this to mathgl.abalakin at gmail.com ##
-## ---------------------------------------- ##
-_ASBOX
+## ---------------------------------------- ##"
) | sed "s/^/$as_me: WARNING: /" >&2
;;
esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
eval "$3=\$ac_header_compiler"
@@ -2258,13 +2267,13 @@ $as_echo "$ac_res" >&6; }
fi
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-} # ac_fn_c_check_header_mongrel
+} @%:@ ac_fn_c_check_header_mongrel
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by mathgl $as_me 1.10, which was
-generated by GNU Autoconf 2.64. Invocation command line was
+generated by GNU Autoconf 2.67. Invocation command line was
$ $0 $@
@@ -2374,11 +2383,9 @@ trap 'exit_status=$?
{
echo
- cat <<\_ASBOX
-## ---------------- ##
+ $as_echo "## ---------------- ##
## Cache variables. ##
-## ---------------- ##
-_ASBOX
+## ---------------- ##"
echo
# The following way of writing the cache mishandles newlines in values,
(
@@ -2412,11 +2419,9 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
)
echo
- cat <<\_ASBOX
-## ----------------- ##
+ $as_echo "## ----------------- ##
## Output variables. ##
-## ----------------- ##
-_ASBOX
+## ----------------- ##"
echo
for ac_var in $ac_subst_vars
do
@@ -2429,11 +2434,9 @@ _ASBOX
echo
if test -n "$ac_subst_files"; then
- cat <<\_ASBOX
-## ------------------- ##
+ $as_echo "## ------------------- ##
## File substitutions. ##
-## ------------------- ##
-_ASBOX
+## ------------------- ##"
echo
for ac_var in $ac_subst_files
do
@@ -2447,11 +2450,9 @@ _ASBOX
fi
if test -s confdefs.h; then
- cat <<\_ASBOX
-## ----------- ##
+ $as_echo "## ----------- ##
## confdefs.h. ##
-## ----------- ##
-_ASBOX
+## ----------- ##"
echo
cat confdefs.h
echo
@@ -2477,27 +2478,27 @@ $as_echo "/* confdefs.h */" > confdefs.h
# Predefined preprocessor variables.
cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
+@%:@define PACKAGE_NAME "$PACKAGE_NAME"
_ACEOF
cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
_ACEOF
cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
+@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
_ACEOF
cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
+@%:@define PACKAGE_STRING "$PACKAGE_STRING"
_ACEOF
cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
_ACEOF
cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
+@%:@define PACKAGE_URL "$PACKAGE_URL"
_ACEOF
@@ -2506,7 +2507,12 @@ _ACEOF
ac_site_file1=NONE
ac_site_file2=NONE
if test -n "$CONFIG_SITE"; then
- ac_site_file1=$CONFIG_SITE
+ # We do not want a PATH search for config.site.
+ case $CONFIG_SITE in @%:@((
+ -*) ac_site_file1=./$CONFIG_SITE;;
+ */*) ac_site_file1=$CONFIG_SITE;;
+ *) ac_site_file1=./$CONFIG_SITE;;
+ esac
elif test "x$prefix" != xNONE; then
ac_site_file1=$prefix/share/config.site
ac_site_file2=$prefix/etc/config.site
@@ -2517,18 +2523,22 @@ fi
for ac_site_file in "$ac_site_file1" "$ac_site_file2"
do
test "x$ac_site_file" = xNONE && continue
- if test -r "$ac_site_file"; then
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
$as_echo "$as_me: loading site script $ac_site_file" >&6;}
sed 's/^/| /' "$ac_site_file" >&5
- . "$ac_site_file"
+ . "$ac_site_file" \
+ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5 ; }
fi
done
if test -r "$cache_file"; then
- # Some versions of bash will fail to source /dev/null (special
- # files actually), so we avoid doing that.
- if test -f "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special files
+ # actually), so we avoid doing that. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
$as_echo "$as_me: loading cache $cache_file" >&6;}
case $cache_file in
@@ -2597,7 +2607,7 @@ if $ac_cache_corrupted; then
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
fi
## -------------------- ##
## Main body of script. ##
@@ -2611,19 +2621,28 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+MGL_RELEASE=1.10
+
+
ac_aux_dir=
for ac_dir in config "$srcdir"/config; do
- for ac_t in install-sh install.sh shtool; do
- if test -f "$ac_dir/$ac_t"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/$ac_t -c"
- break 2
- fi
- done
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
done
if test -z "$ac_aux_dir"; then
- as_fn_error "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5
fi
# These three variables are undocumented and unsupported,
@@ -2681,7 +2700,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
# Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
+case $as_dir/ in @%:@((
./ | .// | /[cC]/* | \
/etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
@@ -2759,11 +2778,11 @@ am_lf='
'
case `pwd` in
*[\\\"\#\$\&\'\`$am_lf]*)
- as_fn_error "unsafe absolute working directory name" "$LINENO" 5;;
+ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5 ;;
esac
case $srcdir in
*[\\\"\#\$\&\'\`$am_lf\ \ ]*)
- as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+ as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5 ;;
esac
# Do `set' in a subshell so we don't clobber the current shell's
@@ -2785,8 +2804,8 @@ if (
# if, for instance, CONFIG_SHELL is bash and it inherits a
# broken ls alias from the environment. This has actually
# happened. Such a system could not be considered "sane".
- as_fn_error "ls -t appears to fail. Make sure there is not a broken
-alias in your environment" "$LINENO" 5
+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
+alias in your environment" "$LINENO" 5
fi
test "$2" = conftest.file
@@ -2795,8 +2814,8 @@ then
# Ok.
:
else
- as_fn_error "newly created file is older than distributed files!
-Check your system clock" "$LINENO" 5
+ as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -2967,6 +2986,7 @@ IFS=$as_save_IFS
fi
+ test -d ./--version && rmdir ./--version
if test "${ac_cv_path_mkdir+set}" = set; then
MKDIR_P="$ac_cv_path_mkdir -p"
else
@@ -2974,7 +2994,6 @@ fi
# value for MKDIR_P within a source directory, because that will
# break other packages using the cache if that directory is
# removed, or if the value is a relative name.
- test -d ./--version && rmdir ./--version
MKDIR_P="$ac_install_sh -d"
fi
fi
@@ -3033,7 +3052,7 @@ done
$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
set x ${MAKE-make}
ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
cat >conftest.make <<\_ACEOF
@@ -3041,7 +3060,7 @@ SHELL = /bin/sh
all:
@echo '@@@%%%=$(MAKE)=@@@%%%'
_ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
case `${MAKE-make} -f conftest.make 2>/dev/null` in
*@@@%%%=?*=@@@%%%*)
eval ac_cv_prog_make_${ac_make}_set=yes;;
@@ -3075,7 +3094,7 @@ if test "`cd $srcdir && pwd`" != "`pwd`"; then
am__isrc=' -I$(srcdir)'
# test to see if srcdir already configured
if test -f $srcdir/config.status; then
- as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
fi
fi
@@ -3095,12 +3114,12 @@ fi
cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
+@%:@define PACKAGE "$PACKAGE"
_ACEOF
-
+
cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
+@%:@define VERSION "$VERSION"
_ACEOF
# Some tools Automake needs.
@@ -3305,7 +3324,7 @@ if test $ac_prog_rejected = yes; then
# We found a bogon in the path, so make sure we never use it.
set dummy $ac_cv_prog_CC
shift
- if test $# != 0; then
+ if test $@%:@ != 0; then
# We chose a different compiler from the bogus one.
# However, it has the same basename, so the bogon will be chosen
# first if we set CC to just the basename; use the full file name.
@@ -3432,8 +3451,8 @@ fi
test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "no acceptable C compiler found in \$PATH
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5 ; }
# Provide some information about the compiler.
$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
@@ -3454,32 +3473,30 @@ $as_echo "$ac_try_echo"; } >&5
... rest of stderr output deleted ...
10q' conftest.err >conftest.er1
cat conftest.er1 >&5
- rm -f conftest.er1 conftest.err
fi
+ rm -f conftest.er1 conftest.err
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stdio.h>
+
int
main ()
{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
;
return 0;
}
_ACEOF
ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out conftest.out"
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
# The possible output files:
@@ -3541,62 +3558,28 @@ test "$ac_cv_exeext" = no && ac_cv_exeext=
else
ac_file=''
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
if test -z "$ac_file"; then :
- $as_echo "$as_me: failed program was:" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ as_fn_set_status 77
-as_fn_error "C compiler cannot create executables
-See \`config.log' for more details." "$LINENO" 5; }; }
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5 ; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
ac_exeext=$ac_cv_exeext
-# Check that the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
- if { ac_try='./$ac_file'
- { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then
- cross_compiling=no
- else
- if test "$cross_compiling" = maybe; then
- cross_compiling=yes
- else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." "$LINENO" 5; }
- fi
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out conftest.out
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
ac_clean_files=$ac_clean_files_save
-# Check that the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
$as_echo_n "checking for suffix of executables... " >&6; }
if { { ac_try="$ac_link"
@@ -3626,16 +3609,75 @@ done
else
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5 ; }
fi
-rm -f conftest$ac_cv_exeext
+rm -f conftest conftest$ac_cv_exeext
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
$as_echo "$ac_cv_exeext" >&6; }
rm -f conftest.$ac_ext
EXEEXT=$ac_cv_exeext
ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+@%:@include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+ { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if { ac_try='./conftest$ac_cv_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5 ; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
$as_echo_n "checking for suffix of object files... " >&6; }
if test "${ac_cv_objext+set}" = set; then :
@@ -3678,8 +3720,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5 ; }
fi
rm -f conftest.$ac_cv_objext conftest.$ac_ext
fi
@@ -3760,7 +3802,7 @@ main ()
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
-
+
else
ac_c_werror_flag=$ac_save_c_werror_flag
CFLAGS="-g"
@@ -3890,7 +3932,7 @@ $as_echo "unsupported" >&6; } ;;
$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
esac
if test "x$ac_cv_prog_cc_c89" != xno; then :
-
+
fi
ac_ext=c
@@ -3942,9 +3984,9 @@ fi
$as_echo "$_am_result" >&6; }
rm -f confinc confmf
-# Check whether --enable-dependency-tracking was given.
+@%:@ Check whether --enable-dependency-tracking was given.
if test "${enable_dependency_tracking+set}" = set; then :
- enableval=$enable_dependency_tracking;
+ enableval=$enable_dependency_tracking;
fi
if test "x$enable_dependency_tracking" != xno; then
@@ -4077,7 +4119,7 @@ fi
$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
- if
+ if
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
am__fastdepCC_TRUE=
@@ -4218,8 +4260,8 @@ $as_echo "$ac_try_echo"; } >&5
... rest of stderr output deleted ...
10q' conftest.err >conftest.er1
cat conftest.er1 >&5
- rm -f conftest.er1 conftest.err
fi
+ rm -f conftest.er1 conftest.err
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
@@ -4297,7 +4339,7 @@ main ()
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
-
+
else
ac_cxx_werror_flag=$ac_save_cxx_werror_flag
CXXFLAGS="-g"
@@ -4461,7 +4503,7 @@ fi
$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
- if
+ if
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
am__fastdepCXX_TRUE=
@@ -4476,7 +4518,7 @@ fi
# Make sure we can run config.sub.
$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
- as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
$as_echo_n "checking build system type... " >&6; }
@@ -4487,16 +4529,16 @@ else
test "x$ac_build_alias" = x &&
ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
test "x$ac_build_alias" = x &&
- as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
$as_echo "$ac_cv_build" >&6; }
case $ac_cv_build in
*-*-*) ;;
-*) as_fn_error "invalid value of canonical build" "$LINENO" 5;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5 ;;
esac
build=$ac_cv_build
ac_save_IFS=$IFS; IFS='-'
@@ -4521,7 +4563,7 @@ else
ac_cv_host=$ac_cv_build
else
ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
fi
fi
@@ -4529,7 +4571,7 @@ fi
$as_echo "$ac_cv_host" >&6; }
case $ac_cv_host in
*-*-*) ;;
-*) as_fn_error "invalid value of canonical host" "$LINENO" 5;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5 ;;
esac
host=$ac_cv_host
ac_save_IFS=$IFS; IFS='-'
@@ -4830,21 +4872,21 @@ esac
test -z "$AS" && AS=as
-
-
-
+
+
+
test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-
-
+
+
+
test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
+
+
+
@@ -4860,17 +4902,17 @@ esac
-macro_version='2.2.6'
-macro_revision='1.3012'
-
-
-
-
-
-
+macro_version='2.2.6b'
+macro_revision='1.3017'
+
+
+
+
+
+
@@ -4934,7 +4976,7 @@ esac
done
IFS=$as_save_IFS
if test -z "$ac_cv_path_SED"; then
- as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5
+ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
fi
else
ac_cv_path_SED=$SED
@@ -4949,14 +4991,14 @@ $as_echo "$ac_cv_path_SED" >&6; }
test -z "$SED" && SED=sed
Xsed="$SED -e 1s/^X//"
+
+
+
-
-
-
-
-
-
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
@@ -5010,7 +5052,7 @@ esac
done
IFS=$as_save_IFS
if test -z "$ac_cv_path_GREP"; then
- as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
fi
else
ac_cv_path_GREP=$GREP
@@ -5020,7 +5062,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
$as_echo "$ac_cv_path_GREP" >&6; }
GREP="$ac_cv_path_GREP"
-
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
$as_echo_n "checking for egrep... " >&6; }
@@ -5076,7 +5118,7 @@ esac
done
IFS=$as_save_IFS
if test -z "$ac_cv_path_EGREP"; then
- as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
fi
else
ac_cv_path_EGREP=$EGREP
@@ -5087,7 +5129,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
$as_echo "$ac_cv_path_EGREP" >&6; }
EGREP="$ac_cv_path_EGREP"
-
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
$as_echo_n "checking for fgrep... " >&6; }
@@ -5143,7 +5185,7 @@ esac
done
IFS=$as_save_IFS
if test -z "$ac_cv_path_FGREP"; then
- as_fn_error "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
fi
else
ac_cv_path_FGREP=$FGREP
@@ -5154,29 +5196,29 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
$as_echo "$ac_cv_path_FGREP" >&6; }
FGREP="$ac_cv_path_FGREP"
-
+
test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-# Check whether --with-gnu-ld was given.
+@%:@ Check whether --with-gnu-ld was given.
if test "${with_gnu_ld+set}" = set; then :
withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
else
@@ -5259,7 +5301,7 @@ else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
-test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
if test "${lt_cv_prog_gnu_ld+set}" = set; then :
@@ -5282,9 +5324,9 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
@@ -5442,7 +5484,7 @@ esac
fi
fi
-
+
if test "$DUMPBIN" != ":"; then
NM="$DUMPBIN"
fi
@@ -5450,9 +5492,9 @@ fi
test -z "$NM" && NM=nm
-
-
-
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
$as_echo_n "checking the name lister ($NM) interface... " >&6; }
@@ -5461,13 +5503,13 @@ if test "${lt_cv_nm_interface+set}" = set; then :
else
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
- (eval echo "\"\$as_me:5464: $ac_compile\"" >&5)
+ (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&5)
(eval "$ac_compile" 2>conftest.err)
cat conftest.err >&5
- (eval echo "\"\$as_me:5467: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
(eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
cat conftest.err >&5
- (eval echo "\"\$as_me:5470: output\"" >&5)
+ (eval echo "\"\$as_me:__oline__: output\"" >&5)
cat conftest.out >&5
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
lt_cv_nm_interface="MS dumpbin"
@@ -5617,9 +5659,9 @@ $as_echo "none" >&6; }
fi
max_cmd_len=$lt_cv_sys_max_cmd_len
-
-
-
+
+
+
: ${CP="cp -f"}
@@ -5656,9 +5698,9 @@ else
lt_unset=false
fi
-
-
-
+
+
+
# test EBCDIC or ASCII
case `echo X|tr X '\101'` in
@@ -5673,13 +5715,13 @@ case `echo X|tr X '\101'` in
;;
esac
+
+
+
-
-
-
-
-
-
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
$as_echo_n "checking for $LD option to reload object files... " >&6; }
@@ -5706,13 +5748,13 @@ case $host_os in
;;
esac
+
+
+
-
-
-
-
-
-
+
+
+
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
@@ -5930,7 +5972,7 @@ irix5* | irix6* | nonstopux*)
;;
# This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
lt_cv_deplibs_check_method=pass_all
;;
@@ -6016,14 +6058,14 @@ deplibs_check_method=$lt_cv_deplibs_check_method
test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
-
-
-
-
-
-
+
+
+
if test -n "$ac_tool_prefix"; then
@@ -6121,14 +6163,14 @@ fi
test -z "$AR" && AR=ar
test -z "$AR_FLAGS" && AR_FLAGS=cru
+
+
+
-
-
-
-
-
-
+
+
+
if test -n "$ac_tool_prefix"; then
@@ -6225,9 +6267,9 @@ fi
test -z "$STRIP" && STRIP=:
-
-
-
+
+
+
if test -n "$ac_tool_prefix"; then
@@ -6324,9 +6366,9 @@ fi
test -z "$RANLIB" && RANLIB=:
-
-
-
+
+
+
# Determine commands to create old-style static archives.
@@ -6346,38 +6388,38 @@ if test -n "$RANLIB"; then
old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
# If no C compiler was specified, use CC.
LTCC=${LTCC-"$CC"}
@@ -6395,7 +6437,7 @@ $as_echo_n "checking command to parse $NM output from $compiler object... " >&6;
if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then :
$as_echo_n "(cached) " >&6
else
-
+
# These are sane defaults that work on at least a few old systems.
# [They come from Ultrix. What could be older than Ultrix?!! ;)]
@@ -6618,30 +6660,30 @@ $as_echo "ok" >&6; }
fi
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-# Check whether --enable-libtool-lock was given.
+@%:@ Check whether --enable-libtool-lock was given.
if test "${enable_libtool_lock+set}" = set; then :
- enableval=$enable_libtool_lock;
+ enableval=$enable_libtool_lock;
fi
test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
@@ -6670,7 +6712,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 6673 "configure"' > conftest.$ac_ext
+ echo '#line __oline__ "configure"' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -7295,30 +7337,30 @@ else
OTOOL64="$ac_cv_prog_OTOOL64"
fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
@@ -7378,7 +7420,7 @@ fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS="$save_LDFLAGS"
-
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
@@ -7446,26 +7488,26 @@ do
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
Syntax error
_ACEOF
if ac_fn_c_try_cpp "$LINENO"; then :
-
+
else
# Broken: fails on valid input.
continue
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
_ACEOF
if ac_fn_c_try_cpp "$LINENO"; then :
# Broken: success on invalid input.
@@ -7475,18 +7517,18 @@ else
ac_preproc_ok=:
break
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok; then :
break
fi
done
ac_cv_prog_CPP=$CPP
-
+
fi
CPP=$ac_cv_prog_CPP
else
@@ -7505,26 +7547,26 @@ do
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
Syntax error
_ACEOF
if ac_fn_c_try_cpp "$LINENO"; then :
-
+
else
# Broken: fails on valid input.
continue
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
_ACEOF
if ac_fn_c_try_cpp "$LINENO"; then :
# Broken: success on invalid input.
@@ -7534,18 +7576,18 @@ else
ac_preproc_ok=:
break
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok; then :
-
+
else
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5 ; }
fi
ac_ext=c
@@ -7591,7 +7633,7 @@ if test $ac_cv_header_stdc = yes; then
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
$EGREP "memchr" >/dev/null 2>&1; then :
-
+
else
ac_cv_header_stdc=no
fi
@@ -7608,7 +7650,7 @@ if test $ac_cv_header_stdc = yes; then
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
$EGREP "free" >/dev/null 2>&1; then :
-
+
else
ac_cv_header_stdc=no
fi
@@ -7649,7 +7691,7 @@ main ()
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
-
+
else
ac_cv_header_stdc=no
fi
@@ -7662,8 +7704,8 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
$as_echo "$ac_cv_header_stdc" >&6; }
if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
fi
@@ -7674,12 +7716,11 @@ do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
"
-eval as_val=\$$as_ac_Header
- if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
-
+
fi
done
@@ -7691,9 +7732,9 @@ do :
"
if test "x$ac_cv_header_dlfcn_h" = x""yes; then :
cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
+@%:@define HAVE_DLFCN_H 1
_ACEOF
-
+
fi
done
@@ -7830,8 +7871,8 @@ $as_echo "$ac_try_echo"; } >&5
... rest of stderr output deleted ...
10q' conftest.err >conftest.er1
cat conftest.er1 >&5
- rm -f conftest.er1 conftest.err
fi
+ rm -f conftest.er1 conftest.err
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
@@ -7909,7 +7950,7 @@ main ()
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
-
+
else
ac_cxx_werror_flag=$ac_save_cxx_werror_flag
CXXFLAGS="-g"
@@ -8073,7 +8114,7 @@ fi
$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
- if
+ if
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
am__fastdepCXX_TRUE=
@@ -8112,26 +8153,26 @@ do
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
Syntax error
_ACEOF
if ac_fn_cxx_try_cpp "$LINENO"; then :
-
+
else
# Broken: fails on valid input.
continue
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
_ACEOF
if ac_fn_cxx_try_cpp "$LINENO"; then :
# Broken: success on invalid input.
@@ -8141,18 +8182,18 @@ else
ac_preproc_ok=:
break
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok; then :
break
fi
done
ac_cv_prog_CXXCPP=$CXXCPP
-
+
fi
CXXCPP=$ac_cv_prog_CXXCPP
else
@@ -8171,26 +8212,26 @@ do
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
Syntax error
_ACEOF
if ac_fn_cxx_try_cpp "$LINENO"; then :
-
+
else
# Broken: fails on valid input.
continue
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
_ACEOF
if ac_fn_cxx_try_cpp "$LINENO"; then :
# Broken: success on invalid input.
@@ -8200,13 +8241,13 @@ else
ac_preproc_ok=:
break
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok; then :
-
+
else
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -8231,9 +8272,9 @@ fi
-
-
- # Check whether --enable-shared was given.
+
+
+ @%:@ Check whether --enable-shared was given.
if test "${enable_shared+set}" = set; then :
enableval=$enable_shared; p=${PACKAGE-default}
case $enableval in
@@ -8257,14 +8298,14 @@ else
fi
+
+
+
+
-
-
-
-
- # Check whether --enable-static was given.
+ @%:@ Check whether --enable-static was given.
if test "${enable_static+set}" = set; then :
enableval=$enable_static; p=${PACKAGE-default}
case $enableval in
@@ -8288,15 +8329,15 @@ else
fi
+
+
+
+
-
-
-
-
-
-# Check whether --with-pic was given.
+
+@%:@ Check whether --with-pic was given.
if test "${with_pic+set}" = set; then :
withval=$with_pic; pic_mode="$withval"
else
@@ -8307,12 +8348,12 @@ fi
test -z "$pic_mode" && pic_mode=default
+
+
+
-
-
-
- # Check whether --enable-fast-install was given.
+ @%:@ Check whether --enable-fast-install was given.
if test "${enable_fast_install+set}" = set; then :
enableval=$enable_fast_install; p=${PACKAGE-default}
case $enableval in
@@ -8337,12 +8378,12 @@ fi
+
+
+
-
-
-
-
+
# This can be used to rebuild libtool when needed
@@ -8352,42 +8393,42 @@ LIBTOOL_DEPS="$ltmain"
LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
if test -n "${ZSH_VERSION+set}" ; then
@@ -8413,12 +8454,12 @@ fi
$as_echo "$lt_cv_objdir" >&6; }
objdir=$lt_cv_objdir
-
-
-
+
+
+
cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
+@%:@define LT_OBJDIR "$lt_cv_objdir/"
_ACEOF
@@ -8426,14 +8467,14 @@ _ACEOF
+
+
+
-
-
-
-
-
-
+
+
+
@@ -8562,9 +8603,9 @@ else
$as_echo "no" >&6; }
fi
-
-
-
+
+
+
if test -z "$lt_cv_path_MAGIC_CMD"; then
if test -n "$ac_tool_prefix"; then
@@ -8694,8 +8735,12 @@ _lt_linker_boilerplate=`cat conftest.err`
$RM -r conftest*
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
if test -n "$compiler"; then
-
+
lt_prog_compiler_no_builtin_flag=
if test "$GCC" = yes; then
@@ -8719,11 +8764,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8722: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:8726: \$? = $ac_status" >&5
+ echo "$as_me:__oline__: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -8747,9 +8792,9 @@ fi
fi
-
-
-
+
+
+
lt_prog_compiler_wl=
@@ -8888,7 +8933,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
lt_prog_compiler_static='-non_shared'
;;
- linux* | k*bsd*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
case $cc_basename in
# old Intel for x86_64 which still supported -KPIC.
ecc*)
@@ -9025,15 +9070,15 @@ case $host_os in
lt_prog_compiler_pic=
;;
*)
- lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC"
;;
esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
$as_echo "$lt_prog_compiler_pic" >&6; }
-
-
-
+
+
+
#
@@ -9048,7 +9093,7 @@ else
lt_cv_prog_compiler_pic_works=no
ac_outfile=conftest.$ac_objext
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
- lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+ lt_compiler_flag="$lt_prog_compiler_pic@&t@ -DPIC"
# Insert the option either (1) after the last *FLAGS variable, or
# (2) before a word containing "conftest.", or (3) at the end.
# Note that $ac_compile itself does not contain backslashes and begins
@@ -9058,11 +9103,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9061: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:9065: \$? = $ac_status" >&5
+ echo "$as_me:__oline__: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -9090,9 +9135,9 @@ fi
fi
-
-
-
+
+
+
#
@@ -9137,9 +9182,9 @@ else
fi
-
-
-
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
@@ -9163,11 +9208,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9166: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:9170: \$? = $ac_status" >&5
+ echo "$as_me:__oline__: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -9192,9 +9237,9 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
@@ -9218,11 +9263,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9221: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:9225: \$? = $ac_status" >&5
+ echo "$as_me:__oline__: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -9272,9 +9317,9 @@ else
need_locks=no
fi
-
-
-
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
@@ -9361,6 +9406,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
fi
supports_anon_versioning=no
case `$LD -v 2>&1` in
+ *GNU\ gold*) supports_anon_versioning=yes ;;
*\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
*\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
*\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
@@ -9452,7 +9498,7 @@ _LT_EOF
archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
;;
- gnu* | linux* | tpf* | k*bsd*-gnu)
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
tmp_diet=no
if test "$host_os" = linux-dietlibc; then
case $cc_basename in
@@ -9735,7 +9781,7 @@ main ()
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
-
+
lt_aix_libpath_sed='
/Import File Strings/,/^$/ {
/^0/ {
@@ -9775,7 +9821,7 @@ main ()
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
-
+
lt_aix_libpath_sed='
/Import File Strings/,/^$/ {
/^0/ {
@@ -9848,8 +9894,8 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
darwin* | rhapsody*)
-
-
+
+
archive_cmds_need_lc=no
hardcode_direct=no
hardcode_automatic=yes
@@ -9867,7 +9913,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
+
else
ld_shlibs=no
fi
@@ -10008,7 +10054,7 @@ int foo(void) {}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-
+
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
@@ -10274,17 +10320,17 @@ test "$ld_shlibs" = no && can_build_shared=no
with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
#
@@ -10351,159 +10397,159 @@ $as_echo "$archive_cmds_need_lc" >&6; }
esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
@@ -10914,7 +10960,7 @@ linux*oldld* | linux*aout* | linux*coff*)
;;
# This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
version_type=linux
need_lib_prefix=no
need_version=no
@@ -11186,89 +11232,89 @@ if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
@@ -11309,9 +11355,9 @@ elif test "$shlibpath_overrides_runpath" = yes ||
enable_fast_install=needless
fi
-
-
-
+
+
+
if test "x$enable_dlopen" != xyes; then
@@ -11380,11 +11426,11 @@ $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
else
-
+
lt_cv_dlopen="dyld"
lt_cv_dlopen_libs=
lt_cv_dlopen_self=yes
-
+
fi
;;
@@ -11555,19 +11601,19 @@ if test "x$ac_cv_lib_dld_dld_link" = x""yes; then :
lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
fi
-
+
fi
-
+
fi
-
+
fi
-
+
fi
-
+
fi
;;
@@ -11601,7 +11647,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11604 "configure"
+#line __oline__ "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11679,7 +11725,7 @@ _LT_EOF
fi
rm -fr conftest*
-
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
$as_echo "$lt_cv_dlopen_self" >&6; }
@@ -11697,7 +11743,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11700 "configure"
+#line __oline__ "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11775,7 +11821,7 @@ _LT_EOF
fi
rm -fr conftest*
-
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
$as_echo "$lt_cv_dlopen_self_static" >&6; }
@@ -11798,22 +11844,22 @@ $as_echo "$lt_cv_dlopen_self_static" >&6; }
esac
fi
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
striplib=
old_striplib=
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
@@ -11844,14 +11890,14 @@ $as_echo "no" >&6; }
esac
fi
+
+
+
-
-
-
-
-
-
+
+
+
@@ -11892,7 +11938,7 @@ $as_echo_n "checking whether to build static libraries... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
$as_echo "$enable_static" >&6; }
-
+
fi
@@ -11904,7 +11950,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
CC="$lt_save_CC"
-
+
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -11953,7 +11999,7 @@ if test "$_lt_caught_CXX_error" != yes; then
lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
+
@@ -12027,9 +12073,9 @@ cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
if test "$GXX" = yes; then
# Set up default GNU C++ configuration
+
-
-# Check whether --with-gnu-ld was given.
+@%:@ Check whether --with-gnu-ld was given.
if test "${with_gnu_ld+set}" = set; then :
withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
else
@@ -12112,7 +12158,7 @@ else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
-test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
if test "${lt_cv_prog_gnu_ld+set}" = set; then :
@@ -12296,7 +12342,7 @@ main ()
}
_ACEOF
if ac_fn_cxx_try_link "$LINENO"; then :
-
+
lt_aix_libpath_sed='
/Import File Strings/,/^$/ {
/^0/ {
@@ -12337,7 +12383,7 @@ main ()
}
_ACEOF
if ac_fn_cxx_try_link "$LINENO"; then :
-
+
lt_aix_libpath_sed='
/Import File Strings/,/^$/ {
/^0/ {
@@ -12414,8 +12460,8 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
fi
;;
darwin* | rhapsody*)
-
-
+
+
archive_cmds_need_lc_CXX=no
hardcode_direct_CXX=no
hardcode_automatic_CXX=yes
@@ -12637,7 +12683,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
inherit_rpath_CXX=yes
;;
- linux* | k*bsd*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
case $cc_basename in
KCC*)
# Kuck and Associates, Inc. (KAI) C++ Compiler
@@ -13275,34 +13321,34 @@ if test -n "${compiler_lib_search_path_CXX}"; then
compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
lt_prog_compiler_wl_CXX=
@@ -13465,7 +13511,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
;;
esac
;;
- linux* | k*bsd*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
case $cc_basename in
KCC*)
# KAI C++ Compiler
@@ -13623,7 +13669,7 @@ case $host_os in
lt_prog_compiler_pic_CXX=
;;
*)
- lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+ lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX@&t@ -DPIC"
;;
esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5
@@ -13643,7 +13689,7 @@ else
lt_cv_prog_compiler_pic_works_CXX=no
ac_outfile=conftest.$ac_objext
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
- lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+ lt_compiler_flag="$lt_prog_compiler_pic_CXX@&t@ -DPIC"
# Insert the option either (1) after the last *FLAGS variable, or
# (2) before a word containing "conftest.", or (3) at the end.
# Note that $ac_compile itself does not contain backslashes and begins
@@ -13653,11 +13699,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:13656: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:13660: \$? = $ac_status" >&5
+ echo "$as_me:__oline__: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -13752,11 +13798,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:13755: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:13759: \$? = $ac_status" >&5
+ echo "$as_me:__oline__: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -13804,11 +13850,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:13807: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:13811: \$? = $ac_status" >&5
+ echo "$as_me:__oline__: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -14382,7 +14428,7 @@ linux*oldld* | linux*aout* | linux*coff*)
;;
# This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
version_type=linux
need_lib_prefix=no
need_version=no
@@ -14729,7 +14775,7 @@ fi
-
+
fi # test -n "$compiler"
@@ -14758,8 +14804,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
+
+
@@ -14772,12 +14818,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
-# Check whether --enable-double was given.
+@%:@ Check whether --enable-double was given.
if test "${enable_double+set}" = set; then :
enableval=$enable_double; case "${enableval}" in
yes) double=true ;;
no) double=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-double" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-double" "$LINENO" 5 ;;
esac
else
double=false
@@ -14785,45 +14831,45 @@ fi
if (test x$double = xtrue) ;then
-
-$as_echo "#define MGL_USE_DOUBLE 1" >>confdefs.h
+
+$as_echo "@%:@define MGL_USE_DOUBLE 1" >>confdefs.h
else
-
-$as_echo "#define MGL_USE_DOUBLE 0" >>confdefs.h
+
+$as_echo "@%:@define MGL_USE_DOUBLE 0" >>confdefs.h
fi
-# Check whether --enable-all was given.
+@%:@ Check whether --enable-all was given.
if test "${enable_all+set}" = set; then :
enableval=$enable_all; case "${enableval}" in
yes) all=true ;;
no) all=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-all" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-all" "$LINENO" 5 ;;
esac
else
all=false
fi
-# Check whether --enable-langall was given.
+@%:@ Check whether --enable-langall was given.
if test "${enable_langall+set}" = set; then :
enableval=$enable_langall; case "${enableval}" in
yes) langall=true ;;
no) langall=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-langall" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-langall" "$LINENO" 5 ;;
esac
else
langall=false
fi
-# Check whether --enable-pthread was given.
+@%:@ Check whether --enable-pthread was given.
if test "${enable_pthread+set}" = set; then :
enableval=$enable_pthread; case "${enableval}" in
yes) pthread=true ;;
no) pthread=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-pthread" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-pthread" "$LINENO" 5 ;;
esac
else
pthread=true
@@ -14831,7 +14877,7 @@ fi
ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
if test "x$ac_cv_header_pthread_h" = x""yes; then :
- (test x$all = xtrue || test x$pthread = xtrue) && PTHREAD_FLAGS=-DHAVE_PTHREAD
+ (test x$all = xtrue || test x$pthread = xtrue) && PTHREAD_FLAGS=-DHAVE_PTHREAD
else
(test x$all = xtrue || test x$pthread = xtrue) && echo "Please install posix threads headers" && exit
fi
@@ -14869,7 +14915,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_main" >&5
$as_echo "$ac_cv_lib_pthread_main" >&6; }
if test "x$ac_cv_lib_pthread_main" = x""yes; then :
- (test x$all = xtrue || test x$pthread = xtrue) && PTHREAD_LIBS=-lpthread
+ (test x$all = xtrue || test x$pthread = xtrue) && PTHREAD_LIBS=-lpthread
else
(test x$all = xtrue || test x$pthread = xtrue) && echo "Please install posix threads library" && exit
fi
@@ -14883,12 +14929,12 @@ else
fi
-# Check whether --enable-gsl was given.
+@%:@ Check whether --enable-gsl was given.
if test "${enable_gsl+set}" = set; then :
enableval=$enable_gsl; case "${enableval}" in
yes) gsl=true ;;
no) gsl=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-gsl" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-gsl" "$LINENO" 5 ;;
esac
else
gsl=true
@@ -14980,7 +15026,7 @@ fi
fi
else
GSL_FLAGS=-DNO_GSL
-
+
fi
if test x$test_gsl = xtrue; then
USE_GSL_TRUE=
@@ -14991,12 +15037,12 @@ else
fi
-# Check whether --enable-glut was given.
+@%:@ Check whether --enable-glut was given.
if test "${enable_glut+set}" = set; then :
enableval=$enable_glut; case "${enableval}" in
yes) glut=true ;;
no) glut=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-glut" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-glut" "$LINENO" 5 ;;
esac
else
glut=false
@@ -15006,10 +15052,10 @@ fi
case "${host}" in
*darwin*)
GL_LIBS="-framework OpenGL"
-
+
if (test x$all = xtrue || test x$glut = xtrue) ;then
GLUT_LIBS="-framework GLUT -framework OpenGL"
-
+
fi
;;
@@ -15017,7 +15063,7 @@ case "${host}" in
GL_LIBS=opengl32
ac_fn_c_check_header_mongrel "$LINENO" "GL/gl.h" "ac_cv_header_GL_gl_h" "$ac_includes_default"
if test "x$ac_cv_header_GL_gl_h" = x""yes; then :
-
+
else
echo "Please install OpenGL headers (GL/gl.h)"; exit
fi
@@ -15026,7 +15072,7 @@ fi
as_ac_Lib=`$as_echo "ac_cv_lib_${GL_LIBS}''_main" | $as_tr_sh`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l${GL_LIBS}" >&5
$as_echo_n "checking for main in -l${GL_LIBS}... " >&6; }
-if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$as_ac_Lib+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -15055,9 +15101,8 @@ fi
eval ac_res=\$$as_ac_Lib
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
-eval as_val=\$$as_ac_Lib
- if test "x$as_val" = x""yes; then :
- GL_LIBS=-l${GL_LIBS}
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+ GL_LIBS=-l${GL_LIBS}
else
echo "Please install OpenGL library (lib${GL_LIBS}.a)"; exit
fi
@@ -15065,7 +15110,7 @@ fi
GLUT_LIBS=glut32
ac_fn_c_check_header_mongrel "$LINENO" "GL/glut.h" "ac_cv_header_GL_glut_h" "$ac_includes_default"
if test "x$ac_cv_header_GL_glut_h" = x""yes; then :
- (test x$all = xtrue || test x$glut = xtrue) && GLUT_FLAGS=-DHAVE_GLUT
+ (test x$all = xtrue || test x$glut = xtrue) && GLUT_FLAGS=-DHAVE_GLUT
else
(test x$all = xtrue || test x$glut = xtrue) && (echo "Please install FreeGLUT headers (GL/glut.h)" && exit)
fi
@@ -15074,7 +15119,7 @@ fi
as_ac_Lib=`$as_echo "ac_cv_lib_${GLUT_LIBS}''_main" | $as_tr_sh`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l${GLUT_LIBS}" >&5
$as_echo_n "checking for main in -l${GLUT_LIBS}... " >&6; }
-if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$as_ac_Lib+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -15103,9 +15148,8 @@ fi
eval ac_res=\$$as_ac_Lib
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
-eval as_val=\$$as_ac_Lib
- if test "x$as_val" = x""yes; then :
- (test x$all = xtrue || test x$glut = xtrue) && GLUT_LIBS=-l${GLUT_LIBS}
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+ (test x$all = xtrue || test x$glut = xtrue) && GLUT_LIBS=-l${GLUT_LIBS}
else
(test x$all = xtrue || test x$glut = xtrue) && echo "Please install FreeGLUT library (lib${GLUT_LIBS}.a)" && exit
fi
@@ -15116,7 +15160,7 @@ fi
GL_LIBS=GL
ac_fn_c_check_header_mongrel "$LINENO" "GL/gl.h" "ac_cv_header_GL_gl_h" "$ac_includes_default"
if test "x$ac_cv_header_GL_gl_h" = x""yes; then :
-
+
else
echo "Please install OpenGL headers (GL/gl.h)"; exit
fi
@@ -15125,7 +15169,7 @@ fi
as_ac_Lib=`$as_echo "ac_cv_lib_${GL_LIBS}''_main" | $as_tr_sh`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l${GL_LIBS}" >&5
$as_echo_n "checking for main in -l${GL_LIBS}... " >&6; }
-if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$as_ac_Lib+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -15154,9 +15198,8 @@ fi
eval ac_res=\$$as_ac_Lib
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
-eval as_val=\$$as_ac_Lib
- if test "x$as_val" = x""yes; then :
- GL_LIBS=-l${GL_LIBS}
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+ GL_LIBS=-l${GL_LIBS}
else
echo "Please install OpenGL library (lib${GL_LIBS}.a)"; exit
fi
@@ -15164,7 +15207,7 @@ fi
GLUT_LIBS=glut
ac_fn_c_check_header_mongrel "$LINENO" "GL/glut.h" "ac_cv_header_GL_glut_h" "$ac_includes_default"
if test "x$ac_cv_header_GL_glut_h" = x""yes; then :
- (test x$all = xtrue || test x$glut = xtrue) && GLUT_FLAGS=-DHAVE_GLUT
+ (test x$all = xtrue || test x$glut = xtrue) && GLUT_FLAGS=-DHAVE_GLUT
else
(test x$all = xtrue || test x$glut = xtrue) && (echo "Please install FreeGLUT headers (GL/glut.h)" && exit)
fi
@@ -15173,7 +15216,7 @@ fi
as_ac_Lib=`$as_echo "ac_cv_lib_${GLUT_LIBS}''_main" | $as_tr_sh`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l${GLUT_LIBS}" >&5
$as_echo_n "checking for main in -l${GLUT_LIBS}... " >&6; }
-if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$as_ac_Lib+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -15202,9 +15245,8 @@ fi
eval ac_res=\$$as_ac_Lib
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
-eval as_val=\$$as_ac_Lib
- if test "x$as_val" = x""yes; then :
- (test x$all = xtrue || test x$glut = xtrue) && GLUT_LIBS=-l${GLUT_LIBS}
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+ (test x$all = xtrue || test x$glut = xtrue) && GLUT_LIBS=-l${GLUT_LIBS}
else
(test x$all = xtrue || test x$glut = xtrue) && echo "Please install FreeGLUT library (lib${GLUT_LIBS}.a)" && exit
fi
@@ -15230,23 +15272,23 @@ case "${host}" in
;;
esac
-# Check whether --enable-hdf5 was given.
+@%:@ Check whether --enable-hdf5 was given.
if test "${enable_hdf5+set}" = set; then :
enableval=$enable_hdf5; case "${enableval}" in
yes) hdf5=true ;;
no) hdf5=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-hdf5" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-hdf5" "$LINENO" 5 ;;
esac
else
hdf5=false
fi
-# Check whether --enable-hdf5_18 was given.
+@%:@ Check whether --enable-hdf5_18 was given.
if test "${enable_hdf5_18+set}" = set; then :
enableval=$enable_hdf5_18; case "${enableval}" in
yes) hdf5_18=true ;;
no) hdf5_18=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-hdf5_18" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-hdf5_18" "$LINENO" 5 ;;
esac
else
hdf5_18=false
@@ -15255,7 +15297,7 @@ fi
#AC_CHECK_HEADER(hdf5.h,[(test x$all = xtrue || test x$hdf5 = xtrue || test x$hdf5_18 = xtrue) && HDF5_FLAGS=-DHAVE_HDF5 AC_SUBST(HDF5_FLAGS)],
ac_fn_c_check_header_mongrel "$LINENO" "hdf5.h" "ac_cv_header_hdf5_h" "$ac_includes_default"
if test "x$ac_cv_header_hdf5_h" = x""yes; then :
- (test x$all = xtrue || test x$hdf5 = xtrue || test x$hdf5_18 = xtrue) && HDF5_FLAGS=-DHAVE_HDF5
+ (test x$all = xtrue || test x$hdf5 = xtrue || test x$hdf5_18 = xtrue) && HDF5_FLAGS=-DHAVE_HDF5
else
(test x$all = xtrue || test x$hdf5 = xtrue || test x$hdf5_18 = xtrue) && echo "Please install hdf5 headers" && exit
fi
@@ -15263,7 +15305,7 @@ fi
if ((test x$all = xtrue || test x$hdf5 = xtrue) && test x$hdf5_18 = xfalse) ;then
HDF5_FLAGS="$HDF5_FLAGS -DH5_USE_16_API"
-
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lhdf5" >&5
$as_echo_n "checking for main in -lhdf5... " >&6; }
@@ -15296,7 +15338,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_hdf5_main" >&5
$as_echo "$ac_cv_lib_hdf5_main" >&6; }
if test "x$ac_cv_lib_hdf5_main" = x""yes; then :
- (test x$all = xtrue || test x$hdf5 = xtrue || test x$hdf5_18 = xtrue) && HDF5_LIBS=-lhdf5
+ (test x$all = xtrue || test x$hdf5 = xtrue || test x$hdf5_18 = xtrue) && HDF5_LIBS=-lhdf5
else
(test x$all = xtrue || test x$hdf5 = xtrue || test x$hdf5_18 = xtrue) && echo "Please install hdf5 library" && exit
fi
@@ -15310,12 +15352,78 @@ else
fi
-# Check whether --enable-gif was given.
+
+@%:@ Check whether --enable-hdf4 was given.
+if test "${enable_hdf4+set}" = set; then :
+ enableval=$enable_hdf4; case "${enableval}" in
+ yes) hdf4=true ;;
+ no) hdf4=false ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-hdf4" "$LINENO" 5 ;;
+esac
+else
+ hdf4=false
+fi
+
+ac_fn_c_check_header_mongrel "$LINENO" "hdf/mfhdf.h" "ac_cv_header_hdf_mfhdf_h" "$ac_includes_default"
+if test "x$ac_cv_header_hdf_mfhdf_h" = x""yes; then :
+ (test x$all = xtrue || test x$hdf4 = xtrue) && HDF4_FLAGS=-DHAVE_HDF4
+else
+ (test x$all = xtrue || test x$hdf4 = xtrue) && echo "Please install hdf4 headers" && exit
+fi
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -ldf" >&5
+$as_echo_n "checking for main in -ldf... " >&6; }
+if test "${ac_cv_lib_df_main+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldf $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+int
+main ()
+{
+return main ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_df_main=yes
+else
+ ac_cv_lib_df_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_df_main" >&5
+$as_echo "$ac_cv_lib_df_main" >&6; }
+if test "x$ac_cv_lib_df_main" = x""yes; then :
+ (test x$all = xtrue || test x$hdf4 = xtrue) && HDF4_LIBS="-lmfhdf -ldf"
+else
+ (test x$all = xtrue || test x$hdf4 = xtrue) && echo "Please install hdf4 library" && exit
+fi
+
+ if (test x$all = xtrue || test x$hdf4 = xtrue); then
+ USE_HDF4_TRUE=
+ USE_HDF4_FALSE='#'
+else
+ USE_HDF4_TRUE='#'
+ USE_HDF4_FALSE=
+fi
+
+
+@%:@ Check whether --enable-gif was given.
if test "${enable_gif+set}" = set; then :
enableval=$enable_gif; case "${enableval}" in
yes) gif=true ;;
no) gif=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-gif" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-gif" "$LINENO" 5 ;;
esac
else
gif=false
@@ -15323,7 +15431,7 @@ fi
ac_fn_c_check_header_mongrel "$LINENO" "gif_lib.h" "ac_cv_header_gif_lib_h" "$ac_includes_default"
if test "x$ac_cv_header_gif_lib_h" = x""yes; then :
- (test x$all = xtrue || test x$gif = xtrue) && GIF_FLAGS=-DHAVE_GIF
+ (test x$all = xtrue || test x$gif = xtrue) && GIF_FLAGS=-DHAVE_GIF
else
(test x$all = xtrue || test x$gif = xtrue) && echo "Please install gif headers" && exit
fi
@@ -15361,7 +15469,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gif_main" >&5
$as_echo "$ac_cv_lib_gif_main" >&6; }
if test "x$ac_cv_lib_gif_main" = x""yes; then :
- (test x$all = xtrue || test x$gif = xtrue) && GIF_LIBS=-lgif
+ (test x$all = xtrue || test x$gif = xtrue) && GIF_LIBS=-lgif
else
(test x$all = xtrue || test x$gif = xtrue) && echo "Please install gif library" && exit
fi
@@ -15377,7 +15485,7 @@ fi
ac_fn_c_check_header_mongrel "$LINENO" "png.h" "ac_cv_header_png_h" "$ac_includes_default"
if test "x$ac_cv_header_png_h" = x""yes; then :
-
+
else
echo "Please install png headers" && exit
fi
@@ -15415,18 +15523,18 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_png_main" >&5
$as_echo "$ac_cv_lib_png_main" >&6; }
if test "x$ac_cv_lib_png_main" = x""yes; then :
- PNG_LIBS=-lpng
+ PNG_LIBS=-lpng
else
echo "Please install png library" && exit
fi
-# Check whether --enable-jpeg was given.
+@%:@ Check whether --enable-jpeg was given.
if test "${enable_jpeg+set}" = set; then :
enableval=$enable_jpeg; case "${enableval}" in
yes) jpeg=true ;;
no) jpeg=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-jpeg" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-jpeg" "$LINENO" 5 ;;
esac
else
jpeg=false
@@ -15434,7 +15542,7 @@ fi
ac_fn_c_check_header_mongrel "$LINENO" "jpeglib.h" "ac_cv_header_jpeglib_h" "$ac_includes_default"
if test "x$ac_cv_header_jpeglib_h" = x""yes; then :
- (test x$all = xtrue || test x$jpeg = xtrue) && JPEG_FLAGS=-DHAVE_JPEG
+ (test x$all = xtrue || test x$jpeg = xtrue) && JPEG_FLAGS=-DHAVE_JPEG
else
(test x$all = xtrue || test x$jpeg = xtrue) && echo "Please install jpeg headers" && exit
fi
@@ -15472,7 +15580,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_jpeg_main" >&5
$as_echo "$ac_cv_lib_jpeg_main" >&6; }
if test "x$ac_cv_lib_jpeg_main" = x""yes; then :
- (test x$all = xtrue || test x$jpeg = xtrue) && JPEG_LIBS=-ljpeg
+ (test x$all = xtrue || test x$jpeg = xtrue) && JPEG_LIBS=-ljpeg
else
(test x$all = xtrue || test x$jpeg = xtrue) && echo "Please install jpeg library" && exit
fi
@@ -15486,12 +15594,12 @@ else
fi
-# Check whether --enable-fltk was given.
+@%:@ Check whether --enable-fltk was given.
if test "${enable_fltk+set}" = set; then :
enableval=$enable_fltk; case "${enableval}" in
yes) fltk=true ;;
no) fltk=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-fltk" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-fltk" "$LINENO" 5 ;;
esac
else
fltk=false
@@ -15579,7 +15687,7 @@ fi
echo "Please install FLTK headers and libraries and make sure that \
path to $FLTK_PROG exist in your PATH"
exit
- fi
+ fi
fi
if test x$test_fltk = xtrue; then
USE_FLTK_TRUE=
@@ -15590,12 +15698,12 @@ else
fi
-# Check whether --enable-wx was given.
+@%:@ Check whether --enable-wx was given.
if test "${enable_wx+set}" = set; then :
enableval=$enable_wx; case "${enableval}" in
yes) wx=true ;;
no) wx=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-wx" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-wx" "$LINENO" 5 ;;
esac
else
wx=false
@@ -15684,7 +15792,7 @@ fi
echo "Please install wxwidget headers and libraries and make sure that \
path to $WX_PROG exist in your PATH"
exit
- fi
+ fi
fi
if test x$test_wx = xtrue; then
USE_WX_TRUE=
@@ -15695,26 +15803,26 @@ else
fi
-# Check whether --enable-qt was given.
+@%:@ Check whether --enable-qt was given.
if test "${enable_qt+set}" = set; then :
enableval=$enable_qt; case "${enableval}" in
yes) qt=true ;;
no) qt=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-qt" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-qt" "$LINENO" 5 ;;
esac
else
qt=false
fi
if (test x$all = xtrue || test x$qt = xtrue) ;then
-
-
-
+
+
+
test x"$TROLL" != x && echo 'ViM rox emacs.'
-
-# Check whether --with-qt was given.
+
+@%:@ Check whether --with-qt was given.
if test "${with_qt+set}" = set; then :
withval=$with_qt; QT_PATH=$withval
else
@@ -15826,7 +15934,7 @@ done
test -n "$QMAKE" || QMAKE="missing"
if test x"$QMAKE" = xmissing; then
- as_fn_error "Cannot find qmake in your PATH. Try using --with-qt." "$LINENO" 5
+ as_fn_error $? "Cannot find qmake in your PATH. Try using --with-qt." "$LINENO" 5
fi
fi
@@ -15927,7 +16035,7 @@ done
test -n "$MOC" || MOC="missing"
if test x"$MOC" = xmissing; then
- as_fn_error "Cannot find moc (Meta Object Compiler) in your PATH. Try using --with-qt." "$LINENO" 5
+ as_fn_error $? "Cannot find moc (Meta Object Compiler) in your PATH. Try using --with-qt." "$LINENO" 5
fi
fi
@@ -16028,7 +16136,7 @@ done
test -n "$UIC" || UIC="missing"
if test x"$UIC" = xmissing; then
- as_fn_error "Cannot find uic (User Interface Compiler) in your PATH. Try using --with-qt." "$LINENO" 5
+ as_fn_error $? "Cannot find uic (User Interface Compiler) in your PATH. Try using --with-qt." "$LINENO" 5
fi
fi
@@ -16139,14 +16247,14 @@ $as_echo "$as_me: WARNING: Cannot find rcc (Qt Resource Compiler) in your PATH.
QT_PATH=`dirname "$QMAKE"`
fi
if test x"$QT_PATH" = x; then
- as_fn_error "Cannot find the path to your Qt install. Use --with-qt." "$LINENO" 5
+ as_fn_error $? "Cannot find the path to your Qt install. Use --with-qt." "$LINENO" 5
fi
-
+
# Get ready to build a test-app with Qt.
# Look for a writable temporary directory.
-
+
if test x"$TMPDIR" = x || test ! -d "$TMPDIR" || test ! -w "$TMPDIR"; then
echo "$as_me:$LINENO: no TMPDIR or bad TMPDIR ($TMPDIR)" \
>&5
@@ -16173,7 +16281,7 @@ $as_echo "$as_me: WARNING: Cannot find rcc (Qt Resource Compiler) in your PATH.
then
:
else
- as_fn_error "Cannot cd to or write in $my_tmpdir" "$LINENO" 5
+ as_fn_error $? "Cannot cd to or write in $my_tmpdir" "$LINENO" 5
fi
cat >conftest.h <<_ASEOF
#include <QObject>
@@ -16212,14 +16320,14 @@ int main()
}
_ASEOF
if $QMAKE -project; then :; else
- as_fn_error "Calling $QMAKE -project failed." "$LINENO" 5
+ as_fn_error $? "Calling $QMAKE -project failed." "$LINENO" 5
fi
# Find the .pro file generated by qmake.
pro_file='conftest.dir.pro'
test -f $pro_file || pro_file=`echo *.pro`
if test -f "$pro_file"; then :; else
- as_fn_error "Can't find the .pro file generated by Qmake." "$LINENO" 5
+ as_fn_error $? "Can't find the .pro file generated by Qmake." "$LINENO" 5
fi
@@ -16232,7 +16340,7 @@ _ASEOF
sed 's/^/| /' "$pro_file" >&5
if $QMAKE; then :; else
- as_fn_error "Calling $QMAKE failed." "$LINENO" 5
+ as_fn_error $? "Calling $QMAKE failed." "$LINENO" 5
fi
# Try to compile a simple Qt app.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can build a simple Qt app" >&5
@@ -16293,15 +16401,15 @@ instead" >&5
fi # if make with Qt4-style #include and release mode forced.
fi # if make with Qt3-style #include.
fi # if make with Qt4-style #include.
-
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_qt_build" >&5
$as_echo "$at_cv_qt_build" >&6; }
if test x"$at_cv_qt_build" = xko; then
- as_fn_error "Cannot build a test Qt program" "$LINENO" 5
+ as_fn_error $? "Cannot build a test Qt program" "$LINENO" 5
fi
QT_VERSION_MAJOR=`echo "$at_cv_qt_build" | sed 's/^^0-9*//'`
-
+
# This sed filter is applied after an expression of the form: /^FOO.*=/!d;
# It starts by removing the beginning of the line, removing references to
@@ -16310,7 +16418,7 @@ $as_echo "$at_cv_qt_build" >&6; }
qt_sed_filter='s///;
s/$(SUBLIBS)//g;
s/^ *//;
- s/\$(\([A-Z_][A-Z_]*\))/$(QT_\1)/g'
+ s/\$(\(@<:@A-Z_@:>@@<:@A-Z_@:>@*\))/$(QT_\1)/g'
# Find the Makefile (qmake happens to generate a fake Makefile which invokes
# a Makefile.Debug or Makefile.Release). We we have both, we'll pick the
@@ -16324,7 +16432,7 @@ $as_echo "$at_cv_qt_build" >&6; }
fi
if test -f $at_mfile; then :; else
cd "$my_configure_pwd"
- as_fn_error "Cannot find the Makefile generated by qmake." "$LINENO" 5
+ as_fn_error $? "Cannot find the Makefile generated by qmake." "$LINENO" 5
fi
# Find the DEFINES of Qt (should have been named CPPFLAGS).
@@ -16333,7 +16441,7 @@ $as_echo_n "checking for the DEFINES to use with Qt... " >&6; }
if test "${at_cv_env_QT_DEFINES+set}" = set; then :
$as_echo_n "(cached) " >&6
else
- at_cv_env_QT_DEFINES=`sed "/^DEFINES[ ]*=/!d;$qt_sed_filter" $at_mfile`
+ at_cv_env_QT_DEFINES=`sed "/^DEFINES@<:@ @:>@*=/!d;$qt_sed_filter" $at_mfile`
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_env_QT_DEFINES" >&5
$as_echo "$at_cv_env_QT_DEFINES" >&6; }
@@ -16346,7 +16454,7 @@ $as_echo_n "checking for the CFLAGS to use with Qt... " >&6; }
if test "${at_cv_env_QT_CFLAGS+set}" = set; then :
$as_echo_n "(cached) " >&6
else
- at_cv_env_QT_CFLAGS=`sed "/^CFLAGS[ ]*=/!d;$qt_sed_filter" $at_mfile`
+ at_cv_env_QT_CFLAGS=`sed "/^CFLAGS@<:@ @:>@*=/!d;$qt_sed_filter" $at_mfile`
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_env_QT_CFLAGS" >&5
$as_echo "$at_cv_env_QT_CFLAGS" >&6; }
@@ -16359,7 +16467,7 @@ $as_echo_n "checking for the CXXFLAGS to use with Qt... " >&6; }
if test "${at_cv_env_QT_CXXFLAGS+set}" = set; then :
$as_echo_n "(cached) " >&6
else
- at_cv_env_QT_CXXFLAGS=`sed "/^CXXFLAGS[ ]*=/!d;$qt_sed_filter" $at_mfile`
+ at_cv_env_QT_CXXFLAGS=`sed "/^CXXFLAGS@<:@ @:>@*=/!d;$qt_sed_filter" $at_mfile`
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_env_QT_CXXFLAGS" >&5
$as_echo "$at_cv_env_QT_CXXFLAGS" >&6; }
@@ -16372,7 +16480,7 @@ $as_echo_n "checking for the INCPATH to use with Qt... " >&6; }
if test "${at_cv_env_QT_INCPATH+set}" = set; then :
$as_echo_n "(cached) " >&6
else
- at_cv_env_QT_INCPATH=`sed "/^INCPATH[ ]*=/!d;$qt_sed_filter" $at_mfile`
+ at_cv_env_QT_INCPATH=`sed "/^INCPATH@<:@ @:>@*=/!d;$qt_sed_filter" $at_mfile`
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_env_QT_INCPATH" >&5
$as_echo "$at_cv_env_QT_INCPATH" >&6; }
@@ -16388,7 +16496,7 @@ $as_echo_n "checking for the LDFLAGS to use with Qt... " >&6; }
if test "${at_cv_env_QT_LDFLAGS+set}" = set; then :
$as_echo_n "(cached) " >&6
else
- at_cv_env_QT_LDFLAGS=`sed "/^LDFLAGS[ ]*=/!d;$qt_sed_filter" $at_mfile`
+ at_cv_env_QT_LDFLAGS=`sed "/^LDFLAGS@<:@ @:>@*=/!d;$qt_sed_filter" $at_mfile`
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_env_QT_LDFLAGS" >&5
$as_echo "$at_cv_env_QT_LDFLAGS" >&6; }
@@ -16414,7 +16522,7 @@ $as_echo_n "checking for the LIBS to use with Qt... " >&6; }
if test "${at_cv_env_QT_LIBS+set}" = set; then :
$as_echo_n "(cached) " >&6
else
- at_cv_env_QT_LIBS=`sed "/^LIBS[ ]*=/!d;$qt_sed_filter" $at_mfile`
+ at_cv_env_QT_LIBS=`sed "/^LIBS@<:@ @:>@*=/!d;$qt_sed_filter" $at_mfile`
if test x$at_darwin = xyes; then
# Fix QT_LIBS: as of today Libtool (GNU Libtool 1.5.23a) doesn't handle
# -F properly. The "bug" has been fixed on 22 October 2006
@@ -16422,7 +16530,7 @@ else
at_cv_env_QT_LIBS=`echo "$at_cv_env_QT_LIBS" \
| sed 's/^-F/-Wl,-F/;s/ -F/ -Wl,-F/g'`
fi
-
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_env_QT_LIBS" >&5
$as_echo "$at_cv_env_QT_LIBS" >&6; }
@@ -16432,10 +16540,10 @@ $as_echo "$at_cv_env_QT_LIBS" >&6; }
cd "$my_configure_pwd" || echo 'WTF!'
rm -rf "$my_tmpdir"
-
+
if test x"$QMAKE" = x; then
- as_fn_error "\$QMAKE is empty. \
-Did you invoke AT_WITH_QT before AT_REQUIRE_QT_VERSION?" "$LINENO" 5
+ as_fn_error $? "\$QMAKE is empty. \
+Did you invoke AT@&t at _WITH_QT before AT@&t at _REQUIRE_QT_VERSION?" "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Qt's version" >&5
$as_echo_n "checking for Qt's version... " >&6; }
@@ -16450,20 +16558,20 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_QT_VERSION" >&5
$as_echo "$at_cv_QT_VERSION" >&6; }
if test x"$at_cv_QT_VERSION" = x; then
- as_fn_error "Cannot detect Qt's version." "$LINENO" 5
+ as_fn_error $? "Cannot detect Qt's version." "$LINENO" 5
fi
QT_VERSION=$at_cv_QT_VERSION
as_arg_v1=$QT_VERSION
as_arg_v2=4.3
awk "$as_awk_strverscmp" v1="$as_arg_v1" v2="$as_arg_v2" /dev/null
-case $? in #(
+case $? in @%:@(
1) :
- as_fn_error "This package requires Qt 4.3 or above." "$LINENO" 5 ;; #(
+ as_fn_error $? "This package requires Qt 4.3 or above." "$LINENO" 5 ;; @%:@(
0) :
- ;; #(
+ ;; @%:@(
2) :
- ;; #(
+ ;; @%:@(
*) :
;;
esac
@@ -16479,12 +16587,12 @@ else
fi
-# Check whether --enable-python was given.
+@%:@ Check whether --enable-python was given.
if test "${enable_python+set}" = set; then :
enableval=$enable_python; case "${enableval}" in
yes) python=true ;;
no) python=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-python" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-python" "$LINENO" 5 ;;
esac
else
python=false
@@ -16567,10 +16675,10 @@ fi
if (test "$PYTHON_HEADERS" && test "$HAVE_SWIG") ;then
test_python=true
+
+
-
-
-
+
# Find any Python interpreter.
if test -z "$PYTHON"; then
for ac_prog in python python2 python3 python3.0 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0
@@ -16621,13 +16729,13 @@ test -n "$PYTHON" || PYTHON=":"
fi
am_display_PYTHON=python
-
+
if test "$PYTHON" = :; then
- as_fn_error "no suitable Python interpreter found" "$LINENO" 5
+ as_fn_error $? "no suitable Python interpreter found" "$LINENO" 5
else
-
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
if test "${am_cv_python_version+set}" = set; then :
@@ -16640,13 +16748,13 @@ $as_echo "$am_cv_python_version" >&6; }
PYTHON_VERSION=$am_cv_python_version
-
+
PYTHON_PREFIX='${prefix}'
PYTHON_EXEC_PREFIX='${exec_prefix}'
-
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
if test "${am_cv_python_platform+set}" = set; then :
@@ -16660,7 +16768,7 @@ $as_echo "$am_cv_python_platform" >&6; }
-
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
if test "${am_cv_python_pythondir+set}" = set; then :
@@ -16679,15 +16787,23 @@ else
am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
;;
+ *)
+ case $am_py_prefix in
+ /usr|/System*) ;;
+ *)
+ am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
+ ;;
+ esac
+ ;;
esac
-
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
$as_echo "$am_cv_python_pythondir" >&6; }
pythondir=$am_cv_python_pythondir
-
+
pkgpythondir=\${pythondir}/$PACKAGE
@@ -16709,26 +16825,34 @@ else
am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
;;
+ *)
+ case $am_py_exec_prefix in
+ /usr|/System*) ;;
+ *)
+ am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
+ ;;
+ esac
+ ;;
esac
-
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
$as_echo "$am_cv_python_pyexecdir" >&6; }
pyexecdir=$am_cv_python_pyexecdir
-
+
pkgpyexecdir=\${pyexecdir}/$PACKAGE
-
+
fi
else
echo Please install python-dev and swig packages
exit
- fi
+ fi
fi
if test x$test_python = xtrue ; then
USE_PYTHON_TRUE=
@@ -16739,12 +16863,12 @@ else
fi
-# Check whether --enable-octave was given.
+@%:@ Check whether --enable-octave was given.
if test "${enable_octave+set}" = set; then :
enableval=$enable_octave; case "${enableval}" in
yes) octave=true ;;
no) octave=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-octave" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-octave" "$LINENO" 5 ;;
esac
else
octave=false
@@ -16810,12 +16934,12 @@ else
fi
-# Check whether --enable-testio was given.
+@%:@ Check whether --enable-testio was given.
if test "${enable_testio+set}" = set; then :
enableval=$enable_testio; case "${enableval}" in
yes) testio=true ;;
no) testio=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-testio" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-testio" "$LINENO" 5 ;;
esac
else
testio=false
@@ -16830,12 +16954,12 @@ else
fi
-# Check whether --enable-docs was given.
+@%:@ Check whether --enable-docs was given.
if test "${enable_docs+set}" = set; then :
enableval=$enable_docs; case "${enableval}" in
yes) docs=true ;;
no) docs=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-docs" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-docs" "$LINENO" 5 ;;
esac
else
docs=false
@@ -16942,7 +17066,8 @@ DEFS=-DHAVE_CONFIG_H
ac_libobjs=
ac_ltlibobjs=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+U=
+for ac_i in : $LIB@&t at OBJS; do test "x$ac_i" = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
@@ -16951,7 +17076,7 @@ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
done
-LIBOBJS=$ac_libobjs
+LIB@&t at OBJS=$ac_libobjs
LTLIBOBJS=$ac_ltlibobjs
@@ -16965,72 +17090,76 @@ else
fi
if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
- as_fn_error "conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
- as_fn_error "conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
- as_fn_error "conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
- as_fn_error "conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_PTHREAD_TRUE}" && test -z "${USE_PTHREAD_FALSE}"; then
- as_fn_error "conditional \"USE_PTHREAD\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_PTHREAD\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_GSL_TRUE}" && test -z "${USE_GSL_FALSE}"; then
- as_fn_error "conditional \"USE_GSL\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_GSL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_GLUT_TRUE}" && test -z "${USE_GLUT_FALSE}"; then
- as_fn_error "conditional \"USE_GLUT\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_GLUT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_HDF5_TRUE}" && test -z "${USE_HDF5_FALSE}"; then
- as_fn_error "conditional \"USE_HDF5\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_HDF5\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_HDF4_TRUE}" && test -z "${USE_HDF4_FALSE}"; then
+ as_fn_error $? "conditional \"USE_HDF4\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_GIF_TRUE}" && test -z "${USE_GIF_FALSE}"; then
- as_fn_error "conditional \"USE_GIF\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_GIF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_JPEG_TRUE}" && test -z "${USE_JPEG_FALSE}"; then
- as_fn_error "conditional \"USE_JPEG\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_JPEG\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_FLTK_TRUE}" && test -z "${USE_FLTK_FALSE}"; then
- as_fn_error "conditional \"USE_FLTK\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_FLTK\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_WX_TRUE}" && test -z "${USE_WX_FALSE}"; then
- as_fn_error "conditional \"USE_WX\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_WX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_QT_TRUE}" && test -z "${USE_QT_FALSE}"; then
- as_fn_error "conditional \"USE_QT\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_QT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_PYTHON_TRUE}" && test -z "${USE_PYTHON_FALSE}"; then
- as_fn_error "conditional \"USE_PYTHON\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_PYTHON\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_OCTAVE_TRUE}" && test -z "${USE_OCTAVE_FALSE}"; then
- as_fn_error "conditional \"USE_OCTAVE\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_OCTAVE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_TESTIO_TRUE}" && test -z "${USE_TESTIO_FALSE}"; then
- as_fn_error "conditional \"USE_TESTIO\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_TESTIO\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_DOCS_TRUE}" && test -z "${USE_DOCS_FALSE}"; then
- as_fn_error "conditional \"USE_DOCS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_DOCS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
: ${CONFIG_STATUS=./config.status}
@@ -17069,9 +17198,9 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
- case `(set -o) 2>/dev/null` in #(
+ case `(set -o) 2>/dev/null` in @%:@(
*posix*) :
- set -o posix ;; #(
+ set -o posix ;; @%:@(
*) :
;;
esac
@@ -17102,7 +17231,7 @@ else
as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
as_echo_n_body='eval
arg=$1;
- case $arg in #(
+ case $arg in @%:@(
*"$as_nl"*)
expr "X$arg" : "X\\(.*\\)$as_nl";
arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -17134,7 +17263,7 @@ fi
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
-case $0 in #((
+case $0 in @%:@((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
@@ -17179,55 +17308,55 @@ export LANGUAGE
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-# as_fn_error ERROR [LINENO LOG_FD]
-# ---------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with status $?, using 1 if that was 0.
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
as_fn_error ()
{
- as_status=$?; test $as_status -eq 0 && as_status=1
- if test "$3"; then
- as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
- $as_echo "$as_me: error: $1" >&2
+ $as_echo "$as_me: error: $2" >&2
as_fn_exit $as_status
-} # as_fn_error
+} @%:@ as_fn_error
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
as_fn_set_status ()
{
return $1
-} # as_fn_set_status
+} @%:@ as_fn_set_status
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
as_fn_exit ()
{
set +e
as_fn_set_status $1
exit $1
-} # as_fn_exit
+} @%:@ as_fn_exit
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
as_fn_unset ()
{
{ eval $1=; unset $1;}
}
as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
eval 'as_fn_append ()
{
@@ -17240,11 +17369,11 @@ else
}
fi # as_fn_append
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
eval 'as_fn_arith ()
{
@@ -17304,7 +17433,7 @@ as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits
ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
+case `echo -n x` in @%:@(((((
-n*)
case `echo 'xy\c'` in
*c*) ECHO_T=' ';; # ECHO_T is single tab character.
@@ -17344,9 +17473,9 @@ rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
as_fn_mkdir_p ()
{
@@ -17387,10 +17516,10 @@ $as_echo X"$as_dir" |
test -d "$as_dir" && break
done
test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-} # as_fn_mkdir_p
+} @%:@ as_fn_mkdir_p
if mkdir -p . 2>/dev/null; then
as_mkdir_p='mkdir -p "$as_dir"'
else
@@ -17411,10 +17540,10 @@ else
if test -d "$1"; then
test -d "$1/.";
else
- case $1 in #(
+ case $1 in @%:@(
-*)set "./$1";;
esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in @%:@((
???[sx]*):;;*)false;;esac;fi
'\'' sh
'
@@ -17441,7 +17570,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# values after options handling.
ac_log="
This file was extended by mathgl $as_me 1.10, which was
-generated by GNU Autoconf 2.64. Invocation command line was
+generated by GNU Autoconf 2.67. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -17481,13 +17610,14 @@ Usage: $0 [OPTION]... [TAG]...
-h, --help print this help, then exit
-V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
-q, --quiet, --silent
do not print progress messages
-d, --debug don't remove temporary files
--recheck update $as_me by reconfiguring in the same conditions
- --file=FILE[:TEMPLATE]
+ --file=FILE[:TEMPLATE]
instantiate the configuration file FILE
- --header=FILE[:TEMPLATE]
+ --header=FILE[:TEMPLATE]
instantiate the configuration header FILE
Configuration files:
@@ -17503,12 +17633,13 @@ Report bugs to <mathgl.abalakin at gmail.com>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
mathgl config.status 1.10
-configured by $0, generated by GNU Autoconf 2.64,
- with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+configured by $0, generated by GNU Autoconf 2.67,
+ with options \\"\$ac_cs_config\\"
-Copyright (C) 2009 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -17526,11 +17657,16 @@ ac_need_defaults=:
while test $# != 0
do
case $1 in
- --*=*)
+ --*=?*)
ac_option=`expr "X$1" : 'X\([^=]*\)='`
ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
ac_shift=:
;;
+ --*=)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=
+ ac_shift=:
+ ;;
*)
ac_option=$1
ac_optarg=$2
@@ -17544,12 +17680,15 @@ do
ac_cs_recheck=: ;;
--version | --versio | --versi | --vers | --ver | --ve | --v | -V )
$as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
--debug | --debu | --deb | --de | --d | -d )
debug=: ;;
--file | --fil | --fi | --f )
$ac_shift
case $ac_optarg in
*\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ '') as_fn_error $? "missing file argument" ;;
esac
as_fn_append CONFIG_FILES " '$ac_optarg'"
ac_need_defaults=false;;
@@ -17562,7 +17701,7 @@ do
ac_need_defaults=false;;
--he | --h)
# Conflict between --help and --header
- as_fn_error "ambiguous option: \`$1'
+ as_fn_error $? "ambiguous option: \`$1'
Try \`$0 --help' for more information.";;
--help | --hel | -h )
$as_echo "$ac_cs_usage"; exit ;;
@@ -17571,7 +17710,7 @@ Try \`$0 --help' for more information.";;
ac_cs_silent=: ;;
# This is an error.
- -*) as_fn_error "unrecognized option: \`$1'
+ -*) as_fn_error $? "unrecognized option: \`$1'
Try \`$0 --help' for more information." ;;
*) as_fn_append ac_config_targets " $1"
@@ -17604,8 +17743,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
exec 5>>config.log
{
echo
- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
+ sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
+@%:@@%:@ Running $as_me. @%:@@%:@
_ASBOX
$as_echo "$ac_log"
} >&5
@@ -17990,7 +18129,7 @@ do
"utils/Makefile") CONFIG_FILES="$CONFIG_FILES utils/Makefile" ;;
"widgets/Makefile") CONFIG_FILES="$CONFIG_FILES widgets/Makefile" ;;
- *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;;
esac
done
@@ -18028,7 +18167,7 @@ $debug ||
{
tmp=./conf$$-$RANDOM
(umask 077 && mkdir "$tmp")
-} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
# Set up the scripts for CONFIG_FILES section.
# No need to generate them if there are no CONFIG_FILES.
@@ -18045,7 +18184,7 @@ if test "x$ac_cr" = x; then
fi
ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
- ac_cs_awk_cr='\r'
+ ac_cs_awk_cr='\\r'
else
ac_cs_awk_cr=$ac_cr
fi
@@ -18059,18 +18198,18 @@ _ACEOF
echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
echo "_ACEOF"
} >conf$$subs.sh ||
- as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
. ./conf$$subs.sh ||
- as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
if test $ac_delim_n = $ac_delim_num; then
break
elif $ac_last_try; then
- as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
else
ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
fi
@@ -18092,7 +18231,7 @@ s/'"$ac_delim"'$//
t delim
:nl
h
-s/\(.\{148\}\).*/\1/
+s/\(.\{148\}\)..*/\1/
t more1
s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
p
@@ -18106,7 +18245,7 @@ s/.\{148\}//
t nl
:delim
h
-s/\(.\{148\}\).*/\1/
+s/\(.\{148\}\)..*/\1/
t more2
s/["\\]/\\&/g; s/^/"/; s/$/"/
p
@@ -18159,20 +18298,28 @@ if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
else
cat
fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
- || as_fn_error "could not setup config files machinery" "$LINENO" 5
+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
_ACEOF
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
# trailing colons and then remove the whole line if VPATH becomes empty
# (actually we leave an empty line to preserve line numbers).
if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[ ]*\):*/\1/
+ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
+h
+s///
+s/^/:/
+s/[ ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
s/:*$//
+x
+s/\(=[ ]*\).*/\1/
+G
+s/\n//
s/^[^=]*=[ ]*$//
}'
fi
@@ -18200,7 +18347,7 @@ for ac_last_try in false false :; do
if test -z "$ac_t"; then
break
elif $ac_last_try; then
- as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5
+ as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
else
ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
fi
@@ -18285,7 +18432,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
_ACAWK
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
- as_fn_error "could not setup config headers machinery" "$LINENO" 5
+ as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
fi # test -n "$CONFIG_HEADERS"
@@ -18298,7 +18445,7 @@ do
esac
case $ac_mode$ac_tag in
:[FHL]*:*);;
- :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;;
:[FH]-) ac_tag=-:-;;
:[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
esac
@@ -18326,7 +18473,7 @@ do
[\\/$]*) false;;
*) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
esac ||
- as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;;
esac
case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
as_fn_append ac_file_inputs " '$ac_f'"
@@ -18353,7 +18500,7 @@ $as_echo "$as_me: creating $ac_file" >&6;}
case $ac_tag in
*:-:* | *:-) cat >"$tmp/stdin" \
- || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
esac
;;
esac
@@ -18490,22 +18637,22 @@ s&@MKDIR_P@&$ac_MKDIR_P&;t t
$ac_datarootdir_hack
"
eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
- || as_fn_error "could not create $ac_file" "$LINENO" 5
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
{ ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
{ ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined." >&5
+which seems to be undefined. Please make sure it is defined" >&5
$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined." >&2;}
+which seems to be undefined. Please make sure it is defined" >&2;}
rm -f "$tmp/stdin"
case $ac_file in
-) cat "$tmp/out" && rm -f "$tmp/out";;
*) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
esac \
- || as_fn_error "could not create $ac_file" "$LINENO" 5
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
;;
:H)
#
@@ -18516,19 +18663,19 @@ which seems to be undefined. Please make sure it is defined." >&2;}
$as_echo "/* $configure_input */" \
&& eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
} >"$tmp/config.h" \
- || as_fn_error "could not create $ac_file" "$LINENO" 5
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
$as_echo "$as_me: $ac_file is unchanged" >&6;}
else
rm -f "$ac_file"
mv "$tmp/config.h" "$ac_file" \
- || as_fn_error "could not create $ac_file" "$LINENO" 5
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
fi
else
$as_echo "/* $configure_input */" \
&& eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
- || as_fn_error "could not create -" "$LINENO" 5
+ || as_fn_error $? "could not create -" "$LINENO" 5
fi
# Compute "$ac_file"'s index in $config_headers.
_am_arg="$ac_file"
@@ -18565,7 +18712,7 @@ $as_echo X"$_am_arg" |
}
s/.*/./; q'`/stamp-h$_am_stamp_count
;;
-
+
:C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
$as_echo "$as_me: executing $ac_file commands" >&6;}
;;
@@ -18668,8 +18815,8 @@ $as_echo X"$file" |
done
}
;;
- "libtool":C)
-
+ "libtool":C)
+
# See if we are running on zsh, and set the options which allow our
# commands through without removal of \ escapes.
if test -n "${ZSH_VERSION+set}" ; then
@@ -19105,7 +19252,7 @@ _LT_EOF
;;
esac
-
+
ltmain="$ac_aux_dir/ltmain.sh"
@@ -19486,7 +19633,7 @@ _ACEOF
ac_clean_files=$ac_clean_files_save
test $ac_write_fail = 0 ||
- as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
+ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
# configure is writing to config.log, and then calls config.status.
@@ -19507,7 +19654,7 @@ if test "$no_create" != yes; then
exec 5>>config.log
# Use ||, not &&, to avoid exiting from the if with $? = 1, which
# would make configure fail if this is the last instruction.
- $ac_cs_success || as_fn_exit $?
+ $ac_cs_success || as_fn_exit 1
fi
if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
diff --git a/configure b/autom4te.cache/output.1
old mode 100755
new mode 100644
similarity index 94%
copy from configure
copy to autom4te.cache/output.1
index 4016c53..1c674bb
--- a/configure
+++ b/autom4te.cache/output.1
@@ -1,15 +1,17 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.64 for mathgl 1.10.
-#
-# Report bugs to <mathgl.abalakin at gmail.com>.
-#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software
-# Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
+@%:@! /bin/sh
+@%:@ Guess values for system-dependent variables and create Makefiles.
+@%:@ Generated by GNU Autoconf 2.67 for mathgl 1.10.
+@%:@
+@%:@ Report bugs to <mathgl.abalakin at gmail.com>.
+@%:@
+@%:@
+@%:@ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+@%:@ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+@%:@ Foundation, Inc.
+@%:@
+@%:@
+@%:@ This configure script is free software; the Free Software Foundation
+@%:@ gives unlimited permission to copy, distribute and modify it.
## -------------------- ##
## M4sh Initialization. ##
## -------------------- ##
@@ -24,9 +26,9 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
- case `(set -o) 2>/dev/null` in #(
+ case `(set -o) 2>/dev/null` in @%:@(
*posix*) :
- set -o posix ;; #(
+ set -o posix ;; @%:@(
*) :
;;
esac
@@ -57,7 +59,7 @@ else
as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
as_echo_n_body='eval
arg=$1;
- case $arg in #(
+ case $arg in @%:@(
*"$as_nl"*)
expr "X$arg" : "X\\(.*\\)$as_nl";
arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -89,7 +91,7 @@ fi
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
-case $0 in #((
+case $0 in @%:@((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
@@ -142,9 +144,9 @@ if test "x$CONFIG_SHELL" = x; then
alias -g '\${1+\"\$@\"}'='\"\$@\"'
setopt NO_GLOB_SUBST
else
- case \`(set -o) 2>/dev/null\` in #(
+ case \`(set -o) 2>/dev/null\` in @%:@(
*posix*) :
- set -o posix ;; #(
+ set -o posix ;; @%:@(
*) :
;;
esac
@@ -162,7 +164,7 @@ as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
+
else
exitcode=1; echo positional parameters were not saved.
fi
@@ -178,7 +180,7 @@ else
as_have_required=no
fi
if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
+
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_found=false
@@ -187,7 +189,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
as_found=:
- case $as_dir in #(
+ case $as_dir in @%:@(
/*)
for as_base in sh bash ksh sh5; do
# Try only shells that exist, to save several forks.
@@ -247,36 +249,36 @@ unset CLICOLOR_FORCE GREP_OPTIONS
## --------------------- ##
## M4sh Shell Functions. ##
## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
as_fn_unset ()
{
{ eval $1=; unset $1;}
}
as_unset=as_fn_unset
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
as_fn_set_status ()
{
return $1
-} # as_fn_set_status
+} @%:@ as_fn_set_status
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
as_fn_exit ()
{
set +e
as_fn_set_status $1
exit $1
-} # as_fn_exit
+} @%:@ as_fn_exit
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
as_fn_mkdir_p ()
{
@@ -317,16 +319,16 @@ $as_echo X"$as_dir" |
test -d "$as_dir" && break
done
test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-} # as_fn_mkdir_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
+} @%:@ as_fn_mkdir_p
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
eval 'as_fn_append ()
{
@@ -339,11 +341,11 @@ else
}
fi # as_fn_append
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
eval 'as_fn_arith ()
{
@@ -357,21 +359,21 @@ else
fi # as_fn_arith
-# as_fn_error ERROR [LINENO LOG_FD]
-# ---------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with status $?, using 1 if that was 0.
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
as_fn_error ()
{
- as_status=$?; test $as_status -eq 0 && as_status=1
- if test "$3"; then
- as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
- $as_echo "$as_me: error: $1" >&2
+ $as_echo "$as_me: error: $2" >&2
as_fn_exit $as_status
-} # as_fn_error
+} @%:@ as_fn_error
if expr a : '\(a\)' >/dev/null 2>&1 &&
test "X`expr 00001 : '.*\(...\)'`" = X001; then
@@ -451,7 +453,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
}
ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
+case `echo -n x` in @%:@(((((
-n*)
case `echo 'xy\c'` in
*c*) ECHO_T=' ';; # ECHO_T is single tab character.
@@ -510,10 +512,10 @@ else
if test -d "$1"; then
test -d "$1/.";
else
- case $1 in #(
+ case $1 in @%:@(
-*)set "./$1";;
esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in @%:@((
???[sx]*):;;*)false;;esac;fi
'\'' sh
'
@@ -736,10 +738,11 @@ as_awk_strverscmp='
}
'
-exec 7<&0 </dev/null 6>&1
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
# Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
# so uname gets run too.
ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
@@ -749,7 +752,7 @@ ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
ac_default_prefix=/usr/local
ac_clean_files=
ac_config_libobj_dir=.
-LIBOBJS=
+LIB@&t at OBJS=
cross_compiling=no
subdirs=
MFLAGS=
@@ -803,7 +806,7 @@ ac_includes_default="\
ac_subst_vars='am__EXEEXT_FALSE
am__EXEEXT_TRUE
LTLIBOBJS
-LIBOBJS
+LIB@&t at OBJS
AM_CXXFLAGS
USE_DOCS_FALSE
USE_DOCS_TRUE
@@ -862,6 +865,10 @@ USE_GIF_FALSE
USE_GIF_TRUE
GIF_LIBS
GIF_FLAGS
+USE_HDF4_FALSE
+USE_HDF4_TRUE
+HDF4_LIBS
+HDF4_FLAGS
USE_HDF5_FALSE
USE_HDF5_TRUE
HDF5_LIBS
@@ -958,6 +965,7 @@ INSTALL_PROGRAM
MGL_AGE
MGL_REVISION
MGL_CURRENT
+MGL_RELEASE
target_alias
host_alias
build_alias
@@ -1014,6 +1022,7 @@ enable_gsl
enable_glut
enable_hdf5
enable_hdf5_18
+enable_hdf4
enable_gif
enable_jpeg
enable_fltk
@@ -1101,8 +1110,9 @@ do
fi
case $ac_option in
- *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
- *) ac_optarg=yes ;;
+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *=) ac_optarg= ;;
+ *) ac_optarg=yes ;;
esac
# Accept the important Cygnus configure options, so we can diagnose typos.
@@ -1147,7 +1157,7 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error "invalid feature name: $ac_useropt"
+ as_fn_error $? "invalid feature name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
@@ -1173,7 +1183,7 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error "invalid feature name: $ac_useropt"
+ as_fn_error $? "invalid feature name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
@@ -1377,7 +1387,7 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error "invalid package name: $ac_useropt"
+ as_fn_error $? "invalid package name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
@@ -1393,7 +1403,7 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error "invalid package name: $ac_useropt"
+ as_fn_error $? "invalid package name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
@@ -1423,8 +1433,8 @@ do
| --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
x_libraries=$ac_optarg ;;
- -*) as_fn_error "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information."
+ -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
;;
*=*)
@@ -1432,7 +1442,7 @@ Try \`$0 --help' for more information."
# Reject names that are not valid shell variable names.
case $ac_envvar in #(
'' | [0-9]* | *[!_$as_cr_alnum]* )
- as_fn_error "invalid variable name: \`$ac_envvar'" ;;
+ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
esac
eval $ac_envvar=\$ac_optarg
export $ac_envvar ;;
@@ -1450,13 +1460,13 @@ done
if test -n "$ac_prev"; then
ac_option=--`echo $ac_prev | sed 's/_/-/g'`
- as_fn_error "missing argument to $ac_option"
+ as_fn_error $? "missing argument to $ac_option"
fi
if test -n "$ac_unrecognized_opts"; then
case $enable_option_checking in
no) ;;
- fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
+ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
*) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
esac
fi
@@ -1479,7 +1489,7 @@ do
[\\/$]* | ?:[\\/]* ) continue;;
NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
esac
- as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
+ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
done
# There might be people who depend on the old broken behavior: `$host'
@@ -1493,8 +1503,8 @@ target=$target_alias
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
- $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used." >&2
+ $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used" >&2
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
fi
@@ -1509,9 +1519,9 @@ test "$silent" = yes && exec 6>/dev/null
ac_pwd=`pwd` && test -n "$ac_pwd" &&
ac_ls_di=`ls -di .` &&
ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
- as_fn_error "working directory cannot be determined"
+ as_fn_error $? "working directory cannot be determined"
test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
- as_fn_error "pwd does not report name of working directory"
+ as_fn_error $? "pwd does not report name of working directory"
# Find the source files, if location was not specified.
@@ -1550,11 +1560,11 @@ else
fi
if test ! -r "$srcdir/$ac_unique_file"; then
test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
- as_fn_error "cannot find sources ($ac_unique_file) in $srcdir"
+ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
fi
ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
ac_abs_confdir=`(
- cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
pwd)`
# When building in place, set srcdir=.
if test "$ac_abs_confdir" = "$ac_pwd"; then
@@ -1594,7 +1604,7 @@ Configuration:
--help=short display options specific to this package
--help=recursive display the short help of all the included packages
-V, --version display version information and exit
- -q, --quiet, --silent do not print \`checking...' messages
+ -q, --quiet, --silent do not print \`checking ...' messages
--cache-file=FILE cache test results in FILE [disabled]
-C, --config-cache alias for \`--cache-file=config.cache'
-n, --no-create do not create output files
@@ -1602,9 +1612,9 @@ Configuration:
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
+ @<:@@S|@ac_default_prefix@:>@
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
+ @<:@PREFIX@:>@
By default, \`make install' will install all the files in
\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
@@ -1628,7 +1638,7 @@ Fine tuning of the installation directories:
--infodir=DIR info documentation [DATAROOTDIR/info]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
- --docdir=DIR documentation root [DATAROOTDIR/doc/mathgl]
+ --docdir=DIR documentation root @<:@DATAROOTDIR/doc/mathgl@:>@
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
@@ -1660,10 +1670,10 @@ Optional Features:
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors
- --enable-shared[=PKGS] build shared libraries [default=yes]
- --enable-static[=PKGS] build static libraries [default=yes]
- --enable-fast-install[=PKGS]
- optimize for fast installation [default=yes]
+ --enable-shared@<:@=PKGS@:>@ build shared libraries @<:@default=yes@:>@
+ --enable-static@<:@=PKGS@:>@ build static libraries @<:@default=yes@:>@
+ --enable-fast-install@<:@=PKGS@:>@
+ optimize for fast installation @<:@default=yes@:>@
--disable-libtool-lock avoid locking (might break parallel builds)
--enable-double Turn on double precision in MathGL library
--enable-all Turn on all features
@@ -1673,6 +1683,7 @@ Optional Features:
--enable-glut Turn on glut
--enable-hdf5 Turn on hdf5
--enable-hdf5_18 Turn on hdf5 version 1.8
+ --enable-hdf4 Turn on hdf4
--enable-gif Turn on gif
--enable-jpeg Turn on jpeg
--enable-fltk Turn on fltk
@@ -1686,10 +1697,10 @@ Optional Features:
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --with-pic try to use only PIC/non-PIC objects [default=use
- both]
- --with-gnu-ld assume the C compiler uses GNU ld [default=no]
- --with-qt Path to Qt [Look in PATH and /usr/local/Trolltech]
+ --with-pic try to use only PIC/non-PIC objects @<:@default=use
+ both@:>@
+ --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@
+ --with-qt Path to Qt @<:@Look in PATH and /usr/local/Trolltech@:>@
Some influential environment variables:
CC C compiler command
@@ -1697,13 +1708,13 @@ Some influential environment variables:
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
nonstandard directory <lib dir>
LIBS libraries to pass to the linker, e.g. -l<library>
- CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
you have headers in a nonstandard directory <include dir>
CXX C++ compiler command
CXXFLAGS C++ compiler flags
CPP C preprocessor
CXXCPP C++ preprocessor
- TMPDIR A temporary directory with write access [/tmp]
+ TMPDIR A temporary directory with write access @<:@/tmp@:>@
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
@@ -1772,9 +1783,9 @@ test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
mathgl configure 1.10
-generated by GNU Autoconf 2.64
+generated by GNU Autoconf 2.67
-Copyright (C) 2009 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1785,9 +1796,9 @@ fi
## Autoconf initialization. ##
## ------------------------ ##
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_c_try_compile LINENO
+@%:@ --------------------------
+@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
ac_fn_c_try_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1819,13 +1830,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- return $ac_retval
+ as_fn_set_status $ac_retval
-} # ac_fn_c_try_compile
+} @%:@ ac_fn_c_try_compile
-# ac_fn_cxx_try_compile LINENO
-# ----------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_cxx_try_compile LINENO
+@%:@ ----------------------------
+@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
ac_fn_cxx_try_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1857,13 +1868,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- return $ac_retval
+ as_fn_set_status $ac_retval
-} # ac_fn_cxx_try_compile
+} @%:@ ac_fn_cxx_try_compile
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_c_try_link LINENO
+@%:@ -----------------------
+@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
ac_fn_c_try_link ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1903,26 +1914,26 @@ fi
# left behind by Apple's compiler. We do this before executing the actions.
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- return $ac_retval
+ as_fn_set_status $ac_retval
-} # ac_fn_c_try_link
+} @%:@ ac_fn_c_try_link
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
+@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+@%:@ -------------------------------------------------------
+@%:@ Tests whether HEADER exists and can be compiled using the include files in
+@%:@ INCLUDES, setting the cache variable VAR accordingly.
ac_fn_c_check_header_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
-#include <$2>
+@%:@include <$2>
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
eval "$3=yes"
@@ -1936,11 +1947,11 @@ eval ac_res=\$$3
$as_echo "$ac_res" >&6; }
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-} # ac_fn_c_check_header_compile
+} @%:@ ac_fn_c_check_header_compile
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_c_try_cpp LINENO
+@%:@ ----------------------
+@%:@ Try to preprocess conftest. at S|@ac_ext, and return whether this succeeded.
ac_fn_c_try_cpp ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1959,7 +1970,7 @@ $as_echo "$ac_try_echo"; } >&5
mv -f conftest.er1 conftest.err
fi
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } >/dev/null && {
+ test $ac_status = 0; } > conftest.i && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
}; then :
@@ -1971,14 +1982,14 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- return $ac_retval
+ as_fn_set_status $ac_retval
-} # ac_fn_c_try_cpp
+} @%:@ ac_fn_c_try_cpp
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
+@%:@ ac_fn_c_try_run LINENO
+@%:@ ----------------------
+@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded. Assumes
+@%:@ that executables *can* be run.
ac_fn_c_try_run ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2013,19 +2024,19 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- return $ac_retval
+ as_fn_set_status $ac_retval
-} # ac_fn_c_try_run
+} @%:@ ac_fn_c_try_run
-# ac_fn_c_check_func LINENO FUNC VAR
-# ----------------------------------
-# Tests whether FUNC exists, setting the cache variable VAR accordingly
+@%:@ ac_fn_c_check_func LINENO FUNC VAR
+@%:@ ----------------------------------
+@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly
ac_fn_c_check_func ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -2082,11 +2093,11 @@ eval ac_res=\$$3
$as_echo "$ac_res" >&6; }
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-} # ac_fn_c_check_func
+} @%:@ ac_fn_c_check_func
-# ac_fn_cxx_try_cpp LINENO
-# ------------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_cxx_try_cpp LINENO
+@%:@ ------------------------
+@%:@ Try to preprocess conftest. at S|@ac_ext, and return whether this succeeded.
ac_fn_cxx_try_cpp ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2105,7 +2116,7 @@ $as_echo "$ac_try_echo"; } >&5
mv -f conftest.er1 conftest.err
fi
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } >/dev/null && {
+ test $ac_status = 0; } > conftest.i && {
test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
test ! -s conftest.err
}; then :
@@ -2117,13 +2128,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- return $ac_retval
+ as_fn_set_status $ac_retval
-} # ac_fn_cxx_try_cpp
+} @%:@ ac_fn_cxx_try_cpp
-# ac_fn_cxx_try_link LINENO
-# -------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
+@%:@ ac_fn_cxx_try_link LINENO
+@%:@ -------------------------
+@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
ac_fn_cxx_try_link ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -2163,22 +2174,22 @@ fi
# left behind by Apple's compiler. We do this before executing the actions.
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- return $ac_retval
+ as_fn_set_status $ac_retval
-} # ac_fn_cxx_try_link
+} @%:@ ac_fn_cxx_try_link
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
+@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+@%:@ -------------------------------------------------------
+@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using
+@%:@ the include files in INCLUDES and setting the cache variable VAR
+@%:@ accordingly.
ac_fn_c_check_header_mongrel ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ if eval "test \"\${$3+set}\"" = set; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
$as_echo_n "(cached) " >&6
fi
eval ac_res=\$$3
@@ -2191,7 +2202,7 @@ $as_echo_n "checking $2 usability... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
-#include <$2>
+@%:@include <$2>
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
ac_header_compiler=yes
@@ -2207,14 +2218,14 @@ $as_echo "$ac_header_compiler" >&6; }
$as_echo_n "checking $2 presence... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <$2>
+@%:@include <$2>
_ACEOF
if ac_fn_c_try_cpp "$LINENO"; then :
ac_header_preproc=yes
else
ac_header_preproc=no
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
$as_echo "$ac_header_preproc" >&6; }
@@ -2237,17 +2248,15 @@ $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( cat <<\_ASBOX
-## ---------------------------------------- ##
+( $as_echo "## ---------------------------------------- ##
## Report this to mathgl.abalakin at gmail.com ##
-## ---------------------------------------- ##
-_ASBOX
+## ---------------------------------------- ##"
) | sed "s/^/$as_me: WARNING: /" >&2
;;
esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
eval "$3=\$ac_header_compiler"
@@ -2258,13 +2267,13 @@ $as_echo "$ac_res" >&6; }
fi
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
-} # ac_fn_c_check_header_mongrel
+} @%:@ ac_fn_c_check_header_mongrel
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by mathgl $as_me 1.10, which was
-generated by GNU Autoconf 2.64. Invocation command line was
+generated by GNU Autoconf 2.67. Invocation command line was
$ $0 $@
@@ -2374,11 +2383,9 @@ trap 'exit_status=$?
{
echo
- cat <<\_ASBOX
-## ---------------- ##
+ $as_echo "## ---------------- ##
## Cache variables. ##
-## ---------------- ##
-_ASBOX
+## ---------------- ##"
echo
# The following way of writing the cache mishandles newlines in values,
(
@@ -2412,11 +2419,9 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
)
echo
- cat <<\_ASBOX
-## ----------------- ##
+ $as_echo "## ----------------- ##
## Output variables. ##
-## ----------------- ##
-_ASBOX
+## ----------------- ##"
echo
for ac_var in $ac_subst_vars
do
@@ -2429,11 +2434,9 @@ _ASBOX
echo
if test -n "$ac_subst_files"; then
- cat <<\_ASBOX
-## ------------------- ##
+ $as_echo "## ------------------- ##
## File substitutions. ##
-## ------------------- ##
-_ASBOX
+## ------------------- ##"
echo
for ac_var in $ac_subst_files
do
@@ -2447,11 +2450,9 @@ _ASBOX
fi
if test -s confdefs.h; then
- cat <<\_ASBOX
-## ----------- ##
+ $as_echo "## ----------- ##
## confdefs.h. ##
-## ----------- ##
-_ASBOX
+## ----------- ##"
echo
cat confdefs.h
echo
@@ -2477,27 +2478,27 @@ $as_echo "/* confdefs.h */" > confdefs.h
# Predefined preprocessor variables.
cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
+@%:@define PACKAGE_NAME "$PACKAGE_NAME"
_ACEOF
cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
_ACEOF
cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
+@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
_ACEOF
cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
+@%:@define PACKAGE_STRING "$PACKAGE_STRING"
_ACEOF
cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
_ACEOF
cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
+@%:@define PACKAGE_URL "$PACKAGE_URL"
_ACEOF
@@ -2506,7 +2507,12 @@ _ACEOF
ac_site_file1=NONE
ac_site_file2=NONE
if test -n "$CONFIG_SITE"; then
- ac_site_file1=$CONFIG_SITE
+ # We do not want a PATH search for config.site.
+ case $CONFIG_SITE in @%:@((
+ -*) ac_site_file1=./$CONFIG_SITE;;
+ */*) ac_site_file1=$CONFIG_SITE;;
+ *) ac_site_file1=./$CONFIG_SITE;;
+ esac
elif test "x$prefix" != xNONE; then
ac_site_file1=$prefix/share/config.site
ac_site_file2=$prefix/etc/config.site
@@ -2517,18 +2523,22 @@ fi
for ac_site_file in "$ac_site_file1" "$ac_site_file2"
do
test "x$ac_site_file" = xNONE && continue
- if test -r "$ac_site_file"; then
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
$as_echo "$as_me: loading site script $ac_site_file" >&6;}
sed 's/^/| /' "$ac_site_file" >&5
- . "$ac_site_file"
+ . "$ac_site_file" \
+ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5 ; }
fi
done
if test -r "$cache_file"; then
- # Some versions of bash will fail to source /dev/null (special
- # files actually), so we avoid doing that.
- if test -f "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special files
+ # actually), so we avoid doing that. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
$as_echo "$as_me: loading cache $cache_file" >&6;}
case $cache_file in
@@ -2597,7 +2607,7 @@ if $ac_cache_corrupted; then
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
fi
## -------------------- ##
## Main body of script. ##
@@ -2611,19 +2621,28 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+MGL_RELEASE=1.10
+
+
ac_aux_dir=
for ac_dir in config "$srcdir"/config; do
- for ac_t in install-sh install.sh shtool; do
- if test -f "$ac_dir/$ac_t"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/$ac_t -c"
- break 2
- fi
- done
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
done
if test -z "$ac_aux_dir"; then
- as_fn_error "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5
fi
# These three variables are undocumented and unsupported,
@@ -2681,7 +2700,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
# Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
+case $as_dir/ in @%:@((
./ | .// | /[cC]/* | \
/etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
@@ -2759,11 +2778,11 @@ am_lf='
'
case `pwd` in
*[\\\"\#\$\&\'\`$am_lf]*)
- as_fn_error "unsafe absolute working directory name" "$LINENO" 5;;
+ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5 ;;
esac
case $srcdir in
*[\\\"\#\$\&\'\`$am_lf\ \ ]*)
- as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+ as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5 ;;
esac
# Do `set' in a subshell so we don't clobber the current shell's
@@ -2785,8 +2804,8 @@ if (
# if, for instance, CONFIG_SHELL is bash and it inherits a
# broken ls alias from the environment. This has actually
# happened. Such a system could not be considered "sane".
- as_fn_error "ls -t appears to fail. Make sure there is not a broken
-alias in your environment" "$LINENO" 5
+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
+alias in your environment" "$LINENO" 5
fi
test "$2" = conftest.file
@@ -2795,8 +2814,8 @@ then
# Ok.
:
else
- as_fn_error "newly created file is older than distributed files!
-Check your system clock" "$LINENO" 5
+ as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
@@ -2967,6 +2986,7 @@ IFS=$as_save_IFS
fi
+ test -d ./--version && rmdir ./--version
if test "${ac_cv_path_mkdir+set}" = set; then
MKDIR_P="$ac_cv_path_mkdir -p"
else
@@ -2974,7 +2994,6 @@ fi
# value for MKDIR_P within a source directory, because that will
# break other packages using the cache if that directory is
# removed, or if the value is a relative name.
- test -d ./--version && rmdir ./--version
MKDIR_P="$ac_install_sh -d"
fi
fi
@@ -3033,7 +3052,7 @@ done
$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
set x ${MAKE-make}
ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
cat >conftest.make <<\_ACEOF
@@ -3041,7 +3060,7 @@ SHELL = /bin/sh
all:
@echo '@@@%%%=$(MAKE)=@@@%%%'
_ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
case `${MAKE-make} -f conftest.make 2>/dev/null` in
*@@@%%%=?*=@@@%%%*)
eval ac_cv_prog_make_${ac_make}_set=yes;;
@@ -3075,7 +3094,7 @@ if test "`cd $srcdir && pwd`" != "`pwd`"; then
am__isrc=' -I$(srcdir)'
# test to see if srcdir already configured
if test -f $srcdir/config.status; then
- as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
fi
fi
@@ -3095,12 +3114,12 @@ fi
cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
+@%:@define PACKAGE "$PACKAGE"
_ACEOF
-
+
cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
+@%:@define VERSION "$VERSION"
_ACEOF
# Some tools Automake needs.
@@ -3305,7 +3324,7 @@ if test $ac_prog_rejected = yes; then
# We found a bogon in the path, so make sure we never use it.
set dummy $ac_cv_prog_CC
shift
- if test $# != 0; then
+ if test $@%:@ != 0; then
# We chose a different compiler from the bogus one.
# However, it has the same basename, so the bogon will be chosen
# first if we set CC to just the basename; use the full file name.
@@ -3432,8 +3451,8 @@ fi
test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "no acceptable C compiler found in \$PATH
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5 ; }
# Provide some information about the compiler.
$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
@@ -3454,32 +3473,30 @@ $as_echo "$ac_try_echo"; } >&5
... rest of stderr output deleted ...
10q' conftest.err >conftest.er1
cat conftest.er1 >&5
- rm -f conftest.er1 conftest.err
fi
+ rm -f conftest.er1 conftest.err
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stdio.h>
+
int
main ()
{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
;
return 0;
}
_ACEOF
ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out conftest.out"
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
# The possible output files:
@@ -3541,62 +3558,28 @@ test "$ac_cv_exeext" = no && ac_cv_exeext=
else
ac_file=''
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
if test -z "$ac_file"; then :
- $as_echo "$as_me: failed program was:" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ as_fn_set_status 77
-as_fn_error "C compiler cannot create executables
-See \`config.log' for more details." "$LINENO" 5; }; }
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5 ; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
ac_exeext=$ac_cv_exeext
-# Check that the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
- if { ac_try='./$ac_file'
- { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then
- cross_compiling=no
- else
- if test "$cross_compiling" = maybe; then
- cross_compiling=yes
- else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." "$LINENO" 5; }
- fi
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out conftest.out
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
ac_clean_files=$ac_clean_files_save
-# Check that the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
$as_echo_n "checking for suffix of executables... " >&6; }
if { { ac_try="$ac_link"
@@ -3626,16 +3609,75 @@ done
else
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5 ; }
fi
-rm -f conftest$ac_cv_exeext
+rm -f conftest conftest$ac_cv_exeext
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
$as_echo "$ac_cv_exeext" >&6; }
rm -f conftest.$ac_ext
EXEEXT=$ac_cv_exeext
ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+@%:@include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+ { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if { ac_try='./conftest$ac_cv_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5 ; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
$as_echo_n "checking for suffix of object files... " >&6; }
if test "${ac_cv_objext+set}" = set; then :
@@ -3678,8 +3720,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5 ; }
fi
rm -f conftest.$ac_cv_objext conftest.$ac_ext
fi
@@ -3760,7 +3802,7 @@ main ()
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
-
+
else
ac_c_werror_flag=$ac_save_c_werror_flag
CFLAGS="-g"
@@ -3890,7 +3932,7 @@ $as_echo "unsupported" >&6; } ;;
$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
esac
if test "x$ac_cv_prog_cc_c89" != xno; then :
-
+
fi
ac_ext=c
@@ -3942,9 +3984,9 @@ fi
$as_echo "$_am_result" >&6; }
rm -f confinc confmf
-# Check whether --enable-dependency-tracking was given.
+@%:@ Check whether --enable-dependency-tracking was given.
if test "${enable_dependency_tracking+set}" = set; then :
- enableval=$enable_dependency_tracking;
+ enableval=$enable_dependency_tracking;
fi
if test "x$enable_dependency_tracking" != xno; then
@@ -4077,7 +4119,7 @@ fi
$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
- if
+ if
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
am__fastdepCC_TRUE=
@@ -4218,8 +4260,8 @@ $as_echo "$ac_try_echo"; } >&5
... rest of stderr output deleted ...
10q' conftest.err >conftest.er1
cat conftest.er1 >&5
- rm -f conftest.er1 conftest.err
fi
+ rm -f conftest.er1 conftest.err
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
@@ -4297,7 +4339,7 @@ main ()
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
-
+
else
ac_cxx_werror_flag=$ac_save_cxx_werror_flag
CXXFLAGS="-g"
@@ -4461,7 +4503,7 @@ fi
$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
- if
+ if
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
am__fastdepCXX_TRUE=
@@ -4476,7 +4518,7 @@ fi
# Make sure we can run config.sub.
$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
- as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
$as_echo_n "checking build system type... " >&6; }
@@ -4487,16 +4529,16 @@ else
test "x$ac_build_alias" = x &&
ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
test "x$ac_build_alias" = x &&
- as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
$as_echo "$ac_cv_build" >&6; }
case $ac_cv_build in
*-*-*) ;;
-*) as_fn_error "invalid value of canonical build" "$LINENO" 5;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5 ;;
esac
build=$ac_cv_build
ac_save_IFS=$IFS; IFS='-'
@@ -4521,7 +4563,7 @@ else
ac_cv_host=$ac_cv_build
else
ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
fi
fi
@@ -4529,7 +4571,7 @@ fi
$as_echo "$ac_cv_host" >&6; }
case $ac_cv_host in
*-*-*) ;;
-*) as_fn_error "invalid value of canonical host" "$LINENO" 5;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5 ;;
esac
host=$ac_cv_host
ac_save_IFS=$IFS; IFS='-'
@@ -4830,21 +4872,21 @@ esac
test -z "$AS" && AS=as
-
-
-
+
+
+
test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-
-
+
+
+
test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
+
+
+
@@ -4860,17 +4902,17 @@ esac
-macro_version='2.2.6'
-macro_revision='1.3012'
-
-
-
-
-
-
+macro_version='2.2.6b'
+macro_revision='1.3017'
+
+
+
+
+
+
@@ -4934,7 +4976,7 @@ esac
done
IFS=$as_save_IFS
if test -z "$ac_cv_path_SED"; then
- as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5
+ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
fi
else
ac_cv_path_SED=$SED
@@ -4949,14 +4991,14 @@ $as_echo "$ac_cv_path_SED" >&6; }
test -z "$SED" && SED=sed
Xsed="$SED -e 1s/^X//"
+
+
+
-
-
-
-
-
-
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
@@ -5010,7 +5052,7 @@ esac
done
IFS=$as_save_IFS
if test -z "$ac_cv_path_GREP"; then
- as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
fi
else
ac_cv_path_GREP=$GREP
@@ -5020,7 +5062,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
$as_echo "$ac_cv_path_GREP" >&6; }
GREP="$ac_cv_path_GREP"
-
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
$as_echo_n "checking for egrep... " >&6; }
@@ -5076,7 +5118,7 @@ esac
done
IFS=$as_save_IFS
if test -z "$ac_cv_path_EGREP"; then
- as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
fi
else
ac_cv_path_EGREP=$EGREP
@@ -5087,7 +5129,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
$as_echo "$ac_cv_path_EGREP" >&6; }
EGREP="$ac_cv_path_EGREP"
-
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
$as_echo_n "checking for fgrep... " >&6; }
@@ -5143,7 +5185,7 @@ esac
done
IFS=$as_save_IFS
if test -z "$ac_cv_path_FGREP"; then
- as_fn_error "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
fi
else
ac_cv_path_FGREP=$FGREP
@@ -5154,29 +5196,29 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
$as_echo "$ac_cv_path_FGREP" >&6; }
FGREP="$ac_cv_path_FGREP"
-
+
test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-# Check whether --with-gnu-ld was given.
+@%:@ Check whether --with-gnu-ld was given.
if test "${with_gnu_ld+set}" = set; then :
withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
else
@@ -5259,7 +5301,7 @@ else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
-test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
if test "${lt_cv_prog_gnu_ld+set}" = set; then :
@@ -5282,9 +5324,9 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
@@ -5442,7 +5484,7 @@ esac
fi
fi
-
+
if test "$DUMPBIN" != ":"; then
NM="$DUMPBIN"
fi
@@ -5450,9 +5492,9 @@ fi
test -z "$NM" && NM=nm
-
-
-
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
$as_echo_n "checking the name lister ($NM) interface... " >&6; }
@@ -5461,13 +5503,13 @@ if test "${lt_cv_nm_interface+set}" = set; then :
else
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
- (eval echo "\"\$as_me:5464: $ac_compile\"" >&5)
+ (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&5)
(eval "$ac_compile" 2>conftest.err)
cat conftest.err >&5
- (eval echo "\"\$as_me:5467: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
(eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
cat conftest.err >&5
- (eval echo "\"\$as_me:5470: output\"" >&5)
+ (eval echo "\"\$as_me:__oline__: output\"" >&5)
cat conftest.out >&5
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
lt_cv_nm_interface="MS dumpbin"
@@ -5617,9 +5659,9 @@ $as_echo "none" >&6; }
fi
max_cmd_len=$lt_cv_sys_max_cmd_len
-
-
-
+
+
+
: ${CP="cp -f"}
@@ -5656,9 +5698,9 @@ else
lt_unset=false
fi
-
-
-
+
+
+
# test EBCDIC or ASCII
case `echo X|tr X '\101'` in
@@ -5673,13 +5715,13 @@ case `echo X|tr X '\101'` in
;;
esac
+
+
+
-
-
-
-
-
-
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
$as_echo_n "checking for $LD option to reload object files... " >&6; }
@@ -5706,13 +5748,13 @@ case $host_os in
;;
esac
+
+
+
-
-
-
-
-
-
+
+
+
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
@@ -5930,7 +5972,7 @@ irix5* | irix6* | nonstopux*)
;;
# This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
lt_cv_deplibs_check_method=pass_all
;;
@@ -6016,14 +6058,14 @@ deplibs_check_method=$lt_cv_deplibs_check_method
test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
-
-
-
-
-
-
+
+
+
if test -n "$ac_tool_prefix"; then
@@ -6121,14 +6163,14 @@ fi
test -z "$AR" && AR=ar
test -z "$AR_FLAGS" && AR_FLAGS=cru
+
+
+
-
-
-
-
-
-
+
+
+
if test -n "$ac_tool_prefix"; then
@@ -6225,9 +6267,9 @@ fi
test -z "$STRIP" && STRIP=:
-
-
-
+
+
+
if test -n "$ac_tool_prefix"; then
@@ -6324,9 +6366,9 @@ fi
test -z "$RANLIB" && RANLIB=:
-
-
-
+
+
+
# Determine commands to create old-style static archives.
@@ -6346,38 +6388,38 @@ if test -n "$RANLIB"; then
old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
# If no C compiler was specified, use CC.
LTCC=${LTCC-"$CC"}
@@ -6395,7 +6437,7 @@ $as_echo_n "checking command to parse $NM output from $compiler object... " >&6;
if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then :
$as_echo_n "(cached) " >&6
else
-
+
# These are sane defaults that work on at least a few old systems.
# [They come from Ultrix. What could be older than Ultrix?!! ;)]
@@ -6618,30 +6660,30 @@ $as_echo "ok" >&6; }
fi
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-# Check whether --enable-libtool-lock was given.
+@%:@ Check whether --enable-libtool-lock was given.
if test "${enable_libtool_lock+set}" = set; then :
- enableval=$enable_libtool_lock;
+ enableval=$enable_libtool_lock;
fi
test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
@@ -6670,7 +6712,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 6673 "configure"' > conftest.$ac_ext
+ echo '#line __oline__ "configure"' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -7295,30 +7337,30 @@ else
OTOOL64="$ac_cv_prog_OTOOL64"
fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
@@ -7378,7 +7420,7 @@ fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS="$save_LDFLAGS"
-
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
@@ -7446,26 +7488,26 @@ do
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
Syntax error
_ACEOF
if ac_fn_c_try_cpp "$LINENO"; then :
-
+
else
# Broken: fails on valid input.
continue
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
_ACEOF
if ac_fn_c_try_cpp "$LINENO"; then :
# Broken: success on invalid input.
@@ -7475,18 +7517,18 @@ else
ac_preproc_ok=:
break
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok; then :
break
fi
done
ac_cv_prog_CPP=$CPP
-
+
fi
CPP=$ac_cv_prog_CPP
else
@@ -7505,26 +7547,26 @@ do
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
Syntax error
_ACEOF
if ac_fn_c_try_cpp "$LINENO"; then :
-
+
else
# Broken: fails on valid input.
continue
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
_ACEOF
if ac_fn_c_try_cpp "$LINENO"; then :
# Broken: success on invalid input.
@@ -7534,18 +7576,18 @@ else
ac_preproc_ok=:
break
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok; then :
-
+
else
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5 ; }
fi
ac_ext=c
@@ -7591,7 +7633,7 @@ if test $ac_cv_header_stdc = yes; then
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
$EGREP "memchr" >/dev/null 2>&1; then :
-
+
else
ac_cv_header_stdc=no
fi
@@ -7608,7 +7650,7 @@ if test $ac_cv_header_stdc = yes; then
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
$EGREP "free" >/dev/null 2>&1; then :
-
+
else
ac_cv_header_stdc=no
fi
@@ -7649,7 +7691,7 @@ main ()
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
-
+
else
ac_cv_header_stdc=no
fi
@@ -7662,8 +7704,8 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
$as_echo "$ac_cv_header_stdc" >&6; }
if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
fi
@@ -7674,12 +7716,11 @@ do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
"
-eval as_val=\$$as_ac_Header
- if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
-
+
fi
done
@@ -7691,9 +7732,9 @@ do :
"
if test "x$ac_cv_header_dlfcn_h" = x""yes; then :
cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
+@%:@define HAVE_DLFCN_H 1
_ACEOF
-
+
fi
done
@@ -7830,8 +7871,8 @@ $as_echo "$ac_try_echo"; } >&5
... rest of stderr output deleted ...
10q' conftest.err >conftest.er1
cat conftest.er1 >&5
- rm -f conftest.er1 conftest.err
fi
+ rm -f conftest.er1 conftest.err
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
@@ -7909,7 +7950,7 @@ main ()
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
-
+
else
ac_cxx_werror_flag=$ac_save_cxx_werror_flag
CXXFLAGS="-g"
@@ -8073,7 +8114,7 @@ fi
$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
- if
+ if
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
am__fastdepCXX_TRUE=
@@ -8112,26 +8153,26 @@ do
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
Syntax error
_ACEOF
if ac_fn_cxx_try_cpp "$LINENO"; then :
-
+
else
# Broken: fails on valid input.
continue
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
_ACEOF
if ac_fn_cxx_try_cpp "$LINENO"; then :
# Broken: success on invalid input.
@@ -8141,18 +8182,18 @@ else
ac_preproc_ok=:
break
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok; then :
break
fi
done
ac_cv_prog_CXXCPP=$CXXCPP
-
+
fi
CXXCPP=$ac_cv_prog_CXXCPP
else
@@ -8171,26 +8212,26 @@ do
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
Syntax error
_ACEOF
if ac_fn_cxx_try_cpp "$LINENO"; then :
-
+
else
# Broken: fails on valid input.
continue
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
_ACEOF
if ac_fn_cxx_try_cpp "$LINENO"; then :
# Broken: success on invalid input.
@@ -8200,13 +8241,13 @@ else
ac_preproc_ok=:
break
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok; then :
-
+
else
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -8231,9 +8272,9 @@ fi
-
-
- # Check whether --enable-shared was given.
+
+
+ @%:@ Check whether --enable-shared was given.
if test "${enable_shared+set}" = set; then :
enableval=$enable_shared; p=${PACKAGE-default}
case $enableval in
@@ -8257,14 +8298,14 @@ else
fi
+
+
+
+
-
-
-
-
- # Check whether --enable-static was given.
+ @%:@ Check whether --enable-static was given.
if test "${enable_static+set}" = set; then :
enableval=$enable_static; p=${PACKAGE-default}
case $enableval in
@@ -8288,15 +8329,15 @@ else
fi
+
+
+
+
-
-
-
-
-
-# Check whether --with-pic was given.
+
+@%:@ Check whether --with-pic was given.
if test "${with_pic+set}" = set; then :
withval=$with_pic; pic_mode="$withval"
else
@@ -8307,12 +8348,12 @@ fi
test -z "$pic_mode" && pic_mode=default
+
+
+
-
-
-
- # Check whether --enable-fast-install was given.
+ @%:@ Check whether --enable-fast-install was given.
if test "${enable_fast_install+set}" = set; then :
enableval=$enable_fast_install; p=${PACKAGE-default}
case $enableval in
@@ -8337,12 +8378,12 @@ fi
+
+
+
-
-
-
-
+
# This can be used to rebuild libtool when needed
@@ -8352,42 +8393,42 @@ LIBTOOL_DEPS="$ltmain"
LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
if test -n "${ZSH_VERSION+set}" ; then
@@ -8413,12 +8454,12 @@ fi
$as_echo "$lt_cv_objdir" >&6; }
objdir=$lt_cv_objdir
-
-
-
+
+
+
cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
+@%:@define LT_OBJDIR "$lt_cv_objdir/"
_ACEOF
@@ -8426,14 +8467,14 @@ _ACEOF
+
+
+
-
-
-
-
-
-
+
+
+
@@ -8562,9 +8603,9 @@ else
$as_echo "no" >&6; }
fi
-
-
-
+
+
+
if test -z "$lt_cv_path_MAGIC_CMD"; then
if test -n "$ac_tool_prefix"; then
@@ -8695,7 +8736,7 @@ $RM -r conftest*
if test -n "$compiler"; then
-
+
lt_prog_compiler_no_builtin_flag=
if test "$GCC" = yes; then
@@ -8719,11 +8760,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8722: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:8726: \$? = $ac_status" >&5
+ echo "$as_me:__oline__: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -8747,9 +8788,9 @@ fi
fi
-
-
-
+
+
+
lt_prog_compiler_wl=
@@ -8888,7 +8929,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
lt_prog_compiler_static='-non_shared'
;;
- linux* | k*bsd*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
case $cc_basename in
# old Intel for x86_64 which still supported -KPIC.
ecc*)
@@ -9025,15 +9066,15 @@ case $host_os in
lt_prog_compiler_pic=
;;
*)
- lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC"
;;
esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
$as_echo "$lt_prog_compiler_pic" >&6; }
-
-
-
+
+
+
#
@@ -9048,7 +9089,7 @@ else
lt_cv_prog_compiler_pic_works=no
ac_outfile=conftest.$ac_objext
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
- lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+ lt_compiler_flag="$lt_prog_compiler_pic@&t@ -DPIC"
# Insert the option either (1) after the last *FLAGS variable, or
# (2) before a word containing "conftest.", or (3) at the end.
# Note that $ac_compile itself does not contain backslashes and begins
@@ -9058,11 +9099,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9061: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:9065: \$? = $ac_status" >&5
+ echo "$as_me:__oline__: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -9090,9 +9131,9 @@ fi
fi
-
-
-
+
+
+
#
@@ -9137,9 +9178,9 @@ else
fi
-
-
-
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
@@ -9163,11 +9204,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9166: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:9170: \$? = $ac_status" >&5
+ echo "$as_me:__oline__: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -9192,9 +9233,9 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
@@ -9218,11 +9259,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9221: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:9225: \$? = $ac_status" >&5
+ echo "$as_me:__oline__: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -9272,9 +9313,9 @@ else
need_locks=no
fi
-
-
-
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
@@ -9361,6 +9402,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
fi
supports_anon_versioning=no
case `$LD -v 2>&1` in
+ *GNU\ gold*) supports_anon_versioning=yes ;;
*\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
*\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
*\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
@@ -9452,7 +9494,7 @@ _LT_EOF
archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
;;
- gnu* | linux* | tpf* | k*bsd*-gnu)
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
tmp_diet=no
if test "$host_os" = linux-dietlibc; then
case $cc_basename in
@@ -9735,7 +9777,7 @@ main ()
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
-
+
lt_aix_libpath_sed='
/Import File Strings/,/^$/ {
/^0/ {
@@ -9775,7 +9817,7 @@ main ()
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
-
+
lt_aix_libpath_sed='
/Import File Strings/,/^$/ {
/^0/ {
@@ -9848,8 +9890,8 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
darwin* | rhapsody*)
-
-
+
+
archive_cmds_need_lc=no
hardcode_direct=no
hardcode_automatic=yes
@@ -9867,7 +9909,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
+
else
ld_shlibs=no
fi
@@ -10008,7 +10050,7 @@ int foo(void) {}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-
+
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
@@ -10274,17 +10316,17 @@ test "$ld_shlibs" = no && can_build_shared=no
with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
#
@@ -10351,159 +10393,159 @@ $as_echo "$archive_cmds_need_lc" >&6; }
esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
@@ -10914,7 +10956,7 @@ linux*oldld* | linux*aout* | linux*coff*)
;;
# This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
version_type=linux
need_lib_prefix=no
need_version=no
@@ -11186,89 +11228,89 @@ if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
@@ -11309,9 +11351,9 @@ elif test "$shlibpath_overrides_runpath" = yes ||
enable_fast_install=needless
fi
-
-
-
+
+
+
if test "x$enable_dlopen" != xyes; then
@@ -11380,11 +11422,11 @@ $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
else
-
+
lt_cv_dlopen="dyld"
lt_cv_dlopen_libs=
lt_cv_dlopen_self=yes
-
+
fi
;;
@@ -11555,19 +11597,19 @@ if test "x$ac_cv_lib_dld_dld_link" = x""yes; then :
lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
fi
-
+
fi
-
+
fi
-
+
fi
-
+
fi
-
+
fi
;;
@@ -11601,7 +11643,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11604 "configure"
+#line __oline__ "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11679,7 +11721,7 @@ _LT_EOF
fi
rm -fr conftest*
-
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
$as_echo "$lt_cv_dlopen_self" >&6; }
@@ -11697,7 +11739,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11700 "configure"
+#line __oline__ "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11775,7 +11817,7 @@ _LT_EOF
fi
rm -fr conftest*
-
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
$as_echo "$lt_cv_dlopen_self_static" >&6; }
@@ -11798,22 +11840,22 @@ $as_echo "$lt_cv_dlopen_self_static" >&6; }
esac
fi
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
striplib=
old_striplib=
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
@@ -11844,14 +11886,14 @@ $as_echo "no" >&6; }
esac
fi
+
+
+
-
-
-
-
-
-
+
+
+
@@ -11892,7 +11934,7 @@ $as_echo_n "checking whether to build static libraries... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
$as_echo "$enable_static" >&6; }
-
+
fi
@@ -11904,7 +11946,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
CC="$lt_save_CC"
-
+
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -11953,7 +11995,7 @@ if test "$_lt_caught_CXX_error" != yes; then
lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
+
@@ -12027,9 +12069,9 @@ cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
if test "$GXX" = yes; then
# Set up default GNU C++ configuration
+
-
-# Check whether --with-gnu-ld was given.
+@%:@ Check whether --with-gnu-ld was given.
if test "${with_gnu_ld+set}" = set; then :
withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
else
@@ -12112,7 +12154,7 @@ else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
-test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
if test "${lt_cv_prog_gnu_ld+set}" = set; then :
@@ -12296,7 +12338,7 @@ main ()
}
_ACEOF
if ac_fn_cxx_try_link "$LINENO"; then :
-
+
lt_aix_libpath_sed='
/Import File Strings/,/^$/ {
/^0/ {
@@ -12337,7 +12379,7 @@ main ()
}
_ACEOF
if ac_fn_cxx_try_link "$LINENO"; then :
-
+
lt_aix_libpath_sed='
/Import File Strings/,/^$/ {
/^0/ {
@@ -12414,8 +12456,8 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
fi
;;
darwin* | rhapsody*)
-
-
+
+
archive_cmds_need_lc_CXX=no
hardcode_direct_CXX=no
hardcode_automatic_CXX=yes
@@ -12637,7 +12679,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
inherit_rpath_CXX=yes
;;
- linux* | k*bsd*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
case $cc_basename in
KCC*)
# Kuck and Associates, Inc. (KAI) C++ Compiler
@@ -13275,34 +13317,34 @@ if test -n "${compiler_lib_search_path_CXX}"; then
compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
lt_prog_compiler_wl_CXX=
@@ -13465,7 +13507,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
;;
esac
;;
- linux* | k*bsd*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
case $cc_basename in
KCC*)
# KAI C++ Compiler
@@ -13623,7 +13665,7 @@ case $host_os in
lt_prog_compiler_pic_CXX=
;;
*)
- lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+ lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX@&t@ -DPIC"
;;
esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5
@@ -13643,7 +13685,7 @@ else
lt_cv_prog_compiler_pic_works_CXX=no
ac_outfile=conftest.$ac_objext
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
- lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+ lt_compiler_flag="$lt_prog_compiler_pic_CXX@&t@ -DPIC"
# Insert the option either (1) after the last *FLAGS variable, or
# (2) before a word containing "conftest.", or (3) at the end.
# Note that $ac_compile itself does not contain backslashes and begins
@@ -13653,11 +13695,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:13656: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:13660: \$? = $ac_status" >&5
+ echo "$as_me:__oline__: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -13752,11 +13794,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:13755: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:13759: \$? = $ac_status" >&5
+ echo "$as_me:__oline__: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -13804,11 +13846,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:13807: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:13811: \$? = $ac_status" >&5
+ echo "$as_me:__oline__: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -14382,7 +14424,7 @@ linux*oldld* | linux*aout* | linux*coff*)
;;
# This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
version_type=linux
need_lib_prefix=no
need_version=no
@@ -14729,7 +14771,7 @@ fi
-
+
fi # test -n "$compiler"
@@ -14758,8 +14800,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
+
+
@@ -14772,12 +14814,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
-# Check whether --enable-double was given.
+@%:@ Check whether --enable-double was given.
if test "${enable_double+set}" = set; then :
enableval=$enable_double; case "${enableval}" in
yes) double=true ;;
no) double=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-double" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-double" "$LINENO" 5 ;;
esac
else
double=false
@@ -14785,45 +14827,45 @@ fi
if (test x$double = xtrue) ;then
-
-$as_echo "#define MGL_USE_DOUBLE 1" >>confdefs.h
+
+$as_echo "@%:@define MGL_USE_DOUBLE 1" >>confdefs.h
else
-
-$as_echo "#define MGL_USE_DOUBLE 0" >>confdefs.h
+
+$as_echo "@%:@define MGL_USE_DOUBLE 0" >>confdefs.h
fi
-# Check whether --enable-all was given.
+@%:@ Check whether --enable-all was given.
if test "${enable_all+set}" = set; then :
enableval=$enable_all; case "${enableval}" in
yes) all=true ;;
no) all=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-all" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-all" "$LINENO" 5 ;;
esac
else
all=false
fi
-# Check whether --enable-langall was given.
+@%:@ Check whether --enable-langall was given.
if test "${enable_langall+set}" = set; then :
enableval=$enable_langall; case "${enableval}" in
yes) langall=true ;;
no) langall=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-langall" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-langall" "$LINENO" 5 ;;
esac
else
langall=false
fi
-# Check whether --enable-pthread was given.
+@%:@ Check whether --enable-pthread was given.
if test "${enable_pthread+set}" = set; then :
enableval=$enable_pthread; case "${enableval}" in
yes) pthread=true ;;
no) pthread=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-pthread" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-pthread" "$LINENO" 5 ;;
esac
else
pthread=true
@@ -14831,7 +14873,7 @@ fi
ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
if test "x$ac_cv_header_pthread_h" = x""yes; then :
- (test x$all = xtrue || test x$pthread = xtrue) && PTHREAD_FLAGS=-DHAVE_PTHREAD
+ (test x$all = xtrue || test x$pthread = xtrue) && PTHREAD_FLAGS=-DHAVE_PTHREAD
else
(test x$all = xtrue || test x$pthread = xtrue) && echo "Please install posix threads headers" && exit
fi
@@ -14869,7 +14911,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_main" >&5
$as_echo "$ac_cv_lib_pthread_main" >&6; }
if test "x$ac_cv_lib_pthread_main" = x""yes; then :
- (test x$all = xtrue || test x$pthread = xtrue) && PTHREAD_LIBS=-lpthread
+ (test x$all = xtrue || test x$pthread = xtrue) && PTHREAD_LIBS=-lpthread
else
(test x$all = xtrue || test x$pthread = xtrue) && echo "Please install posix threads library" && exit
fi
@@ -14883,12 +14925,12 @@ else
fi
-# Check whether --enable-gsl was given.
+@%:@ Check whether --enable-gsl was given.
if test "${enable_gsl+set}" = set; then :
enableval=$enable_gsl; case "${enableval}" in
yes) gsl=true ;;
no) gsl=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-gsl" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-gsl" "$LINENO" 5 ;;
esac
else
gsl=true
@@ -14980,7 +15022,7 @@ fi
fi
else
GSL_FLAGS=-DNO_GSL
-
+
fi
if test x$test_gsl = xtrue; then
USE_GSL_TRUE=
@@ -14991,12 +15033,12 @@ else
fi
-# Check whether --enable-glut was given.
+@%:@ Check whether --enable-glut was given.
if test "${enable_glut+set}" = set; then :
enableval=$enable_glut; case "${enableval}" in
yes) glut=true ;;
no) glut=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-glut" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-glut" "$LINENO" 5 ;;
esac
else
glut=false
@@ -15006,10 +15048,10 @@ fi
case "${host}" in
*darwin*)
GL_LIBS="-framework OpenGL"
-
+
if (test x$all = xtrue || test x$glut = xtrue) ;then
GLUT_LIBS="-framework GLUT -framework OpenGL"
-
+
fi
;;
@@ -15017,7 +15059,7 @@ case "${host}" in
GL_LIBS=opengl32
ac_fn_c_check_header_mongrel "$LINENO" "GL/gl.h" "ac_cv_header_GL_gl_h" "$ac_includes_default"
if test "x$ac_cv_header_GL_gl_h" = x""yes; then :
-
+
else
echo "Please install OpenGL headers (GL/gl.h)"; exit
fi
@@ -15026,7 +15068,7 @@ fi
as_ac_Lib=`$as_echo "ac_cv_lib_${GL_LIBS}''_main" | $as_tr_sh`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l${GL_LIBS}" >&5
$as_echo_n "checking for main in -l${GL_LIBS}... " >&6; }
-if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$as_ac_Lib+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -15055,9 +15097,8 @@ fi
eval ac_res=\$$as_ac_Lib
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
-eval as_val=\$$as_ac_Lib
- if test "x$as_val" = x""yes; then :
- GL_LIBS=-l${GL_LIBS}
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+ GL_LIBS=-l${GL_LIBS}
else
echo "Please install OpenGL library (lib${GL_LIBS}.a)"; exit
fi
@@ -15065,7 +15106,7 @@ fi
GLUT_LIBS=glut32
ac_fn_c_check_header_mongrel "$LINENO" "GL/glut.h" "ac_cv_header_GL_glut_h" "$ac_includes_default"
if test "x$ac_cv_header_GL_glut_h" = x""yes; then :
- (test x$all = xtrue || test x$glut = xtrue) && GLUT_FLAGS=-DHAVE_GLUT
+ (test x$all = xtrue || test x$glut = xtrue) && GLUT_FLAGS=-DHAVE_GLUT
else
(test x$all = xtrue || test x$glut = xtrue) && (echo "Please install FreeGLUT headers (GL/glut.h)" && exit)
fi
@@ -15074,7 +15115,7 @@ fi
as_ac_Lib=`$as_echo "ac_cv_lib_${GLUT_LIBS}''_main" | $as_tr_sh`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l${GLUT_LIBS}" >&5
$as_echo_n "checking for main in -l${GLUT_LIBS}... " >&6; }
-if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$as_ac_Lib+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -15103,9 +15144,8 @@ fi
eval ac_res=\$$as_ac_Lib
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
-eval as_val=\$$as_ac_Lib
- if test "x$as_val" = x""yes; then :
- (test x$all = xtrue || test x$glut = xtrue) && GLUT_LIBS=-l${GLUT_LIBS}
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+ (test x$all = xtrue || test x$glut = xtrue) && GLUT_LIBS=-l${GLUT_LIBS}
else
(test x$all = xtrue || test x$glut = xtrue) && echo "Please install FreeGLUT library (lib${GLUT_LIBS}.a)" && exit
fi
@@ -15116,7 +15156,7 @@ fi
GL_LIBS=GL
ac_fn_c_check_header_mongrel "$LINENO" "GL/gl.h" "ac_cv_header_GL_gl_h" "$ac_includes_default"
if test "x$ac_cv_header_GL_gl_h" = x""yes; then :
-
+
else
echo "Please install OpenGL headers (GL/gl.h)"; exit
fi
@@ -15125,7 +15165,7 @@ fi
as_ac_Lib=`$as_echo "ac_cv_lib_${GL_LIBS}''_main" | $as_tr_sh`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l${GL_LIBS}" >&5
$as_echo_n "checking for main in -l${GL_LIBS}... " >&6; }
-if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$as_ac_Lib+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -15154,9 +15194,8 @@ fi
eval ac_res=\$$as_ac_Lib
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
-eval as_val=\$$as_ac_Lib
- if test "x$as_val" = x""yes; then :
- GL_LIBS=-l${GL_LIBS}
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+ GL_LIBS=-l${GL_LIBS}
else
echo "Please install OpenGL library (lib${GL_LIBS}.a)"; exit
fi
@@ -15164,7 +15203,7 @@ fi
GLUT_LIBS=glut
ac_fn_c_check_header_mongrel "$LINENO" "GL/glut.h" "ac_cv_header_GL_glut_h" "$ac_includes_default"
if test "x$ac_cv_header_GL_glut_h" = x""yes; then :
- (test x$all = xtrue || test x$glut = xtrue) && GLUT_FLAGS=-DHAVE_GLUT
+ (test x$all = xtrue || test x$glut = xtrue) && GLUT_FLAGS=-DHAVE_GLUT
else
(test x$all = xtrue || test x$glut = xtrue) && (echo "Please install FreeGLUT headers (GL/glut.h)" && exit)
fi
@@ -15173,7 +15212,7 @@ fi
as_ac_Lib=`$as_echo "ac_cv_lib_${GLUT_LIBS}''_main" | $as_tr_sh`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l${GLUT_LIBS}" >&5
$as_echo_n "checking for main in -l${GLUT_LIBS}... " >&6; }
-if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$as_ac_Lib+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -15202,9 +15241,8 @@ fi
eval ac_res=\$$as_ac_Lib
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
-eval as_val=\$$as_ac_Lib
- if test "x$as_val" = x""yes; then :
- (test x$all = xtrue || test x$glut = xtrue) && GLUT_LIBS=-l${GLUT_LIBS}
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+ (test x$all = xtrue || test x$glut = xtrue) && GLUT_LIBS=-l${GLUT_LIBS}
else
(test x$all = xtrue || test x$glut = xtrue) && echo "Please install FreeGLUT library (lib${GLUT_LIBS}.a)" && exit
fi
@@ -15230,23 +15268,23 @@ case "${host}" in
;;
esac
-# Check whether --enable-hdf5 was given.
+@%:@ Check whether --enable-hdf5 was given.
if test "${enable_hdf5+set}" = set; then :
enableval=$enable_hdf5; case "${enableval}" in
yes) hdf5=true ;;
no) hdf5=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-hdf5" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-hdf5" "$LINENO" 5 ;;
esac
else
hdf5=false
fi
-# Check whether --enable-hdf5_18 was given.
+@%:@ Check whether --enable-hdf5_18 was given.
if test "${enable_hdf5_18+set}" = set; then :
enableval=$enable_hdf5_18; case "${enableval}" in
yes) hdf5_18=true ;;
no) hdf5_18=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-hdf5_18" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-hdf5_18" "$LINENO" 5 ;;
esac
else
hdf5_18=false
@@ -15255,7 +15293,7 @@ fi
#AC_CHECK_HEADER(hdf5.h,[(test x$all = xtrue || test x$hdf5 = xtrue || test x$hdf5_18 = xtrue) && HDF5_FLAGS=-DHAVE_HDF5 AC_SUBST(HDF5_FLAGS)],
ac_fn_c_check_header_mongrel "$LINENO" "hdf5.h" "ac_cv_header_hdf5_h" "$ac_includes_default"
if test "x$ac_cv_header_hdf5_h" = x""yes; then :
- (test x$all = xtrue || test x$hdf5 = xtrue || test x$hdf5_18 = xtrue) && HDF5_FLAGS=-DHAVE_HDF5
+ (test x$all = xtrue || test x$hdf5 = xtrue || test x$hdf5_18 = xtrue) && HDF5_FLAGS=-DHAVE_HDF5
else
(test x$all = xtrue || test x$hdf5 = xtrue || test x$hdf5_18 = xtrue) && echo "Please install hdf5 headers" && exit
fi
@@ -15263,7 +15301,7 @@ fi
if ((test x$all = xtrue || test x$hdf5 = xtrue) && test x$hdf5_18 = xfalse) ;then
HDF5_FLAGS="$HDF5_FLAGS -DH5_USE_16_API"
-
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lhdf5" >&5
$as_echo_n "checking for main in -lhdf5... " >&6; }
@@ -15296,7 +15334,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_hdf5_main" >&5
$as_echo "$ac_cv_lib_hdf5_main" >&6; }
if test "x$ac_cv_lib_hdf5_main" = x""yes; then :
- (test x$all = xtrue || test x$hdf5 = xtrue || test x$hdf5_18 = xtrue) && HDF5_LIBS=-lhdf5
+ (test x$all = xtrue || test x$hdf5 = xtrue || test x$hdf5_18 = xtrue) && HDF5_LIBS=-lhdf5
else
(test x$all = xtrue || test x$hdf5 = xtrue || test x$hdf5_18 = xtrue) && echo "Please install hdf5 library" && exit
fi
@@ -15310,12 +15348,78 @@ else
fi
-# Check whether --enable-gif was given.
+
+@%:@ Check whether --enable-hdf4 was given.
+if test "${enable_hdf4+set}" = set; then :
+ enableval=$enable_hdf4; case "${enableval}" in
+ yes) hdf4=true ;;
+ no) hdf4=false ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-hdf4" "$LINENO" 5 ;;
+esac
+else
+ hdf4=false
+fi
+
+ac_fn_c_check_header_mongrel "$LINENO" "hdf/mfhdf.h" "ac_cv_header_hdf_mfhdf_h" "$ac_includes_default"
+if test "x$ac_cv_header_hdf_mfhdf_h" = x""yes; then :
+ (test x$all = xtrue || test x$hdf4 = xtrue) && HDF4_FLAGS=-DHAVE_HDF4
+else
+ (test x$all = xtrue || test x$hdf4 = xtrue) && echo "Please install hdf4 headers" && exit
+fi
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -ldf" >&5
+$as_echo_n "checking for main in -ldf... " >&6; }
+if test "${ac_cv_lib_df_main+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldf $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+int
+main ()
+{
+return main ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_df_main=yes
+else
+ ac_cv_lib_df_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_df_main" >&5
+$as_echo "$ac_cv_lib_df_main" >&6; }
+if test "x$ac_cv_lib_df_main" = x""yes; then :
+ (test x$all = xtrue || test x$hdf4 = xtrue) && HDF4_LIBS="-lmfhdf -ldf"
+else
+ (test x$all = xtrue || test x$hdf4 = xtrue) && echo "Please install hdf4 library" && exit
+fi
+
+ if (test x$all = xtrue || test x$hdf4 = xtrue); then
+ USE_HDF4_TRUE=
+ USE_HDF4_FALSE='#'
+else
+ USE_HDF4_TRUE='#'
+ USE_HDF4_FALSE=
+fi
+
+
+@%:@ Check whether --enable-gif was given.
if test "${enable_gif+set}" = set; then :
enableval=$enable_gif; case "${enableval}" in
yes) gif=true ;;
no) gif=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-gif" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-gif" "$LINENO" 5 ;;
esac
else
gif=false
@@ -15323,7 +15427,7 @@ fi
ac_fn_c_check_header_mongrel "$LINENO" "gif_lib.h" "ac_cv_header_gif_lib_h" "$ac_includes_default"
if test "x$ac_cv_header_gif_lib_h" = x""yes; then :
- (test x$all = xtrue || test x$gif = xtrue) && GIF_FLAGS=-DHAVE_GIF
+ (test x$all = xtrue || test x$gif = xtrue) && GIF_FLAGS=-DHAVE_GIF
else
(test x$all = xtrue || test x$gif = xtrue) && echo "Please install gif headers" && exit
fi
@@ -15361,7 +15465,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gif_main" >&5
$as_echo "$ac_cv_lib_gif_main" >&6; }
if test "x$ac_cv_lib_gif_main" = x""yes; then :
- (test x$all = xtrue || test x$gif = xtrue) && GIF_LIBS=-lgif
+ (test x$all = xtrue || test x$gif = xtrue) && GIF_LIBS=-lgif
else
(test x$all = xtrue || test x$gif = xtrue) && echo "Please install gif library" && exit
fi
@@ -15377,7 +15481,7 @@ fi
ac_fn_c_check_header_mongrel "$LINENO" "png.h" "ac_cv_header_png_h" "$ac_includes_default"
if test "x$ac_cv_header_png_h" = x""yes; then :
-
+
else
echo "Please install png headers" && exit
fi
@@ -15415,18 +15519,18 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_png_main" >&5
$as_echo "$ac_cv_lib_png_main" >&6; }
if test "x$ac_cv_lib_png_main" = x""yes; then :
- PNG_LIBS=-lpng
+ PNG_LIBS=-lpng
else
echo "Please install png library" && exit
fi
-# Check whether --enable-jpeg was given.
+@%:@ Check whether --enable-jpeg was given.
if test "${enable_jpeg+set}" = set; then :
enableval=$enable_jpeg; case "${enableval}" in
yes) jpeg=true ;;
no) jpeg=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-jpeg" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-jpeg" "$LINENO" 5 ;;
esac
else
jpeg=false
@@ -15434,7 +15538,7 @@ fi
ac_fn_c_check_header_mongrel "$LINENO" "jpeglib.h" "ac_cv_header_jpeglib_h" "$ac_includes_default"
if test "x$ac_cv_header_jpeglib_h" = x""yes; then :
- (test x$all = xtrue || test x$jpeg = xtrue) && JPEG_FLAGS=-DHAVE_JPEG
+ (test x$all = xtrue || test x$jpeg = xtrue) && JPEG_FLAGS=-DHAVE_JPEG
else
(test x$all = xtrue || test x$jpeg = xtrue) && echo "Please install jpeg headers" && exit
fi
@@ -15472,7 +15576,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_jpeg_main" >&5
$as_echo "$ac_cv_lib_jpeg_main" >&6; }
if test "x$ac_cv_lib_jpeg_main" = x""yes; then :
- (test x$all = xtrue || test x$jpeg = xtrue) && JPEG_LIBS=-ljpeg
+ (test x$all = xtrue || test x$jpeg = xtrue) && JPEG_LIBS=-ljpeg
else
(test x$all = xtrue || test x$jpeg = xtrue) && echo "Please install jpeg library" && exit
fi
@@ -15486,12 +15590,12 @@ else
fi
-# Check whether --enable-fltk was given.
+@%:@ Check whether --enable-fltk was given.
if test "${enable_fltk+set}" = set; then :
enableval=$enable_fltk; case "${enableval}" in
yes) fltk=true ;;
no) fltk=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-fltk" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-fltk" "$LINENO" 5 ;;
esac
else
fltk=false
@@ -15579,7 +15683,7 @@ fi
echo "Please install FLTK headers and libraries and make sure that \
path to $FLTK_PROG exist in your PATH"
exit
- fi
+ fi
fi
if test x$test_fltk = xtrue; then
USE_FLTK_TRUE=
@@ -15590,12 +15694,12 @@ else
fi
-# Check whether --enable-wx was given.
+@%:@ Check whether --enable-wx was given.
if test "${enable_wx+set}" = set; then :
enableval=$enable_wx; case "${enableval}" in
yes) wx=true ;;
no) wx=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-wx" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-wx" "$LINENO" 5 ;;
esac
else
wx=false
@@ -15684,7 +15788,7 @@ fi
echo "Please install wxwidget headers and libraries and make sure that \
path to $WX_PROG exist in your PATH"
exit
- fi
+ fi
fi
if test x$test_wx = xtrue; then
USE_WX_TRUE=
@@ -15695,26 +15799,26 @@ else
fi
-# Check whether --enable-qt was given.
+@%:@ Check whether --enable-qt was given.
if test "${enable_qt+set}" = set; then :
enableval=$enable_qt; case "${enableval}" in
yes) qt=true ;;
no) qt=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-qt" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-qt" "$LINENO" 5 ;;
esac
else
qt=false
fi
if (test x$all = xtrue || test x$qt = xtrue) ;then
-
-
-
+
+
+
test x"$TROLL" != x && echo 'ViM rox emacs.'
-
-# Check whether --with-qt was given.
+
+@%:@ Check whether --with-qt was given.
if test "${with_qt+set}" = set; then :
withval=$with_qt; QT_PATH=$withval
else
@@ -15826,7 +15930,7 @@ done
test -n "$QMAKE" || QMAKE="missing"
if test x"$QMAKE" = xmissing; then
- as_fn_error "Cannot find qmake in your PATH. Try using --with-qt." "$LINENO" 5
+ as_fn_error $? "Cannot find qmake in your PATH. Try using --with-qt." "$LINENO" 5
fi
fi
@@ -15927,7 +16031,7 @@ done
test -n "$MOC" || MOC="missing"
if test x"$MOC" = xmissing; then
- as_fn_error "Cannot find moc (Meta Object Compiler) in your PATH. Try using --with-qt." "$LINENO" 5
+ as_fn_error $? "Cannot find moc (Meta Object Compiler) in your PATH. Try using --with-qt." "$LINENO" 5
fi
fi
@@ -16028,7 +16132,7 @@ done
test -n "$UIC" || UIC="missing"
if test x"$UIC" = xmissing; then
- as_fn_error "Cannot find uic (User Interface Compiler) in your PATH. Try using --with-qt." "$LINENO" 5
+ as_fn_error $? "Cannot find uic (User Interface Compiler) in your PATH. Try using --with-qt." "$LINENO" 5
fi
fi
@@ -16139,14 +16243,14 @@ $as_echo "$as_me: WARNING: Cannot find rcc (Qt Resource Compiler) in your PATH.
QT_PATH=`dirname "$QMAKE"`
fi
if test x"$QT_PATH" = x; then
- as_fn_error "Cannot find the path to your Qt install. Use --with-qt." "$LINENO" 5
+ as_fn_error $? "Cannot find the path to your Qt install. Use --with-qt." "$LINENO" 5
fi
-
+
# Get ready to build a test-app with Qt.
# Look for a writable temporary directory.
-
+
if test x"$TMPDIR" = x || test ! -d "$TMPDIR" || test ! -w "$TMPDIR"; then
echo "$as_me:$LINENO: no TMPDIR or bad TMPDIR ($TMPDIR)" \
>&5
@@ -16173,7 +16277,7 @@ $as_echo "$as_me: WARNING: Cannot find rcc (Qt Resource Compiler) in your PATH.
then
:
else
- as_fn_error "Cannot cd to or write in $my_tmpdir" "$LINENO" 5
+ as_fn_error $? "Cannot cd to or write in $my_tmpdir" "$LINENO" 5
fi
cat >conftest.h <<_ASEOF
#include <QObject>
@@ -16212,14 +16316,14 @@ int main()
}
_ASEOF
if $QMAKE -project; then :; else
- as_fn_error "Calling $QMAKE -project failed." "$LINENO" 5
+ as_fn_error $? "Calling $QMAKE -project failed." "$LINENO" 5
fi
# Find the .pro file generated by qmake.
pro_file='conftest.dir.pro'
test -f $pro_file || pro_file=`echo *.pro`
if test -f "$pro_file"; then :; else
- as_fn_error "Can't find the .pro file generated by Qmake." "$LINENO" 5
+ as_fn_error $? "Can't find the .pro file generated by Qmake." "$LINENO" 5
fi
@@ -16232,7 +16336,7 @@ _ASEOF
sed 's/^/| /' "$pro_file" >&5
if $QMAKE; then :; else
- as_fn_error "Calling $QMAKE failed." "$LINENO" 5
+ as_fn_error $? "Calling $QMAKE failed." "$LINENO" 5
fi
# Try to compile a simple Qt app.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can build a simple Qt app" >&5
@@ -16293,15 +16397,15 @@ instead" >&5
fi # if make with Qt4-style #include and release mode forced.
fi # if make with Qt3-style #include.
fi # if make with Qt4-style #include.
-
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_qt_build" >&5
$as_echo "$at_cv_qt_build" >&6; }
if test x"$at_cv_qt_build" = xko; then
- as_fn_error "Cannot build a test Qt program" "$LINENO" 5
+ as_fn_error $? "Cannot build a test Qt program" "$LINENO" 5
fi
QT_VERSION_MAJOR=`echo "$at_cv_qt_build" | sed 's/^^0-9*//'`
-
+
# This sed filter is applied after an expression of the form: /^FOO.*=/!d;
# It starts by removing the beginning of the line, removing references to
@@ -16310,7 +16414,7 @@ $as_echo "$at_cv_qt_build" >&6; }
qt_sed_filter='s///;
s/$(SUBLIBS)//g;
s/^ *//;
- s/\$(\([A-Z_][A-Z_]*\))/$(QT_\1)/g'
+ s/\$(\(@<:@A-Z_@:>@@<:@A-Z_@:>@*\))/$(QT_\1)/g'
# Find the Makefile (qmake happens to generate a fake Makefile which invokes
# a Makefile.Debug or Makefile.Release). We we have both, we'll pick the
@@ -16324,7 +16428,7 @@ $as_echo "$at_cv_qt_build" >&6; }
fi
if test -f $at_mfile; then :; else
cd "$my_configure_pwd"
- as_fn_error "Cannot find the Makefile generated by qmake." "$LINENO" 5
+ as_fn_error $? "Cannot find the Makefile generated by qmake." "$LINENO" 5
fi
# Find the DEFINES of Qt (should have been named CPPFLAGS).
@@ -16333,7 +16437,7 @@ $as_echo_n "checking for the DEFINES to use with Qt... " >&6; }
if test "${at_cv_env_QT_DEFINES+set}" = set; then :
$as_echo_n "(cached) " >&6
else
- at_cv_env_QT_DEFINES=`sed "/^DEFINES[ ]*=/!d;$qt_sed_filter" $at_mfile`
+ at_cv_env_QT_DEFINES=`sed "/^DEFINES@<:@ @:>@*=/!d;$qt_sed_filter" $at_mfile`
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_env_QT_DEFINES" >&5
$as_echo "$at_cv_env_QT_DEFINES" >&6; }
@@ -16346,7 +16450,7 @@ $as_echo_n "checking for the CFLAGS to use with Qt... " >&6; }
if test "${at_cv_env_QT_CFLAGS+set}" = set; then :
$as_echo_n "(cached) " >&6
else
- at_cv_env_QT_CFLAGS=`sed "/^CFLAGS[ ]*=/!d;$qt_sed_filter" $at_mfile`
+ at_cv_env_QT_CFLAGS=`sed "/^CFLAGS@<:@ @:>@*=/!d;$qt_sed_filter" $at_mfile`
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_env_QT_CFLAGS" >&5
$as_echo "$at_cv_env_QT_CFLAGS" >&6; }
@@ -16359,7 +16463,7 @@ $as_echo_n "checking for the CXXFLAGS to use with Qt... " >&6; }
if test "${at_cv_env_QT_CXXFLAGS+set}" = set; then :
$as_echo_n "(cached) " >&6
else
- at_cv_env_QT_CXXFLAGS=`sed "/^CXXFLAGS[ ]*=/!d;$qt_sed_filter" $at_mfile`
+ at_cv_env_QT_CXXFLAGS=`sed "/^CXXFLAGS@<:@ @:>@*=/!d;$qt_sed_filter" $at_mfile`
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_env_QT_CXXFLAGS" >&5
$as_echo "$at_cv_env_QT_CXXFLAGS" >&6; }
@@ -16372,7 +16476,7 @@ $as_echo_n "checking for the INCPATH to use with Qt... " >&6; }
if test "${at_cv_env_QT_INCPATH+set}" = set; then :
$as_echo_n "(cached) " >&6
else
- at_cv_env_QT_INCPATH=`sed "/^INCPATH[ ]*=/!d;$qt_sed_filter" $at_mfile`
+ at_cv_env_QT_INCPATH=`sed "/^INCPATH@<:@ @:>@*=/!d;$qt_sed_filter" $at_mfile`
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_env_QT_INCPATH" >&5
$as_echo "$at_cv_env_QT_INCPATH" >&6; }
@@ -16388,7 +16492,7 @@ $as_echo_n "checking for the LDFLAGS to use with Qt... " >&6; }
if test "${at_cv_env_QT_LDFLAGS+set}" = set; then :
$as_echo_n "(cached) " >&6
else
- at_cv_env_QT_LDFLAGS=`sed "/^LDFLAGS[ ]*=/!d;$qt_sed_filter" $at_mfile`
+ at_cv_env_QT_LDFLAGS=`sed "/^LDFLAGS@<:@ @:>@*=/!d;$qt_sed_filter" $at_mfile`
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_env_QT_LDFLAGS" >&5
$as_echo "$at_cv_env_QT_LDFLAGS" >&6; }
@@ -16414,7 +16518,7 @@ $as_echo_n "checking for the LIBS to use with Qt... " >&6; }
if test "${at_cv_env_QT_LIBS+set}" = set; then :
$as_echo_n "(cached) " >&6
else
- at_cv_env_QT_LIBS=`sed "/^LIBS[ ]*=/!d;$qt_sed_filter" $at_mfile`
+ at_cv_env_QT_LIBS=`sed "/^LIBS@<:@ @:>@*=/!d;$qt_sed_filter" $at_mfile`
if test x$at_darwin = xyes; then
# Fix QT_LIBS: as of today Libtool (GNU Libtool 1.5.23a) doesn't handle
# -F properly. The "bug" has been fixed on 22 October 2006
@@ -16422,7 +16526,7 @@ else
at_cv_env_QT_LIBS=`echo "$at_cv_env_QT_LIBS" \
| sed 's/^-F/-Wl,-F/;s/ -F/ -Wl,-F/g'`
fi
-
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_env_QT_LIBS" >&5
$as_echo "$at_cv_env_QT_LIBS" >&6; }
@@ -16432,10 +16536,10 @@ $as_echo "$at_cv_env_QT_LIBS" >&6; }
cd "$my_configure_pwd" || echo 'WTF!'
rm -rf "$my_tmpdir"
-
+
if test x"$QMAKE" = x; then
- as_fn_error "\$QMAKE is empty. \
-Did you invoke AT_WITH_QT before AT_REQUIRE_QT_VERSION?" "$LINENO" 5
+ as_fn_error $? "\$QMAKE is empty. \
+Did you invoke AT@&t at _WITH_QT before AT@&t at _REQUIRE_QT_VERSION?" "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Qt's version" >&5
$as_echo_n "checking for Qt's version... " >&6; }
@@ -16450,20 +16554,20 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_QT_VERSION" >&5
$as_echo "$at_cv_QT_VERSION" >&6; }
if test x"$at_cv_QT_VERSION" = x; then
- as_fn_error "Cannot detect Qt's version." "$LINENO" 5
+ as_fn_error $? "Cannot detect Qt's version." "$LINENO" 5
fi
QT_VERSION=$at_cv_QT_VERSION
as_arg_v1=$QT_VERSION
as_arg_v2=4.3
awk "$as_awk_strverscmp" v1="$as_arg_v1" v2="$as_arg_v2" /dev/null
-case $? in #(
+case $? in @%:@(
1) :
- as_fn_error "This package requires Qt 4.3 or above." "$LINENO" 5 ;; #(
+ as_fn_error $? "This package requires Qt 4.3 or above." "$LINENO" 5 ;; @%:@(
0) :
- ;; #(
+ ;; @%:@(
2) :
- ;; #(
+ ;; @%:@(
*) :
;;
esac
@@ -16479,12 +16583,12 @@ else
fi
-# Check whether --enable-python was given.
+@%:@ Check whether --enable-python was given.
if test "${enable_python+set}" = set; then :
enableval=$enable_python; case "${enableval}" in
yes) python=true ;;
no) python=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-python" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-python" "$LINENO" 5 ;;
esac
else
python=false
@@ -16567,10 +16671,10 @@ fi
if (test "$PYTHON_HEADERS" && test "$HAVE_SWIG") ;then
test_python=true
+
+
-
-
-
+
# Find any Python interpreter.
if test -z "$PYTHON"; then
for ac_prog in python python2 python3 python3.0 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0
@@ -16621,13 +16725,13 @@ test -n "$PYTHON" || PYTHON=":"
fi
am_display_PYTHON=python
-
+
if test "$PYTHON" = :; then
- as_fn_error "no suitable Python interpreter found" "$LINENO" 5
+ as_fn_error $? "no suitable Python interpreter found" "$LINENO" 5
else
-
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
if test "${am_cv_python_version+set}" = set; then :
@@ -16640,13 +16744,13 @@ $as_echo "$am_cv_python_version" >&6; }
PYTHON_VERSION=$am_cv_python_version
-
+
PYTHON_PREFIX='${prefix}'
PYTHON_EXEC_PREFIX='${exec_prefix}'
-
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
if test "${am_cv_python_platform+set}" = set; then :
@@ -16660,7 +16764,7 @@ $as_echo "$am_cv_python_platform" >&6; }
-
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
if test "${am_cv_python_pythondir+set}" = set; then :
@@ -16679,15 +16783,23 @@ else
am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
;;
+ *)
+ case $am_py_prefix in
+ /usr|/System*) ;;
+ *)
+ am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
+ ;;
+ esac
+ ;;
esac
-
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
$as_echo "$am_cv_python_pythondir" >&6; }
pythondir=$am_cv_python_pythondir
-
+
pkgpythondir=\${pythondir}/$PACKAGE
@@ -16709,26 +16821,34 @@ else
am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
;;
+ *)
+ case $am_py_exec_prefix in
+ /usr|/System*) ;;
+ *)
+ am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
+ ;;
+ esac
+ ;;
esac
-
+
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
$as_echo "$am_cv_python_pyexecdir" >&6; }
pyexecdir=$am_cv_python_pyexecdir
-
+
pkgpyexecdir=\${pyexecdir}/$PACKAGE
-
+
fi
else
echo Please install python-dev and swig packages
exit
- fi
+ fi
fi
if test x$test_python = xtrue ; then
USE_PYTHON_TRUE=
@@ -16739,12 +16859,12 @@ else
fi
-# Check whether --enable-octave was given.
+@%:@ Check whether --enable-octave was given.
if test "${enable_octave+set}" = set; then :
enableval=$enable_octave; case "${enableval}" in
yes) octave=true ;;
no) octave=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-octave" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-octave" "$LINENO" 5 ;;
esac
else
octave=false
@@ -16810,12 +16930,12 @@ else
fi
-# Check whether --enable-testio was given.
+@%:@ Check whether --enable-testio was given.
if test "${enable_testio+set}" = set; then :
enableval=$enable_testio; case "${enableval}" in
yes) testio=true ;;
no) testio=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-testio" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-testio" "$LINENO" 5 ;;
esac
else
testio=false
@@ -16830,12 +16950,12 @@ else
fi
-# Check whether --enable-docs was given.
+@%:@ Check whether --enable-docs was given.
if test "${enable_docs+set}" = set; then :
enableval=$enable_docs; case "${enableval}" in
yes) docs=true ;;
no) docs=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-docs" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-docs" "$LINENO" 5 ;;
esac
else
docs=false
@@ -16942,7 +17062,8 @@ DEFS=-DHAVE_CONFIG_H
ac_libobjs=
ac_ltlibobjs=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+U=
+for ac_i in : $LIB@&t at OBJS; do test "x$ac_i" = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
@@ -16951,7 +17072,7 @@ for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
done
-LIBOBJS=$ac_libobjs
+LIB@&t at OBJS=$ac_libobjs
LTLIBOBJS=$ac_ltlibobjs
@@ -16965,72 +17086,76 @@ else
fi
if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
- as_fn_error "conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
- as_fn_error "conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
- as_fn_error "conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
- as_fn_error "conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_PTHREAD_TRUE}" && test -z "${USE_PTHREAD_FALSE}"; then
- as_fn_error "conditional \"USE_PTHREAD\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_PTHREAD\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_GSL_TRUE}" && test -z "${USE_GSL_FALSE}"; then
- as_fn_error "conditional \"USE_GSL\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_GSL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_GLUT_TRUE}" && test -z "${USE_GLUT_FALSE}"; then
- as_fn_error "conditional \"USE_GLUT\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_GLUT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_HDF5_TRUE}" && test -z "${USE_HDF5_FALSE}"; then
- as_fn_error "conditional \"USE_HDF5\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_HDF5\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_HDF4_TRUE}" && test -z "${USE_HDF4_FALSE}"; then
+ as_fn_error $? "conditional \"USE_HDF4\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_GIF_TRUE}" && test -z "${USE_GIF_FALSE}"; then
- as_fn_error "conditional \"USE_GIF\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_GIF\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_JPEG_TRUE}" && test -z "${USE_JPEG_FALSE}"; then
- as_fn_error "conditional \"USE_JPEG\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_JPEG\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_FLTK_TRUE}" && test -z "${USE_FLTK_FALSE}"; then
- as_fn_error "conditional \"USE_FLTK\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_FLTK\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_WX_TRUE}" && test -z "${USE_WX_FALSE}"; then
- as_fn_error "conditional \"USE_WX\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_WX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_QT_TRUE}" && test -z "${USE_QT_FALSE}"; then
- as_fn_error "conditional \"USE_QT\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_QT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_PYTHON_TRUE}" && test -z "${USE_PYTHON_FALSE}"; then
- as_fn_error "conditional \"USE_PYTHON\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_PYTHON\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_OCTAVE_TRUE}" && test -z "${USE_OCTAVE_FALSE}"; then
- as_fn_error "conditional \"USE_OCTAVE\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_OCTAVE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_TESTIO_TRUE}" && test -z "${USE_TESTIO_FALSE}"; then
- as_fn_error "conditional \"USE_TESTIO\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_TESTIO\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_DOCS_TRUE}" && test -z "${USE_DOCS_FALSE}"; then
- as_fn_error "conditional \"USE_DOCS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ as_fn_error $? "conditional \"USE_DOCS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
: ${CONFIG_STATUS=./config.status}
@@ -17069,9 +17194,9 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
else
- case `(set -o) 2>/dev/null` in #(
+ case `(set -o) 2>/dev/null` in @%:@(
*posix*) :
- set -o posix ;; #(
+ set -o posix ;; @%:@(
*) :
;;
esac
@@ -17102,7 +17227,7 @@ else
as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
as_echo_n_body='eval
arg=$1;
- case $arg in #(
+ case $arg in @%:@(
*"$as_nl"*)
expr "X$arg" : "X\\(.*\\)$as_nl";
arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
@@ -17134,7 +17259,7 @@ fi
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
-case $0 in #((
+case $0 in @%:@((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
@@ -17179,55 +17304,55 @@ export LANGUAGE
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-# as_fn_error ERROR [LINENO LOG_FD]
-# ---------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with status $?, using 1 if that was 0.
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
as_fn_error ()
{
- as_status=$?; test $as_status -eq 0 && as_status=1
- if test "$3"; then
- as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
- $as_echo "$as_me: error: $1" >&2
+ $as_echo "$as_me: error: $2" >&2
as_fn_exit $as_status
-} # as_fn_error
+} @%:@ as_fn_error
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
as_fn_set_status ()
{
return $1
-} # as_fn_set_status
+} @%:@ as_fn_set_status
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
as_fn_exit ()
{
set +e
as_fn_set_status $1
exit $1
-} # as_fn_exit
+} @%:@ as_fn_exit
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
as_fn_unset ()
{
{ eval $1=; unset $1;}
}
as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
eval 'as_fn_append ()
{
@@ -17240,11 +17365,11 @@ else
}
fi # as_fn_append
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
eval 'as_fn_arith ()
{
@@ -17304,7 +17429,7 @@ as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits
ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
+case `echo -n x` in @%:@(((((
-n*)
case `echo 'xy\c'` in
*c*) ECHO_T=' ';; # ECHO_T is single tab character.
@@ -17344,9 +17469,9 @@ rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
as_fn_mkdir_p ()
{
@@ -17387,10 +17512,10 @@ $as_echo X"$as_dir" |
test -d "$as_dir" && break
done
test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-} # as_fn_mkdir_p
+} @%:@ as_fn_mkdir_p
if mkdir -p . 2>/dev/null; then
as_mkdir_p='mkdir -p "$as_dir"'
else
@@ -17411,10 +17536,10 @@ else
if test -d "$1"; then
test -d "$1/.";
else
- case $1 in #(
+ case $1 in @%:@(
-*)set "./$1";;
esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in @%:@((
???[sx]*):;;*)false;;esac;fi
'\'' sh
'
@@ -17441,7 +17566,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# values after options handling.
ac_log="
This file was extended by mathgl $as_me 1.10, which was
-generated by GNU Autoconf 2.64. Invocation command line was
+generated by GNU Autoconf 2.67. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -17481,13 +17606,14 @@ Usage: $0 [OPTION]... [TAG]...
-h, --help print this help, then exit
-V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
-q, --quiet, --silent
do not print progress messages
-d, --debug don't remove temporary files
--recheck update $as_me by reconfiguring in the same conditions
- --file=FILE[:TEMPLATE]
+ --file=FILE[:TEMPLATE]
instantiate the configuration file FILE
- --header=FILE[:TEMPLATE]
+ --header=FILE[:TEMPLATE]
instantiate the configuration header FILE
Configuration files:
@@ -17503,12 +17629,13 @@ Report bugs to <mathgl.abalakin at gmail.com>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
mathgl config.status 1.10
-configured by $0, generated by GNU Autoconf 2.64,
- with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+configured by $0, generated by GNU Autoconf 2.67,
+ with options \\"\$ac_cs_config\\"
-Copyright (C) 2009 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -17526,11 +17653,16 @@ ac_need_defaults=:
while test $# != 0
do
case $1 in
- --*=*)
+ --*=?*)
ac_option=`expr "X$1" : 'X\([^=]*\)='`
ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
ac_shift=:
;;
+ --*=)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=
+ ac_shift=:
+ ;;
*)
ac_option=$1
ac_optarg=$2
@@ -17544,12 +17676,15 @@ do
ac_cs_recheck=: ;;
--version | --versio | --versi | --vers | --ver | --ve | --v | -V )
$as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
--debug | --debu | --deb | --de | --d | -d )
debug=: ;;
--file | --fil | --fi | --f )
$ac_shift
case $ac_optarg in
*\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ '') as_fn_error $? "missing file argument" ;;
esac
as_fn_append CONFIG_FILES " '$ac_optarg'"
ac_need_defaults=false;;
@@ -17562,7 +17697,7 @@ do
ac_need_defaults=false;;
--he | --h)
# Conflict between --help and --header
- as_fn_error "ambiguous option: \`$1'
+ as_fn_error $? "ambiguous option: \`$1'
Try \`$0 --help' for more information.";;
--help | --hel | -h )
$as_echo "$ac_cs_usage"; exit ;;
@@ -17571,7 +17706,7 @@ Try \`$0 --help' for more information.";;
ac_cs_silent=: ;;
# This is an error.
- -*) as_fn_error "unrecognized option: \`$1'
+ -*) as_fn_error $? "unrecognized option: \`$1'
Try \`$0 --help' for more information." ;;
*) as_fn_append ac_config_targets " $1"
@@ -17604,8 +17739,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
exec 5>>config.log
{
echo
- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
+ sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
+@%:@@%:@ Running $as_me. @%:@@%:@
_ASBOX
$as_echo "$ac_log"
} >&5
@@ -17990,7 +18125,7 @@ do
"utils/Makefile") CONFIG_FILES="$CONFIG_FILES utils/Makefile" ;;
"widgets/Makefile") CONFIG_FILES="$CONFIG_FILES widgets/Makefile" ;;
- *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;;
esac
done
@@ -18028,7 +18163,7 @@ $debug ||
{
tmp=./conf$$-$RANDOM
(umask 077 && mkdir "$tmp")
-} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
# Set up the scripts for CONFIG_FILES section.
# No need to generate them if there are no CONFIG_FILES.
@@ -18045,7 +18180,7 @@ if test "x$ac_cr" = x; then
fi
ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
- ac_cs_awk_cr='\r'
+ ac_cs_awk_cr='\\r'
else
ac_cs_awk_cr=$ac_cr
fi
@@ -18059,18 +18194,18 @@ _ACEOF
echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
echo "_ACEOF"
} >conf$$subs.sh ||
- as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
. ./conf$$subs.sh ||
- as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
if test $ac_delim_n = $ac_delim_num; then
break
elif $ac_last_try; then
- as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
else
ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
fi
@@ -18092,7 +18227,7 @@ s/'"$ac_delim"'$//
t delim
:nl
h
-s/\(.\{148\}\).*/\1/
+s/\(.\{148\}\)..*/\1/
t more1
s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
p
@@ -18106,7 +18241,7 @@ s/.\{148\}//
t nl
:delim
h
-s/\(.\{148\}\).*/\1/
+s/\(.\{148\}\)..*/\1/
t more2
s/["\\]/\\&/g; s/^/"/; s/$/"/
p
@@ -18159,20 +18294,28 @@ if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
else
cat
fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
- || as_fn_error "could not setup config files machinery" "$LINENO" 5
+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
_ACEOF
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
# trailing colons and then remove the whole line if VPATH becomes empty
# (actually we leave an empty line to preserve line numbers).
if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[ ]*\):*/\1/
+ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
+h
+s///
+s/^/:/
+s/[ ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
s/:*$//
+x
+s/\(=[ ]*\).*/\1/
+G
+s/\n//
s/^[^=]*=[ ]*$//
}'
fi
@@ -18200,7 +18343,7 @@ for ac_last_try in false false :; do
if test -z "$ac_t"; then
break
elif $ac_last_try; then
- as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5
+ as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
else
ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
fi
@@ -18285,7 +18428,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
_ACAWK
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
- as_fn_error "could not setup config headers machinery" "$LINENO" 5
+ as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
fi # test -n "$CONFIG_HEADERS"
@@ -18298,7 +18441,7 @@ do
esac
case $ac_mode$ac_tag in
:[FHL]*:*);;
- :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;;
:[FH]-) ac_tag=-:-;;
:[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
esac
@@ -18326,7 +18469,7 @@ do
[\\/$]*) false;;
*) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
esac ||
- as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;;
esac
case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
as_fn_append ac_file_inputs " '$ac_f'"
@@ -18353,7 +18496,7 @@ $as_echo "$as_me: creating $ac_file" >&6;}
case $ac_tag in
*:-:* | *:-) cat >"$tmp/stdin" \
- || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
esac
;;
esac
@@ -18490,22 +18633,22 @@ s&@MKDIR_P@&$ac_MKDIR_P&;t t
$ac_datarootdir_hack
"
eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
- || as_fn_error "could not create $ac_file" "$LINENO" 5
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
{ ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
{ ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined." >&5
+which seems to be undefined. Please make sure it is defined" >&5
$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined." >&2;}
+which seems to be undefined. Please make sure it is defined" >&2;}
rm -f "$tmp/stdin"
case $ac_file in
-) cat "$tmp/out" && rm -f "$tmp/out";;
*) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
esac \
- || as_fn_error "could not create $ac_file" "$LINENO" 5
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
;;
:H)
#
@@ -18516,19 +18659,19 @@ which seems to be undefined. Please make sure it is defined." >&2;}
$as_echo "/* $configure_input */" \
&& eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
} >"$tmp/config.h" \
- || as_fn_error "could not create $ac_file" "$LINENO" 5
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
$as_echo "$as_me: $ac_file is unchanged" >&6;}
else
rm -f "$ac_file"
mv "$tmp/config.h" "$ac_file" \
- || as_fn_error "could not create $ac_file" "$LINENO" 5
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
fi
else
$as_echo "/* $configure_input */" \
&& eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
- || as_fn_error "could not create -" "$LINENO" 5
+ || as_fn_error $? "could not create -" "$LINENO" 5
fi
# Compute "$ac_file"'s index in $config_headers.
_am_arg="$ac_file"
@@ -18565,7 +18708,7 @@ $as_echo X"$_am_arg" |
}
s/.*/./; q'`/stamp-h$_am_stamp_count
;;
-
+
:C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
$as_echo "$as_me: executing $ac_file commands" >&6;}
;;
@@ -18668,8 +18811,8 @@ $as_echo X"$file" |
done
}
;;
- "libtool":C)
-
+ "libtool":C)
+
# See if we are running on zsh, and set the options which allow our
# commands through without removal of \ escapes.
if test -n "${ZSH_VERSION+set}" ; then
@@ -19105,7 +19248,7 @@ _LT_EOF
;;
esac
-
+
ltmain="$ac_aux_dir/ltmain.sh"
@@ -19486,7 +19629,7 @@ _ACEOF
ac_clean_files=$ac_clean_files_save
test $ac_write_fail = 0 ||
- as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
+ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
# configure is writing to config.log, and then calls config.status.
@@ -19507,7 +19650,7 @@ if test "$no_create" != yes; then
exec 5>>config.log
# Use ||, not &&, to avoid exiting from the if with $? = 1, which
# would make configure fail if this is the last instruction.
- $ac_cs_success || as_fn_exit $?
+ $ac_cs_success || as_fn_exit 1
fi
if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
diff --git a/autom4te.cache/requests b/autom4te.cache/requests
new file mode 100644
index 0000000..25a790d
--- /dev/null
+++ b/autom4te.cache/requests
@@ -0,0 +1,279 @@
+# This file was generated by Autom4te Thu Aug 5 21:29:16 UTC 2010.
+# It contains the lists of macros which have been traced.
+# It can be safely removed.
+
+ at request = (
+ bless( [
+ '0',
+ 1,
+ [
+ '/usr/share/autoconf'
+ ],
+ [
+ '/usr/share/autoconf/autoconf/autoconf.m4f',
+ '/usr/share/aclocal/argz.m4',
+ '/usr/share/aclocal/libtool.m4',
+ '/usr/share/aclocal/ltdl.m4',
+ '/usr/share/aclocal/ltoptions.m4',
+ '/usr/share/aclocal/ltsugar.m4',
+ '/usr/share/aclocal/ltversion.m4',
+ '/usr/share/aclocal/lt~obsolete.m4',
+ '/usr/share/aclocal-1.11/amversion.m4',
+ '/usr/share/aclocal-1.11/auxdir.m4',
+ '/usr/share/aclocal-1.11/cond.m4',
+ '/usr/share/aclocal-1.11/depend.m4',
+ '/usr/share/aclocal-1.11/depout.m4',
+ '/usr/share/aclocal-1.11/init.m4',
+ '/usr/share/aclocal-1.11/install-sh.m4',
+ '/usr/share/aclocal-1.11/lead-dot.m4',
+ '/usr/share/aclocal-1.11/make.m4',
+ '/usr/share/aclocal-1.11/missing.m4',
+ '/usr/share/aclocal-1.11/mkdirp.m4',
+ '/usr/share/aclocal-1.11/options.m4',
+ '/usr/share/aclocal-1.11/python.m4',
+ '/usr/share/aclocal-1.11/runlog.m4',
+ '/usr/share/aclocal-1.11/sanity.m4',
+ '/usr/share/aclocal-1.11/silent.m4',
+ '/usr/share/aclocal-1.11/strip.m4',
+ '/usr/share/aclocal-1.11/substnot.m4',
+ '/usr/share/aclocal-1.11/tar.m4',
+ 'config/autotroll.m4',
+ 'configure.ac'
+ ],
+ {
+ 'AM_ENABLE_STATIC' => 1,
+ 'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
+ '_LT_AC_SHELL_INIT' => 1,
+ 'AC_DEFUN' => 1,
+ '_LT_AC_LANG_CXX_CONFIG' => 1,
+ 'AC_PROG_LIBTOOL' => 1,
+ 'AM_PROG_MKDIR_P' => 1,
+ 'AM_PYTHON_CHECK_VERSION' => 1,
+ 'AM_AUTOMAKE_VERSION' => 1,
+ 'AM_SUBST_NOTMAKE' => 1,
+ 'AM_MISSING_PROG' => 1,
+ 'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
+ '_LT_AC_LANG_C_CONFIG' => 1,
+ 'AM_PROG_INSTALL_STRIP' => 1,
+ '_m4_warn' => 1,
+ 'AC_LIBTOOL_OBJDIR' => 1,
+ 'gl_FUNC_ARGZ' => 1,
+ 'AM_SANITY_CHECK' => 1,
+ 'LTOBSOLETE_VERSION' => 1,
+ 'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
+ 'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
+ 'LT_LIB_M' => 1,
+ '_LT_AC_CHECK_DLFCN' => 1,
+ 'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
+ 'LTSUGAR_VERSION' => 1,
+ '_LT_PROG_LTMAIN' => 1,
+ 'LT_SYS_SYMBOL_USCORE' => 1,
+ '_AM_PROG_TAR' => 1,
+ 'AC_LIBTOOL_GCJ' => 1,
+ 'LT_SYS_DLOPEN_DEPLIBS' => 1,
+ 'LT_FUNC_DLSYM_USCORE' => 1,
+ 'AC_LIBTOOL_CONFIG' => 1,
+ '_LT_AC_LANG_F77' => 1,
+ '_AM_SUBST_NOTMAKE' => 1,
+ 'AC_LTDL_DLLIB' => 1,
+ '_AM_AUTOCONF_VERSION' => 1,
+ 'AM_DISABLE_SHARED' => 1,
+ '_LTDL_SETUP' => 1,
+ '_LT_AC_LANG_CXX' => 1,
+ 'AM_PROG_LIBTOOL' => 1,
+ 'AC_LIB_LTDL' => 1,
+ '_LT_AC_FILE_LTDLL_C' => 1,
+ 'AM_PROG_LD' => 1,
+ 'AU_DEFUN' => 1,
+ 'AC_PROG_NM' => 1,
+ 'AC_LIBTOOL_DLOPEN' => 1,
+ 'AC_PROG_LD' => 1,
+ 'AC_ENABLE_FAST_INSTALL' => 1,
+ 'AC_PROG_LD_GNU' => 1,
+ 'AC_LIBTOOL_FC' => 1,
+ 'LTDL_CONVENIENCE' => 1,
+ '_AM_SET_OPTION' => 1,
+ 'AC_LTDL_PREOPEN' => 1,
+ '_LT_LINKER_BOILERPLATE' => 1,
+ 'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
+ 'AC_LIBTOOL_PROG_CC_C_O' => 1,
+ 'gl_PREREQ_ARGZ' => 1,
+ 'LT_SUPPORTED_TAG' => 1,
+ 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+ 'LT_PROG_RC' => 1,
+ 'LT_SYS_MODULE_EXT' => 1,
+ 'AC_DEFUN_ONCE' => 1,
+ 'AT_WITH_QT' => 1,
+ '_LT_AC_LANG_GCJ' => 1,
+ 'AC_LTDL_OBJDIR' => 1,
+ '_LT_PATH_TOOL_PREFIX' => 1,
+ 'AC_LIBTOOL_RC' => 1,
+ 'AM_SILENT_RULES' => 1,
+ '_LT_AC_PROG_ECHO_BACKSLASH' => 1,
+ 'AC_DISABLE_FAST_INSTALL' => 1,
+ 'AT_REQUIRE_QT_VERSION' => 1,
+ '_LT_AC_SYS_LIBPATH_AIX' => 1,
+ '_LT_AC_TRY_DLOPEN_SELF' => 1,
+ 'include' => 1,
+ 'LT_AC_PROG_SED' => 1,
+ 'AM_ENABLE_SHARED' => 1,
+ 'LTDL_INSTALLABLE' => 1,
+ '_LT_AC_LANG_GCJ_CONFIG' => 1,
+ 'AC_ENABLE_SHARED' => 1,
+ 'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
+ 'AC_ENABLE_STATIC' => 1,
+ '_LT_AC_TAGVAR' => 1,
+ 'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
+ 'AM_CONDITIONAL' => 1,
+ 'LT_LIB_DLLOAD' => 1,
+ '_AT_TWEAK_PRO_FILE' => 1,
+ 'LTVERSION_VERSION' => 1,
+ 'LTDL_INIT' => 1,
+ 'AM_PROG_INSTALL_SH' => 1,
+ 'm4_include' => 1,
+ 'AC_PROG_EGREP' => 1,
+ '_AC_AM_CONFIG_HEADER_HOOK' => 1,
+ 'AC_PATH_MAGIC' => 1,
+ 'AM_PATH_PYTHON' => 1,
+ 'AC_LTDL_SYSSEARCHPATH' => 1,
+ 'AM_MAKE_INCLUDE' => 1,
+ '_LT_AC_TAGCONFIG' => 1,
+ 'LT_CMD_MAX_LEN' => 1,
+ 'm4_pattern_forbid' => 1,
+ '_LT_LINKER_OPTION' => 1,
+ 'AC_LIBTOOL_COMPILER_OPTION' => 1,
+ 'AC_DISABLE_SHARED' => 1,
+ '_LT_COMPILER_BOILERPLATE' => 1,
+ 'AC_LIBTOOL_WIN32_DLL' => 1,
+ 'AC_LIBTOOL_SETUP' => 1,
+ 'AC_PROG_LD_RELOAD_FLAG' => 1,
+ 'AC_LTDL_DLSYM_USCORE' => 1,
+ 'AM_MISSING_HAS_RUN' => 1,
+ 'LT_LANG' => 1,
+ 'LT_SYS_DLSEARCH_PATH' => 1,
+ 'LT_CONFIG_LTDL_DIR' => 1,
+ 'AC_LIBTOOL_DLOPEN_SELF' => 1,
+ 'LT_OUTPUT' => 1,
+ 'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
+ 'AC_WITH_LTDL' => 1,
+ 'AC_LIBTOOL_LINKER_OPTION' => 1,
+ 'LT_AC_PROG_RC' => 1,
+ 'AC_LIBTOOL_CXX' => 1,
+ 'LT_INIT' => 1,
+ 'LT_AC_PROG_GCJ' => 1,
+ 'LT_SYS_DLOPEN_SELF' => 1,
+ 'AM_DISABLE_STATIC' => 1,
+ 'AM_DEP_TRACK' => 1,
+ '_AC_PROG_LIBTOOL' => 1,
+ '_AM_IF_OPTION' => 1,
+ 'AC_PATH_TOOL_PREFIX' => 1,
+ 'm4_pattern_allow' => 1,
+ 'AC_LIBTOOL_F77' => 1,
+ 'AM_SET_LEADING_DOT' => 1,
+ 'LT_AC_PROG_EGREP' => 1,
+ '_AM_DEPENDENCIES' => 1,
+ 'AC_LIBTOOL_LANG_C_CONFIG' => 1,
+ 'LTOPTIONS_VERSION' => 1,
+ '_LT_AC_SYS_COMPILER' => 1,
+ 'AM_PROG_NM' => 1,
+ 'AC_LIBLTDL_CONVENIENCE' => 1,
+ 'AC_DEPLIBS_CHECK_METHOD' => 1,
+ 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
+ 'AC_LIBLTDL_INSTALLABLE' => 1,
+ 'AC_LTDL_ENABLE_INSTALL' => 1,
+ 'LT_PROG_GCJ' => 1,
+ 'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
+ 'AM_INIT_AUTOMAKE' => 1,
+ 'AC_DISABLE_STATIC' => 1,
+ 'LT_PATH_NM' => 1,
+ 'AC_LTDL_SHLIBEXT' => 1,
+ '_LT_AC_LOCK' => 1,
+ '_LT_AC_LANG_RC_CONFIG' => 1,
+ 'LT_SYS_MODULE_PATH' => 1,
+ 'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
+ 'LT_WITH_LTDL' => 1,
+ 'AC_LTDL_SHLIBPATH' => 1,
+ 'AM_AUX_DIR_EXPAND' => 1,
+ '_LT_AC_LANG_F77_CONFIG' => 1,
+ 'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
+ '_AM_SET_OPTIONS' => 1,
+ '_LT_COMPILER_OPTION' => 1,
+ '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+ 'AM_RUN_LOG' => 1,
+ 'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
+ 'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
+ 'AC_LIBTOOL_PICMODE' => 1,
+ 'LT_PATH_LD' => 1,
+ 'AC_CHECK_LIBM' => 1,
+ 'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
+ '_AM_MANGLE_OPTION' => 1,
+ 'AC_LTDL_SYMBOL_USCORE' => 1,
+ 'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
+ 'AM_SET_DEPDIR' => 1,
+ '_LT_CC_BASENAME' => 1,
+ '_LT_LIBOBJ' => 1
+ }
+ ], 'Autom4te::Request' ),
+ bless( [
+ '1',
+ 1,
+ [
+ '/usr/share/autoconf'
+ ],
+ [
+ '/usr/share/autoconf/autoconf/autoconf.m4f',
+ 'aclocal.m4',
+ 'configure.ac'
+ ],
+ {
+ '_LT_AC_TAGCONFIG' => 1,
+ 'AM_PROG_F77_C_O' => 1,
+ 'AC_INIT' => 1,
+ 'm4_pattern_forbid' => 1,
+ '_AM_COND_IF' => 1,
+ 'AC_CANONICAL_TARGET' => 1,
+ 'AC_SUBST' => 1,
+ 'AC_CONFIG_LIBOBJ_DIR' => 1,
+ 'AC_FC_SRCEXT' => 1,
+ 'AC_CANONICAL_HOST' => 1,
+ 'AC_PROG_LIBTOOL' => 1,
+ 'AM_INIT_AUTOMAKE' => 1,
+ 'AC_CONFIG_SUBDIRS' => 1,
+ 'AM_AUTOMAKE_VERSION' => 1,
+ 'LT_CONFIG_LTDL_DIR' => 1,
+ 'AC_REQUIRE_AUX_FILE' => 1,
+ 'AC_CONFIG_LINKS' => 1,
+ 'm4_sinclude' => 1,
+ 'LT_SUPPORTED_TAG' => 1,
+ 'AM_MAINTAINER_MODE' => 1,
+ 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
+ '_m4_warn' => 1,
+ 'AM_PROG_CXX_C_O' => 1,
+ '_AM_COND_ENDIF' => 1,
+ 'AM_ENABLE_MULTILIB' => 1,
+ 'AM_SILENT_RULES' => 1,
+ 'AC_CONFIG_FILES' => 1,
+ 'include' => 1,
+ 'LT_INIT' => 1,
+ 'AM_GNU_GETTEXT' => 1,
+ 'AC_LIBSOURCE' => 1,
+ 'AM_PROG_FC_C_O' => 1,
+ 'AC_CANONICAL_BUILD' => 1,
+ 'AC_FC_FREEFORM' => 1,
+ 'AH_OUTPUT' => 1,
+ '_AM_SUBST_NOTMAKE' => 1,
+ 'AC_CONFIG_AUX_DIR' => 1,
+ 'sinclude' => 1,
+ 'AM_PROG_CC_C_O' => 1,
+ 'm4_pattern_allow' => 1,
+ 'AC_CANONICAL_SYSTEM' => 1,
+ 'AM_CONDITIONAL' => 1,
+ 'AC_CONFIG_HEADERS' => 1,
+ 'AC_DEFINE_TRACE_LITERAL' => 1,
+ 'm4_include' => 1,
+ '_AM_COND_ELSE' => 1,
+ 'AC_SUBST_TRACE' => 1
+ }
+ ], 'Autom4te::Request' )
+ );
+
diff --git a/autom4te.cache/traces.0 b/autom4te.cache/traces.0
new file mode 100644
index 0000000..97477af
--- /dev/null
+++ b/autom4te.cache/traces.0
@@ -0,0 +1,3006 @@
+m4trace:/usr/share/aclocal/argz.m4:12: -1- AC_DEFUN([gl_FUNC_ARGZ], [gl_PREREQ_ARGZ
+
+AC_CHECK_HEADERS([argz.h], [], [], [AC_INCLUDES_DEFAULT])
+
+AC_CHECK_TYPES([error_t],
+ [],
+ [AC_DEFINE([error_t], [int],
+ [Define to a type to use for `error_t' if it is not otherwise available.])
+ AC_DEFINE([__error_t_defined], [1], [Define so that glibc/gnulib argp.h
+ does not typedef error_t.])],
+ [#if defined(HAVE_ARGZ_H)
+# include <argz.h>
+#endif])
+
+ARGZ_H=
+AC_CHECK_FUNCS([argz_add argz_append argz_count argz_create_sep argz_insert \
+ argz_next argz_stringify], [], [ARGZ_H=argz.h; AC_LIBOBJ([argz])])
+
+dnl if have system argz functions, allow forced use of
+dnl libltdl-supplied implementation (and default to do so
+dnl on "known bad" systems). Could use a runtime check, but
+dnl (a) detecting malloc issues is notoriously unreliable
+dnl (b) only known system that declares argz functions,
+dnl provides them, yet they are broken, is cygwin
+dnl releases prior to 16-Mar-2007 (1.5.24 and earlier)
+dnl So, it's more straightforward simply to special case
+dnl this for known bad systems.
+AS_IF([test -z "$ARGZ_H"],
+ [AC_CACHE_CHECK(
+ [if argz actually works],
+ [lt_cv_sys_argz_works],
+ [[case $host_os in #(
+ *cygwin*)
+ lt_cv_sys_argz_works=no
+ if test "$cross_compiling" != no; then
+ lt_cv_sys_argz_works="guessing no"
+ else
+ lt_sed_extract_leading_digits='s/^\([0-9\.]*\).*/\1/'
+ save_IFS=$IFS
+ IFS=-.
+ set x `uname -r | sed -e "$lt_sed_extract_leading_digits"`
+ IFS=$save_IFS
+ lt_os_major=${2-0}
+ lt_os_minor=${3-0}
+ lt_os_micro=${4-0}
+ if test "$lt_os_major" -gt 1 \
+ || { test "$lt_os_major" -eq 1 \
+ && { test "$lt_os_minor" -gt 5 \
+ || { test "$lt_os_minor" -eq 5 \
+ && test "$lt_os_micro" -gt 24; }; }; }; then
+ lt_cv_sys_argz_works=yes
+ fi
+ fi
+ ;; #(
+ *) lt_cv_sys_argz_works=yes ;;
+ esac]])
+ AS_IF([test $lt_cv_sys_argz_works = yes],
+ [AC_DEFINE([HAVE_WORKING_ARGZ], 1,
+ [This value is set to 1 to indicate that the system argz facility works])],
+ [ARGZ_H=argz.h
+ AC_LIBOBJ([argz])])])
+
+AC_SUBST([ARGZ_H])
+])
+m4trace:/usr/share/aclocal/argz.m4:79: -1- AC_DEFUN([gl_PREREQ_ARGZ], [:])
+m4trace:/usr/share/aclocal/libtool.m4:67: -1- AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])
+m4trace:/usr/share/aclocal/libtool.m4:102: -1- AU_DEFUN([AC_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:102: -1- AC_DEFUN([AC_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:103: -1- AU_DEFUN([AM_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:103: -1- AC_DEFUN([AM_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LIBTOOL' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_INIT], [LT_INIT($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:562: -1- AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+cat >"$CONFIG_LT" <<_LTEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate a libtool stub with the current configuration.
+
+lt_cl_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AS_SHELL_SANITIZE
+_AS_PREPARE
+
+exec AS_MESSAGE_FD>&1
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+ echo
+ AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+
+Report bugs to <bug-libtool at gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2008 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $[#] != 0
+do
+ case $[1] in
+ --version | --v* | -V )
+ echo "$lt_cl_version"; exit 0 ;;
+ --help | --h* | -h )
+ echo "$lt_cl_help"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --quiet | --q* | --silent | --s* | -q )
+ lt_cl_silent=: ;;
+
+ -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try \`$[0] --help' for more information.]) ;;
+
+ *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
+ esac
+ shift
+done
+
+if $lt_cl_silent; then
+ exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure. Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+if test "$no_create" != yes; then
+ lt_cl_success=:
+ test "$silent" = yes &&
+ lt_config_lt_args="$lt_config_lt_args --quiet"
+ exec AS_MESSAGE_LOG_FD>/dev/null
+ $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+ exec AS_MESSAGE_LOG_FD>>config.log
+ $lt_cl_success || AS_EXIT(1)
+fi
+])
+m4trace:/usr/share/aclocal/libtool.m4:757: -1- AC_DEFUN([LT_SUPPORTED_TAG], [])
+m4trace:/usr/share/aclocal/libtool.m4:768: -1- AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+ [C], [_LT_LANG(C)],
+ [C++], [_LT_LANG(CXX)],
+ [Java], [_LT_LANG(GCJ)],
+ [Fortran 77], [_LT_LANG(F77)],
+ [Fortran], [_LT_LANG(FC)],
+ [Windows Resource], [_LT_LANG(RC)],
+ [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+ [_LT_LANG($1)],
+ [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])
+m4trace:/usr/share/aclocal/libtool.m4:830: -1- AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+m4trace:/usr/share/aclocal/libtool.m4:830: -1- AC_DEFUN([AC_LIBTOOL_CXX], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_CXX' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(C++)])
+m4trace:/usr/share/aclocal/libtool.m4:831: -1- AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+m4trace:/usr/share/aclocal/libtool.m4:831: -1- AC_DEFUN([AC_LIBTOOL_F77], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_F77' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Fortran 77)])
+m4trace:/usr/share/aclocal/libtool.m4:832: -1- AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+m4trace:/usr/share/aclocal/libtool.m4:832: -1- AC_DEFUN([AC_LIBTOOL_FC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_FC' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Fortran)])
+m4trace:/usr/share/aclocal/libtool.m4:833: -1- AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+m4trace:/usr/share/aclocal/libtool.m4:833: -1- AC_DEFUN([AC_LIBTOOL_GCJ], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_GCJ' is obsolete.
+You should run autoupdate.])dnl
+LT_LANG(Java)])
+m4trace:/usr/share/aclocal/libtool.m4:1402: -1- AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$3"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ fi
+ $RM conftest*
+])
+
+if test x"[$]$2" = xyes; then
+ m4_if([$5], , :, [$5])
+else
+ m4_if([$6], , :, [$6])
+fi
+])
+m4trace:/usr/share/aclocal/libtool.m4:1444: -1- AU_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:1444: -1- AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_COMPILER_OPTION' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:1453: -1- AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $3"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&AS_MESSAGE_LOG_FD
+ $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ else
+ $2=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+ m4_if([$4], , :, [$4])
+else
+ m4_if([$5], , :, [$5])
+fi
+])
+m4trace:/usr/share/aclocal/libtool.m4:1488: -1- AU_DEFUN([AC_LIBTOOL_LINKER_OPTION], [m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:1488: -1- AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_LINKER_OPTION' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:1495: -1- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw* | cegcc*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len"; then
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ else
+ # Make teststring a little bigger before we do anything with it.
+ # a 1K string should be a reasonable start.
+ for i in 1 2 3 4 5 6 7 8 ; do
+ teststring=$teststring$teststring
+ done
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
+ = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ # Only check the string length outside the loop.
+ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on
+ # massive amounts of additional arguments before passing them to the
+ # linker. It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ fi
+ ;;
+ esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+ AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+ AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+ [What is the maximum length of a command?])
+])
+m4trace:/usr/share/aclocal/libtool.m4:1623: -1- AU_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:1623: -1- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_SYS_MAX_CMD_LEN' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:1724: -1- AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32* | cegcc*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ])
+ ;;
+
+ *)
+ AC_CHECK_FUNC([shl_load],
+ [lt_cv_dlopen="shl_load"],
+ [AC_CHECK_LIB([dld], [shl_load],
+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+ [AC_CHECK_FUNC([dlopen],
+ [lt_cv_dlopen="dlopen"],
+ [AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+ [AC_CHECK_LIB([svld], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+ [AC_CHECK_LIB([dld], [dld_link],
+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ AC_CACHE_CHECK([whether a program can dlopen itself],
+ lt_cv_dlopen_self, [dnl
+ _LT_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+ ])
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+ lt_cv_dlopen_self_static, [dnl
+ _LT_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+ lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross)
+ ])
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+ [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+ [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+ [Whether dlopen of statically linked programs is supported])
+])
+m4trace:/usr/share/aclocal/libtool.m4:1841: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:1841: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN_SELF' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:2741: -1- AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] | ?:[\\/]*])
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word. This closes a longstanding sh security hole.
+ ac_dummy="m4_if([$2], , $PATH, [$2])"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$1; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ AC_MSG_RESULT($MAGIC_CMD)
+else
+ AC_MSG_RESULT(no)
+fi
+_LT_DECL([], [MAGIC_CMD], [0],
+ [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+])
+m4trace:/usr/share/aclocal/libtool.m4:2803: -1- AU_DEFUN([AC_PATH_TOOL_PREFIX], [m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:2803: -1- AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_DIAGNOSE([obsolete], [The macro `AC_PATH_TOOL_PREFIX' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:2826: -1- AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+
+AC_ARG_WITH([gnu-ld],
+ [AS_HELP_STRING([--with-gnu-ld],
+ [assume the C compiler uses GNU ld @<:@default=no@:>@])],
+ [test "$withval" = no || with_gnu_ld=yes],
+ [with_gnu_ld=no])dnl
+
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ AC_MSG_CHECKING([for ld used by $CC])
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [[\\/]]* | ?:[[\\/]]*)
+ re_direlt='/[[^/]][[^/]]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ AC_MSG_RESULT($LD)
+else
+ AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])
+m4trace:/usr/share/aclocal/libtool.m4:2914: -1- AU_DEFUN([AM_PROG_LD], [m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:2914: -1- AC_DEFUN([AM_PROG_LD], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LD' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:2915: -1- AU_DEFUN([AC_PROG_LD], [m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:2915: -1- AC_DEFUN([AC_PROG_LD], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LD' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_LD], [LT_PATH_LD($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3179: -1- AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ done
+ : ${lt_cv_path_NM=no}
+fi])
+if test "$lt_cv_path_NM" != "no"; then
+ NM="$lt_cv_path_NM"
+else
+ # Didn't find any BSD compatible name lister, look for dumpbin.
+ AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
+ AC_SUBST([DUMPBIN])
+ if test "$DUMPBIN" != ":"; then
+ NM="$DUMPBIN"
+ fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+ [lt_cv_nm_interface="BSD nm"
+ echo "int some_variable = 0;" > conftest.$ac_ext
+ (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$ac_compile" 2>conftest.err)
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD)
+ cat conftest.out >&AS_MESSAGE_LOG_FD
+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+ lt_cv_nm_interface="MS dumpbin"
+ fi
+ rm -f conftest*])
+])
+m4trace:/usr/share/aclocal/libtool.m4:3257: -1- AU_DEFUN([AM_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3257: -1- AC_DEFUN([AM_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_NM' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3258: -1- AU_DEFUN([AC_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3258: -1- AC_DEFUN([AC_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_NM' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3267: -1- AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+ # These system don't have libm, or don't need it
+ ;;
+*-ncr-sysv4.3*)
+ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+ ;;
+*)
+ AC_CHECK_LIB(m, cos, LIBM="-lm")
+ ;;
+esac
+AC_SUBST([LIBM])
+])
+m4trace:/usr/share/aclocal/libtool.m4:3286: -1- AU_DEFUN([AC_CHECK_LIBM], [m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:3286: -1- AC_DEFUN([AC_CHECK_LIBM], [AC_DIAGNOSE([obsolete], [The macro `AC_CHECK_LIBM' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:6987: -1- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+ [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+ [AC_CHECK_TOOL(GCJ, gcj,)
+ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+ AC_SUBST(GCJFLAGS)])])[]dnl
+])
+m4trace:/usr/share/aclocal/libtool.m4:6996: -1- AU_DEFUN([LT_AC_PROG_GCJ], [m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:6996: -1- AC_DEFUN([LT_AC_PROG_GCJ], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_GCJ' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:7003: -1- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,)
+])
+m4trace:/usr/share/aclocal/libtool.m4:7008: -1- AU_DEFUN([LT_AC_PROG_RC], [m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:7008: -1- AC_DEFUN([LT_AC_PROG_RC], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_RC' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:7119: -1- AU_DEFUN([LT_AC_PROG_SED], [m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])])
+m4trace:/usr/share/aclocal/libtool.m4:7119: -1- AC_DEFUN([LT_AC_PROG_SED], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_SED' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:16: -1- AC_DEFUN([LT_CONFIG_LTDL_DIR], [AC_BEFORE([$0], [LTDL_INIT])
+_$0($*)
+])
+m4trace:/usr/share/aclocal/ltdl.m4:68: -1- AC_DEFUN([LTDL_CONVENIENCE], [AC_BEFORE([$0], [LTDL_INIT])dnl
+dnl Although the argument is deprecated and no longer documented,
+dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one
+dnl here make sure it is the same as any other declaration of libltdl's
+dnl location! This also ensures lt_ltdl_dir is set when configure.ac is
+dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
+m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
+_$0()
+])
+m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AU_DEFUN([AC_LIBLTDL_CONVENIENCE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_CONVENIENCE])
+m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_CONVENIENCE' is obsolete.
+You should run autoupdate.])dnl
+_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_CONVENIENCE])
+m4trace:/usr/share/aclocal/ltdl.m4:124: -1- AC_DEFUN([LTDL_INSTALLABLE], [AC_BEFORE([$0], [LTDL_INIT])dnl
+dnl Although the argument is deprecated and no longer documented,
+dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one
+dnl here make sure it is the same as any other declaration of libltdl's
+dnl location! This also ensures lt_ltdl_dir is set when configure.ac is
+dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
+m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
+_$0()
+])
+m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AU_DEFUN([AC_LIBLTDL_INSTALLABLE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_INSTALLABLE])
+m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_INSTALLABLE' is obsolete.
+You should run autoupdate.])dnl
+_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_INSTALLABLE])
+m4trace:/usr/share/aclocal/ltdl.m4:213: -1- AC_DEFUN([_LT_LIBOBJ], [
+ m4_pattern_allow([^_LT_LIBOBJS$])
+ _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext"
+])
+m4trace:/usr/share/aclocal/ltdl.m4:226: -1- AC_DEFUN([LTDL_INIT], [dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+dnl We need to keep our own list of libobjs separate from our parent project,
+dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while
+dnl we look for our own LIBOBJs.
+m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ]))
+m4_pushdef([AC_LIBSOURCES])
+
+dnl If not otherwise defined, default to the 1.5.x compatible subproject mode:
+m4_if(_LTDL_MODE, [],
+ [m4_define([_LTDL_MODE], m4_default([$2], [subproject]))
+ m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])],
+ [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])
+
+AC_ARG_WITH([included_ltdl],
+ [AS_HELP_STRING([--with-included-ltdl],
+ [use the GNU ltdl sources included here])])
+
+if test "x$with_included_ltdl" != xyes; then
+ # We are not being forced to use the included libltdl sources, so
+ # decide whether there is a useful installed version we can use.
+ AC_CHECK_HEADER([ltdl.h],
+ [AC_CHECK_DECL([lt_dlinterface_register],
+ [AC_CHECK_LIB([ltdl], [lt_dladvise_preload],
+ [with_included_ltdl=no],
+ [with_included_ltdl=yes])],
+ [with_included_ltdl=yes],
+ [AC_INCLUDES_DEFAULT
+ #include <ltdl.h>])],
+ [with_included_ltdl=yes],
+ [AC_INCLUDES_DEFAULT]
+ )
+fi
+
+dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE
+dnl was called yet, then for old times' sake, we assume libltdl is in an
+dnl eponymous directory:
+AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])])
+
+AC_ARG_WITH([ltdl_include],
+ [AS_HELP_STRING([--with-ltdl-include=DIR],
+ [use the ltdl headers installed in DIR])])
+
+if test -n "$with_ltdl_include"; then
+ if test -f "$with_ltdl_include/ltdl.h"; then :
+ else
+ AC_MSG_ERROR([invalid ltdl include directory: `$with_ltdl_include'])
+ fi
+else
+ with_ltdl_include=no
+fi
+
+AC_ARG_WITH([ltdl_lib],
+ [AS_HELP_STRING([--with-ltdl-lib=DIR],
+ [use the libltdl.la installed in DIR])])
+
+if test -n "$with_ltdl_lib"; then
+ if test -f "$with_ltdl_lib/libltdl.la"; then :
+ else
+ AC_MSG_ERROR([invalid ltdl library directory: `$with_ltdl_lib'])
+ fi
+else
+ with_ltdl_lib=no
+fi
+
+case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in
+ ,yes,no,no,)
+ m4_case(m4_default(_LTDL_TYPE, [convenience]),
+ [convenience], [_LTDL_CONVENIENCE],
+ [installable], [_LTDL_INSTALLABLE],
+ [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)])
+ ;;
+ ,no,no,no,)
+ # If the included ltdl is not to be used, then use the
+ # preinstalled libltdl we found.
+ AC_DEFINE([HAVE_LTDL], [1],
+ [Define this if a modern libltdl is already installed])
+ LIBLTDL=-lltdl
+ LTDLDEPS=
+ LTDLINCL=
+ ;;
+ ,no*,no,*)
+ AC_MSG_ERROR([`--with-ltdl-include' and `--with-ltdl-lib' options must be used together])
+ ;;
+ *) with_included_ltdl=no
+ LIBLTDL="-L$with_ltdl_lib -lltdl"
+ LTDLDEPS=
+ LTDLINCL="-I$with_ltdl_include"
+ ;;
+esac
+INCLTDL="$LTDLINCL"
+
+# Report our decision...
+AC_MSG_CHECKING([where to find libltdl headers])
+AC_MSG_RESULT([$LTDLINCL])
+AC_MSG_CHECKING([where to find libltdl library])
+AC_MSG_RESULT([$LIBLTDL])
+
+_LTDL_SETUP
+
+dnl restore autoconf definition.
+m4_popdef([AC_LIBOBJ])
+m4_popdef([AC_LIBSOURCES])
+
+AC_CONFIG_COMMANDS_PRE([
+ _ltdl_libobjs=
+ _ltdl_ltlibobjs=
+ if test -n "$_LT_LIBOBJS"; then
+ # Remove the extension.
+ _lt_sed_drop_objext='s/\.o$//;s/\.obj$//'
+ for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do
+ _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext"
+ _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo"
+ done
+ fi
+ AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs])
+ AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs])
+])
+
+# Only expand once:
+m4_define([LTDL_INIT])
+])
+m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AC_DEFUN([AC_LIB_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIB_LTDL' is obsolete.
+You should run autoupdate.])dnl
+LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AC_DEFUN([AC_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_WITH_LTDL' is obsolete.
+You should run autoupdate.])dnl
+LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AC_DEFUN([LT_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `LT_WITH_LTDL' is obsolete.
+You should run autoupdate.])dnl
+LTDL_INIT($@)])
+m4trace:/usr/share/aclocal/ltdl.m4:367: -1- AC_DEFUN([_LTDL_SETUP], [AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_SYS_MODULE_EXT])dnl
+AC_REQUIRE([LT_SYS_MODULE_PATH])dnl
+AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl
+AC_REQUIRE([LT_LIB_DLLOAD])dnl
+AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl
+AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl
+AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl
+AC_REQUIRE([gl_FUNC_ARGZ])dnl
+
+m4_require([_LT_CHECK_OBJDIR])dnl
+m4_require([_LT_HEADER_DLFCN])dnl
+m4_require([_LT_CHECK_DLPREOPEN])dnl
+m4_require([_LT_DECL_SED])dnl
+
+dnl Don't require this, or it will be expanded earlier than the code
+dnl that sets the variables it relies on:
+_LT_ENABLE_INSTALL
+
+dnl _LTDL_MODE specific code must be called at least once:
+_LTDL_MODE_DISPATCH
+
+# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS
+# the user used. This is so that ltdl.h can pick up the parent projects
+# config.h file, The first file in AC_CONFIG_HEADERS must contain the
+# definitions required by ltdl.c.
+# FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility).
+AC_CONFIG_COMMANDS_PRE([dnl
+m4_pattern_allow([^LT_CONFIG_H$])dnl
+m4_ifset([AH_HEADER],
+ [LT_CONFIG_H=AH_HEADER],
+ [m4_ifset([AC_LIST_HEADERS],
+ [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's,^[[ ]]*,,;s,[[ :]].*$,,'`],
+ [])])])
+AC_SUBST([LT_CONFIG_H])
+
+AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h],
+ [], [], [AC_INCLUDES_DEFAULT])
+
+AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])])
+AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])])
+
+AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension])
+
+name=ltdl
+LTDLOPEN=`eval "\\$ECHO \"$libname_spec\""`
+AC_SUBST([LTDLOPEN])
+])
+m4trace:/usr/share/aclocal/ltdl.m4:437: -1- AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_CACHE_CHECK([whether deplibs are loaded by dlopen],
+ [lt_cv_sys_dlopen_deplibs],
+ [# PORTME does your system automatically load deplibs for dlopen?
+ # or its logical equivalent (e.g. shl_load for HP-UX < 11)
+ # For now, we just catch OSes we know something about -- in the
+ # future, we'll try test this programmatically.
+ lt_cv_sys_dlopen_deplibs=unknown
+ case $host_os in
+ aix3*|aix4.1.*|aix4.2.*)
+ # Unknown whether this is true for these versions of AIX, but
+ # we want this `case' here to explicitly catch those versions.
+ lt_cv_sys_dlopen_deplibs=unknown
+ ;;
+ aix[[4-9]]*)
+ lt_cv_sys_dlopen_deplibs=yes
+ ;;
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ lt_cv_sys_dlopen_deplibs=no
+ ;;
+ esac
+ ;;
+ darwin*)
+ # Assuming the user has installed a libdl from somewhere, this is true
+ # If you are looking for one http://www.opendarwin.org/projects/dlcompat
+ lt_cv_sys_dlopen_deplibs=yes
+ ;;
+ freebsd* | dragonfly*)
+ lt_cv_sys_dlopen_deplibs=yes
+ ;;
+ gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ # GNU and its variants, using gnu ld.so (Glibc)
+ lt_cv_sys_dlopen_deplibs=yes
+ ;;
+ hpux10*|hpux11*)
+ lt_cv_sys_dlopen_deplibs=yes
+ ;;
+ interix*)
+ lt_cv_sys_dlopen_deplibs=yes
+ ;;
+ irix[[12345]]*|irix6.[[01]]*)
+ # Catch all versions of IRIX before 6.2, and indicate that we don't
+ # know how it worked for any of those versions.
+ lt_cv_sys_dlopen_deplibs=unknown
+ ;;
+ irix*)
+ # The case above catches anything before 6.2, and it's known that
+ # at 6.2 and later dlopen does load deplibs.
+ lt_cv_sys_dlopen_deplibs=yes
+ ;;
+ netbsd* | netbsdelf*-gnu)
+ lt_cv_sys_dlopen_deplibs=yes
+ ;;
+ openbsd*)
+ lt_cv_sys_dlopen_deplibs=yes
+ ;;
+ osf[[1234]]*)
+ # dlopen did load deplibs (at least at 4.x), but until the 5.x series,
+ # it did *not* use an RPATH in a shared library to find objects the
+ # library depends on, so we explicitly say `no'.
+ lt_cv_sys_dlopen_deplibs=no
+ ;;
+ osf5.0|osf5.0a|osf5.1)
+ # dlopen *does* load deplibs and with the right loader patch applied
+ # it even uses RPATH in a shared library to search for shared objects
+ # that the library depends on, but there's no easy way to know if that
+ # patch is installed. Since this is the case, all we can really
+ # say is unknown -- it depends on the patch being installed. If
+ # it is, this changes to `yes'. Without it, it would be `no'.
+ lt_cv_sys_dlopen_deplibs=unknown
+ ;;
+ osf*)
+ # the two cases above should catch all versions of osf <= 5.1. Read
+ # the comments above for what we know about them.
+ # At > 5.1, deplibs are loaded *and* any RPATH in a shared library
+ # is used to find them so we can finally say `yes'.
+ lt_cv_sys_dlopen_deplibs=yes
+ ;;
+ qnx*)
+ lt_cv_sys_dlopen_deplibs=yes
+ ;;
+ solaris*)
+ lt_cv_sys_dlopen_deplibs=yes
+ ;;
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ libltdl_cv_sys_dlopen_deplibs=yes
+ ;;
+ esac
+ ])
+if test "$lt_cv_sys_dlopen_deplibs" != yes; then
+ AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1],
+ [Define if the OS needs help to load dependent libraries for dlopen().])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:536: -1- AU_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:536: -1- AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYS_DLOPEN_DEPLIBS' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:543: -1- AC_DEFUN([LT_SYS_MODULE_EXT], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
+AC_CACHE_CHECK([which extension is used for runtime loadable modules],
+ [libltdl_cv_shlibext],
+[
+module=yes
+eval libltdl_cv_shlibext=$shrext_cmds
+ ])
+if test -n "$libltdl_cv_shlibext"; then
+ m4_pattern_allow([LT_MODULE_EXT])dnl
+ AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"],
+ [Define to the extension used for runtime loadable modules, say, ".so".])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:559: -1- AU_DEFUN([AC_LTDL_SHLIBEXT], [m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:559: -1- AC_DEFUN([AC_LTDL_SHLIBEXT], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBEXT' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:566: -1- AC_DEFUN([LT_SYS_MODULE_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
+AC_CACHE_CHECK([which variable specifies run-time module search path],
+ [lt_cv_module_path_var], [lt_cv_module_path_var="$shlibpath_var"])
+if test -n "$lt_cv_module_path_var"; then
+ m4_pattern_allow([LT_MODULE_PATH_VAR])dnl
+ AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"],
+ [Define to the name of the environment variable that determines the run-time module search path.])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:578: -1- AU_DEFUN([AC_LTDL_SHLIBPATH], [m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:578: -1- AC_DEFUN([AC_LTDL_SHLIBPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBPATH' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:585: -1- AC_DEFUN([LT_SYS_DLSEARCH_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
+AC_CACHE_CHECK([for the default library search path],
+ [lt_cv_sys_dlsearch_path],
+ [lt_cv_sys_dlsearch_path="$sys_lib_dlsearch_path_spec"])
+if test -n "$lt_cv_sys_dlsearch_path"; then
+ sys_dlsearch_path=
+ for dir in $lt_cv_sys_dlsearch_path; do
+ if test -z "$sys_dlsearch_path"; then
+ sys_dlsearch_path="$dir"
+ else
+ sys_dlsearch_path="$sys_dlsearch_path$PATH_SEPARATOR$dir"
+ fi
+ done
+ m4_pattern_allow([LT_DLSEARCH_PATH])dnl
+ AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"],
+ [Define to the system default library search path.])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:606: -1- AU_DEFUN([AC_LTDL_SYSSEARCHPATH], [m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:606: -1- AC_DEFUN([AC_LTDL_SYSSEARCHPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYSSEARCHPATH' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:632: -1- AC_DEFUN([LT_LIB_DLLOAD], [m4_pattern_allow([^LT_DLLOADERS$])
+LT_DLLOADERS=
+AC_SUBST([LT_DLLOADERS])
+
+AC_LANG_PUSH([C])
+
+LIBADD_DLOPEN=
+AC_SEARCH_LIBS([dlopen], [dl],
+ [AC_DEFINE([HAVE_LIBDL], [1],
+ [Define if you have the libdl library or equivalent.])
+ if test "$ac_cv_search_dlopen" != "none required" ; then
+ LIBADD_DLOPEN="-ldl"
+ fi
+ libltdl_cv_lib_dl_dlopen="yes"
+ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H
+# include <dlfcn.h>
+#endif
+ ]], [[dlopen(0, 0);]])],
+ [AC_DEFINE([HAVE_LIBDL], [1],
+ [Define if you have the libdl library or equivalent.])
+ libltdl_cv_func_dlopen="yes"
+ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
+ [AC_CHECK_LIB([svld], [dlopen],
+ [AC_DEFINE([HAVE_LIBDL], [1],
+ [Define if you have the libdl library or equivalent.])
+ LIBADD_DLOPEN="-lsvld" libltdl_cv_func_dlopen="yes"
+ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])])
+if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes
+then
+ lt_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBADD_DLOPEN"
+ AC_CHECK_FUNCS([dlerror])
+ LIBS="$lt_save_LIBS"
+fi
+AC_SUBST([LIBADD_DLOPEN])
+
+LIBADD_SHL_LOAD=
+AC_CHECK_FUNC([shl_load],
+ [AC_DEFINE([HAVE_SHL_LOAD], [1],
+ [Define if you have the shl_load function.])
+ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"],
+ [AC_CHECK_LIB([dld], [shl_load],
+ [AC_DEFINE([HAVE_SHL_LOAD], [1],
+ [Define if you have the shl_load function.])
+ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"
+ LIBADD_SHL_LOAD="-ldld"])])
+AC_SUBST([LIBADD_SHL_LOAD])
+
+case $host_os in
+darwin[[1567]].*)
+# We only want this for pre-Mac OS X 10.4.
+ AC_CHECK_FUNC([_dyld_func_lookup],
+ [AC_DEFINE([HAVE_DYLD], [1],
+ [Define if you have the _dyld_func_lookup function.])
+ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"])
+ ;;
+beos*)
+ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la"
+ ;;
+cygwin* | mingw* | os2* | pw32*)
+ AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include <sys/cygwin.h>]])
+ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la"
+ ;;
+esac
+
+AC_CHECK_LIB([dld], [dld_link],
+ [AC_DEFINE([HAVE_DLD], [1],
+ [Define if you have the GNU dld library.])
+ LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"])
+AC_SUBST([LIBADD_DLD_LINK])
+
+m4_pattern_allow([^LT_DLPREOPEN$])
+LT_DLPREOPEN=
+if test -n "$LT_DLLOADERS"
+then
+ for lt_loader in $LT_DLLOADERS; do
+ LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader "
+ done
+ AC_DEFINE([HAVE_LIBDLLOADER], [1],
+ [Define if libdlloader will be built on this platform])
+fi
+AC_SUBST([LT_DLPREOPEN])
+
+dnl This isn't used anymore, but set it for backwards compatibility
+LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD"
+AC_SUBST([LIBADD_DL])
+
+AC_LANG_POP
+])
+m4trace:/usr/share/aclocal/ltdl.m4:725: -1- AU_DEFUN([AC_LTDL_DLLIB], [m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:725: -1- AC_DEFUN([AC_LTDL_DLLIB], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLLIB' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:733: -1- AC_DEFUN([LT_SYS_SYMBOL_USCORE], [m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+AC_CACHE_CHECK([for _ prefix in compiled symbols],
+ [lt_cv_sys_symbol_underscore],
+ [lt_cv_sys_symbol_underscore=no
+ cat > conftest.$ac_ext <<_LT_EOF
+void nm_test_func(){}
+int main(){nm_test_func;return 0;}
+_LT_EOF
+ if AC_TRY_EVAL(ac_compile); then
+ # Now try to grab the symbols.
+ ac_nlist=conftest.nm
+ if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then
+ # See whether the symbols have a leading underscore.
+ if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then
+ lt_cv_sys_symbol_underscore=yes
+ else
+ if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then
+ :
+ else
+ echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ fi
+ else
+ echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
+ cat conftest.c >&AS_MESSAGE_LOG_FD
+ fi
+ rm -rf conftest*
+ ])
+ sys_symbol_underscore=$lt_cv_sys_symbol_underscore
+ AC_SUBST([sys_symbol_underscore])
+])
+m4trace:/usr/share/aclocal/ltdl.m4:770: -1- AU_DEFUN([AC_LTDL_SYMBOL_USCORE], [m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:770: -1- AC_DEFUN([AC_LTDL_SYMBOL_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYMBOL_USCORE' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:777: -1- AC_DEFUN([LT_FUNC_DLSYM_USCORE], [AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl
+if test x"$lt_cv_sys_symbol_underscore" = xyes; then
+ if test x"$libltdl_cv_func_dlopen" = xyes ||
+ test x"$libltdl_cv_lib_dl_dlopen" = xyes ; then
+ AC_CACHE_CHECK([whether we have to add an underscore for dlsym],
+ [libltdl_cv_need_uscore],
+ [libltdl_cv_need_uscore=unknown
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBADD_DLOPEN"
+ _LT_TRY_DLOPEN_SELF(
+ [libltdl_cv_need_uscore=no], [libltdl_cv_need_uscore=yes],
+ [], [libltdl_cv_need_uscore=cross])
+ LIBS="$save_LIBS"
+ ])
+ fi
+fi
+
+if test x"$libltdl_cv_need_uscore" = xyes; then
+ AC_DEFINE([NEED_USCORE], [1],
+ [Define if dlsym() requires a leading underscore in symbol names.])
+fi
+])
+m4trace:/usr/share/aclocal/ltdl.m4:802: -1- AU_DEFUN([AC_LTDL_DLSYM_USCORE], [m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])])
+m4trace:/usr/share/aclocal/ltdl.m4:802: -1- AC_DEFUN([AC_LTDL_DLSYM_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLSYM_USCORE' is obsolete.
+You should run autoupdate.])dnl
+m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])])
+m4trace:/usr/share/aclocal/ltoptions.m4:13: -1- AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+m4trace:/usr/share/aclocal/ltoptions.m4:110: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:110: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN' is obsolete.
+You should run autoupdate.])dnl
+_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:145: -1- AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:145: -1- AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_WIN32_DLL' is obsolete.
+You should run autoupdate.])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:194: -1- AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:198: -1- AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:202: -1- AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:202: -1- AC_DEFUN([AM_ENABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_SHARED' is obsolete.
+You should run autoupdate.])dnl
+AC_ENABLE_SHARED($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:203: -1- AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:203: -1- AC_DEFUN([AM_DISABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_SHARED' is obsolete.
+You should run autoupdate.])dnl
+AC_DISABLE_SHARED($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:248: -1- AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:252: -1- AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:256: -1- AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:256: -1- AC_DEFUN([AM_ENABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_STATIC' is obsolete.
+You should run autoupdate.])dnl
+AC_ENABLE_STATIC($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:257: -1- AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:257: -1- AC_DEFUN([AM_DISABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_STATIC' is obsolete.
+You should run autoupdate.])dnl
+AC_DISABLE_STATIC($@)])
+m4trace:/usr/share/aclocal/ltoptions.m4:302: -1- AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:302: -1- AC_DEFUN([AC_ENABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_ENABLE_FAST_INSTALL' is obsolete.
+You should run autoupdate.])dnl
+_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:309: -1- AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:309: -1- AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_DISABLE_FAST_INSTALL' is obsolete.
+You should run autoupdate.])dnl
+_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:342: -1- AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+m4trace:/usr/share/aclocal/ltoptions.m4:342: -1- AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_PICMODE' is obsolete.
+You should run autoupdate.])dnl
+_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+m4trace:/usr/share/aclocal/ltsugar.m4:13: -1- AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+m4trace:/usr/share/aclocal/ltversion.m4:18: -1- AC_DEFUN([LTVERSION_VERSION], [macro_version='2.2.6b'
+macro_revision='1.3017'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:36: -1- AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:40: -1- AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:41: -1- AC_DEFUN([_LT_AC_SHELL_INIT])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:42: -1- AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:44: -1- AC_DEFUN([_LT_AC_TAGVAR])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:45: -1- AC_DEFUN([AC_LTDL_ENABLE_INSTALL])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:46: -1- AC_DEFUN([AC_LTDL_PREOPEN])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:47: -1- AC_DEFUN([_LT_AC_SYS_COMPILER])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:48: -1- AC_DEFUN([_LT_AC_LOCK])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:49: -1- AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:50: -1- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:51: -1- AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:52: -1- AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:53: -1- AC_DEFUN([AC_LIBTOOL_OBJDIR])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:54: -1- AC_DEFUN([AC_LTDL_OBJDIR])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:55: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:56: -1- AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:57: -1- AC_DEFUN([AC_PATH_MAGIC])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:58: -1- AC_DEFUN([AC_PROG_LD_GNU])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:59: -1- AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:60: -1- AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:61: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:62: -1- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:63: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:64: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:65: -1- AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:66: -1- AC_DEFUN([LT_AC_PROG_EGREP])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:71: -1- AC_DEFUN([_AC_PROG_LIBTOOL])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:72: -1- AC_DEFUN([AC_LIBTOOL_SETUP])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:73: -1- AC_DEFUN([_LT_AC_CHECK_DLFCN])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:74: -1- AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:75: -1- AC_DEFUN([_LT_AC_TAGCONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:77: -1- AC_DEFUN([_LT_AC_LANG_CXX])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:78: -1- AC_DEFUN([_LT_AC_LANG_F77])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:79: -1- AC_DEFUN([_LT_AC_LANG_GCJ])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:80: -1- AC_DEFUN([AC_LIBTOOL_RC])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:81: -1- AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:82: -1- AC_DEFUN([_LT_AC_LANG_C_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:83: -1- AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:84: -1- AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:85: -1- AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:86: -1- AC_DEFUN([_LT_AC_LANG_F77_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:87: -1- AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:88: -1- AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:89: -1- AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:90: -1- AC_DEFUN([_LT_AC_LANG_RC_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:91: -1- AC_DEFUN([AC_LIBTOOL_CONFIG])
+m4trace:/usr/share/aclocal/lt~obsolete.m4:92: -1- AC_DEFUN([_LT_AC_FILE_LTDLL_C])
+m4trace:/usr/share/aclocal-1.11/amversion.m4:14: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.11.1], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+m4trace:/usr/share/aclocal-1.11/amversion.m4:33: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+m4trace:/usr/share/aclocal-1.11/auxdir.m4:47: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+m4trace:/usr/share/aclocal-1.11/cond.m4:15: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+m4trace:/usr/share/aclocal-1.11/depend.m4:28: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], UPC, [depcc="$UPC" am_compiler_list=],
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ am__universal=false
+ m4_case([$1], [CC],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac],
+ [CXX],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac])
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+m4trace:/usr/share/aclocal-1.11/depend.m4:163: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+m4trace:/usr/share/aclocal-1.11/depend.m4:171: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+m4trace:/usr/share/aclocal-1.11/depout.m4:14: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+])
+m4trace:/usr/share/aclocal-1.11/depout.m4:75: -1- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+m4trace:/usr/share/aclocal-1.11/init.m4:26: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+m4trace:/usr/share/aclocal-1.11/init.m4:126: -1- AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+m4trace:/usr/share/aclocal-1.11/install-sh.m4:11: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+AC_SUBST(install_sh)])
+m4trace:/usr/share/aclocal-1.11/lead-dot.m4:12: -1- AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+m4trace:/usr/share/aclocal-1.11/make.m4:14: -1- AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+m4trace:/usr/share/aclocal-1.11/missing.m4:14: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+m4trace:/usr/share/aclocal-1.11/missing.m4:24: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+m4trace:/usr/share/aclocal-1.11/mkdirp.m4:11: -1- AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+ [[\\/$]]* | ?:[[\\/]]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+m4trace:/usr/share/aclocal-1.11/options.m4:13: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+m4trace:/usr/share/aclocal-1.11/options.m4:19: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+m4trace:/usr/share/aclocal-1.11/options.m4:25: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+m4trace:/usr/share/aclocal-1.11/options.m4:31: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+m4trace:/usr/share/aclocal-1.11/python.m4:35: -1- AC_DEFUN([AM_PATH_PYTHON], [
+ dnl Find a Python interpreter. Python versions prior to 2.0 are not
+ dnl supported. (2.0 was released on October 16, 2000).
+ m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
+ [python python2 python3 python3.0 python2.5 python2.4 python2.3 python2.2 dnl
+python2.1 python2.0])
+
+ m4_if([$1],[],[
+ dnl No version check is needed.
+ # Find any Python interpreter.
+ if test -z "$PYTHON"; then
+ AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :)
+ fi
+ am_display_PYTHON=python
+ ], [
+ dnl A version check is needed.
+ if test -n "$PYTHON"; then
+ # If the user set $PYTHON, use it and don't search something else.
+ AC_MSG_CHECKING([whether $PYTHON version >= $1])
+ AM_PYTHON_CHECK_VERSION([$PYTHON], [$1],
+ [AC_MSG_RESULT(yes)],
+ [AC_MSG_ERROR(too old)])
+ am_display_PYTHON=$PYTHON
+ else
+ # Otherwise, try each interpreter until we find one that satisfies
+ # VERSION.
+ AC_CACHE_CHECK([for a Python interpreter with version >= $1],
+ [am_cv_pathless_PYTHON],[
+ for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do
+ test "$am_cv_pathless_PYTHON" = none && break
+ AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
+ done])
+ # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
+ if test "$am_cv_pathless_PYTHON" = none; then
+ PYTHON=:
+ else
+ AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON])
+ fi
+ am_display_PYTHON=$am_cv_pathless_PYTHON
+ fi
+ ])
+
+ if test "$PYTHON" = :; then
+ dnl Run any user-specified action, or abort.
+ m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])])
+ else
+
+ dnl Query Python for its version number. Getting [:3] seems to be
+ dnl the best way to do this; it's what "site.py" does in the standard
+ dnl library.
+
+ AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version],
+ [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`])
+ AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
+
+ dnl Use the values of $prefix and $exec_prefix for the corresponding
+ dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made
+ dnl distinct variables so they can be overridden if need be. However,
+ dnl general consensus is that you shouldn't need this ability.
+
+ AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
+ AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
+
+ dnl At times (like when building shared libraries) you may want
+ dnl to know which OS platform Python thinks this is.
+
+ AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform],
+ [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
+ AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
+
+
+ dnl Set up 4 directories:
+
+ dnl pythondir -- where to install python scripts. This is the
+ dnl site-packages directory, not the python standard library
+ dnl directory like in previous automake betas. This behavior
+ dnl is more consistent with lispdir.m4 for example.
+ dnl Query distutils for this directory. distutils does not exist in
+ dnl Python 1.5, so we fall back to the hardcoded directory if it
+ dnl doesn't work.
+ AC_CACHE_CHECK([for $am_display_PYTHON script directory],
+ [am_cv_python_pythondir],
+ [if test "x$prefix" = xNONE
+ then
+ am_py_prefix=$ac_default_prefix
+ else
+ am_py_prefix=$prefix
+ fi
+ am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null ||
+ echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`
+ case $am_cv_python_pythondir in
+ $am_py_prefix*)
+ am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+ am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
+ ;;
+ *)
+ case $am_py_prefix in
+ /usr|/System*) ;;
+ *)
+ am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
+ ;;
+ esac
+ ;;
+ esac
+ ])
+ AC_SUBST([pythondir], [$am_cv_python_pythondir])
+
+ dnl pkgpythondir -- $PACKAGE directory under pythondir. Was
+ dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is
+ dnl more consistent with the rest of automake.
+
+ AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
+
+ dnl pyexecdir -- directory for installing python extension modules
+ dnl (shared libraries)
+ dnl Query distutils for this directory. distutils does not exist in
+ dnl Python 1.5, so we fall back to the hardcoded directory if it
+ dnl doesn't work.
+ AC_CACHE_CHECK([for $am_display_PYTHON extension module directory],
+ [am_cv_python_pyexecdir],
+ [if test "x$exec_prefix" = xNONE
+ then
+ am_py_exec_prefix=$am_py_prefix
+ else
+ am_py_exec_prefix=$exec_prefix
+ fi
+ am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null ||
+ echo "$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages"`
+ case $am_cv_python_pyexecdir in
+ $am_py_exec_prefix*)
+ am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+ am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
+ ;;
+ *)
+ case $am_py_exec_prefix in
+ /usr|/System*) ;;
+ *)
+ am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
+ ;;
+ esac
+ ;;
+ esac
+ ])
+ AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
+
+ dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
+
+ AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
+
+ dnl Run any user-specified action.
+ $2
+ fi
+
+])
+m4trace:/usr/share/aclocal-1.11/python.m4:199: -1- AC_DEFUN([AM_PYTHON_CHECK_VERSION], [prog="import sys
+# split strings by '.' and convert to numeric. Append some zeros
+# because we need at least 4 digits for the hex conversion.
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
+minverhex = 0
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
+sys.exit(sys.hexversion < minverhex)"
+ AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
+m4trace:/usr/share/aclocal-1.11/runlog.m4:12: -1- AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+ ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ (exit $ac_status); }])
+m4trace:/usr/share/aclocal-1.11/sanity.m4:14: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+m4trace:/usr/share/aclocal-1.11/silent.m4:14: -1- AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules],
+[ --enable-silent-rules less verbose build output (undo: `make V=1')
+ --disable-silent-rules verbose build output (undo: `make V=0')])
+case $enable_silent_rules in
+yes) AM_DEFAULT_VERBOSITY=0;;
+no) AM_DEFAULT_VERBOSITY=1;;
+*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
+m4trace:/usr/share/aclocal-1.11/strip.m4:17: -1- AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+m4trace:/usr/share/aclocal-1.11/substnot.m4:14: -1- AC_DEFUN([_AM_SUBST_NOTMAKE])
+m4trace:/usr/share/aclocal-1.11/substnot.m4:19: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+m4trace:/usr/share/aclocal-1.11/tar.m4:24: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+])
+m4trace:config/autotroll.m4:70: -1- m4_pattern_forbid([^AT_])
+m4trace:config/autotroll.m4:71: -1- m4_pattern_forbid([^_AT_])
+m4trace:config/autotroll.m4:97: -1- AC_DEFUN([AT_WITH_QT], [ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([AC_CANONICAL_BUILD])
+ AC_REQUIRE([AC_PROG_CXX])
+
+ test x"$TROLL" != x && echo 'ViM rox emacs.'
+
+dnl Memo: AC_ARG_WITH(package, help-string, [if-given], [if-not-given])
+ AC_ARG_WITH([qt],
+ [AS_HELP_STRING([--with-qt],
+ [Path to Qt @<:@Look in PATH and /usr/local/Trolltech@:>@])],
+ [QT_PATH=$withval], [QT_PATH=])
+
+ # Find Qt.
+ if test -d /usr/local/Trolltech; then
+ # Try to find the latest version.
+ tmp_qt_paths=`echo /usr/local/Trolltech/*/bin | tr ' ' '\n' | sort -nr \
+ | xargs | sed 's/ */:/g'`
+ fi
+
+ # Find qmake.
+ AC_PATH_PROGS([QMAKE], [qmake-qt4${EXEEXT}], [missing], [$QT_DIR:$QT_PATH:$PATH:$tmp_qt_paths])
+ if test x"$QMAKE" = xmissing; then
+ AC_PATH_PROGS([QMAKE], [qmake${EXEEXT}], [missing], [$QT_DIR:$QT_PATH:$PATH:$tmp_qt_paths])
+ if test x"$QMAKE" = xmissing; then
+ AC_MSG_ERROR([Cannot find qmake in your PATH. Try using --with-qt.])
+ fi
+ fi
+
+ # Find moc (Meta Object Compiler).
+ AC_PATH_PROGS([MOC], [moc-qt4${EXEEXT}], [missing], [$QT_PATH:$PATH:$tmp_qt_paths])
+ if test x"$MOC" = xmissing; then
+ AC_PATH_PROGS([MOC], [moc${EXEEXT}], [missing], [$QT_PATH:$PATH:$tmp_qt_paths])
+ if test x"$MOC" = xmissing; then
+ AC_MSG_ERROR([Cannot find moc (Meta Object Compiler) in your PATH. Try using --with-qt.])
+ fi
+ fi
+
+ # Find uic (User Interface Compiler).
+ AC_PATH_PROGS([UIC], [uic-qt4${EXEEXT}], [missing], [$QT_PATH:$PATH:$tmp_qt_paths])
+ if test x"$UIC" = xmissing; then
+ AC_PATH_PROGS([UIC], [uic${EXEEXT}], [missing], [$QT_PATH:$PATH:$tmp_qt_paths])
+ if test x"$UIC" = xmissing; then
+ AC_MSG_ERROR([Cannot find uic (User Interface Compiler) in your PATH. Try using --with-qt.])
+ fi
+ fi
+
+ # Find rcc (Qt Resource Compiler).
+ AC_PATH_PROGS([RCC], [rcc-qt4${EXEEXT}], [false], [$QT_PATH:$PATH:$tmp_qt_paths])
+ if test x"$RCC" = xfalse; then
+ AC_PATH_PROGS([RCC], [rcc${EXEEXT}], [false], [$QT_PATH:$PATH:$tmp_qt_paths])
+ if test x"$RCC" = xfalse; then
+ AC_MSG_WARN([Cannot find rcc (Qt Resource Compiler) in your PATH. Try using --with-qt.])
+ fi
+ fi
+
+ # If we don't know the path to Qt, guess it from the path to qmake.
+ if test x"$QT_PATH" = x; then
+ QT_PATH=`dirname "$QMAKE"`
+ fi
+ if test x"$QT_PATH" = x; then
+ AC_MSG_ERROR([Cannot find the path to your Qt install. Use --with-qt.])
+ fi
+ AC_SUBST([QT_PATH])
+
+ # Get ready to build a test-app with Qt.
+
+ # Look for a writable temporary directory.
+ AC_ARG_VAR([TMPDIR], [A temporary directory with write access @<:@/tmp@:>@])
+ if test x"$TMPDIR" = x || test ! -d "$TMPDIR" || test ! -w "$TMPDIR"; then
+ echo "$as_me:$LINENO: no TMPDIR or bad TMPDIR ($TMPDIR)" \
+ >&AS_MESSAGE_LOG_FD
+ for i in /tmp /var/tmp; do
+ if test -d "$i" && test -w "$i"; then
+ TMPDIR=$i
+ export TMPDIR
+ echo "$as_me:$LINENO: setting TMPDIR=$TMPDIR" >&AS_MESSAGE_LOG_FD
+ break
+ fi
+ done
+ fi
+
+ # Kludge!! QMake has a very strange behavior. For instance, if you
+ # install Qt under your $HOME and run QMake somewhere else under your
+ # $HOME, it will try to be clever and produce Makefiles with relative
+ # include paths. In order to avoid this, we will test QMake from a
+ # temporary directory (usually /tmp). Note that this problem was only
+ # observed with Qt 4.
+ my_configure_pwd=`pwd`
+ my_tmpdir="$TMPDIR/conftest$$.dir"
+ test -d "$my_tmpdir" || mkdir "$my_tmpdir"
+ if test -w "$my_tmpdir" && cd "$my_tmpdir"
+ then
+ :
+ else
+ AC_MSG_ERROR([Cannot cd to or write in $my_tmpdir])
+ fi
+ cat >conftest.h <<_ASEOF
+#include <QObject>
+
+class Foo: public QObject
+{
+ Q_OBJECT;
+public:
+ Foo();
+ ~Foo() {}
+public slots:
+ void setValue(int value);
+signals:
+ void valueChanged(int newValue);
+private:
+ int value_;
+};
+_ASEOF
+
+ cat >conftest.cpp <<_ASEOF
+#include "conftest.h"
+Foo::Foo()
+ : value_ (42)
+{
+ connect(this, SIGNAL(valueChanged(int)), this, SLOT(setValue(int)));
+}
+
+void Foo::setValue(int value)
+{
+ value_ = value;
+}
+
+int main()
+{
+ Foo f;
+}
+_ASEOF
+ if $QMAKE -project; then :; else
+ AC_MSG_ERROR([Calling $QMAKE -project failed.])
+ fi
+
+ # Find the .pro file generated by qmake.
+ pro_file='conftest.dir.pro'
+ test -f $pro_file || pro_file=`echo *.pro`
+ if test -f "$pro_file"; then :; else
+ AC_MSG_ERROR([Can't find the .pro file generated by Qmake.])
+ fi
+
+dnl Tweak the value of QT in the .pro if have been the 1st arg.
+m4_ifval([$1], [_AT_TWEAK_PRO_FILE([QT], [$1])])
+
+dnl Tweak the value of CONFIG in the .pro if have been given a 2nd arg.
+m4_ifval([$2], [_AT_TWEAK_PRO_FILE([CONFIG], [$2])])
+
+m4_ifval([$3],
+[ # Add the extra-settings the user wants to set in the .pro
+ echo "$3" >>"$pro_file"
+])
+
+ echo "$as_me:$LINENO: Invoking $QMAKE on $pro_file" >&AS_MESSAGE_LOG_FD
+ sed 's/^/| /' "$pro_file" >&AS_MESSAGE_LOG_FD
+
+ if $QMAKE; then :; else
+ AC_MSG_ERROR([Calling $QMAKE failed.])
+ fi
+ # Try to compile a simple Qt app.
+ AC_CACHE_CHECK([whether we can build a simple Qt app], [at_cv_qt_build],
+ [at_cv_qt_build=ko
+ : ${MAKE=make}
+
+ if $MAKE >&AS_MESSAGE_LOG_FD 2>&1; then
+ at_cv_qt_build='ok, looks like Qt 4'
+ else
+ echo "$as_me:$LINENO: Build failed, trying to #include <qobject.h> \
+instead" >&AS_MESSAGE_LOG_FD
+ sed 's/<QObject>/<qobject.h>/' conftest.h > tmp.h && mv tmp.h conftest.h
+ if $MAKE >&AS_MESSAGE_LOG_FD 2>&1; then
+ at_cv_qt_build='ok, looks like Qt 3'
+ else
+ # Sometimes (such as on Debian) build will fail because Qt hasn't been
+ # installed in debug mode and qmake tries (by default) to build apps in
+ # debug mode => Try again in release mode.
+ echo "$as_me:$LINENO: Build failed, trying to enforce release mode" \
+ >&AS_MESSAGE_LOG_FD
+
+ _AT_TWEAK_PRO_FILE([CONFIG], [+release])
+
+ sed 's/<qobject.h>/<QObject>/' conftest.h > tmp.h && mv tmp.h conftest.h
+ if $MAKE >&AS_MESSAGE_LOG_FD 2>&1; then
+ at_cv_qt_build='ok, looks like Qt 4, release mode forced'
+ else
+ echo "$as_me:$LINENO: Build failed, trying to #include <qobject.h> \
+instead" >&AS_MESSAGE_LOG_FD
+ sed 's/<QObject>/<qobject.h>/' conftest.h > tmp.h && mv tmp.h conftest.h
+ if $MAKE >&AS_MESSAGE_LOG_FD 2>&1; then
+ at_cv_qt_build='ok, looks like Qt 3, release mode forced'
+ else
+ at_cv_qt_build=ko
+ echo "$as_me:$LINENO: failed program was:" >&AS_MESSAGE_LOG_FD
+ sed 's/^/| /' conftest.h >&AS_MESSAGE_LOG_FD
+ echo "$as_me:$LINENO: failed program was:" >&AS_MESSAGE_LOG_FD
+ sed 's/^/| /' conftest.cpp >&AS_MESSAGE_LOG_FD
+ fi # if make with Qt3-style #include and release mode forced.
+ fi # if make with Qt4-style #include and release mode forced.
+ fi # if make with Qt3-style #include.
+ fi # if make with Qt4-style #include.
+ ])dnl end: AC_CACHE_CHECK(at_cv_qt_build)
+
+ if test x"$at_cv_qt_build" = xko; then
+ AC_MSG_ERROR([Cannot build a test Qt program])
+ fi
+ QT_VERSION_MAJOR=`echo "$at_cv_qt_build" | sed 's/^[^0-9]*//'`
+ AC_SUBST([QT_VERSION_MAJOR])
+
+ # This sed filter is applied after an expression of the form: /^FOO.*=/!d;
+ # It starts by removing the beginning of the line, removing references to
+ # SUBLIBS, removing unnecessary whitespaces at the beginning, and prefixes
+ # all variable uses by QT_.
+ qt_sed_filter='s///;
+ s/$(SUBLIBS)//g;
+ s/^ *//;
+ s/\$(\(@<:@A-Z_@:>@@<:@A-Z_@:>@*\))/$(QT_\1)/g'
+
+ # Find the Makefile (qmake happens to generate a fake Makefile which invokes
+ # a Makefile.Debug or Makefile.Release). We we have both, we'll pick the
+ # Makefile.Release. The reason is that the main difference is that release
+ # uses -Os and debug -g. We can override -Os by passing another -O but we
+ # usually don't override -g.
+ if test -f Makefile.Release; then
+ at_mfile='Makefile.Release'
+ else
+ at_mfile='Makefile'
+ fi
+ if test -f $at_mfile; then :; else
+ cd "$my_configure_pwd"
+ AC_MSG_ERROR([Cannot find the Makefile generated by qmake.])
+ fi
+
+ # Find the DEFINES of Qt (should have been named CPPFLAGS).
+ AC_CACHE_CHECK([for the DEFINES to use with Qt], [at_cv_env_QT_DEFINES],
+ [at_cv_env_QT_DEFINES=`sed "/^DEFINES@<:@ @:>@*=/!d;$qt_sed_filter" $at_mfile`])
+ AC_SUBST([QT_DEFINES], [$at_cv_env_QT_DEFINES])
+
+ # Find the CFLAGS of Qt (We can use Qt in C?!)
+ AC_CACHE_CHECK([for the CFLAGS to use with Qt], [at_cv_env_QT_CFLAGS],
+ [at_cv_env_QT_CFLAGS=`sed "/^CFLAGS@<:@ @:>@*=/!d;$qt_sed_filter" $at_mfile`])
+ AC_SUBST([QT_CFLAGS], [$at_cv_env_QT_CFLAGS])
+
+ # Find the CXXFLAGS of Qt.
+ AC_CACHE_CHECK([for the CXXFLAGS to use with Qt], [at_cv_env_QT_CXXFLAGS],
+ [at_cv_env_QT_CXXFLAGS=`sed "/^CXXFLAGS@<:@ @:>@*=/!d;$qt_sed_filter" $at_mfile`])
+ AC_SUBST([QT_CXXFLAGS], [$at_cv_env_QT_CXXFLAGS])
+
+ # Find the INCPATH of Qt.
+ AC_CACHE_CHECK([for the INCPATH to use with Qt], [at_cv_env_QT_INCPATH],
+ [at_cv_env_QT_INCPATH=`sed "/^INCPATH@<:@ @:>@*=/!d;$qt_sed_filter" $at_mfile`])
+ AC_SUBST([QT_INCPATH], [$at_cv_env_QT_INCPATH])
+
+ AC_SUBST([QT_CPPFLAGS], ["$at_cv_env_QT_DEFINES $at_cv_env_QT_INCPATH"])
+
+ # Find the LFLAGS of Qt (Should have been named LDFLAGS)
+ AC_CACHE_CHECK([for the LDFLAGS to use with Qt], [at_cv_env_QT_LDFLAGS],
+ [at_cv_env_QT_LDFLAGS=`sed "/^LDFLAGS@<:@ @:>@*=/!d;$qt_sed_filter" $at_mfile`])
+ AC_SUBST([QT_LFLAGS], [$at_cv_env_QT_LDFLAGS])
+ AC_SUBST([QT_LDFLAGS], [$at_cv_env_QT_LDFLAGS])
+
+ AC_MSG_CHECKING([whether host operating system is Darwin])
+ at_darwin="no"
+ case $host_os in
+ darwin*)
+ at_darwin="yes"
+ ;;
+ esac
+ AC_MSG_RESULT([$at_darwin])
+
+ # Find the LIBS of Qt.
+ AC_CACHE_CHECK([for the LIBS to use with Qt], [at_cv_env_QT_LIBS],
+ [at_cv_env_QT_LIBS=`sed "/^LIBS@<:@ @:>@*=/!d;$qt_sed_filter" $at_mfile`
+ if test x$at_darwin = xyes; then
+ # Fix QT_LIBS: as of today Libtool (GNU Libtool 1.5.23a) doesn't handle
+ # -F properly. The "bug" has been fixed on 22 October 2006
+ # by Peter O'Gorman but we provide backward compatibility here.
+ at_cv_env_QT_LIBS=`echo "$at_cv_env_QT_LIBS" \
+ | sed 's/^-F/-Wl,-F/;s/ -F/ -Wl,-F/g'`
+ fi
+ ])
+ AC_SUBST([QT_LIBS], [$at_cv_env_QT_LIBS])
+
+ cd "$my_configure_pwd" || echo 'WTF!'
+ rm -rf "$my_tmpdir"
+])
+m4trace:config/autotroll.m4:389: -1- AC_DEFUN([AT_REQUIRE_QT_VERSION], [ AC_PREREQ([2.60])
+ if test x"$QMAKE" = x; then
+ AC_MSG_ERROR([\$QMAKE is empty. \
+Did you invoke AT@&t at _WITH_QT before AT@&t at _REQUIRE_QT_VERSION?])
+ fi
+ AC_CACHE_CHECK([for Qt's version], [at_cv_QT_VERSION],
+ [echo "$as_me:$LINENO: Running $QMAKE --version:" >&AS_MESSAGE_LOG_FD
+ $QMAKE --version >&AS_MESSAGE_LOG_FD 2>&1
+ qmake_version_sed=['/^.*\([0-9]\.[0-9]\.[0-9]\).*$/!d;s//\1/']
+ at_cv_QT_VERSION=`$QMAKE --version 2>&1 | sed "$qmake_version_sed"`])
+ if test x"$at_cv_QT_VERSION" = x; then
+ AC_MSG_ERROR([Cannot detect Qt's version.])
+ fi
+ AC_SUBST([QT_VERSION], [$at_cv_QT_VERSION])
+ AS_VERSION_COMPARE([$QT_VERSION], [$1],
+ [AC_MSG_ERROR([This package requires Qt $1 or above.])])
+])
+m4trace:config/autotroll.m4:416: -1- AC_DEFUN([_AT_TWEAK_PRO_FILE], [ # Tweak the value of $1 in the .pro file for $2.
+
+ qt_conf=''
+ for at_mod in $2; do
+ at_mod=`echo "$at_mod" | sed 's/^-//; tough
+ s/^+//; beef
+ :ough
+ s/^/$1 -= /;n
+ :eef
+ s/^/$1 += /'`
+ qt_conf="$qt_conf
+$at_mod"
+ done
+ echo "$qt_conf" | sed 1d >>"$pro_file"
+])
+m4trace:configure.ac:1: -1- m4_pattern_forbid([^_?A[CHUM]_])
+m4trace:configure.ac:1: -1- m4_pattern_forbid([_AC_])
+m4trace:configure.ac:1: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^AS_FLAGS$])
+m4trace:configure.ac:1: -1- m4_pattern_forbid([^_?m4_])
+m4trace:configure.ac:1: -1- m4_pattern_forbid([^dnl$])
+m4trace:configure.ac:1: -1- m4_pattern_forbid([^_?AS_])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^SHELL$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PATH_SEPARATOR$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^exec_prefix$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^prefix$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^program_transform_name$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^bindir$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^sbindir$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^libexecdir$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^datarootdir$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^datadir$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^sysconfdir$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^sharedstatedir$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^localstatedir$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^includedir$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^oldincludedir$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^docdir$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^infodir$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^htmldir$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^dvidir$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^pdfdir$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^psdir$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^libdir$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^localedir$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^mandir$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^DEFS$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^ECHO_C$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^ECHO_N$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^ECHO_T$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^build_alias$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^host_alias$])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^target_alias$])
+m4trace:configure.ac:4: -1- m4_pattern_allow([^MGL_RELEASE$])
+m4trace:configure.ac:21: -1- m4_pattern_allow([^MGL_CURRENT$])
+m4trace:configure.ac:22: -1- m4_pattern_allow([^MGL_REVISION$])
+m4trace:configure.ac:23: -1- m4_pattern_allow([^MGL_AGE$])
+m4trace:configure.ac:25: -1- AM_INIT_AUTOMAKE
+m4trace:configure.ac:25: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
+m4trace:configure.ac:25: -1- AM_SET_CURRENT_AUTOMAKE_VERSION
+m4trace:configure.ac:25: -1- AM_AUTOMAKE_VERSION([1.11.1])
+m4trace:configure.ac:25: -1- _AM_AUTOCONF_VERSION([2.67])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^INSTALL_DATA$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^am__isrc$])
+m4trace:configure.ac:25: -1- _AM_SUBST_NOTMAKE([am__isrc])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^CYGPATH_W$])
+m4trace:configure.ac:25: -1- _AM_SET_OPTIONS([])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.ac:25: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])
+m4trace:configure.ac:25: -2- _AM_MANGLE_OPTION([no-define])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.ac:25: -1- AM_SANITY_CHECK
+m4trace:configure.ac:25: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+m4trace:configure.ac:25: -1- AM_MISSING_HAS_RUN
+m4trace:configure.ac:25: -1- AM_AUX_DIR_EXPAND
+m4trace:configure.ac:25: -1- m4_pattern_allow([^ACLOCAL$])
+m4trace:configure.ac:25: -1- AM_MISSING_PROG([AUTOCONF], [autoconf])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^AUTOCONF$])
+m4trace:configure.ac:25: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^AUTOMAKE$])
+m4trace:configure.ac:25: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^AUTOHEADER$])
+m4trace:configure.ac:25: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^MAKEINFO$])
+m4trace:configure.ac:25: -1- AM_PROG_INSTALL_SH
+m4trace:configure.ac:25: -1- m4_pattern_allow([^install_sh$])
+m4trace:configure.ac:25: -1- AM_PROG_INSTALL_STRIP
+m4trace:configure.ac:25: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
+m4trace:configure.ac:25: -1- AM_PROG_MKDIR_P
+m4trace:configure.ac:25: -1- m4_pattern_allow([^MKDIR_P$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^mkdir_p$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^AWK$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^SET_MAKE$])
+m4trace:configure.ac:25: -1- AM_SET_LEADING_DOT
+m4trace:configure.ac:25: -1- m4_pattern_allow([^am__leading_dot$])
+m4trace:configure.ac:25: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+m4trace:configure.ac:25: -2- _AM_MANGLE_OPTION([tar-ustar])
+m4trace:configure.ac:25: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])
+m4trace:configure.ac:25: -2- _AM_MANGLE_OPTION([tar-pax])
+m4trace:configure.ac:25: -1- _AM_PROG_TAR([v7])
+m4trace:configure.ac:25: -1- AM_MISSING_PROG([AMTAR], [tar])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^AMTAR$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^am__tar$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^am__untar$])
+m4trace:configure.ac:25: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+m4trace:configure.ac:25: -2- _AM_MANGLE_OPTION([no-dependencies])
+m4trace:configure.ac:25: -1- _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])
+m4trace:configure.ac:25: -2- _AM_MANGLE_OPTION([silent-rules])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^EXEEXT$])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^OBJEXT$])
+m4trace:configure.ac:27: -1- _AM_DEPENDENCIES([CC])
+m4trace:configure.ac:27: -1- AM_SET_DEPDIR
+m4trace:configure.ac:27: -1- m4_pattern_allow([^DEPDIR$])
+m4trace:configure.ac:27: -1- AM_OUTPUT_DEPENDENCY_COMMANDS
+m4trace:configure.ac:27: -1- AM_MAKE_INCLUDE
+m4trace:configure.ac:27: -1- m4_pattern_allow([^am__include$])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^am__quote$])
+m4trace:configure.ac:27: -1- AM_DEP_TRACK
+m4trace:configure.ac:27: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^AMDEP_TRUE$])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^AMDEP_FALSE$])
+m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
+m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
+m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^CCDEPMODE$])
+m4trace:configure.ac:27: -1- AM_CONDITIONAL([am__fastdepCC], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
+m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
+m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^CXXFLAGS$])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^ac_ct_CXX$])
+m4trace:configure.ac:28: -1- _AM_DEPENDENCIES([CXX])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^CXXDEPMODE$])
+m4trace:configure.ac:28: -1- AM_CONDITIONAL([am__fastdepCXX], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$])
+m4trace:configure.ac:28: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE])
+m4trace:configure.ac:28: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE])
+m4trace:configure.ac:31: -1- AC_LIBTOOL_WIN32_DLL
+m4trace:configure.ac:31: -1- _m4_warn([obsolete], [The macro `AC_LIBTOOL_WIN32_DLL' is obsolete.
+You should run autoupdate.], [/usr/share/aclocal/ltoptions.m4:145: AC_LIBTOOL_WIN32_DLL is expanded from...
+configure.ac:31: the top level])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^build$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^build_cpu$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^build_vendor$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^build_os$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^host$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^host_cpu$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^host_vendor$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^host_os$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AS$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^DLLTOOL$])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:31: -1- _m4_warn([obsolete], [AC_LIBTOOL_WIN32_DLL: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.], [/usr/share/aclocal/ltoptions.m4:145: AC_LIBTOOL_WIN32_DLL is expanded from...
+configure.ac:31: the top level])
+m4trace:configure.ac:32: -1- AC_LIBTOOL_DLOPEN
+m4trace:configure.ac:32: -1- _m4_warn([obsolete], [The macro `AC_LIBTOOL_DLOPEN' is obsolete.
+You should run autoupdate.], [/usr/share/aclocal/ltoptions.m4:110: AC_LIBTOOL_DLOPEN is expanded from...
+configure.ac:32: the top level])
+m4trace:configure.ac:32: -1- _m4_warn([obsolete], [AC_LIBTOOL_DLOPEN: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.], [/usr/share/aclocal/ltoptions.m4:110: AC_LIBTOOL_DLOPEN is expanded from...
+configure.ac:32: the top level])
+m4trace:configure.ac:33: -1- AC_PROG_LIBTOOL
+m4trace:configure.ac:33: -1- _m4_warn([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete.
+You should run autoupdate.], [/usr/share/aclocal/libtool.m4:102: AC_PROG_LIBTOOL is expanded from...
+configure.ac:33: the top level])
+m4trace:configure.ac:33: -1- LT_INIT
+m4trace:configure.ac:33: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
+m4trace:configure.ac:33: -1- LTOPTIONS_VERSION
+m4trace:configure.ac:33: -1- LTSUGAR_VERSION
+m4trace:configure.ac:33: -1- LTVERSION_VERSION
+m4trace:configure.ac:33: -1- LTOBSOLETE_VERSION
+m4trace:configure.ac:33: -1- _LT_PROG_LTMAIN
+m4trace:configure.ac:33: -1- m4_pattern_allow([^LIBTOOL$])
+m4trace:configure.ac:33: -1- LT_PATH_LD
+m4trace:configure.ac:33: -1- m4_pattern_allow([^SED$])
+m4trace:configure.ac:33: -1- AC_PROG_EGREP
+m4trace:configure.ac:33: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^EGREP$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^FGREP$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^LD$])
+m4trace:configure.ac:33: -1- LT_PATH_NM
+m4trace:configure.ac:33: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^NM$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^LN_S$])
+m4trace:configure.ac:33: -1- LT_CMD_MAX_LEN
+m4trace:configure.ac:33: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^AR$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^RANLIB$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([LT_OBJDIR])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^LT_OBJDIR$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^lt_ECHO$])
+m4trace:configure.ac:33: -1- _LT_CC_BASENAME([$compiler])
+m4trace:configure.ac:33: -1- _LT_PATH_TOOL_PREFIX([${ac_tool_prefix}file], [/usr/bin$PATH_SEPARATOR$PATH])
+m4trace:configure.ac:33: -1- _LT_PATH_TOOL_PREFIX([file], [/usr/bin$PATH_SEPARATOR$PATH])
+m4trace:configure.ac:33: -1- LT_SUPPORTED_TAG([CC])
+m4trace:configure.ac:33: -1- _LT_COMPILER_BOILERPLATE
+m4trace:configure.ac:33: -1- _LT_LINKER_BOILERPLATE
+m4trace:configure.ac:33: -1- _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], [lt_cv_prog_compiler_rtti_exceptions], [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, )="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, ) -fno-rtti -fno-exceptions"])
+m4trace:configure.ac:33: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, ) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, )], [$_LT_TAGVAR(lt_prog_compiler_pic, )@&t at m4_if([],[],[ -DPIC],[m4_if([],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, ) in
+ "" | " "*) ;;
+ *) _LT_TAGVAR(lt_prog_compiler_pic, )=" $_LT_TAGVAR(lt_prog_compiler_pic, )" ;;
+ esac], [_LT_TAGVAR(lt_prog_compiler_pic, )=
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, )=no])
+m4trace:configure.ac:33: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, )=])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^DSYMUTIL$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^NMEDIT$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^LIPO$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^OTOOL$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^OTOOL64$])
+m4trace:configure.ac:33: -1- LT_SYS_DLOPEN_SELF
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
+m4trace:configure.ac:33: -1- LT_LANG([CXX])
+m4trace:configure.ac:33: -1- LT_SUPPORTED_TAG([CXX])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CXXFLAGS$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^ac_ct_CXX$])
+m4trace:configure.ac:33: -1- _AM_DEPENDENCIES([CXX])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CXXDEPMODE$])
+m4trace:configure.ac:33: -1- AM_CONDITIONAL([am__fastdepCXX], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$])
+m4trace:configure.ac:33: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE])
+m4trace:configure.ac:33: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CXXCPP$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CXXCPP$])
+m4trace:configure.ac:33: -1- _LT_COMPILER_BOILERPLATE
+m4trace:configure.ac:33: -1- _LT_LINKER_BOILERPLATE
+m4trace:configure.ac:33: -1- _LT_CC_BASENAME([$compiler])
+m4trace:configure.ac:33: -1- LT_PATH_LD
+m4trace:configure.ac:33: -1- m4_pattern_allow([^LD$])
+m4trace:configure.ac:33: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, CXX) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, CXX)], [$_LT_TAGVAR(lt_prog_compiler_pic, CXX)@&t at m4_if([CXX],[],[ -DPIC],[m4_if([CXX],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, CXX) in
+ "" | " "*) ;;
+ *) _LT_TAGVAR(lt_prog_compiler_pic, CXX)=" $_LT_TAGVAR(lt_prog_compiler_pic, CXX)" ;;
+ esac], [_LT_TAGVAR(lt_prog_compiler_pic, CXX)=
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, CXX)=no])
+m4trace:configure.ac:33: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works_CXX], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, CXX)=])
+m4trace:configure.ac:44: -1- m4_pattern_allow([^MGL_USE_DOUBLE$])
+m4trace:configure.ac:46: -1- m4_pattern_allow([^MGL_USE_DOUBLE$])
+m4trace:configure.ac:72: -1- m4_pattern_allow([^PTHREAD_FLAGS$])
+m4trace:configure.ac:75: -1- m4_pattern_allow([^PTHREAD_LIBS$])
+m4trace:configure.ac:77: -1- AM_CONDITIONAL([USE_PTHREAD], [test x$pthread = xtrue])
+m4trace:configure.ac:77: -1- m4_pattern_allow([^USE_PTHREAD_TRUE$])
+m4trace:configure.ac:77: -1- m4_pattern_allow([^USE_PTHREAD_FALSE$])
+m4trace:configure.ac:77: -1- _AM_SUBST_NOTMAKE([USE_PTHREAD_TRUE])
+m4trace:configure.ac:77: -1- _AM_SUBST_NOTMAKE([USE_PTHREAD_FALSE])
+m4trace:configure.ac:89: -1- m4_pattern_allow([^GSL_FLAGS$])
+m4trace:configure.ac:90: -1- m4_pattern_allow([^GSL_LIBS$])
+m4trace:configure.ac:100: -1- m4_pattern_allow([^GSL_FLAGS$])
+m4trace:configure.ac:102: -1- AM_CONDITIONAL([USE_GSL], [test x$test_gsl = xtrue])
+m4trace:configure.ac:102: -1- m4_pattern_allow([^USE_GSL_TRUE$])
+m4trace:configure.ac:102: -1- m4_pattern_allow([^USE_GSL_FALSE$])
+m4trace:configure.ac:102: -1- _AM_SUBST_NOTMAKE([USE_GSL_TRUE])
+m4trace:configure.ac:102: -1- _AM_SUBST_NOTMAKE([USE_GSL_FALSE])
+m4trace:configure.ac:115: -1- m4_pattern_allow([^GL_LIBS$])
+m4trace:configure.ac:118: -1- m4_pattern_allow([^GLUT_LIBS$])
+m4trace:configure.ac:125: -1- m4_pattern_allow([^GL_LIBS$])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^GLUT_FLAGS$])
+m4trace:configure.ac:130: -1- m4_pattern_allow([^GLUT_LIBS$])
+m4trace:configure.ac:137: -1- m4_pattern_allow([^GL_LIBS$])
+m4trace:configure.ac:140: -1- m4_pattern_allow([^GLUT_FLAGS$])
+m4trace:configure.ac:142: -1- m4_pattern_allow([^GLUT_LIBS$])
+m4trace:configure.ac:147: -1- AM_CONDITIONAL([USE_GLUT], [(test x$all = xtrue || test x$glut = xtrue)])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^USE_GLUT_TRUE$])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^USE_GLUT_FALSE$])
+m4trace:configure.ac:147: -1- _AM_SUBST_NOTMAKE([USE_GLUT_TRUE])
+m4trace:configure.ac:147: -1- _AM_SUBST_NOTMAKE([USE_GLUT_FALSE])
+m4trace:configure.ac:177: -1- m4_pattern_allow([^HDF5_FLAGS$])
+m4trace:configure.ac:179: -1- m4_pattern_allow([^HDF5_LIBS$])
+m4trace:configure.ac:181: -1- AM_CONDITIONAL([USE_HDF5], [(test x$all = xtrue || test x$hdf5 = xtrue || test x$hdf5_18 = xtrue)])
+m4trace:configure.ac:181: -1- m4_pattern_allow([^USE_HDF5_TRUE$])
+m4trace:configure.ac:181: -1- m4_pattern_allow([^USE_HDF5_FALSE$])
+m4trace:configure.ac:181: -1- _AM_SUBST_NOTMAKE([USE_HDF5_TRUE])
+m4trace:configure.ac:181: -1- _AM_SUBST_NOTMAKE([USE_HDF5_FALSE])
+m4trace:configure.ac:193: -1- m4_pattern_allow([^HDF4_FLAGS$])
+m4trace:configure.ac:194: -1- m4_pattern_allow([^HDF4_LIBS$])
+m4trace:configure.ac:196: -1- AM_CONDITIONAL([USE_HDF4], [(test x$all = xtrue || test x$hdf4 = xtrue)])
+m4trace:configure.ac:196: -1- m4_pattern_allow([^USE_HDF4_TRUE$])
+m4trace:configure.ac:196: -1- m4_pattern_allow([^USE_HDF4_FALSE$])
+m4trace:configure.ac:196: -1- _AM_SUBST_NOTMAKE([USE_HDF4_TRUE])
+m4trace:configure.ac:196: -1- _AM_SUBST_NOTMAKE([USE_HDF4_FALSE])
+m4trace:configure.ac:205: -1- m4_pattern_allow([^GIF_FLAGS$])
+m4trace:configure.ac:208: -1- m4_pattern_allow([^GIF_LIBS$])
+m4trace:configure.ac:210: -1- AM_CONDITIONAL([USE_GIF], [(test x$all = xtrue || test x$gif = xtrue)])
+m4trace:configure.ac:210: -1- m4_pattern_allow([^USE_GIF_TRUE$])
+m4trace:configure.ac:210: -1- m4_pattern_allow([^USE_GIF_FALSE$])
+m4trace:configure.ac:210: -1- _AM_SUBST_NOTMAKE([USE_GIF_TRUE])
+m4trace:configure.ac:210: -1- _AM_SUBST_NOTMAKE([USE_GIF_FALSE])
+m4trace:configure.ac:214: -1- m4_pattern_allow([^PNG_LIBS$])
+m4trace:configure.ac:224: -1- m4_pattern_allow([^JPEG_FLAGS$])
+m4trace:configure.ac:227: -1- m4_pattern_allow([^JPEG_LIBS$])
+m4trace:configure.ac:229: -1- AM_CONDITIONAL([USE_JPEG], [(test x$all = xtrue || test x$jpeg = xtrue)])
+m4trace:configure.ac:229: -1- m4_pattern_allow([^USE_JPEG_TRUE$])
+m4trace:configure.ac:229: -1- m4_pattern_allow([^USE_JPEG_FALSE$])
+m4trace:configure.ac:229: -1- _AM_SUBST_NOTMAKE([USE_JPEG_TRUE])
+m4trace:configure.ac:229: -1- _AM_SUBST_NOTMAKE([USE_JPEG_FALSE])
+m4trace:configure.ac:240: -1- m4_pattern_allow([^FLTK_FLAGS$])
+m4trace:configure.ac:241: -1- m4_pattern_allow([^FLTK_LIBS$])
+m4trace:configure.ac:250: -1- AM_CONDITIONAL([USE_FLTK], [test x$test_fltk = xtrue])
+m4trace:configure.ac:250: -1- m4_pattern_allow([^USE_FLTK_TRUE$])
+m4trace:configure.ac:250: -1- m4_pattern_allow([^USE_FLTK_FALSE$])
+m4trace:configure.ac:250: -1- _AM_SUBST_NOTMAKE([USE_FLTK_TRUE])
+m4trace:configure.ac:250: -1- _AM_SUBST_NOTMAKE([USE_FLTK_FALSE])
+m4trace:configure.ac:262: -1- m4_pattern_allow([^WX_FLAGS$])
+m4trace:configure.ac:263: -1- m4_pattern_allow([^WX_LIBS$])
+m4trace:configure.ac:272: -1- AM_CONDITIONAL([USE_WX], [test x$test_wx = xtrue])
+m4trace:configure.ac:272: -1- m4_pattern_allow([^USE_WX_TRUE$])
+m4trace:configure.ac:272: -1- m4_pattern_allow([^USE_WX_FALSE$])
+m4trace:configure.ac:272: -1- _AM_SUBST_NOTMAKE([USE_WX_TRUE])
+m4trace:configure.ac:272: -1- _AM_SUBST_NOTMAKE([USE_WX_FALSE])
+m4trace:configure.ac:282: -1- AT_WITH_QT
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QMAKE$])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QMAKE$])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^MOC$])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^MOC$])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^UIC$])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^UIC$])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^RCC$])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^RCC$])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QT_PATH$])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^TMPDIR$])
+m4trace:configure.ac:282: -1- _AT_TWEAK_PRO_FILE([CONFIG], [+release])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QT_VERSION_MAJOR$])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QT_DEFINES$])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QT_CFLAGS$])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QT_CXXFLAGS$])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QT_INCPATH$])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QT_CPPFLAGS$])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QT_LFLAGS$])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QT_LDFLAGS$])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QT_LIBS$])
+m4trace:configure.ac:283: -1- AT_REQUIRE_QT_VERSION([4.3])
+m4trace:configure.ac:283: -1- m4_pattern_allow([^QT_VERSION$])
+m4trace:configure.ac:286: -1- AM_CONDITIONAL([USE_QT], [test x$test_qt = xtrue])
+m4trace:configure.ac:286: -1- m4_pattern_allow([^USE_QT_TRUE$])
+m4trace:configure.ac:286: -1- m4_pattern_allow([^USE_QT_FALSE$])
+m4trace:configure.ac:286: -1- _AM_SUBST_NOTMAKE([USE_QT_TRUE])
+m4trace:configure.ac:286: -1- _AM_SUBST_NOTMAKE([USE_QT_FALSE])
+m4trace:configure.ac:296: -1- m4_pattern_allow([^PYTHON_HEADERS$])
+m4trace:configure.ac:297: -1- m4_pattern_allow([^HAVE_SWIG$])
+m4trace:configure.ac:300: -1- AM_PATH_PYTHON([])
+m4trace:configure.ac:300: -1- m4_pattern_allow([^PYTHON$])
+m4trace:configure.ac:300: -1- m4_pattern_allow([^PYTHON_VERSION$])
+m4trace:configure.ac:300: -1- m4_pattern_allow([^PYTHON_PREFIX$])
+m4trace:configure.ac:300: -1- m4_pattern_allow([^PYTHON_EXEC_PREFIX$])
+m4trace:configure.ac:300: -1- m4_pattern_allow([^PYTHON_PLATFORM$])
+m4trace:configure.ac:300: -1- m4_pattern_allow([^pythondir$])
+m4trace:configure.ac:300: -1- m4_pattern_allow([^pkgpythondir$])
+m4trace:configure.ac:300: -1- m4_pattern_allow([^pyexecdir$])
+m4trace:configure.ac:300: -1- m4_pattern_allow([^pkgpyexecdir$])
+m4trace:configure.ac:306: -1- AM_CONDITIONAL([USE_PYTHON], [test x$test_python = xtrue ])
+m4trace:configure.ac:306: -1- m4_pattern_allow([^USE_PYTHON_TRUE$])
+m4trace:configure.ac:306: -1- m4_pattern_allow([^USE_PYTHON_FALSE$])
+m4trace:configure.ac:306: -1- _AM_SUBST_NOTMAKE([USE_PYTHON_TRUE])
+m4trace:configure.ac:306: -1- _AM_SUBST_NOTMAKE([USE_PYTHON_FALSE])
+m4trace:configure.ac:316: -1- m4_pattern_allow([^OCTAVE$])
+m4trace:configure.ac:322: -1- m4_pattern_allow([^OCTAVE_ARCH$])
+m4trace:configure.ac:323: -1- m4_pattern_allow([^OCTAVE_INCFLAGS$])
+m4trace:configure.ac:326: -1- AM_CONDITIONAL([USE_OCTAVE], [test x$test_octave = xtrue ])
+m4trace:configure.ac:326: -1- m4_pattern_allow([^USE_OCTAVE_TRUE$])
+m4trace:configure.ac:326: -1- m4_pattern_allow([^USE_OCTAVE_FALSE$])
+m4trace:configure.ac:326: -1- _AM_SUBST_NOTMAKE([USE_OCTAVE_TRUE])
+m4trace:configure.ac:326: -1- _AM_SUBST_NOTMAKE([USE_OCTAVE_FALSE])
+m4trace:configure.ac:335: -1- AM_CONDITIONAL([USE_TESTIO], [test x$testio = xtrue ])
+m4trace:configure.ac:335: -1- m4_pattern_allow([^USE_TESTIO_TRUE$])
+m4trace:configure.ac:335: -1- m4_pattern_allow([^USE_TESTIO_FALSE$])
+m4trace:configure.ac:335: -1- _AM_SUBST_NOTMAKE([USE_TESTIO_TRUE])
+m4trace:configure.ac:335: -1- _AM_SUBST_NOTMAKE([USE_TESTIO_FALSE])
+m4trace:configure.ac:347: -1- AM_CONDITIONAL([USE_DOCS], [(test x$docs = xtrue || test x$all = xtrue) ])
+m4trace:configure.ac:347: -1- m4_pattern_allow([^USE_DOCS_TRUE$])
+m4trace:configure.ac:347: -1- m4_pattern_allow([^USE_DOCS_FALSE$])
+m4trace:configure.ac:347: -1- _AM_SUBST_NOTMAKE([USE_DOCS_TRUE])
+m4trace:configure.ac:347: -1- _AM_SUBST_NOTMAKE([USE_DOCS_FALSE])
+m4trace:configure.ac:350: -1- m4_pattern_allow([^AM_CXXFLAGS$])
+m4trace:configure.ac:361: -1- m4_pattern_allow([^LIB@&t at OBJS$])
+m4trace:configure.ac:361: -1- m4_pattern_allow([^LTLIBOBJS$])
+m4trace:configure.ac:361: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
+m4trace:configure.ac:361: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
+m4trace:configure.ac:361: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
+m4trace:configure.ac:361: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
+m4trace:configure.ac:361: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
+m4trace:configure.ac:361: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"])
+m4trace:configure.ac:361: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS
+m4trace:configure.ac:361: -1- _LT_PROG_LTMAIN
diff --git a/autom4te.cache/traces.1 b/autom4te.cache/traces.1
new file mode 100644
index 0000000..56cbdf8
--- /dev/null
+++ b/autom4te.cache/traces.1
@@ -0,0 +1,926 @@
+m4trace:aclocal.m4:9123: -1- m4_include([config/autotroll.m4])
+m4trace:config/autotroll.m4:70: -1- m4_pattern_forbid([^AT_])
+m4trace:config/autotroll.m4:71: -1- m4_pattern_forbid([^_AT_])
+m4trace:configure.ac:1: -1- AC_INIT([mathgl], [1.10], [mathgl.abalakin at gmail.com])
+m4trace:configure.ac:1: -1- m4_pattern_forbid([^_?A[CHUM]_])
+m4trace:configure.ac:1: -1- m4_pattern_forbid([_AC_])
+m4trace:configure.ac:1: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^AS_FLAGS$])
+m4trace:configure.ac:1: -1- m4_pattern_forbid([^_?m4_])
+m4trace:configure.ac:1: -1- m4_pattern_forbid([^dnl$])
+m4trace:configure.ac:1: -1- m4_pattern_forbid([^_?AS_])
+m4trace:configure.ac:1: -1- AC_SUBST([SHELL])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([SHELL])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^SHELL$])
+m4trace:configure.ac:1: -1- AC_SUBST([PATH_SEPARATOR])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PATH_SEPARATOR$])
+m4trace:configure.ac:1: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([PACKAGE_NAME])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:1: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:1: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:1: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([PACKAGE_STRING])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:1: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:1: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([PACKAGE_URL])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:1: -1- AC_SUBST([exec_prefix], [NONE])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([exec_prefix])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^exec_prefix$])
+m4trace:configure.ac:1: -1- AC_SUBST([prefix], [NONE])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([prefix])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^prefix$])
+m4trace:configure.ac:1: -1- AC_SUBST([program_transform_name], [s,x,x,])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([program_transform_name])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^program_transform_name$])
+m4trace:configure.ac:1: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([bindir])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^bindir$])
+m4trace:configure.ac:1: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([sbindir])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^sbindir$])
+m4trace:configure.ac:1: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([libexecdir])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^libexecdir$])
+m4trace:configure.ac:1: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([datarootdir])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^datarootdir$])
+m4trace:configure.ac:1: -1- AC_SUBST([datadir], ['${datarootdir}'])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([datadir])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^datadir$])
+m4trace:configure.ac:1: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([sysconfdir])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^sysconfdir$])
+m4trace:configure.ac:1: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([sharedstatedir])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^sharedstatedir$])
+m4trace:configure.ac:1: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([localstatedir])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^localstatedir$])
+m4trace:configure.ac:1: -1- AC_SUBST([includedir], ['${prefix}/include'])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([includedir])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^includedir$])
+m4trace:configure.ac:1: -1- AC_SUBST([oldincludedir], ['/usr/include'])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([oldincludedir])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^oldincludedir$])
+m4trace:configure.ac:1: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
+ ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
+ ['${datarootdir}/doc/${PACKAGE}'])])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([docdir])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^docdir$])
+m4trace:configure.ac:1: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([infodir])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^infodir$])
+m4trace:configure.ac:1: -1- AC_SUBST([htmldir], ['${docdir}'])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([htmldir])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^htmldir$])
+m4trace:configure.ac:1: -1- AC_SUBST([dvidir], ['${docdir}'])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([dvidir])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^dvidir$])
+m4trace:configure.ac:1: -1- AC_SUBST([pdfdir], ['${docdir}'])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([pdfdir])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^pdfdir$])
+m4trace:configure.ac:1: -1- AC_SUBST([psdir], ['${docdir}'])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([psdir])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^psdir$])
+m4trace:configure.ac:1: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([libdir])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^libdir$])
+m4trace:configure.ac:1: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([localedir])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^localedir$])
+m4trace:configure.ac:1: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([mandir])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^mandir$])
+m4trace:configure.ac:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:1: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
+@%:@undef PACKAGE_NAME])
+m4trace:configure.ac:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:1: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
+@%:@undef PACKAGE_TARNAME])
+m4trace:configure.ac:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:1: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
+@%:@undef PACKAGE_VERSION])
+m4trace:configure.ac:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:1: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
+@%:@undef PACKAGE_STRING])
+m4trace:configure.ac:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:1: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
+@%:@undef PACKAGE_BUGREPORT])
+m4trace:configure.ac:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:1: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
+@%:@undef PACKAGE_URL])
+m4trace:configure.ac:1: -1- AC_SUBST([DEFS])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([DEFS])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^DEFS$])
+m4trace:configure.ac:1: -1- AC_SUBST([ECHO_C])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([ECHO_C])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^ECHO_C$])
+m4trace:configure.ac:1: -1- AC_SUBST([ECHO_N])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([ECHO_N])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^ECHO_N$])
+m4trace:configure.ac:1: -1- AC_SUBST([ECHO_T])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([ECHO_T])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^ECHO_T$])
+m4trace:configure.ac:1: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:1: -1- AC_SUBST([build_alias])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([build_alias])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^build_alias$])
+m4trace:configure.ac:1: -1- AC_SUBST([host_alias])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([host_alias])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^host_alias$])
+m4trace:configure.ac:1: -1- AC_SUBST([target_alias])
+m4trace:configure.ac:1: -1- AC_SUBST_TRACE([target_alias])
+m4trace:configure.ac:1: -1- m4_pattern_allow([^target_alias$])
+m4trace:configure.ac:4: -1- AC_SUBST([MGL_RELEASE])
+m4trace:configure.ac:4: -1- AC_SUBST_TRACE([MGL_RELEASE])
+m4trace:configure.ac:4: -1- m4_pattern_allow([^MGL_RELEASE$])
+m4trace:configure.ac:7: -1- AC_CONFIG_AUX_DIR([config])
+m4trace:configure.ac:9: -1- AC_CONFIG_HEADERS([include/mgl/config.h])
+m4trace:configure.ac:21: -1- AC_SUBST([MGL_CURRENT])
+m4trace:configure.ac:21: -1- AC_SUBST_TRACE([MGL_CURRENT])
+m4trace:configure.ac:21: -1- m4_pattern_allow([^MGL_CURRENT$])
+m4trace:configure.ac:22: -1- AC_SUBST([MGL_REVISION])
+m4trace:configure.ac:22: -1- AC_SUBST_TRACE([MGL_REVISION])
+m4trace:configure.ac:22: -1- m4_pattern_allow([^MGL_REVISION$])
+m4trace:configure.ac:23: -1- AC_SUBST([MGL_AGE])
+m4trace:configure.ac:23: -1- AC_SUBST_TRACE([MGL_AGE])
+m4trace:configure.ac:23: -1- m4_pattern_allow([^MGL_AGE$])
+m4trace:configure.ac:25: -1- AM_INIT_AUTOMAKE
+m4trace:configure.ac:25: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$])
+m4trace:configure.ac:25: -1- AM_AUTOMAKE_VERSION([1.11.1])
+m4trace:configure.ac:25: -1- AC_REQUIRE_AUX_FILE([install-sh])
+m4trace:configure.ac:25: -1- AC_SUBST([INSTALL_PROGRAM])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
+m4trace:configure.ac:25: -1- AC_SUBST([INSTALL_SCRIPT])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
+m4trace:configure.ac:25: -1- AC_SUBST([INSTALL_DATA])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([INSTALL_DATA])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^INSTALL_DATA$])
+m4trace:configure.ac:25: -1- AC_SUBST([am__isrc], [' -I$(srcdir)'])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([am__isrc])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^am__isrc$])
+m4trace:configure.ac:25: -1- _AM_SUBST_NOTMAKE([am__isrc])
+m4trace:configure.ac:25: -1- AC_SUBST([CYGPATH_W])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([CYGPATH_W])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^CYGPATH_W$])
+m4trace:configure.ac:25: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([PACKAGE])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.ac:25: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([VERSION])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.ac:25: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE$])
+m4trace:configure.ac:25: -1- AH_OUTPUT([PACKAGE], [/* Name of package */
+@%:@undef PACKAGE])
+m4trace:configure.ac:25: -1- AC_DEFINE_TRACE_LITERAL([VERSION])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^VERSION$])
+m4trace:configure.ac:25: -1- AH_OUTPUT([VERSION], [/* Version number of package */
+@%:@undef VERSION])
+m4trace:configure.ac:25: -1- AC_REQUIRE_AUX_FILE([missing])
+m4trace:configure.ac:25: -1- AC_SUBST([ACLOCAL])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([ACLOCAL])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^ACLOCAL$])
+m4trace:configure.ac:25: -1- AC_SUBST([AUTOCONF])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([AUTOCONF])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^AUTOCONF$])
+m4trace:configure.ac:25: -1- AC_SUBST([AUTOMAKE])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([AUTOMAKE])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^AUTOMAKE$])
+m4trace:configure.ac:25: -1- AC_SUBST([AUTOHEADER])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([AUTOHEADER])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^AUTOHEADER$])
+m4trace:configure.ac:25: -1- AC_SUBST([MAKEINFO])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([MAKEINFO])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^MAKEINFO$])
+m4trace:configure.ac:25: -1- AC_SUBST([install_sh])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([install_sh])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^install_sh$])
+m4trace:configure.ac:25: -1- AC_SUBST([STRIP])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([STRIP])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:25: -1- AC_SUBST([INSTALL_STRIP_PROGRAM])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$])
+m4trace:configure.ac:25: -1- AC_REQUIRE_AUX_FILE([install-sh])
+m4trace:configure.ac:25: -1- AC_SUBST([MKDIR_P])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([MKDIR_P])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^MKDIR_P$])
+m4trace:configure.ac:25: -1- AC_SUBST([mkdir_p], ["$MKDIR_P"])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([mkdir_p])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^mkdir_p$])
+m4trace:configure.ac:25: -1- AC_SUBST([AWK])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([AWK])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^AWK$])
+m4trace:configure.ac:25: -1- AC_SUBST([SET_MAKE])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([SET_MAKE])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^SET_MAKE$])
+m4trace:configure.ac:25: -1- AC_SUBST([am__leading_dot])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([am__leading_dot])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^am__leading_dot$])
+m4trace:configure.ac:25: -1- AC_SUBST([AMTAR])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([AMTAR])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^AMTAR$])
+m4trace:configure.ac:25: -1- AC_SUBST([am__tar])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([am__tar])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^am__tar$])
+m4trace:configure.ac:25: -1- AC_SUBST([am__untar])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([am__untar])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^am__untar$])
+m4trace:configure.ac:27: -1- AC_SUBST([CC])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:27: -1- AC_SUBST([CFLAGS])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([CFLAGS])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.ac:27: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:27: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:27: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:27: -1- AC_SUBST([CC])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:27: -1- AC_SUBST([CC])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:27: -1- AC_SUBST([CC])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:27: -1- AC_SUBST([CC])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:27: -1- AC_SUBST([ac_ct_CC])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([ac_ct_CC])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.ac:27: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([EXEEXT])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^EXEEXT$])
+m4trace:configure.ac:27: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([OBJEXT])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^OBJEXT$])
+m4trace:configure.ac:27: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([DEPDIR])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^DEPDIR$])
+m4trace:configure.ac:27: -1- AC_SUBST([am__include])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([am__include])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^am__include$])
+m4trace:configure.ac:27: -1- AC_SUBST([am__quote])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([am__quote])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^am__quote$])
+m4trace:configure.ac:27: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+m4trace:configure.ac:27: -1- AC_SUBST([AMDEP_TRUE])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([AMDEP_TRUE])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^AMDEP_TRUE$])
+m4trace:configure.ac:27: -1- AC_SUBST([AMDEP_FALSE])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([AMDEP_FALSE])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^AMDEP_FALSE$])
+m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
+m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
+m4trace:configure.ac:27: -1- AC_SUBST([AMDEPBACKSLASH])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([AMDEPBACKSLASH])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
+m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
+m4trace:configure.ac:27: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([CCDEPMODE])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^CCDEPMODE$])
+m4trace:configure.ac:27: -1- AM_CONDITIONAL([am__fastdepCC], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
+m4trace:configure.ac:27: -1- AC_SUBST([am__fastdepCC_TRUE])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
+m4trace:configure.ac:27: -1- AC_SUBST([am__fastdepCC_FALSE])
+m4trace:configure.ac:27: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE])
+m4trace:configure.ac:27: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
+m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
+m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
+m4trace:configure.ac:28: -1- AC_SUBST([CXX])
+m4trace:configure.ac:28: -1- AC_SUBST_TRACE([CXX])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:28: -1- AC_SUBST([CXXFLAGS])
+m4trace:configure.ac:28: -1- AC_SUBST_TRACE([CXXFLAGS])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^CXXFLAGS$])
+m4trace:configure.ac:28: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.ac:28: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:28: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:28: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:28: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:28: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:28: -1- AC_SUBST([CXX])
+m4trace:configure.ac:28: -1- AC_SUBST_TRACE([CXX])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:28: -1- AC_SUBST([ac_ct_CXX])
+m4trace:configure.ac:28: -1- AC_SUBST_TRACE([ac_ct_CXX])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^ac_ct_CXX$])
+m4trace:configure.ac:28: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type])
+m4trace:configure.ac:28: -1- AC_SUBST_TRACE([CXXDEPMODE])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^CXXDEPMODE$])
+m4trace:configure.ac:28: -1- AM_CONDITIONAL([am__fastdepCXX], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
+m4trace:configure.ac:28: -1- AC_SUBST([am__fastdepCXX_TRUE])
+m4trace:configure.ac:28: -1- AC_SUBST_TRACE([am__fastdepCXX_TRUE])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$])
+m4trace:configure.ac:28: -1- AC_SUBST([am__fastdepCXX_FALSE])
+m4trace:configure.ac:28: -1- AC_SUBST_TRACE([am__fastdepCXX_FALSE])
+m4trace:configure.ac:28: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$])
+m4trace:configure.ac:28: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE])
+m4trace:configure.ac:28: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE])
+m4trace:configure.ac:31: -1- _m4_warn([obsolete], [The macro `AC_LIBTOOL_WIN32_DLL' is obsolete.
+You should run autoupdate.], [aclocal.m4:7525: AC_LIBTOOL_WIN32_DLL is expanded from...
+configure.ac:31: the top level])
+m4trace:configure.ac:31: -1- AC_CANONICAL_HOST
+m4trace:configure.ac:31: -1- AC_CANONICAL_BUILD
+m4trace:configure.ac:31: -1- AC_REQUIRE_AUX_FILE([config.sub])
+m4trace:configure.ac:31: -1- AC_REQUIRE_AUX_FILE([config.guess])
+m4trace:configure.ac:31: -1- AC_SUBST([build], [$ac_cv_build])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([build])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^build$])
+m4trace:configure.ac:31: -1- AC_SUBST([build_cpu], [$[1]])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([build_cpu])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^build_cpu$])
+m4trace:configure.ac:31: -1- AC_SUBST([build_vendor], [$[2]])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([build_vendor])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^build_vendor$])
+m4trace:configure.ac:31: -1- AC_SUBST([build_os])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([build_os])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^build_os$])
+m4trace:configure.ac:31: -1- AC_SUBST([host], [$ac_cv_host])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([host])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^host$])
+m4trace:configure.ac:31: -1- AC_SUBST([host_cpu], [$[1]])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([host_cpu])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^host_cpu$])
+m4trace:configure.ac:31: -1- AC_SUBST([host_vendor], [$[2]])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([host_vendor])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^host_vendor$])
+m4trace:configure.ac:31: -1- AC_SUBST([host_os])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([host_os])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^host_os$])
+m4trace:configure.ac:31: -1- AC_SUBST([AS])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([AS])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^AS$])
+m4trace:configure.ac:31: -1- AC_SUBST([DLLTOOL])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([DLLTOOL])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^DLLTOOL$])
+m4trace:configure.ac:31: -1- AC_SUBST([OBJDUMP])
+m4trace:configure.ac:31: -1- AC_SUBST_TRACE([OBJDUMP])
+m4trace:configure.ac:31: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:31: -1- _m4_warn([obsolete], [AC_LIBTOOL_WIN32_DLL: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.], [aclocal.m4:7525: AC_LIBTOOL_WIN32_DLL is expanded from...
+configure.ac:31: the top level])
+m4trace:configure.ac:32: -1- _m4_warn([obsolete], [The macro `AC_LIBTOOL_DLOPEN' is obsolete.
+You should run autoupdate.], [aclocal.m4:7490: AC_LIBTOOL_DLOPEN is expanded from...
+configure.ac:32: the top level])
+m4trace:configure.ac:32: -1- _m4_warn([obsolete], [AC_LIBTOOL_DLOPEN: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.], [aclocal.m4:7490: AC_LIBTOOL_DLOPEN is expanded from...
+configure.ac:32: the top level])
+m4trace:configure.ac:33: -1- AC_PROG_LIBTOOL
+m4trace:configure.ac:33: -1- _m4_warn([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete.
+You should run autoupdate.], [aclocal.m4:123: AC_PROG_LIBTOOL is expanded from...
+configure.ac:33: the top level])
+m4trace:configure.ac:33: -1- LT_INIT
+m4trace:configure.ac:33: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
+m4trace:configure.ac:33: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
+m4trace:configure.ac:33: -1- AC_SUBST([LIBTOOL])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([LIBTOOL])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^LIBTOOL$])
+m4trace:configure.ac:33: -1- AC_SUBST([SED])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([SED])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^SED$])
+m4trace:configure.ac:33: -1- AC_SUBST([GREP])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([GREP])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:33: -1- AC_SUBST([EGREP])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([EGREP])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^EGREP$])
+m4trace:configure.ac:33: -1- AC_SUBST([FGREP])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([FGREP])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^FGREP$])
+m4trace:configure.ac:33: -1- AC_SUBST([GREP])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([GREP])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:33: -1- AC_SUBST([LD])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([LD])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^LD$])
+m4trace:configure.ac:33: -1- AC_SUBST([DUMPBIN])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([DUMPBIN])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:33: -1- AC_SUBST([ac_ct_DUMPBIN])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
+m4trace:configure.ac:33: -1- AC_SUBST([DUMPBIN])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([DUMPBIN])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:33: -1- AC_SUBST([NM])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([NM])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^NM$])
+m4trace:configure.ac:33: -1- AC_SUBST([LN_S], [$as_ln_s])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([LN_S])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^LN_S$])
+m4trace:configure.ac:33: -1- AC_SUBST([OBJDUMP])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([OBJDUMP])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:33: -1- AC_SUBST([OBJDUMP])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([OBJDUMP])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:33: -1- AC_SUBST([AR])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([AR])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^AR$])
+m4trace:configure.ac:33: -1- AC_SUBST([STRIP])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([STRIP])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:33: -1- AC_SUBST([RANLIB])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([RANLIB])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^RANLIB$])
+m4trace:configure.ac:33: -1- m4_pattern_allow([LT_OBJDIR])
+m4trace:configure.ac:33: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^LT_OBJDIR$])
+m4trace:configure.ac:33: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+@%:@undef LT_OBJDIR])
+m4trace:configure.ac:33: -1- AC_SUBST([lt_ECHO])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([lt_ECHO])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^lt_ECHO$])
+m4trace:configure.ac:33: -1- LT_SUPPORTED_TAG([CC])
+m4trace:configure.ac:33: -1- AC_SUBST([DSYMUTIL])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([DSYMUTIL])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^DSYMUTIL$])
+m4trace:configure.ac:33: -1- AC_SUBST([NMEDIT])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([NMEDIT])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^NMEDIT$])
+m4trace:configure.ac:33: -1- AC_SUBST([LIPO])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([LIPO])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^LIPO$])
+m4trace:configure.ac:33: -1- AC_SUBST([OTOOL])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([OTOOL])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^OTOOL$])
+m4trace:configure.ac:33: -1- AC_SUBST([OTOOL64])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([OTOOL64])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^OTOOL64$])
+m4trace:configure.ac:33: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
+@%:@undef HAVE_DLFCN_H])
+m4trace:configure.ac:33: -1- AC_SUBST([CPP])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:33: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:33: -1- AC_SUBST([CPP])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:33: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.ac:33: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
+@%:@undef STDC_HEADERS])
+m4trace:configure.ac:33: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
+@%:@undef HAVE_SYS_TYPES_H])
+m4trace:configure.ac:33: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
+@%:@undef HAVE_SYS_STAT_H])
+m4trace:configure.ac:33: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+@%:@undef HAVE_STDLIB_H])
+m4trace:configure.ac:33: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+@%:@undef HAVE_STRING_H])
+m4trace:configure.ac:33: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
+@%:@undef HAVE_MEMORY_H])
+m4trace:configure.ac:33: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
+@%:@undef HAVE_STRINGS_H])
+m4trace:configure.ac:33: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
+@%:@undef HAVE_INTTYPES_H])
+m4trace:configure.ac:33: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
+@%:@undef HAVE_STDINT_H])
+m4trace:configure.ac:33: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+@%:@undef HAVE_UNISTD_H])
+m4trace:configure.ac:33: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DLFCN_H])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^HAVE_DLFCN_H$])
+m4trace:configure.ac:33: -1- LT_SUPPORTED_TAG([CXX])
+m4trace:configure.ac:33: -1- AC_SUBST([CXX])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([CXX])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:33: -1- AC_SUBST([CXXFLAGS])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([CXXFLAGS])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CXXFLAGS$])
+m4trace:configure.ac:33: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:33: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:33: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:33: -1- AC_SUBST([CXX])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([CXX])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:33: -1- AC_SUBST([ac_ct_CXX])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([ac_ct_CXX])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^ac_ct_CXX$])
+m4trace:configure.ac:33: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([CXXDEPMODE])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CXXDEPMODE$])
+m4trace:configure.ac:33: -1- AM_CONDITIONAL([am__fastdepCXX], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
+m4trace:configure.ac:33: -1- AC_SUBST([am__fastdepCXX_TRUE])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([am__fastdepCXX_TRUE])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$])
+m4trace:configure.ac:33: -1- AC_SUBST([am__fastdepCXX_FALSE])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([am__fastdepCXX_FALSE])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$])
+m4trace:configure.ac:33: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE])
+m4trace:configure.ac:33: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE])
+m4trace:configure.ac:33: -1- AC_SUBST([CXXCPP])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([CXXCPP])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CXXCPP$])
+m4trace:configure.ac:33: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:33: -1- AC_SUBST([CXXCPP])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([CXXCPP])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^CXXCPP$])
+m4trace:configure.ac:33: -1- AC_SUBST([LD])
+m4trace:configure.ac:33: -1- AC_SUBST_TRACE([LD])
+m4trace:configure.ac:33: -1- m4_pattern_allow([^LD$])
+m4trace:configure.ac:44: -1- AC_DEFINE_TRACE_LITERAL([MGL_USE_DOUBLE])
+m4trace:configure.ac:44: -1- m4_pattern_allow([^MGL_USE_DOUBLE$])
+m4trace:configure.ac:44: -1- AH_OUTPUT([MGL_USE_DOUBLE], [/* This define enables double precision in MathGL */
+@%:@undef MGL_USE_DOUBLE])
+m4trace:configure.ac:46: -1- AC_DEFINE_TRACE_LITERAL([MGL_USE_DOUBLE])
+m4trace:configure.ac:46: -1- m4_pattern_allow([^MGL_USE_DOUBLE$])
+m4trace:configure.ac:46: -1- AH_OUTPUT([MGL_USE_DOUBLE], [/* This define enables double precision in MathGL */
+@%:@undef MGL_USE_DOUBLE])
+m4trace:configure.ac:72: -1- AC_SUBST([PTHREAD_FLAGS])
+m4trace:configure.ac:72: -1- AC_SUBST_TRACE([PTHREAD_FLAGS])
+m4trace:configure.ac:72: -1- m4_pattern_allow([^PTHREAD_FLAGS$])
+m4trace:configure.ac:75: -1- AC_SUBST([PTHREAD_LIBS])
+m4trace:configure.ac:75: -1- AC_SUBST_TRACE([PTHREAD_LIBS])
+m4trace:configure.ac:75: -1- m4_pattern_allow([^PTHREAD_LIBS$])
+m4trace:configure.ac:77: -1- AM_CONDITIONAL([USE_PTHREAD], [test x$pthread = xtrue])
+m4trace:configure.ac:77: -1- AC_SUBST([USE_PTHREAD_TRUE])
+m4trace:configure.ac:77: -1- AC_SUBST_TRACE([USE_PTHREAD_TRUE])
+m4trace:configure.ac:77: -1- m4_pattern_allow([^USE_PTHREAD_TRUE$])
+m4trace:configure.ac:77: -1- AC_SUBST([USE_PTHREAD_FALSE])
+m4trace:configure.ac:77: -1- AC_SUBST_TRACE([USE_PTHREAD_FALSE])
+m4trace:configure.ac:77: -1- m4_pattern_allow([^USE_PTHREAD_FALSE$])
+m4trace:configure.ac:77: -1- _AM_SUBST_NOTMAKE([USE_PTHREAD_TRUE])
+m4trace:configure.ac:77: -1- _AM_SUBST_NOTMAKE([USE_PTHREAD_FALSE])
+m4trace:configure.ac:89: -1- AC_SUBST([GSL_FLAGS])
+m4trace:configure.ac:89: -1- AC_SUBST_TRACE([GSL_FLAGS])
+m4trace:configure.ac:89: -1- m4_pattern_allow([^GSL_FLAGS$])
+m4trace:configure.ac:90: -1- AC_SUBST([GSL_LIBS])
+m4trace:configure.ac:90: -1- AC_SUBST_TRACE([GSL_LIBS])
+m4trace:configure.ac:90: -1- m4_pattern_allow([^GSL_LIBS$])
+m4trace:configure.ac:100: -1- AC_SUBST([GSL_FLAGS])
+m4trace:configure.ac:100: -1- AC_SUBST_TRACE([GSL_FLAGS])
+m4trace:configure.ac:100: -1- m4_pattern_allow([^GSL_FLAGS$])
+m4trace:configure.ac:102: -1- AM_CONDITIONAL([USE_GSL], [test x$test_gsl = xtrue])
+m4trace:configure.ac:102: -1- AC_SUBST([USE_GSL_TRUE])
+m4trace:configure.ac:102: -1- AC_SUBST_TRACE([USE_GSL_TRUE])
+m4trace:configure.ac:102: -1- m4_pattern_allow([^USE_GSL_TRUE$])
+m4trace:configure.ac:102: -1- AC_SUBST([USE_GSL_FALSE])
+m4trace:configure.ac:102: -1- AC_SUBST_TRACE([USE_GSL_FALSE])
+m4trace:configure.ac:102: -1- m4_pattern_allow([^USE_GSL_FALSE$])
+m4trace:configure.ac:102: -1- _AM_SUBST_NOTMAKE([USE_GSL_TRUE])
+m4trace:configure.ac:102: -1- _AM_SUBST_NOTMAKE([USE_GSL_FALSE])
+m4trace:configure.ac:115: -1- AC_SUBST([GL_LIBS])
+m4trace:configure.ac:115: -1- AC_SUBST_TRACE([GL_LIBS])
+m4trace:configure.ac:115: -1- m4_pattern_allow([^GL_LIBS$])
+m4trace:configure.ac:118: -1- AC_SUBST([GLUT_LIBS])
+m4trace:configure.ac:118: -1- AC_SUBST_TRACE([GLUT_LIBS])
+m4trace:configure.ac:118: -1- m4_pattern_allow([^GLUT_LIBS$])
+m4trace:configure.ac:125: -1- AC_SUBST([GL_LIBS])
+m4trace:configure.ac:125: -1- AC_SUBST_TRACE([GL_LIBS])
+m4trace:configure.ac:125: -1- m4_pattern_allow([^GL_LIBS$])
+m4trace:configure.ac:128: -1- AC_SUBST([GLUT_FLAGS])
+m4trace:configure.ac:128: -1- AC_SUBST_TRACE([GLUT_FLAGS])
+m4trace:configure.ac:128: -1- m4_pattern_allow([^GLUT_FLAGS$])
+m4trace:configure.ac:130: -1- AC_SUBST([GLUT_LIBS])
+m4trace:configure.ac:130: -1- AC_SUBST_TRACE([GLUT_LIBS])
+m4trace:configure.ac:130: -1- m4_pattern_allow([^GLUT_LIBS$])
+m4trace:configure.ac:137: -1- AC_SUBST([GL_LIBS])
+m4trace:configure.ac:137: -1- AC_SUBST_TRACE([GL_LIBS])
+m4trace:configure.ac:137: -1- m4_pattern_allow([^GL_LIBS$])
+m4trace:configure.ac:140: -1- AC_SUBST([GLUT_FLAGS])
+m4trace:configure.ac:140: -1- AC_SUBST_TRACE([GLUT_FLAGS])
+m4trace:configure.ac:140: -1- m4_pattern_allow([^GLUT_FLAGS$])
+m4trace:configure.ac:142: -1- AC_SUBST([GLUT_LIBS])
+m4trace:configure.ac:142: -1- AC_SUBST_TRACE([GLUT_LIBS])
+m4trace:configure.ac:142: -1- m4_pattern_allow([^GLUT_LIBS$])
+m4trace:configure.ac:147: -1- AM_CONDITIONAL([USE_GLUT], [(test x$all = xtrue || test x$glut = xtrue)])
+m4trace:configure.ac:147: -1- AC_SUBST([USE_GLUT_TRUE])
+m4trace:configure.ac:147: -1- AC_SUBST_TRACE([USE_GLUT_TRUE])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^USE_GLUT_TRUE$])
+m4trace:configure.ac:147: -1- AC_SUBST([USE_GLUT_FALSE])
+m4trace:configure.ac:147: -1- AC_SUBST_TRACE([USE_GLUT_FALSE])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^USE_GLUT_FALSE$])
+m4trace:configure.ac:147: -1- _AM_SUBST_NOTMAKE([USE_GLUT_TRUE])
+m4trace:configure.ac:147: -1- _AM_SUBST_NOTMAKE([USE_GLUT_FALSE])
+m4trace:configure.ac:177: -1- AC_SUBST([HDF5_FLAGS])
+m4trace:configure.ac:177: -1- AC_SUBST_TRACE([HDF5_FLAGS])
+m4trace:configure.ac:177: -1- m4_pattern_allow([^HDF5_FLAGS$])
+m4trace:configure.ac:179: -1- AC_SUBST([HDF5_LIBS])
+m4trace:configure.ac:179: -1- AC_SUBST_TRACE([HDF5_LIBS])
+m4trace:configure.ac:179: -1- m4_pattern_allow([^HDF5_LIBS$])
+m4trace:configure.ac:181: -1- AM_CONDITIONAL([USE_HDF5], [(test x$all = xtrue || test x$hdf5 = xtrue || test x$hdf5_18 = xtrue)])
+m4trace:configure.ac:181: -1- AC_SUBST([USE_HDF5_TRUE])
+m4trace:configure.ac:181: -1- AC_SUBST_TRACE([USE_HDF5_TRUE])
+m4trace:configure.ac:181: -1- m4_pattern_allow([^USE_HDF5_TRUE$])
+m4trace:configure.ac:181: -1- AC_SUBST([USE_HDF5_FALSE])
+m4trace:configure.ac:181: -1- AC_SUBST_TRACE([USE_HDF5_FALSE])
+m4trace:configure.ac:181: -1- m4_pattern_allow([^USE_HDF5_FALSE$])
+m4trace:configure.ac:181: -1- _AM_SUBST_NOTMAKE([USE_HDF5_TRUE])
+m4trace:configure.ac:181: -1- _AM_SUBST_NOTMAKE([USE_HDF5_FALSE])
+m4trace:configure.ac:193: -1- AC_SUBST([HDF4_FLAGS])
+m4trace:configure.ac:193: -1- AC_SUBST_TRACE([HDF4_FLAGS])
+m4trace:configure.ac:193: -1- m4_pattern_allow([^HDF4_FLAGS$])
+m4trace:configure.ac:194: -1- AC_SUBST([HDF4_LIBS])
+m4trace:configure.ac:194: -1- AC_SUBST_TRACE([HDF4_LIBS])
+m4trace:configure.ac:194: -1- m4_pattern_allow([^HDF4_LIBS$])
+m4trace:configure.ac:196: -1- AM_CONDITIONAL([USE_HDF4], [(test x$all = xtrue || test x$hdf4 = xtrue)])
+m4trace:configure.ac:196: -1- AC_SUBST([USE_HDF4_TRUE])
+m4trace:configure.ac:196: -1- AC_SUBST_TRACE([USE_HDF4_TRUE])
+m4trace:configure.ac:196: -1- m4_pattern_allow([^USE_HDF4_TRUE$])
+m4trace:configure.ac:196: -1- AC_SUBST([USE_HDF4_FALSE])
+m4trace:configure.ac:196: -1- AC_SUBST_TRACE([USE_HDF4_FALSE])
+m4trace:configure.ac:196: -1- m4_pattern_allow([^USE_HDF4_FALSE$])
+m4trace:configure.ac:196: -1- _AM_SUBST_NOTMAKE([USE_HDF4_TRUE])
+m4trace:configure.ac:196: -1- _AM_SUBST_NOTMAKE([USE_HDF4_FALSE])
+m4trace:configure.ac:205: -1- AC_SUBST([GIF_FLAGS])
+m4trace:configure.ac:205: -1- AC_SUBST_TRACE([GIF_FLAGS])
+m4trace:configure.ac:205: -1- m4_pattern_allow([^GIF_FLAGS$])
+m4trace:configure.ac:208: -1- AC_SUBST([GIF_LIBS])
+m4trace:configure.ac:208: -1- AC_SUBST_TRACE([GIF_LIBS])
+m4trace:configure.ac:208: -1- m4_pattern_allow([^GIF_LIBS$])
+m4trace:configure.ac:210: -1- AM_CONDITIONAL([USE_GIF], [(test x$all = xtrue || test x$gif = xtrue)])
+m4trace:configure.ac:210: -1- AC_SUBST([USE_GIF_TRUE])
+m4trace:configure.ac:210: -1- AC_SUBST_TRACE([USE_GIF_TRUE])
+m4trace:configure.ac:210: -1- m4_pattern_allow([^USE_GIF_TRUE$])
+m4trace:configure.ac:210: -1- AC_SUBST([USE_GIF_FALSE])
+m4trace:configure.ac:210: -1- AC_SUBST_TRACE([USE_GIF_FALSE])
+m4trace:configure.ac:210: -1- m4_pattern_allow([^USE_GIF_FALSE$])
+m4trace:configure.ac:210: -1- _AM_SUBST_NOTMAKE([USE_GIF_TRUE])
+m4trace:configure.ac:210: -1- _AM_SUBST_NOTMAKE([USE_GIF_FALSE])
+m4trace:configure.ac:214: -1- AC_SUBST([PNG_LIBS])
+m4trace:configure.ac:214: -1- AC_SUBST_TRACE([PNG_LIBS])
+m4trace:configure.ac:214: -1- m4_pattern_allow([^PNG_LIBS$])
+m4trace:configure.ac:224: -1- AC_SUBST([JPEG_FLAGS])
+m4trace:configure.ac:224: -1- AC_SUBST_TRACE([JPEG_FLAGS])
+m4trace:configure.ac:224: -1- m4_pattern_allow([^JPEG_FLAGS$])
+m4trace:configure.ac:227: -1- AC_SUBST([JPEG_LIBS])
+m4trace:configure.ac:227: -1- AC_SUBST_TRACE([JPEG_LIBS])
+m4trace:configure.ac:227: -1- m4_pattern_allow([^JPEG_LIBS$])
+m4trace:configure.ac:229: -1- AM_CONDITIONAL([USE_JPEG], [(test x$all = xtrue || test x$jpeg = xtrue)])
+m4trace:configure.ac:229: -1- AC_SUBST([USE_JPEG_TRUE])
+m4trace:configure.ac:229: -1- AC_SUBST_TRACE([USE_JPEG_TRUE])
+m4trace:configure.ac:229: -1- m4_pattern_allow([^USE_JPEG_TRUE$])
+m4trace:configure.ac:229: -1- AC_SUBST([USE_JPEG_FALSE])
+m4trace:configure.ac:229: -1- AC_SUBST_TRACE([USE_JPEG_FALSE])
+m4trace:configure.ac:229: -1- m4_pattern_allow([^USE_JPEG_FALSE$])
+m4trace:configure.ac:229: -1- _AM_SUBST_NOTMAKE([USE_JPEG_TRUE])
+m4trace:configure.ac:229: -1- _AM_SUBST_NOTMAKE([USE_JPEG_FALSE])
+m4trace:configure.ac:240: -1- AC_SUBST([FLTK_FLAGS])
+m4trace:configure.ac:240: -1- AC_SUBST_TRACE([FLTK_FLAGS])
+m4trace:configure.ac:240: -1- m4_pattern_allow([^FLTK_FLAGS$])
+m4trace:configure.ac:241: -1- AC_SUBST([FLTK_LIBS])
+m4trace:configure.ac:241: -1- AC_SUBST_TRACE([FLTK_LIBS])
+m4trace:configure.ac:241: -1- m4_pattern_allow([^FLTK_LIBS$])
+m4trace:configure.ac:250: -1- AM_CONDITIONAL([USE_FLTK], [test x$test_fltk = xtrue])
+m4trace:configure.ac:250: -1- AC_SUBST([USE_FLTK_TRUE])
+m4trace:configure.ac:250: -1- AC_SUBST_TRACE([USE_FLTK_TRUE])
+m4trace:configure.ac:250: -1- m4_pattern_allow([^USE_FLTK_TRUE$])
+m4trace:configure.ac:250: -1- AC_SUBST([USE_FLTK_FALSE])
+m4trace:configure.ac:250: -1- AC_SUBST_TRACE([USE_FLTK_FALSE])
+m4trace:configure.ac:250: -1- m4_pattern_allow([^USE_FLTK_FALSE$])
+m4trace:configure.ac:250: -1- _AM_SUBST_NOTMAKE([USE_FLTK_TRUE])
+m4trace:configure.ac:250: -1- _AM_SUBST_NOTMAKE([USE_FLTK_FALSE])
+m4trace:configure.ac:262: -1- AC_SUBST([WX_FLAGS])
+m4trace:configure.ac:262: -1- AC_SUBST_TRACE([WX_FLAGS])
+m4trace:configure.ac:262: -1- m4_pattern_allow([^WX_FLAGS$])
+m4trace:configure.ac:263: -1- AC_SUBST([WX_LIBS])
+m4trace:configure.ac:263: -1- AC_SUBST_TRACE([WX_LIBS])
+m4trace:configure.ac:263: -1- m4_pattern_allow([^WX_LIBS$])
+m4trace:configure.ac:272: -1- AM_CONDITIONAL([USE_WX], [test x$test_wx = xtrue])
+m4trace:configure.ac:272: -1- AC_SUBST([USE_WX_TRUE])
+m4trace:configure.ac:272: -1- AC_SUBST_TRACE([USE_WX_TRUE])
+m4trace:configure.ac:272: -1- m4_pattern_allow([^USE_WX_TRUE$])
+m4trace:configure.ac:272: -1- AC_SUBST([USE_WX_FALSE])
+m4trace:configure.ac:272: -1- AC_SUBST_TRACE([USE_WX_FALSE])
+m4trace:configure.ac:272: -1- m4_pattern_allow([^USE_WX_FALSE$])
+m4trace:configure.ac:272: -1- _AM_SUBST_NOTMAKE([USE_WX_TRUE])
+m4trace:configure.ac:272: -1- _AM_SUBST_NOTMAKE([USE_WX_FALSE])
+m4trace:configure.ac:282: -1- AC_SUBST([QMAKE])
+m4trace:configure.ac:282: -1- AC_SUBST_TRACE([QMAKE])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QMAKE$])
+m4trace:configure.ac:282: -1- AC_SUBST([QMAKE])
+m4trace:configure.ac:282: -1- AC_SUBST_TRACE([QMAKE])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QMAKE$])
+m4trace:configure.ac:282: -1- AC_SUBST([MOC])
+m4trace:configure.ac:282: -1- AC_SUBST_TRACE([MOC])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^MOC$])
+m4trace:configure.ac:282: -1- AC_SUBST([MOC])
+m4trace:configure.ac:282: -1- AC_SUBST_TRACE([MOC])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^MOC$])
+m4trace:configure.ac:282: -1- AC_SUBST([UIC])
+m4trace:configure.ac:282: -1- AC_SUBST_TRACE([UIC])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^UIC$])
+m4trace:configure.ac:282: -1- AC_SUBST([UIC])
+m4trace:configure.ac:282: -1- AC_SUBST_TRACE([UIC])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^UIC$])
+m4trace:configure.ac:282: -1- AC_SUBST([RCC])
+m4trace:configure.ac:282: -1- AC_SUBST_TRACE([RCC])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^RCC$])
+m4trace:configure.ac:282: -1- AC_SUBST([RCC])
+m4trace:configure.ac:282: -1- AC_SUBST_TRACE([RCC])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^RCC$])
+m4trace:configure.ac:282: -1- AC_SUBST([QT_PATH])
+m4trace:configure.ac:282: -1- AC_SUBST_TRACE([QT_PATH])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QT_PATH$])
+m4trace:configure.ac:282: -1- AC_SUBST([TMPDIR])
+m4trace:configure.ac:282: -1- AC_SUBST_TRACE([TMPDIR])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^TMPDIR$])
+m4trace:configure.ac:282: -1- AC_SUBST([QT_VERSION_MAJOR])
+m4trace:configure.ac:282: -1- AC_SUBST_TRACE([QT_VERSION_MAJOR])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QT_VERSION_MAJOR$])
+m4trace:configure.ac:282: -1- AC_SUBST([QT_DEFINES], [$at_cv_env_QT_DEFINES])
+m4trace:configure.ac:282: -1- AC_SUBST_TRACE([QT_DEFINES])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QT_DEFINES$])
+m4trace:configure.ac:282: -1- AC_SUBST([QT_CFLAGS], [$at_cv_env_QT_CFLAGS])
+m4trace:configure.ac:282: -1- AC_SUBST_TRACE([QT_CFLAGS])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QT_CFLAGS$])
+m4trace:configure.ac:282: -1- AC_SUBST([QT_CXXFLAGS], [$at_cv_env_QT_CXXFLAGS])
+m4trace:configure.ac:282: -1- AC_SUBST_TRACE([QT_CXXFLAGS])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QT_CXXFLAGS$])
+m4trace:configure.ac:282: -1- AC_SUBST([QT_INCPATH], [$at_cv_env_QT_INCPATH])
+m4trace:configure.ac:282: -1- AC_SUBST_TRACE([QT_INCPATH])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QT_INCPATH$])
+m4trace:configure.ac:282: -1- AC_SUBST([QT_CPPFLAGS], ["$at_cv_env_QT_DEFINES $at_cv_env_QT_INCPATH"])
+m4trace:configure.ac:282: -1- AC_SUBST_TRACE([QT_CPPFLAGS])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QT_CPPFLAGS$])
+m4trace:configure.ac:282: -1- AC_SUBST([QT_LFLAGS], [$at_cv_env_QT_LDFLAGS])
+m4trace:configure.ac:282: -1- AC_SUBST_TRACE([QT_LFLAGS])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QT_LFLAGS$])
+m4trace:configure.ac:282: -1- AC_SUBST([QT_LDFLAGS], [$at_cv_env_QT_LDFLAGS])
+m4trace:configure.ac:282: -1- AC_SUBST_TRACE([QT_LDFLAGS])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QT_LDFLAGS$])
+m4trace:configure.ac:282: -1- AC_SUBST([QT_LIBS], [$at_cv_env_QT_LIBS])
+m4trace:configure.ac:282: -1- AC_SUBST_TRACE([QT_LIBS])
+m4trace:configure.ac:282: -1- m4_pattern_allow([^QT_LIBS$])
+m4trace:configure.ac:283: -1- AC_SUBST([QT_VERSION], [$at_cv_QT_VERSION])
+m4trace:configure.ac:283: -1- AC_SUBST_TRACE([QT_VERSION])
+m4trace:configure.ac:283: -1- m4_pattern_allow([^QT_VERSION$])
+m4trace:configure.ac:286: -1- AM_CONDITIONAL([USE_QT], [test x$test_qt = xtrue])
+m4trace:configure.ac:286: -1- AC_SUBST([USE_QT_TRUE])
+m4trace:configure.ac:286: -1- AC_SUBST_TRACE([USE_QT_TRUE])
+m4trace:configure.ac:286: -1- m4_pattern_allow([^USE_QT_TRUE$])
+m4trace:configure.ac:286: -1- AC_SUBST([USE_QT_FALSE])
+m4trace:configure.ac:286: -1- AC_SUBST_TRACE([USE_QT_FALSE])
+m4trace:configure.ac:286: -1- m4_pattern_allow([^USE_QT_FALSE$])
+m4trace:configure.ac:286: -1- _AM_SUBST_NOTMAKE([USE_QT_TRUE])
+m4trace:configure.ac:286: -1- _AM_SUBST_NOTMAKE([USE_QT_FALSE])
+m4trace:configure.ac:296: -1- AC_SUBST([PYTHON_HEADERS])
+m4trace:configure.ac:296: -1- AC_SUBST_TRACE([PYTHON_HEADERS])
+m4trace:configure.ac:296: -1- m4_pattern_allow([^PYTHON_HEADERS$])
+m4trace:configure.ac:297: -1- AC_SUBST([HAVE_SWIG])
+m4trace:configure.ac:297: -1- AC_SUBST_TRACE([HAVE_SWIG])
+m4trace:configure.ac:297: -1- m4_pattern_allow([^HAVE_SWIG$])
+m4trace:configure.ac:300: -1- AC_SUBST([PYTHON])
+m4trace:configure.ac:300: -1- AC_SUBST_TRACE([PYTHON])
+m4trace:configure.ac:300: -1- m4_pattern_allow([^PYTHON$])
+m4trace:configure.ac:300: -1- AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
+m4trace:configure.ac:300: -1- AC_SUBST_TRACE([PYTHON_VERSION])
+m4trace:configure.ac:300: -1- m4_pattern_allow([^PYTHON_VERSION$])
+m4trace:configure.ac:300: -1- AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
+m4trace:configure.ac:300: -1- AC_SUBST_TRACE([PYTHON_PREFIX])
+m4trace:configure.ac:300: -1- m4_pattern_allow([^PYTHON_PREFIX$])
+m4trace:configure.ac:300: -1- AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
+m4trace:configure.ac:300: -1- AC_SUBST_TRACE([PYTHON_EXEC_PREFIX])
+m4trace:configure.ac:300: -1- m4_pattern_allow([^PYTHON_EXEC_PREFIX$])
+m4trace:configure.ac:300: -1- AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
+m4trace:configure.ac:300: -1- AC_SUBST_TRACE([PYTHON_PLATFORM])
+m4trace:configure.ac:300: -1- m4_pattern_allow([^PYTHON_PLATFORM$])
+m4trace:configure.ac:300: -1- AC_SUBST([pythondir], [$am_cv_python_pythondir])
+m4trace:configure.ac:300: -1- AC_SUBST_TRACE([pythondir])
+m4trace:configure.ac:300: -1- m4_pattern_allow([^pythondir$])
+m4trace:configure.ac:300: -1- AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
+m4trace:configure.ac:300: -1- AC_SUBST_TRACE([pkgpythondir])
+m4trace:configure.ac:300: -1- m4_pattern_allow([^pkgpythondir$])
+m4trace:configure.ac:300: -1- AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
+m4trace:configure.ac:300: -1- AC_SUBST_TRACE([pyexecdir])
+m4trace:configure.ac:300: -1- m4_pattern_allow([^pyexecdir$])
+m4trace:configure.ac:300: -1- AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
+m4trace:configure.ac:300: -1- AC_SUBST_TRACE([pkgpyexecdir])
+m4trace:configure.ac:300: -1- m4_pattern_allow([^pkgpyexecdir$])
+m4trace:configure.ac:306: -1- AM_CONDITIONAL([USE_PYTHON], [test x$test_python = xtrue ])
+m4trace:configure.ac:306: -1- AC_SUBST([USE_PYTHON_TRUE])
+m4trace:configure.ac:306: -1- AC_SUBST_TRACE([USE_PYTHON_TRUE])
+m4trace:configure.ac:306: -1- m4_pattern_allow([^USE_PYTHON_TRUE$])
+m4trace:configure.ac:306: -1- AC_SUBST([USE_PYTHON_FALSE])
+m4trace:configure.ac:306: -1- AC_SUBST_TRACE([USE_PYTHON_FALSE])
+m4trace:configure.ac:306: -1- m4_pattern_allow([^USE_PYTHON_FALSE$])
+m4trace:configure.ac:306: -1- _AM_SUBST_NOTMAKE([USE_PYTHON_TRUE])
+m4trace:configure.ac:306: -1- _AM_SUBST_NOTMAKE([USE_PYTHON_FALSE])
+m4trace:configure.ac:316: -1- AC_SUBST([OCTAVE])
+m4trace:configure.ac:316: -1- AC_SUBST_TRACE([OCTAVE])
+m4trace:configure.ac:316: -1- m4_pattern_allow([^OCTAVE$])
+m4trace:configure.ac:322: -1- AC_SUBST([OCTAVE_ARCH], [$OCTAVE_ARCH])
+m4trace:configure.ac:322: -1- AC_SUBST_TRACE([OCTAVE_ARCH])
+m4trace:configure.ac:322: -1- m4_pattern_allow([^OCTAVE_ARCH$])
+m4trace:configure.ac:323: -1- AC_SUBST([OCTAVE_INCFLAGS], [$OCTAVE_INCFLAGS])
+m4trace:configure.ac:323: -1- AC_SUBST_TRACE([OCTAVE_INCFLAGS])
+m4trace:configure.ac:323: -1- m4_pattern_allow([^OCTAVE_INCFLAGS$])
+m4trace:configure.ac:326: -1- AM_CONDITIONAL([USE_OCTAVE], [test x$test_octave = xtrue ])
+m4trace:configure.ac:326: -1- AC_SUBST([USE_OCTAVE_TRUE])
+m4trace:configure.ac:326: -1- AC_SUBST_TRACE([USE_OCTAVE_TRUE])
+m4trace:configure.ac:326: -1- m4_pattern_allow([^USE_OCTAVE_TRUE$])
+m4trace:configure.ac:326: -1- AC_SUBST([USE_OCTAVE_FALSE])
+m4trace:configure.ac:326: -1- AC_SUBST_TRACE([USE_OCTAVE_FALSE])
+m4trace:configure.ac:326: -1- m4_pattern_allow([^USE_OCTAVE_FALSE$])
+m4trace:configure.ac:326: -1- _AM_SUBST_NOTMAKE([USE_OCTAVE_TRUE])
+m4trace:configure.ac:326: -1- _AM_SUBST_NOTMAKE([USE_OCTAVE_FALSE])
+m4trace:configure.ac:335: -1- AM_CONDITIONAL([USE_TESTIO], [test x$testio = xtrue ])
+m4trace:configure.ac:335: -1- AC_SUBST([USE_TESTIO_TRUE])
+m4trace:configure.ac:335: -1- AC_SUBST_TRACE([USE_TESTIO_TRUE])
+m4trace:configure.ac:335: -1- m4_pattern_allow([^USE_TESTIO_TRUE$])
+m4trace:configure.ac:335: -1- AC_SUBST([USE_TESTIO_FALSE])
+m4trace:configure.ac:335: -1- AC_SUBST_TRACE([USE_TESTIO_FALSE])
+m4trace:configure.ac:335: -1- m4_pattern_allow([^USE_TESTIO_FALSE$])
+m4trace:configure.ac:335: -1- _AM_SUBST_NOTMAKE([USE_TESTIO_TRUE])
+m4trace:configure.ac:335: -1- _AM_SUBST_NOTMAKE([USE_TESTIO_FALSE])
+m4trace:configure.ac:345: -1- AC_CONFIG_FILES([texinfo/Makefile texinfo/png/Makefile])
+m4trace:configure.ac:347: -1- AM_CONDITIONAL([USE_DOCS], [(test x$docs = xtrue || test x$all = xtrue) ])
+m4trace:configure.ac:347: -1- AC_SUBST([USE_DOCS_TRUE])
+m4trace:configure.ac:347: -1- AC_SUBST_TRACE([USE_DOCS_TRUE])
+m4trace:configure.ac:347: -1- m4_pattern_allow([^USE_DOCS_TRUE$])
+m4trace:configure.ac:347: -1- AC_SUBST([USE_DOCS_FALSE])
+m4trace:configure.ac:347: -1- AC_SUBST_TRACE([USE_DOCS_FALSE])
+m4trace:configure.ac:347: -1- m4_pattern_allow([^USE_DOCS_FALSE$])
+m4trace:configure.ac:347: -1- _AM_SUBST_NOTMAKE([USE_DOCS_TRUE])
+m4trace:configure.ac:347: -1- _AM_SUBST_NOTMAKE([USE_DOCS_FALSE])
+m4trace:configure.ac:350: -1- AC_SUBST([AM_CXXFLAGS])
+m4trace:configure.ac:350: -1- AC_SUBST_TRACE([AM_CXXFLAGS])
+m4trace:configure.ac:350: -1- m4_pattern_allow([^AM_CXXFLAGS$])
+m4trace:configure.ac:352: -1- AC_CONFIG_FILES([
+Makefile
+mgl/Makefile
+examples/Makefile
+include/Makefile
+lang/Makefile
+utils/Makefile
+widgets/Makefile
+])
+m4trace:configure.ac:361: -1- AC_SUBST([LIB@&t at OBJS], [$ac_libobjs])
+m4trace:configure.ac:361: -1- AC_SUBST_TRACE([LIB@&t at OBJS])
+m4trace:configure.ac:361: -1- m4_pattern_allow([^LIB@&t at OBJS$])
+m4trace:configure.ac:361: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
+m4trace:configure.ac:361: -1- AC_SUBST_TRACE([LTLIBOBJS])
+m4trace:configure.ac:361: -1- m4_pattern_allow([^LTLIBOBJS$])
+m4trace:configure.ac:361: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
+m4trace:configure.ac:361: -1- AC_SUBST([am__EXEEXT_TRUE])
+m4trace:configure.ac:361: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE])
+m4trace:configure.ac:361: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
+m4trace:configure.ac:361: -1- AC_SUBST([am__EXEEXT_FALSE])
+m4trace:configure.ac:361: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE])
+m4trace:configure.ac:361: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
+m4trace:configure.ac:361: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
+m4trace:configure.ac:361: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
+m4trace:configure.ac:361: -1- AC_SUBST_TRACE([top_builddir])
+m4trace:configure.ac:361: -1- AC_SUBST_TRACE([top_build_prefix])
+m4trace:configure.ac:361: -1- AC_SUBST_TRACE([srcdir])
+m4trace:configure.ac:361: -1- AC_SUBST_TRACE([abs_srcdir])
+m4trace:configure.ac:361: -1- AC_SUBST_TRACE([top_srcdir])
+m4trace:configure.ac:361: -1- AC_SUBST_TRACE([abs_top_srcdir])
+m4trace:configure.ac:361: -1- AC_SUBST_TRACE([builddir])
+m4trace:configure.ac:361: -1- AC_SUBST_TRACE([abs_builddir])
+m4trace:configure.ac:361: -1- AC_SUBST_TRACE([abs_top_builddir])
+m4trace:configure.ac:361: -1- AC_SUBST_TRACE([INSTALL])
+m4trace:configure.ac:361: -1- AC_SUBST_TRACE([MKDIR_P])
+m4trace:configure.ac:361: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
diff --git a/config/config.guess b/config/config.guess
index da83314..c2246a4 100755
--- a/config/config.guess
+++ b/config/config.guess
@@ -1,10 +1,10 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
# Free Software Foundation, Inc.
-timestamp='2009-04-27'
+timestamp='2009-12-30'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -27,16 +27,16 @@ timestamp='2009-04-27'
# the same distribution terms that you use for the rest of that program.
-# Originally written by Per Bothner <per at bothner.com>.
-# Please send patches to <config-patches at gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
+# Originally written by Per Bothner. Please send patches (context
+# diff format) to <config-patches at gnu.org> and include a ChangeLog
+# entry.
#
# This script attempts to guess a canonical system name similar to
# config.sub. If it succeeds, it prints the system name on stdout, and
# exits with 0. Otherwise, it exits with 1.
#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
me=`echo "$0" | sed -e 's,.*/,,'`
@@ -56,8 +56,9 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -170,7 +171,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
eval $set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep __ELF__ >/dev/null
+ | grep -q __ELF__
then
# Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
# Return netbsd for either. FIX?
@@ -333,6 +334,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+ echo i386-pc-auroraux${UNAME_RELEASE}
+ exit ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
eval $set_cc_for_build
SUN_ARCH="i386"
@@ -656,7 +660,7 @@ EOF
# => hppa64-hp-hpux11.23
if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
- grep __LP64__ >/dev/null
+ grep -q __LP64__
then
HP_ARCH="hppa2.0w"
else
@@ -807,12 +811,12 @@ EOF
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit ;;
- *:Interix*:[3456]*)
+ *:Interix*:*)
case ${UNAME_MACHINE} in
x86)
echo i586-pc-interix${UNAME_RELEASE}
exit ;;
- EM64T | authenticamd | genuineintel)
+ authenticamd | genuineintel | EM64T)
echo x86_64-unknown-interix${UNAME_RELEASE}
exit ;;
IA64)
@@ -822,6 +826,9 @@ EOF
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
echo i${UNAME_MACHINE}-pc-mks
exit ;;
+ 8664:Windows_NT:*)
+ echo x86_64-pc-mks
+ exit ;;
i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
@@ -851,6 +858,20 @@ EOF
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep -q ld.so.1
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit ;;
arm*:Linux:*:*)
eval $set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
@@ -873,6 +894,17 @@ EOF
frv:Linux:*:*)
echo frv-unknown-linux-gnu
exit ;;
+ i*86:Linux:*:*)
+ LIBC=gnu
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit ;;
ia64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
@@ -882,78 +914,34 @@ EOF
m68*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
- mips:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef mips
- #undef mipsel
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mipsel
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips
- #else
- CPU=
- #endif
- #endif
-EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^CPU/{
- s: ::g
- p
- }'`"
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
- ;;
- mips64:Linux:*:*)
+ mips:Linux:*:* | mips64:Linux:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#undef CPU
- #undef mips64
- #undef mips64el
+ #undef ${UNAME_MACHINE}
+ #undef ${UNAME_MACHINE}el
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=mips64el
+ CPU=${UNAME_MACHINE}el
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=mips64
+ CPU=${UNAME_MACHINE}
#else
CPU=
#endif
#endif
EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^CPU/{
- s: ::g
- p
- }'`"
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
or32:Linux:*:*)
echo or32-unknown-linux-gnu
exit ;;
- ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
- exit ;;
- ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
- exit ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- EV5) UNAME_MACHINE=alphaev5 ;;
- EV56) UNAME_MACHINE=alphaev56 ;;
- PCA56) UNAME_MACHINE=alphapca56 ;;
- PCA57) UNAME_MACHINE=alphapca56 ;;
- EV6) UNAME_MACHINE=alphaev6 ;;
- EV67) UNAME_MACHINE=alphaev67 ;;
- EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- exit ;;
padre:Linux:*:*)
echo sparc-unknown-linux-gnu
exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
@@ -962,8 +950,11 @@ EOF
*) echo hppa-unknown-linux-gnu ;;
esac
exit ;;
- parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
echo ${UNAME_MACHINE}-ibm-linux
@@ -986,66 +977,6 @@ EOF
xtensa*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
- i*86:Linux:*:*)
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us. cd to the root directory to prevent
- # problems with other programs or directories called `ld' in the path.
- # Set LC_ALL=C to ensure ld outputs messages in English.
- ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
- | sed -ne '/supported targets:/!d
- s/[ ][ ]*/ /g
- s/.*supported targets: *//
- s/ .*//
- p'`
- case "$ld_supported_targets" in
- elf32-i386)
- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
- ;;
- a.out-i386-linux)
- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit ;;
- "")
- # Either a pre-BFD a.out linker (linux-gnuoldld) or
- # one that does not give us useful --help.
- echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
- exit ;;
- esac
- # Determine whether the default compiler is a.out or elf
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <features.h>
- #ifdef __ELF__
- # ifdef __GLIBC__
- # if __GLIBC__ >= 2
- LIBC=gnu
- # else
- LIBC=gnulibc1
- # endif
- # else
- LIBC=gnulibc1
- # endif
- #else
- #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
- LIBC=gnu
- #else
- LIBC=gnuaout
- #endif
- #endif
- #ifdef __dietlibc__
- LIBC=dietlibc
- #endif
-EOF
- eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
- /^LIBC/{
- s: ::g
- p
- }'`"
- test x"${LIBC}" != x && {
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
- exit
- }
- test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
- ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
# earlier versions are messed up and put the nodename in both
@@ -1074,7 +1005,7 @@ EOF
i*86:syllable:*:*)
echo ${UNAME_MACHINE}-pc-syllable
exit ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
exit ;;
i*86:*DOS:*:*)
@@ -1182,7 +1113,7 @@ EOF
rs6000:LynxOS:2.*:*)
echo rs6000-unknown-lynxos${UNAME_RELEASE}
exit ;;
- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
echo powerpc-unknown-lynxos${UNAME_RELEASE}
exit ;;
SM[BE]S:UNIX_SV:*:*)
@@ -1275,6 +1206,16 @@ EOF
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
case $UNAME_PROCESSOR in
+ i386)
+ eval $set_cc_for_build
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ UNAME_PROCESSOR="x86_64"
+ fi
+ fi ;;
unknown) UNAME_PROCESSOR=powerpc ;;
esac
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
diff --git a/config/config.sub b/config/config.sub
index a39437d..c2d1257 100755
--- a/config/config.sub
+++ b/config/config.sub
@@ -1,10 +1,10 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
# Free Software Foundation, Inc.
-timestamp='2009-04-17'
+timestamp='2010-01-22'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -32,13 +32,16 @@ timestamp='2009-04-17'
# Please send patches to <config-patches at gnu.org>. Submit a context
-# diff and a properly formatted ChangeLog entry.
+# diff and a properly formatted GNU ChangeLog entry.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
# If it is invalid, we print an error message on stderr and exit with code 1.
# Otherwise, we print the canonical config type on stdout and succeed.
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
# that are meaningful with *any* GNU software.
@@ -72,8 +75,9 @@ Report bugs and patches to <config-patches at gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -149,10 +153,13 @@ case $os in
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray)
+ -apple | -axis | -knuth | -cray | -microblaze)
os=
basic_machine=$1
;;
+ -bluegene*)
+ os=-cnk
+ ;;
-sim | -cisco | -oki | -wec | -winbond)
os=
basic_machine=$1
@@ -281,6 +288,7 @@ case $basic_machine in
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \
+ | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
@@ -288,13 +296,14 @@ case $basic_machine in
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
| spu | strongarm \
| tahoe | thumb | tic4x | tic80 | tron \
+ | ubicom32 \
| v850 | v850e \
| we32k \
| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
| z8k | z80)
basic_machine=$basic_machine-unknown
;;
- m6811 | m68hc11 | m6812 | m68hc12)
+ m6811 | m68hc11 | m6812 | m68hc12 | picochip)
# Motorola 68HC11/12.
basic_machine=$basic_machine-unknown
os=-none
@@ -337,7 +346,7 @@ case $basic_machine in
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
@@ -365,15 +374,17 @@ case $basic_machine in
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| pyramid-* \
- | romp-* | rs6000-* \
+ | romp-* | rs6000-* | rx-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
| tahoe-* | thumb-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tile-* | tilegx-* \
| tron-* \
+ | ubicom32-* \
| v850-* | v850e-* | vax-* \
| we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
@@ -467,6 +478,10 @@ case $basic_machine in
basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
os=-linux
;;
+ bluegene*)
+ basic_machine=powerpc-ibm
+ os=-cnk
+ ;;
c90)
basic_machine=c90-cray
os=-unicos
@@ -719,6 +734,9 @@ case $basic_machine in
basic_machine=ns32k-utek
os=-sysv
;;
+ microblaze)
+ basic_machine=microblaze-xilinx
+ ;;
mingw32)
basic_machine=i386-pc
os=-mingw32
@@ -1069,6 +1087,11 @@ case $basic_machine in
basic_machine=tic6x-unknown
os=-coff
;;
+ # This must be matched before tile*.
+ tilegx*)
+ basic_machine=tilegx-unknown
+ os=-linux-gnu
+ ;;
tile*)
basic_machine=tile-unknown
os=-linux-gnu
@@ -1240,6 +1263,9 @@ case $os in
# First match some system type aliases
# that might get confused with valid system types.
# -solaris* is a basic system type, with this one exception.
+ -auroraux)
+ os=-auroraux
+ ;;
-solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
;;
@@ -1260,9 +1286,9 @@ case $os in
# Each alternative MUST END IN A *, to match a version number.
# -sysv* is not here because it comes later, after sysvr4.
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -kopensolaris* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+ | -sym* | -kopensolaris* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
@@ -1283,7 +1309,7 @@ case $os in
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1416,6 +1442,8 @@ case $os in
-dicos*)
os=-dicos
;;
+ -nacl*)
+ ;;
-none)
;;
*)
@@ -1613,7 +1641,7 @@ case $basic_machine in
-sunos*)
vendor=sun
;;
- -aix*)
+ -cnk*|-aix*)
vendor=ibm
;;
-beos*)
diff --git a/config/libtool.m4 b/config/libtool.m4
index 1e7ea47..a3fee53 100644
--- a/config/libtool.m4
+++ b/config/libtool.m4
@@ -2445,7 +2445,7 @@ linux*oldld* | linux*aout* | linux*coff*)
;;
# This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
version_type=linux
need_lib_prefix=no
need_version=no
@@ -3084,7 +3084,7 @@ irix5* | irix6* | nonstopux*)
;;
# This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
lt_cv_deplibs_check_method=pass_all
;;
@@ -3705,7 +3705,7 @@ m4_if([$1], [CXX], [
;;
esac
;;
- linux* | k*bsd*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
case $cc_basename in
KCC*)
# KAI C++ Compiler
@@ -3989,7 +3989,7 @@ m4_if([$1], [CXX], [
_LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
;;
- linux* | k*bsd*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
case $cc_basename in
# old Intel for x86_64 which still supported -KPIC.
ecc*)
@@ -4285,6 +4285,7 @@ dnl Note also adjust exclude_expsyms for C++ above.
fi
supports_anon_versioning=no
case `$LD -v 2>&1` in
+ *GNU\ gold*) supports_anon_versioning=yes ;;
*\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
*\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
*\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
@@ -4376,7 +4377,7 @@ _LT_EOF
_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
;;
- gnu* | linux* | tpf* | k*bsd*-gnu)
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
tmp_diet=no
if test "$host_os" = linux-dietlibc; then
case $cc_basename in
@@ -5860,7 +5861,7 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(inherit_rpath, $1)=yes
;;
- linux* | k*bsd*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
case $cc_basename in
KCC*)
# Kuck and Associates, Inc. (KAI) C++ Compiler
diff --git a/config/ltmain.sh b/config/ltmain.sh
index 3506ead..7ed280b 100755
--- a/config/ltmain.sh
+++ b/config/ltmain.sh
@@ -1,6 +1,6 @@
# Generated from ltmain.m4sh.
-# ltmain.sh (GNU libtool) 2.2.6
+# ltmain.sh (GNU libtool) 2.2.6b
# Written by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
@@ -65,7 +65,7 @@
# compiler: $LTCC
# compiler flags: $LTCFLAGS
# linker: $LD (gnu? $with_gnu_ld)
-# $progname: (GNU libtool) 2.2.6 Debian-2.2.6a-4
+# $progname: (GNU libtool) 2.2.6b Debian-2.2.6b-2ubuntu1
# automake: $automake_version
# autoconf: $autoconf_version
#
@@ -73,9 +73,9 @@
PROGRAM=ltmain.sh
PACKAGE=libtool
-VERSION="2.2.6 Debian-2.2.6a-4"
+VERSION="2.2.6b Debian-2.2.6b-2ubuntu1"
TIMESTAMP=""
-package_revision=1.3012
+package_revision=1.3017
# Be Bourne compatible
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
diff --git a/config/ltversion.m4 b/config/ltversion.m4
index b8e154f..f3c5309 100644
--- a/config/ltversion.m4
+++ b/config/ltversion.m4
@@ -9,15 +9,15 @@
# Generated from ltversion.in.
-# serial 3012 ltversion.m4
+# serial 3017 ltversion.m4
# This file is part of GNU Libtool
-m4_define([LT_PACKAGE_VERSION], [2.2.6])
-m4_define([LT_PACKAGE_REVISION], [1.3012])
+m4_define([LT_PACKAGE_VERSION], [2.2.6b])
+m4_define([LT_PACKAGE_REVISION], [1.3017])
AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.2.6'
-macro_revision='1.3012'
+[macro_version='2.2.6b'
+macro_revision='1.3017'
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
_LT_DECL(, macro_revision, 0)
])
diff --git a/config/texinfo.tex b/config/texinfo.tex
index 0d3ba16..9140826 100644
--- a/config/texinfo.tex
+++ b/config/texinfo.tex
@@ -1,9 +1,9 @@
% texinfo.tex -- TeX macros to handle Texinfo files.
-%
+%
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2009-05-16.16}
+\def\texinfoversion{2009-08-14.15}
%
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@@ -1332,13 +1332,16 @@ output) for that.)}
\ifpdf
%
- % Color manipulation macros based on pdfcolor.tex.
- \def\cmykDarkRed{0.28 1 1 0.35}
- \def\cmykBlack{0 0 0 1}
+ % Color manipulation macros based on pdfcolor.tex,
+ % except using rgb instead of cmyk; the latter is said to render as a
+ % very dark gray on-screen and a very dark halftone in print, instead
+ % of actual black.
+ \def\rgbDarkRed{0.50 0.09 0.12}
+ \def\rgbBlack{0 0 0}
%
% k sets the color for filling (usual text, etc.);
% K sets the color for stroking (thin rules, e.g., normal _'s).
- \def\pdfsetcolor#1{\pdfliteral{#1 k #1 K}}
+ \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}}
%
% Set color, and create a mark which defines \thiscolor accordingly,
% so that \makeheadline knows which color to restore.
@@ -1348,7 +1351,7 @@ output) for that.)}
\pdfsetcolor{#1}%
}
%
- \def\maincolor{\cmykBlack}
+ \def\maincolor{\rgbBlack}
\pdfsetcolor{\maincolor}
\edef\thiscolor{\maincolor}
\def\lastcolordefs{}
@@ -1443,8 +1446,8 @@ output) for that.)}
%
% by default, use a color that is dark enough to print on paper as
% nearly black, but still distinguishable for online viewing.
- \def\urlcolor{\cmykDarkRed}
- \def\linkcolor{\cmykDarkRed}
+ \def\urlcolor{\rgbDarkRed}
+ \def\linkcolor{\rgbDarkRed}
\def\endlink{\setcolor{\maincolor}\pdfendlink}
%
% Adding outlines to PDF; macros for calculating structure of outlines
@@ -4322,6 +4325,7 @@ end
\definedummyword\code
\definedummyword\command
\definedummyword\dfn
+ \definedummyword\email
\definedummyword\emph
\definedummyword\env
\definedummyword\file
@@ -9272,12 +9276,8 @@ directory should work if nowhere else does.}
@markupsetuplqdefault
@markupsetuprqdefault
- at c Gnulib now utterly and painfully insists on no trailing whitespace.
- at c So we have to nuke it.
-
@c Local variables:
@c eval: (add-hook 'write-file-hooks 'time-stamp)
- at c eval: (add-hook 'write-file-hooks 'nuke-trailing-whitespace)
@c page-delimiter: "^\\\\message"
@c time-stamp-start: "def\\\\texinfoversion{"
@c time-stamp-format: "%:y-%02m-%02d.%02H"
diff --git a/configure b/configure
index 4016c53..8245fcd 100755
--- a/configure
+++ b/configure
@@ -1,13 +1,15 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.64 for mathgl 1.10.
+# Generated by GNU Autoconf 2.67 for mathgl 1.10.
#
# Report bugs to <mathgl.abalakin at gmail.com>.
#
+#
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
# Foundation, Inc.
#
+#
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
## -------------------- ##
@@ -317,7 +319,7 @@ $as_echo X"$as_dir" |
test -d "$as_dir" && break
done
test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
} # as_fn_mkdir_p
@@ -357,19 +359,19 @@ else
fi # as_fn_arith
-# as_fn_error ERROR [LINENO LOG_FD]
-# ---------------------------------
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with status $?, using 1 if that was 0.
+# script with STATUS, using 1 if that was 0.
as_fn_error ()
{
- as_status=$?; test $as_status -eq 0 && as_status=1
- if test "$3"; then
- as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
- $as_echo "$as_me: error: $1" >&2
+ $as_echo "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
@@ -736,10 +738,11 @@ as_awk_strverscmp='
}
'
-exec 7<&0 </dev/null 6>&1
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
# Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
# so uname gets run too.
ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
@@ -862,6 +865,10 @@ USE_GIF_FALSE
USE_GIF_TRUE
GIF_LIBS
GIF_FLAGS
+USE_HDF4_FALSE
+USE_HDF4_TRUE
+HDF4_LIBS
+HDF4_FLAGS
USE_HDF5_FALSE
USE_HDF5_TRUE
HDF5_LIBS
@@ -958,6 +965,7 @@ INSTALL_PROGRAM
MGL_AGE
MGL_REVISION
MGL_CURRENT
+MGL_RELEASE
target_alias
host_alias
build_alias
@@ -1014,6 +1022,7 @@ enable_gsl
enable_glut
enable_hdf5
enable_hdf5_18
+enable_hdf4
enable_gif
enable_jpeg
enable_fltk
@@ -1101,8 +1110,9 @@ do
fi
case $ac_option in
- *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
- *) ac_optarg=yes ;;
+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *=) ac_optarg= ;;
+ *) ac_optarg=yes ;;
esac
# Accept the important Cygnus configure options, so we can diagnose typos.
@@ -1147,7 +1157,7 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error "invalid feature name: $ac_useropt"
+ as_fn_error $? "invalid feature name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
@@ -1173,7 +1183,7 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error "invalid feature name: $ac_useropt"
+ as_fn_error $? "invalid feature name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
@@ -1377,7 +1387,7 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error "invalid package name: $ac_useropt"
+ as_fn_error $? "invalid package name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
@@ -1393,7 +1403,7 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error "invalid package name: $ac_useropt"
+ as_fn_error $? "invalid package name: $ac_useropt"
ac_useropt_orig=$ac_useropt
ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
@@ -1423,8 +1433,8 @@ do
| --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
x_libraries=$ac_optarg ;;
- -*) as_fn_error "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information."
+ -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
;;
*=*)
@@ -1432,7 +1442,7 @@ Try \`$0 --help' for more information."
# Reject names that are not valid shell variable names.
case $ac_envvar in #(
'' | [0-9]* | *[!_$as_cr_alnum]* )
- as_fn_error "invalid variable name: \`$ac_envvar'" ;;
+ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
esac
eval $ac_envvar=\$ac_optarg
export $ac_envvar ;;
@@ -1450,13 +1460,13 @@ done
if test -n "$ac_prev"; then
ac_option=--`echo $ac_prev | sed 's/_/-/g'`
- as_fn_error "missing argument to $ac_option"
+ as_fn_error $? "missing argument to $ac_option"
fi
if test -n "$ac_unrecognized_opts"; then
case $enable_option_checking in
no) ;;
- fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
+ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
*) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
esac
fi
@@ -1479,7 +1489,7 @@ do
[\\/$]* | ?:[\\/]* ) continue;;
NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
esac
- as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
+ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
done
# There might be people who depend on the old broken behavior: `$host'
@@ -1493,8 +1503,8 @@ target=$target_alias
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
- $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used." >&2
+ $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used" >&2
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
fi
@@ -1509,9 +1519,9 @@ test "$silent" = yes && exec 6>/dev/null
ac_pwd=`pwd` && test -n "$ac_pwd" &&
ac_ls_di=`ls -di .` &&
ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
- as_fn_error "working directory cannot be determined"
+ as_fn_error $? "working directory cannot be determined"
test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
- as_fn_error "pwd does not report name of working directory"
+ as_fn_error $? "pwd does not report name of working directory"
# Find the source files, if location was not specified.
@@ -1550,11 +1560,11 @@ else
fi
if test ! -r "$srcdir/$ac_unique_file"; then
test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
- as_fn_error "cannot find sources ($ac_unique_file) in $srcdir"
+ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
fi
ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
ac_abs_confdir=`(
- cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
pwd)`
# When building in place, set srcdir=.
if test "$ac_abs_confdir" = "$ac_pwd"; then
@@ -1594,7 +1604,7 @@ Configuration:
--help=short display options specific to this package
--help=recursive display the short help of all the included packages
-V, --version display version information and exit
- -q, --quiet, --silent do not print \`checking...' messages
+ -q, --quiet, --silent do not print \`checking ...' messages
--cache-file=FILE cache test results in FILE [disabled]
-C, --config-cache alias for \`--cache-file=config.cache'
-n, --no-create do not create output files
@@ -1673,6 +1683,7 @@ Optional Features:
--enable-glut Turn on glut
--enable-hdf5 Turn on hdf5
--enable-hdf5_18 Turn on hdf5 version 1.8
+ --enable-hdf4 Turn on hdf4
--enable-gif Turn on gif
--enable-jpeg Turn on jpeg
--enable-fltk Turn on fltk
@@ -1697,7 +1708,7 @@ Some influential environment variables:
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
nonstandard directory <lib dir>
LIBS libraries to pass to the linker, e.g. -l<library>
- CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
you have headers in a nonstandard directory <include dir>
CXX C++ compiler command
CXXFLAGS C++ compiler flags
@@ -1772,9 +1783,9 @@ test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
mathgl configure 1.10
-generated by GNU Autoconf 2.64
+generated by GNU Autoconf 2.67
-Copyright (C) 2009 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1819,7 +1830,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- return $ac_retval
+ as_fn_set_status $ac_retval
} # ac_fn_c_try_compile
@@ -1857,7 +1868,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- return $ac_retval
+ as_fn_set_status $ac_retval
} # ac_fn_cxx_try_compile
@@ -1903,7 +1914,7 @@ fi
# left behind by Apple's compiler. We do this before executing the actions.
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- return $ac_retval
+ as_fn_set_status $ac_retval
} # ac_fn_c_try_link
@@ -1916,7 +1927,7 @@ ac_fn_c_check_header_compile ()
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1959,7 +1970,7 @@ $as_echo "$ac_try_echo"; } >&5
mv -f conftest.er1 conftest.err
fi
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } >/dev/null && {
+ test $ac_status = 0; } > conftest.i && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
}; then :
@@ -1971,7 +1982,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- return $ac_retval
+ as_fn_set_status $ac_retval
} # ac_fn_c_try_cpp
@@ -2013,7 +2024,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- return $ac_retval
+ as_fn_set_status $ac_retval
} # ac_fn_c_try_run
@@ -2025,7 +2036,7 @@ ac_fn_c_check_func ()
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -2105,7 +2116,7 @@ $as_echo "$ac_try_echo"; } >&5
mv -f conftest.er1 conftest.err
fi
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } >/dev/null && {
+ test $ac_status = 0; } > conftest.i && {
test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
test ! -s conftest.err
}; then :
@@ -2117,7 +2128,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- return $ac_retval
+ as_fn_set_status $ac_retval
} # ac_fn_cxx_try_cpp
@@ -2163,7 +2174,7 @@ fi
# left behind by Apple's compiler. We do this before executing the actions.
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
- return $ac_retval
+ as_fn_set_status $ac_retval
} # ac_fn_cxx_try_link
@@ -2175,10 +2186,10 @@ fi
ac_fn_c_check_header_mongrel ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ if eval "test \"\${$3+set}\"" = set; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
$as_echo_n "(cached) " >&6
fi
eval ac_res=\$$3
@@ -2214,7 +2225,7 @@ if ac_fn_c_try_cpp "$LINENO"; then :
else
ac_header_preproc=no
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
$as_echo "$ac_header_preproc" >&6; }
@@ -2237,17 +2248,15 @@ $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( cat <<\_ASBOX
-## ---------------------------------------- ##
+( $as_echo "## ---------------------------------------- ##
## Report this to mathgl.abalakin at gmail.com ##
-## ---------------------------------------- ##
-_ASBOX
+## ---------------------------------------- ##"
) | sed "s/^/$as_me: WARNING: /" >&2
;;
esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
eval "$3=\$ac_header_compiler"
@@ -2264,7 +2273,7 @@ This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by mathgl $as_me 1.10, which was
-generated by GNU Autoconf 2.64. Invocation command line was
+generated by GNU Autoconf 2.67. Invocation command line was
$ $0 $@
@@ -2374,11 +2383,9 @@ trap 'exit_status=$?
{
echo
- cat <<\_ASBOX
-## ---------------- ##
+ $as_echo "## ---------------- ##
## Cache variables. ##
-## ---------------- ##
-_ASBOX
+## ---------------- ##"
echo
# The following way of writing the cache mishandles newlines in values,
(
@@ -2412,11 +2419,9 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
)
echo
- cat <<\_ASBOX
-## ----------------- ##
+ $as_echo "## ----------------- ##
## Output variables. ##
-## ----------------- ##
-_ASBOX
+## ----------------- ##"
echo
for ac_var in $ac_subst_vars
do
@@ -2429,11 +2434,9 @@ _ASBOX
echo
if test -n "$ac_subst_files"; then
- cat <<\_ASBOX
-## ------------------- ##
+ $as_echo "## ------------------- ##
## File substitutions. ##
-## ------------------- ##
-_ASBOX
+## ------------------- ##"
echo
for ac_var in $ac_subst_files
do
@@ -2447,11 +2450,9 @@ _ASBOX
fi
if test -s confdefs.h; then
- cat <<\_ASBOX
-## ----------- ##
+ $as_echo "## ----------- ##
## confdefs.h. ##
-## ----------- ##
-_ASBOX
+## ----------- ##"
echo
cat confdefs.h
echo
@@ -2506,7 +2507,12 @@ _ACEOF
ac_site_file1=NONE
ac_site_file2=NONE
if test -n "$CONFIG_SITE"; then
- ac_site_file1=$CONFIG_SITE
+ # We do not want a PATH search for config.site.
+ case $CONFIG_SITE in #((
+ -*) ac_site_file1=./$CONFIG_SITE;;
+ */*) ac_site_file1=$CONFIG_SITE;;
+ *) ac_site_file1=./$CONFIG_SITE;;
+ esac
elif test "x$prefix" != xNONE; then
ac_site_file1=$prefix/share/config.site
ac_site_file2=$prefix/etc/config.site
@@ -2517,18 +2523,22 @@ fi
for ac_site_file in "$ac_site_file1" "$ac_site_file2"
do
test "x$ac_site_file" = xNONE && continue
- if test -r "$ac_site_file"; then
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
$as_echo "$as_me: loading site script $ac_site_file" >&6;}
sed 's/^/| /' "$ac_site_file" >&5
- . "$ac_site_file"
+ . "$ac_site_file" \
+ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5 ; }
fi
done
if test -r "$cache_file"; then
- # Some versions of bash will fail to source /dev/null (special
- # files actually), so we avoid doing that.
- if test -f "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special files
+ # actually), so we avoid doing that. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
$as_echo "$as_me: loading cache $cache_file" >&6;}
case $cache_file in
@@ -2597,7 +2607,7 @@ if $ac_cache_corrupted; then
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
fi
## -------------------- ##
## Main body of script. ##
@@ -2611,19 +2621,28 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+MGL_RELEASE=1.10
+
+
ac_aux_dir=
for ac_dir in config "$srcdir"/config; do
- for ac_t in install-sh install.sh shtool; do
- if test -f "$ac_dir/$ac_t"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/$ac_t -c"
- break 2
- fi
- done
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
done
if test -z "$ac_aux_dir"; then
- as_fn_error "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5
fi
# These three variables are undocumented and unsupported,
@@ -2759,11 +2778,11 @@ am_lf='
'
case `pwd` in
*[\\\"\#\$\&\'\`$am_lf]*)
- as_fn_error "unsafe absolute working directory name" "$LINENO" 5;;
+ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5 ;;
esac
case $srcdir in
*[\\\"\#\$\&\'\`$am_lf\ \ ]*)
- as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+ as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5 ;;
esac
# Do `set' in a subshell so we don't clobber the current shell's
@@ -2785,7 +2804,7 @@ if (
# if, for instance, CONFIG_SHELL is bash and it inherits a
# broken ls alias from the environment. This has actually
# happened. Such a system could not be considered "sane".
- as_fn_error "ls -t appears to fail. Make sure there is not a broken
+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
alias in your environment" "$LINENO" 5
fi
@@ -2795,7 +2814,7 @@ then
# Ok.
:
else
- as_fn_error "newly created file is older than distributed files!
+ as_fn_error $? "newly created file is older than distributed files!
Check your system clock" "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
@@ -2967,6 +2986,7 @@ IFS=$as_save_IFS
fi
+ test -d ./--version && rmdir ./--version
if test "${ac_cv_path_mkdir+set}" = set; then
MKDIR_P="$ac_cv_path_mkdir -p"
else
@@ -2974,7 +2994,6 @@ fi
# value for MKDIR_P within a source directory, because that will
# break other packages using the cache if that directory is
# removed, or if the value is a relative name.
- test -d ./--version && rmdir ./--version
MKDIR_P="$ac_install_sh -d"
fi
fi
@@ -3033,7 +3052,7 @@ done
$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
set x ${MAKE-make}
ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
cat >conftest.make <<\_ACEOF
@@ -3041,7 +3060,7 @@ SHELL = /bin/sh
all:
@echo '@@@%%%=$(MAKE)=@@@%%%'
_ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
case `${MAKE-make} -f conftest.make 2>/dev/null` in
*@@@%%%=?*=@@@%%%*)
eval ac_cv_prog_make_${ac_make}_set=yes;;
@@ -3075,7 +3094,7 @@ if test "`cd $srcdir && pwd`" != "`pwd`"; then
am__isrc=' -I$(srcdir)'
# test to see if srcdir already configured
if test -f $srcdir/config.status; then
- as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
fi
fi
@@ -3432,8 +3451,8 @@ fi
test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "no acceptable C compiler found in \$PATH
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5 ; }
# Provide some information about the compiler.
$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
@@ -3454,32 +3473,30 @@ $as_echo "$ac_try_echo"; } >&5
... rest of stderr output deleted ...
10q' conftest.err >conftest.er1
cat conftest.er1 >&5
- rm -f conftest.er1 conftest.err
fi
+ rm -f conftest.er1 conftest.err
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stdio.h>
+
int
main ()
{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
;
return 0;
}
_ACEOF
ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out conftest.out"
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
# The possible output files:
@@ -3541,62 +3558,28 @@ test "$ac_cv_exeext" = no && ac_cv_exeext=
else
ac_file=''
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
if test -z "$ac_file"; then :
- $as_echo "$as_me: failed program was:" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ as_fn_set_status 77
-as_fn_error "C compiler cannot create executables
-See \`config.log' for more details." "$LINENO" 5; }; }
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5 ; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
ac_exeext=$ac_cv_exeext
-# Check that the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
- if { ac_try='./$ac_file'
- { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then
- cross_compiling=no
- else
- if test "$cross_compiling" = maybe; then
- cross_compiling=yes
- else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." "$LINENO" 5; }
- fi
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out conftest.out
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
ac_clean_files=$ac_clean_files_save
-# Check that the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
$as_echo_n "checking for suffix of executables... " >&6; }
if { { ac_try="$ac_link"
@@ -3626,16 +3609,75 @@ done
else
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5 ; }
fi
-rm -f conftest$ac_cv_exeext
+rm -f conftest conftest$ac_cv_exeext
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
$as_echo "$ac_cv_exeext" >&6; }
rm -f conftest.$ac_ext
EXEEXT=$ac_cv_exeext
ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+ { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if { ac_try='./conftest$ac_cv_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5 ; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
$as_echo_n "checking for suffix of object files... " >&6; }
if test "${ac_cv_objext+set}" = set; then :
@@ -3678,8 +3720,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5 ; }
fi
rm -f conftest.$ac_cv_objext conftest.$ac_ext
fi
@@ -4218,8 +4260,8 @@ $as_echo "$ac_try_echo"; } >&5
... rest of stderr output deleted ...
10q' conftest.err >conftest.er1
cat conftest.er1 >&5
- rm -f conftest.er1 conftest.err
fi
+ rm -f conftest.er1 conftest.err
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
@@ -4476,7 +4518,7 @@ fi
# Make sure we can run config.sub.
$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
- as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
$as_echo_n "checking build system type... " >&6; }
@@ -4487,16 +4529,16 @@ else
test "x$ac_build_alias" = x &&
ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
test "x$ac_build_alias" = x &&
- as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
$as_echo "$ac_cv_build" >&6; }
case $ac_cv_build in
*-*-*) ;;
-*) as_fn_error "invalid value of canonical build" "$LINENO" 5;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5 ;;
esac
build=$ac_cv_build
ac_save_IFS=$IFS; IFS='-'
@@ -4521,7 +4563,7 @@ else
ac_cv_host=$ac_cv_build
else
ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
fi
fi
@@ -4529,7 +4571,7 @@ fi
$as_echo "$ac_cv_host" >&6; }
case $ac_cv_host in
*-*-*) ;;
-*) as_fn_error "invalid value of canonical host" "$LINENO" 5;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5 ;;
esac
host=$ac_cv_host
ac_save_IFS=$IFS; IFS='-'
@@ -4860,8 +4902,8 @@ esac
-macro_version='2.2.6'
-macro_revision='1.3012'
+macro_version='2.2.6b'
+macro_revision='1.3017'
@@ -4934,7 +4976,7 @@ esac
done
IFS=$as_save_IFS
if test -z "$ac_cv_path_SED"; then
- as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5
+ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
fi
else
ac_cv_path_SED=$SED
@@ -5010,7 +5052,7 @@ esac
done
IFS=$as_save_IFS
if test -z "$ac_cv_path_GREP"; then
- as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
fi
else
ac_cv_path_GREP=$GREP
@@ -5076,7 +5118,7 @@ esac
done
IFS=$as_save_IFS
if test -z "$ac_cv_path_EGREP"; then
- as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
fi
else
ac_cv_path_EGREP=$EGREP
@@ -5143,7 +5185,7 @@ esac
done
IFS=$as_save_IFS
if test -z "$ac_cv_path_FGREP"; then
- as_fn_error "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
fi
else
ac_cv_path_FGREP=$FGREP
@@ -5259,7 +5301,7 @@ else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
-test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
if test "${lt_cv_prog_gnu_ld+set}" = set; then :
@@ -5461,13 +5503,13 @@ if test "${lt_cv_nm_interface+set}" = set; then :
else
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
- (eval echo "\"\$as_me:5464: $ac_compile\"" >&5)
+ (eval echo "\"\$as_me:5506: $ac_compile\"" >&5)
(eval "$ac_compile" 2>conftest.err)
cat conftest.err >&5
- (eval echo "\"\$as_me:5467: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval echo "\"\$as_me:5509: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
(eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
cat conftest.err >&5
- (eval echo "\"\$as_me:5470: output\"" >&5)
+ (eval echo "\"\$as_me:5512: output\"" >&5)
cat conftest.out >&5
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
lt_cv_nm_interface="MS dumpbin"
@@ -5930,7 +5972,7 @@ irix5* | irix6* | nonstopux*)
;;
# This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
lt_cv_deplibs_check_method=pass_all
;;
@@ -6670,7 +6712,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 6673 "configure"' > conftest.$ac_ext
+ echo '#line 6715 "configure"' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -7459,7 +7501,7 @@ else
# Broken: fails on valid input.
continue
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
@@ -7475,11 +7517,11 @@ else
ac_preproc_ok=:
break
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok; then :
break
fi
@@ -7518,7 +7560,7 @@ else
# Broken: fails on valid input.
continue
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
@@ -7534,18 +7576,18 @@ else
ac_preproc_ok=:
break
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok; then :
else
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5 ; }
fi
ac_ext=c
@@ -7674,8 +7716,7 @@ do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
"
-eval as_val=\$$as_ac_Header
- if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
cat >>confdefs.h <<_ACEOF
#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
@@ -7830,8 +7871,8 @@ $as_echo "$ac_try_echo"; } >&5
... rest of stderr output deleted ...
10q' conftest.err >conftest.er1
cat conftest.er1 >&5
- rm -f conftest.er1 conftest.err
fi
+ rm -f conftest.er1 conftest.err
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
@@ -8125,7 +8166,7 @@ else
# Broken: fails on valid input.
continue
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
@@ -8141,11 +8182,11 @@ else
ac_preproc_ok=:
break
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok; then :
break
fi
@@ -8184,7 +8225,7 @@ else
# Broken: fails on valid input.
continue
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
# OK, works on sane cases. Now check whether nonexistent headers
# can be detected and how.
@@ -8200,11 +8241,11 @@ else
ac_preproc_ok=:
break
fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
if $ac_preproc_ok; then :
else
@@ -8719,11 +8760,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8722: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:8763: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:8726: \$? = $ac_status" >&5
+ echo "$as_me:8767: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -8888,7 +8929,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
lt_prog_compiler_static='-non_shared'
;;
- linux* | k*bsd*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
case $cc_basename in
# old Intel for x86_64 which still supported -KPIC.
ecc*)
@@ -9058,11 +9099,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9061: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:9102: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:9065: \$? = $ac_status" >&5
+ echo "$as_me:9106: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -9163,11 +9204,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9166: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:9207: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:9170: \$? = $ac_status" >&5
+ echo "$as_me:9211: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -9218,11 +9259,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:9221: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:9262: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:9225: \$? = $ac_status" >&5
+ echo "$as_me:9266: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -9361,6 +9402,7 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
fi
supports_anon_versioning=no
case `$LD -v 2>&1` in
+ *GNU\ gold*) supports_anon_versioning=yes ;;
*\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
*\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
*\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
@@ -9452,7 +9494,7 @@ _LT_EOF
archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
;;
- gnu* | linux* | tpf* | k*bsd*-gnu)
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
tmp_diet=no
if test "$host_os" = linux-dietlibc; then
case $cc_basename in
@@ -10914,7 +10956,7 @@ linux*oldld* | linux*aout* | linux*coff*)
;;
# This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
version_type=linux
need_lib_prefix=no
need_version=no
@@ -11601,7 +11643,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11604 "configure"
+#line 11646 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11697,7 +11739,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11700 "configure"
+#line 11742 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -12112,7 +12154,7 @@ else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
-test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
if test "${lt_cv_prog_gnu_ld+set}" = set; then :
@@ -12637,7 +12679,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
inherit_rpath_CXX=yes
;;
- linux* | k*bsd*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
case $cc_basename in
KCC*)
# Kuck and Associates, Inc. (KAI) C++ Compiler
@@ -13465,7 +13507,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
;;
esac
;;
- linux* | k*bsd*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
case $cc_basename in
KCC*)
# KAI C++ Compiler
@@ -13653,11 +13695,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:13656: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:13698: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:13660: \$? = $ac_status" >&5
+ echo "$as_me:13702: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -13752,11 +13794,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:13755: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:13797: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:13759: \$? = $ac_status" >&5
+ echo "$as_me:13801: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -13804,11 +13846,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:13807: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:13849: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:13811: \$? = $ac_status" >&5
+ echo "$as_me:13853: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -14382,7 +14424,7 @@ linux*oldld* | linux*aout* | linux*coff*)
;;
# This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
version_type=linux
need_lib_prefix=no
need_version=no
@@ -14777,7 +14819,7 @@ if test "${enable_double+set}" = set; then :
enableval=$enable_double; case "${enableval}" in
yes) double=true ;;
no) double=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-double" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-double" "$LINENO" 5 ;;
esac
else
double=false
@@ -14799,7 +14841,7 @@ if test "${enable_all+set}" = set; then :
enableval=$enable_all; case "${enableval}" in
yes) all=true ;;
no) all=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-all" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-all" "$LINENO" 5 ;;
esac
else
all=false
@@ -14811,7 +14853,7 @@ if test "${enable_langall+set}" = set; then :
enableval=$enable_langall; case "${enableval}" in
yes) langall=true ;;
no) langall=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-langall" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-langall" "$LINENO" 5 ;;
esac
else
langall=false
@@ -14823,7 +14865,7 @@ if test "${enable_pthread+set}" = set; then :
enableval=$enable_pthread; case "${enableval}" in
yes) pthread=true ;;
no) pthread=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-pthread" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-pthread" "$LINENO" 5 ;;
esac
else
pthread=true
@@ -14888,7 +14930,7 @@ if test "${enable_gsl+set}" = set; then :
enableval=$enable_gsl; case "${enableval}" in
yes) gsl=true ;;
no) gsl=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-gsl" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-gsl" "$LINENO" 5 ;;
esac
else
gsl=true
@@ -14996,7 +15038,7 @@ if test "${enable_glut+set}" = set; then :
enableval=$enable_glut; case "${enableval}" in
yes) glut=true ;;
no) glut=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-glut" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-glut" "$LINENO" 5 ;;
esac
else
glut=false
@@ -15026,7 +15068,7 @@ fi
as_ac_Lib=`$as_echo "ac_cv_lib_${GL_LIBS}''_main" | $as_tr_sh`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l${GL_LIBS}" >&5
$as_echo_n "checking for main in -l${GL_LIBS}... " >&6; }
-if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$as_ac_Lib+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -15055,8 +15097,7 @@ fi
eval ac_res=\$$as_ac_Lib
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
-eval as_val=\$$as_ac_Lib
- if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
GL_LIBS=-l${GL_LIBS}
else
echo "Please install OpenGL library (lib${GL_LIBS}.a)"; exit
@@ -15074,7 +15115,7 @@ fi
as_ac_Lib=`$as_echo "ac_cv_lib_${GLUT_LIBS}''_main" | $as_tr_sh`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l${GLUT_LIBS}" >&5
$as_echo_n "checking for main in -l${GLUT_LIBS}... " >&6; }
-if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$as_ac_Lib+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -15103,8 +15144,7 @@ fi
eval ac_res=\$$as_ac_Lib
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
-eval as_val=\$$as_ac_Lib
- if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
(test x$all = xtrue || test x$glut = xtrue) && GLUT_LIBS=-l${GLUT_LIBS}
else
(test x$all = xtrue || test x$glut = xtrue) && echo "Please install FreeGLUT library (lib${GLUT_LIBS}.a)" && exit
@@ -15125,7 +15165,7 @@ fi
as_ac_Lib=`$as_echo "ac_cv_lib_${GL_LIBS}''_main" | $as_tr_sh`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l${GL_LIBS}" >&5
$as_echo_n "checking for main in -l${GL_LIBS}... " >&6; }
-if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$as_ac_Lib+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -15154,8 +15194,7 @@ fi
eval ac_res=\$$as_ac_Lib
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
-eval as_val=\$$as_ac_Lib
- if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
GL_LIBS=-l${GL_LIBS}
else
echo "Please install OpenGL library (lib${GL_LIBS}.a)"; exit
@@ -15173,7 +15212,7 @@ fi
as_ac_Lib=`$as_echo "ac_cv_lib_${GLUT_LIBS}''_main" | $as_tr_sh`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -l${GLUT_LIBS}" >&5
$as_echo_n "checking for main in -l${GLUT_LIBS}... " >&6; }
-if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$as_ac_Lib+set}\"" = set; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
@@ -15202,8 +15241,7 @@ fi
eval ac_res=\$$as_ac_Lib
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
-eval as_val=\$$as_ac_Lib
- if test "x$as_val" = x""yes; then :
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
(test x$all = xtrue || test x$glut = xtrue) && GLUT_LIBS=-l${GLUT_LIBS}
else
(test x$all = xtrue || test x$glut = xtrue) && echo "Please install FreeGLUT library (lib${GLUT_LIBS}.a)" && exit
@@ -15235,7 +15273,7 @@ if test "${enable_hdf5+set}" = set; then :
enableval=$enable_hdf5; case "${enableval}" in
yes) hdf5=true ;;
no) hdf5=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-hdf5" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-hdf5" "$LINENO" 5 ;;
esac
else
hdf5=false
@@ -15246,7 +15284,7 @@ if test "${enable_hdf5_18+set}" = set; then :
enableval=$enable_hdf5_18; case "${enableval}" in
yes) hdf5_18=true ;;
no) hdf5_18=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-hdf5_18" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-hdf5_18" "$LINENO" 5 ;;
esac
else
hdf5_18=false
@@ -15310,12 +15348,78 @@ else
fi
+
+# Check whether --enable-hdf4 was given.
+if test "${enable_hdf4+set}" = set; then :
+ enableval=$enable_hdf4; case "${enableval}" in
+ yes) hdf4=true ;;
+ no) hdf4=false ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-hdf4" "$LINENO" 5 ;;
+esac
+else
+ hdf4=false
+fi
+
+ac_fn_c_check_header_mongrel "$LINENO" "hdf/mfhdf.h" "ac_cv_header_hdf_mfhdf_h" "$ac_includes_default"
+if test "x$ac_cv_header_hdf_mfhdf_h" = x""yes; then :
+ (test x$all = xtrue || test x$hdf4 = xtrue) && HDF4_FLAGS=-DHAVE_HDF4
+else
+ (test x$all = xtrue || test x$hdf4 = xtrue) && echo "Please install hdf4 headers" && exit
+fi
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -ldf" >&5
+$as_echo_n "checking for main in -ldf... " >&6; }
+if test "${ac_cv_lib_df_main+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldf $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+int
+main ()
+{
+return main ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_df_main=yes
+else
+ ac_cv_lib_df_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_df_main" >&5
+$as_echo "$ac_cv_lib_df_main" >&6; }
+if test "x$ac_cv_lib_df_main" = x""yes; then :
+ (test x$all = xtrue || test x$hdf4 = xtrue) && HDF4_LIBS="-lmfhdf -ldf"
+else
+ (test x$all = xtrue || test x$hdf4 = xtrue) && echo "Please install hdf4 library" && exit
+fi
+
+ if (test x$all = xtrue || test x$hdf4 = xtrue); then
+ USE_HDF4_TRUE=
+ USE_HDF4_FALSE='#'
+else
+ USE_HDF4_TRUE='#'
+ USE_HDF4_FALSE=
+fi
+
+
# Check whether --enable-gif was given.
if test "${enable_gif+set}" = set; then :
enableval=$enable_gif; case "${enableval}" in
yes) gif=true ;;
no) gif=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-gif" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-gif" "$LINENO" 5 ;;
esac
else
gif=false
@@ -15426,7 +15530,7 @@ if test "${enable_jpeg+set}" = set; then :
enableval=$enable_jpeg; case "${enableval}" in
yes) jpeg=true ;;
no) jpeg=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-jpeg" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-jpeg" "$LINENO" 5 ;;
esac
else
jpeg=false
@@ -15491,7 +15595,7 @@ if test "${enable_fltk+set}" = set; then :
enableval=$enable_fltk; case "${enableval}" in
yes) fltk=true ;;
no) fltk=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-fltk" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-fltk" "$LINENO" 5 ;;
esac
else
fltk=false
@@ -15595,7 +15699,7 @@ if test "${enable_wx+set}" = set; then :
enableval=$enable_wx; case "${enableval}" in
yes) wx=true ;;
no) wx=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-wx" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-wx" "$LINENO" 5 ;;
esac
else
wx=false
@@ -15700,7 +15804,7 @@ if test "${enable_qt+set}" = set; then :
enableval=$enable_qt; case "${enableval}" in
yes) qt=true ;;
no) qt=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-qt" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-qt" "$LINENO" 5 ;;
esac
else
qt=false
@@ -15826,7 +15930,7 @@ done
test -n "$QMAKE" || QMAKE="missing"
if test x"$QMAKE" = xmissing; then
- as_fn_error "Cannot find qmake in your PATH. Try using --with-qt." "$LINENO" 5
+ as_fn_error $? "Cannot find qmake in your PATH. Try using --with-qt." "$LINENO" 5
fi
fi
@@ -15927,7 +16031,7 @@ done
test -n "$MOC" || MOC="missing"
if test x"$MOC" = xmissing; then
- as_fn_error "Cannot find moc (Meta Object Compiler) in your PATH. Try using --with-qt." "$LINENO" 5
+ as_fn_error $? "Cannot find moc (Meta Object Compiler) in your PATH. Try using --with-qt." "$LINENO" 5
fi
fi
@@ -16028,7 +16132,7 @@ done
test -n "$UIC" || UIC="missing"
if test x"$UIC" = xmissing; then
- as_fn_error "Cannot find uic (User Interface Compiler) in your PATH. Try using --with-qt." "$LINENO" 5
+ as_fn_error $? "Cannot find uic (User Interface Compiler) in your PATH. Try using --with-qt." "$LINENO" 5
fi
fi
@@ -16139,7 +16243,7 @@ $as_echo "$as_me: WARNING: Cannot find rcc (Qt Resource Compiler) in your PATH.
QT_PATH=`dirname "$QMAKE"`
fi
if test x"$QT_PATH" = x; then
- as_fn_error "Cannot find the path to your Qt install. Use --with-qt." "$LINENO" 5
+ as_fn_error $? "Cannot find the path to your Qt install. Use --with-qt." "$LINENO" 5
fi
@@ -16173,7 +16277,7 @@ $as_echo "$as_me: WARNING: Cannot find rcc (Qt Resource Compiler) in your PATH.
then
:
else
- as_fn_error "Cannot cd to or write in $my_tmpdir" "$LINENO" 5
+ as_fn_error $? "Cannot cd to or write in $my_tmpdir" "$LINENO" 5
fi
cat >conftest.h <<_ASEOF
#include <QObject>
@@ -16212,14 +16316,14 @@ int main()
}
_ASEOF
if $QMAKE -project; then :; else
- as_fn_error "Calling $QMAKE -project failed." "$LINENO" 5
+ as_fn_error $? "Calling $QMAKE -project failed." "$LINENO" 5
fi
# Find the .pro file generated by qmake.
pro_file='conftest.dir.pro'
test -f $pro_file || pro_file=`echo *.pro`
if test -f "$pro_file"; then :; else
- as_fn_error "Can't find the .pro file generated by Qmake." "$LINENO" 5
+ as_fn_error $? "Can't find the .pro file generated by Qmake." "$LINENO" 5
fi
@@ -16232,7 +16336,7 @@ _ASEOF
sed 's/^/| /' "$pro_file" >&5
if $QMAKE; then :; else
- as_fn_error "Calling $QMAKE failed." "$LINENO" 5
+ as_fn_error $? "Calling $QMAKE failed." "$LINENO" 5
fi
# Try to compile a simple Qt app.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can build a simple Qt app" >&5
@@ -16298,7 +16402,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_qt_build" >&5
$as_echo "$at_cv_qt_build" >&6; }
if test x"$at_cv_qt_build" = xko; then
- as_fn_error "Cannot build a test Qt program" "$LINENO" 5
+ as_fn_error $? "Cannot build a test Qt program" "$LINENO" 5
fi
QT_VERSION_MAJOR=`echo "$at_cv_qt_build" | sed 's/^^0-9*//'`
@@ -16324,7 +16428,7 @@ $as_echo "$at_cv_qt_build" >&6; }
fi
if test -f $at_mfile; then :; else
cd "$my_configure_pwd"
- as_fn_error "Cannot find the Makefile generated by qmake." "$LINENO" 5
+ as_fn_error $? "Cannot find the Makefile generated by qmake." "$LINENO" 5
fi
# Find the DEFINES of Qt (should have been named CPPFLAGS).
@@ -16434,7 +16538,7 @@ $as_echo "$at_cv_env_QT_LIBS" >&6; }
if test x"$QMAKE" = x; then
- as_fn_error "\$QMAKE is empty. \
+ as_fn_error $? "\$QMAKE is empty. \
Did you invoke AT_WITH_QT before AT_REQUIRE_QT_VERSION?" "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Qt's version" >&5
@@ -16450,7 +16554,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $at_cv_QT_VERSION" >&5
$as_echo "$at_cv_QT_VERSION" >&6; }
if test x"$at_cv_QT_VERSION" = x; then
- as_fn_error "Cannot detect Qt's version." "$LINENO" 5
+ as_fn_error $? "Cannot detect Qt's version." "$LINENO" 5
fi
QT_VERSION=$at_cv_QT_VERSION
@@ -16459,7 +16563,7 @@ as_arg_v2=4.3
awk "$as_awk_strverscmp" v1="$as_arg_v1" v2="$as_arg_v2" /dev/null
case $? in #(
1) :
- as_fn_error "This package requires Qt 4.3 or above." "$LINENO" 5 ;; #(
+ as_fn_error $? "This package requires Qt 4.3 or above." "$LINENO" 5 ;; #(
0) :
;; #(
2) :
@@ -16484,7 +16588,7 @@ if test "${enable_python+set}" = set; then :
enableval=$enable_python; case "${enableval}" in
yes) python=true ;;
no) python=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-python" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-python" "$LINENO" 5 ;;
esac
else
python=false
@@ -16624,7 +16728,7 @@ test -n "$PYTHON" || PYTHON=":"
if test "$PYTHON" = :; then
- as_fn_error "no suitable Python interpreter found" "$LINENO" 5
+ as_fn_error $? "no suitable Python interpreter found" "$LINENO" 5
else
@@ -16679,6 +16783,14 @@ else
am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
;;
+ *)
+ case $am_py_prefix in
+ /usr|/System*) ;;
+ *)
+ am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
+ ;;
+ esac
+ ;;
esac
fi
@@ -16709,6 +16821,14 @@ else
am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
;;
+ *)
+ case $am_py_exec_prefix in
+ /usr|/System*) ;;
+ *)
+ am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
+ ;;
+ esac
+ ;;
esac
fi
@@ -16744,7 +16864,7 @@ if test "${enable_octave+set}" = set; then :
enableval=$enable_octave; case "${enableval}" in
yes) octave=true ;;
no) octave=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-octave" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-octave" "$LINENO" 5 ;;
esac
else
octave=false
@@ -16815,7 +16935,7 @@ if test "${enable_testio+set}" = set; then :
enableval=$enable_testio; case "${enableval}" in
yes) testio=true ;;
no) testio=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-testio" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-testio" "$LINENO" 5 ;;
esac
else
testio=false
@@ -16835,7 +16955,7 @@ if test "${enable_docs+set}" = set; then :
enableval=$enable_docs; case "${enableval}" in
yes) docs=true ;;
no) docs=false ;;
- *) as_fn_error "bad value ${enableval} for --enable-docs" "$LINENO" 5 ;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-docs" "$LINENO" 5 ;;
esac
else
docs=false
@@ -16942,6 +17062,7 @@ DEFS=-DHAVE_CONFIG_H
ac_libobjs=
ac_ltlibobjs=
+U=
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
@@ -16965,71 +17086,75 @@ else
fi
if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
- as_fn_error "conditional \"AMDEP\" was never defined.
+ as_fn_error $? "conditional \"AMDEP\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
- as_fn_error "conditional \"am__fastdepCC\" was never defined.
+ as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
- as_fn_error "conditional \"am__fastdepCXX\" was never defined.
+ as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
- as_fn_error "conditional \"am__fastdepCXX\" was never defined.
+ as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_PTHREAD_TRUE}" && test -z "${USE_PTHREAD_FALSE}"; then
- as_fn_error "conditional \"USE_PTHREAD\" was never defined.
+ as_fn_error $? "conditional \"USE_PTHREAD\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_GSL_TRUE}" && test -z "${USE_GSL_FALSE}"; then
- as_fn_error "conditional \"USE_GSL\" was never defined.
+ as_fn_error $? "conditional \"USE_GSL\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_GLUT_TRUE}" && test -z "${USE_GLUT_FALSE}"; then
- as_fn_error "conditional \"USE_GLUT\" was never defined.
+ as_fn_error $? "conditional \"USE_GLUT\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_HDF5_TRUE}" && test -z "${USE_HDF5_FALSE}"; then
- as_fn_error "conditional \"USE_HDF5\" was never defined.
+ as_fn_error $? "conditional \"USE_HDF5\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_HDF4_TRUE}" && test -z "${USE_HDF4_FALSE}"; then
+ as_fn_error $? "conditional \"USE_HDF4\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_GIF_TRUE}" && test -z "${USE_GIF_FALSE}"; then
- as_fn_error "conditional \"USE_GIF\" was never defined.
+ as_fn_error $? "conditional \"USE_GIF\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_JPEG_TRUE}" && test -z "${USE_JPEG_FALSE}"; then
- as_fn_error "conditional \"USE_JPEG\" was never defined.
+ as_fn_error $? "conditional \"USE_JPEG\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_FLTK_TRUE}" && test -z "${USE_FLTK_FALSE}"; then
- as_fn_error "conditional \"USE_FLTK\" was never defined.
+ as_fn_error $? "conditional \"USE_FLTK\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_WX_TRUE}" && test -z "${USE_WX_FALSE}"; then
- as_fn_error "conditional \"USE_WX\" was never defined.
+ as_fn_error $? "conditional \"USE_WX\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_QT_TRUE}" && test -z "${USE_QT_FALSE}"; then
- as_fn_error "conditional \"USE_QT\" was never defined.
+ as_fn_error $? "conditional \"USE_QT\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_PYTHON_TRUE}" && test -z "${USE_PYTHON_FALSE}"; then
- as_fn_error "conditional \"USE_PYTHON\" was never defined.
+ as_fn_error $? "conditional \"USE_PYTHON\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_OCTAVE_TRUE}" && test -z "${USE_OCTAVE_FALSE}"; then
- as_fn_error "conditional \"USE_OCTAVE\" was never defined.
+ as_fn_error $? "conditional \"USE_OCTAVE\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_TESTIO_TRUE}" && test -z "${USE_TESTIO_FALSE}"; then
- as_fn_error "conditional \"USE_TESTIO\" was never defined.
+ as_fn_error $? "conditional \"USE_TESTIO\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_DOCS_TRUE}" && test -z "${USE_DOCS_FALSE}"; then
- as_fn_error "conditional \"USE_DOCS\" was never defined.
+ as_fn_error $? "conditional \"USE_DOCS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
@@ -17179,19 +17304,19 @@ export LANGUAGE
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-# as_fn_error ERROR [LINENO LOG_FD]
-# ---------------------------------
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with status $?, using 1 if that was 0.
+# script with STATUS, using 1 if that was 0.
as_fn_error ()
{
- as_status=$?; test $as_status -eq 0 && as_status=1
- if test "$3"; then
- as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
- $as_echo "$as_me: error: $1" >&2
+ $as_echo "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
@@ -17387,7 +17512,7 @@ $as_echo X"$as_dir" |
test -d "$as_dir" && break
done
test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
} # as_fn_mkdir_p
@@ -17441,7 +17566,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# values after options handling.
ac_log="
This file was extended by mathgl $as_me 1.10, which was
-generated by GNU Autoconf 2.64. Invocation command line was
+generated by GNU Autoconf 2.67. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -17481,6 +17606,7 @@ Usage: $0 [OPTION]... [TAG]...
-h, --help print this help, then exit
-V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
-q, --quiet, --silent
do not print progress messages
-d, --debug don't remove temporary files
@@ -17503,12 +17629,13 @@ Report bugs to <mathgl.abalakin at gmail.com>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
mathgl config.status 1.10
-configured by $0, generated by GNU Autoconf 2.64,
- with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+configured by $0, generated by GNU Autoconf 2.67,
+ with options \\"\$ac_cs_config\\"
-Copyright (C) 2009 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -17526,11 +17653,16 @@ ac_need_defaults=:
while test $# != 0
do
case $1 in
- --*=*)
+ --*=?*)
ac_option=`expr "X$1" : 'X\([^=]*\)='`
ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
ac_shift=:
;;
+ --*=)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=
+ ac_shift=:
+ ;;
*)
ac_option=$1
ac_optarg=$2
@@ -17544,12 +17676,15 @@ do
ac_cs_recheck=: ;;
--version | --versio | --versi | --vers | --ver | --ve | --v | -V )
$as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
--debug | --debu | --deb | --de | --d | -d )
debug=: ;;
--file | --fil | --fi | --f )
$ac_shift
case $ac_optarg in
*\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ '') as_fn_error $? "missing file argument" ;;
esac
as_fn_append CONFIG_FILES " '$ac_optarg'"
ac_need_defaults=false;;
@@ -17562,7 +17697,7 @@ do
ac_need_defaults=false;;
--he | --h)
# Conflict between --help and --header
- as_fn_error "ambiguous option: \`$1'
+ as_fn_error $? "ambiguous option: \`$1'
Try \`$0 --help' for more information.";;
--help | --hel | -h )
$as_echo "$ac_cs_usage"; exit ;;
@@ -17571,7 +17706,7 @@ Try \`$0 --help' for more information.";;
ac_cs_silent=: ;;
# This is an error.
- -*) as_fn_error "unrecognized option: \`$1'
+ -*) as_fn_error $? "unrecognized option: \`$1'
Try \`$0 --help' for more information." ;;
*) as_fn_append ac_config_targets " $1"
@@ -17990,7 +18125,7 @@ do
"utils/Makefile") CONFIG_FILES="$CONFIG_FILES utils/Makefile" ;;
"widgets/Makefile") CONFIG_FILES="$CONFIG_FILES widgets/Makefile" ;;
- *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;;
esac
done
@@ -18028,7 +18163,7 @@ $debug ||
{
tmp=./conf$$-$RANDOM
(umask 077 && mkdir "$tmp")
-} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
# Set up the scripts for CONFIG_FILES section.
# No need to generate them if there are no CONFIG_FILES.
@@ -18045,7 +18180,7 @@ if test "x$ac_cr" = x; then
fi
ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
- ac_cs_awk_cr='\r'
+ ac_cs_awk_cr='\\r'
else
ac_cs_awk_cr=$ac_cr
fi
@@ -18059,18 +18194,18 @@ _ACEOF
echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
echo "_ACEOF"
} >conf$$subs.sh ||
- as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
. ./conf$$subs.sh ||
- as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
if test $ac_delim_n = $ac_delim_num; then
break
elif $ac_last_try; then
- as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
else
ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
fi
@@ -18092,7 +18227,7 @@ s/'"$ac_delim"'$//
t delim
:nl
h
-s/\(.\{148\}\).*/\1/
+s/\(.\{148\}\)..*/\1/
t more1
s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
p
@@ -18106,7 +18241,7 @@ s/.\{148\}//
t nl
:delim
h
-s/\(.\{148\}\).*/\1/
+s/\(.\{148\}\)..*/\1/
t more2
s/["\\]/\\&/g; s/^/"/; s/$/"/
p
@@ -18159,20 +18294,28 @@ if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
else
cat
fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
- || as_fn_error "could not setup config files machinery" "$LINENO" 5
+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
_ACEOF
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
# trailing colons and then remove the whole line if VPATH becomes empty
# (actually we leave an empty line to preserve line numbers).
if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[ ]*\):*/\1/
+ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
+h
+s///
+s/^/:/
+s/[ ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
s/:*$//
+x
+s/\(=[ ]*\).*/\1/
+G
+s/\n//
s/^[^=]*=[ ]*$//
}'
fi
@@ -18200,7 +18343,7 @@ for ac_last_try in false false :; do
if test -z "$ac_t"; then
break
elif $ac_last_try; then
- as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5
+ as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
else
ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
fi
@@ -18285,7 +18428,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
_ACAWK
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
- as_fn_error "could not setup config headers machinery" "$LINENO" 5
+ as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
fi # test -n "$CONFIG_HEADERS"
@@ -18298,7 +18441,7 @@ do
esac
case $ac_mode$ac_tag in
:[FHL]*:*);;
- :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;;
:[FH]-) ac_tag=-:-;;
:[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
esac
@@ -18326,7 +18469,7 @@ do
[\\/$]*) false;;
*) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
esac ||
- as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;;
esac
case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
as_fn_append ac_file_inputs " '$ac_f'"
@@ -18353,7 +18496,7 @@ $as_echo "$as_me: creating $ac_file" >&6;}
case $ac_tag in
*:-:* | *:-) cat >"$tmp/stdin" \
- || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
esac
;;
esac
@@ -18490,22 +18633,22 @@ s&@MKDIR_P@&$ac_MKDIR_P&;t t
$ac_datarootdir_hack
"
eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
- || as_fn_error "could not create $ac_file" "$LINENO" 5
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
{ ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
{ ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined." >&5
+which seems to be undefined. Please make sure it is defined" >&5
$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined." >&2;}
+which seems to be undefined. Please make sure it is defined" >&2;}
rm -f "$tmp/stdin"
case $ac_file in
-) cat "$tmp/out" && rm -f "$tmp/out";;
*) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
esac \
- || as_fn_error "could not create $ac_file" "$LINENO" 5
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
;;
:H)
#
@@ -18516,19 +18659,19 @@ which seems to be undefined. Please make sure it is defined." >&2;}
$as_echo "/* $configure_input */" \
&& eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
} >"$tmp/config.h" \
- || as_fn_error "could not create $ac_file" "$LINENO" 5
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
$as_echo "$as_me: $ac_file is unchanged" >&6;}
else
rm -f "$ac_file"
mv "$tmp/config.h" "$ac_file" \
- || as_fn_error "could not create $ac_file" "$LINENO" 5
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
fi
else
$as_echo "/* $configure_input */" \
&& eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
- || as_fn_error "could not create -" "$LINENO" 5
+ || as_fn_error $? "could not create -" "$LINENO" 5
fi
# Compute "$ac_file"'s index in $config_headers.
_am_arg="$ac_file"
@@ -19486,7 +19629,7 @@ _ACEOF
ac_clean_files=$ac_clean_files_save
test $ac_write_fail = 0 ||
- as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
+ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
# configure is writing to config.log, and then calls config.status.
@@ -19507,7 +19650,7 @@ if test "$no_create" != yes; then
exec 5>>config.log
# Use ||, not &&, to avoid exiting from the if with $? = 1, which
# would make configure fail if this is the last instruction.
- $ac_cs_success || as_fn_exit $?
+ $ac_cs_success || as_fn_exit 1
fi
if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
diff --git a/configure.ac b/configure.ac
index ff6a500..b4afae5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,8 @@
AC_INIT([mathgl], [1.10], [mathgl.abalakin at gmail.com])
+MGL_RELEASE=1.10
+AC_SUBST(MGL_RELEASE)
+
AC_CONFIG_MACRO_DIR([config])
AC_CONFIG_AUX_DIR(config)
AC_CONFIG_SRCDIR(mgl)
@@ -177,6 +180,21 @@ AC_CHECK_LIB([hdf5], [main], [(test x$all = xtrue || test x$hdf5 = xtrue || test
[(test x$all = xtrue || test x$hdf5 = xtrue || test x$hdf5_18 = xtrue) && echo "Please install hdf5 library" && exit])
AM_CONDITIONAL(USE_HDF5, (test x$all = xtrue || test x$hdf5 = xtrue || test x$hdf5_18 = xtrue))
+
+AC_ARG_ENABLE(hdf4,
+[ --enable-hdf4 Turn on hdf4],
+[case "${enableval}" in
+ yes) hdf4=true ;;
+ no) hdf4=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --enable-hdf4) ;;
+esac],[hdf4=false])
+AC_CHECK_HEADER(hdf/mfhdf.h,[(test x$all = xtrue || test x$hdf4 = xtrue) && HDF4_FLAGS=-DHAVE_HDF4 ],
+ [(test x$all = xtrue || test x$hdf4 = xtrue) && echo "Please install hdf4 headers" && exit])
+ AC_SUBST(HDF4_FLAGS)
+AC_CHECK_LIB([df], [main], [(test x$all = xtrue || test x$hdf4 = xtrue) && HDF4_LIBS="-lmfhdf -ldf" AC_SUBST(HDF4_LIBS)],
+ [(test x$all = xtrue || test x$hdf4 = xtrue) && echo "Please install hdf4 library" && exit])
+AM_CONDITIONAL(USE_HDF4, (test x$all = xtrue || test x$hdf4 = xtrue))
+
AC_ARG_ENABLE(gif,
[ --enable-gif Turn on gif],
[case "${enableval}" in
diff --git a/emblem.mgl b/emblem.mgl
new file mode 100644
index 0000000..dcc45ad
--- /dev/null
+++ b/emblem.mgl
@@ -0,0 +1,39 @@
+setsize 1000 500
+text 0.75 0.8 'MathGL' 'ia' -5
+text 0.05 0.15 'library\n for scientific graphics' 'Lia' -3
+#rect 0.05 0.9 2 1.5 1.34 2 'w'
+xtick -3:ytick -3:ztick -3
+
+stickplot 3 0 60 20:box
+new y 50: fill y '-cos(pi*x-pi/4)'
+new x 50: fill x '-sin(pi*x-pi/4)'
+new z 50: fill z '2*x^2-1'
+
+area x y z 'lG'
+plot x y z 'B2s'
+
+stickplot 3 1 60 20:box
+
+new aa 50 40
+modify aa '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+mirror aa 'y'
+light on :alpha on
+surf aa 'BbcyrR';alpha 0.8
+cont aa 'y'
+
+stickplot 3 2 60 20:box
+rotate 0 20
+
+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)'
+
+alpha on:light off
+cloud a 'wyrRk'
+
+stop
+cut 0 -1 -1 1 0 1.1
+surf3 a -1 'BbcyrR'
+contf3 a 'x' -1
+contf3 a 'y' -1
+contf3 a 'z' 0
+contf3 a 'z' 39
diff --git a/examples/Makefile.am b/examples/Makefile.am
index 30a9608..1385c30 100644
--- a/examples/Makefile.am
+++ b/examples/Makefile.am
@@ -8,24 +8,24 @@ mgl_example_LDADD = $(top_builddir)/mgl/libmgl.la
if USE_FLTK
bin_PROGRAMS += mgl_fltk_example
mgl_fltk_example_SOURCES = wnd_samples.cpp fltk_example.cpp
-mgl_fltk_example_LDADD = $(FLTK_LIBS) $(top_builddir)/widgets/libmgl-fltk.la
+mgl_fltk_example_LDADD = $(FLTK_LIBS) $(top_builddir)/widgets/libmgl-fltk.la $(top_builddir)/mgl/libmgl.la
mgl_fltk_example_CXXFLAGS = $(FLTK_FLAGS) $(AM_CXXFLAGS)
check_PROGRAMS += test
test_SOURCES = wnd_samples.cpp main.cpp
-test_LDADD = $(FLTK_LIBS) $(top_builddir)/widgets/libmgl-fltk.la
+test_LDADD = $(FLTK_LIBS) $(top_builddir)/widgets/libmgl-fltk.la $(top_builddir)/mgl/libmgl.la
test_CXXFLAGS = $(FLTK_FLAGS) $(AM_CXXFLAGS)
endif
if USE_GLUT
bin_PROGRAMS += mgl_glut_example
mgl_glut_example_SOURCES = wnd_samples.cpp glut_example.cpp
-mgl_glut_example_LDADD = $(top_builddir)/widgets/libmgl-glut.la
+mgl_glut_example_LDADD = $(top_builddir)/widgets/libmgl-glut.la $(top_builddir)/mgl/libmgl.la
endif
if USE_WX
bin_PROGRAMS += mgl_wx_example
-mgl_wx_example_LDADD = $(WX_LIBS) $(top_builddir)/widgets/libmgl-wx.la
+mgl_wx_example_LDADD = $(WX_LIBS) $(top_builddir)/widgets/libmgl-wx.la $(top_builddir)/mgl/libmgl.la
mgl_wx_example_CXXFLAGS = $(WX_FLAGS) $(AM_CXXFLAGS)
mgl_wx_example_SOURCES = wnd_samples.cpp wx_example.cpp
endif
@@ -36,7 +36,7 @@ ACLOCAL_AMFLAGS = -I $(top_srcdir)/config/
bin_PROGRAMS += mgl_qt_example
mgl_qt_example_SOURCES = wnd_samples.cpp $(top_builddir)/include/mgl/mgl_qt.moc.cpp $(top_srcdir)/include/mgl/mgl_qt.h qt_example.cpp
-mgl_qt_example_LDADD = $(QT_LIBS) $(top_builddir)/widgets/libmgl-qt.la
+mgl_qt_example_LDADD = $(QT_LIBS) $(top_builddir)/widgets/libmgl-qt.la $(top_builddir)/mgl/libmgl.la
mgl_qt_example_LDFLAGS = $(QT_LDFLAGS)
mgl_qt_example_CPPFLAGS = $(QT_CPPFLAGS) $(AM_CPPFLAGS)
mgl_qt_example_CXXFLAGS = $(QT_CXXFLAGS) $(AM_CXXFLAGS)
diff --git a/examples/Makefile.in b/examples/Makefile.in
index 719f08a..0979b41 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -90,7 +90,8 @@ am__mgl_fltk_example_SOURCES_DIST = wnd_samples.cpp fltk_example.cpp
mgl_fltk_example_OBJECTS = $(am_mgl_fltk_example_OBJECTS)
am__DEPENDENCIES_1 =
@USE_FLTK_TRUE at mgl_fltk_example_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- at USE_FLTK_TRUE@ $(top_builddir)/widgets/libmgl-fltk.la
+ at USE_FLTK_TRUE@ $(top_builddir)/widgets/libmgl-fltk.la \
+ at USE_FLTK_TRUE@ $(top_builddir)/mgl/libmgl.la
mgl_fltk_example_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CXXLD) \
$(mgl_fltk_example_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -100,7 +101,8 @@ am__mgl_glut_example_SOURCES_DIST = wnd_samples.cpp glut_example.cpp
@USE_GLUT_TRUE@ glut_example.$(OBJEXT)
mgl_glut_example_OBJECTS = $(am_mgl_glut_example_OBJECTS)
@USE_GLUT_TRUE at mgl_glut_example_DEPENDENCIES = \
- at USE_GLUT_TRUE@ $(top_builddir)/widgets/libmgl-glut.la
+ at USE_GLUT_TRUE@ $(top_builddir)/widgets/libmgl-glut.la \
+ at USE_GLUT_TRUE@ $(top_builddir)/mgl/libmgl.la
am__mgl_qt_example_SOURCES_DIST = wnd_samples.cpp \
$(top_builddir)/include/mgl/mgl_qt.moc.cpp \
$(top_srcdir)/include/mgl/mgl_qt.h qt_example.cpp
@@ -110,7 +112,8 @@ am__mgl_qt_example_SOURCES_DIST = wnd_samples.cpp \
@USE_QT_TRUE@ mgl_qt_example-qt_example.$(OBJEXT)
mgl_qt_example_OBJECTS = $(am_mgl_qt_example_OBJECTS)
@USE_QT_TRUE at mgl_qt_example_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- at USE_QT_TRUE@ $(top_builddir)/widgets/libmgl-qt.la
+ at USE_QT_TRUE@ $(top_builddir)/widgets/libmgl-qt.la \
+ at USE_QT_TRUE@ $(top_builddir)/mgl/libmgl.la
mgl_qt_example_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CXXLD) \
$(mgl_qt_example_CXXFLAGS) $(CXXFLAGS) \
@@ -121,7 +124,8 @@ am__mgl_wx_example_SOURCES_DIST = wnd_samples.cpp wx_example.cpp
@USE_WX_TRUE@ mgl_wx_example-wx_example.$(OBJEXT)
mgl_wx_example_OBJECTS = $(am_mgl_wx_example_OBJECTS)
@USE_WX_TRUE at mgl_wx_example_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- at USE_WX_TRUE@ $(top_builddir)/widgets/libmgl-wx.la
+ at USE_WX_TRUE@ $(top_builddir)/widgets/libmgl-wx.la \
+ at USE_WX_TRUE@ $(top_builddir)/mgl/libmgl.la
mgl_wx_example_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CXXLD) \
$(mgl_wx_example_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -131,7 +135,8 @@ am__test_SOURCES_DIST = wnd_samples.cpp main.cpp
@USE_FLTK_TRUE@ test-main.$(OBJEXT)
test_OBJECTS = $(am_test_OBJECTS)
@USE_FLTK_TRUE at test_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- at USE_FLTK_TRUE@ $(top_builddir)/widgets/libmgl-fltk.la
+ at USE_FLTK_TRUE@ $(top_builddir)/widgets/libmgl-fltk.la \
+ at USE_FLTK_TRUE@ $(top_builddir)/mgl/libmgl.la
test_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=link $(CXXLD) $(test_CXXFLAGS) $(CXXFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
@@ -210,6 +215,8 @@ GREP = @GREP@
GSL_FLAGS = @GSL_FLAGS@
GSL_LIBS = @GSL_LIBS@
HAVE_SWIG = @HAVE_SWIG@
+HDF4_FLAGS = @HDF4_FLAGS@
+HDF4_LIBS = @HDF4_LIBS@
HDF5_FLAGS = @HDF5_FLAGS@
HDF5_LIBS = @HDF5_LIBS@
INSTALL = @INSTALL@
@@ -230,6 +237,7 @@ LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MGL_AGE = @MGL_AGE@
MGL_CURRENT = @MGL_CURRENT@
+MGL_RELEASE = @MGL_RELEASE@
MGL_REVISION = @MGL_REVISION@
MKDIR_P = @MKDIR_P@
MOC = @MOC@
@@ -342,14 +350,14 @@ top_srcdir = @top_srcdir@
mgl_example_SOURCES = wnd_samples.cpp full_test.cpp
mgl_example_LDADD = $(top_builddir)/mgl/libmgl.la
@USE_FLTK_TRUE at mgl_fltk_example_SOURCES = wnd_samples.cpp fltk_example.cpp
- at USE_FLTK_TRUE@mgl_fltk_example_LDADD = $(FLTK_LIBS) $(top_builddir)/widgets/libmgl-fltk.la
+ at USE_FLTK_TRUE@mgl_fltk_example_LDADD = $(FLTK_LIBS) $(top_builddir)/widgets/libmgl-fltk.la $(top_builddir)/mgl/libmgl.la
@USE_FLTK_TRUE at mgl_fltk_example_CXXFLAGS = $(FLTK_FLAGS) $(AM_CXXFLAGS)
@USE_FLTK_TRUE at test_SOURCES = wnd_samples.cpp main.cpp
- at USE_FLTK_TRUE@test_LDADD = $(FLTK_LIBS) $(top_builddir)/widgets/libmgl-fltk.la
+ at USE_FLTK_TRUE@test_LDADD = $(FLTK_LIBS) $(top_builddir)/widgets/libmgl-fltk.la $(top_builddir)/mgl/libmgl.la
@USE_FLTK_TRUE at test_CXXFLAGS = $(FLTK_FLAGS) $(AM_CXXFLAGS)
@USE_GLUT_TRUE at mgl_glut_example_SOURCES = wnd_samples.cpp glut_example.cpp
- at USE_GLUT_TRUE@mgl_glut_example_LDADD = $(top_builddir)/widgets/libmgl-glut.la
- at USE_WX_TRUE@mgl_wx_example_LDADD = $(WX_LIBS) $(top_builddir)/widgets/libmgl-wx.la
+ at USE_GLUT_TRUE@mgl_glut_example_LDADD = $(top_builddir)/widgets/libmgl-glut.la $(top_builddir)/mgl/libmgl.la
+ at USE_WX_TRUE@mgl_wx_example_LDADD = $(WX_LIBS) $(top_builddir)/widgets/libmgl-wx.la $(top_builddir)/mgl/libmgl.la
@USE_WX_TRUE at mgl_wx_example_CXXFLAGS = $(WX_FLAGS) $(AM_CXXFLAGS)
@USE_WX_TRUE at mgl_wx_example_SOURCES = wnd_samples.cpp wx_example.cpp
@@ -361,7 +369,7 @@ mgl_example_LDADD = $(top_builddir)/mgl/libmgl.la
@USE_QT_TRUE at DISTCLEANFILES = $(BUILT_SOURCES)
@USE_QT_TRUE at ACLOCAL_AMFLAGS = -I $(top_srcdir)/config/
@USE_QT_TRUE at mgl_qt_example_SOURCES = wnd_samples.cpp $(top_builddir)/include/mgl/mgl_qt.moc.cpp $(top_srcdir)/include/mgl/mgl_qt.h qt_example.cpp
- at USE_QT_TRUE@mgl_qt_example_LDADD = $(QT_LIBS) $(top_builddir)/widgets/libmgl-qt.la
+ at USE_QT_TRUE@mgl_qt_example_LDADD = $(QT_LIBS) $(top_builddir)/widgets/libmgl-qt.la $(top_builddir)/mgl/libmgl.la
@USE_QT_TRUE at mgl_qt_example_LDFLAGS = $(QT_LDFLAGS)
@USE_QT_TRUE at mgl_qt_example_CPPFLAGS = $(QT_CPPFLAGS) $(AM_CPPFLAGS)
@USE_QT_TRUE at mgl_qt_example_CXXFLAGS = $(QT_CXXFLAGS) $(AM_CXXFLAGS)
diff --git a/examples/fltk_example.cpp b/examples/fltk_example.cpp
index 53a6686..9a54ac7 100644
--- a/examples/fltk_example.cpp
+++ b/examples/fltk_example.cpp
@@ -27,8 +27,32 @@ int sample_2(mglGraph *gr, void *);
int sample_3(mglGraph *gr, void *);
int sample_d(mglGraph *gr, void *);
//-----------------------------------------------------------------------------
+#include <pthread.h>
+#include <unistd.h>
+mglPoint pnt; // some global variable for changable data
+void *mgl_fltk_tmp(void *) { mglFlRun(); return 0; }
+//-----------------------------------------------------------------------------
int main(int argc,char **argv)
-{
+{
+#ifdef PTHREAD_SAMPLE
+ mglGraphFLTK gr;
+ gr.Window(argc,argv,NULL,"test",0,0); // create window
+ gr.ClfOnUpdate = false;
+ static pthread_t tmp;
+ pthread_create(&tmp, 0, mgl_fltk_tmp, 0);
+ pthread_detach(tmp); // run window handling in the separate thread
+ for(int i=0;i<10;i++) // do calculation
+ {
+ sleep(2); // which can be very long
+ pnt = mglPoint(2*mgl_rnd()-1,2*mgl_rnd()-1);
+ gr.Clf(); // make new drawing
+ gr.Line(mglPoint(),pnt,"Ar2");
+ char str[10] = "i=0"; str[3] = '0'+i;
+ gr.Text(mglPoint(),"");
+ gr.Update(); // update window
+ }
+ return 0; // finish calculations and close the window*/
+#else
mglGraphFLTK gr;
char key = 0;
if(argc>1 && argv[1][0]!='-') key = argv[1][0];
@@ -42,6 +66,7 @@ int main(int argc,char **argv)
case 't': gr.Window(argc,argv,test,"Testing"); break;
default: gr.Window(argc,argv,sample,"Example of molecules"); break;
}
- return mglFlRun();
+ return mglFlRun();
+#endif
}
//-----------------------------------------------------------------------------
diff --git a/examples/full_test.cpp b/examples/full_test.cpp
index 14c225a..6fb97d5 100644
--- a/examples/full_test.cpp
+++ b/examples/full_test.cpp
@@ -17,6 +17,7 @@
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
+#include <wchar.h>
#include <time.h>
#include <locale.h>
#include <string.h>
@@ -29,12 +30,141 @@
//#include <mgl/mgl_w.h>
//-----------------------------------------------------------------------------
#include "mgl/mgl_parse.h"
+extern mglTeXsymb mgl_tex_symb[];
int test(mglGraphAB *gr)
{
+ int N[5] = {0, 28, 52, 73, 85};
+ char text[256];
+ float tmin = -900, tmax = -400, dt = 100;
+ double amp[5] = {1., 1.62, 3.98, 5.53, 8.54};
+ double z0 = 0.031;//0.063
+ gr->SetSize(2400,800);
+ gr->Clf(); gr->RotatedText = false; gr->TuneTicks = false;
+ gr->InPlot(0,0.3,0.15,1);
+ gr->Axis(mglPoint(tmin,-1,-0.65),mglPoint(tmax,1,1),mglPoint(tmin,0,0));
+ gr->CAxis(0,1); gr->Light(true); gr->Alpha(true); gr->AlphaDef = 0.6;
+ gr->Rotate(75-7*1*0-5*1,365);
+ sprintf(text,"\\i z = %g z_R",N[0]*z0);
+ gr->Puts(mglPoint(0.5*(tmin+tmax),-1,-0.8),text,"rC");
+ sprintf(text,"\\i I_{max}=%g",amp[0]);
+ gr->Puts(mglPoint(0.5*(tmax+tmin),0,1.1),text,"rC");
+ gr->Light(false); gr->Alpha(false);
+ gr->Line(mglPoint(tmin,-1,0),mglPoint(tmax,-1,0),"r5");
+ gr->dz = 0.2; gr->dx = dt;
+ gr->Min.z = 0;
+ //gr->Axis("_yz");
+ float size = gr->FontSize; gr->FontSize = 4;
+ gr->Axis("_y"); gr->Axis("z");
+ gr->Org = mglPoint(tmin,-1,0); gr->Axis("x"); gr->FontSize = size;
+ gr->Min.z = -0.65;
+ gr->Org = mglPoint(tmin,0,-0.65); gr->Axis("_xy");
+ //------------------------------------------------------------------------------------
+ //-----------------------------ÐÑоÑой гÑаÑик-----------------------------------------
+ gr->InPlot(0.172,0.472,0.135,0.985);
+ gr->Axis(mglPoint(tmin,-1,-0.65),mglPoint(tmax,1,1),mglPoint(tmin,0,0));
+ gr->CAxis(0,1); gr->Light(true); gr->Alpha(true); gr->AlphaDef = 0.6;
+ gr->Rotate(75-7*1*0-5*1,365);
+ sprintf(text,"\\i z = %g z_R",N[1]*z0);
+ gr->Puts(mglPoint(0.5*(tmin+tmax),-1,-0.8),text,"rC");
+ sprintf(text,"\\i I_{max}=%g",amp[1]);
+ gr->Puts(mglPoint(0.5*(tmax+tmin),0,1.1),text,"rC");
+ gr->Light(false); gr->Alpha(false);
+ gr->Line(mglPoint(tmin,-1,0),mglPoint(tmax,-1,0),"r5");
+ gr->Min.z = 0;
+ gr->Axis("_xyz");
+ gr->Min.z = -0.65;
+ gr->Org = mglPoint(tmin,0,-0.65); gr->Axis("_xy");
+/* //------------------------------------------------------------------------------------
+ //-----------------------------ТÑеÑий гÑаÑик-----------------------------------------
+ u->ReadHDF(_sprintf("%d.h5",N[2]),"/Real(E)"); u->Transpose();
+ intensity( Nt, Nr, k, w0, u->a ); (V+2)->Set(u->a,Nt,Nr);
+ std::cout<<"Max = "<<V[2].Maximal()/max<<std::endl;
+ (V+2)->Norm(0,1); (V+5)->Set((V+2)->a,Nt,1);
+ gr->InPlot(0.344,0.644,0.12,0.97);
+ gr->Axis(mglPoint(tmin,-1,-0.65),mglPoint(tmax,1,1),mglPoint(tmin,0,0));
+ gr->CAxis(0,1); gr->Light(true); gr->Alpha(true); gr->AlphaDef = 0.6;
+ gr->Rotate(75-7*1*0-5*1,365);
+ sprintf(text,"\\i z = %g z_R",N[2]*z0);
+ gr->Puts(mglPoint(0.5*(tmin+tmax),-1,-0.8),text,"rC");
+ sprintf(text,"\\i I_{max}=%g",amp[2]);
+ gr->Puts(mglPoint(0.5*(tmax+tmin),0,1.1),text,"rC");
+ gr->Surf(V[0],V[1],V[2],"wyrRk"); gr->Surf(V[0],V[3],V[2],"wyrRk");
+ gr->Plot(V[0],V[4],V[5],"b3");
+ gr->Cont(V[0],V[1],V[2],"wyrRk",20); gr->Cont(V[0],V[3],V[2],"wyrRk",20);
+ gr->Light(false); gr->Alpha(false);
+ (V+2)->Norm(0,1);
+ gr->Dens(V[0],V[1],V[2],"wyrRk"); gr->Dens(V[0],V[3],V[2],"wyrRk");
+ gr->Line(mglPoint(tmin,-1,0),mglPoint(tmax,-1,0),"r5");
+ gr->Min.z = 0;
+ gr->Axis("_xyz");
+ gr->Min.z = -0.65;
+ gr->Org = mglPoint(tmin,0,-0.65); gr->Axis("_xy");
+ //------------------------------------------------------------------------------------
+ //-----------------------------ЧеÑвеÑÑÑй гÑаÑик-----------------------------------------
+ u->ReadHDF(_sprintf("%d.h5",N[3]),"/Real(E)"); u->Transpose();
+ intensity( Nt, Nr, k, w0, u->a ); (V+2)->Set(u->a,Nt,Nr);
+ std::cout<<"Max = "<<V[2].Maximal()/max<<std::endl;
+ (V+2)->Norm(0,1); (V+5)->Set((V+2)->a,Nt,1);
+ gr->InPlot(0.516,0.816,0.105,0.955);
+ gr->Axis(mglPoint(tmin,-1,-0.65),mglPoint(tmax,1,1),mglPoint(tmin,0,0));
+ gr->CAxis(0,1); gr->Light(true); gr->Alpha(true); gr->AlphaDef = 0.6;
+ gr->Rotate(75-7*1*0-5*1,365);
+ sprintf(text,"\\i z = %g z_R",N[3]*z0);
+ gr->Puts(mglPoint(0.5*(tmin+tmax),-1,-0.8),text,"rC");
+ sprintf(text,"\\i I_{max}=%g",amp[3]);
+ gr->Puts(mglPoint(0.5*(tmax+tmin),0,1.1),text,"rC");
+ gr->Surf(V[0],V[1],V[2],"wyrRk"); gr->Surf(V[0],V[3],V[2],"wyrRk");
+ gr->Plot(V[0],V[4],V[5],"b3");
+ gr->Cont(V[0],V[1],V[2],"wyrRk",20); gr->Cont(V[0],V[3],V[2],"wyrRk",20);
+ gr->Light(false); gr->Alpha(false);
+ (V+2)->Norm(0,1);
+ gr->Dens(V[0],V[1],V[2],"wyrRk"); gr->Dens(V[0],V[3],V[2],"wyrRk");
+ gr->Line(mglPoint(tmin,-1,0),mglPoint(tmax,-1,0),"r5");
+ gr->Min.z = 0;
+ gr->Axis("_xyz");
+ gr->Min.z = -0.65;
+ gr->Org = mglPoint(tmin,0,-0.65); gr->Axis("_xy");
+ //------------------------------------------------------------------------------------
+ //-----------------------------ÐÑÑÑй гÑаÑик-----------------------------------------
+ u->ReadHDF(_sprintf("%d.h5",N[4]),"/Real(E)"); u->Transpose();
+ intensity( Nt, Nr, k, w0, u->a ); (V+2)->Set(u->a,Nt,Nr);
+ std::cout<<"Max = "<<V[2].Maximal()/max<<std::endl;
+ (V+2)->Norm(0,1); (V+5)->Set((V+2)->a,Nt,1);
+ gr->InPlot(0.688,0.988,0.09,0.94);
+ gr->Axis(mglPoint(tmin,-1,-0.65),mglPoint(tmax,1,1),mglPoint(tmin,0,0));
+ gr->CAxis(0,1); gr->Light(true); gr->Alpha(true); gr->AlphaDef = 0.6;
+ gr->Rotate(75-7*1*0-5*1,365);
+ sprintf(text,"\\i z = %g z_R",N[4]*z0);
+ gr->Puts(mglPoint(0.5*(tmin+tmax),-1,-0.8),text,"rC");
+ sprintf(text,"\\i I_{max}=%g",amp[4]);
+ gr->Puts(mglPoint(0.5*(tmax+tmin),0,1.1),text,"rC");
+ gr->Surf(V[0],V[1],V[2],"wyrRk"); gr->Surf(V[0],V[3],V[2],"wyrRk");
+ gr->Plot(V[0],V[4],V[5],"b3");
+ gr->Cont(V[0],V[1],V[2],"wyrRk",20); gr->Cont(V[0],V[3],V[2],"wyrRk",20);
+ gr->Light(false); gr->Alpha(false);
+ (V+2)->Norm(0,1);
+ gr->Dens(V[0],V[1],V[2],"wyrRk"); gr->Dens(V[0],V[3],V[2],"wyrRk");
+ gr->Line(mglPoint(tmin,-1,0),mglPoint(tmax,-1,0),"r5A");
+ gr->Puts(mglPoint(1.1*tmax,-1,-0.15),"\\tau","rR",-1.6);
+ gr->Puts(mglPoint(0.9*tmax,0,-0.1),"\\rho","rR",-1.6);
+ gr->Min.z = 0;
+ gr->Axis("_xyz");
+ gr->Min.z = -0.65;
+ gr->Org = mglPoint(tmin,0,-0.65); gr->Axis("_xy");
+*/
+ return 0;
+
+
+
+
+
+
+
+
mglParse par;
par.AllowSetSize = true;
FILE *fp=fopen("test.mgl","rt");
- par.Execute(gr,fp);
+ par.Execute(gr,fp,true);
fclose(fp);
/* gr->SetDrawReg(2,2,1);
gr->Rotate(40,60);
@@ -227,84 +357,95 @@ void smgl_map(mglGraph *gr) // example of mapping
gr->Map(a, b, "brgk", 0, false);
}
//-----------------------------------------------------------------------------
+void smgl_color_schemes(mglGraph *gr) // Color table
+{
+ mglData a(256,2); a.Fill(-1,1);
+ gr->SubPlot(2,10,0,0.2); gr->Dens(a,"kw");
+ gr->Puts(mglPoint(-1.4, -0.3), "kw", "C", -8);
+ gr->SubPlot(2,10,1,0.2); gr->Dens(a,"wk");
+ gr->Puts(mglPoint(-1.4, -0.3), "wk", "C", -8);
+ gr->SubPlot(2,10,2,0.2); gr->Dens(a,"kHCcw");
+ gr->Puts(mglPoint(-1.4, -0.3), "kHCcw", "C", -8);
+ gr->SubPlot(2,10,3,0.2); gr->Dens(a,"kBbcw");
+ gr->Puts(mglPoint(-1.4, -0.3), "kBbcw", "C", -8);
+ gr->SubPlot(2,10,4,0.2); gr->Dens(a,"kRryw");
+ gr->Puts(mglPoint(-1.4, -0.3), "kRryw", "C", -8);
+ gr->SubPlot(2,10,5,0.2); gr->Dens(a,"kGgew");
+ gr->Puts(mglPoint(-1.4, -0.3), "kGgew", "C", -8);
+ gr->SubPlot(2,10,6,0.2); gr->Dens(a,"BbwrR");
+ gr->Puts(mglPoint(-1.4, -0.3), "BbwrR", "C", -8);
+ gr->SubPlot(2,10,7,0.2); gr->Dens(a,"BbwgG");
+ gr->Puts(mglPoint(-1.4, -0.3), "BbwgG", "C", -8);
+ gr->SubPlot(2,10,8,0.2); gr->Dens(a,"GgwmM");
+ gr->Puts(mglPoint(-1.4, -0.3), "GgwmM", "C", -8);
+ gr->SubPlot(2,10,9,0.2); gr->Dens(a,"UuwqR");
+ gr->Puts(mglPoint(-1.4, -0.3), "UuwqR", "C", -8);
+ gr->SubPlot(2,10,10,0.2); gr->Dens(a,"QqwcC");
+ gr->Puts(mglPoint(-1.4, -0.3), "QqwcC", "C", -8);
+ gr->SubPlot(2,10,11,0.2); gr->Dens(a,"CcwyY");
+ gr->Puts(mglPoint(-1.4, -0.3), "CcwyY", "C", -8);
+ gr->SubPlot(2,10,12,0.2); gr->Dens(a,"bcwyr");
+ gr->Puts(mglPoint(-1.4, -0.3), "bcwyr", "C", -8);
+ gr->SubPlot(2,10,13,0.2); gr->Dens(a,"bwr");
+ gr->Puts(mglPoint(-1.4, -0.3), "bwr", "C", -8);
+ gr->SubPlot(2,10,14,0.2); gr->Dens(a,"BbcyrR");
+ gr->Puts(mglPoint(-1.4, -0.3), "BbcyrR", "C", -8);
+ gr->SubPlot(2,10,15,0.2); gr->Dens(a,"UbcyqR");
+ gr->Puts(mglPoint(-1.4, -0.3), "UbcyqR", "C", -8);
+ gr->SubPlot(2,10,16,0.2); gr->Dens(a,"BbcwyrR");
+ gr->Puts(mglPoint(-1.4, -0.3), "BbcwyrR", "C", -8);
+ gr->SubPlot(2,10,17,0.2); gr->Dens(a,"bcyr");
+ gr->Puts(mglPoint(-1.4, -0.3), "bcyr", "C", -8);
+ gr->SubPlot(2,10,18,0.2); gr->Dens(a,"BbcyrR|");
+ gr->Puts(mglPoint(-1.4, -0.3), "BbcyrR|", "C", -8);
+ gr->SubPlot(2,10,19,0.2); gr->Dens(a,"bgr");
+ gr->Puts(mglPoint(-1.4, -0.3), "bgr", "C", -8);
+}
+//-----------------------------------------------------------------------------
void smgl_colors(mglGraph *gr) // Color table
{
- gr->Face(mglPoint(-1, -1), mglPoint(-1, -0.7), mglPoint(-0.6,-1), mglPoint(-0.6,-0.7), "L#");
- gr->Puts(mglPoint(-0.8,-0.9, 0.01), "L", "C:w", -1.4);
- gr->Face(mglPoint(-0.6,-1), mglPoint(-0.6,-0.7), mglPoint(-0.2,-1), mglPoint(-0.2,-0.7), "E#");
- gr->Puts(mglPoint(-0.4,-0.9, 0.01), "E", "C:w", -1.4);
- gr->Face(mglPoint(-0.2,-1), mglPoint(-0.2,-0.7), mglPoint(0.2,-1), mglPoint(0.2,-0.7), "N#");
- gr->Puts(mglPoint(0, -0.9, 0.01), "N", "C:w", -1.4);
- gr->Face(mglPoint(0.2,-1), mglPoint(0.2,-0.7), mglPoint(0.6,-1), mglPoint(0.6,-0.7), "U#");
- gr->Puts(mglPoint(0.4,-0.9, 0.01), "U", "C:w", -1.4);
- gr->Face(mglPoint(0.6,-1), mglPoint(0.6,-0.7), mglPoint(1, -1), mglPoint(1, -0.7), "Q#");
- gr->Puts(mglPoint(0.8,-0.9, 0.01), "Q", "C:w", -1.4);
+ //#LENUQ
+ gr->FaceZ(-1, -1, 0, 0.4, 0.3, "L#"); gr->Puts(mglPoint(-0.8,-0.9), "L", "C:w", -1.4);
+ gr->FaceZ(-0.6, -1, 0, 0.4, 0.3, "E#"); gr->Puts(mglPoint(-0.4,-0.9), "E", "C:w", -1.4);
+ gr->FaceZ(-0.2, -1, 0, 0.4, 0.3, "N#"); gr->Puts(mglPoint(0, -0.9), "N", "C:w", -1.4);
+ gr->FaceZ(0.2, -1, 0, 0.4, 0.3, "U#"); gr->Puts(mglPoint(0.4,-0.9), "U", "C:w", -1.4);
+ gr->FaceZ(0.6, -1, 0, 0.4, 0.3, "Q#"); gr->Puts(mglPoint(0.8,-0.9), "Q", "C:w", -1.4);
//#lenuq
- gr->Face(mglPoint(-1, -0.7), mglPoint(-1, -0.4), mglPoint(-0.6,-0.7), mglPoint(-0.6,-0.4), "l#");
- gr->Puts(mglPoint(-0.8,-0.6, 0.01), "l", "C:k", -1.4);
- gr->Face(mglPoint(-0.6,-0.7), mglPoint(-0.6,-0.4), mglPoint(-0.2,-0.7), mglPoint(-0.2,-0.4), "e#");
- gr->Puts(mglPoint(-0.4,-0.6, 0.01), "e", "C:k", -1.4);
- gr->Face(mglPoint(-0.2,-0.7), mglPoint(-0.2,-0.4), mglPoint(0.2,-0.7), mglPoint(0.2,-0.4), "n#");
- gr->Puts(mglPoint(0, -0.6, 0.01), "n", "C:k", -1.4);
- gr->Face(mglPoint(0.2,-0.7), mglPoint(0.2,-0.4), mglPoint(0.6,-0.7), mglPoint(0.6,-0.4), "u#");
- gr->Puts(mglPoint(0.4,-0.6, 0.01), "u", "C:k", -1.4);
- gr->Face(mglPoint(0.6,-0.7), mglPoint(0.6,-0.4), mglPoint(1, -0.7), mglPoint(1, -0.4), "q#");
- gr->Puts(mglPoint(0.8,-0.6, 0.01), "q", "C:k", -1.4);
+ gr->FaceZ(-1, -0.7, 0, 0.4, 0.3, "l#"); gr->Puts(mglPoint(-0.8,-0.6), "l", "C:k", -1.4);
+ gr->FaceZ(-0.6, -0.7, 0, 0.4, 0.3, "e#"); gr->Puts(mglPoint(-0.4,-0.6), "e", "C:k", -1.4);
+ gr->FaceZ(-0.2, -0.7, 0, 0.4, 0.3, "n#"); gr->Puts(mglPoint(0, -0.6), "n", "C:k", -1.4);
+ gr->FaceZ(0.2, -0.7, 0, 0.4, 0.3, "u#"); gr->Puts(mglPoint(0.4,-0.6), "u", "C:k", -1.4);
+ gr->FaceZ(0.6, -0.7, 0, 0.4, 0.3, "q#"); gr->Puts(mglPoint(0.8,-0.6), "q", "C:k", -1.4);
//#CMYkP
- gr->Face(mglPoint(-1, -0.4), mglPoint(-1, -0.1), mglPoint(-0.6,-0.4), mglPoint(-0.6,-0.1), "C#");
- gr->Puts(mglPoint(-0.8,-0.3, 0.01), "C", "C:w", -1.4);
- gr->Face(mglPoint(-0.6,-0.4), mglPoint(-0.6,-0.1), mglPoint(-0.2,-0.4), mglPoint(-0.2,-0.1), "M#");
- gr->Puts(mglPoint(-0.4,-0.3, 0.01), "M", "C:w", -1.4);
- gr->Face(mglPoint(-0.2,-0.4), mglPoint(-0.2,-0.1), mglPoint(0.2,-0.4), mglPoint(0.2,-0.1), "Y#");
- gr->Puts(mglPoint(0, -0.3, 0.01), "Y", "C:w", -1.4);
- gr->Face(mglPoint(0.2,-0.4), mglPoint(0.2,-0.1), mglPoint(0.6,-0.4), mglPoint(0.6,-0.1), "k#");
- gr->Puts(mglPoint(0.4,-0.3, 0.01), "k", "C:w", -1.4);
- gr->Face(mglPoint(0.6,-0.4), mglPoint(0.6,-0.1), mglPoint(1, -0.4), mglPoint(1, -0.1), "P#");
- gr->Puts(mglPoint(0.8,-0.3, 0.01), "P", "C:w", -1.4);
+ gr->FaceZ(-1, -0.4, 0, 0.4, 0.3, "C#"); gr->Puts(mglPoint(-0.8,-0.3), "C", "C:w", -1.4);
+ gr->FaceZ(-0.6, -0.4, 0, 0.4, 0.3, "M#"); gr->Puts(mglPoint(-0.4,-0.3), "M", "C:w", -1.4);
+ gr->FaceZ(-0.2, -0.4, 0, 0.4, 0.3, "Y#"); gr->Puts(mglPoint(0, -0.3), "Y", "C:w", -1.4);
+ gr->FaceZ(0.2, -0.4, 0, 0.4, 0.3, "k#"); gr->Puts(mglPoint(0.4,-0.3), "k", "C:w", -1.4);
+ gr->FaceZ(0.6, -0.4, 0, 0.4, 0.3, "P#"); gr->Puts(mglPoint(0.8,-0.3), "P", "C:w", -1.4);
//#cmywp
- gr->Face(mglPoint(-1, -0.1), mglPoint(-1, 0.2), mglPoint(-0.6,-0.1), mglPoint(-0.6, 0.2), "c#");
- gr->Puts(mglPoint(-0.8, 0, 0.01), "c", "C:k", -1.4);
- gr->Face(mglPoint(-0.6,-0.1), mglPoint(-0.6, 0.2), mglPoint(-0.2,-0.1), mglPoint(-0.2, 0.2), "m#");
- gr->Puts(mglPoint(-0.4, 0, 0.01), "m", "C:k", -1.4);
- gr->Face(mglPoint(-0.2,-0.1), mglPoint(-0.2, 0.2), mglPoint(0.2,-0.1), mglPoint(0.2, 0.2), "y#");
- gr->Puts(mglPoint(0, 0, 0.01), "y", "C:k", -1.4);
- gr->Face(mglPoint(0.2,-0.1), mglPoint(0.2, 0.2), mglPoint(0.6,-0.1), mglPoint(0.6, 0.2), "w#");
- gr->Puts(mglPoint(0.4, 0, 0.01), "w", "C:k", -1.4);
- gr->Face(mglPoint(0.6,-0.1), mglPoint(0.6, 0.2), mglPoint(1, -0.1), mglPoint(1, 0.2), "p#");
- gr->Puts(mglPoint(0.8, 0, 0.01), "p", "C:k", -1.4);
+ gr->FaceZ(-1, -0.1, 0, 0.4, 0.3, "c#"); gr->Puts(mglPoint(-0.8, 0), "c", "C:k", -1.4);
+ gr->FaceZ(-0.6, -0.1, 0, 0.4, 0.3, "m#"); gr->Puts(mglPoint(-0.4, 0), "m", "C:k", -1.4);
+ gr->FaceZ(-0.2, -0.1, 0, 0.4, 0.3, "y#"); gr->Puts(mglPoint(0, 0), "y", "C:k", -1.4);
+ gr->FaceZ(0.2, -0.1, 0, 0.4, 0.3, "w#"); gr->Puts(mglPoint(0.4, 0), "w", "C:k", -1.4);
+ gr->FaceZ(0.6, -0.1, 0, 0.4, 0.3, "p#"); gr->Puts(mglPoint(0.8, 0), "p", "C:k", -1.4);
//#BGRHW
- gr->Face(mglPoint(-1, 0.2), mglPoint(-1, 0.5), mglPoint(-0.6, 0.2), mglPoint(-0.6, 0.5), "B#");
- gr->Puts(mglPoint(-0.8, 0.3, 0.01), "B", "C:w", -1.4);
- gr->Face(mglPoint(-0.6, 0.2), mglPoint(-0.6, 0.5), mglPoint(-0.2, 0.2), mglPoint(-0.2, 0.5), "G#");
- gr->Puts(mglPoint(-0.4, 0.3, 0.01), "G", "C:w", -1.4);
- gr->Face(mglPoint(-0.2, 0.2), mglPoint(-0.2, 0.5), mglPoint(0.2, 0.2), mglPoint(0.2, 0.5), "R#");
- gr->Puts(mglPoint(0, 0.3, 0.01), "R", "C:w", -1.4);
- gr->Face(mglPoint(0.2, 0.2), mglPoint(0.2, 0.5), mglPoint(0.6, 0.2), mglPoint(0.6, 0.5), "H#");
- gr->Puts(mglPoint(0.4, 0.3, 0.01), "H", "C:w", -1.4);
- gr->Face(mglPoint(0.6, 0.2), mglPoint(0.6, 0.5), mglPoint(1, 0.2), mglPoint(1, 0.5), "W#");
- gr->Puts(mglPoint(0.8, 0.3, 0.01), "W", "C:w", -1.4);
+ gr->FaceZ(-1, 0.2, 0, 0.4, 0.3, "B#"); gr->Puts(mglPoint(-0.8, 0.3), "B", "C:w", -1.4);
+ gr->FaceZ(-0.6, 0.2, 0, 0.4, 0.3, "G#"); gr->Puts(mglPoint(-0.4, 0.3), "G", "C:w", -1.4);
+ gr->FaceZ(-0.2, 0.2, 0, 0.4, 0.3, "R#"); gr->Puts(mglPoint(0, 0.3), "R", "C:w", -1.4);
+ gr->FaceZ(0.2, 0.2, 0, 0.4, 0.3, "H#"); gr->Puts(mglPoint(0.4, 0.3), "H", "C:w", -1.4);
+ gr->FaceZ(0.6, 0.2, 0, 0.4, 0.3, "W#"); gr->Puts(mglPoint(0.8, 0.3), "W", "C:w", -1.4);
//#bgrhw
- gr->Face(mglPoint(-1, 0.5), mglPoint(-1, 0.8), mglPoint(-0.6, 0.5), mglPoint(-0.6, 0.8), "b#");
- gr->Puts(mglPoint(-0.8, 0.6, 0.01), "b", "C:k", -1.4);
- gr->Face(mglPoint(-0.6, 0.5), mglPoint(-0.6, 0.8), mglPoint(-0.2, 0.5), mglPoint(-0.2, 0.8), "g#");
- gr->Puts(mglPoint(-0.4, 0.6, 0.01), "g", "C:k", -1.4);
- gr->Face(mglPoint(-0.2, 0.5), mglPoint(-0.2, 0.8), mglPoint(0.2, 0.5), mglPoint(0.2, 0.8), "r#");
- gr->Puts(mglPoint(0, 0.6, 0.01), "r", "C:k", -1.4);
- gr->Face(mglPoint(0.2, 0.5), mglPoint(0.2, 0.8), mglPoint(0.6, 0.5), mglPoint(0.6, 0.8), "h#");
- gr->Puts(mglPoint(0.4, 0.6, 0.01), "h", "C:k", -1.4);
- gr->Face(mglPoint(0.6, 0.5), mglPoint(0.6, 0.8), mglPoint(1, 0.5), mglPoint(1, 0.8), "w#");
- gr->Puts(mglPoint(0.8, 0.6, 0.01), "w", "C:k", -1.4);
+ gr->FaceZ(-1, 0.5, 0, 0.4, 0.3, "b#"); gr->Puts(mglPoint(-0.8, 0.6), "b", "C:k", -1.4);
+ gr->FaceZ(-0.6, 0.5, 0, 0.4, 0.3, "g#"); gr->Puts(mglPoint(-0.4, 0.6), "g", "C:k", -1.4);
+ gr->FaceZ(-0.2, 0.5, 0, 0.4, 0.3, "r#"); gr->Puts(mglPoint(0, 0.6), "r", "C:k", -1.4);
+ gr->FaceZ(0.2, 0.5, 0, 0.4, 0.3, "h#"); gr->Puts(mglPoint(0.4, 0.6), "h", "C:k", -1.4);
+ gr->FaceZ(0.6, 0.5, 0, 0.4, 0.3, "w#"); gr->Puts(mglPoint(0.8, 0.6), "w", "C:k", -1.4);
//#brighted
- gr->Face(mglPoint(-1, 0.8), mglPoint(-1, 1.1), mglPoint(-0.6, 0.8), mglPoint(-0.6, 1.1), "r1#");
- gr->Puts(mglPoint(-0.8, 0.9, 0.01), "r1", "C:w", -1.4);
- gr->Face(mglPoint(-0.6, 0.8), mglPoint(-0.6, 1.1), mglPoint(-0.2, 0.8), mglPoint(-0.2, 1.1), "r3#");
- gr->Puts(mglPoint(-0.4, 0.9, 0.01), "r3", "C:w", -1.4);
- gr->Face(mglPoint(-0.2, 0.8), mglPoint(-0.2, 1.1), mglPoint(0.2, 0.8), mglPoint(0.2, 1.1), "r5#");
- gr->Puts(mglPoint(0, 0.9, 0.01), "r5", "C:k", -1.4);
- gr->Face(mglPoint(0.2, 0.8), mglPoint(0.2, 1.1), mglPoint(0.6, 0.8), mglPoint(0.6, 1.1), "r7#");
- gr->Puts(mglPoint(0.4, 0.9, 0.01), "r7", "C:k", -1.4);
- gr->Face(mglPoint(0.6, 0.8), mglPoint(0.6, 1.1), mglPoint(1, 0.8), mglPoint(1, 1.1), "r9#");
- gr->Puts(mglPoint(0.8, 0.9, 0.01), "r9", "C:k", -1.4);
+ gr->FaceZ(-1, 0.8, 0, 0.4, 0.3, "r1#"); gr->Puts(mglPoint(-0.8, 0.9), "r1", "C:w", -1.4);
+ gr->FaceZ(-0.6, 0.8, 0, 0.4, 0.3, "r3#"); gr->Puts(mglPoint(-0.4, 0.9), "r3", "C:w", -1.4);
+ gr->FaceZ(-0.2, 0.8, 0, 0.4, 0.3, "r5#"); gr->Puts(mglPoint(0, 0.9), "r5", "C:k", -1.4);
+ gr->FaceZ(0.2, 0.8, 0, 0.4, 0.3, "r7#"); gr->Puts(mglPoint(0.4, 0.9), "r7", "C:k", -1.4);
+ gr->FaceZ(0.6, 0.8, 0, 0.4, 0.3, "r9#"); gr->Puts(mglPoint(0.8, 0.9), "r9", "C:k", -1.4);
}
//-----------------------------------------------------------------------------
void smgl_qo2d(mglGraph *gr)
@@ -536,7 +677,7 @@ void smgl_sample8(mglGraph *gr) // 1d plot
mglData x(50); x.Modify("cos(pi*2*x-pi)");
gr->Plot(x,y0,"Y+");
- gr->Plot2(y1,"q|");
+ gr->Plot(y1.SubData(-1,0),y1.SubData(-1,1),"q|");
gr->SubPlot(2,2,2); gr->Rotate(60,40);
mglData z(50); z.Modify("2*x-1");
@@ -544,7 +685,7 @@ void smgl_sample8(mglGraph *gr) // 1d plot
mglData y2(10,3); y2.Modify("cos(pi*(2*x-1-y))");
y2.Modify("2*x-1",2);
- gr->Plot3(y2,"bo ");
+ gr->Plot(y2.SubData(-1,0),y2.SubData(-1,1),y2.SubData(-1,2),"bo ");
gr->SubPlot(2,2,3); gr->Rotate(60,40);
gr->Bars(x,y0,z,"ri"); gr->Box();
@@ -588,23 +729,42 @@ void smgl_sample6(mglGraph *gr) // differentiate
void smgl_sample5(mglGraph *gr) // pen styles
{
if(type==5) gr->Puts(mglPoint(0,1.2),"line styles not supported","rL");
- gr->Line(mglPoint(0,1,0),mglPoint(0.3,1,0),"k-"); gr->Puts(mglPoint(0.4,1),"Solid '-'","rL");
- gr->Line(mglPoint(0,0.7,0),mglPoint(0.3,0.7,0),"k|"); gr->Puts(mglPoint(0.4,0.7),"Dash '|'","rL");
- gr->Line(mglPoint(0,0.4,0),mglPoint(0.3,0.4,0),"k;"); gr->Puts(mglPoint(0.4,0.4),"Small dash ';'","rL");
- gr->Line(mglPoint(0,0.1,0),mglPoint(0.3,0.1,0),"kj"); gr->Puts(mglPoint(0.4,0.1),"Dash-dot 'j'","rL");
- gr->Line(mglPoint(0,-0.2,0),mglPoint(0.3,-0.2,0),"ki"); gr->Puts(mglPoint(0.4,-0.2),"Small dash-dot 'i'","rL");
- gr->Line(mglPoint(0,-0.5,0),mglPoint(0.3,-0.5,0),"k:"); gr->Puts(mglPoint(0.4,-0.5),"Dots ':'","rL");
- gr->Line(mglPoint(0,-0.8,0),mglPoint(0.3,-0.8,0),"k "); gr->Puts(mglPoint(0.4,-0.8),"None ' '","rL");
+ mreal d,x1,x2,x0,y=0.95;
+ d=0.3, x0=0.2, x1=0.5, x2=0.6;
+ gr->Line(mglPoint(x0,1-0*d),mglPoint(x1,1-0*d),"k-"); gr->Puts(mglPoint(x2,y-0*d),"Solid '-'","rL");
+ gr->Line(mglPoint(x0,1-1*d),mglPoint(x1,1-1*d),"k|"); gr->Puts(mglPoint(x2,y-1*d),"Long Dash '|'","rL");
+ gr->Line(mglPoint(x0,1-2*d),mglPoint(x1,1-2*d),"k;"); gr->Puts(mglPoint(x2,y-2*d),"Dash ';'","rL");
+ gr->Line(mglPoint(x0,1-3*d),mglPoint(x1,1-3*d),"k="); gr->Puts(mglPoint(x2,y-3*d),"Small dash '='","rL");
+ gr->Line(mglPoint(x0,1-4*d),mglPoint(x1,1-4*d),"kj"); gr->Puts(mglPoint(x2,y-4*d),"Dash-dot 'j'","rL");
+ gr->Line(mglPoint(x0,1-5*d),mglPoint(x1,1-5*d),"ki"); gr->Puts(mglPoint(x2,y-5*d),"Small dash-dot 'i'","rL");
+ gr->Line(mglPoint(x0,1-6*d),mglPoint(x1,1-6*d),"k:"); gr->Puts(mglPoint(x2,y-6*d),"Dots ':'","rL");
+ gr->Line(mglPoint(x0,1-7*d),mglPoint(x1,1-7*d),"k "); gr->Puts(mglPoint(x2,y-7*d),"None ' '","rL");
+
+ d=0.25; x1=-1; x0=-0.8; y = -0.05;
+ gr->Mark(mglPoint(x1,5*d),'.'); gr->Puts(mglPoint(x0,y+5*d),"'.'","rL");
+ gr->Mark(mglPoint(x1,4*d),'+'); gr->Puts(mglPoint(x0,y+4*d),"'+'","rL");
+ gr->Mark(mglPoint(x1,3*d),'x'); gr->Puts(mglPoint(x0,y+3*d),"'x'","rL");
+ gr->Mark(mglPoint(x1,2*d),'*'); gr->Puts(mglPoint(x0,y+2*d),"'*'","rL");
+ gr->Mark(mglPoint(x1,d),'s'); gr->Puts(mglPoint(x0,y+d),"'s'","rL");
+ gr->Mark(mglPoint(x1,0),'d'); gr->Puts(mglPoint(x0,y),"'d'","rL");
+ gr->Mark(mglPoint(x1,-d,0),'o'); gr->Puts(mglPoint(x0,y-d),"'o'","rL");
+ gr->Mark(mglPoint(x1,-2*d,0),'^'); gr->Puts(mglPoint(x0,y-2*d),"'\\^'","rL");
+ gr->Mark(mglPoint(x1,-3*d,0),'v'); gr->Puts(mglPoint(x0,y-3*d),"'v'","rL");
+ gr->Mark(mglPoint(x1,-4*d,0),'<'); gr->Puts(mglPoint(x0,y-4*d),"'<'","rL");
+ gr->Mark(mglPoint(x1,-5*d,0),'>'); gr->Puts(mglPoint(x0,y-5*d),"'>'","rL");
- gr->Mark(mglPoint(-1,1.2,0),'.'); gr->Puts(mglPoint(-0.7,1.2),"'.'","rL");
- gr->Mark(mglPoint(-1,0.9,0),'+'); gr->Puts(mglPoint(-0.7,0.9),"'+'","rL");
- gr->Mark(mglPoint(-1,0.6,0),'x'); gr->Puts(mglPoint(-0.7,0.6),"'x'","rL");
- gr->Mark(mglPoint(-1,0.3,0),'*'); gr->Puts(mglPoint(-0.7,0.3),"'*'","rL");
- gr->Mark(mglPoint(-1,0.0,0),'s'); gr->Puts(mglPoint(-0.7,0.0),"'s'","rL");
- gr->Mark(mglPoint(-1,-0.3,0),'d'); gr->Puts(mglPoint(-0.7,-0.3),"'d'","rL");
- gr->Mark(mglPoint(-1,-0.6,0),'o'); gr->Puts(mglPoint(-0.7,-0.6),"'o'","rL");
- gr->Mark(mglPoint(-1,-0.9,0),'^'); gr->Puts(mglPoint(-0.7,-0.9),"'\\^'","rL");
- gr->Mark(mglPoint(-1,-1.2,0),'v'); gr->Puts(mglPoint(-0.7,-1.2),"'v'","rL");
+ d=0.25; x1=-0.5; x0=-0.3; y = -0.05;
+ gr->Mark(mglPoint(x1,5*d),'C'); gr->Puts(mglPoint(x0,y+5*d),"'\\#.'","rL");
+ gr->Mark(mglPoint(x1,4*d),'P'); gr->Puts(mglPoint(x0,y+4*d),"'\\#+'","rL");
+ gr->Mark(mglPoint(x1,3*d),'X'); gr->Puts(mglPoint(x0,y+3*d),"'\\#x'","rL");
+ gr->Mark(mglPoint(x1,2*d),'Y'); gr->Puts(mglPoint(x0,y+2*d),"'\\#*'","rL");
+ gr->Mark(mglPoint(x1,d),'S'); gr->Puts(mglPoint(x0,y+d),"'\\#s'","rL");
+ gr->Mark(mglPoint(x1,0),'D'); gr->Puts(mglPoint(x0,y),"'\\#d'","rL");
+ gr->Mark(mglPoint(x1,-d,0),'O'); gr->Puts(mglPoint(x0,y-d),"'\\#o'","rL");
+ gr->Mark(mglPoint(x1,-2*d,0),'T'); gr->Puts(mglPoint(x0,y-2*d),"'\\#\\^'","rL");
+ gr->Mark(mglPoint(x1,-3*d,0),'V'); gr->Puts(mglPoint(x0,y-3*d),"'\\#v'","rL");
+ gr->Mark(mglPoint(x1,-4*d,0),'L'); gr->Puts(mglPoint(x0,y-4*d),"'\\#<'","rL");
+ gr->Mark(mglPoint(x1,-5*d,0),'R'); gr->Puts(mglPoint(x0,y-5*d),"'\\#>'","rL");
}
//-----------------------------------------------------------------------------
void smgl_sample4(mglGraph *gr) // font features
@@ -707,7 +867,7 @@ void smgl_sample1(mglGraph *gr) // transformation
gr->SubPlot(2,2,0); // just new axis without rotation and aspects
gr->Box();
gr->Text(mglPoint(-1,1.1,1),"Just box","rL");
- gr->InPlot(0.2,0.5,0.7,1);
+ gr->InPlot(0.2,0.5,0.7,1,false);
gr->Box();
gr->Text(mglPoint(0,1.2,1),"InPlot example");
gr->SubPlot(2,2,1); // new axis with aspect and rotation
@@ -762,6 +922,12 @@ void smgl_area(mglGraph *gr)
gr->Org=mglPoint(); gr->Box(); gr->Area(y);
}
//-----------------------------------------------------------------------------
+void smgl_area_2(mglGraph *gr)
+{
+ mglData y; mgls_prepare1d(&y);
+ gr->Org=mglPoint(); gr->Box(); gr->Area(y,"cbgGyr");
+}
+//-----------------------------------------------------------------------------
void smgl_stem(mglGraph *gr)
{
mglData y; mgls_prepare1d(&y);
@@ -774,6 +940,24 @@ void smgl_step(mglGraph *gr)
gr->Box(); gr->Step(y);
}
//-----------------------------------------------------------------------------
+void smgl_bars_2(mglGraph *gr)
+{
+ mglData ys(10,3); ys.Modify("0.8*sin(pi*(2*x+y/2))+0.2*rnd");
+ gr->Org=mglPoint(); gr->Box(); gr->Bars(ys,"cbgGyr");
+}
+//-----------------------------------------------------------------------------
+void smgl_bars_a(mglGraph *gr)
+{
+ mglData ys(10,3); ys.Modify("0.3*sin(pi*(2*x+y/2))+0.1*rnd");
+ gr->Org=mglPoint(); gr->Box(); gr->Bars(ys,"a");
+}
+//-----------------------------------------------------------------------------
+void smgl_bars_f(mglGraph *gr)
+{
+ mglData ys(10,2); ys.Modify("0.24*sin(pi*(2*x+y/2))+0.06*rnd");
+ gr->Org=mglPoint(); gr->Box(); gr->Bars(ys,"f");
+}
+//-----------------------------------------------------------------------------
void smgl_bars(mglGraph *gr)
{
mglData ys(10,3); ys.Modify("0.8*sin(pi*(2*x+y/2))+0.2*rnd");
@@ -807,6 +991,13 @@ void smgl_region(mglGraph *gr)
gr->Plot(y1,"k2"); gr->Plot(y2,"k2");
}
//-----------------------------------------------------------------------------
+void smgl_region_2(mglGraph *gr)
+{
+ mglData y1,y2; mgls_prepare1d(0, &y1, &y2);
+ gr->Box(); gr->Region(y2,y1,"yr");
+ gr->Plot(y1,"k2"); gr->Plot(y2,"k2");
+}
+//-----------------------------------------------------------------------------
void smgl_mark(mglGraph *gr)
{
mglData y,y1; mgls_prepare1d(&y,&y1);
@@ -875,6 +1066,14 @@ void smgl_chart(mglGraph *gr)
gr->Box(); gr->Chart(ch,"#");
}
//-----------------------------------------------------------------------------
+void smgl_ring_chart(mglGraph *gr)
+{
+ mglData ch(7,2); for(int i=0;i<7*2;i++) ch.a[i]=mgl_rnd()+0.1;
+ gr->Light(true); gr->Rotate(40,60); gr->VertexColor(false);
+ gr->SetFunc("(y+2)/3*cos(pi*x)","(y+2)/3*sin(pi*x)","");
+ gr->Box(); gr->Chart(ch,"bgr cmy#");
+}
+//-----------------------------------------------------------------------------
void smgl_pie_chart(mglGraph *gr)
{
mglData ch(7,2); for(int i=0;i<7*2;i++) ch.a[i]=mgl_rnd()+0.1;
@@ -897,6 +1096,13 @@ void mgls_prepare2d(mglData *a, mglData *b=0, mglData *v=0)
}
}
//-----------------------------------------------------------------------------
+void smgl_grad(mglGraph *gr)
+{
+ mglData a; mgls_prepare2d(&a);
+ gr->Box(); gr->Grad(a);
+ gr->Alpha(true); gr->Dens(a);
+}
+//-----------------------------------------------------------------------------
void smgl_contt(mglGraph *gr)
{
mglData a; mgls_prepare2d(&a);
@@ -935,6 +1141,16 @@ void smgl_surf(mglGraph *gr)
gr->Box(); gr->Surf(a);
}
//-----------------------------------------------------------------------------
+void smgl_stereo(mglGraph *gr)
+{
+ mglData a; mgls_prepare2d(&a);
+ gr->Light(true);
+ gr->SubPlot(2,1,0); gr->Rotate(40,60+3);
+ gr->Box(); gr->Surf(a);
+ gr->SubPlot(2,1,1); gr->Rotate(40,60-3);
+ gr->Box(); gr->Surf(a);
+}
+//-----------------------------------------------------------------------------
void smgl_tile(mglGraph *gr)
{
mglData a; mgls_prepare2d(&a);
@@ -1677,7 +1893,7 @@ int main(int argc,char **argv)
else gr->SetSize(width,height);
if(dotest)
- { test(gr); gr->WritePNG("test.png","",false); return 0; }
+ { test(gr); gr->WriteEPS("test.eps"); gr->WritePNG("test.png","",false); return 0; }
if(srnd) mgl_srnd(1);
gr->VertexColor(false); gr->TextureColor(true); gr->Compression(false);
@@ -1693,7 +1909,11 @@ int main(int argc,char **argv)
int i=0;
for(i=0;samp[i].name[0];i++); // determine the number of samples
s = (mglSample *) bsearch(&tst, samp, i, sizeof(mglSample), mgl_cmd_smp);
- if(s) { s->func(gr); save(gr, s->name, suf); }
+ if(s)
+ {
+ gr->DefaultPlotParam(); gr->Clf();
+ s->func(gr); save(gr, s->name, suf);
+ }
else printf("no sample %s\n",name);
}
printf("\n"); return 0;
@@ -1702,15 +1922,20 @@ int main(int argc,char **argv)
mglSample samp[] = {
{"2_axis", smgl_2_axis},
{"area", smgl_area},
+ {"area_2", smgl_area_2},
{"axial", smgl_axial},
{"barh", smgl_barh},
{"bars", smgl_bars},
+ {"bars_2", smgl_bars_2},
+ {"bars_a", smgl_bars_a},
+ {"bars_f", smgl_bars_f},
{"belt", smgl_belt},
{"boxplot", smgl_boxplot},
{"boxs", smgl_boxs},
{"chart", smgl_chart},
{"cloud", smgl_cloud},
{"cloudp", smgl_cloudp},
+ {"color_schemes", smgl_color_schemes},
{"colors", smgl_colors},
{"column", smgl_column},
{"cont", smgl_cont},
@@ -1739,6 +1964,7 @@ mglSample samp[] = {
{"flow3", smgl_flow3},
{"flow_dens", smgl_flow_dens},
{"fonts", smgl_fonts},
+ {"grad", smgl_grad},
{"legend", smgl_legend},
{"loglog", smgl_loglog},
{"map", smgl_map},
@@ -1757,6 +1983,8 @@ mglSample samp[] = {
{"qo2d", smgl_qo2d},
{"radar", smgl_radar},
{"region", smgl_region},
+ {"region_2", smgl_region_2},
+ {"ring_chart", smgl_ring_chart},
{"sample1", smgl_sample1},
{"sample2", smgl_sample2},
{"sample3", smgl_sample3},
@@ -1776,6 +2004,7 @@ mglSample samp[] = {
{"sew", smgl_sew},
{"stem", smgl_stem},
{"step", smgl_step},
+ {"stereo", smgl_stereo},
{"stfa", smgl_stfa},
{"stick", smgl_stick},
{"surf", smgl_surf},
diff --git a/examples/qt_example.cpp b/examples/qt_example.cpp
index 6bc5dc1..7233ef8 100644
--- a/examples/qt_example.cpp
+++ b/examples/qt_example.cpp
@@ -27,8 +27,32 @@ int sample_2(mglGraph *gr, void *);
int sample_3(mglGraph *gr, void *);
int sample_d(mglGraph *gr, void *);
//-----------------------------------------------------------------------------
+#include <pthread.h>
+#include <unistd.h>
+mglPoint pnt; // some global variable for changable data
+void *mgl_qt_tmp(void *) { mglQtRun(); return 0; }
+//-----------------------------------------------------------------------------
int main(int argc,char **argv)
{
+#ifdef PTHREAD_SAMPLE
+ mglGraphQT gr;
+ gr.Window(argc,argv,NULL,"test",0,0); // create window
+ gr.ClfOnUpdate = false;
+ static pthread_t tmp;
+ pthread_create(&tmp, 0, mgl_qt_tmp, 0);
+ pthread_detach(tmp); // run window handling in the separate thread
+ for(int i=0;i<10;i++) // do calculation
+ {
+ sleep(2); // which can be very long
+ pnt = mglPoint(2*mgl_rnd()-1,2*mgl_rnd()-1);
+ gr.Clf(); // make new drawing
+ gr.Line(mglPoint(),pnt,"Ar2");
+ char str[10] = "i=0"; str[3] = '0'+i;
+ gr.Text(mglPoint(),"");
+ gr.Update(); // update window
+ }
+ return 0; // finish calculations and close the window
+#else
mglGraphQT gr;
char key = 0;
if(argc>1 && argv[1][0]!='-') key = argv[1][0];
@@ -43,5 +67,6 @@ int main(int argc,char **argv)
default: gr.Window(argc,argv,sample,"Example of molecules"); break;
}
return mglQtRun();
+#endif
}
//-----------------------------------------------------------------------------
diff --git a/examples/test.mgl b/examples/test.mgl
index 3dfe8d9..9fca172 100644
--- a/examples/test.mgl
+++ b/examples/test.mgl
@@ -1 +1,4 @@
-text 0.5 0.5 'A\int 0\nA\int 0' 'A'
+define $b -1
+for $z -1 1 0.1
+line 0 0 $b $z 'b'
+next
diff --git a/examples/wnd_samples.cpp b/examples/wnd_samples.cpp
index 97c3af1..ff0971c 100644
--- a/examples/wnd_samples.cpp
+++ b/examples/wnd_samples.cpp
@@ -220,7 +220,7 @@ int sample_2(mglGraph *gr, void *)
gr->Box(); gr->Axis();
gr->Text(mglPoint(0,1.2,1),"Density plot");
gr->Dens(a,"BbcyrR");
- gr->InPlot(0.6,1,0.6,1); // new axis in upper right corner
+ gr->InPlot(0.6,1,0.6,1,false); // new axis in upper right corner
gr->Box(); gr->Axis();
gr->Text(mglPoint(0,1.2,1),"... with bicolor");
gr->Dens(a,"BbwrR");
diff --git a/examples/wx_example.cpp b/examples/wx_example.cpp
index f3269bc..393366f 100644
--- a/examples/wx_example.cpp
+++ b/examples/wx_example.cpp
@@ -17,6 +17,60 @@
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
-int main(void){
-return 0;
-}
+#include <stdio.h>
+#include <mgl/mgl_wx.h>
+//-----------------------------------------------------------------------------
+#ifdef ENABLE_MGLGRAPHWX
+int test(mglGraph *gr, void *);
+int sample(mglGraph *gr, void *);
+int sample_1(mglGraph *gr, void *);
+int sample_2(mglGraph *gr, void *);
+int sample_3(mglGraph *gr, void *);
+int sample_d(mglGraph *gr, void *);
+//-----------------------------------------------------------------------------
+#include <pthread.h>
+#include <unistd.h>
+mglPoint pnt; // some global variable for changable data
+void *mgl_wx_tmp(void *) { mglWxRun(); return 0; }
+//-----------------------------------------------------------------------------
+int main(int argc,char **argv)
+{
+#ifdef PTHREAD_SAMPLE
+ mglGraphWX gr;
+ gr.Window(argc,argv,NULL,"test",0,0); // create window
+ gr.ClfOnUpdate = false;
+ static pthread_t tmp;
+ pthread_create(&tmp, 0, mgl_qt_tmp, 0);
+ pthread_detach(tmp); // run window handling in the separate thread
+ for(int i=0;i<10;i++) // do calculation
+ {
+ sleep(2); // which can be very long
+ pnt = mglPoint(2*mgl_rnd()-1,2*mgl_rnd()-1);
+ gr.Clf(); // make new drawing
+ gr.Line(mglPoint(),pnt,"Ar2");
+ char str[10] = "i=0"; str[3] = '0'+i;
+ gr.Text(mglPoint(),"");
+ gr.Update(); // update window
+ }
+ return 0; // finish calculations and close the window
+#else
+ mglGraphWX gr;
+ char key = 0;
+ if(argc>1 && argv[1][0]!='-') key = argv[1][0];
+ else printf("You may specify argument '1', '2', '3' or 'd' for viewing examples of 1d, 2d, 3d or dual plotting\n");
+ switch(key)
+ {
+ case '1': gr.Window(argc,argv,sample_1,"1D plots"); break;
+ case '2': gr.Window(argc,argv,sample_2,"2D plots"); break;
+ case '3': gr.Window(argc,argv,sample_3,"3D plots"); break;
+ case 'd': gr.Window(argc,argv,sample_d,"Dual plots"); break;
+ case 't': gr.Window(argc,argv,test,"Testing"); break;
+ default: gr.Window(argc,argv,sample,"Example of molecules"); break;
+ }
+ return mglWxRun();
+#endif
+}
+//-----------------------------------------------------------------------------
+#else
+int main(int argc,char **argv) { return 0; }
+#endif
\ No newline at end of file
diff --git a/fonts/STIX.vfm b/fonts/STIX.vfm
new file mode 100644
index 0000000..b07ac2d
Binary files /dev/null and b/fonts/STIX.vfm differ
diff --git a/fonts/STIX_b.vfm b/fonts/STIX_b.vfm
new file mode 100644
index 0000000..6bec32c
Binary files /dev/null and b/fonts/STIX_b.vfm differ
diff --git a/fonts/STIX_bi.vfm b/fonts/STIX_bi.vfm
new file mode 100644
index 0000000..9ce6241
Binary files /dev/null and b/fonts/STIX_bi.vfm differ
diff --git a/fonts/STIX_i.vfm b/fonts/STIX_i.vfm
new file mode 100644
index 0000000..ea51c6c
Binary files /dev/null and b/fonts/STIX_i.vfm differ
diff --git a/include/Makefile.in b/include/Makefile.in
index ca97f93..8c7d802 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -122,6 +122,8 @@ GREP = @GREP@
GSL_FLAGS = @GSL_FLAGS@
GSL_LIBS = @GSL_LIBS@
HAVE_SWIG = @HAVE_SWIG@
+HDF4_FLAGS = @HDF4_FLAGS@
+HDF4_LIBS = @HDF4_LIBS@
HDF5_FLAGS = @HDF5_FLAGS@
HDF5_LIBS = @HDF5_LIBS@
INSTALL = @INSTALL@
@@ -142,6 +144,7 @@ LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MGL_AGE = @MGL_AGE@
MGL_CURRENT = @MGL_CURRENT@
+MGL_RELEASE = @MGL_RELEASE@
MGL_REVISION = @MGL_REVISION@
MKDIR_P = @MKDIR_P@
MOC = @MOC@
diff --git a/include/mgl/mgl.h b/include/mgl/mgl.h
index 2cb4b08..b9aa8a4 100644
--- a/include/mgl/mgl.h
+++ b/include/mgl/mgl.h
@@ -17,19 +17,16 @@
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
+#ifdef _MGL_W_H_
+#warning "MathGL wrapper was enabled. So disable original MathGL classes"
+#else
#ifndef _MGL_H_
#define _MGL_H_
-#define MGL_VERSION 10.2
-
#include <wchar.h>
#include <stdlib.h>
#include "mgl/mgl_data.h"
#include "mgl/mgl_font.h"
-
-#ifndef NUM_COLOR
-#define NUM_COLOR 32
-#endif
//-----------------------------------------------------------------------------
class mglGraph;
class mglFormula;
@@ -185,7 +182,7 @@ public:
/// Write the frame in file (depending extension, write current frame if fname is empty)
void WriteFrame(const char *fname=0, const char *descr=0);
/// Show currently produced image by Qt or FLTK library
- void ShowImage(const char *viewer="kuickshow", bool keep=false);
+ void ShowImage(const char *viewer=0, bool keep=false);
//@}
/// Create new frame.
virtual int NewFrame();
@@ -245,7 +242,7 @@ public:
inline void SetPalColor (int n, float r, float g, float b)
{ if(n<100) Pal[n] = mglColor(r,g,b); };
/// Set number of colors in palette
- inline void SetPalNum(int num) { if(num<100) NumPal = num; };
+ inline void SetPalNum(int num) { if(num<100 && num>0) NumPal = num; };
/// Set palette
inline void SetPalette(const char *colors)
{ strcpy(DefPal, colors?colors:MGL_DEF_PAL); SetPal(colors); }
@@ -295,24 +292,28 @@ public:
* can be used in any place. */
//@{
/// Set angle of view indepently from mglGraph::Rotate().
- virtual void View(mreal tetx,mreal tetz,mreal tety=0);
+ virtual void View(mreal tetx,mreal tetz,mreal tety=0);
+ inline int GetWarn() { return WarnCode; };
void DefaultPlotParam(); ///< Set default parameter for plotting
/// Zoom in or zoom out (if Zoom(0, 0, 1, 1)) a part of picture
void Zoom(mreal x1, mreal y1, mreal x2, mreal y2);
/// Clear transformation matrix.
void Identity(bool rel=false);
- /// Restore transformation matrix after last InPlot()
- virtual void RestoreM()=0;
+ /// Push transformation matrix into stack
+ virtual void Push()=0;
+ /// Pop transformation matrix from stack
+ virtual void Pop()=0;
/// Clear up the frame
virtual void Clf(mglColor Back=WC); //=0
/// Put further plotting in some region of whole frame surface.
void SubPlot(int nx,int ny,int m, mreal dx=0, mreal dy=0);
+ void SubPlot(int nx,int ny,int m, const char *style);
/// Put further plotting in column cell of previous subplot
- void ColumnPlot(int num, int i);
+ void ColumnPlot(int num, int i, mreal d=0);
/// Put further plotting in cell of stick rotated on angles tet, phi
virtual void StickPlot(int num, int i, mreal tet, mreal phi)=0;
/// Put further plotting in some region of whole frame surface.
- virtual void InPlot(mreal x1,mreal x2,mreal y1,mreal y2,bool rel=false); //=0
+ virtual void InPlot(mreal x1,mreal x2,mreal y1,mreal y2,bool rel=true); //=0
/// Set aspect ratio for further plotting.
virtual void Aspect(mreal Ax,mreal Ay,mreal Az)=0;
/// Rotate a further plotting.
@@ -370,20 +371,19 @@ public:
/// Safetly set the cutting off condition (formula).
void CutOff(const char *EqCut);
/// Set to draw Ternary axis (triangle like axis, grid and so on)
- void Ternary(bool tern);
+ void Ternary(int tern);
/// Recalculate internal parameter for correct applies transformation rules. \b Must \b be \b called after any direct changes of members mglGraph::Min, mglGraph::Max, mglGraph::fx, mglGraph::fy, mglGraph::fz.
void RecalcBorder();
/// Draw axises with ticks in directions determined by string parameter \a dir.
void Axis(const char *dir="xyzt", bool adjust=false);
/// Draw grid lines perpendicular to direction determined by string parameter \a dir.
- void Grid(const char *dir="xyz",const char *pen="B-");
+ void Grid(const char *dir="xyzt",const char *pen="B-");
/// Print the label \a text for axis \a dir.
- void Label(char dir, const char *text, mreal pos=+1, mreal size=-1.4, mreal shift=0);
+ void Label(char dir, const char *text, mreal pos=0, mreal size=-1.4, mreal shift=0);
+ void Labelw(char dir, const wchar_t *text, mreal pos=0, mreal size=-1.4, mreal shift=0);
/// Print the \a text at arbitrary position of the picture \a x, \a y in range [0,1]x[0,1].
void Label(mreal x, mreal y, const char *text, const char *fnt=0, mreal size=-1.4, bool rel=false);
void Labelw(mreal x, mreal y, const wchar_t *text, const char *fnt=0, mreal size=-1.4, bool rel=false);
- /// Print the label \a text for axis \a dir.
- void Labelw(char dir, const wchar_t *text, mreal pos=+1, mreal size=-1.4, mreal shift=0);
/// Draw colorbar at edge of axis
void Colorbar(const char *sch=0,int where=0);
void inline Colorbar(const char *sch, int where, mreal x, mreal y, mreal w, mreal h) { SetScheme(sch); Colorbar(where,x,y,w,h); };
@@ -554,7 +554,9 @@ public:
/// Draw legend of accumulated strings by \a font with \a size
void Legend(int n, wchar_t **text, char **style, int where=0x3, const char *font="rL", mreal size=-0.8, mreal llen=0.1);
/// Switch on/off box around legend
- inline void SetLegendBox (bool val) { LegendBox=val; };
+ inline void SetLegendBox(bool val) { LegendBox=val; };
+ /// Number of marks in legend sample
+ inline void SetLegendMarks(int num=1) { LegendMarks = num>0?num:1; };
//@}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ������� ~~~~~~~~~~~~~~~~~~~~~~~~
/// Plot data depending on its dimensions and \a type parameter
@@ -605,9 +607,9 @@ public:
/// Draw area plot for points in arrays \a x, \a y, \a z.
void Area(const mglData &x, const mglData &y, const mglData &z, const char *pen=0);
/// Draw area plot for points in arrays \a x, \a y.
- void Area(const mglData &x, const mglData &y, const char *pen=0,bool sum=false,mreal zVal=NAN);
+ void Area(const mglData &x, const mglData &y, const char *pen=0, mreal zVal=NAN);
/// Draw area plot for points in arrays \a y.
- void Area(const mglData &y, const char *pen=0,bool sum=false,mreal zVal=NAN);
+ void Area(const mglData &y, const char *pen=0, mreal zVal=NAN);
/// Draw vertical lines from points in arrays \a x, \a y, \a z to mglGraph::Org.
void Stem(const mglData &x, const mglData &y, const mglData &z, const char *pen=0);
@@ -624,17 +626,17 @@ public:
void Step(const mglData &y, const char *pen=0,mreal zVal=NAN);
/// Draw vertical bars from points in arrays \a x, \a y, \a z to mglGraph::Org.
- void Bars(const mglData &x, const mglData &y, const mglData &z, const char *pen=0, bool above=false);
+ void Bars(const mglData &x, const mglData &y, const mglData &z, const char *pen=0);
/// Draw vertical bars from points in arrays \a x, \a y to mglGraph::Org.
- void Bars(const mglData &x, const mglData &y, const char *pen=0,mreal zVal=NAN, bool above=false);
+ void Bars(const mglData &x, const mglData &y, const char *pen=0,mreal zVal=NAN);
/// Draw vertical bars from points in arrays \a y to mglGraph::Org.
- void Bars(const mglData &y, const char *pen=0,mreal zVal=NAN, bool above=false);
+ void Bars(const mglData &y, const char *pen=0,mreal zVal=NAN);
/// Draw vertical bars from points in arrays \a x, \a y to mglGraph::Org.
- void Barh(const mglData &y, const mglData &v, const char *pen=0,mreal zVal=NAN, bool above=false);
+ void Barh(const mglData &y, const mglData &v, const char *pen=0,mreal zVal=NAN);
/// Draw vertical bars from points in arrays \a y to mglGraph::Org.
- void Barh(const mglData &v, const char *pen=0,mreal zVal=NAN, bool above=false);
-
+ void Barh(const mglData &v, const char *pen=0,mreal zVal=NAN);
+
/// Draw surface of curve {\a r,\a z} rotatation around Z axis
void Torus(const mglData &r, const mglData &z, const char *pen=0);
/// Draw surface of curve rotatation around Z axis
@@ -687,29 +689,6 @@ public:
/// Draw tube with constant radial sizes \a r for points in arrays \a y.
void Tube(const mglData &y, mreal r, const char *pen=0,mreal zVal=NAN);
- /// Draw line plot for points in arrays \a a(0,:),\a a(1,:).
- void Plot2(const mglData &a, const char *pen=0,mreal zVal=NAN);
- /// Draw line plot for points in arrays \a a(0,:),\a a(1,:),\a a(2,:).
- void Plot3(const mglData &a, const char *pen=0);
- /// Draw area plot for points in arrays \a a(0,:),\a a(1,:).
- void Area2(const mglData &a, const char *pen=0,mreal zVal=NAN);
- /// Draw area plot for points in arrays \a a(0,:),\a a(1,:),\a a(2,:).
- void Area3(const mglData &a, const char *pen=0);
- /// Draw vertical bars from points in arrays \a a(0,:),\a a(1,:) to mglGraph::Org.
- void Bars2(const mglData &a, const char *pen=0,mreal zVal=NAN, bool above=false);
- /// Draw vertical bars from points in arrays \a a(0,:),\a a(1,:),\a a(2,:) to mglGraph::Org.
- void Bars3(const mglData &a, const char *pen=0, bool above=false);
- /// Draw vertical lines from points in arrays \a a(0,:),\a a(1,:) to mglGraph::Org.
- void Stem2(const mglData &a, const char *pen=0,mreal zVal=NAN);
- /// Draw vertical lines from points in arrays \a a(0,:),\a a(1,:),\a a(2,:) to mglGraph::Org.
- void Stem3(const mglData &a, const char *pen=0);
- /// Draw stairs for points in arrays \a a(0,:),\a a(1,:).
- void Step2(const mglData &a, const char *pen=0,mreal zVal=NAN);
- /// Draw stairs for points in arrays \a a(0,:),\a a(1,:),\a a(2,:).
- void Step3(const mglData &a, const char *pen=0);
- /// Draw surface of curve {\a a(0,:),\a a(1,:)} rotatation around Z axis for
- void Torus2(const mglData &a, const char *pen=0);
-
//@}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/** @name 2D plotting functions
@@ -743,12 +722,25 @@ public:
void Dots(const mglData &x, const mglData &y, const mglData &z, const mglData &a, const char *sch=0, mreal alpha=1);
/// Draw dots in points \a tr.
void Dots(const mglData &tr, const char *sch=0);
+
/// Draw triangle mesh for points in arrays \a x, \a y, \a z with specified color \a c.
void TriPlot(const mglData &nums, const mglData &x, const mglData &y, const mglData &z, const mglData &c, const char *sch=0);
/// Draw triangle mesh for points in arrays \a x, \a y, \a z.
void TriPlot(const mglData &nums, const mglData &x, const mglData &y, const mglData &z, const char *sch=0);
/// Draw triangle mesh for points in arrays \a x, \a y.
- void TriPlot(const mglData &nums, const mglData &x, const mglData &y, const char *sch=0, mreal zVal=NAN);
+ void TriPlot(const mglData &nums, const mglData &x, const mglData &y, const char *sch=0, mreal zVal=NAN);
+ /// Draw quad mesh for points in arrays \a x, \a y, \a z with specified color \a c.
+ void QuadPlot(const mglData &nums, const mglData &x, const mglData &y, const mglData &z, const mglData &c, const char *sch=0);
+ /// Draw quad mesh for points in arrays \a x, \a y, \a z.
+ void QuadPlot(const mglData &nums, const mglData &x, const mglData &y, const mglData &z, const char *sch=0);
+ /// Draw quad mesh for points in arrays \a x, \a y.
+ void QuadPlot(const mglData &nums, const mglData &x, const mglData &y, const char *sch=0, mreal zVal=NAN);
+ /// Draw contour lines for triangle mesh for points in arrays \a x, \a y, \a z.
+ void TriCont(const mglData &nums, const mglData &x, const mglData &y, const mglData &z, const char *sch=0,int num=7,mreal zVal=NAN);
+ void TriContV(const mglData &v, const mglData &nums, const mglData &x, const mglData &y, const mglData &z, const char *sch=0,mreal zVal=NAN);
+ void TriCont(const mglData &nums, const mglData &x, const mglData &y, const mglData &z, const mglData &a, const char *sch=0,int num=7,mreal zVal=NAN);
+ void TriContV(const mglData &v, const mglData &nums, const mglData &x, const mglData &y, const mglData &z, const mglData &a, const char *sch=0,mreal zVal=NAN);
+
/// Draw grid lines for density plot of 2d data specified parametrically
void Grid(const mglData &x, const mglData &y, const mglData &z, const char *stl=0,mreal zVal=NAN);
/// Draw grid lines for density plot of 2d data
@@ -897,6 +889,7 @@ public:
void Surf3C(const mglData &x, const mglData &y, const mglData &z, const mglData &a, const mglData &b, const char *stl=0, int num=3);
/// Draw several isosurface for 3d data \a a with color proportional to \a b
void Surf3C(const mglData &a, const mglData &b, const char *stl=0, int num=3);
+
/// Plot flows for vector field {ax,ay} parametrically depended on coordinate {x,y} with color proportional to value |a|
void Flow(const mglData &x, const mglData &y, const mglData &ax, const mglData &ay, const char *sch=0, int num=5, bool central=true, mreal zVal=NAN);
/// Plot flows for vector field {ax,ay} with color proportional to value |a|
@@ -910,6 +903,11 @@ public:
void FlowP(mglPoint p0, const mglData &ax, const mglData &ay, const char *sch=0);
void FlowP(mglPoint p0, const mglData &x, const mglData &y, const mglData &z, const mglData &ax, const mglData &ay, const mglData &az, const char *sch=0);
void FlowP(mglPoint p0, const mglData &ax, const mglData &ay, const mglData &az, const char *sch=0);
+
+ void Grad(const mglData &x, const mglData &y, const mglData &z, const mglData &phi, const char *sch=0, int num=5);
+ void Grad(const mglData &x, const mglData &y, const mglData &phi, const char *sch=0, int num=5, mreal zVal=NAN);
+ void Grad(const mglData &phi, const char *sch=0, int num=5, mreal zVal=NAN);
+
/// Plot flow pipes for vector field {ax,ay} parametrically depended on coordinate {x,y} with color proportional to value |a|
void Pipe(const mglData &x, const mglData &y, const mglData &ax, const mglData &ay, const char *sch=0, mreal r0=0.05, int num=5, bool central=true, mreal zVal=NAN);
/// Plot flow pipes for vector field {ax,ay} with color proportional to value |a|
@@ -1054,7 +1052,7 @@ public:
//@}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
protected:
- bool TernAxis; /// Flag that Ternary axis is used
+ int TernAxis; /// Flag that Ternary axis is used
mreal FogDist; /// Inverse fog distance (fog ~ exp(-FogDist*Z))
mreal FogDz; /// Relative shift of fog
int _sx,_sy,_sz,_st; // sign in shift of axis ticks and labels
@@ -1063,14 +1061,15 @@ protected:
mglFont *fnt; ///< Class for printing vector text
mreal font_factor;
bool UseAlpha; ///< Flag that Alpha is used
- mglColor cmap[NUM_COLOR]; ///< Colors for color scheme
+ mglColor cmap[MGL_CMAP_COLOR]; ///< Colors for color scheme
char PalNames[101]; ///< IDs of colors in the palette
char DefPal[101]; ///< Default palette
int CurrPal; ///< Current index of palette mglGraph::Pal
int NumCol; ///< Actual number of colors in color scheme mglGraph::cmap
mreal CloudFactor; ///< Factor of transparency in mglGraph::CloudP and mglGraph::CloudQ
bool ScalePuts; ///< Enable/disable point positions scaling in puts
- bool SmoothColorbar; ///< Use color interpolation in colorbar (default is true)
+ bool SmoothColorbar; ///< Use color interpolation in colorbar (default is true)
+ int LegendMarks; ///< Number of marks in the Legend
wchar_t xtt[256]; ///< X-tick template (set NULL to use default one ("%.2g" in simplest case))
@@ -1111,6 +1110,7 @@ protected:
/// draw mark with different type at position {x,y,z} (no scaling)
virtual void Mark(mreal x,mreal y,mreal z,char mark='.')=0;
+ void InPlot(mreal x1,mreal x2,mreal y1,mreal y2, const char *style);
/// Draw generic colorbar
virtual void colorbar(const mglData &v, const mglColor *s, int where, mreal x, mreal y, mreal w, mreal h)=0;
/// Draws the point (ball) at position \a p with color \a c.
@@ -1139,12 +1139,14 @@ protected:
mreal *pp,mreal *cc,mreal *kk,mreal *nn,bool wire)=0;
/// Plot quads depending on positions and colors of vertexes on grid
virtual void quads_plot(long n, mreal *pp, mreal *cc, bool *tt)=0;
- /// Plot quads depending on positions and colors of vertexes on grid
+ /// Plot independent triangles
virtual void trigs_plot(long n, long *nn, long m, mreal *pp, mreal *cc, bool *tt,bool wire, bool bytrig=false)=0;
+ /// Plot independent quads
+ virtual void quads_plot(long n, long *nn, long m, mreal *pp, mreal *cc, bool *tt,bool wire, bool byquad)=0;
/// Plot series of unconnected lines.
- virtual void lines_plot(long n, mreal *pp, mreal *cc, bool *tt, bool ball)=0;
+ virtual void lines_plot(long n, mreal *pp, mreal *cc, bool *tt, bool ball, bool grad)=0;
/// Plot series of unconnected arrows.
- virtual void vects_plot(long n, mreal *pp, mreal *cc, bool *tt)=0;
+ virtual void vects_plot(long n, mreal *pp, mreal *cc, bool *tt, bool grad)=0;
/// Draw line between points \a p1,\a p2 with color \a c1, \a c2 at edges
virtual void line_plot(mreal *p1,mreal *p2,mreal *c1,mreal *c2,bool all=false)=0;
/// Draw glyph by peaces
@@ -1165,7 +1167,7 @@ protected:
mglColor GetC(mreal x,mreal y,mreal z,bool simple=false);
/// add point to contour line chain
long add_cpoint(long &pc,mreal **p,mreal **k,bool **t,mreal x,mreal y,mreal z,
- mreal k1,mreal k2,bool scale);
+ mreal k1,mreal k2,bool scale);
/// Draw tick
virtual void DrawTick(mreal *pp,bool sub);
@@ -1186,7 +1188,9 @@ private:
mglColor GetC2(mreal x,mreal y);
/// Prepare fitted formula
- void PrepareFitEq(mreal chi, const char *eq, const char *var, mreal *par, bool print);
+ void PrepareFitEq(mreal chi, const char *eq, const char *var, mreal *par, bool print);
+
+ void tricont_line(mreal val, long i, long k0, long k1, long k2, const mglData &x, const mglData &y, const mglData &z, const mglData &a, mreal zVal);
/// Print curved text
void font_curve(long n,mreal *pp,bool *tt,long *nn,const wchar_t *text,
int pos,mreal size);
@@ -1225,13 +1229,13 @@ private:
/// Set color depending on it value
void Color(mreal a,mreal a1=0,mreal a2=0); // ���� �����
/// Draw x axis
- void AxisX(bool text);
+ void AxisX(bool text, const char *stl);
/// Draw y axis
- void AxisY(bool text);
+ void AxisY(bool text, const char *stl);
/// Draw z axis
- void AxisZ(bool text);
+ void AxisZ(bool text, const char *stl);
/// Draw y,t-axis for Ternary plot
- void AxisT(bool text);
+ void AxisT(bool text, const char *stl);
/// Draw ticks on box
void TickBox();
/// Draw X,Y,Z grid line
@@ -1248,4 +1252,5 @@ private:
};
//-----------------------------------------------------------------------------
#endif
+#endif
//-----------------------------------------------------------------------------
diff --git a/include/mgl/mgl_ab.h b/include/mgl/mgl_ab.h
index 485d09e..862f52a 100644
--- a/include/mgl/mgl_ab.h
+++ b/include/mgl/mgl_ab.h
@@ -18,6 +18,9 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
//-----------------------------------------------------------------------------
+#ifdef _MGL_W_H_
+#warning "MathGL wrapper was enabled. So disable original MathGL classes"
+#else
#ifndef _MGL_AB_H_
#define _MGL_AB_H_
#include "mgl/mgl.h"
@@ -51,7 +54,6 @@ using mglGraph::Legend;
void Light(int n, bool enable);
void Light(int n,mglPoint p, mglColor c=WC, mreal br=0.5, bool infty=true);
- void RestoreM();
void InPlot(mreal x1,mreal x2,mreal y1,mreal y2, bool rel=false);
void StickPlot(int num, int i, mreal tet, mreal phi);
void Aspect(mreal Ax,mreal Ay,mreal Az);
@@ -117,11 +119,11 @@ using mglGraph::Legend;
const char *title, void *par=NULL,
void (*reload)(int next, void *p)=NULL, bool maximize=false);
/// Create a window for plotting based on class mglDraw.
- void Window(int argc, char **argv, mglDraw *draw, const char *title, bool maximize=false);
+ void Window(int argc, char **argv, const char *title, mglDraw *draw, bool maximize=false);
/// Push transformation matrix into stack
- void Push();
+ virtual void Push();
/// Pop transformation matrix from stack
- void Pop();
+ virtual void Pop();
/// Set diagonal matrix and its shift
void SetPosScale(mreal xp, mreal yp, mreal zp, mreal scl=1);
//@}
@@ -139,7 +141,6 @@ protected:
int Depth; ///< Depth of the image
mreal B[9]; ///< Transformation matrix (used by PostScale() function)
mreal B1[12]; ///< Transformation matrix for colorbar
- mreal BL[13]; ///< Previous transformation matrix
mreal inW, inH; ///< Relative width and height of last InPlot
unsigned PDef; ///< Pen bit mask
mreal pPos; ///< Current position in pen mask
@@ -221,10 +222,11 @@ protected:
bool *tt,mreal Alpha, bool line);
void surf3_plot(long n,long m,long *kx1,long *kx2,long *ky1,long *ky2,long *kz,
mreal *pp,mreal *cc,mreal *kk,mreal *nn,bool wire);
- void trigs_plot(long n, long *nn, long m, mreal *pp, mreal *cc, bool *tt,bool wire, bool bytrig=false);
+ void trigs_plot(long n, long *nn, long m, mreal *pp, mreal *cc, bool *tt,bool wire, bool bytrig=false);
+ void quads_plot(long n, long *nn, long m, mreal *pp, mreal *cc, bool *tt,bool wire, bool byquad);
void quads_plot(long n, mreal *pp, mreal *cc, bool *tt);
- void lines_plot(long n, mreal *pp, mreal *cc, bool *tt, bool ball);
- void vects_plot(long n, mreal *pp, mreal *cc, bool *tt);
+ void lines_plot(long n, mreal *pp, mreal *cc, bool *tt, bool ball, bool grad);
+ void vects_plot(long n, mreal *pp, mreal *cc, bool *tt, bool grad);
void glyph_fill(mreal x,mreal y, mreal f, int nt, const short *trig, mreal *c);
void glyph_wire(mreal x,mreal y, mreal f, int nl, const short *line, mreal *c);
void glyph_line(mreal x,mreal y, mreal f, mreal *c, bool solid);
@@ -239,4 +241,5 @@ private:
};
//-----------------------------------------------------------------------------
#endif
+#endif
//-----------------------------------------------------------------------------
diff --git a/include/mgl/mgl_addon.h b/include/mgl/mgl_addon.h
index 561a616..bd5224c 100644
--- a/include/mgl/mgl_addon.h
+++ b/include/mgl/mgl_addon.h
@@ -18,6 +18,9 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
//---------------------------------------------------------------------------
+#ifdef _MGL_W_H_
+#warning "MathGL wrapper was enabled. So disable original MathGL classes"
+#else
#ifndef _MGL_ADDON_H_
#define _MGL_ADDON_H_
//---------------------------------------------------------------------------
@@ -67,3 +70,4 @@ bool mglDifrAxial(dual *a, int n, dual q, int Border,dual *b, dual *d, int kk, d
bool mglDifrGrid(dual *a,int n,dual q,int Border,dual *b,dual *d,int kk);
//---------------------------------------------------------------------------
#endif
+#endif
diff --git a/include/mgl/mgl_c.h b/include/mgl/mgl_c.h
index 5d428b1..ca8f9ea 100644
--- a/include/mgl/mgl_c.h
+++ b/include/mgl/mgl_c.h
@@ -70,7 +70,23 @@ HMGL mgl_create_graph_glut_dr(HMDR dr, const char *title);
HMGL mgl_create_graph_fltk_dr(HMDR dr, const char *title);
HMGL mgl_create_graph_qt_dr(HMDR dr, const char *title);
void mgl_fltk_run();
-void mgl_qt_run();
+void mgl_qt_run();
+
+void mgl_wnd_set_delay(HMGL gr, mreal dt);
+void mgl_wnd_set_auto_clf(HMGL gr, int val);
+void mgl_wnd_set_show_mouse_pos(HMGL gr, int val);
+void mgl_wnd_set_clf_update(HMGL gr, int val);
+void mgl_wnd_toggle_alpha(HMGL gr);
+void mgl_wnd_toggle_light(HMGL gr);
+void mgl_wnd_toggle_zoom(HMGL gr);
+void mgl_wnd_toggle_rotate(HMGL gr);
+void mgl_wnd_toggle_no(HMGL gr);
+void mgl_wnd_update(HMGL gr);
+void mgl_wnd_reload(HMGL gr, int o);
+void mgl_wnd_adjust(HMGL gr);
+void mgl_wnd_next_frame(HMGL gr);
+void mgl_wnd_prev_frame(HMGL gr);
+void mgl_wnd_animation(HMGL gr);
#endif
void mgl_set_show_mouse_pos(HMGL gr, int enable);
void mgl_get_last_mouse_pos(HMGL gr, mreal *x, mreal *y, mreal *z);
@@ -87,7 +103,8 @@ HMDT mgl_create_data_file(const char *fname);
void mgl_delete_data(HMDT dat);
/*****************************************************************************/
HMPR mgl_create_parser();
-void mgl_delete_parser(HMPR p);
+void mgl_delete_parser(HMPR p);
+void mgl_scan_func(HMPR p, const wchar_t *line);
void mgl_add_param(HMPR p, int id, const char *str);
void mgl_add_paramw(HMPR p, int id, const wchar_t *str);
/*===!!! NOTE !!! You must not delete obtained data arrays !!!===============*/
@@ -128,7 +145,8 @@ void mgl_set_draw_face(HMGL gr, int enable);
void mgl_set_scheme(HMGL gr, const char *sch);
void mgl_load_font(HMGL gr, const char *name, const char *path);
void mgl_copy_font(HMGL gr, HMGL gr_from);
-void mgl_restore_font(HMGL gr);
+void mgl_restore_font(HMGL gr);
+int mgl_get_warn(HMGL gr);
/*****************************************************************************/
/* Export to file or to memory */
/*****************************************************************************/
@@ -167,15 +185,19 @@ void mgl_set_ambbr(HMGL gr, mreal i);
/*****************************************************************************/
/* Scale and rotate */
/*****************************************************************************/
+void mgl_mat_pop(HMGL gr);
+void mgl_mat_push(HMGL gr);
void mgl_identity(HMGL graph, int rel);
void mgl_clf(HMGL graph);
void mgl_flush(HMGL gr);
void mgl_clf_rgb(HMGL graph, mreal r, mreal g, mreal b);
void mgl_subplot(HMGL graph, int nx,int ny,int m);
void mgl_subplot_d(HMGL graph, int nx,int ny,int m, mreal dx, mreal dy);
+void mgl_subplot_s(HMGL graph, int nx,int ny,int m,const char *style);
void mgl_inplot(HMGL graph, mreal x1,mreal x2,mreal y1,mreal y2);
void mgl_relplot(HMGL graph, mreal x1,mreal x2,mreal y1,mreal y2);
void mgl_columnplot(HMGL graph, int num, int ind);
+void mgl_columnplot_d(HMGL graph, int num, int ind, mreal d);
void mgl_stickplot(HMGL graph, int num, int ind, mreal tet, mreal phi);
void mgl_aspect(HMGL graph, mreal Ax,mreal Ay,mreal Az);
void mgl_rotate(HMGL graph, mreal TetX,mreal TetZ,mreal TetY);
@@ -194,6 +216,8 @@ void mgl_set_caxis(HMGL graph, mreal C1,mreal C2);
void mgl_set_axis(HMGL graph, mreal x1, mreal y1, mreal z1, mreal x2, mreal y2, mreal z2, mreal x0, mreal y0, mreal z0);
void mgl_set_axis_3d(HMGL graph, mreal x1, mreal y1, mreal z1, mreal x2, mreal y2, mreal z2);
void mgl_set_axis_2d(HMGL graph, mreal x1, mreal y1, mreal x2, mreal y2);
+inline void mgl_set_ranges(HMGL graph, mreal x1, mreal x2, mreal y1, mreal y2, mreal z1, mreal z2)
+{ mgl_set_axis_3d(graph, x1,y1,z1,x2,y2,z2); };
void mgl_set_origin(HMGL graph, mreal x0, mreal y0, mreal z0);
void mgl_set_tick_origin(HMGL graph, mreal x0, mreal y0, mreal z0);
void mgl_set_crange(HMGL graph, const HMDT a, int add);
@@ -256,7 +280,8 @@ void mgl_add_legendw(HMGL graph, const wchar_t *text,const char *style);
void mgl_clear_legend(HMGL graph);
void mgl_legend_xy(HMGL graph, mreal x, mreal y, const char *font, mreal size, mreal llen);
void mgl_legend(HMGL graph, int where, const char *font, mreal size, mreal llen);
-void mgl_set_legend_box(HMGL gr, int enable);
+void mgl_set_legend_box(HMGL gr, int enable);
+void mgl_set_legend_marks(HMGL gr, int num);
/*****************************************************************************/
/* 1D plotting functions */
/*****************************************************************************/
@@ -265,8 +290,6 @@ void mgl_fplot_xyz(HMGL graph, const char *fx, const char *fy, const char *fz, c
void mgl_plot_xyz(HMGL graph, const HMDT x, const HMDT y, const HMDT z, const char *pen);
void mgl_plot_xy(HMGL graph, const HMDT x, const HMDT y, const char *pen);
void mgl_plot(HMGL graph, const HMDT y, const char *pen);
-void mgl_plot_2(HMGL graph, const HMDT a, const char *pen);
-void mgl_plot_3(HMGL graph, const HMDT a, const char *pen);
void mgl_radar(HMGL graph, const HMDT a, const char *pen, mreal r);
void mgl_boxplot_xy(HMGL graph, const HMDT x, const HMDT a, const char *pen);
void mgl_boxplot(HMGL graph, const HMDT a, const char *pen);
@@ -278,33 +301,24 @@ void mgl_area_xy(HMGL graph, const HMDT x, const HMDT y, const char *pen);
void mgl_area_xys(HMGL graph, const HMDT x, const HMDT y, const char *pen);
void mgl_area_s(HMGL graph, const HMDT y, const char *pen);
void mgl_area(HMGL graph, const HMDT y, const char *pen);
-void mgl_area_2(HMGL graph, const HMDT a, const char *pen);
-void mgl_area_3(HMGL graph, const HMDT a, const char *pen);
void mgl_region_xy(HMGL graph, const HMDT x, const HMDT y1, const HMDT y2, const char *pen, int inside);
void mgl_region(HMGL graph, const HMDT y1, const HMDT y2, const char *pen, int inside);
void mgl_mark(HMGL graph, mreal x,mreal y,mreal z,char mark);
void mgl_stem_xyz(HMGL graph, const HMDT x, const HMDT y, const HMDT z, const char *pen);
void mgl_stem_xy(HMGL graph, const HMDT x, const HMDT y, const char *pen);
void mgl_stem(HMGL graph, const HMDT y, const char *pen);
-void mgl_stem_2(HMGL graph, const HMDT a, const char *pen);
-void mgl_stem_3(HMGL graph, const HMDT a, const char *pen);
void mgl_step_xyz(HMGL graph, const HMDT x, const HMDT y, const HMDT z, const char *pen);
void mgl_step_xy(HMGL graph, const HMDT x, const HMDT y, const char *pen);
void mgl_step(HMGL graph, const HMDT y, const char *pen);
-void mgl_step_2(HMGL graph, const HMDT a, const char *pen);
-void mgl_step_3(HMGL graph, const HMDT a, const char *pen);
void mgl_bars_xyz(HMGL graph, const HMDT x, const HMDT y, const HMDT z, const char *pen);
void mgl_bars_xy(HMGL graph, const HMDT x, const HMDT y, const char *pen);
void mgl_bars(HMGL graph, const HMDT y, const char *pen);
-void mgl_bars_2(HMGL graph, const HMDT a, const char *pen);
-void mgl_bars_3(HMGL graph, const HMDT a, const char *pen);
void mgl_barh_yx(HMGL graph, const HMDT y, const HMDT v, const char *pen);
void mgl_barh(HMGL graph, const HMDT v, const char *pen);
/*****************************************************************************/
/* Advanced 1D plotting functions */
/*****************************************************************************/
void mgl_torus(HMGL graph, const HMDT r, const HMDT z, const char *pen);
-void mgl_torus_2(HMGL graph, const HMDT a, const char *pen);
void mgl_text_xyz(HMGL graph, const HMDT x, const HMDT y, const HMDT z,const char *text, const char *font, mreal size);
void mgl_text_xy(HMGL graph, const HMDT x, const HMDT y, const char *text, const char *font, mreal size);
void mgl_text_y(HMGL graph, const HMDT y, const char *text, const char *font, mreal size);
@@ -422,6 +436,10 @@ void mgl_pipe_xyz(HMGL graph, const HMDT x, const HMDT y, const HMDT z, const HM
void mgl_pipe_3d(HMGL graph, const HMDT ax, const HMDT ay, const HMDT az, const char *sch, mreal r0, int num, int central);
void mgl_dew_xy(HMGL gr, const HMDT x, const HMDT y, const HMDT ax, const HMDT ay, const char *sch,mreal zVal);
void mgl_dew_2d(HMGL gr, const HMDT ax, const HMDT ay, const char *sch,mreal zVal);
+
+void mgl_grad_xyz(HMGL graph, const HMDT x, const HMDT y, const HMDT z, const HMDT ph, const char *sch, int num);
+void mgl_grad_xy(HMGL graph, const HMDT x, const HMDT y, const HMDT ph, const char *sch, int num, mreal zVal);
+void mgl_grad(HMGL graph, const HMDT ph, const char *sch, int num, mreal zVal);
/*****************************************************************************/
/* 3D plotting functions */
/*****************************************************************************/
@@ -461,6 +479,13 @@ void mgl_beam(HMGL graph, const HMDT tr, const HMDT g1, const HMDT g2, const HMD
void mgl_triplot_xyzc(HMGL gr, const HMDT nums, const HMDT x, const HMDT y, const HMDT z, const HMDT c, const char *sch);
void mgl_triplot_xyz(HMGL gr, const HMDT nums, const HMDT x, const HMDT y, const HMDT z, const char *sch);
void mgl_triplot_xy(HMGL gr, const HMDT nums, const HMDT x, const HMDT y, const char *sch, mreal zVal);
+void mgl_quadplot_xyzc(HMGL gr, const HMDT nums, const HMDT x, const HMDT y, const HMDT z, const HMDT c, const char *sch);
+void mgl_quadplot_xyz(HMGL gr, const HMDT nums, const HMDT x, const HMDT y, const HMDT z, const char *sch);
+void mgl_quadplot_xy(HMGL gr, const HMDT nums, const HMDT x, const HMDT y, const char *sch, mreal zVal);
+void mgl_tricont_xyzcv(HMGL gr, const HMDT v, const HMDT nums, const HMDT x, const HMDT y, const HMDT z, const HMDT c, const char *sch, mreal zVal);
+void mgl_tricont_xyzv(HMGL gr, const HMDT v, const HMDT nums, const HMDT x, const HMDT y, const HMDT z, const char *sch, mreal zVal);
+void mgl_tricont_xyzc(HMGL gr, const HMDT nums, const HMDT x, const HMDT y, const HMDT z, const HMDT c, const char *sch, int n, mreal zVal);
+void mgl_tricont_xyz(HMGL gr, const HMDT nums, const HMDT x, const HMDT y, const HMDT z, const char *sch, int n, mreal zVal);
void mgl_dots(HMGL gr, const HMDT x, const HMDT y, const HMDT z, const char *sch);
void mgl_dots_a(HMGL gr, const HMDT x, const HMDT y, const HMDT z, const HMDT a, const char *sch);
void mgl_dots_tr(HMGL gr, const HMDT tr, const char *sch);
@@ -557,7 +582,14 @@ void mgl_data_diff(HMDT dat, const char *dir);
void mgl_data_diff_par(HMDT dat, const HMDT v1, const HMDT v2, const HMDT v3);
void mgl_data_diff2(HMDT dat, const char *dir);
void mgl_data_swap(HMDT dat, const char *dir);
+void mgl_data_roll(HMDT dat, char dir, int num);
void mgl_data_mirror(HMDT dat, const char *dir);
+
+void mgl_data_hankel(HMDT dat, const char *dir);
+void mgl_data_sinfft(HMDT dat, const char *dir);
+void mgl_data_cosfft(HMDT dat, const char *dir);
+void mgl_data_fill_sample(HMDT dat, int num, const char *how);
+
mreal mgl_data_spline(const HMDT dat, mreal x,mreal y,mreal z);
mreal mgl_data_spline1(const HMDT dat, mreal x,mreal y,mreal z);
mreal mgl_data_linear(const HMDT dat, mreal x,mreal y,mreal z);
diff --git a/include/mgl/mgl_data.h b/include/mgl/mgl_data.h
index de9212f..0039db9 100644
--- a/include/mgl/mgl_data.h
+++ b/include/mgl/mgl_data.h
@@ -17,6 +17,9 @@
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
+#ifdef _MGL_W_H_
+#warning "MathGL wrapper was enabled. So disable original MathGL classes"
+#else
#ifndef _MGL_DATA_H_
#define _MGL_DATA_H_
//-----------------------------------------------------------------------------
@@ -34,16 +37,6 @@ struct gsl_matrix;
#endif
#include "mgl/mgl_define.h"
//-----------------------------------------------------------------------------
-/// Class for drawing in windows (like, mglGraphFLTK, mglGraphQT and so on)
-/// Make inherited class and redefine Draw() function if you don't want to use function pointers.
-class mglGraph;
-struct mglDraw
-{
- virtual int Draw(mglGraph *) { return 0; };
- virtual void Reload(int) {};
- virtual ~mglDraw() {};
-};
-//-----------------------------------------------------------------------------
/// Class for incapsulating point in space
struct mglPoint
{
@@ -79,7 +72,10 @@ inline mreal Norm(const mglPoint &p)
//-----------------------------------------------------------------------------
/// Class for working with data array
class mglData
-{
+{
+protected:
+ /// Read data array from HDF4 file
+ void ReadHDF4(const char *fname,const char *data);
public:
long nx; ///< number of points in 1st dimensions ('x' dimension)
@@ -136,10 +132,12 @@ public:
/// Rearange data dimensions
void Rearrange(int mx, int my=0, int mz=0);
- /// Read data array from HDF file
+ /// Read data array from HDF file (parse HDF4 and HDF5 files)
void ReadHDF(const char *fname,const char *data);
/// Save data to HDF file
- void SaveHDF(const char *fname,const char *data,bool rewrite=false) const;
+ void SaveHDF(const char *fname,const char *data,bool rewrite=false) const;
+ /// Put HDF data names into buf as '\t' separated.
+ int DatasHDF(const char *fname, char *buf, long size);
/// Read data from tab-separated text file with auto determining size
bool Read(const char *fname);
/// Read data from text file with specifeid size
@@ -180,7 +178,9 @@ public:
/// Modify the data by specified formula assuming x,y,z in range [r1,r2]
void Fill(const char *eq, mglPoint r1, mglPoint r2, const mglData *v=0, const mglData *w=0);
/// Eqidistantly fill the data to range [x1,x2] in direction \a dir
- void Fill(mreal x1,mreal x2,char dir='x');
+ void Fill(mreal x1,mreal x2,char dir='x');
+ /// Fill data by 'x'/'k' samples for Hankel ('h') or Fourier ('f') transform
+ void FillSample(int n, const char *how);
/// Get column (or slice) of the data filled by formulas of other named columns
mglData Column(const char *eq);
/// Set names for columns (slices)
@@ -270,8 +270,17 @@ public:
void Diff2(const char *dir);
/// Swap left and right part of the data in given direction (useful for fourier spectrums)
void Swap(const char *dir);
+ /// Roll data along direction \a dir by \a num slices
+ void Roll(char dir, int num);
/// Mirror the data in given direction (useful for fourier spectrums)
- void Mirror(const char *dir);
+ void Mirror(const char *dir);
+
+ /// Hankel transform
+ void Hankel(const char *dir);
+ /// Sin-Fourier transform
+ void SinFFT(const char *dir);
+ /// Cos-Fourier transform
+ void CosFFT(const char *dir);
/// Interpolate by 5-th order splain the data to given point \a x,\a y,\a z which normalized in range [0, 1] and evaluate its derivatives
mreal Spline5(mreal x,mreal y,mreal z,mreal &dx,mreal &dy,mreal &dz) const;
@@ -364,3 +373,4 @@ mglData mglJacobian(const mglData &x, const mglData &y);
mglData mglJacobian(const mglData &x, const mglData &y, const mglData &z);
//-----------------------------------------------------------------------------
#endif
+#endif
diff --git a/include/mgl/mgl_define.h b/include/mgl/mgl_define.h
index 665881b..8b4fcb7 100644
--- a/include/mgl/mgl_define.h
+++ b/include/mgl/mgl_define.h
@@ -26,14 +26,21 @@
#endif
#include <math.h>
+
+#define MGL_VERSION 11.0
-#ifdef WIN32
+//#ifdef WIN32
+#ifdef _MSC_VER
#include <float.h>
const unsigned long mgl_nan[2] = {0xffffffff, 0x7fffffff};
#define NANd (*(double*)mgl_nan)
#define NANf (*(float*)&(mgl_nan[1]))
+#if(MGL_USE_DOUBLE==1)
+#define NAN NANd
+#else
#define NAN NANd
-#if defined(_MSC_VER)
+#endif
+#ifdef _MSC_VER
#define chdir _chdir // BORLAND has chdir
#endif
#endif
@@ -60,6 +67,14 @@ typedef double mreal;
typedef float mreal;
#endif
//-----------------------------------------------------------------------------
+#ifndef MGL_CMAP_COLOR
+#define MGL_CMAP_COLOR 32
+#endif
+//-----------------------------------------------------------------------------
+#ifndef MGL_DEF_VIEWER
+#define MGL_DEF_VIEWER "evince"
+#endif
+//-----------------------------------------------------------------------------
#define mgl_min(a,b) (((a)>(b)) ? (b) : (a))
#define mgl_max(a,b) (((a)>(b)) ? (a) : (b))
//-----------------------------------------------------------------------------
@@ -93,6 +108,7 @@ enum{ // types of predefined curvelinear coordinate systems
#define MGL_VEC_END 4 // draw vector to point
#define MGL_VEC_MID 8 // draw vector with point at center
#define MGL_VEC_DOT 16 // draw dot instead of vector
+#define MGL_VEC_GRD 32 // enable color gradient along vector/dash
//-----------------------------------------------------------------------------
enum{ // Codes for warnings/messages
mglWarnNone = 0,// Everything OK
@@ -110,6 +126,7 @@ enum{ // Codes for warnings/messages
mglWarnLId, // Light: ID is out of range
mglWarnSize, // Setsize: size(s) is zero or negative
mglWarnFmt, // Format is not supported for that build
+ mglWarnTern, // Axis ranges are incompatible
mglWarnEnd // Maximal number of warnings (must be last)
};
//-----------------------------------------------------------------------------
@@ -139,6 +156,16 @@ mreal mglStartThread(void *(*func)(void *), mreal (*fres)(mreal,mreal), int n, m
#define MGL_NTH_DEF 1
#endif
extern int mglNumThr; ///< Number of thread for plotting and data handling
+//-----------------------------------------------------------------------------
+/// Class for drawing in windows (like, mglGraphFLTK, mglGraphQT and so on)
+/// Make inherited class and redefine Draw() function if you don't want to use function pointers.
+class mglGraph;
+struct mglDraw
+{
+ virtual int Draw(mglGraph *) { return 0; };
+ virtual void Reload(int) {};
+ virtual ~mglDraw() {};
+};
//-----------------------------------------------------------------------------
#endif
//-----------------------------------------------------------------------------
diff --git a/include/mgl/mgl_eps.h b/include/mgl/mgl_eps.h
index ccae661..ece353f 100644
--- a/include/mgl/mgl_eps.h
+++ b/include/mgl/mgl_eps.h
@@ -18,6 +18,9 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
//-----------------------------------------------------------------------------
+#ifdef _MGL_W_H_
+#warning "MathGL wrapper was enabled. So disable original MathGL classes"
+#else
#ifndef _MGL_PS_H_
#define _MGL_PS_H_
#include "mgl/mgl_ab.h"
@@ -33,14 +36,13 @@ struct mglPrim
wchar_t m; ///< mark or symbol id (if applicable)
int type; ///< type of primitive (0 - point, 1 - line, 2 - trig, 3 - quad, 4 - glyph)
int style; ///< style of pen
- unsigned short dash;///< mreal pen dashing
+// unsigned short dash;///< mreal pen dashing
int id; ///< object id
int sid; ///< subplot id
void Draw(mglGraphPS *gr);
void DrawGL();
bool IsSame(mreal wp,mreal *cp,int st);
- void SetStyle(unsigned PDef, int pPos);
mglPrim(int t=0) { memset(this,0,sizeof(mglPrim)); type = t; c[3]=1; };
// ~mglPrim() { if(raw) delete []raw; };
inline void operator=(mglPrim &a) { memcpy(this,&a,sizeof(mglPrim)); };
@@ -86,10 +88,11 @@ protected:
void add_light(mreal *c, mreal n1,mreal n2, mreal n3);
void pnt_plot(long x,long y,mreal z,unsigned char c[4]);
private:
- void put_line(FILE *fp, long i, mreal wp,mreal *cp,int st, const char *ifmt, const char *nfmt, bool neg);
- void put_desc(FILE *fp, const char *pre, const char *ln1, const char *ln2, const char *ln3, const char *suf);
+ void put_line(void *fp, bool gz, long i, mreal wp,mreal *cp,int st, const char *ifmt, const char *nfmt, bool neg);
+ void put_desc(void *fp, bool gz, const char *pre, const char *ln1, const char *ln2, const char *ln3, const char *suf);
void draw_prim(mglPrim *pr, mreal *pp, mreal *c);
};
//-----------------------------------------------------------------------------
#endif
+#endif
//-----------------------------------------------------------------------------
diff --git a/include/mgl/mgl_eval.h b/include/mgl/mgl_eval.h
index d0e28d0..843387e 100644
--- a/include/mgl/mgl_eval.h
+++ b/include/mgl/mgl_eval.h
@@ -18,6 +18,9 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
//---------------------------------------------------------------------------
+#ifdef _MGL_W_H_
+#warning "MathGL wrapper was enabled. So disable original MathGL classes"
+#else
#ifndef _MGL_EVAL_H_
#define _MGL_EVAL_H_
//---------------------------------------------------------------------------
@@ -60,3 +63,4 @@ protected:
char *mgl_strdup(const char *s);
//-----------------------------------------------------------------------------
#endif
+#endif
diff --git a/include/mgl/mgl_evalc.h b/include/mgl/mgl_evalc.h
index 39fc290..3fece5a 100644
--- a/include/mgl/mgl_evalc.h
+++ b/include/mgl/mgl_evalc.h
@@ -18,6 +18,9 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
//---------------------------------------------------------------------------
+#ifdef _MGL_W_H_
+#warning "MathGL wrapper was enabled. So disable original MathGL classes"
+#else
#ifndef _MGL_EVALC_H_
#define _MGL_EVALC_H_
//---------------------------------------------------------------------------
@@ -51,3 +54,4 @@ protected:
};
//---------------------------------------------------------------------------
#endif
+#endif
diff --git a/include/mgl/mgl_f.h b/include/mgl/mgl_f.h
index b128e2f..94c85c4 100644
--- a/include/mgl/mgl_f.h
+++ b/include/mgl/mgl_f.h
@@ -57,6 +57,22 @@ void mgl_calc_xyz_(uintptr_t *gr, int *xs, int *ys, mreal *x, mreal *y, mreal *z
void mgl_calc_scr_(uintptr_t *gr, mreal *x, mreal *y, mreal *z, int *xs, int *ys);
//void mgl_fltk_thread_();
//void mgl_qt_thread_();
+
+void mgl_wnd_set_delay_(uintptr_t *gr, mreal *dt);
+void mgl_wnd_set_auto_clf_(uintptr_t *gr, int *val);
+void mgl_wnd_set_show_mouse_pos_(uintptr_t *gr, int *val);
+void mgl_wnd_set_clf_update_(uintptr_t *gr, int *val);
+void mgl_wnd_toggle_alpha_(uintptr_t *gr);
+void mgl_wnd_toggle_light_(uintptr_t *gr);
+void mgl_wnd_toggle_zoom_(uintptr_t *gr);
+void mgl_wnd_toggle_rotate_(uintptr_t *gr);
+void mgl_wnd_toggle_no_(uintptr_t *gr);
+void mgl_wnd_update_(uintptr_t *gr);
+void mgl_wnd_reload_(uintptr_t *gr, int *o);
+void mgl_wnd_adjust_(uintptr_t *gr);
+void mgl_wnd_next_frame_(uintptr_t *gr);
+void mgl_wnd_prev_frame_(uintptr_t *gr);
+void mgl_wnd_animation_(uintptr_t *gr);
/*****************************************************************************/
uintptr_t mgl_create_data_();
uintptr_t mgl_create_data_size_(int *nx, int *ny, int *nz);
@@ -90,7 +106,8 @@ void mgl_set_draw_face_(uintptr_t *gr, int *enable);
void mgl_set_scheme_(uintptr_t *gr, char *sch, int);
void mgl_load_font_(uintptr_t *gr, char *name, char *path, int l, int n);
void mgl_copy_font_(uintptr_t *gr, uintptr_t *gr_from);
-void mgl_restore_font_(uintptr_t *gr);
+void mgl_restore_font_(uintptr_t *gr);
+int mgl_get_warn_(uintptr_t *gr);
/*****************************************************************************/
/* Export to file or to memory */
/*****************************************************************************/
@@ -130,15 +147,19 @@ void mgl_set_ambbr_(uintptr_t *gr, mreal *i);
/*****************************************************************************/
/* Scale and rotate */
/*****************************************************************************/
+void mgl_mat_push_(uintptr_t *gr);
+void mgl_mat_pop_(uintptr_t *gr);
void mgl_identity_(uintptr_t *graph, int *rel);
void mgl_clf_(uintptr_t *graph);
void mgl_flush_(uintptr_t *gr);
void mgl_clf_rgb_(uintptr_t *graph, mreal *r, mreal *g, mreal *b);
void mgl_subplot_(uintptr_t *graph, int *nx,int *ny,int *m);
void mgl_subplot_d_(uintptr_t *graph, int *nx,int *ny,int *m,mreal *dx,mreal *dy);
+void mgl_subplot_s_(uintptr_t *graph, int *nx,int *ny,int *m, const char *s,int);
void mgl_inplot_(uintptr_t *graph, mreal *x1,mreal *x2,mreal *y1,mreal *y2);
void mgl_relplot_(uintptr_t *graph, mreal *x1,mreal *x2,mreal *y1,mreal *y2);
void mgl_columnplot_(uintptr_t *graph, int *num, int *i);
+void mgl_columnplot_d_(uintptr_t *graph, int *num, int *i, mreal *d);
void mgl_stickplot_(uintptr_t *graph, int *num, int *i, mreal *tet, mreal *phi);
void mgl_aspect_(uintptr_t *graph, mreal *Ax,mreal *Ay,mreal *Az);
void mgl_rotate_(uintptr_t *graph, mreal *TetX,mreal *TetZ,mreal *TetY);
@@ -156,6 +177,8 @@ void mgl_set_caxis_(uintptr_t *graph, mreal *C1,mreal *C2);
void mgl_set_axis_(uintptr_t *graph, mreal *x1, mreal *y1, mreal *z1, mreal *x2, mreal *y2, mreal *z2, mreal *x0, mreal *y0, mreal *z0);
void mgl_set_axis_3d_(uintptr_t *graph, mreal *x1, mreal *y1, mreal *z1, mreal *x2, mreal *y2, mreal *z2);
void mgl_set_axis_2d_(uintptr_t *graph, mreal *x1, mreal *y1, mreal *x2, mreal *y2);
+inline void mgl_set_ranges_(uintptr_t *graph, mreal *x1, mreal *x2, mreal *y1, mreal *y2, mreal *z1, mreal *z2)
+{ mgl_set_axis_3d_(graph, x1,y1,z1,x2,y2,z2); };
void mgl_set_origin_(uintptr_t *graph, mreal *x0, mreal *y0, mreal *z0);
void mgl_set_tick_origin_(uintptr_t *graph, mreal *x0, mreal *y0, mreal *z0);
void mgl_set_crange_(uintptr_t *graph, uintptr_t *a, int *add);
@@ -208,6 +231,7 @@ void mgl_clear_legend_(uintptr_t *graph);
void mgl_legend_xy_(uintptr_t *graph, mreal *x, mreal *y, const char *font, mreal *size, mreal *llen,int);
void mgl_legend_(uintptr_t *graph, int *where, const char *font, mreal *size, mreal *llen,int);
void mgl_set_legend_box_(uintptr_t *gr, int *enable);
+void mgl_set_legend_marks_(uintptr_t *gr, int *num);
/*****************************************************************************/
/* 1D plotting functions */
/*****************************************************************************/
@@ -216,8 +240,6 @@ void mgl_fplot_xyz_(uintptr_t *graph, const char *fx, const char *fy, const char
void mgl_plot_xyz_(uintptr_t *graph, uintptr_t *x, uintptr_t *y, uintptr_t *z, const char *pen,int);
void mgl_plot_xy_(uintptr_t *graph, uintptr_t *x, uintptr_t *y, const char *pen,int);
void mgl_plot_(uintptr_t *graph, uintptr_t *y, const char *pen,int);
-void mgl_plot_2_(uintptr_t *graph, uintptr_t *a, const char *pen,int);
-void mgl_plot_3_(uintptr_t *graph, uintptr_t *a, const char *pen,int);
void mgl_radar_(uintptr_t *graph, uintptr_t *a, const char *pen, mreal *r, int);
void mgl_boxplot_xy_(uintptr_t *graph, uintptr_t *x, uintptr_t *y, const char *pen,int);
void mgl_boxplot_(uintptr_t *graph, uintptr_t *y, const char *pen,int);
@@ -228,33 +250,24 @@ void mgl_area_xyz_(uintptr_t *graph, uintptr_t *x, uintptr_t *y, uintptr_t *z, c
void mgl_area_xy_(uintptr_t *graph, uintptr_t *x, uintptr_t *y, const char *pen,int);
void mgl_area_s_(uintptr_t *graph, uintptr_t *y, const char *pen,int);
void mgl_area_(uintptr_t *graph, uintptr_t *y, const char *pen,int);
-void mgl_area_2_(uintptr_t *graph, uintptr_t *a, const char *pen,int);
-void mgl_area_3_(uintptr_t *graph, uintptr_t *a, const char *pen,int);
void mgl_region_xy_(uintptr_t *graph, uintptr_t *x, uintptr_t *y1, uintptr_t *y2, const char *pen, int *inside, int);
void mgl_region_(uintptr_t *graph, uintptr_t *y1, uintptr_t *y2, const char *pen, int *inside, int);
void mgl_mark_(uintptr_t *graph, mreal *x,mreal *y,mreal *z,const char *mark,int);
void mgl_stem_xyz_(uintptr_t *graph, uintptr_t *x, uintptr_t *y, uintptr_t *z, const char *pen,int);
void mgl_stem_xy_(uintptr_t *graph, uintptr_t *x, uintptr_t *y, const char *pen,int);
void mgl_stem_(uintptr_t *graph, uintptr_t *y, const char *pen,int);
-void mgl_stem_2_(uintptr_t *graph, uintptr_t *a, const char *pen,int);
-void mgl_stem_3_(uintptr_t *graph, uintptr_t *a, const char *pen,int);
void mgl_step_xyz_(uintptr_t *graph, uintptr_t *x, uintptr_t *y, uintptr_t *z, const char *pen,int);
void mgl_step_xy_(uintptr_t *graph, uintptr_t *x, uintptr_t *y, const char *pen,int);
void mgl_step_(uintptr_t *graph, uintptr_t *y, const char *pen,int);
-void mgl_step_2_(uintptr_t *graph, uintptr_t *a, const char *pen,int);
-void mgl_step_3_(uintptr_t *graph, uintptr_t *a, const char *pen,int);
void mgl_bars_xyz_(uintptr_t *graph, uintptr_t *x, uintptr_t *y, uintptr_t *z, const char *pen,int);
void mgl_bars_xy_(uintptr_t *graph, uintptr_t *x, uintptr_t *y, const char *pen,int);
void mgl_bars_(uintptr_t *graph, uintptr_t *y, const char *pen,int);
-void mgl_bars_2_(uintptr_t *graph, uintptr_t *a, const char *pen,int);
-void mgl_bars_3_(uintptr_t *graph, uintptr_t *a, const char *pen,int);
void mgl_barh_yx_(uintptr_t *graph, uintptr_t *y, uintptr_t *v, const char *pen,int);
void mgl_barh_(uintptr_t *graph, uintptr_t *v, const char *pen,int);
/*****************************************************************************/
/* Advanced 1D plotting functions */
/*****************************************************************************/
void mgl_torus_(uintptr_t *graph, uintptr_t *r, uintptr_t *z, const char *pen,int);
-void mgl_torus_2_(uintptr_t *graph, uintptr_t *a, const char *pen,int);
void mgl_text_xyz_(uintptr_t *graph, uintptr_t *x, uintptr_t *y, uintptr_t *z,const char *text, const char *font, mreal *size,int,int);
void mgl_text_xy_(uintptr_t *graph, uintptr_t *x, uintptr_t *y, const char *text, const char *font, mreal *size,int,int);
void mgl_text_y_(uintptr_t *graph, uintptr_t *y, const char *text, const char *font, mreal *size,int,int);
@@ -371,6 +384,10 @@ void mgl_pipe_xyz_(uintptr_t *graph, uintptr_t *x, uintptr_t *y, uintptr_t *z, u
void mgl_pipe_3d_(uintptr_t *graph, uintptr_t *ax, uintptr_t *ay, uintptr_t *az, const char *sch, mreal *r0, int *num, int *central,int);
void mgl_dew_xy_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, uintptr_t *ax, uintptr_t *ay, const char *sch, mreal *zVal,int l);
void mgl_dew_2d_(uintptr_t *gr, uintptr_t *ax, uintptr_t *ay, const char *sch, mreal *zVal,int l);
+
+void mgl_grad_xyz_(uintptr_t *graph, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *ph, const char *sch, int *num, int);
+void mgl_grad_xy_(uintptr_t *graph, uintptr_t *x, uintptr_t *y, uintptr_t *ph, const char *sch, int *num, mreal *zVal,int);
+void mgl_grad_(uintptr_t *graph, uintptr_t *ph, const char *sch, int *num, mreal *zVal,int);
/*****************************************************************************/
/* 3D plotting functions */
/*****************************************************************************/
@@ -420,6 +437,15 @@ void mgl_beam_(uintptr_t *gr, uintptr_t *tr, uintptr_t *g1, uintptr_t *g2, uintp
void mgl_triplot_xyzc_(uintptr_t *gr, uintptr_t *nums, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *c, const char *sch,int);
void mgl_triplot_xyz_(uintptr_t *gr, uintptr_t *nums, uintptr_t *x, uintptr_t *y, uintptr_t *z, const char *sch,int);
void mgl_triplot_xy_(uintptr_t *gr, uintptr_t *nums, uintptr_t *x, uintptr_t *y, const char *sch, mreal *zVal,int);
+void mgl_quadplot_xyzc_(uintptr_t *gr, uintptr_t *nums, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *c, const char *sch,int);
+void mgl_quadplot_xyz_(uintptr_t *gr, uintptr_t *nums, uintptr_t *x, uintptr_t *y, uintptr_t *z, const char *sch,int);
+void mgl_quadplot_xy_(uintptr_t *gr, uintptr_t *nums, uintptr_t *x, uintptr_t *y, const char *sch, mreal *zVal,int);
+
+void mgl_tricont_xyzcv_(uintptr_t *gr, uintptr_t *v, uintptr_t *nums, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *c, const char *sch, mreal *zVal,int);
+void mgl_tricont_xyzv_(uintptr_t *gr, uintptr_t *v, uintptr_t *nums, uintptr_t *x, uintptr_t *y, uintptr_t *z, const char *sch, mreal *zVal,int);
+void mgl_tricont_xyzc_(uintptr_t *gr, uintptr_t *nums, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *c, const char *sch, int *n, mreal *zVal, int);
+void mgl_tricont_xyz_(uintptr_t *gr, uintptr_t *nums, uintptr_t *x, uintptr_t *y, uintptr_t *z, const char *sch, int *n, mreal *zVal, int);
+
void mgl_dots_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, uintptr_t *z, const char *sch,int);
void mgl_dots_a_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *a, const char *sch,int);
void mgl_dots_tr_(uintptr_t *gr, uintptr_t *tr, const char *sch,int);
@@ -514,7 +540,14 @@ void mgl_data_diff_(uintptr_t *dat, const char *dir,int);
void mgl_data_diff_par_(uintptr_t *dat, uintptr_t *v1, uintptr_t *v2, uintptr_t *v3);
void mgl_data_diff2_(uintptr_t *dat, const char *dir,int);
void mgl_data_swap_(uintptr_t *dat, const char *dir,int);
-void mgl_data_mirror_(uintptr_t *dat, const char *dir,int);
+void mgl_data_roll_(uintptr_t *dat, const char *dir, int *num, int);
+void mgl_data_mirror_(uintptr_t *dat, const char *dir,int);
+
+void mgl_data_hankel_(uintptr_t *dat, const char *dir,int);
+void mgl_data_sinfft_(uintptr_t *dat, const char *dir,int);
+void mgl_data_cosfft_(uintptr_t *dat, const char *dir,int);
+void mgl_data_fill_sample_(uintptr_t *dat, int num, const char *how,int);
+
mreal mgl_data_spline_(uintptr_t *dat, mreal *x,mreal *y,mreal *z);
mreal mgl_data_spline1_(uintptr_t *dat, mreal *x,mreal *y,mreal *z);
mreal mgl_data_linear_(uintptr_t *dat, mreal *x,mreal *y,mreal *z);
diff --git a/include/mgl/mgl_fltk.h b/include/mgl/mgl_fltk.h
index 6853003..9cce925 100644
--- a/include/mgl/mgl_fltk.h
+++ b/include/mgl/mgl_fltk.h
@@ -18,6 +18,9 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
//-----------------------------------------------------------------------------
+#ifdef _MGL_W_H_
+#warning "MathGL wrapper was enabled. So disable original MathGL classes"
+#else
#ifndef _MGL_FLTK_H_
#define _MGL_FLTK_H_
//-----------------------------------------------------------------------------
@@ -138,4 +141,5 @@ protected:
};
//-----------------------------------------------------------------------------
#endif
+#endif
//-----------------------------------------------------------------------------
diff --git a/include/mgl/mgl_font.h b/include/mgl/mgl_font.h
index d14725f..8526283 100644
--- a/include/mgl/mgl_font.h
+++ b/include/mgl/mgl_font.h
@@ -18,6 +18,9 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
//-----------------------------------------------------------------------------
+#ifdef _MGL_W_H_
+#warning "MathGL wrapper was enabled. So disable original MathGL classes"
+#else
#ifndef _MGL_FONT_H_
#define _MGL_FONT_H_
@@ -102,7 +105,7 @@ protected:
short *numt[4]; ///< Number of triangles in glyph description (for solid font)
short *numl[4]; ///< Number of lines in glyph description (for wire font)
short *width[4]; ///< Width of glyph for wire font
- mreal fact[4]; ///< Divider for width of glyph
+ float fact[4]; ///< Divider for width of glyph
unsigned numg; ///< Number of glyphs
short *buf; ///< Buffer for glyph descriptions
long numb; ///< Buffer size
@@ -123,13 +126,14 @@ protected:
unsigned Symbol(char ch);
private:
mreal get_ptr(long &i,unsigned *str, unsigned **b1, unsigned **b2,mreal &w1,mreal &w2, mreal f1, mreal f2, int st);
- void read_data(FILE *fp, mreal *ff, short *wdt, short *numl, unsigned *posl, short *numt, unsigned *post, unsigned &cur);
+ bool read_data(const char *fname, float *ff, short *wdt, short *numl, unsigned *posl, short *numt, unsigned *post, unsigned &cur);
void main_copy();
- bool read_main(const char *base, const char *path, unsigned &cur);
+ bool read_main(const char *fname, unsigned &cur);
void mem_alloc();
bool read_def(unsigned &cur);
void draw_ouline(mglGraph *gr, int st, mreal x, mreal y, mreal f, mreal g, mreal ww, char ccol);
};
//-----------------------------------------------------------------------------
#endif
+#endif
//-----------------------------------------------------------------------------
diff --git a/include/mgl/mgl_gl.h b/include/mgl/mgl_gl.h
index e2f342d..100b0dd 100644
--- a/include/mgl/mgl_gl.h
+++ b/include/mgl/mgl_gl.h
@@ -18,6 +18,9 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
//-----------------------------------------------------------------------------
+#ifdef _MGL_W_H_
+#warning "MathGL wrapper was enabled. So disable original MathGL classes"
+#else
#ifndef _MGL_GL_H_
#define _MGL_GL_H_
#ifdef WIN32
@@ -52,6 +55,7 @@ public:
void SetSize(int ,int ){};
void Ball(mreal x,mreal y,mreal z,mglColor col=RC,mreal alpha=1);
+ void Glyph(mreal x, mreal y, mreal f, int style, long icode, char col);
// void Glyph(mreal x,mreal y, mreal f, int nt, const short *trig, int nl, const short *line);
protected:
mglColor def_col;
@@ -82,4 +86,5 @@ protected:
};
//-----------------------------------------------------------------------------
#endif
+#endif
//-----------------------------------------------------------------------------
diff --git a/include/mgl/mgl_glut.h b/include/mgl/mgl_glut.h
index 047783b..65c4f48 100644
--- a/include/mgl/mgl_glut.h
+++ b/include/mgl/mgl_glut.h
@@ -18,6 +18,9 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
//-----------------------------------------------------------------------------
+#ifdef _MGL_W_H_
+#warning "MathGL wrapper was enabled. So disable original MathGL classes"
+#else
#ifndef _MGL_GLUT_H_
#define _MGL_GLUT_H_
#include "mgl/mgl_gl.h"
@@ -54,4 +57,5 @@ private:
};
//-----------------------------------------------------------------------------
#endif
+#endif
//-----------------------------------------------------------------------------
diff --git a/include/mgl/mgl_idtf.h b/include/mgl/mgl_idtf.h
index 417872d..198e8a6 100644
--- a/include/mgl/mgl_idtf.h
+++ b/include/mgl/mgl_idtf.h
@@ -18,6 +18,9 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
//-----------------------------------------------------------------------------
+#ifdef _MGL_W_H_
+#warning "MathGL wrapper was enabled. So disable original MathGL classes"
+#else
#ifndef _MGL_IDTF_H_
#define _MGL_IDTF_H_
@@ -372,4 +375,5 @@ protected:
};
//-----------------------------------------------------------------------------
#endif
+#endif
//-----------------------------------------------------------------------------
diff --git a/include/mgl/mgl_parse.h b/include/mgl/mgl_parse.h
index 31444ed..50cb48b 100644
--- a/include/mgl/mgl_parse.h
+++ b/include/mgl/mgl_parse.h
@@ -18,6 +18,9 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
//-----------------------------------------------------------------------------
+#ifdef _MGL_W_H_
+#warning "MathGL wrapper was enabled. So disable original MathGL classes"
+#else
#ifndef _MGL_PARSE_H_
#define _MGL_PARSE_H_
#include "mgl/mgl.h"
@@ -79,6 +82,24 @@ struct mglNum
void MoveAfter(mglNum *var);
};
//-----------------------------------------------------------------------------
+/// Structure for function name and position.
+struct mglFunc
+{
+ long pos;
+ int narg;
+ wchar_t func[32];
+ mglFunc *next;
+ mglFunc(long p, const wchar_t *f, mglFunc *prev=0);
+ ~mglFunc() { if(next) delete next; };
+};
+//-----------------------------------------------------------------------------
+/// Structure for stack of functions and its arguments.
+struct mglFnStack
+{
+ long pos;
+ wchar_t *par[9];
+};
+//-----------------------------------------------------------------------------
/// Structure for the command argument (see mglGraph::Exec()).
class mglParse
{
@@ -110,6 +131,10 @@ public:
void Execute(mglGraph *gr, const wchar_t *text, void (*error)(int line, int kind, mglGraph *gr)=NULL);
/// Execute MGL script text with '\n' separated lines
void Execute(mglGraph *gr, const char *text, void (*error)(int line, int kind, mglGraph *gr)=NULL);
+ /// Scan for functions (use NULL for reset)
+ void ScanFunc(const wchar_t *line);
+ /// Check if name is function and return its address (or 0 if no)
+ long IsFunc(const wchar_t *name, int *narg=0);
/// Find variable or return 0 if absent
mglVar *FindVar(const char *name);
/// Find variable or return 0 if absent
@@ -142,18 +167,22 @@ public:
void DeleteVar(const wchar_t *name);
private:
long parlen; ///< Length of parameter strings
- wchar_t *par[10]; ///< Parameter for substituting instead of $1, ..., $9
+ wchar_t *par[40]; ///< Parameter for substituting instead of $1, ..., $9
wchar_t *out; ///< Buffer for writing C++ code (if not NULL)
wchar_t leg[128]; ///< Buffer for legend
bool opt[16]; ///< Set on/off optional parameters for command argument
mreal val[20]; ///< Values for optional parameters
bool Once; ///< Flag for command which should be executed only once
bool Skip; ///< Flag that commands should be skiped (inside 'once' block)
- int if_stack[20]; ///< Stack for if-else-endif commands
+ int if_stack[40]; ///< Stack for if-else-endif commands
int if_pos; ///< position in if_stack
- int if_for[10]; ///< position in if_stack for for-cycle start
+ mglFunc *func; ///< function names and position
+ mglFnStack *fn_stack; ///< function calls stack
+ int fn_pos; ///< position in function stack
+ int fn_num; ///< size of function stack
+ int if_for[40]; ///< position in if_stack for for-cycle start
mglData *fval; ///< Values for for-cycle. Note that nx - number of elements, ny - next element, nz - address (or string number) of first cycle command
- int for_stack[10]; ///< The order of for-variables
+ int for_stack[40]; ///< The order of for-variables
int for_addr; ///< Flag for saving address in variable (for_addr-1)
bool for_br; ///< Break is switched on (skip all comands until 'next')
@@ -169,11 +198,14 @@ private:
int FlowExec(mglGraph *gr, const wchar_t *com, long n, mglArg *a);
/// Parse and execute the unicode string of MGL script
int ParseDat(mglGraph *gr, const wchar_t *str, mglData &res);
+ /// Parse $N arguments
+ void PutArg(const wchar_t *string, wchar_t *str, bool def);
/// In skip mode
bool inline ifskip() { return (if_pos>0 && !(if_stack[if_pos-1]&1)); };
bool inline skip() { return (Skip || ifskip() || for_br); };
};
//-----------------------------------------------------------------------------
#endif
+#endif
//-----------------------------------------------------------------------------
diff --git a/include/mgl/mgl_qt.h b/include/mgl/mgl_qt.h
index d721b17..cf83eec 100644
--- a/include/mgl/mgl_qt.h
+++ b/include/mgl/mgl_qt.h
@@ -18,6 +18,9 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
//-----------------------------------------------------------------------------
+#ifdef _MGL_W_H_
+#warning "MathGL wrapper was enabled. So disable original MathGL classes"
+#else
#ifndef MGL_QT_H
#define MGL_QT_H
//-----------------------------------------------------------------------------
@@ -55,7 +58,7 @@ using mglGraphAB::Window;
/// Create a window for plotting. Now implemeted only for GLUT.
void Window(int argc, char **argv, int (*draw)(mglGraph *gr, void *p),
const char *title,void *par=NULL,
- void (*reload)(int next, void *p)=NULL, bool maximize=false);
+ void (*reload)(int next, void *p)=NULL, bool maximize=false);
/// Switch on/off transparency (do not overwrite switches in user drawing function)
void ToggleAlpha();
/// Switch on/off lighting (do not overwrite switches in user drawing function)
@@ -185,4 +188,5 @@ private:
void convertFromGraph(QPixmap &pic, mglGraphAB *gr, uchar **buf);
//-----------------------------------------------------------------------------
#endif
+#endif
//-----------------------------------------------------------------------------
diff --git a/include/mgl/mgl_w.h b/include/mgl/mgl_w.h
index c375672..65fbee1 100644
--- a/include/mgl/mgl_w.h
+++ b/include/mgl/mgl_w.h
@@ -20,6 +20,7 @@
#ifdef _MGL_DATA_H_
#warning "MathGL wrapper is disabled due to using original MathGL classes"
#else
+#ifndef _MGL_W_H_
#define _MGL_W_H_
#ifndef NO_GSL
@@ -152,6 +153,7 @@ public:
{ mgl_data_modify_vw(a,eq,v.a, w.a); };
inline void Modify(const char *eq,const mglData &v){ mgl_data_modify_vw(a,eq,v.a, NULL); };
inline void Fill(double x1,double x2,char dir='x') { mgl_data_fill(a,x1,x2,dir); };
+ inline void FillSample(int n, const char *how) { mgl_data_fill_sample(a,n,how); };
inline mglData Column(const char *eq) { return mglData(mgl_data_column(a,eq)); };
inline void SetColumnId(const char *ids) { mgl_data_set_id(a,ids); };
inline void Squeeze(int rx,int ry=1,int rz=1,bool smooth=false)
@@ -211,8 +213,13 @@ public:
{ mgl_data_diff_par(a,v1.a,v2.a,v3.a); };
inline void Diff2(const char *dir) { mgl_data_diff2(a,dir); };
inline void Swap(const char *dir) { mgl_data_swap(a,dir); };
- inline void Mirror(const char *dir) { mgl_data_mirror(a,dir); };
-
+ inline void Roll(char dir, int num) { mgl_data_roll(a,dir,num); };
+ inline void Mirror(const char *dir) { mgl_data_mirror(a,dir); };
+
+ inline void Hankel(const char *dir) { mgl_data_hankel(a,dir); };
+ inline void SinFFT(const char *dir) { mgl_data_sinfft(a,dir); };
+ inline void CosFFT(const char *dir) { mgl_data_cosfft(a,dir); };
+
inline double Spline(double x,double y=0,double z=0)
{ return mgl_data_spline(a,x,y,z); };
inline double Spline1(double x,double y=0,double z=0)
@@ -286,6 +293,7 @@ public:
~mglGraph() { mgl_delete_graph(self); };
inline HMGL Self() { return self; };
+ inline int GetWarn() { return mgl_get_warn(self); };
inline void DefaultPlotParam() { mgl_set_def_param(self); };
inline void SetPalColor(int n, float r, float g, float b)
{ if(n>=0 && n<100) mgl_set_pal_color(self, n, r, g, b); };
@@ -315,12 +323,13 @@ public:
inline void SetPlotFactor(float val) { mgl_set_plotfactor(self, val); };
inline void SetDrawFace(bool enable) { mgl_set_draw_face(self, enable);};
inline void SetLegendBox(bool enable) { mgl_set_legend_box(self, enable); };
+ inline void SetLegendMarks(int num) { mgl_set_legend_marks(self, num); };
inline void LoadFont(const char *name, const char *path=NULL)
{ mgl_load_font(self, name, path); };
inline void CopyFont(mglGraph *gr) { mgl_copy_font(self, gr->Self());};
inline void RestoreFont() { mgl_restore_font(self); };
- inline void ShowImage(const char *viewer="kuickshow", bool keep=0)
+ inline void ShowImage(const char *viewer=0, bool keep=0)
{ mgl_show_image(self, viewer, keep); };
inline void WriteFrame(const char *fname,const char *descr="")
{ mgl_write_frame(self, fname, descr); };
@@ -346,7 +355,7 @@ public:
inline void ResetFrames() { mgl_reset_frames(self); };
inline void Flush() { mgl_flush(self); };
- void GetRGB(char *imgdata, int imglen)
+ inline void GetRGB(char *imgdata, int imglen)
{
int w=mgl_get_width(self);
int h=mgl_get_height(self);
@@ -414,11 +423,13 @@ public:
{ mgl_clf_rgb(self, r, g, b); };
inline void SubPlot(int nx,int ny,int m, float dx=0, float dy=0)
{ mgl_subplot_d(self, nx, ny, m, dx, dy); };
- inline void InPlot(float x1,float x2,float y1,float y2, bool rel=false)
+ inline void SubPlot(int nx,int ny,int m, const char *style)
+ { mgl_subplot_s(self, nx, ny, m, style); };
+ inline void InPlot(float x1,float x2,float y1,float y2, bool rel=true)
{ if(rel) mgl_inplot(self, x1, x2, y1, y2);
else mgl_relplot(self, x1, x2, y1, y2); };
- inline void ColumnPlot(int num, int ind)
- { mgl_columnplot(self,num,ind); };
+ inline void ColumnPlot(int num, int ind, float d=0)
+ { mgl_columnplot_d(self,num,ind,d); };
inline void StickPlot(int num, int i, float tet, float phi)
{ mgl_stickplot(self,num,i,tet,phi); };
inline void Aspect(float Ax,float Ay,float Az)
@@ -459,13 +470,13 @@ public:
inline void Box(const char *col="k", bool ticks=true)
{ mgl_box_str(self, col, ticks); };
- inline void Axis(const char *dir="xyz", bool adjust=false)
+ inline void Axis(const char *dir="xyzt", bool adjust=false)
{ if(adjust) mgl_adjust_ticks(self,dir); mgl_axis(self, dir); };
- inline void Grid(const char *dir="xyz",const char *pen="B")
+ inline void Grid(const char *dir="xyzt",const char *pen="B")
{ mgl_axis_grid(self, dir, pen); };
inline void Label(char dir, const char *text, float pos=+1, float size=-1.4, float shift=0)
{ mgl_label_ext(self, dir, text, pos, size, shift); };
- inline void Label(char dir, const wchar_t *text, float pos=+1, float size=-1.4, float shift=0)
+ inline void Label(char dir, const wchar_t *text, float pos=0, float size=-1.4, float shift=0)
{ mgl_labelw_ext(self, dir, text, pos, size, shift); };
void Label(double x, double y, const char *text, const char *fnt=0, double size=-1.4)
{ mgl_label_xy(self,x,y,text,fnt,size); }
@@ -562,10 +573,10 @@ public:
{ mgl_tens(self, y.a, c.a, pen); };
inline void Area(mglData &x, mglData &y, mglData &z, const char *pen="")
{ mgl_area_xyz(self, x.a, y.a, z.a, pen); };
- inline void Area(mglData &x, mglData &y, const char *pen="", bool sum=false)
- { if(sum) mgl_area_xy(self, x.a, y.a, pen); else mgl_area_xys(self, x.a, y.a, pen); };
- inline void Area(mglData &y, const char *pen="", bool sum=false)
- { if(sum) mgl_area(self, y.a, pen); else mgl_area_s(self, y.a, pen); };
+ inline void Area(mglData &x, mglData &y, const char *pen="")
+ { mgl_area_xy(self, x.a, y.a, pen); };
+ inline void Area(mglData &y, const char *pen="")
+ { mgl_area(self, y.a, pen); };
inline void Stem(mglData &x, mglData &y, mglData &z, const char *pen="")
{ mgl_stem_xyz(self, x.a, y.a, z.a, pen); };
inline void Stem(mglData &x, mglData &y, const char *pen="")
@@ -799,6 +810,13 @@ public:
inline void FlowP(float x0, float y0, float z0, mglData &ax, mglData &ay, mglData &az, const char *sch="")
{ mgl_flowp_3d(self, x0, y0, z0, ax.a, ay.a, az.a, sch); };
+ inline void Grad(const mglData &x, const mglData &y, const mglData &z, const mglData &phi, const char *sch=0, int num=3)
+ { mgl_grad_xyz(self,x.a,y.a,z.a,phi.a,sch,num); }
+ inline void Grad(const mglData &x, const mglData &y, const mglData &phi, const char *sch=0, int num=5, mreal zVal=NAN)
+ { mgl_grad_xy(self,x.a,y.a,phi.a,sch,num,zVal); }
+ inline void Grad(const mglData &phi, const char *sch=0, int num=5, mreal zVal=NAN)
+ { mgl_grad(self,phi.a,sch,num,zVal); }
+
inline void Pipe(mglData &x, mglData &y, mglData &ax, mglData &ay, const char *sch="", float r0=0.05, int num=5, bool central=true, float zVal=NAN)
{ mgl_pipe_xy(self, x.a, y.a, ax.a, ay.a, sch, r0, num, central, zVal); };
inline void Pipe(mglData &ax, mglData &ay, const char *sch="", float r0=0.05, int num=5, bool central=true, float zVal=NAN)
@@ -876,6 +894,22 @@ public:
{ mgl_triplot_xyz(self, nums.a, x.a, y.a, z.a, sch); };
inline void TriPlot(mglData &nums, mglData &x, mglData &y, const char *sch="", float zVal=NAN)
{ mgl_triplot_xy(self, nums.a, x.a, y.a, sch, zVal); };
+ inline void QuadPlot(mglData &nums, mglData &x, mglData &y, mglData &z, mglData &c, const char *sch="")
+ { mgl_quadplot_xyzc(self, nums.a, x.a, y.a, z.a, c.a, sch); };
+ inline void QuadPlot(mglData &nums, mglData &x, mglData &y, mglData &z, const char *sch="")
+ { mgl_quadplot_xyz(self, nums.a, x.a, y.a, z.a, sch); };
+ inline void QuadPlot(mglData &nums, mglData &x, mglData &y, const char *sch="", float zVal=NAN)
+ { mgl_quadplot_xy(self, nums.a, x.a, y.a, sch, zVal); };
+
+ inline void TriCont(const mglData &nums, const mglData &x, const mglData &y, const mglData &z, const char *sch=0,int num=7,mreal zVal=NAN)
+ { mgl_tricont_xyz(self, nums.a, x.a, y.a, z.a, sch, num, zVal); };
+ inline void TriContV(const mglData &v, const mglData &nums, const mglData &x, const mglData &y, const mglData &z, const char *sch=0,mreal zVal=NAN)
+ { mgl_tricont_xyzv(self, v.a, nums.a, x.a, y.a, z.a, sch, zVal); };
+ inline void TriCont(const mglData &nums, const mglData &x, const mglData &y, const mglData &z, const mglData &a, const char *sch=0,int num=7,mreal zVal=NAN)
+ { mgl_tricont_xyzc(self, nums.a, x.a, y.a, z.a, a.a, sch, num, zVal); };
+ inline void TriContV(const mglData &v, const mglData &nums, const mglData &x, const mglData &y, const mglData &z, const mglData &a, const char *sch=0,mreal zVal=NAN)
+ { mgl_tricont_xyzcv(self, v.a, nums.a, x.a, y.a, z.a, a.a, sch, zVal); };
+
inline void Dots(mglData &x, mglData &y, mglData &z, const char *sch="")
{ mgl_dots(self, x.a, y.a, z.a, sch); };
inline void Dots(mglData &x, mglData &y, mglData &z, mglData &a, const char *sch="")
@@ -990,6 +1024,7 @@ public:
{ return mgl_parse(gr->Self(), self, str, pos); };
inline int Parse(mglGraph *gr, const wchar_t *str, int pos)
{ return mgl_parsew(gr->Self(), self, str, pos); };
+ inline void ScanFunc(const wchar_t *line){ mgl_scan_func(self, line); };
inline void Execute(mglGraph *gr, const char *str)
{ mgl_parse_text(gr->Self(), self, str); };
inline void Execute(mglGraph *gr, const wchar_t *str)
@@ -999,3 +1034,4 @@ public:
};
//-----------------------------------------------------------------------------
#endif
+#endif
diff --git a/include/mgl/mgl_wx.h b/include/mgl/mgl_wx.h
index 940993b..f7ddf66 100644
--- a/include/mgl/mgl_wx.h
+++ b/include/mgl/mgl_wx.h
@@ -23,6 +23,7 @@
#include <wx/window.h>
#include <wx/image.h>
#include <wx/timer.h>
+#include <wx/bitmap.h>
#include <mgl/mgl_zb.h>
//-----------------------------------------------------------------------------
/// Class is Wx widget which display MathGL graphics
diff --git a/include/mgl/mgl_zb.h b/include/mgl/mgl_zb.h
index c4c2c0d..356c632 100644
--- a/include/mgl/mgl_zb.h
+++ b/include/mgl/mgl_zb.h
@@ -18,6 +18,9 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
//-----------------------------------------------------------------------------
+#ifdef _MGL_W_H_
+#warning "MathGL wrapper was enabled. So disable original MathGL classes"
+#else
#ifndef _MGL_ZB_H_
#define _MGL_ZB_H_
#include "mgl/mgl_ab.h"
@@ -55,4 +58,5 @@ protected:
};
//-----------------------------------------------------------------------------
#endif
+#endif
//-----------------------------------------------------------------------------
diff --git a/lang/Makefile.in b/lang/Makefile.in
index 59616cc..af61832 100644
--- a/lang/Makefile.in
+++ b/lang/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -149,6 +149,8 @@ GREP = @GREP@
GSL_FLAGS = @GSL_FLAGS@
GSL_LIBS = @GSL_LIBS@
HAVE_SWIG = @HAVE_SWIG@
+HDF4_FLAGS = @HDF4_FLAGS@
+HDF4_LIBS = @HDF4_LIBS@
HDF5_FLAGS = @HDF5_FLAGS@
HDF5_LIBS = @HDF5_LIBS@
INSTALL = @INSTALL@
@@ -169,6 +171,7 @@ LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MGL_AGE = @MGL_AGE@
MGL_CURRENT = @MGL_CURRENT@
+MGL_RELEASE = @MGL_RELEASE@
MGL_REVISION = @MGL_REVISION@
MKDIR_P = @MKDIR_P@
MOC = @MOC@
diff --git a/mgl/CMakeLists.txt b/mgl/CMakeLists.txt
index 31f8a6f..6016ce0 100644
--- a/mgl/CMakeLists.txt
+++ b/mgl/CMakeLists.txt
@@ -53,6 +53,12 @@ if(use_hdf5 OR use_hdf5_18)
include_directories(${HDF5_INCLUDE_DIR})
endif(use_hdf5 OR use_hdf5_18)
+if(use_hdf4)
+ target_link_libraries(mgl ${HDF4_LIB})
+ add_definitions(-DHAVE_HDF4)
+ include_directories(${HDF4_INCLUDE_DIR})
+endif(use_hdf4)
+
if(use_gsl)
target_link_libraries(mgl ${GSL_LIB} ${GSL_CBLAS_LIB} )
add_definitions(-DHAVE_GSL)
@@ -72,7 +78,7 @@ endif(UNIX)
set_target_properties(mgl PROPERTIES SOVERSION 5.0.0)
install(
- TARGETS mgl
+ TARGETS mgl mgl-static
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
diff --git a/mgl/Makefile.am b/mgl/Makefile.am
index 46a6086..c2ad4a4 100644
--- a/mgl/Makefile.am
+++ b/mgl/Makefile.am
@@ -20,7 +20,7 @@ libmgl_la_LIBADD = $(PNG_LIBS) $(GL_LIBS) $(LOPENMP)
libmgl_la_LDFLAGS = -no-undefined -version-info $(MGL_CURRENT):$(MGL_REVISION):$(MGL_AGE)
libmgl_la_CXXFLAGS = $(WIDGETS) -DMGL_FONT_PATH=\"$(datadir)/$(PACKAGE)/fonts/\" \
- -DMOD_LIB_DIR=\"$(libdir)/mgl/\" $(HDF5_FLAGS) $(GIF_FLAGS) $(JPEG_FLAGS) \
+ -DMOD_LIB_DIR=\"$(libdir)/mgl/\" $(HDF5_FLAGS) $(HDF4_FLAGS) $(GIF_FLAGS) $(JPEG_FLAGS) \
$(TIFF_FLAGS) $(PNG_FLAGS) $(FLTK_FLAGS) $(ADDON_FLAGS) $(AM_CXXFLAGS) \
$(PTHREAD_FLAGS)
@@ -32,6 +32,10 @@ if USE_GSL
libmgl_la_LIBADD += $(GSL_LIBS)
endif
+if USE_HDF4
+libmgl_la_LIBADD += $(HDF4_LIBS)
+endif
+
if USE_HDF5
libmgl_la_LIBADD += $(HDF5_LIBS)
endif
diff --git a/mgl/Makefile.in b/mgl/Makefile.in
index b5738df..899e46b 100644
--- a/mgl/Makefile.in
+++ b/mgl/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -40,9 +40,10 @@ host_triplet = @host@
@USE_GLUT_TRUE at am__append_4 = -DWITH_GLUT
@USE_PTHREAD_TRUE at am__append_5 = $(PTHREAD_LIBS)
@USE_GSL_TRUE at am__append_6 = $(GSL_LIBS)
- at USE_HDF5_TRUE@am__append_7 = $(HDF5_LIBS)
- at USE_GIF_TRUE@am__append_8 = $(GIF_LIBS)
- at USE_JPEG_TRUE@am__append_9 = $(JPEG_LIBS)
+ at USE_HDF4_TRUE@am__append_7 = $(HDF4_LIBS)
+ at USE_HDF5_TRUE@am__append_8 = $(HDF5_LIBS)
+ at USE_GIF_TRUE@am__append_9 = $(GIF_LIBS)
+ at USE_JPEG_TRUE@am__append_10 = $(JPEG_LIBS)
subdir = mgl
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -80,13 +81,14 @@ LTLIBRARIES = $(lib_LTLIBRARIES)
am__DEPENDENCIES_1 =
@USE_PTHREAD_TRUE at am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
@USE_GSL_TRUE at am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1)
- at USE_HDF5_TRUE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1)
- at USE_GIF_TRUE@am__DEPENDENCIES_5 = $(am__DEPENDENCIES_1)
- at USE_JPEG_TRUE@am__DEPENDENCIES_6 = $(am__DEPENDENCIES_1)
+ at USE_HDF4_TRUE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1)
+ at USE_HDF5_TRUE@am__DEPENDENCIES_5 = $(am__DEPENDENCIES_1)
+ at USE_GIF_TRUE@am__DEPENDENCIES_6 = $(am__DEPENDENCIES_1)
+ at USE_JPEG_TRUE@am__DEPENDENCIES_7 = $(am__DEPENDENCIES_1)
libmgl_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \
$(am__DEPENDENCIES_4) $(am__DEPENDENCIES_5) \
- $(am__DEPENDENCIES_6)
+ $(am__DEPENDENCIES_6) $(am__DEPENDENCIES_7)
am_libmgl_la_OBJECTS = libmgl_la-mgl_data_cf.lo libmgl_la-mgl_axis.lo \
libmgl_la-mgl_data_png.lo libmgl_la-mgl_zb2.lo \
libmgl_la-mgl_c.lo libmgl_la-mgl_eps.lo libmgl_la-mgl_font.lo \
@@ -167,6 +169,8 @@ GREP = @GREP@
GSL_FLAGS = @GSL_FLAGS@
GSL_LIBS = @GSL_LIBS@
HAVE_SWIG = @HAVE_SWIG@
+HDF4_FLAGS = @HDF4_FLAGS@
+HDF4_LIBS = @HDF4_LIBS@
HDF5_FLAGS = @HDF5_FLAGS@
HDF5_LIBS = @HDF5_LIBS@
INSTALL = @INSTALL@
@@ -187,6 +191,7 @@ LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MGL_AGE = @MGL_AGE@
MGL_CURRENT = @MGL_CURRENT@
+MGL_RELEASE = @MGL_RELEASE@
MGL_REVISION = @MGL_REVISION@
MKDIR_P = @MKDIR_P@
MOC = @MOC@
@@ -301,10 +306,10 @@ WIDGETS = $(am__append_1) $(am__append_2) $(am__append_3) \
$(am__append_4)
libmgl_la_LIBADD = $(PNG_LIBS) $(GL_LIBS) $(LOPENMP) $(am__append_5) \
$(am__append_6) $(am__append_7) $(am__append_8) \
- $(am__append_9)
+ $(am__append_9) $(am__append_10)
libmgl_la_LDFLAGS = -no-undefined -version-info $(MGL_CURRENT):$(MGL_REVISION):$(MGL_AGE)
libmgl_la_CXXFLAGS = $(WIDGETS) -DMGL_FONT_PATH=\"$(datadir)/$(PACKAGE)/fonts/\" \
- -DMOD_LIB_DIR=\"$(libdir)/mgl/\" $(HDF5_FLAGS) $(GIF_FLAGS) $(JPEG_FLAGS) \
+ -DMOD_LIB_DIR=\"$(libdir)/mgl/\" $(HDF5_FLAGS) $(HDF4_FLAGS) $(GIF_FLAGS) $(JPEG_FLAGS) \
$(TIFF_FLAGS) $(PNG_FLAGS) $(FLTK_FLAGS) $(ADDON_FLAGS) $(AM_CXXFLAGS) \
$(PTHREAD_FLAGS)
diff --git a/mgl/mgl_1d.cpp b/mgl/mgl_1d.cpp
index 7d31b46..8806b12 100644
--- a/mgl/mgl_1d.cpp
+++ b/mgl/mgl_1d.cpp
@@ -193,7 +193,6 @@ void mglGraph::Plot(const char *eqX, const char *eqY, const char *eqZ, const cha
}
delete ex; delete ey; delete ez;
- // TODO Add s1trong function variation analisys
mglData xx,yy,zz;
xx.Set(x,n); yy.Set(y,n); zz.Set(z,n);
free(x); free(y); free(z); free(t);
@@ -250,25 +249,42 @@ void mglGraph::Plot(const mglData &x, const mglData &y, const mglData &z, const
if(n<2) { SetWarn(mglWarnLow,"Plot"); return; }
static int cgid=1; StartGroup("Plot",cgid++);
m = x.ny > y.ny ? x.ny : y.ny; m = z.ny > m ? z.ny : m;
- mreal *pp = new mreal[3*n];
- bool *tt = new bool[n];
+ mreal *pp = new mreal[6*n];
+ bool *tt = new bool[2*n],inan,onan;
if(pen && *pen) mk=SelectPen(pen); else Pen(NC, '-', BaseLineWidth);
SetPal(pen);
for(j=0;j<m;j++)
{
Pen(GetPal(),0,0);
mx = j<x.ny ? j:0; my = j<y.ny ? j:0; mz = j<z.ny ? j:0;
- register long i,k;
- for(i=0;i<n;i++)
- {
- k = 3*i;
- pp[k+0] = x.a[i+mx*n];
- pp[k+1] = y.a[i+my*n];
- pp[k+2] = z.a[i+mz*n];
- tt[i] = ScalePoint(pp[k],pp[k+1],pp[k+2]);
- if(mk && tt[i]) Mark(pp[k],pp[k+1],pp[k+2],mk);
+ register long i,k,jj;
+ inan = onan = false;
+ for(jj=i=0;i<n;i++,jj++)
+ {
+ k = 3*jj;
+ pp[k+0] = x.a[i+mx*n]; pp[k+1] = y.a[i+my*n]; pp[k+2] = z.a[i+mz*n];
+ inan = isnan(pp[k+0]) || isnan(pp[k+1]) || isnan(pp[k+2]);
+ if(jj>0) onan = isnan(pp[k-3]) || isnan(pp[k-2]) || isnan(pp[k-1]);
+ tt[jj] = ScalePoint(pp[k],pp[k+1],pp[k+2]);
+ if(mk && tt[jj]) Mark(pp[k],pp[k+1],pp[k+2],mk);
+ if(jj>0 && ((tt[jj] && !tt[jj-1] && !onan) || (tt[jj-1] && !tt[jj] && !inan))) // do smoothing
+ {
+ float i1=0, i2=1, ii;
+ pp[k+3] = pp[k+0]; pp[k+4] = pp[k+1]; // copy current
+ pp[k+5] = pp[k+2]; tt[jj+1] = tt[jj];
+ do {
+ ii = (i1+i2)/2;
+ pp[k+0] = x.a[i+mx*n]*ii+x.a[i-1+mx*n]*(1-ii);
+ pp[k+1] = y.a[i+my*n]*ii+y.a[i-1+my*n]*(1-ii);
+ pp[k+2] = z.a[i+mz*n]*ii+z.a[i-1+mz*n]*(1-ii);
+ tt[jj] = ScalePoint(pp[k],pp[k+1],pp[k+2]);
+ if((tt[jj] && tt[jj+1]) || (tt[jj-1] && !tt[jj])) i2 = ii;
+ else i1 = ii;
+ } while(fabs(i2-i1)>1e-3);
+ tt[jj] = true; jj++;
+ }
}
- curv_plot(n,pp,tt);
+ curv_plot(jj,pp,tt);
}
SetPal(0); EndGroup();
delete []tt; delete []pp;
@@ -304,29 +320,43 @@ void mglGraph::Tens(const mglData &x, const mglData &y, const mglData &z, const
if(n<2) { SetWarn(mglWarnLow,"Tens"); return; }
static int cgid=1; StartGroup("Tens",cgid++);
m = x.ny > y.ny ? x.ny : y.ny; m = z.ny > m ? z.ny : m;
- mreal *pp = new mreal[3*n], *cc = new mreal[n];
- bool *tt = new bool[n];
+ mreal *pp = new mreal[6*n], *cc = new mreal[2*n];
+ bool *tt = new bool[2*n];
if(pen && *pen) { SetScheme(pen,false); mk=SelectPen(pen); }
for(j=0;j<m;j++)
{
mx = j<x.ny ? j:0; my = j<y.ny ? j:0;
mz = j<z.ny ? j:0; mc = j<c.ny ? j:0;
- register long i,k;
- for(i=0;i<n;i++)
+ register long i,jj,k;
+ for(jj=i=0;i<n;i++,jj++)
{
- k = 3*i;
- pp[k+0] = x.a[i+mx*n];
- pp[k+1] = y.a[i+my*n];
- pp[k+2] = z.a[i+mz*n];
- tt[i] = ScalePoint(pp[k],pp[k+1],pp[k+2]);
- if(mk && tt[i])
+ k = 3*jj;
+ pp[k+0] = x.a[i+mx*n]; pp[k+1] = y.a[i+my*n];
+ pp[k+2] = z.a[i+mz*n]; cc[jj] = c.a[i+mc*n];
+ tt[jj] = ScalePoint(pp[k],pp[k+1],pp[k+2]);
+ if(mk && tt[jj])
{
- DefColor(GetC(c.a[i+mc*n]));
+ DefColor(GetC(cc[jj]));
Mark(pp[k],pp[k+1],pp[k+2],mk);
}
+ if(jj>0 && ((tt[jj] && !tt[jj-1]) || (tt[jj-1] && !tt[jj]))) // do smoothing
+ {
+ float i1=0, i2=1, ii;
+ pp[k+3] = pp[k+0]; pp[k+4] = pp[k+1]; // copy current
+ pp[k+5] = pp[k+2]; tt[jj+1] = tt[jj];
+ do {
+ ii = (i1+i2)/2;
+ pp[k+0] = x.a[i+mx*n]*ii+x.a[i-1+mx*n]*(1-ii);
+ pp[k+1] = y.a[i+my*n]*ii+y.a[i-1+my*n]*(1-ii);
+ pp[k+2] = z.a[i+mz*n]*ii+z.a[i-1+mz*n]*(1-ii);
+ tt[jj] = ScalePoint(pp[k],pp[k+1],pp[k+2]);
+ if((tt[jj] && tt[jj+1]) || (tt[jj-1] && !tt[jj])) i2 = ii;
+ else i1 = ii;
+ } while(fabs(i2-i1)>1e-3);
+ tt[jj] = true; jj++;
+ }
}
- memcpy(cc,c.a+mc*n,n*sizeof(mreal));
- curv_plot(n,pp,cc,tt);
+ curv_plot(jj,pp,cc,tt);
}
EndGroup();
delete []tt; delete []pp; delete []cc;
@@ -359,71 +389,80 @@ void mglGraph::Area(const mglData &x, const mglData &y, const mglData &z, const
if(n<2) { SetWarn(mglWarnLow,"Area"); return; }
static int cgid=1; StartGroup("Area3",cgid++);
m = x.ny > y.ny ? x.ny : y.ny; m = z.ny > m ? z.ny : m;
- mreal *pp = new mreal[6*n],z0=GetOrgZ('x');
- bool *tt = new bool[2*n];
+ mreal *pp = new mreal[6*n], *cc = new mreal[8*n], z0=GetOrgZ('x');
+ bool *tt = new bool[2*n];
+ mglColor c1,c2;
SetPal(pen);
for(j=0;j<m;j++)
- {
- DefColor(GetPal(), -1);
+ {
+ c1 = GetPal();
+ if(NumPal==2*m) c2 = GetPal(); else c2 = c1;
mx = j<x.ny ? j:0; my = j<y.ny ? j:0; mz = j<z.ny ? j:0;
for(i=0;i<y.nx;i++)
- {
+ {
+ cc[8*i+3] = cc[8*i+7] = AlphaDef;
+ cc[8*i] = c2.r; cc[8*i+1] = c2.g; cc[8*i+2] = c2.b;
+ cc[8*i+4] = c1.r; cc[8*i+5] = c1.g; cc[8*i+6] = c1.b;
pp[6*i+3] = pp[6*i+0] = x.a[i+mx*n];
pp[6*i+4] = pp[6*i+1] = y.a[i+my*n];
pp[6*i+2] = z.a[i+mz*n];
tt[2*i] = ScalePoint(pp[6*i+0],pp[6*i+1],pp[6*i+2]);
-// if(mk && tt[2*i]) Mark(pp[6*i+0],pp[6*i+1],pp[6*i+2],mk);
pp[6*i+5] = z0;
tt[2*i+1] = ScalePoint(pp[6*i+3],pp[6*i+4],pp[6*i+5]);
}
- surf_plot(2,n,pp,0,tt);
+ surf_plot(2,n,pp,cc,tt);
}
SetPal(0); EndGroup();
- delete []pp; delete []tt;
+ delete []pp; delete []tt; delete []cc;
}
//-----------------------------------------------------------------------------
-void mglGraph::Area(const mglData &x, const mglData &y, const char *pen,bool sum,mreal zVal)
+void mglGraph::Area(const mglData &x, const mglData &y, const char *pen, mreal zVal)
{
long i,j,n=y.nx,m=y.ny,mx;
if(x.nx!=n) { SetWarn(mglWarnDim,"Area"); return; }
if(n<2) { SetWarn(mglWarnLow,"Area"); return; }
static int cgid=1; StartGroup("Curve",cgid++);
- mreal *pp = new mreal[6*n],y0=GetOrgY('x');
+ mreal *pp = new mreal[6*n], *cc = new mreal[8*n], y0=GetOrgY('x');
bool *tt = new bool[2*n], znan = isnan(zVal);
-// if(isnan(zVal)) zVal = Min.z;
- mglData f(y);
+ mglColor c1,c2;
+ mglData f(y);
+ bool sum = pen && strchr(pen,'a')!=0;
if(sum) f.CumSum("y");
SetPal(pen);
for(j=0;j<m;j++)
{
- DefColor(GetPal(), -1);
+ c1 = GetPal();
+ if(NumPal==2*m) c2 = GetPal(); else c2 = c1;
mx = j<x.ny ? j:0; //my = j<y.ny ? j:0;
for(i=0;i<n;i++)
{
+ cc[8*i+3] = cc[8*i+7] = AlphaDef;
+ cc[8*i] = c2.r; cc[8*i+1] = c2.g; cc[8*i+2] = c2.b;
+ cc[8*i+4] = c1.r; cc[8*i+5] = c1.g; cc[8*i+6] = c1.b;
+
pp[6*i+3] = pp[6*i+0] = x.a[i+mx*n];
pp[6*i+1] = f.a[i+j*n];
// NOTE: I use 'm' (not 'm-1') for placing area plots at z<Max.z
pp[6*i+2] = znan ? Min.z + (m-1-j)*(Max.z-Min.z)/m : zVal;
tt[2*i+0] = ScalePoint(pp[6*i+0],pp[6*i+1],pp[6*i+2]);
-// if(mk && tt[2*i]) Mark(pp[6*i+0],pp[6*i+1],pp[6*i+2],mk);
pp[6*i+4] = sum && j>0 ? f.a[i+j*n-n] : y0;
pp[6*i+5] = znan ? Min.z + (m-1-j)*(Max.z-Min.z)/m : zVal;
tt[2*i+1] = ScalePoint(pp[6*i+3],pp[6*i+4],pp[6*i+5]);
}
- surf_plot(2,n,pp,0,tt);
+ surf_plot(2,n,pp,cc,tt);
}
SetPal(0); EndGroup();
- delete []pp; delete []tt;
+ delete []pp; delete []tt; delete []cc;
}
//-----------------------------------------------------------------------------
-void mglGraph::Area(const mglData &y, const char *pen,bool sum,mreal zVal)
+void mglGraph::Area(const mglData &y, const char *pen, mreal zVal)
{
if(y.nx<2) { SetWarn(mglWarnLow,"Area"); return; }
mglData x(y.nx);
x.Fill(Min.x,Max.x);
- Area(x,y,pen,sum,zVal);
+ Area(x,y,pen,zVal);
}
//-----------------------------------------------------------------------------
//
@@ -437,17 +476,22 @@ void mglGraph::Region(const mglData &x, const mglData &y1, const mglData &y2, co
{ SetWarn(mglWarnDim,"Region"); return; }
if(n<2) { SetWarn(mglWarnLow,"Region"); return; }
static int cgid=1; StartGroup("Region",cgid++);
- mreal *pp = new mreal[6*n], f1,f2;
+ mreal *pp = new mreal[6*n], *cc = new mreal[8*n], f1,f2;
bool *tt = new bool[2*n];
if(isnan(zVal)) zVal = Min.z;
+ mglColor c1,c2;
SetPal(pen);
for(j=0;j<m;j++)
{
- DefColor(GetPal(), -1);
+ c1 = GetPal();
+ if(NumPal==2*m) c2 = GetPal(); else c2 = c1;
mx = j<x.ny ? j:0;
for(i=0;i<n;i++)
{
+ cc[8*i+3] = cc[8*i+7] = AlphaDef;
+ cc[8*i] = c1.r; cc[8*i+1] = c1.g; cc[8*i+2] = c1.b;
+ cc[8*i+4] = c2.r; cc[8*i+5] = c2.g; cc[8*i+6] = c2.b;
pp[6*i+3] = pp[6*i+0] = x.a[i+mx*n];
f1 = y1.a[i+j*n]; f2 = y2.a[i+j*n];
pp[6*i+1] = f1; pp[6*i+2] = zVal;
@@ -456,10 +500,10 @@ void mglGraph::Region(const mglData &x, const mglData &y1, const mglData &y2, co
tt[2*i+1] = ScalePoint(pp[6*i+3],pp[6*i+4],pp[6*i+5]);
if(f1>f2 && inside) { tt[2*i] = tt[2*i+1] = false; }
}
- surf_plot(2,n,pp,0,tt);
+ surf_plot(2,n,pp,cc,tt);
}
SetPal(0); EndGroup();
- delete []pp; delete []tt;
+ delete []pp; delete []tt; delete []cc;
}
//-----------------------------------------------------------------------------
void mglGraph::Region(const mglData &y1, const mglData &y2, const char *pen, mreal zVal, bool inside)
@@ -647,22 +691,27 @@ void mglGraph::Stem(const mglData &y, const char *pen,mreal zVal)
// Bars series
//
//-----------------------------------------------------------------------------
-void mglGraph::Bars(const mglData &x, const mglData &y, const mglData &z, const char *pen, bool above)
+void mglGraph::Bars(const mglData &x, const mglData &y, const mglData &z, const char *pen)
{
long i,j,m,mx,my,mz,n=y.nx;
if(x.nx!=n || z.nx!=n) { SetWarn(mglWarnDim,"Bars"); return; }
if(n<2) { SetWarn(mglWarnLow,"Bars"); return; }
static int cgid=1; StartGroup("Bars3",cgid++);
m = x.ny > y.ny ? x.ny : y.ny; m = z.ny > m ? z.ny : m;
- mreal *pp = new mreal[12*n],x1,x2,y1,y2,z0=GetOrgZ('x'),zz;
- bool *tt = new bool[4*n], wire = pen && strchr(pen,'#');
+ mreal *pp = new mreal[12*n],*cc = new mreal[16*n],x1,x2,y1,y2,z0,zz,zp;
+ bool *tt = new bool[4*n], wire = pen && strchr(pen,'#');
+ bool above = pen && strchr(pen,'a')!=0, fall = pen && strchr(pen,'f')!=0;
+ if(above) fall = false;
mglData dd(above ? n : 1);
-
+
+ mglColor c1,c2,c;
SetPal(pen);
for(j=0;j<m;j++)
- {
- DefColor(GetPal(), -1);
- mx = j<x.ny ? j:0; my = j<y.ny ? j:0; mz = j<z.ny ? j:0;
+ {
+ c1 = GetPal();
+ if(NumPal==2*m) c2 = GetPal(); else c2 = c1;
+ mx = j<x.ny ? j:0; my = j<y.ny ? j:0; mz = j<z.ny ? j:0;
+ zp = z0 = GetOrgZ('x');
for(i=0;i<n;i++)
{
if(i<n-1)
@@ -681,11 +730,18 @@ void mglGraph::Bars(const mglData &x, const mglData &y, const mglData &z, const
if(!above)
{
x2 = (x2-x1)/m; x1 += j*x2; x2 += x1;
- y2 = (y2-y1)/m; y1 += j*y2; y2 += y1;
+ y2 = (y2-y1)/m; y1 += j*y2; y2 += y1;
}
else
{ z0 = GetOrgZ('x') + dd.a[i]; dd.a[i] += zz; zz += z0; }
+ if(fall) { z0 = zp; zz += z0; zp = zz; }
+ c = (z.a[i+n*mz]<0) ? c1 : c2;
+ cc[16*i] = cc[16*i+4] = cc[16*i+8] = cc[16*i+12] = c.r;
+ cc[16*i+1] = cc[16*i+5] = cc[16*i+9] = cc[16*i+13] = c.g;
+ cc[16*i+2] = cc[16*i+6] = cc[16*i+10]= cc[16*i+14] = c.b;
+ cc[16*i+3] = cc[16*i+7] = cc[16*i+11]= cc[16*i+15] = AlphaDef;
+
pp[12*i+0] = x1; pp[12*i+1] = y1; pp[12*i+2] = zz;
pp[12*i+3] = x1; pp[12*i+4] = y1; pp[12*i+5] = z0;
pp[12*i+6] = x2; pp[12*i+7] = y2; pp[12*i+8] = z0;
@@ -695,7 +751,7 @@ void mglGraph::Bars(const mglData &x, const mglData &y, const mglData &z, const
tt[4*i+2] = ScalePoint(pp[12*i+6],pp[12*i+7],pp[12*i+8]);
tt[4*i+3] = ScalePoint(pp[12*i+9],pp[12*i+10],pp[12*i+11]);
}
- quads_plot(n,pp,0,tt);
+ quads_plot(n,pp,cc,tt);
if(wire) for(i=0;i<n;i++)
{
mreal ct[4]={0,0,0,1}, *pt = pp+12*i;
@@ -706,26 +762,30 @@ void mglGraph::Bars(const mglData &x, const mglData &y, const mglData &z, const
}
}
SetPal(0); EndGroup();
- delete []tt; delete []pp;
+ delete []tt; delete []pp; delete []cc;
}
//-----------------------------------------------------------------------------
-void mglGraph::Bars(const mglData &x, const mglData &y, const char *pen,mreal zVal, bool above)
+void mglGraph::Bars(const mglData &x, const mglData &y, const char *pen,mreal zVal)
{
long i,j,m,mx,my,n=y.nx;
if(x.nx!=n) { SetWarn(mglWarnDim,"Bars"); return; }
if(n<2) { SetWarn(mglWarnLow,"Bars"); return; }
static int cgid=1; StartGroup("Bars",cgid++);
m = x.ny > y.ny ? x.ny : y.ny;
- mreal *pp = new mreal[12*n],x1,x2,yy,y0=GetOrgY('x');
+ mreal *pp = new mreal[12*n],*cc = new mreal[16*n],x1,x2,yy,y0,yp;
bool *tt = new bool[4*n], wire = pen && strchr(pen,'#');
if(isnan(zVal)) zVal = Min.z;
+ bool above = pen && strchr(pen,'a')!=0, fall = pen && strchr(pen,'f')!=0;
+ if(above) fall = false;
mglData dd(above ? n : 1);
+ mglColor c1,c2,c;
SetPal(pen);
for(j=0;j<m;j++)
- {
- DefColor(GetPal(), -1);
- mx = j<x.ny ? j:0; my = j<y.ny ? j:0;
+ {
+ c1 = GetPal();
+ if(NumPal==2*m) c2 = GetPal(); else c2 = c1;
+ mx = j<x.ny ? j:0; my = j<y.ny ? j:0; y0 = yp = GetOrgY('x');
for(i=0;i<n;i++)
{
if(i<n-1) x2 = x.a[i+n*mx] + BarWidth*(x.a[i+1+n*mx]-x.a[i+n*mx])/2;
@@ -737,6 +797,14 @@ void mglGraph::Bars(const mglData &x, const mglData &y, const char *pen,mreal zV
{ x2 = (x2-x1)/m; x1 += j*x2; x2 += x1; }
else
{ y0 = GetOrgY('x') + dd.a[i]; dd.a[i] += yy; yy += y0; }
+ if(fall) { y0 = yp; yy += y0; yp = yy; }
+
+ c = (y.a[i+n*my]<0) ? c1 : c2;
+ cc[16*i] = cc[16*i+4] = cc[16*i+8] = cc[16*i+12] = c.r;
+ cc[16*i+1] = cc[16*i+5] = cc[16*i+9] = cc[16*i+13] = c.g;
+ cc[16*i+2] = cc[16*i+6] = cc[16*i+10]= cc[16*i+14] = c.b;
+ cc[16*i+3] = cc[16*i+7] = cc[16*i+11]= cc[16*i+15] = AlphaDef;
+
pp[12*i+0] = x1; pp[12*i+1] = yy; pp[12*i+2] = zVal;
pp[12*i+3] = x1; pp[12*i+4] = y0; pp[12*i+5] = zVal;
pp[12*i+6] = x2; pp[12*i+7] = y0; pp[12*i+8] = zVal;
@@ -746,7 +814,7 @@ void mglGraph::Bars(const mglData &x, const mglData &y, const char *pen,mreal zV
tt[4*i+2] = ScalePoint(pp[12*i+6],pp[12*i+7],pp[12*i+8]);
tt[4*i+3] = ScalePoint(pp[12*i+9],pp[12*i+10],pp[12*i+11]);
}
- quads_plot(n,pp,0,tt);
+ quads_plot(n,pp,cc,tt);
if(wire) for(i=0;i<n;i++)
{
mreal ct[4]={0,0,0,1}, *pt = pp+12*i;
@@ -757,38 +825,42 @@ void mglGraph::Bars(const mglData &x, const mglData &y, const char *pen,mreal zV
}
}
SetPal(0); EndGroup();
- delete []tt; delete []pp;
+ delete []tt; delete []pp; delete []cc;
}
//-----------------------------------------------------------------------------
-void mglGraph::Bars(const mglData &y, const char *pen,mreal zVal, bool above)
+void mglGraph::Bars(const mglData &y, const char *pen,mreal zVal)
{
if(y.nx<2) { SetWarn(mglWarnLow,"Bars"); return; }
mglData x(y.nx);
x.Fill(Min.x,Max.x);
- Bars(x,y,pen,zVal,above);
+ Bars(x,y,pen,zVal);
}
//-----------------------------------------------------------------------------
//
// Barh series
//
//-----------------------------------------------------------------------------
-void mglGraph::Barh(const mglData &y, const mglData &v, const char *pen,mreal zVal, bool above)
+void mglGraph::Barh(const mglData &y, const mglData &v, const char *pen,mreal zVal)
{
long i,j,m,mx,my,n=v.nx;
if(y.nx!=n) { SetWarn(mglWarnDim,"Barh"); return; }
if(n<2) { SetWarn(mglWarnLow,"Barh"); return; }
static int cgid=1; StartGroup("Barh",cgid++);
m = y.ny > v.ny ? y.ny : v.ny;
- mreal *pp = new mreal[12*n],y1,y2,xx,x0=GetOrgX('y');
+ mreal *pp = new mreal[12*n],*cc = new mreal[16*n],y1,y2,xx,x0,xp;
bool *tt = new bool[4*n], wire = pen && strchr(pen,'#');
if(isnan(zVal)) zVal = Min.z;
+ bool above = pen && strchr(pen,'a')!=0, fall = pen && strchr(pen,'f')!=0;
+ if(above) fall = false;
mglData dd(above ? n : 1);
+ mglColor c1,c2,c;
SetPal(pen);
for(j=0;j<m;j++)
- {
- DefColor(GetPal(), -1);
- my = j<y.ny ? j:0; mx = j<v.ny ? j:0;
+ {
+ c1 = GetPal();
+ if(NumPal==2*m) c2 = GetPal(); else c2 = c1;
+ my = j<y.ny ? j:0; mx = j<v.ny ? j:0; xp = x0 = GetOrgX('y');
for(i=0;i<n;i++)
{
if(i<n-1) y2 = y.a[i+n*my] + BarWidth*(y.a[i+1+n*my]-y.a[i+n*my])/2;
@@ -800,6 +872,14 @@ void mglGraph::Barh(const mglData &y, const mglData &v, const char *pen,mreal zV
{ y2 = (y2-y1)/m; y1 += j*y2; y2 += y1; }
else
{ x0 = GetOrgX('y') + dd.a[i]; dd.a[i] += xx; xx += x0; }
+ if(fall) { x0 = xp; xx += x0; xp = xx; }
+
+ c = (v.a[i+n*mx]<0) ? c1 : c2;
+ cc[16*i] = cc[16*i+4] = cc[16*i+8] = cc[16*i+12] = c.r;
+ cc[16*i+1] = cc[16*i+5] = cc[16*i+9] = cc[16*i+13] = c.g;
+ cc[16*i+2] = cc[16*i+6] = cc[16*i+10]= cc[16*i+14] = c.b;
+ cc[16*i+3] = cc[16*i+7] = cc[16*i+11]= cc[16*i+15] = AlphaDef;
+
pp[12*i+0] = xx; pp[12*i+1] = y1; pp[12*i+2] = zVal;
pp[12*i+3] = xx; pp[12*i+4] = y2; pp[12*i+5] = zVal;
pp[12*i+6] = x0; pp[12*i+7] = y2; pp[12*i+8] = zVal;
@@ -809,7 +889,7 @@ void mglGraph::Barh(const mglData &y, const mglData &v, const char *pen,mreal zV
tt[4*i+2] = ScalePoint(pp[12*i+6],pp[12*i+7],pp[12*i+8]);
tt[4*i+3] = ScalePoint(pp[12*i+9],pp[12*i+10],pp[12*i+11]);
}
- quads_plot(n,pp,0,tt);
+ quads_plot(n,pp,cc,tt);
if(wire) for(i=0;i<n;i++)
{
mreal ct[4]={0,0,0,1}, *pt = pp+12*i;
@@ -820,15 +900,15 @@ void mglGraph::Barh(const mglData &y, const mglData &v, const char *pen,mreal zV
}
}
SetPal(0); EndGroup();
- delete []tt; delete []pp;
+ delete []tt; delete []pp; delete []cc;
}
//-----------------------------------------------------------------------------
-void mglGraph::Barh(const mglData &v, const char *pen,mreal zVal, bool above)
+void mglGraph::Barh(const mglData &v, const char *pen,mreal zVal)
{
if(v.nx<2) { SetWarn(mglWarnLow,"Barh"); return; }
mglData y(v.nx);
y.Fill(Min.y,Max.y);
- Barh(y,v,pen,zVal,above);
+ Barh(y,v,pen,zVal);
}
//-----------------------------------------------------------------------------
//
@@ -896,7 +976,7 @@ void mglGraph::BoxPlot(const mglData &x, const mglData &y, const char *pen,mreal
tt[i0] = ScalePoint(pp[3*i0],pp[3*i0+1],pp[3*i0+2]);
}
}
- lines_plot(9*n,pp,0,tt,false);
+ lines_plot(9*n,pp,0,tt,false,false);
cmap[0]=c1; cmap[1]=c2; SetPal(0); EndGroup();
delete []b; delete []tt; delete []pp;
}
@@ -1333,128 +1413,6 @@ void mglGraph::Tube(const mglData &x, const mglData &y, const mglData &z, mreal
Tube(x,y,z,r,pen);
}
//-----------------------------------------------------------------------------
-//
-// All in one :) -- NOTE: OBSOLETE functions
-//
-//-----------------------------------------------------------------------------
-void mglGraph::Plot2(const mglData &a, const char *pen,mreal zVal)
-{
- if(a.nx<2 || a.ny<2) { SetWarn(mglWarnLow,"Plot2"); return; }
- mglData x,y;
- for(long i=0;i<a.ny/2;i++)
- {
- x=a.SubData(-1,2*i); y=a.SubData(-1,2*i+1);
- Plot(x,y,pen,zVal);
- }
-}
-//-----------------------------------------------------------------------------
-void mglGraph::Plot3(const mglData &a, const char *pen)
-{
- if(a.nx<2 || a.ny<3) { SetWarn(mglWarnLow,"Plot3"); return; }
- mglData x,y,z;
- for(long i=0;i<a.ny/2;i++)
- {
- x=a.SubData(-1,3*i); y=a.SubData(-1,3*i+1); z=a.SubData(-1,3*i+2);
- Plot(x,y,z,pen);
- }
-}
-//-----------------------------------------------------------------------------
-void mglGraph::Area2(const mglData &a, const char *pen,mreal zVal)
-{
- if(a.nx<2 || a.ny<2) { SetWarn(mglWarnLow,"Area2"); return; }
- mglData x,y;
- for(long i=0;i<a.ny/2;i++)
- {
- x=a.SubData(-1,2*i); y=a.SubData(-1,2*i+1);
- Area(x,y,pen,false,zVal);
- }
-}
-//-----------------------------------------------------------------------------
-void mglGraph::Area3(const mglData &a, const char *pen)
-{
- if(a.nx<2 || a.ny<3) { SetWarn(mglWarnLow,"Area3"); return; }
- mglData x,y,z;
- for(long i=0;i<a.ny/2;i++)
- {
- x=a.SubData(-1,3*i); y=a.SubData(-1,3*i+1); z=a.SubData(-1,3*i+2);
- Area(x,y,z,pen);
- }
-}
-//-----------------------------------------------------------------------------
-void mglGraph::Stem2(const mglData &a, const char *pen,mreal zVal)
-{
- if(a.nx<2 || a.ny<2) { SetWarn(mglWarnLow,"Stem2"); return; }
- mglData x,y;
- for(long i=0;i<a.ny/2;i++)
- {
- x=a.SubData(-1,2*i); y=a.SubData(-1,2*i+1);
- Stem(x,y,pen,zVal);
- }
-}
-//-----------------------------------------------------------------------------
-void mglGraph::Stem3(const mglData &a, const char *pen)
-{
- if(a.nx<2 || a.ny<3) { SetWarn(mglWarnLow,"Stem3"); return; }
- mglData x,y,z;
- for(long i=0;i<a.ny/2;i++)
- {
- x=a.SubData(-1,3*i); y=a.SubData(-1,3*i+1); z=a.SubData(-1,3*i+2);
- Stem(x,y,z,pen);
- }
-}
-//-----------------------------------------------------------------------------
-void mglGraph::Step2(const mglData &a, const char *pen,mreal zVal)
-{
- if(a.nx<2 || a.ny<2) { SetWarn(mglWarnLow,"Step2"); return; }
- mglData x,y;
- for(long i=0;i<a.ny/2;i++)
- {
- x=a.SubData(-1,2*i); y=a.SubData(-1,2*i+1);
- Step(x,y,pen,zVal);
- }
-}
-//-----------------------------------------------------------------------------
-void mglGraph::Step3(const mglData &a, const char *pen)
-{
- if(a.nx<2 || a.ny<3) { SetWarn(mglWarnLow,"Step3"); return; }
- mglData x,y,z;
- for(long i=0;i<a.ny/2;i++)
- {
- x=a.SubData(-1,3*i); y=a.SubData(-1,3*i+1); z=a.SubData(-1,3*i+2);
- Step(x,y,z,pen);
- }
-}
-//-----------------------------------------------------------------------------
-void mglGraph::Bars2(const mglData &a, const char *pen,mreal zVal, bool above)
-{
- if(a.nx<2 || a.ny<2) { SetWarn(mglWarnLow,"Bars2"); return; }
- mglData x,y;
- for(long i=0;i<a.ny/2;i++)
- {
- x=a.SubData(-1,2*i); y=a.SubData(-1,2*i+1);
- Bars(x,y,pen,zVal,above);
- }
-}
-//-----------------------------------------------------------------------------
-void mglGraph::Bars3(const mglData &a, const char *pen, bool above)
-{
- if(a.nx<2 || a.ny<3) { SetWarn(mglWarnLow,"Bars3"); return; }
- mglData x,y,z;
- for(long i=0;i<a.ny/2;i++)
- {
- x=a.SubData(-1,3*i); y=a.SubData(-1,3*i+1); z=a.SubData(-1,3*i+2);
- Bars(x,y,z,pen,above);
- }
-}
-//-----------------------------------------------------------------------------
-void mglGraph::Torus2(const mglData &a, const char *sch)
-{
- if(a.nx<2 || a.ny<2) { SetWarn(mglWarnLow,"Torus2"); return; }
- mglData x=a.SubData(-1,0);
- mglData z=a.SubData(-1,1);
- Torus(x,z,sch);
-}
-//-----------------------------------------------------------------------------
// 1D plotting functions
//-----------------------------------------------------------------------------
/// Draw line plot for points in arrays \a x, \a y, \a z.
@@ -1466,12 +1424,6 @@ void mgl_plot_xy(HMGL gr, const HMDT x, const HMDT y, const char *pen)
/// Draw line plot for points in arrays \a y.
void mgl_plot(HMGL gr, const HMDT y, const char *pen)
{ if(gr && y) gr->Plot(*y,pen); }
-/// Draw line plot for points in arrays \a a(0,:),\a a(1,:).
-void mgl_plot_2(HMGL gr, const HMDT a, const char *pen)
-{ if(gr && a) gr->Plot2(*a,pen); }
-/// Draw line plot for points in arrays \a a(0,:),\a a(1,:),\a a(2,:).
-void mgl_plot_3(HMGL gr, const HMDT a, const char *pen)
-{ if(gr && a) gr->Plot3(*a,pen); }
/// Draw boxplot for points in arrays \a x, \a y.
void mgl_boxplot_xy(HMGL gr, const HMDT x, const HMDT y, const char *pen)
{ if(gr && x && y) gr->BoxPlot(*x,*y,pen); }
@@ -1496,20 +1448,9 @@ void mgl_area_xyz(HMGL gr, const HMDT x, const HMDT y, const HMDT z, const char
/// Draw area plot for points in arrays \a x, \a y.
void mgl_area_xy(HMGL gr, const HMDT x, const HMDT y, const char *pen)
{ if(gr && x && y) gr->Area(*x,*y,pen); }
-/// Draw area plot for points in arrays \a x, \a y.
-void mgl_area_xys(HMGL gr, const HMDT x, const HMDT y, const char *pen)
-{ if(gr && x && y) gr->Area(*x,*y,pen,true); }
/// Draw area plot for points in arrays \a y.
-void mgl_area_s(HMGL gr, const HMDT y, const char *pen)
-{ if(gr && y) gr->Area(*y,pen,true); }
void mgl_area(HMGL gr, const HMDT y, const char *pen)
{ if(gr && y) gr->Area(*y,pen); }
-/// Draw area plot for points in arrays \a a(0,:),\a a(1,:).
-void mgl_area_2(HMGL gr, const HMDT a, const char *pen)
-{ if(gr && a) gr->Area2(*a, pen); }
-/// Draw area plot for points in arrays \a a(0,:),\a a(1,:),\a a(2,:).
-void mgl_area_3(HMGL gr, const HMDT a, const char *pen)
-{ if(gr && a) gr->Area3(*a,pen); }
/// Fill area between curves \a y1, \a y2 parametrically dependent on \a x.
void mgl_region_xy(HMGL gr, const HMDT x, const HMDT y1, const HMDT y2, const char *pen, int inside)
{ if(gr && x && y1 && y2) gr->Region(*x,*y1,*y2,pen,NAN,inside); }
@@ -1528,12 +1469,6 @@ void mgl_stem_xy(HMGL gr, const HMDT x, const HMDT y, const char *pen)
/// Draw vertical lines from points in arrays \a y to mglGraph::Org.
void mgl_stem(HMGL gr, const HMDT y, const char *pen)
{ if(gr && y) gr->Stem(*y,pen); }
-/// Draw vertical lines from points in arrays \a a(0,:),\a a(1,:) to mglGraph::Org.
-void mgl_stem_2(HMGL gr, const HMDT a, const char *pen)
-{ if(gr && a) gr->Stem2(*a, pen); }
-/// Draw vertical lines from points in arrays \a a(0,:),\a a(1,:),\a a(2,:) to mglGraph::Org.
-void mgl_stem_3(HMGL gr, const HMDT a, const char *pen)
-{ if(gr && a) gr->Stem3(*a, pen); }
/// Draw stairs for points in arrays \a x, \a y, \a z.
void mgl_step_xyz(HMGL gr, const HMDT x, const HMDT y, const HMDT z, const char *pen)
{ if(gr && x && y && z) gr->Step(*x,*y,*z,pen); }
@@ -1543,12 +1478,6 @@ void mgl_step_xy(HMGL gr, const HMDT x, const HMDT y, const char *pen)
/// Draw line plot for points in arrays \a y.
void mgl_step(HMGL gr, const HMDT y, const char *pen)
{ if(gr && y) gr->Step(*y,pen); }
-/// Draw stairs for points in arrays \a a(0,:),\a a(1,:).
-void mgl_step_2(HMGL gr, const HMDT a, const char *pen)
-{ if(gr && a) gr->Step2(*a, pen); }
-/// Draw stairs for points in arrays \a a(0,:),\a a(1,:),\a a(2,:).
-void mgl_step_3(HMGL gr, const HMDT a, const char *pen)
-{ if(gr && a) gr->Step3(*a, pen); }
/// Draw vertical bars from points in arrays \a x, \a y, \a z to mglGraph::Org.
void mgl_bars_xyz(HMGL gr, const HMDT x, const HMDT y, const HMDT z, const char *pen)
{ if(gr && x && y && z) gr->Bars(*x,*y,*z,pen); }
@@ -1558,12 +1487,6 @@ void mgl_bars_xy(HMGL gr, const HMDT x, const HMDT y, const char *pen)
/// Draw vertical bars from points in arrays \a y to mglGraph::Org.
void mgl_bars(HMGL gr, const HMDT y, const char *pen)
{ if(gr && y) gr->Bars(*y,pen); }
-/// Draw vertical bars from points in arrays \a a(0,:),\a a(1,:) to mglGraph::Org.
-void mgl_bars_2(HMGL gr, const HMDT a, const char *pen)
-{ if(gr && a) gr->Bars2(*a, pen); }
-/// Draw vertical bars from points in arrays \a a(0,:),\a a(1,:),\a a(2,:) to mglGraph::Org.
-void mgl_bars_3(HMGL gr, const HMDT a, const char *pen)
-{ if(gr && a) gr->Bars3(*a, pen); }
/// Draw vertical bars from points in arrays \a x, \a y to mglGraph::Org.
void mgl_barh_yx(HMGL gr, const HMDT y, const HMDT v, const char *pen)
{ if(gr && v && y) gr->Barh(*y,*v,pen); }
@@ -1573,9 +1496,6 @@ void mgl_barh(HMGL gr, const HMDT v, const char *pen)
/// Draw surface of curve {\a r,\a z} rotatation around Z axis
void mgl_torus(HMGL gr, const HMDT r, const HMDT z, const char *pen)
{ if(gr && r && z) gr->Torus(*r, *z, pen); }
-/// Draw surface of curve {\a a(0,:),\a a(1,:)} rotatation around Z axis for
-void mgl_torus_2(HMGL gr, const HMDT a, const char *pen)
-{ if(gr && a) gr->Torus2(*a, pen); }
//-----------------------------------------------------------------------------
/// Draw chart for data a
void mgl_chart(HMGL gr, const HMDT a, const char *col)
@@ -1640,20 +1560,6 @@ void mgl_plot_(uintptr_t *gr, uintptr_t *y, const char *pen,int l)
if(gr && y) _GR_->Plot(_D_(y),s);
delete []s;
}
-/// Draw line plot for points in arrays \a a(0,:),\a a(1,:).
-void mgl_plot_2_(uintptr_t *gr, uintptr_t *a, const char *pen,int l)
-{
- char *s=new char[l+1]; memcpy(s,pen,l); s[l]=0;
- if(gr && a) _GR_->Plot2(_D_(a),s);
- delete []s;
-}
-/// Draw line plot for points in arrays \a a(0,:),\a a(1,:),\a a(2,:).
-void mgl_plot_3_(uintptr_t *gr, uintptr_t *a, const char *pen,int l)
-{
- char *s=new char[l+1]; memcpy(s,pen,l); s[l]=0;
- if(gr && a) _GR_->Plot3(_D_(a),s);
- delete []s;
-}
/// Draw boxplot for points in arrays \a x, \a y.
void mgl_boxplot_xy_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, const char *pen,int l)
{
@@ -1712,32 +1618,12 @@ void mgl_area_xy_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, const char *pen,int
delete []s;
}
/// Draw area plot for points in arrays \a y.
-void mgl_area_s_(uintptr_t *gr, uintptr_t *y, const char *pen,int l)
-{
- char *s=new char[l+1]; memcpy(s,pen,l); s[l]=0;
- if(gr && y) _GR_->Area(_D_(y),s,true);
- delete []s;
-}
void mgl_area_(uintptr_t *gr, uintptr_t *y, const char *pen,int l)
{
char *s=new char[l+1]; memcpy(s,pen,l); s[l]=0;
if(gr && y) _GR_->Area(_D_(y),s);
delete []s;
}
-/// Draw area plot for points in arrays \a a(0,:),\a a(1,:).
-void mgl_area_2_(uintptr_t *gr, uintptr_t *a, const char *pen,int l)
-{
- char *s=new char[l+1]; memcpy(s,pen,l); s[l]=0;
- if(gr && a) _GR_->Area2(_D_(a), s);
- delete []s;
-}
-/// Draw area plot for points in arrays \a a(0,:),\a a(1,:),\a a(2,:).
-void mgl_area_3_(uintptr_t *gr, uintptr_t *a, const char *pen,int l)
-{
- char *s=new char[l+1]; memcpy(s,pen,l); s[l]=0;
- if(gr && a) _GR_->Area3(_D_(a),s);
- delete []s;
-}
/// Fill area between the curves \a y1, \a y2 parametrically dependent on \a x.
void mgl_region_xy_(uintptr_t *gr, uintptr_t *x, uintptr_t *y1, uintptr_t *y2, const char *pen, int *inside, int l)
{
@@ -1776,20 +1662,6 @@ void mgl_stem_(uintptr_t *gr, uintptr_t *y, const char *pen,int l)
if(gr && y) _GR_->Stem(_D_(y),s);
delete []s;
}
-/// Draw vertical lines from points in arrays \a a(0,:),\a a(1,:) to mglGraph::Org.
-void mgl_stem_2_(uintptr_t *gr, uintptr_t *a, const char *pen,int l)
-{
- char *s=new char[l+1]; memcpy(s,pen,l); s[l]=0;
- if(gr && a) _GR_->Stem2(_D_(a), s);
- delete []s;
-}
-/// Draw vertical lines from points in arrays \a a(0,:),\a a(1,:),\a a(2,:) to mglGraph::Org.
-void mgl_stem_3_(uintptr_t *gr, uintptr_t *a, const char *pen,int l)
-{
- char *s=new char[l+1]; memcpy(s,pen,l); s[l]=0;
- if(gr && a) _GR_->Stem3(_D_(a), s);
- delete []s;
-}
/// Draw stairs for points in arrays \a x, \a y, \a z.
void mgl_step_xyz_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, uintptr_t *z, const char *pen,int l)
{
@@ -1811,20 +1683,6 @@ void mgl_step_(uintptr_t *gr, uintptr_t *y, const char *pen,int l)
if(gr && y) _GR_->Step(_D_(y),s);
delete []s;
}
-/// Draw stairs for points in arrays \a a(0,:),\a a(1,:).
-void mgl_step_2_(uintptr_t *gr, uintptr_t *a, const char *pen,int l)
-{
- char *s=new char[l+1]; memcpy(s,pen,l); s[l]=0;
- if(gr && a) _GR_->Step2(_D_(a), s);
- delete []s;
-}
-/// Draw stairs for points in arrays \a a(0,:),\a a(1,:),\a a(2,:).
-void mgl_step_3_(uintptr_t *gr, uintptr_t *a, const char *pen,int l)
-{
- char *s=new char[l+1]; memcpy(s,pen,l); s[l]=0;
- if(gr && a) _GR_->Step3(_D_(a), s);
- delete []s;
-}
/// Draw vertical bars from points in arrays \a x, \a y, \a z to mglGraph::Org.
void mgl_bars_xyz_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, uintptr_t *z, const char *pen,int l)
{
@@ -1846,20 +1704,6 @@ void mgl_bars_(uintptr_t *gr, uintptr_t *y, const char *pen,int l)
if(gr && y) _GR_->Bars(_D_(y),s);
delete []s;
}
-/// Draw vertical bars from points in arrays \a a(0,:),\a a(1,:) to mglGraph::Org.
-void mgl_bars_2_(uintptr_t *gr, uintptr_t *a, const char *pen,int l)
-{
- char *s=new char[l+1]; memcpy(s,pen,l); s[l]=0;
- if(gr && a) _GR_->Bars2(_D_(a), s);
- delete []s;
-}
-/// Draw vertical bars from points in arrays \a a(0,:),\a a(1,:),\a a(2,:) to mglGraph::Org.
-void mgl_bars_3_(uintptr_t *gr, uintptr_t *a, const char *pen,int l)
-{
- char *s=new char[l+1]; memcpy(s,pen,l); s[l]=0;
- if(gr && a) _GR_->Bars3(_D_(a), s);
- delete []s;
-}
/// Draw vertical bars from points in arrays \a x, \a y to mglGraph::Org.
void mgl_barh_yx_(uintptr_t *gr, uintptr_t *y, uintptr_t *v, const char *pen,int l)
{
@@ -1881,13 +1725,6 @@ void mgl_torus_(uintptr_t *gr, uintptr_t *r, uintptr_t *z, const char *pen,int l
if(gr && r && z) _GR_->Torus(_D_(r), _D_(z), s);
delete []s;
}
-/// Draw surface of curve {\a a(0,:),\a a(1,:)} rotatation around Z axis for
-void mgl_torus_2_(uintptr_t *gr, uintptr_t *a, const char *pen,int l)
-{
- char *s=new char[l+1]; memcpy(s,pen,l); s[l]=0;
- if(gr && a) _GR_->Torus2(_D_(a), s);
- delete []s;
-}
//-----------------------------------------------------------------------------
/// Draw chart for data a
void mgl_chart_(uintptr_t *gr, uintptr_t *a, const char *col,int l)
diff --git a/mgl/mgl_ab.cpp b/mgl/mgl_ab.cpp
index 3a9b3d5..53dba12 100644
--- a/mgl/mgl_ab.cpp
+++ b/mgl/mgl_ab.cpp
@@ -19,7 +19,7 @@
***************************************************************************/
#include <stdlib.h>
#include <time.h>
-#include <wchar.h>
+#include <wchar.h>
#include "mgl/mgl_ab.h"
#define imax(a,b) (a)>(b) ? (a) : (b)
@@ -37,14 +37,14 @@ mglGraphAB::mglGraphAB(int w,int h) : mglGraph()
G = 0; UseLight = false; st_pos=-1;
memset(stack,0,MGL_STACK_ENTRY*13*sizeof(mreal));
SetSize(w,h); ClfOnUpdate = true; SetDrawReg(1,1,0);
- AutoClf=true; Delay = 100; ObjId=0;
+ AutoClf=true; Delay = 1; ObjId=0; pPos=0;
NoAutoFactor = false; ShowMousePos = true;
BDef[0] = BDef[1] = BDef[2] = BDef[3] = 255;
DefaultPlotParam();
}
//-----------------------------------------------------------------------------
mglGraphAB::~mglGraphAB()
-{ if(G) { delete []G; delete []G4; } }
+{ if(G) { delete []G; delete []G4; delete []OI; } }
//-----------------------------------------------------------------------------
void mglGraphAB::Pop()
{
@@ -92,11 +92,12 @@ void mglGraphAB::Pen(mglColor col, char style,mreal width)
switch(style)
{
case '-': PDef = 0xffff; break;
- case '|': PDef = 0xff00; break;
- case ';': PDef = 0xf0f0; break;
- case ':': PDef = 0x8888; break;
- case 'j': PDef = 0xfe10; break;
- case 'i': PDef = 0xe4e4; break;
+ case '|': PDef = 0x00ff; break;
+ case ';': PDef = 0x0f0f; break;
+ case '=': PDef = 0x3333; break;
+ case ':': PDef = 0x1111; break;
+ case 'j': PDef = 0x087f; break;
+ case 'i': PDef = 0x2727; break;
case ' ': PDef = 0x0000; break;
// case 0: PDef = 0x0000; break;
// default: PDef = 0xffff;
@@ -132,21 +133,8 @@ void mglGraphAB::RotateN(mreal Tet,mreal x,mreal y,mreal z)
void mglGraphAB::Perspective(mreal a) // I'm too lazy for using 4*4 matrix
{ Persp = fabs(a)/Depth; }
//-----------------------------------------------------------------------------
-void mglGraphAB::RestoreM()
-{
- memcpy(B,BL,9*sizeof(mreal));
- xPos = BL[9]; yPos = BL[10]; zPos = BL[11];
- PlotFactor = BL[12];
-}
-//-----------------------------------------------------------------------------
void mglGraphAB::InPlot(mreal x1,mreal x2,mreal y1,mreal y2, bool rel)
{
- if(!rel)
- {
- memcpy(BL,B,9*sizeof(mreal));
- BL[9] = xPos; BL[10] = yPos; BL[11] = zPos;
- BL[12] = PlotFactor;
- }
SelectPen("k-1");
if(Width<=0 || Height<=0 || Depth<=0) return;
memset(B,0,9*sizeof(mreal));
@@ -370,23 +358,24 @@ void mglGraphAB::Putsw(mglPoint p, const wchar_t *wcs, const char *font, mreal s
if(font && strchr(font, 'a')) { Labelw(p.x, p.y, wcs,font,size,true); return; }
wchar_t *wcl;
- int wn=0;
+ unsigned wn=0;
const wchar_t *wnl=0;
for(wn=0;wn<wcslen(wcs);wn++)
- if(wcs[wn]=='\n' || (wcs[wn]=='\\' && wcs[wn+1]=='n'))
+ if(wcs[wn]=='\n' || (wcs[wn]=='\\' && wcs[wn+1]=='n' && strchr(" \t,.{[]1234567890",wcs[wn+2])))
{ wnl = wcs+wn; break; }
if(wnl)
{
wcl = new wchar_t[wn+1]; memcpy(wcl,wcs,wn*sizeof(wchar_t));
wcl[wn]=0; Putsw(p, wcl, font, size, dir, sh);
wnl = wcs[wn]=='\n'?wnl+1:wnl+2;
+ if(*wnl<=' ') wnl++;
nl_shift++; Putsw(p, wnl, font, size, dir, sh); nl_shift--;
return;
}
bool upside = ( (((_sx==-1) ^ (Org.y==Max.y || Org.z==Max.z)) && (dir=='x' || dir=='X')) ||
(((_sy==-1) ^ (Org.x==Max.x || Org.z==Max.z)) && (dir=='y' || dir=='Y')) ||
- (((_st==-1) ^ (Org.x==0 || Org.z==1)) && (dir=='t' || dir=='T')) ||
+ (((_st==1)) && (dir=='t' || dir=='T')) ||
(((_sz==-1) ^ (Org.y==Max.y || Org.x==Max.x)) && (dir=='z' || dir=='Z')) );
mreal pp[6] = {p.x,p.y,p.z,p.x,p.y,p.z};
Arrow1 = Arrow2 = '_';
@@ -409,22 +398,21 @@ void mglGraphAB::Putsw(mglPoint p, const wchar_t *wcs, const char *font, mreal s
{
case 'x':
case 'X':
- pp[3] += pp[3] ? fabs(pp[3])*.001 :(Max.x - Min.x)/100; break;
+// pp[3] += pp[3] ? fabs(pp[3])*.001 :(Max.x - Min.x)/100; break;
+ pp[3] += (Max.x - Min.x)/1000; break;
case 'y':
case 'Y':
if(TernAxis) upside = !upside;
- pp[4] += pp[4] ? fabs(pp[4])*.001 : (Max.y - Min.y)/10; break;
+// pp[4] += pp[4] ? fabs(pp[4])*.001 : (Max.y - Min.y)/10; break;
+ pp[4] += (Max.y - Min.y)/1000; break;
case 'z':
case 'Z':
if(TernAxis) upside = !upside;
- pp[4] -= 0;
- pp[5] += pp[5] ? fabs(pp[5])*.001 :(Max.z - Min.z)/100; break;
+// pp[4] -= 0; pp[5] += pp[5] ? fabs(pp[5])*.001 :(Max.z - Min.z)/100; break;
+ pp[5] += (Max.z - Min.z)/1000; break;
case 't':
case 'T':
-// upside = !upside;
- pp[3] += (Max.x - Min.x)/100;
- pp[4] -= (Max.y - Min.y)/100;
- pp[5] += 0; break;
+ pp[3] += (Max.x - Min.x)/1000; pp[4] -= (Max.y - Min.y)/1000; break;
}
if(upside) shift = -shift;
shift *= fsize/2;
@@ -486,7 +474,7 @@ void mglGraphAB::Putsw(mglPoint p, const wchar_t *wcs, const char *font, mreal s
}
}
zoomx1=x1; zoomx2=x2; zoomy1=y1; zoomy2=y2;
- yPos -= nl_shift*shift*1.25;
+ yPos -= nl_shift*0.11/PlotFactor*fsize;
fnt->Puts(wcs,font1,col);
Pop(); delete []font1; EndGroup();
}
@@ -500,7 +488,8 @@ void mglGraphAB::Legend(int n, wchar_t **text,char **style, mreal x, mreal y,
static int cgid=1; StartGroup("Legend",cgid++);
mreal pp[15], r=GetRatio(), rh, rw, s3=PlotFactor;
if(size<=0) size = -size*FontSize;
- if(!font || !(*font)) font="L";
+ if(!font || !(*font)) font="L";
+ char *pA, *ff = new char[strlen(font)+1]; strcpy(ff,font);
llen *= 1.5;
rh=(r<1?r:1.)*size/6.; rw=(r>1?1./r:1.)*size/8.;
@@ -514,8 +503,14 @@ void mglGraphAB::Legend(int n, wchar_t **text,char **style, mreal x, mreal y,
w = w>j ? w:j;
}
w = (w + llen*1.1f); // add space for lines
-
- Push(); memcpy(B,B1,9*sizeof(mreal));
+
+ bool rel = true;
+ if((pA=strchr(ff,'A')))
+ {
+ *pA = 'L';
+ rel = false;
+ }
+ Push(); Identity(rel); // memcpy(B,B1,9*sizeof(mreal));
if(LegendBox) // draw bounding box
{
pp[2] = pp[5] = pp[8] = pp[11] = pp[14] = s3-0.01;
@@ -540,13 +535,19 @@ void mglGraphAB::Legend(int n, wchar_t **text,char **style, mreal x, mreal y,
pp[0] = x+0.1f*llen; pp[3] = x+0.9f*llen; pp[6] = x+0.5f*llen;
// ScalePoint(pp[0],pp[1],pp[2]); ScalePoint(pp[3],pp[4],pp[5]); ScalePoint(pp[6],pp[7],pp[8]);
- curv_plot(2,pp,0);
- if(m) Mark(pp[6],pp[7],pp[8],m);
+ pPos=0; curv_plot(2,pp,0);
+ if(m) for(int j=0;j<LegendMarks;j++)
+ {
+ pp[8] = s3; pp[7] = y+i*h+0.45f*h;
+ pp[6] = x+0.1f*llen + (j+1)*0.8f*llen/(1.+LegendMarks);
+// ScalePoint(pp[6],pp[7],pp[8]);
+ Mark(pp[6],pp[7],pp[8],m);
+ }
SelectPen(TranspType!=2 ? "k-1":"w-1");
- Putsw(mglPoint(x+(style[i][0]!=0?llen:0), y+i*h+0.3f*h, s3), text[i], font, size);
+ Putsw(mglPoint(x+(style[i][0]!=0?llen:0), y+i*h+0.3f*h, s3), text[i], ff, size);
}
ScalePuts = true;
- Pop(); EndGroup();
+ Pop(); EndGroup(); delete []ff;
}
//-----------------------------------------------------------------------------
void mglGraphAB::colorbar(const mglData &vv, const mglColor *cs, int where, mreal x, mreal y, mreal w, mreal h)
@@ -881,6 +882,7 @@ mreal mglGraphAB::GetOrgX(char dir)
if(dir=='x') res = ax[0];
else if(dir=='y') res = ay[0];
else if(dir=='z') res = az[0];
+ else if(dir=='t') res = Min.x;
else res = B[6]>0 ? Max.x:Min.x;
}
return res;
@@ -896,6 +898,7 @@ mreal mglGraphAB::GetOrgY(char dir)
if(dir=='x') res = ax[1];
else if(dir=='y') res = ay[1];
else if(dir=='z') res = az[1];
+ else if(dir=='t') res = Min.y;
else res = B[7]>0 ? Max.y:Min.y;
}
return res;
@@ -911,6 +914,7 @@ mreal mglGraphAB::GetOrgZ(char dir)
if(dir=='x') res = ax[2];
else if(dir=='y') res = ay[2];
else if(dir=='z') res = az[2];
+ else if(dir=='t') res = Min.z;
else res = B[8]>0 ? Max.z:Min.z;
}
return res;
@@ -956,7 +960,7 @@ int mgl_draw_class(mglGraph *gr, void *p)
{ return p ? ((mglDraw *)p)->Draw(gr) : 0; }
void mgl_reload_class(int next, void *p)
{ if(p) ((mglDraw *)p)->Reload(next); }
-void mglGraphAB::Window(int argc, char **argv, mglDraw *draw, const char *title, bool maximize)
+void mglGraphAB::Window(int argc, char **argv, const char *title, mglDraw *draw, bool maximize)
{
Window(argc, argv, mgl_draw_class, title, draw, mgl_reload_class, maximize);
}
diff --git a/mgl/mgl_addon.cpp b/mgl/mgl_addon.cpp
index b3b6c53..bf8e29c 100644
--- a/mgl/mgl_addon.cpp
+++ b/mgl/mgl_addon.cpp
@@ -39,8 +39,8 @@ void mgl_strcls(char *str)
}
for(n=0;n<strlen(tmp);n++) if(tmp[n]!=' ') break;
for(i=strlen(tmp)-1;i>0;i--) if(tmp[i]!=' ') break;
- tmp[i+1]=0;
- strcpy(str,&(tmp[n]));
+ tmp[i+1]=0; strcpy(str,&(tmp[n]));
+ delete []tmp;
}
//---------------------------------------------------------------------------
int mgl_strpos(const char *str,char *fnd)
@@ -66,7 +66,7 @@ char *mgl_fgetstr(FILE *fp)
static char s[256];
do
{
- fgets(s,256,fp);
+ if(!fgets(s,256,fp)) break;
mgl_strtrim(s);
// strlwr(s);
} while(!feof(fp) && (s[0]==0 || s[0]=='%' || s[0]=='#'));
@@ -109,8 +109,8 @@ FILE *mgl_next_data(const char *fname,int p)
if(p>0) pos = p;
if(fname==NULL) return NULL;
- if(pos==0) getcwd(path,256); // remember ini dyrectory
- else chdir(path);
+ if(pos==0) { if(!getcwd(path,256)) return 0; } // remember ini dyrectory
+ else { if(chdir(path)==-1) return 0; }
// read the initial (common) date from "mbrs.ini"
FILE *fp=fopen(fname,"rt");
@@ -125,6 +125,8 @@ FILE *mgl_next_data(const char *fname,int p)
{
s = mgl_fgetstr(fp);
fflush(stdout);
+ if(s[0]=='$' || s[1]=='$' || s[3]=='$')
+ { fclose(fp); return NULL; }
} while(!feof(fp) && (s[0]!='-' || s[1]!='-' || s[3]!='-'));
if(feof(fp)) // no more data
{ fclose(fp); return NULL; }
diff --git a/mgl/mgl_axis.cpp b/mgl/mgl_axis.cpp
index fc9dd84..f5ffc71 100644
--- a/mgl/mgl_axis.cpp
+++ b/mgl/mgl_axis.cpp
@@ -46,12 +46,10 @@ void wcstrim_mgl(wchar_t *str)
wchar_t *c = mgl_wcsdup(str);
unsigned long n=wcslen(str);
long k;
- for(k=0;k<long(wcslen(str));k++) // óäàëÿåì íà÷àëüíûå ïðîáåëû
- if(!isspace(str[k])) break;
+ for(k=0;k<long(wcslen(str));k++) if(!isspace(str[k])) break;
wcscpy(c,&(str[k]));
n = wcslen(c);
- for(k=n-1;k>=0;k--) // óäàëÿåì íà÷àëüíûå ïðîáåëû
- if(!isspace(c[k])) break;
+ for(k=n-1;k>=0;k--) if(!isspace(c[k])) break;
c[k+1] = 0;
wcscpy(str,c); free(c);
}
@@ -73,8 +71,7 @@ void mglGraph::DrawXGridLine(mreal t, mreal y0, mreal z0)
bool *tt = new bool[GridPnts+1];
for(i=0;i<GridPnts+1;i++)
{
- pp[3*i]=t;//TernAxis ? t-t*i/30. : t;
- pp[3*i+1]=y0;//TernAxis ? t*i/30. : y0;
+ pp[3*i]=t; pp[3*i+1]=y0;
pp[3*i+2]=Min.z+(Max.z-Min.z)*i/GridPnts;
tt[i] = ScalePoint(pp[3*i],pp[3*i+1],pp[3*i+2]);
}
@@ -82,7 +79,7 @@ void mglGraph::DrawXGridLine(mreal t, mreal y0, mreal z0)
for(i=0;i<GridPnts+1;i++)
{
pp[3*i]=t; pp[3*i+2]=z0;
- pp[3*i+1]=Min.y+(Max.y-(TernAxis ? t:Min.y))*i/GridPnts;
+ pp[3*i+1]=Min.y+(Max.y-(TernAxis ? Min.y+t-Min.x:Min.y))*i/GridPnts;
tt[i] = ScalePoint(pp[3*i],pp[3*i+1],pp[3*i+2]);
}
curv_plot(GridPnts+1,pp,tt);
@@ -96,8 +93,8 @@ void mglGraph::DrawYGridLine(mreal t, mreal x0, mreal z0)
bool *tt = new bool[GridPnts+1];
for(i=0;i<GridPnts+1;i++)
{
- pp[3*i]=x0;//TernAxis ? t*i/30. : x0;
- pp[3*i+1]=t;//TernAxis ? t-t*i/30. : t;
+ pp[3*i]=TernAxis ? Max.x-t+Min.y:x0;
+ pp[3*i+1]=t;
pp[3*i+2]=Min.z+(Max.z-Min.z)*i/GridPnts;
tt[i] = ScalePoint(pp[3*i],pp[3*i+1],pp[3*i+2]);
}
@@ -105,7 +102,7 @@ void mglGraph::DrawYGridLine(mreal t, mreal x0, mreal z0)
for(i=0;i<GridPnts+1;i++)
{
pp[3*i+2]=z0; pp[3*i+1]=t;
- pp[3*i]=Min.x+(Max.x-(TernAxis ? t : Min.x))*i/GridPnts;
+ pp[3*i]=Min.x+(Max.x-(TernAxis ? Min.x+Min.y-t : Min.x))*i/GridPnts;
tt[i] = ScalePoint(pp[3*i],pp[3*i+1],pp[3*i+2]);
}
curv_plot(GridPnts+1,pp,tt);
@@ -142,17 +139,17 @@ void mglGraph::DrawTGridLine(mreal t, mreal z0)
bool *tt = new bool[GridPnts+1];
for(i=0;i<GridPnts+1;i++)
{
- pp[3*i]= t*i/GridPnts;
- pp[3*i+1]=t-t*i/GridPnts;
+ pp[3*i]= Min.x+t*i/GridPnts;
+ pp[3*i+1]=Min.y+t-t*i/GridPnts;
pp[3*i+2]=z0;
tt[i] = ScalePoint(pp[3*i],pp[3*i+1],pp[3*i+2]);
}
curv_plot(GridPnts+1,pp,tt);
for(i=0;i<GridPnts+1;i++)
{
- pp[3*i]=t-t*i/GridPnts;
- pp[3*i+1]=t*i/GridPnts;
- pp[3*i+2]=z0;
+ pp[3*i]=Min.x; pp[3*i+1]=Min.y+t;
+ pp[3*i+2]=Min.z+(Max.z-Min.z)*i/GridPnts;
+ tt[i] = ScalePoint(pp[3*i],pp[3*i+1],pp[3*i+2]);
}
curv_plot(GridPnts+1,pp,tt);
delete [] tt; delete [] pp;
@@ -227,13 +224,13 @@ void mglGraph::Grid(const char *dir, const char *pen)
for(t=z0;t>=Min.z*FLT_EPS;t*=10) DrawZGridLine(t,x0,y0);
}
}
- if(strchr(dir,'t'))
+ if(strchr(dir,'t') && TernAxis)
{
z0 = isnan(OrgT.z) ? GetOrgZ('z') : OrgT.z;
z0 = z0 - ddz*floor((z0-Min.z)/ddz);
if(xnum) for(int i=0;i<xnum;i++) DrawTGridLine(xval[i],z0);
- else if(dx) for(t=Min.x;t<=Max.x;t+=ddx) DrawTGridLine(t,z0);
- else if(dy) for(t=Min.y;t<=Max.y;t+=ddy) DrawTGridLine(t,z0);
+ else if(dx) for(t=Min.x;t<=Max.x;t+=ddx) DrawTGridLine(t-Min.x,z0);
+ else if(dy) for(t=Min.y;t<=Max.y;t+=ddy) DrawTGridLine(t-Min.y,z0);
}
SelectPen("k-1");
EndGroup();
@@ -243,39 +240,41 @@ void mglGraph::Labelw(char dir,const wchar_t *text,mreal pos,mreal size,mreal sh
{
mreal t, x0, y0, z0;
SelectPen("k-1");
+ char font[33]="C";
+ if(pos<-0.2) font[0]='L'; if(pos>0.2) font[0]='R';
+ strcat(font,FontDef);
x0 = GetOrgX(dir); y0 = GetOrgY(dir); z0 = GetOrgZ(dir);
if(size<=0) size = -size*FontSize;
if(dir=='x')
{
if(dx) t = (Min.x+Max.x+pos*(Max.x-Min.x))/2;
else t = Min.x*pow(Max.x/Min.x, (pos+1)/2);
- Putsw(mglPoint(t,y0,z0),text,FontDef,size,'X',shift);
+ Putsw(mglPoint(t,y0,z0),text,font,size,'X',shift);
}
if(dir=='y')
{
if(TernAxis)
{
- t = (pos+1)/2;
- Putsw(mglPoint(Max.x-t,t,z0),text,FontDef,size,'T',shift);
+ t = (Min.y+Max.y+pos*(Max.y-Min.y))/2;
+ Putsw(mglPoint(Max.x+Min.y-t,t,z0),text,font,size,'T',shift);
}
else
{
- if(dx) t = (Min.y+Max.y+pos*(Max.y-Min.y))/2;
+ if(dy) t = (Min.y+Max.y+pos*(Max.y-Min.y))/2;
else t = Min.y*pow(Max.y/Min.y, (pos+1)/2);
- Putsw(mglPoint(x0,t,z0),text,FontDef,size,'Y',shift);
+ Putsw(mglPoint(x0,t,z0),text,font,size,'Y',shift);
}
}
if(dir=='z')
{
- if(dx) t = (Min.z+Max.z+pos*(Max.z-Min.z))/2;
+ if(dz) t = (Min.z+Max.z+pos*(Max.z-Min.z))/2;
else t = Min.z*pow(Max.z/Min.z, (pos+1)/2);
- Putsw(mglPoint(x0,y0,t),text,FontDef,size,'Z',shift);
+ Putsw(mglPoint(x0,y0,t),text,font,size,'Z',shift);
}
if(dir=='t' && TernAxis)
{
- if(dx) t = (Min.x+Max.x-pos*(Max.x-Min.x))/2;
- else t = Max.x*pow(Min.x/Max.x, (pos+1)/2);
- Putsw(mglPoint(x0,t,z0),text,FontDef,size,'Y',shift);
+ t = (Min.y+Max.y-pos*(Max.y-Min.y))/2;
+ Putsw(mglPoint(Min.x,t,Min.z),text,font,size,'Y',shift);
}
}
//-----------------------------------------------------------------------------
@@ -328,16 +327,16 @@ void _mgl_tick_text(mreal z, mreal z0, mreal d, mreal v, int kind, wchar_t str[6
if((kind&1) && z>z0)
{
int n1,n2;
- mglprintf(str, 64, fabs(u)<1 ? L"@{(+%.2g)}" : L"@{(+%.3g)}",u); n1=wcslen(str);
- mglprintf(str, 64, L"@{(+%g)}",u); n2=wcslen(str);
- if(n1<n2) mglprintf(str, 64, L"@{(+%.2g)}",u);
+ mglprintf(str, 64, fabs(u)<1 ? L"@{(+%.2g)}" : L"@{(+%.3g)}",u);
+ n1=wcslen(str); mglprintf(str, 64, L"@{(+%g)}",u); n2=wcslen(str);
+ if(n1<n2) mglprintf(str, 64, fabs(u)<1 ? L"@{(+%.2g)}" : L"@{(+%.3g)}",u);
}
else
{
int n1,n2;
mglprintf(str, 64, fabs(u)<1 ? L"%.2g" : L"%.3g",u);
n1=wcslen(str); mglprintf(str, 64, L"%g",u); n2=wcslen(str);
- if(n1<n2) mglprintf(str, 64, L"%.2g",u);
+ if(n1<n2) mglprintf(str, 64, fabs(u)<1 ? L"%.2g" : L"%.3g",u);
}
}
//-----------------------------------------------------------------------------
@@ -359,10 +358,9 @@ void mglGraph::DrawXTick(mreal x, mreal y0, mreal z0, mreal dy, mreal dz, int f)
if(*SubTStl && f) SelectPen(SubTStl);
DrawTick(pp,f!=0);
}
-void mglGraph::AxisX(bool text)
+void mglGraph::AxisX(bool text, const char *stl)
{
- mreal pp[3*31];
- bool tt[31];
+ mreal pp[3*32];
wchar_t str[64];
long i;
mreal x0,y0,z0,x,ddx,ddy,ddz,v=0;
@@ -374,14 +372,21 @@ void mglGraph::AxisX(bool text)
if(ddz==0) ddz=z0*10>fabs(Max.z-Min.z) ? 0.3*fabs(Max.z-Min.z) : z0*3;
if(y0>(Max.y+Min.y)/2) ddy = -ddy;
if(z0>(Max.z+Min.z)/2) ddz = -ddz;
- SelectPen(TranspType!=2 ? "k-1":"w-1");
+ SelectPen(stl);
for(i=0;i<31;i++) // draw axis line
{
pp[3*i+1]=y0; pp[3*i+2]=z0;
pp[3*i]=Min.x+(Max.x-Min.x)*i/30.;
- tt[i] = ScalePoint(pp[3*i],pp[3*i+1],pp[3*i+2]);
+ ScalePoint(pp[3*i],pp[3*i+1],pp[3*i+2]);
+ }
+ if(stl[3])
+ {
+ pp[3*31+1]=y0; pp[3*31+2]=z0;
+ pp[3*31]=Min.x+(Max.x-Min.x)*1.05;
+ ScalePoint(pp[3*31],pp[3*31+1],pp[3*31+2]);
+ curv_plot(32,pp,0);
}
- curv_plot(31,pp,tt);
+ else curv_plot(31,pp,0);
if(xnum) for(int i=0;i<xnum;i++)
{
@@ -406,7 +411,6 @@ void mglGraph::AxisX(bool text)
x0 = x0 - ddx*floor((x0-Max.x)/ddx+1e-3);
}
for(x=x0;x<=x1;x+=ddx)
-// for(x=x0;fabs(x-Max.x)<fabs(Max.x-Min.x)*1.000001;x+=ddx)
{
DrawXTick(x,y0,z0,ddy,ddz);
if(text)
@@ -469,17 +473,19 @@ void mglGraph::AxisX(bool text)
void mglGraph::DrawYTick(mreal y, mreal x0, mreal z0, mreal dx, mreal dz, int f)
{
mreal pp[9],ff=TickLen/sqrt(1.+f*st_t);
- pp[0]=x0+dx*ff; pp[1]=y; pp[2]=z0;
+ if(TernAxis)
+ { pp[0]=x0+dx*ff; pp[1]=y-dx*ff; pp[2]=z0; }
+ else
+ { pp[0]=x0+dx*ff; pp[1]=y; pp[2]=z0; }
pp[3]=x0; pp[4]=y; pp[5]=z0;
pp[6]=x0; pp[7]=y; pp[8]=z0+dz*ff;
if(*TickStl && !f) SelectPen(TickStl);
if(*SubTStl && f) SelectPen(SubTStl);
DrawTick(pp,f!=0);
}
-void mglGraph::AxisY(bool text)
+void mglGraph::AxisY(bool text, const char *stl)
{
- mreal pp[3*31];
- bool tt[31];
+ mreal pp[3*32];
wchar_t str[64];
long i;
mreal x0,y0,z0,y,ddx,ddy,ddz,v=0;
@@ -491,14 +497,21 @@ void mglGraph::AxisY(bool text)
if(ddz==0) ddz=z0*10>fabs(Max.z-Min.z) ? 0.3*fabs(Max.z-Min.z) : z0*3;
if(x0>(Max.x+Min.x)/2) ddx = -ddx;
if(z0>(Max.z+Min.z)/2) ddz = -ddz;
- SelectPen(TranspType!=2 ? "k-1":"w-1");
+ SelectPen(stl);
for(i=0;i<31;i++) // ñàìà îñü
{
pp[3*i]=x0; pp[3*i+2]=z0;
pp[3*i+1]=Min.y+(Max.y-Min.y)*i/30.;
- tt[i] = ScalePoint(pp[3*i],pp[3*i+1],pp[3*i+2]);
+ ScalePoint(pp[3*i],pp[3*i+1],pp[3*i+2]);
+ }
+ if(stl[3])
+ {
+ pp[3*31]=x0; pp[3*31+2]=z0;
+ pp[3*31+1]=Min.y+(Max.y-Min.y)*1.05;
+ ScalePoint(pp[3*31],pp[3*31+1],pp[3*31+2]);
+ curv_plot(32,pp,0);
}
- curv_plot(31,pp,tt);
+ else curv_plot(31,pp,0);
if(ynum) for(int i=0;i<ynum;i++)
{
@@ -592,10 +605,9 @@ void mglGraph::DrawZTick(mreal z, mreal x0, mreal y0, mreal dx, mreal dy, int f)
if(*SubTStl && f) SelectPen(SubTStl);
DrawTick(pp,f!=0);
}
-void mglGraph::AxisZ(bool text)
+void mglGraph::AxisZ(bool text, const char *stl)
{
- mreal pp[3*31];
- bool tt[31];
+ mreal pp[3*32];
wchar_t str[64];
long i;
mreal x0,y0,z0,z,ddx,ddy,ddz,v=0;
@@ -607,14 +619,21 @@ void mglGraph::AxisZ(bool text)
if(ddy==0) ddy=y0*10>fabs(Max.y-Min.y) ? 0.3*fabs(Max.y-Min.y) : y0*3;
if(x0>(Max.x+Min.x)/2) ddx = -ddx;
if(y0>(Max.y+Min.y)/2) ddy = -ddy;
- SelectPen(TranspType!=2 ? "k-1":"w-1");
+ SelectPen(stl);
for(i=0;i<31;i++) // ñàìà îñü
{
pp[3*i]=x0; pp[3*i+1]=y0;
pp[3*i+2]=Min.z+(Max.z-Min.z)*i/30.;
- tt[i] = ScalePoint(pp[3*i],pp[3*i+1],pp[3*i+2]);
+ ScalePoint(pp[3*i],pp[3*i+1],pp[3*i+2]);
+ }
+ if(stl[3])
+ {
+ pp[3*31]=x0; pp[3*31+1]=y0;
+ pp[3*31+2]=Min.z+(Max.z-Min.z)*1.05;
+ ScalePoint(pp[3*31],pp[3*31+1],pp[3*31+2]);
+ curv_plot(32,pp,0);
}
- curv_plot(31,pp,tt);
+ else curv_plot(31,pp,0);
if(znum) for(int i=0;i<znum;i++)
{
@@ -702,22 +721,28 @@ void mglGraph::Axis(const char *dir, bool adjust)
if(adjust) AdjustTicks(dir);
static int cgid=1; StartGroup("Axis",cgid++);
bool text = strchr(dir,'_')==NULL;
+ const char *arr = "AKDTVISO";
+ char stl[5]={TranspType!=2?'k':'w', '-', '1', 0, 0};
+ for(unsigned i=0;i<strlen(arr);i++)
+ if(strchr(dir,arr[i])) { stl[3]=arr[i]; break; }
+
if(TernAxis)
{
_sx = _sy = _st = 1;
- AxisX(text);
-// AxisY(text);
- AxisT(text);
+ if(fabs(Max.x-Min.x) != fabs(Max.y-Min.y))
+ SetWarn(mglWarnTern,"Axis");
+ AxisX(text, stl);
+ AxisT(text, stl);
}
else
{
- if(strchr(dir,'x')) { _sx = 1; AxisX(text); }
- if(strchr(dir,'X')) { _sx = -1; AxisX(text); }
- if(strchr(dir,'y')) { _sy = 1; AxisY(text); }
- if(strchr(dir,'Y')) { _sy = -1; AxisY(text); }
+ if(strchr(dir,'x')) { _sx = 1; AxisX(text, stl); }
+ if(strchr(dir,'X')) { _sx = -1; AxisX(text, stl); }
+ if(strchr(dir,'y')) { _sy = 1; AxisY(text, stl); }
+ if(strchr(dir,'Y')) { _sy = -1; AxisY(text, stl); }
}
- if(strchr(dir,'z')) { _sz = 1; AxisZ(text); }
- if(strchr(dir,'Z')) { _sz = -1; AxisZ(text); }
+ if(strchr(dir,'z')) { _sz = 1; AxisZ(text, stl); }
+ if(strchr(dir,'Z')) { _sz = -1; AxisZ(text, stl); }
EndGroup();
}
//-----------------------------------------------------------------------------
@@ -961,7 +986,7 @@ void mglGraph::Legend(int n, wchar_t **text,char **style, int where,
Legend(n,text,style,(x+1)/2,(y+1)/2,font,size,llen);
}
//-----------------------------------------------------------------------------
-void mglGraph::Ternary(bool t)
+void mglGraph::Ternary(int t)
{
static mglPoint x1(-1,-1,-1),x2(1,1,1),o(NAN,NAN,NAN);
static bool c = true;
@@ -978,17 +1003,16 @@ void mglGraph::Ternary(bool t)
void mglGraph::DrawTTick(mreal y, mreal x0, mreal z0, mreal dx, mreal dz, int f)
{
mreal pp[9],ff=TickLen/sqrt(1.+f*st_t);
- pp[0]=x0-y-dx*ff; pp[1]=y; pp[2]=z0;
- pp[3]=x0-y; pp[4]=y; pp[5]=z0;
- pp[6]=x0-y; pp[7]=y; pp[8]=z0+dz*ff;
+ pp[0]=x0-y+Min.y-dx*ff; pp[1]=y; pp[2]=z0;
+ pp[3]=x0-y+Min.y; pp[4]=y; pp[5]=z0;
+ pp[6]=x0-y+Min.y; pp[7]=y; pp[8]=z0+dz*ff;
if(*TickStl && !f) SelectPen(TickStl);
if(*SubTStl && f) SelectPen(SubTStl);
DrawTick(pp,f!=0);
}
-void mglGraph::AxisT(bool text)
+void mglGraph::AxisT(bool text, const char *stl)
{
- mreal pp[3*31];
- bool tt[31];
+ mreal pp[3*32];
wchar_t str[64];
long i;
mreal z0=GetOrgZ('z'), y, ddx, ddy, ddz;
@@ -998,43 +1022,60 @@ void mglGraph::AxisT(bool text)
if(ddx==0) ddx=(Max.x-Min.x)/2;
if(ddy==0) ddy=(Max.y-Min.y)/2;
if(ddz==0) ddz=(Max.z-Min.z)/2;
- SelectPen(TranspType!=2 ? "k-1":"w-1");
+ SelectPen(stl);
for(i=0;i<31;i++) // ñàìà îñü
{
pp[3*i]=Max.x+(Min.x-Max.x)*i/30.;
pp[3*i+2]=z0;
pp[3*i+1]=Min.y+(Max.y-Min.y)*i/30.;
- tt[i] = ScalePoint(pp[3*i],pp[3*i+1],pp[3*i+2]);
+ ScalePoint(pp[3*i],pp[3*i+1],pp[3*i+2]);
}
- curv_plot(31,pp,tt);
+ if(stl[3])
+ {
+ pp[3*31]=Max.x+(Min.x-Max.x)*1.05;
+ pp[3*31+1]=Min.y+(Max.y-Min.y)*1.05;
+ pp[3*31+2]=z0;
+ ScalePoint(pp[3*31],pp[3*31+1],pp[3*31+2]);
+ curv_plot(32,pp,0);
+ }
+ else curv_plot(31,pp,0);
for(i=0;i<31;i++) // ñàìà îñü
{
pp[3*i]=Min.x;
pp[3*i+1]=Max.y+(Min.y-Max.y)*i/30.;
pp[3*i+2]=z0;
- tt[i] = ScalePoint(pp[3*i],pp[3*i+1],pp[3*i+2]);
+ ScalePoint(pp[3*i],pp[3*i+1],pp[3*i+2]);
}
- curv_plot(31,pp,tt);
+ if(stl[3])
+ {
+ pp[3*31]=Min.x; pp[3*31+2]=z0;
+ pp[3*31+1]=Max.y+(Min.y-Max.y)*1.05;
+ ScalePoint(pp[3*31],pp[3*31+1],pp[3*31+2]);
+ curv_plot(32,pp,0);
+ }
+ else curv_plot(31,pp,0);
NSy = NSy<0 ? 0 : NSy;
- for(y=0;y<=Max.y+(Max.y-Min.y)*1e-6;y+=ddy)
+ for(y=Min.y;y<=Max.y+(Max.y-Min.y)*1e-6;y+=ddy)
{
if(y>Min.y && y<Max.y) DrawTTick(y,Max.x,z0,ddx,ddz);
mglprintf(str,64,L"%.2g",y); wcstrim_mgl(str);
- if(text) Putsw(mglPoint(Max.x-y,y,z0),str,FontDef,FontSize,'t');
+ if(text) Putsw(mglPoint(Max.x+Min.y-y,y,z0),str,FontDef,FontSize,'t');
- if(y>Min.y && y<Max.y) DrawYTick(Max.y-y,Min.x,z0,ddx,ddz);
- mglprintf(str,64,L"%.2g",y); wcstrim_mgl(str);
- if(text) Putsw(mglPoint(Min.x,Max.y-y,z0),str,FontDef,FontSize,'y');
+ if(y>Min.y && y<Max.y) DrawYTick(Max.y+Min.y-y,Min.x,z0,ddx,ddz);
+ mreal yy = 1-Min.x-Min.y-Max.y+y;
+ yy = fabs(yy)<(Max.y-Min.y)*1e-6 ? 0:yy;
+ mglprintf(str,64,L"%.2g",yy); wcstrim_mgl(str);
+ if(text) Putsw(mglPoint(Min.x,Max.y+Min.y-y,z0),str,FontDef,FontSize,'y');
}
if(NSy>0)
{
ddy /= (NSy+1); // subticks drawing
- for(y=0;y<=Max.y;y+=ddy)
+ for(y=Min.y;y<=Max.y;y+=ddy)
{
DrawTTick(y,Max.x,z0,ddx,ddz,1);
- DrawYTick(Max.y-y,Min.x,z0,ddx,ddz,1);
+ DrawYTick(Max.y+Min.y-y,Min.x,z0,ddx,ddz,1);
}
}
}
diff --git a/mgl/mgl_c.cpp b/mgl/mgl_c.cpp
index 3d6b710..902c7b0 100644
--- a/mgl/mgl_c.cpp
+++ b/mgl/mgl_c.cpp
@@ -157,28 +157,31 @@ void mgl_set_ambbr(HMGL gr, mreal i)
//-----------------------------------------------------------------------------
// Scale and rotate
//-----------------------------------------------------------------------------
+/// Push transformation matrix into stack.
+void mgl_mat_push(HMGL gr) { gr->Push(); }
+/// Pop transformation matrix into stack.
+void mgl_mat_pop(HMGL gr) { gr->Pop(); }
/// Clear transformation matrix.
-void mgl_identity(HMGL gr, int rel)
-{ gr->Identity(rel); }
+void mgl_identity(HMGL gr, int rel) { gr->Identity(rel); }
/// Clear up the frame
-void mgl_clf(HMGL gr)
-{ gr->Clf(); }
+void mgl_clf(HMGL gr) { gr->Clf(); }
/// Clear up the frame
-void mgl_clf_rgb(HMGL gr, mreal r, mreal g, mreal b)
-{ gr->Clf(mglColor(r,g,b)); }
-/// Put further plotting in some region of whole frame surface.
-void mgl_subplot(HMGL gr, int nx,int ny,int m)
-{ gr->SubPlot(nx,ny,m); }
+void mgl_clf_rgb(HMGL gr, mreal r, mreal g, mreal b){ gr->Clf(mglColor(r,g,b)); }
/// Put further plotting in some region of whole frame surface.
+void mgl_subplot(HMGL gr, int nx,int ny,int m) { gr->SubPlot(nx,ny,m); }
void mgl_subplot_d(HMGL gr, int nx,int ny,int m,mreal dx,mreal dy)
{ gr->SubPlot(nx,ny,m,dx,dy); }
+void mgl_subplot_s(HMGL gr, int nx,int ny,int m,const char *style)
+{ gr->SubPlot(nx,ny,m,style); }
/// Put further plotting in some region of whole frame surface.
void mgl_inplot(HMGL gr, mreal x1,mreal x2,mreal y1,mreal y2)
-{ gr->InPlot(x1,x2,y1,y2); }
+{ gr->InPlot(x1,x2,y1,y2,false); }
void mgl_relplot(HMGL gr, mreal x1,mreal x2,mreal y1,mreal y2)
{ gr->InPlot(x1,x2,y1,y2,true); }
void mgl_columnplot(HMGL gr, int num, int i)
{ gr->ColumnPlot(num,i); }
+void mgl_columnplot_d(HMGL gr, int num, int i, mreal d)
+{ gr->ColumnPlot(num,i,d); }
void mgl_stickplot(HMGL gr, int num, int i, mreal tet, mreal phi)
{ gr->StickPlot(num, i, tet, phi); }
/// Set aspect ratio for further plotting.
@@ -341,6 +344,8 @@ void mgl_legend(HMGL gr, int where, const char *font, mreal size, mreal llen)
{ if(gr) gr->Legend(where, font, size, llen); }
void mgl_set_legend_box(HMGL gr, int enable)
{ gr->LegendBox = enable; }
+void mgl_set_legend_marks(HMGL gr, int num)
+{ gr->SetLegendMarks(num); }
//-----------------------------------------------------------------------------
const unsigned char *mgl_get_rgb(HMGL graph)
{
@@ -393,6 +398,37 @@ void mgl_calc_scr(HMGL gr, mreal x, mreal y, mreal z, int *xs, int *ys)
if(g && xs && ys) g->CalcScr(mglPoint(x,y,z),xs,ys);
}
//-----------------------------------------------------------------------------
+void mgl_wnd_set_delay(HMGL gr, mreal dt)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>(gr); if(g) g->Delay = dt; }
+void mgl_wnd_set_auto_clf(HMGL gr, int val)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>(gr); if(g) g->AutoClf = val; }
+void mgl_wnd_set_show_mouse_pos(HMGL gr, int val)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>(gr); if(g) g->ShowMousePos = val; }
+void mgl_wnd_set_clf_update(HMGL gr, int val)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>(gr); if(g) g->ClfOnUpdate = val; }
+void mgl_wnd_toggle_alpha(HMGL gr)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>(gr); if(g) g->ToggleAlpha(); }
+void mgl_wnd_toggle_light(HMGL gr)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>(gr); if(g) g->ToggleLight(); }
+void mgl_wnd_toggle_zoom(HMGL gr)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>(gr); if(g) g->ToggleZoom(); }
+void mgl_wnd_toggle_rotate(HMGL gr)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>(gr); if(g) g->ToggleRotate(); }
+void mgl_wnd_toggle_no(HMGL gr)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>(gr); if(g) g->ToggleNo(); }
+void mgl_wnd_update(HMGL gr)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>(gr); if(g) g->Update(); }
+void mgl_wnd_reload(HMGL gr, int o)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>(gr); if(g) g->ReLoad(o); }
+void mgl_wnd_adjust(HMGL gr)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>(gr); if(g) g->Adjust(); }
+void mgl_wnd_next_frame(HMGL gr)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>(gr); if(g) g->NextFrame(); }
+void mgl_wnd_prev_frame(HMGL gr)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>(gr); if(g) g->PrevFrame(); }
+void mgl_wnd_animation(HMGL gr)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>(gr); if(g) g->Animation(); }
+//-----------------------------------------------------------------------------
mreal mgl_data_get_value(const HMDT d, int i, int j, int k)
{ return d->a[i+d->nx*(j+d->ny*k)]; }
void mgl_data_set_value(HMDT d, mreal v, int i, int j, int k)
@@ -448,6 +484,7 @@ void mgl_set_auto(HMGL gr, mreal x1, mreal x2, mreal y1, mreal y2, mreal z1, mre
{ gr->SetAutoRanges(x1,x2,y1,y2,z1,z2); }
void mgl_set_tick_len(HMGL gr, mreal len, mreal stt)
{ gr->SetTickLen(len,stt); }
-void mgl_set_tick_stl(HMGL gr, const char *stl, const char *sub)
+void mgl_set_tick_stl(HMGL gr, const char *stl, const char *sub)
{ gr->SetTickStl(stl,sub); }
+int mgl_get_warn(HMGL gr) { return gr->WarnCode; }
//-----------------------------------------------------------------------------
diff --git a/mgl/mgl_cont.cpp b/mgl/mgl_cont.cpp
index 36c5145..23ff742 100644
--- a/mgl/mgl_cont.cpp
+++ b/mgl/mgl_cont.cpp
@@ -400,9 +400,9 @@ void mglGraph::ContD(const mglData &v, const mglData &x, const mglData &y, const
if(y.nx!=z.ny && (x.ny!=z.ny || y.nx!=z.nx || y.ny!=z.ny))
{ SetWarn(mglWarnDim, "ContD"); return; }
if(!sch || !(*sch)) sch = PalNames;
- mglColor *cm = new mglColor[NUM_COLOR];
+ mglColor *cm = new mglColor[MGL_CMAP_COLOR];
long nc=NumCol, i, len=strlen(sch);
- memcpy(cm,cmap,NUM_COLOR*sizeof(mglColor)); // save color scheme
+ memcpy(cm,cmap,MGL_CMAP_COLOR*sizeof(mglColor)); // save color scheme
mglData vv(2);
char ss[2]="k";
for(i=0;i<v.nx*v.ny*v.nz-1;i++)
@@ -412,7 +412,7 @@ void mglGraph::ContD(const mglData &v, const mglData &x, const mglData &y, const
}
NumCol = nc;
- memcpy(cmap,cm,NUM_COLOR*sizeof(mglColor)); // restore color scheme
+ memcpy(cmap,cm,MGL_CMAP_COLOR*sizeof(mglColor)); // restore color scheme
delete []cm;
}
//-----------------------------------------------------------------------------
diff --git a/mgl/mgl_crust.cpp b/mgl/mgl_crust.cpp
index 8f6cdbf..d25fd25 100644
--- a/mgl/mgl_crust.cpp
+++ b/mgl/mgl_crust.cpp
@@ -56,56 +56,135 @@ void mglGraph::TriPlot(const mglData &nums, const mglData &x, const mglData &y,
k3 = long(nums.a[3*i+2]+0.1); if(k3<0 || k3>=n) continue;
nn[3*j]=k1; nn[3*j+1]=k2; nn[3*j+2]=k3; j++;
}
-// DefColor(mglColor(0,0,0),1);
-// trigs_plot(j,nn,n,pp,cc,tt,false, a.nx==m);
-// if(sch && strchr(sch,'#'))
-// trigs_plot(j,nn,n,pp,0,tt,true, a.nx==m);
trigs_plot(j,nn,n,pp,cc,tt,sch && strchr(sch,'#'), a.nx==m);
EndGroup();
delete []pp; delete []tt; delete []cc; delete []nn;
}
//-----------------------------------------------------------------------------
void mglGraph::TriPlot(const mglData &nums, const mglData &x, const mglData &y, const mglData &z, const char *sch)
+{
+ TriPlot(nums,x,y,z,z,sch);
+}
+//-----------------------------------------------------------------------------
+void mglGraph::TriPlot(const mglData &nums, const mglData &x, const mglData &y, const char *sch, mreal zVal)
+{
+ if(isnan(zVal)) zVal = Min.z;
+ mglData z(x.nx);
+ z.Fill(zVal,zVal);
+ TriPlot(nums,x,y,z,z,sch);
+}
+//-----------------------------------------------------------------------------
+//
+// TriCont series
+//
+//-----------------------------------------------------------------------------
+void mglGraph::tricont_line(mreal val, long i, long k1, long k2, long k3, const mglData &x, const mglData &y,
+ const mglData &z, const mglData &a, mreal zVal)
+{
+ mreal d1,d2,p1[3],p2[3],c1[4],c2[4];
+ mglColor q1,q2,q3;
+ d1 = _d(val,z.a[k1],z.a[k2]);
+ d2 = _d(val,z.a[k1],z.a[k3]);
+ if(d1<0 || d1>1 || d2<0 || d2>1) return;
+ p1[2] = p2[2] = zVal;
+
+ p1[0] = x.a[k1]*(1-d1)+x.a[k2]*d1;
+ p1[1] = y.a[k1]*(1-d1)+y.a[k2]*d1;
+ if(!ScalePoint(p1[0],p1[1],p1[2])) return;
+ p2[0] = x.a[k1]*(1-d2)+x.a[k3]*d2;
+ p2[1] = y.a[k1]*(1-d2)+y.a[k3]*d2;
+ if(!ScalePoint(p1[0],p1[1],p1[2])) return;
+ if(a.nx==x.nx)
+ {
+ q1 = GetC(a.a[k1]); q2 = GetC(a.a[k2]); q3 = GetC(a.a[k3]);
+ c1[0] = q1.r*(1-d1)+q2.r*d1; c2[0] = q1.r*(1-d2)+q3.r*d2;
+ c1[2] = q1.g*(1-d1)+q2.g*d1; c2[2] = q1.g*(1-d2)+q3.g*d2;
+ c1[3] = q1.b*(1-d1)+q2.b*d1; c2[3] = q1.b*(1-d2)+q3.b*d2;
+ c1[3]=c2[3]=1;
+ }
+ else
+ {
+ q1 = GetC(a.a[i]); c1[0]=q1.r; c1[1]=q1.g; c1[2]=q1.b; c1[3]=1;
+ memcpy(c2,c1,4*sizeof(mreal));
+ }
+ line_plot(p1,p2,c1,c2);
+}
+//-----------------------------------------------------------------------------
+void mglGraph::TriContV(const mglData &v, const mglData &nums, const mglData &x, const mglData &y, const mglData &z, const mglData &a, const char *sch,mreal zVal)
{
long n = x.nx, m = nums.ny;
- if(y.nx!=n || z.nx!=n || nums.nx<3) { SetWarn(mglWarnLow,"TriPlot"); return; }
+ if(y.nx!=n || z.nx!=n || nums.nx<3) { SetWarn(mglWarnLow,"TriCont"); return; }
+ if(a.nx!=m && a.nx!=n) { SetWarn(mglWarnLow,"TriCont"); return; }
SetScheme(sch);
- static int cgid=1; StartGroup("TriPlot",cgid++);
- mreal *pp = new mreal[3*n], *cc = new mreal[4*n];
- bool *tt = new bool[n];
- long *nn = new long[3*m];
- mglColor c;
- register long i,j,k1,k2,k3;
- for(i=0;i<n;i++)
- {
- pp[3*i] = x.a[i]; pp[3*i+1] = y.a[i]; pp[3*i+2] = z.a[i];
- tt[i] = ScalePoint(pp[3*i],pp[3*i+1],pp[3*i+2]);
- c = GetC(x.a[i], y.a[i], z.a[i]);
- cc[4*i] = c.r; cc[4*i+1] = c.g;
- cc[4*i+2] = c.b; cc[4*i+3] = Transparent ? AlphaDef : 1;
+ static int cgid=1; StartGroup("TriCont",cgid++);
+ mreal val;
+ register long i,k;
+ long k1,k2,k3;
+ for(k=0;k<v.nx;k++) for(i=0;i<m;i++)
+ {
+ k1 = long(nums.a[3*i]+0.1); if(k1<0 || k1>=n) continue;
+ k2 = long(nums.a[3*i+1]+0.1); if(k2<0 || k2>=n) continue;
+ k3 = long(nums.a[3*i+2]+0.1); if(k3<0 || k3>=n) continue;
+ val = isnan(zVal) ? v.a[k] : zVal;
+ tricont_line(v.a[k], i,k1,k2,k3,x,y,z,a,val);
+ tricont_line(v.a[k], i,k2,k1,k3,x,y,z,a,val);
+ tricont_line(v.a[k], i,k3,k2,k1,x,y,z,a,val);
}
+}
+//-----------------------------------------------------------------------------
+void mglGraph::TriCont(const mglData &nums, const mglData &x, const mglData &y, const mglData &z, const mglData &a, const char *sch, int Num, mreal zVal)
+{
+ if(Num<1) { SetWarn(mglWarnCnt,"Cont"); return; }
+ mglData v(Num);
+ for(long i=0;i<Num;i++) v.a[i] = Cmin + (Cmax-Cmin)*mreal(i+1)/(Num+1);
+ TriContV(v,nums,x,y,z,a,sch,zVal);
+}
+//-----------------------------------------------------------------------------
+void mglGraph::TriCont(const mglData &nums, const mglData &x, const mglData &y, const mglData &z, const char *sch, int Num, mreal zVal)
+{ TriCont(nums,x,y,z,z,sch,Num,zVal); }
+//-----------------------------------------------------------------------------
+void mglGraph::TriContV(const mglData &v, const mglData &nums, const mglData &x,
+ const mglData &y, const mglData &z, const char *sch,mreal zVal)
+{ TriContV(v,nums,x,y,z,z,sch,zVal); }
+//-----------------------------------------------------------------------------
+//
+// QuadPlot series
+//
+//-----------------------------------------------------------------------------
+void mglGraph::QuadPlot(const mglData &nums, const mglData &x, const mglData &y, const mglData &z, const mglData &a, const char *sch)
+{
+ long n = x.nx, m = nums.ny;
if(y.nx!=n || z.nx!=n || nums.nx<4) { SetWarn(mglWarnLow,"QuadPlot"); return; }
if(a.nx!=m && a.nx!=n) { SetWarn(mglWarnLow,"QuadPlot"); return; }
+ SetScheme(sch);
static int cgid=1; StartGroup("QuadPlot",cgid++);
mreal *pp = new mreal[3*n], *cc = new mreal[4*n];
bool *tt = new bool[n];
long *nn = new long[4*m];
mglColor c;
register long i,j,k1,k2,k3,k4;
for(i=0;i<n;i++)
{
pp[3*i] = x.a[i]; pp[3*i+1] = y.a[i]; pp[3*i+2] = z.a[i];
tt[i] = ScalePoint(pp[3*i],pp[3*i+1],pp[3*i+2]);
+ }
+ for(i=0;i<a.nx;i++)
+ {
+ c = GetC(a.a[i]); cc[4*i] = c.r; cc[4*i+1] = c.g;
+ cc[4*i+2] = c.b; cc[4*i+3] = Transparent ? AlphaDef : 1;
+ }
for(i=j=0;i<m;i++)
{
- k1 = long(nums.a[3*i]+0.1); if(k1<0 || k1>=n) continue;
- k2 = long(nums.a[3*i+1]+0.1); if(k2<0 || k2>=n) continue;
- k3 = long(nums.a[3*i+2]+0.1); if(k3<0 || k3>=n) continue;
- nn[3*j]=k1; nn[3*j+1]=k2; nn[3*j+2]=k3; j++;
+ k1 = long(nums.a[4*i]+0.1); if(k1<0 || k1>=n) continue;
+ k2 = long(nums.a[4*i+1]+0.1); if(k2<0 || k2>=n) continue;
+ k3 = long(nums.a[4*i+2]+0.1); if(k3<0 || k3>=n) continue;
+ k4 = long(nums.a[4*i+3]+0.1); if(k4<0 || k4>=n) continue;
+ nn[4*j]=k1; nn[4*j+1]=k2; nn[4*j+2]=k3; nn[4*j+4]=k4; j++;
}
-// DefColor(mglColor(0,0,0),1);
-// trigs_plot(j,nn,n,pp,cc,tt,false);
-// if(sch && strchr(sch,'#'))
-// trigs_plot(j,nn,n,pp,0,tt,true);
- trigs_plot(j,nn,n,pp,cc,tt,sch && strchr(sch,'#'));
+ quads_plot(j,nn,n,pp,cc,tt,sch && strchr(sch,'#'), a.nx==m);
EndGroup();
delete []pp; delete []tt; delete []cc; delete []nn;
}
//-----------------------------------------------------------------------------
-void mglGraph::TriPlot(const mglData &nums, const mglData &x, const mglData &y, const char *sch, mreal zVal)
+void mglGraph::QuadPlot(const mglData &nums, const mglData &x, const mglData &y, const mglData &z, const char *sch)
+{
+ QuadPlot(nums,x,y,z,z,sch);
+}
+//-----------------------------------------------------------------------------
+void mglGraph::QuadPlot(const mglData &nums, const mglData &x, const mglData &y, const char *sch, mreal zVal)
{
if(isnan(zVal)) zVal = Min.z;
mglData z(x.nx);
z.Fill(zVal,zVal);
- TriPlot(nums,x,y,z,sch);
+ QuadPlot(nums,x,y,z,z,sch);
}
//-----------------------------------------------------------------------------
//
@@ -315,6 +394,27 @@ void mgl_triplot_xyz(HMGL gr, const HMDT nums, const HMDT x, const HMDT y, const
/// Draw triangle mesh for points in arrays \a x, \a y.
void mgl_triplot_xy(HMGL gr, const HMDT nums, const HMDT x, const HMDT y, const char *sch, mreal zVal)
{ if(gr&&nums&&x&&y) gr->TriPlot(*nums, *x, *y, sch, zVal); }
+/// Draw quad mesh for points in arrays \a x, \a y, \a z.
+void mgl_quadplot_xyzc(HMGL gr, const HMDT nums, const HMDT x, const HMDT y, const HMDT z, const HMDT c, const char *sch)
+{ if(gr&&nums&&x&&y&&z&&c) gr->QuadPlot(*nums, *x, *y, *z, *c, sch); }
+/// Draw quad mesh for points in arrays \a x, \a y, \a z.
+void mgl_quadplot_xyz(HMGL gr, const HMDT nums, const HMDT x, const HMDT y, const HMDT z, const char *sch)
+{ if(gr&&nums&&x&&y&&z) gr->QuadPlot(*nums, *x, *y, *z, sch); }
+/// Draw quad mesh for points in arrays \a x, \a y.
+void mgl_quadplot_xy(HMGL gr, const HMDT nums, const HMDT x, const HMDT y, const char *sch, mreal zVal)
+{ if(gr&&nums&&x&&y) gr->QuadPlot(*nums, *x, *y, sch, zVal); }
+
+/// Draw contours for triangle mesh for points in arrays \a x, \a y, \a z.
+void mgl_tricont_xyzcv(HMGL gr, const HMDT v, const HMDT nums, const HMDT x, const HMDT y, const HMDT z, const HMDT c, const char *sch, mreal zVal)
+{ if(gr&&nums&&x&&y&&z&&c) gr->TriContV(*v, *nums, *x, *y, *z, *c, sch, zVal); }
+void mgl_tricont_xyzc(HMGL gr, const HMDT nums, const HMDT x, const HMDT y, const HMDT z, const HMDT c, const char *sch, int n, mreal zVal)
+{ if(gr&&nums&&x&&y&&z&&c) gr->TriCont(*nums, *x, *y, *z, *c, sch, n, zVal); }
+/// Draw contours for triangle mesh for points in arrays \a x, \a y, \a z.
+void mgl_tricont_xyzv(HMGL gr, const HMDT v, const HMDT nums, const HMDT x, const HMDT y, const HMDT z, const char *sch, mreal zVal)
+{ if(gr&&nums&&x&&y&&z) gr->TriContV(*v, *nums, *x, *y, *z, sch, zVal); }
+void mgl_tricont_xyz(HMGL gr, const HMDT nums, const HMDT x, const HMDT y, const HMDT z, const char *sch, int n, mreal zVal)
+{ if(gr&&nums&&x&&y&&z) gr->TriCont(*nums, *x, *y, *z, sch, n, zVal); }
+
/// Draw dots in points \a x, \a y, \a z.
void mgl_dots(HMGL gr, const HMDT x, const HMDT y, const HMDT z, const char *sch)
{ if(gr&&x&&y&&z) gr->Dots(*x,*y,*z,sch); }
@@ -355,6 +455,60 @@ void mgl_triplot_xy_(uintptr_t *gr, uintptr_t *nums, uintptr_t *x, uintptr_t *y,
if(gr&&nums&&x&&y) _GR_->TriPlot(_D_(nums), _D_(x), _D_(y), s, *zVal);
delete []s;
}
+/// Draw triangle mesh for points in arrays \a x, \a y, \a z and color it by \a c.
+void mgl_quadplot_xyzc_(uintptr_t *gr, uintptr_t *nums, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *c, const char *sch,int l)
+{
+ char *s=new char[l+1]; memcpy(s,sch,l); s[l]=0;
+ if(gr && nums && x && y && z && c)
+ _GR_->QuadPlot(_D_(nums), _D_(x), _D_(y), _D_(z), _D_(c), s);
+ delete []s;
+}
+/// Draw triangle mesh for points in arrays \a x, \a y, \a z.
+void mgl_quadplot_xyz_(uintptr_t *gr, uintptr_t *nums, uintptr_t *x, uintptr_t *y, uintptr_t *z, const char *sch,int l)
+{
+ char *s=new char[l+1]; memcpy(s,sch,l); s[l]=0;
+ if(gr && nums && x && y && z) _GR_->QuadPlot(_D_(nums), _D_(x), _D_(y), _D_(z), s);
+ delete []s;
+}
+/// Draw triangle mesh for points in arrays \a x, \a y.
+void mgl_quadplot_xy_(uintptr_t *gr, uintptr_t *nums, uintptr_t *x, uintptr_t *y, const char *sch, mreal *zVal,int l)
+{
+ char *s=new char[l+1]; memcpy(s,sch,l); s[l]=0;
+ if(gr&&nums&&x&&y) _GR_->QuadPlot(_D_(nums), _D_(x), _D_(y), s, *zVal);
+ delete []s;
+}
+
+/// Draw triangle mesh for points in arrays \a x, \a y, \a z and color it by \a c.
+void mgl_tricont_xyzcv_(uintptr_t *gr, uintptr_t *v, uintptr_t *nums, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *c, const char *sch, mreal *zVal,int l)
+{
+ char *s=new char[l+1]; memcpy(s,sch,l); s[l]=0;
+ if(gr && nums && x && y && z && c)
+ _GR_->TriContV(_D_(v), _D_(nums), _D_(x), _D_(y), _D_(z), _D_(c), s, *zVal);
+ delete []s;
+}
+/// Draw triangle mesh for points in arrays \a x, \a y, \a z.
+void mgl_tricont_xyzv_(uintptr_t *gr, uintptr_t *v, uintptr_t *nums, uintptr_t *x, uintptr_t *y, uintptr_t *z, const char *sch, mreal *zVal,int l)
+{
+ char *s=new char[l+1]; memcpy(s,sch,l); s[l]=0;
+ if(gr && nums && x && y && z) _GR_->TriContV(_D_(v), _D_(nums), _D_(x), _D_(y), _D_(z), s, *zVal);
+ delete []s;
+}
+/// Draw triangle mesh for points in arrays \a x, \a y, \a z and color it by \a c.
+void mgl_tricont_xyzc_(uintptr_t *gr, uintptr_t *nums, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *c, const char *sch, int *n, mreal *zVal, int l)
+{
+ char *s=new char[l+1]; memcpy(s,sch,l); s[l]=0;
+ if(gr && nums && x && y && z && c)
+ _GR_->TriCont( _D_(nums), _D_(x), _D_(y), _D_(z), _D_(c), s, *n, *zVal);
+ delete []s;
+}
+/// Draw triangle mesh for points in arrays \a x, \a y, \a z.
+void mgl_tricont_xyz_(uintptr_t *gr, uintptr_t *nums, uintptr_t *x, uintptr_t *y, uintptr_t *z, const char *sch, int *n, mreal *zVal, int l)
+{
+ char *s=new char[l+1]; memcpy(s,sch,l); s[l]=0;
+ if(gr && nums && x && y && z) _GR_->TriCont(_D_(nums), _D_(x), _D_(y), _D_(z), s, *n, *zVal);
+ delete []s;
+}
+
/// Draw dots in points \a x, \a y, \a z.
void mgl_dots_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, uintptr_t *z, const char *sch,int l)
{
diff --git a/mgl/mgl_data.cpp b/mgl/mgl_data.cpp
index 6779d0b..71279e4 100644
--- a/mgl/mgl_data.cpp
+++ b/mgl/mgl_data.cpp
@@ -24,6 +24,8 @@
#ifndef NO_GSL
#include <gsl/gsl_fft_complex.h>
+#include <gsl/gsl_dht.h>
+#include <gsl/gsl_sf.h>
#endif
void mglFillP(int x,int y, const mreal *a,int nx,int ny,mreal _p[4][4]);
@@ -865,10 +867,9 @@ mglData mglTransformA(const mglData &am, const mglData &ph, const char *tr)
//-----------------------------------------------------------------------------
mglData mglTransform(const mglData &re, const mglData &im, const char *tr)
{
- mglData d,rr(re),ii(im);
int nx = re.nx, ny = re.ny, nz = re.nz;
- if(nx*ny*nz != im.nx*im.ny*im.nz || !tr || tr[0]==0)
- { d.Create(1,1,1); return d; }
+ if(nx*ny*nz != im.nx*im.ny*im.nz || !tr || tr[0]==0) return mglData();
+ mglData rr(re),ii(im);
if(strchr(tr,'i') && strchr(tr,'f')) // general case
{
if(tr[0]=='f') mglFourier(rr,ii,"x");
@@ -894,9 +895,27 @@ mglData mglTransform(const mglData &re, const mglData &im, const char *tr)
if(tr[2]=='f') str[2]='z';
mglFourier(rr,ii,str);
}
- d.Create(nx, ny, nz);
+ else if(strchr(tr,'s')) // do Fourier only once for speeding up
+ {
+ if(tr[0]=='s') { rr.SinFFT("x"); ii.SinFFT("x"); }
+ if(tr[1]=='s') { rr.SinFFT("y"); ii.SinFFT("y"); }
+ if(tr[2]=='s') { rr.SinFFT("z"); ii.SinFFT("z"); }
+ }
+ else if(strchr(tr,'c')) // do Fourier only once for speeding up
+ {
+ if(tr[0]=='c') { rr.CosFFT("x"); ii.CosFFT("x"); }
+ if(tr[1]=='c') { rr.CosFFT("y"); ii.CosFFT("y"); }
+ if(tr[2]=='c') { rr.CosFFT("z"); ii.CosFFT("z"); }
+ }
+ else if(strchr(tr,'s')) // do Fourier only once for speeding up
+ {
+ if(tr[0]=='h') { rr.Hankel("x"); ii.Hankel("x"); }
+ if(tr[1]=='h') { rr.Hankel("y"); ii.Hankel("y"); }
+ if(tr[2]=='h') { rr.Hankel("z"); ii.Hankel("z"); }
+ }
+ mglData d(nx, ny, nz);
register long i;
- for(i=0;i<nx*ny*nz;i++) d.a[i] = hypot(rr.a[i],ii.a[i]);
+ for(i=0;i<nx*ny*nz;i++) d.a[i] = hypot(rr.a[i],ii.a[i]);
return d;
}
//-----------------------------------------------------------------------------
@@ -1015,39 +1034,223 @@ mglData mglSTFA(const mglData &re, const mglData &im, int dn, char dir)
#endif
return d;
}
+//-----------------------------------------------------------------------------
+void mglData::FillSample(int n, const char *how)
+{
+ bool xx = strchr(how,'x');
+ Create(n);
+ register long i;
+ if(strchr(how,'h')) // Hankel
+ {
+#ifndef NO_GSL
+ gsl_dht *dht = gsl_dht_new(nx,0,1);
+ for(i=0;i<nx;i++)
+ a[i] = xx ? gsl_dht_x_sample(dht, i) : gsl_dht_k_sample(dht, i);
+ gsl_dht_free(dht);
+#endif
+ }
+ else // Fourier
+ {
+ if(xx) for(i=0;i<nx;i++) a[i] = mreal(2*i-nx)/nx;
+ else for(i=0;i<nx;i++) a[i] = M_PI*(i<nx/2 ? i:i-nx);
+ }
+}
//-----------------------------------------------------------------------------
-void mglData::Swap(const char *dir)
-{
- register long i,j,k,i0,nn,j0;
- mreal b;
- if(strchr(dir,'z') && nz>1)
+void mglData::Hankel(const char *dir)
+{
+#ifndef NO_GSL
+ double *ai=0, *af=0, mm;
+ gsl_dht *dht=0;
+ register long i,j,k;
+ if(strchr(dir,'x') && nx>1)
+ {
+ ai = new double[nx]; af = new double[nx];
+ dht = gsl_dht_new(nx,0,1);
+ mm = gsl_sf_bessel_zero_J0(nx+1);
+ for(i=0;i<ny*nz;i++)
+ {
+ for(j=0;j<nx;j++) ai[j] = a[j+nx*i];
+ gsl_dht_apply(dht,ai,af);
+ for(j=0;j<nx;j++) a[j+nx*i] = af[j]*mm;
+ }
+ }
+ if(strchr(dir,'y') && ny>1)
+ {
+ ai = new double[ny]; af = new double[ny];
+ dht = gsl_dht_new(ny,0,1);
+ mm = gsl_sf_bessel_zero_J0(ny+1);
+ for(i=0;i<nx;i++) for(k=0;k<nz;k++)
+ {
+ for(j=0;j<nx;j++) ai[j] = a[i+nx*(j+ny*k)];
+ gsl_dht_apply(dht,ai,af);
+ for(j=0;j<nx;j++) a[i+nx*(j+ny*k)] = af[j]*mm;
+ }
+ }
+ if(strchr(dir,'z') && nz>1)
+ {
+ ai = new double[nz]; af = new double[nz];
+ dht = gsl_dht_new(nz,0,1);
+ mm = gsl_sf_bessel_zero_J0(nz+1);
+ k = nx*ny; for(i=0;i<k;i++)
+ {
+ for(j=0;j<nz;j++) ai[j] = a[i+j*k];
+ gsl_dht_apply(dht,ai,af);
+ for(j=0;j<nz;j++) a[i+j*k] = af[j]*mm;
+ }
+ }
+ if(ai)
{
- for(i=0;i<nx*ny;i++)
- {
- nn = (nz/2)*nx*ny;
- for(j=0;j<nz/2;j++)
- { i0 = i+j*nx*ny; b = a[i0]; a[i0] = a[i0+nn]; a[i0+nn] = b; }
- }
+ delete []ai; delete []af;
+ gsl_dht_free(dht);
+ }
+#endif
+}
+//-----------------------------------------------------------------------------
+void mglData::CosFFT(const char *dir)
+{
+#ifndef NO_GSL
+ double *b = 0;
+ gsl_fft_complex_wavetable *wt=0;
+ gsl_fft_complex_workspace *ws=0;
+ register long i,j,k;
+ if(strchr(dir,'x') && nx>1)
+ {
+ wt = gsl_fft_complex_wavetable_alloc(2*nx);
+ ws = gsl_fft_complex_workspace_alloc(2*nx);
+ b = new double[4*nx];
+ for(i=0;i<ny*nz;i++)
+ {
+ k = i*nx; memset(b,0,4*nx*sizeof(double)); b[0] = b[2*nx] = a[k];
+ for(j=1;j<nx;j++) { b[2*j] = a[k+j]; b[4*nx-2*j] = a[k+j]; }
+ gsl_fft_complex_transform(b, 1, 2*nx, wt, ws, forward);
+ for(j=0;j<nx;j++) a[k+j] = b[2*j]/sqrt(2*nx);
+ }
}
if(strchr(dir,'y') && ny>1)
{
- nn = (ny/2)*nx;
- for(i=0;i<nx;i++) for(k=0;k<nz;k++)
- {
- j0 = i+nx*ny*k;
- for(j=0;j<ny/2;j++)
- { i0 = j0+j*nx; b = a[i0]; a[i0] = a[i0+nn]; a[i0+nn] = b; }
- }
+ wt = gsl_fft_complex_wavetable_alloc(2*ny);
+ ws = gsl_fft_complex_workspace_alloc(2*ny);
+ b = new double[4*ny];
+ for(i=0;i<nx;i++) for(k=0;k<nz;k++)
+ {
+ memset(b,0,4*ny*sizeof(double)); b[0] = b[2*ny] = a[i+nx*ny*k];
+ for(j=1;j<ny;j++) { b[2*j] = a[i+nx*(ny*k+j)]; b[4*ny-2*j] = a[i+nx*(ny*k+j)]; }
+ gsl_fft_complex_transform(b, 1, 2*ny, wt, ws, forward);
+ for(j=0;j<ny;j++) a[i+nx*(ny*k+j)] = b[2*j]/sqrt(2*ny);
+ }
+ }
+ if(strchr(dir,'z') && nz>1)
+ {
+ wt = gsl_fft_complex_wavetable_alloc(2*nz);
+ ws = gsl_fft_complex_workspace_alloc(2*nz);
+ b = new double[4*nz]; k = nx*ny;
+ for(i=0;i<k;i++)
+ {
+ memset(b,0,4*nz*sizeof(double)); b[0] = b[2*nx] = a[i];
+ for(j=1;j<nx;j++) { b[2*j] = a[i+k*j]; b[4*nx-2*j] = a[i+k*j]; }
+ gsl_fft_complex_transform(b, 1, 2*nz, wt, ws, forward);
+ for(j=0;j<nz;j++) a[i+k*j] = b[2*j]/sqrt(2*nz);
+ }
}
+ if(b)
+ { delete []b;
+ gsl_fft_complex_workspace_free(ws);
+ gsl_fft_complex_wavetable_free(wt); }
+#endif
+}
+//-----------------------------------------------------------------------------
+void mglData::SinFFT(const char *dir)
+{
+#ifndef NO_GSL
+ double *b = 0;
+ gsl_fft_complex_wavetable *wt=0;
+ gsl_fft_complex_workspace *ws=0;
+ register long i,j,k;
if(strchr(dir,'x') && nx>1)
+ {
+ wt = gsl_fft_complex_wavetable_alloc(2*nx);
+ ws = gsl_fft_complex_workspace_alloc(2*nx);
+ b = new double[4*nx];
+ for(i=0;i<ny*nz;i++)
+ {
+ k = i*nx; memset(b,0,4*nx*sizeof(double)); b[0] = a[k]; b[2*nx] = -a[k];
+ for(j=1;j<nx;j++) { b[2*j] = a[k+j]; b[4*nx-2*j] = -a[k+j]; }
+ gsl_fft_complex_transform(b, 1, 2*nx, wt, ws, forward);
+ for(j=0;j<nx;j++) a[k+j] = -b[2*j+1]/sqrt(2*nx);
+ }
+ }
+ if(strchr(dir,'y') && ny>1)
{
- nn = nx/2;
- for(j=0;j<ny*nz;j++)
- {
- j0 = j*nx;
- for(i=0;i<nx/2;i++)
- { i0 = i+j0; b = a[i0]; a[i0] = a[i0+nn]; a[i0+nn] = b; }
- }
+ wt = gsl_fft_complex_wavetable_alloc(2*ny);
+ ws = gsl_fft_complex_workspace_alloc(2*ny);
+ b = new double[4*ny];
+ for(i=0;i<nx;i++) for(k=0;k<nz;k++)
+ {
+ memset(b,0,4*ny*sizeof(double)); b[0] = a[i+nx*ny*k]; b[2*ny] = -a[i+nx*ny*k];
+ for(j=1;j<ny;j++) { b[2*j] = a[i+nx*(ny*k+j)]; b[4*ny-2*j] = -a[i+nx*(ny*k+j)]; }
+ gsl_fft_complex_transform(b, 1, 2*ny, wt, ws, forward);
+ for(j=0;j<ny;j++) a[i+nx*(ny*k+j)] = -b[2*j+1]/sqrt(2*ny);
+ }
+ }
+ if(strchr(dir,'z') && nz>1)
+ {
+ wt = gsl_fft_complex_wavetable_alloc(2*nz);
+ ws = gsl_fft_complex_workspace_alloc(2*nz);
+ b = new double[4*nz]; k = nx*ny;
+ for(i=0;i<k;i++)
+ {
+ memset(b,0,4*nz*sizeof(double)); b[0] = a[i]; b[2*nx] = -a[i];
+ for(j=1;j<nx;j++) { b[2*j] = a[i+k*j]; b[4*nx-2*j] = -a[i+k*j]; }
+ gsl_fft_complex_transform(b, 1, 2*nz, wt, ws, forward);
+ for(j=0;j<nz;j++) a[i+k*j] = -b[2*j+1]/sqrt(2*nz);
+ }
+ }
+ if(b)
+ { delete []b;
+ gsl_fft_complex_workspace_free(ws);
+ gsl_fft_complex_wavetable_free(wt); }
+#endif
+}
+//-----------------------------------------------------------------------------
+void mglData::Swap(const char *dir)
+{
+ if(strchr(dir,'z') && nz>1) Roll('z',nz/2);
+ if(strchr(dir,'y') && ny>1) Roll('y',ny/2);
+ if(strchr(dir,'x') && nx>1) Roll('x',nx/2);
+}
+//-----------------------------------------------------------------------------
+void mglData::Roll(char dir, int num)
+{
+ register long i,d;
+ mreal *b;
+ if(dir=='z' && nz>1)
+ {
+ d = num>0 ? num%nz : (num+nz*(1+num/nz))%nz;
+ if(d==0) return; // nothing to do
+ b = new mreal[nx*ny*nz];
+ memcpy(b,a+nx*ny*d,nx*ny*(nz-d)*sizeof(mreal));
+ memcpy(b+nx*ny*(nz-d),a,nx*ny*d*sizeof(mreal));
+ delete []a; a=b;
+ }
+ if(dir=='y' && ny>1)
+ {
+ d = num>0 ? num%ny : (num+ny*(1+num/ny))%ny;
+ if(d==0) return; // nothing to do
+ b = new mreal[nx*ny*nz];
+ memcpy(b,a+nx*d,(nx*ny*nz-nx*d)*sizeof(mreal));
+ for(i=0;i<nz;i++)
+ memcpy(b+nx*(ny-d)+nx*ny*i,a+nx*ny*i,nx*d*sizeof(mreal));
+ delete []a; a=b;
+ }
+ if(dir=='x' && nx>1)
+ {
+ d = num>0 ? num%nx : (num+nx*(1+num/nx))%nx;
+ if(d==0) return; // nothing to do
+ b = new mreal[nx*ny*nz];
+ memcpy(b,a+d,(nx*ny*nz-d)*sizeof(mreal));
+ for(i=0;i<nz*ny;i++)
+ memcpy(b+nx-d+nx*i,a+nx*i,d*sizeof(mreal));
+ delete []a; a=b;
}
}
//-----------------------------------------------------------------------------
@@ -1337,13 +1540,13 @@ void mglData::Rearrange(int mx, int my, int mz)
void mglData::InsertColumns(int at, int num, const char *eq)
{
if(num<1) return;
- mglData b(nx+num,ny,nz);
- if(at<1) at=1; if(at>nx) at=nx;
- register long i,j,k;
+ if(at<0) at=0; if(at>nx) at=nx;
+ register long i,j,k,nn=nx+num;
+ mglData b(nn,ny,nz);
for(i=0;i<at;i++) for(j=0;j<ny;j++) for(k=0;k<nz;k++)
- b.a[i+(nx+num)*(j+ny*k)] = a[i+nx*(j+ny*k)];
+ b.a[i+nn*(j+ny*k)] = a[i+nx*(j+ny*k)];
for(i=at;i<nx;i++) for(j=0;j<ny;j++) for(k=0;k<nz;k++)
- b.a[i+num+(nx+num)*(j+ny*k)] = a[i+nx*(j+ny*k)];
+ b.a[i+num+nn*(j+ny*k)] = a[i+nx*(j+ny*k)];
if(eq)
{
mglFormula e(eq);
@@ -1352,7 +1555,7 @@ void mglData::InsertColumns(int at, int num, const char *eq)
dy = ny==1?0:1./(ny-1);
dz = nz==1?0:1./(nz-1);
for(i=0;i<num;i++) for(j=0;j<ny;j++) for(k=0;k<nz;k++)
- b.a[i+at+(nx+num)*(j+ny*k)] = e.Calc(i*dx,j*dy, k*dz);
+ b.a[i+at+nn*(j+ny*k)] = e.Calc(i*dx,j*dy, k*dz);
}
Set(b);
}
@@ -1360,13 +1563,13 @@ void mglData::InsertColumns(int at, int num, const char *eq)
void mglData::InsertRows(int at, int num, const char *eq)
{
if(num<1) return;
- mglData b(nx,ny+num,nz);
- if(at<1) at=1; if(at>nx) at=nx;
- register long i,j,k;
+ if(at<0) at=0; if(at>nx) at=nx;
+ register long i,j,k,nn=num+ny;
+ mglData b(nx,nn,nz);
for(i=0;i<nx;i++) for(j=0;j<at;j++) for(k=0;k<nz;k++)
- b.a[i+nx*(j+(ny+num)*k)] = a[i+nx*(j+ny*k)];
+ b.a[i+nx*(j+nn*k)] = a[i+nx*(j+ny*k)];
for(i=0;i<nx;i++) for(j=at;j<ny;j++) for(k=0;k<nz;k++)
- b.a[i+nx*(j+num+(ny+num)*k)] = a[i+nx*(j+ny*k)];
+ b.a[i+nx*(j+num+nn*k)] = a[i+nx*(j+ny*k)];
if(eq)
{
mglFormula e(eq);
@@ -1375,7 +1578,7 @@ void mglData::InsertRows(int at, int num, const char *eq)
dx = nx==1?0:1./(nx-1);
dz = nz==1?0:1./(nz-1);
for(i=0;i<nx;i++) for(j=0;j<num;j++) for(k=0;k<nz;k++)
- b.a[i+nx*(j+at+(ny+num)*k)] = e.Calc(i*dx,j*dy, k*dz);
+ b.a[i+nx*(j+at+nn*k)] = e.Calc(i*dx,j*dy, k*dz);
}
Set(b);
}
@@ -1383,9 +1586,9 @@ void mglData::InsertRows(int at, int num, const char *eq)
void mglData::InsertSlices(int at, int num, const char *eq)
{
if(num<1) return;
- mglData b(nx,ny,nz+num);
- if(at<1) at=1; if(at>nx) at=nx;
+ if(at<0) at=0; if(at>nx) at=nx;
register long i,j,k;
+ mglData b(nx,ny,nz+num);
for(i=0;i<nx;i++) for(j=0;j<ny;j++) for(k=0;k<at;k++)
b.a[i+nx*(j+ny*k)] = a[i+nx*(j+ny*k)];
for(i=0;i<nx;i++) for(j=0;j<ny;j++) for(k=at;k<nz;k++)
@@ -1675,6 +1878,9 @@ void mglData::Put(const mglData &val, int xx, int yy, int zz)
else if(val.nx>=nx)
for(i=0;i<nx;i++) for(j=0;j<ny;j++) for(k=0;k<nz;k++)
a[i+nx*(j+k*ny)] = val.a[i];
+ else if(val.nx==1)
+ for(i=0;i<nx;i++) for(j=0;j<ny;j++) for(k=0;k<nz;k++)
+ a[i+nx*(j+k*ny)] = val.a[0];
}
else if(xx<0 && yy<0) // 2d
{
@@ -1684,6 +1890,9 @@ void mglData::Put(const mglData &val, int xx, int yy, int zz)
else if(val.nx>=nx)
for(i=0;i<nx;i++) for(j=0;j<ny;j++)
a[i+nx*(j+zz*ny)] = val.a[i];
+ else if(val.nx==1)
+ for(i=0;i<nx;i++) for(j=0;j<ny;j++)
+ a[i+nx*(j+zz*ny)] = val.a[0];
}
else if(yy<0 && zz<0) // 2d
{
@@ -1693,6 +1902,9 @@ void mglData::Put(const mglData &val, int xx, int yy, int zz)
else if(val.nx>=ny)
for(i=0;i<ny;i++) for(j=0;j<nz;j++)
a[xx+nx*(i+j*ny)] = val.a[i];
+ else if(val.nx==1)
+ for(i=0;i<ny;i++) for(j=0;j<nz;j++)
+ a[xx+nx*(i+j*ny)] = val.a[0];
}
else if(xx<0 && zz<0) // 2d
{
@@ -1702,21 +1914,30 @@ void mglData::Put(const mglData &val, int xx, int yy, int zz)
else if(val.nx>=nx)
for(i=0;i<nx;i++) for(j=0;j<nz;j++)
a[i+nx*(yy+j*ny)] = val.a[i];
+ else if(val.nx==1)
+ for(i=0;i<nx;i++) for(j=0;j<nz;j++)
+ a[i+nx*(yy+j*ny)] = val.a[0];
}
else if(xx<0)
{
if(val.nx>=nx) for(i=0;i<nx;i++)
a[i+nx*(yy+zz*ny)] = val.a[i];
+ else if(val.nx==1) for(i=0;i<nx;i++)
+ a[i+nx*(yy+zz*ny)] = val.a[0];
}
else if(yy<0)
{
if(val.nx>=ny) for(i=0;i<ny;i++)
a[xx+nx*(i+zz*ny)] = val.a[i];
+ else if(val.nx==1) for(i=0;i<ny;i++)
+ a[xx+nx*(i+zz*ny)] = val.a[0];
}
else if(zz<0)
{
if(val.nx>=nz) for(i=0;i<nz;i++)
a[xx+nx*(yy+i*ny)] = val.a[i];
+ else if(val.nx==1) for(i=0;i<nz;i++)
+ a[xx+nx*(yy+i*ny)] = val.a[0];
}
}
//-----------------------------------------------------------------------------
diff --git a/mgl/mgl_data_cf.cpp b/mgl/mgl_data_cf.cpp
index 5b9f102..16a834e 100644
--- a/mgl/mgl_data_cf.cpp
+++ b/mgl/mgl_data_cf.cpp
@@ -96,15 +96,17 @@ mreal mgl_data_min(const HMDT d) { return d->Minimal(); }
mreal *mgl_data_value(HMDT d, int i,int j,int k)
{ return d->a+i+d->nx*(j+d->ny*k); }
/// Swap left and right part of the data in given direction (useful for fourier spectrums)
-void mgl_data_swap(HMDT d, const char *dir)
-{ d->Swap(dir); }
+void mgl_data_swap(HMDT d, const char *dir) { d->Swap(dir); }
+/// Swap left and right part of the data in given direction (useful for fourier spectrums)
+void mgl_data_roll(HMDT d, char dir, int num) { d->Roll(dir,num); }
/// Mirror the data in given direction
-void mgl_data_mirror(HMDT d, const char *dir)
-{ d->Mirror(dir); }
-void mgl_data_insert(HMDT dat, char dir, int at, int num)
-{ dat->Insert(dir,at,num); }
-void mgl_data_delete(HMDT dat, char dir, int at, int num)
-{ dat->Delete(dir,at,num); }
+void mgl_data_mirror(HMDT d, const char *dir) { d->Mirror(dir); }
+void mgl_data_fill_sample(HMDT d, int num, const char *how) { d->FillSample(num,how); }
+void mgl_data_insert(HMDT d, char dir, int at, int num){ d->Insert(dir,at,num); }
+void mgl_data_delete(HMDT d, char dir, int at, int num){ d->Delete(dir,at,num); }
+void mgl_data_hankel(HMDT d, const char *dir) { d->Hankel(dir); }
+void mgl_data_sinfft(HMDT d, const char *dir) { d->SinFFT(dir); }
+void mgl_data_cosfft(HMDT d, const char *dir) { d->CosFFT(dir); }
//-----------------------------------------------------------------------------
/// Allocate memory and copy the data from the (mreal *) array
void mgl_data_set_float(HMDT d, const float *A,int NX,int NY,int NZ)
@@ -247,6 +249,8 @@ void mgl_data_swap_(uintptr_t *d, const char *dir,int l)
_DT_->Swap(s);
delete []s;
}
+void mgl_data_roll_(uintptr_t *d, const char *dir, int *num, int)
+{ _DT_->Roll(*dir, *num); }
/// Mirror the data in given direction
void mgl_data_mirror_(uintptr_t *d, const char *dir,int l)
{
@@ -254,10 +258,31 @@ void mgl_data_mirror_(uintptr_t *d, const char *dir,int l)
_DT_->Mirror(s);
delete []s;
}
+void mgl_data_fill_sample_(uintptr_t *d, int num, const char *how,int l)
+{
+ char *s=new char[l+1]; memcpy(s,how,l); s[l]=0;
+ _DT_->FillSample(num,s);
+ delete []s;
+}
void mgl_data_insert_(uintptr_t *d, const char *dir, int *at, int *num, int)
{ _DT_->Insert(*dir,*at,*num); }
void mgl_data_delete_(uintptr_t *d, const char *dir, int *at, int *num, int)
{ _DT_->Delete(*dir,*at,*num); }
+void mgl_data_hankel_(uintptr_t *d, const char *dir,int l)
+{
+ char *s=new char[l+1]; memcpy(s,dir,l); s[l]=0;
+ _DT_->Hankel(s); delete []s;
+}
+void mgl_data_sinfft_(uintptr_t *d, const char *dir,int l)
+{
+ char *s=new char[l+1]; memcpy(s,dir,l); s[l]=0;
+ _DT_->SinFFT(s); delete []s;
+}
+void mgl_data_cosfft_(uintptr_t *d, const char *dir,int l)
+{
+ char *s=new char[l+1]; memcpy(s,dir,l); s[l]=0;
+ _DT_->CosFFT(s); delete []s;
+}
//-----------------------------------------------------------------------------
/// Allocate memory and copy the data from the (mreal *) array
void mgl_data_set_float1_(uintptr_t *d, const float *A,int *NX)
diff --git a/mgl/mgl_data_io.cpp b/mgl/mgl_data_io.cpp
index 2cb9aa4..0c5d845 100644
--- a/mgl/mgl_data_io.cpp
+++ b/mgl/mgl_data_io.cpp
@@ -21,9 +21,13 @@
#include <ctype.h>
#include <math.h>
#include <string.h>
+#include <zlib.h>
#ifdef HAVE_HDF5
#include <hdf5.h>
#endif
+#ifdef HAVE_HDF4
+#include <hdf/mfhdf.h>
+#endif
#ifndef WIN32
#include <glob.h>
@@ -296,36 +300,39 @@ void mglData::Save(const char *fname,int ns) const
}
fclose(fp);
}
+//-----------------------------------------------------------------------------
+char *mgl_read_gz(gzFile fp)
+{
+ long size=1024,n=0;
+ char *buf=(char*)malloc(size);
+ while(gzread(fp,buf+size*n,size)>0)
+ { n++; buf=(char*)realloc(buf,size*(n+1)); }
+ return buf;
+}
//-----------------------------------------------------------------------------
bool mglData::Read(const char *fname)
{
long l=1,m=1,k=1;
long nb,i;
- FILE *fp = fopen(fname,"rb");
+ gzFile fp = gzopen(fname,"r");
if(!fp)
- {
+ {
if(!a) Create(1,1,1);
return false;
}
- fseek(fp,0,SEEK_END);
- nb = ftell(fp);
- char *buf = new char[nb+1];
- fseek(fp,0,SEEK_SET);
- memset(buf,0,nb*sizeof(char));
- fread(buf,nb,1,fp);
- fclose(fp);
+ char *buf = mgl_read_gz(fp);
+ nb = strlen(buf); gzclose(fp);
bool first=false,com=false;
register char ch;
for(i=nb-1;i>=0;i--) if(buf[i]>' ') break;
- buf[i+1]=0; nb = i; // remove tailing spaces
+ buf[i+1]=0; nb = i; // remove tailing spaces
for(i=0;i<nb-1 && !isn(buf[i]);i++) // determine nx
{
+ if(buf[i]=='#') while(!isn(buf[i]) && i<nb) i++;
ch = buf[i];
-// sp = (ch==' ' || ch=='\t');
- if(ch=='#') while(!isn(buf[i]) && i<nb) i++;
- if(!isspace(ch) && !first) first=true;
- if(first && (ch==' ' || ch=='\t') && !isspace(buf[i+1])) k++;
+ if(ch>' ' && !first) first=true;
+ if(first && (ch==' ' || ch=='\t') && buf[i+1]>' ') k++;
}
first = false;
for(i=0;i<nb-1;i++) // determine ny
@@ -350,8 +357,7 @@ bool mglData::Read(const char *fname)
}
}
else for(i=0;i<nb-1;i++) if(buf[i]=='\f') l++;
-
- delete []buf;
+ free(buf);
return Read(fname,k,m,l);
}
//-----------------------------------------------------------------------------
@@ -368,16 +374,11 @@ void mglData::Create(int mx,int my,int mz)
bool mglData::Read(const char *fname,int mx,int my,int mz)
{
if(mx<=0 || my<=0 || mz<=0) return false;
- FILE *fp = fopen(fname,"rt");
+ gzFile fp = gzopen(fname,"r");
if(!fp) return false;
Create(mx,my,mz);
-
- fseek(fp,0,SEEK_END);
- long nb = ftell(fp);
- char *buf = new char[nb+1];
- fseek(fp,0,SEEK_SET);
- memset(buf,0,nb); fread(buf,nb,1,fp);
- fclose(fp);
+ char *buf = mgl_read_gz(fp);
+ long nb = strlen(buf); gzclose(fp);
register long i=0, j=0, k=0;
while(j<nb)
@@ -404,23 +405,18 @@ bool mglData::Read(const char *fname,int mx,int my,int mz)
buf[j]=0;
a[i] = atof(s); i++; if(i>=nx*ny*nz) break;
}
- delete []buf;
+ free(buf);
return true;
}
//-----------------------------------------------------------------------------
bool mglData::ReadMat(const char *fname,int dim)
{
if(dim<=0 || dim>3) return false;
- FILE *fp = fopen(fname,"rt");
+ gzFile fp = gzopen(fname,"r");
if(!fp) return false;
nx = ny = nz = 1; NewId();
-
- fseek(fp,0,SEEK_END);
- long nb = ftell(fp);
- char *buf = new char[nb+1];
- fseek(fp,0,SEEK_SET);
- memset(buf,0,nb); fread(buf,nb,1,fp);
- fclose(fp);
+ char *buf = mgl_read_gz(fp);
+ long nb = strlen(buf); gzclose(fp);
register long i=0,j=0;
while(j<nb)
@@ -463,7 +459,7 @@ bool mglData::ReadMat(const char *fname,int dim)
if(i>=nx*ny*nz) break;
while(buf[j]>' ' && j<nb) j++;
}
- delete []buf;
+ free(buf);
return true;
}
//-----------------------------------------------------------------------------
@@ -775,8 +771,7 @@ void mglData::Squeeze(int rx,int ry,int rz,bool smooth)
s += a[i1+nx*(j1+ny*k1)];
b[i+kx*(j+ky*k)] = s/dx*dy*dz;
}
- delete []a;
- a = b;
+ delete []a; a=b;
nx = kx; ny = ky; nz = kz; NewId();
}
//-----------------------------------------------------------------------------
@@ -910,6 +905,45 @@ void mglData::Fill(const char *eq, mglPoint r1, mglPoint r2, const mglData *v, c
}
}
//-----------------------------------------------------------------------------
+void mglData::ReadHDF4(const char *fname,const char *data)
+{
+#ifdef HAVE_HDF4
+ int sd = SDstart(fname,DFACC_READ), nn, i;
+ if(sd==-1) return; // is not a HDF4 file
+ char name[64];
+ SDfileinfo(sd,&nn,&i);
+ for(i=0;i<nn;i++)
+ {
+ int sds, rank, dims[32], type, attr, in[2]={0,0};
+ sds = SDselect(sd,i);
+ SDgetinfo(sds,name,&rank,dims,&type,&attr);
+ if(!strcmp(name,data)) // as I understand there are possible many datas with the same name
+ {
+ if(rank==1) Create(dims[0]);
+ else if(rank==2) Create(dims[1],dims[0]);
+ else if(rank==3) Create(dims[3],dims[1],dims[0]);
+ else continue;
+ if(type==DFNT_FLOAT32)
+ {
+ float *b = new float[nx*ny*nz];
+ SDreaddata(sds,in,0,dims,b);
+ for(long j=0;j<nx*ny*nz;j++) a[j]=b[j];
+ delete []b;
+ }
+ if(type==DFNT_FLOAT64)
+ {
+ double *b = new double[nx*ny*nz];
+ SDreaddata(sds,in,0,dims,b);
+ for(long j=0;j<nx*ny*nz;j++) a[j]=b[j];
+ delete []b;
+ }
+ }
+ SDendaccess(sds);
+ }
+ SDend(sd);
+#endif
+}
+//-----------------------------------------------------------------------------
#ifdef HAVE_HDF5
void mglData::SaveHDF(const char *fname,const char *data,bool rewrite) const
{
@@ -951,13 +985,15 @@ void mglData::ReadHDF(const char *fname,const char *data)
{
hid_t hf,hd,hs;
hsize_t dims[3];
- long rank;
- hf = H5Fopen(fname, H5F_ACC_RDONLY, H5P_DEFAULT);
+ long rank, res = H5Fis_hdf5(fname);
+ if(res<=0) { ReadHDF4(fname,data); return; }
+ hf = H5Fopen(fname, H5F_ACC_RDONLY, H5P_DEFAULT); if(hf<0) return;
#ifndef H5_USE_16_API
hd = H5Dopen(hf,data,H5P_DEFAULT);
#else
hd = H5Dopen(hf,data);
-#endif
+#endif
+ if(hd<0) return;
hs = H5Dget_space(hd);
rank = H5Sget_simple_extent_ndims(hs);
if(rank>0 && rank<=3)
@@ -1082,7 +1118,7 @@ bool mglData::ReadAll(const char *templ, bool as_slice)
delete []fname; free(b);
return true;
#else
- return false;
+ return false;
#endif
}
//-----------------------------------------------------------------------------
diff --git a/mgl/mgl_data_png.cpp b/mgl/mgl_data_png.cpp
index 348134b..4668695 100644
--- a/mgl/mgl_data_png.cpp
+++ b/mgl/mgl_data_png.cpp
@@ -99,31 +99,28 @@ void mglData::Import(const char *fname,const char *scheme,mreal v1,mreal v2)
{
if(v1>=v2) return;
long num=0;
-
#ifndef NO_PNG
FILE *fp = fopen(fname, "rb");
if (!fp) return;
png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0);
- if (!png_ptr) return;
+ if (!png_ptr) { fclose(fp); return; }
png_infop info_ptr = png_create_info_struct(png_ptr);
if (!info_ptr)
- { png_destroy_read_struct(&png_ptr,0, 0); return; }
+ { png_destroy_read_struct(&png_ptr,0,0); fclose(fp); return; }
png_infop end_info = png_create_info_struct(png_ptr);
if (!end_info)
- { png_destroy_read_struct(&png_ptr, &info_ptr, 0); return; }
+ { png_destroy_read_struct(&png_ptr,&info_ptr,0); fclose(fp); return; }
png_init_io(png_ptr, fp);
png_read_png(png_ptr, info_ptr,
PNG_TRANSFORM_STRIP_ALPHA|PNG_TRANSFORM_PACKING|
PNG_TRANSFORM_STRIP_16|PNG_TRANSFORM_EXPAND,0);
unsigned char **rows = png_get_rows(png_ptr, info_ptr);
-
unsigned char *c = mgl_create_scheme(scheme,num);
if(num>1)
{
long w=png_get_image_width(png_ptr, info_ptr);
long h=png_get_image_height(png_ptr, info_ptr);
-
Create(w,h,1);
register long i,j,k;
long pos=0,val,mval=256;
@@ -147,7 +144,6 @@ void mglData::Import(const char *fname,const char *scheme,mreal v1,mreal v2)
void mglData::Export(const char *fname,const char *scheme,mreal v1,mreal v2,int ns) const
{
register long i,j,i0,k;
-
if(v1>v2) return;
if(v1==v2)
{
@@ -156,7 +152,6 @@ void mglData::Export(const char *fname,const char *scheme,mreal v1,mreal v2,int
{ if(a[i]<v1) v1=a[i]; if(a[i]>v2) v2=a[i]; }
}
if(v1==v2) return;
-
#ifndef NO_PNG
long num=0;
unsigned char *c = mgl_create_scheme(scheme,num);
@@ -165,7 +160,6 @@ void mglData::Export(const char *fname,const char *scheme,mreal v1,mreal v2,int
unsigned char **p = (unsigned char **)malloc(ny*sizeof(unsigned char *));
unsigned char *d = (unsigned char *)malloc(3*nx*ny*sizeof(unsigned char));
for(i=0;i<ny;i++) p[i] = d+3*nx*(ny-1-i);
-
if(ns<0 || ns>=nz) ns=0;
long dd = nx*ny*ns;
for(i=0;i<ny;i++) for(j=0;j<nx;j++)
@@ -179,13 +173,11 @@ void mglData::Export(const char *fname,const char *scheme,mreal v1,mreal v2,int
FILE *fp = fopen(fname, "wb");
if (!fp) return;
-
png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0);
- if (!png_ptr) return;
+ if (!png_ptr) { fclose(fp); return; }
png_infop info_ptr = png_create_info_struct(png_ptr);
if (!info_ptr)
- { png_destroy_write_struct(&png_ptr,0); return; }
-
+ { png_destroy_write_struct(&png_ptr,0); fclose(fp); return; }
png_init_io(png_ptr, fp);
png_set_filter(png_ptr, 0, PNG_ALL_FILTERS);
png_set_compression_level(png_ptr, Z_BEST_COMPRESSION);
@@ -194,7 +186,6 @@ void mglData::Export(const char *fname,const char *scheme,mreal v1,mreal v2,int
png_set_rows(png_ptr, info_ptr, p);
png_write_png(png_ptr, info_ptr, PNG_TRANSFORM_IDENTITY, 0);
png_write_end(png_ptr, info_ptr);
-
png_destroy_write_struct(&png_ptr, &info_ptr);
fclose(fp); free(p); free(d);
#endif
diff --git a/mgl/mgl_eps.cpp b/mgl/mgl_eps.cpp
index 4513020..ed6649b 100644
--- a/mgl/mgl_eps.cpp
+++ b/mgl/mgl_eps.cpp
@@ -19,9 +19,11 @@
***************************************************************************/
#include <stdlib.h>
#include <time.h>
+#include <zlib.h>
#include "mgl/mgl_eps.h"
#include "mgl/mgl_c.h"
#include "mgl/mgl_f.h"
+void mgl_printf(void *fp, bool gz, const char *str, ...);
//-----------------------------------------------------------------------------
int mgl_compare_prim(const void *p1, const void *p2)
{
@@ -83,8 +85,8 @@ void mglGraphPS::line_plot(mreal *p1,mreal *p2,mreal *c1,mreal *c2,bool all)
a.x[0]=p1[0]; a.y[0]=p1[1]; a.x[1]=p2[0]; a.y[1]=p2[1];
a.zz[0]=p1[2]; a.zz[1]=p2[2];
a.c[0]=(c1[0]+c2[0])/2; a.c[1]=(c1[1]+c2[1])/2; a.c[2]=(c1[2]+c2[2])/2;
-// a.c[0]=c1[0]; a.c[1]=c1[1]; a.c[2]=c1[2];
- a.SetStyle(all? 0xffff:PDef,int(pPos));
+// a.c[0]=c1[0]; a.c[1]=c1[1]; a.c[2]=c1[2];
+ a.style=all? 0xffff:PDef; a.s = pPos;
add_prim(a);
pPos = fmod(pPos+hypot(p2[0]-p1[0], p2[1]-p1[1])/pw/1.5, 16);
}
@@ -295,45 +297,33 @@ bool mglPrim::IsSame(mreal wp,mreal *cp,int st)
return (cp[0]==c[0] && cp[1]==c[1] && cp[2]==c[2]);
}
//-----------------------------------------------------------------------------
-void mglPrim::SetStyle(unsigned PDef, int pPos)
-{
- style=0;
- switch(PDef)
- {
- case 0xff00: style=1; break;
- case 0xf0f0: style=2; break;
- case 0x8888: style=3; break;
- case 0xfe10: style=4; break;
- case 0xe4e4: style=5; break;
- }
- pPos = abs(pPos)%16;
- dash = (PDef>>(16-pPos))+(PDef<<pPos);
-}
-//-----------------------------------------------------------------------------
void mglGraphPS::WriteEPS(const char *fname,const char *descr)
{
if(!P) return;
if(!Finished) Finish();
time_t now;
time(&now);
-
- FILE *fp = fopen(fname,"wt");
+
+ bool gz = fname[strlen(fname)-1]=='z';
+ void *fp = gz ? gzopen(fname,"wt") : fopen(fname,"wt");
if(!fp) { SetWarn(mglWarnOpen,fname); return; }
- fprintf(fp,"%%!PS-Adobe-3.0 EPSF-3.0\n%%%%BoundingBox: 0 0 %d %d\n",Width,Height);
- fprintf(fp,"%%%%Creator: MathGL library\n%%%%Title: %s\n",descr ? descr : fname);
- fprintf(fp,"%%%%CreationDate: %s\n",ctime(&now));
- fprintf(fp,"/lw {setlinewidth} def\n/rgb {setrgbcolor} def\n");
- fprintf(fp,"/np {newpath} def\n/cp {closepath} def\n");
- fprintf(fp,"/ll {lineto} def\n/mt {moveto} def\n");
- fprintf(fp,"/rl {rlineto} def\n/rm {rmoveto} def\n/dr {stroke} def\n");
- fprintf(fp,"/ss {%g} def\n",MarkSize*0.4*font_factor);// remove *font_factor); ???
- fprintf(fp,"/s2 {%g} def\n",MarkSize*0.8*font_factor);// remove *font_factor); ???
- fprintf(fp,"/sm {-%g} def\n",MarkSize*0.4*font_factor);//remove *font_factor); ???
- fprintf(fp,"/m_c {ss 0.3 mul 0 360 arc} def\n");
- fprintf(fp,"/d0 {[] 0 setdash} def\n/sd {0 setdash} def\n");
+ mgl_printf(fp, gz, "%%!PS-Adobe-3.0 EPSF-3.0\n%%%%BoundingBox: 0 0 %d %d\n",Width,Height);
+ mgl_printf(fp, gz, "%%%%Creator: MathGL library\n%%%%Title: %s\n",descr ? descr : fname);
+ mgl_printf(fp, gz, "%%%%CreationDate: %s\n",ctime(&now));
+ mgl_printf(fp, gz, "/lw {setlinewidth} def\n/rgb {setrgbcolor} def\n");
+ mgl_printf(fp, gz, "/np {newpath} def\n/cp {closepath} def\n");
+ mgl_printf(fp, gz, "/ll {lineto} def\n/mt {moveto} def\n");
+ mgl_printf(fp, gz, "/rl {rlineto} def\n/rm {rmoveto} def\n/dr {stroke} def\n");
+ mgl_printf(fp, gz, "/ss {%g} def\n",MarkSize*0.4*font_factor);// remove *font_factor); ???
+ mgl_printf(fp, gz, "/s2 {%g} def\n",MarkSize*0.8*font_factor);// remove *font_factor); ???
+ mgl_printf(fp, gz, "/sm {-%g} def\n",MarkSize*0.4*font_factor);//remove *font_factor); ???
+ mgl_printf(fp, gz, "/m_c {ss 0.3 mul 0 360 arc} def\n");
+ mgl_printf(fp, gz, "/d0 {[] 0 setdash} def\n/sd {setdash} def\n");
- bool m_p=false,m_x=false,m_d=false,m_v=false,m_t=false,
- m_s=false,m_a=false,m_o=false,m_O=false,m_T=false,m_V=false,m_S=false,m_D=false;
+ bool m_p=false,m_x=false,m_d=false,m_v=false,m_t=false,
+ m_s=false,m_a=false,m_o=false,m_T=false,
+ m_V=false,m_S=false,m_D=false,m_Y=false,m_l=false,
+ m_L=false,m_r=false,m_R=false,m_X=false,m_P=false;
register long i;
// add mark definition if present
for(i=0;i<pNum;i++)
@@ -342,27 +332,40 @@ void mglGraphPS::WriteEPS(const char *fname,const char *descr)
if(P[i].m=='x') m_x = true; if(P[i].m=='s') m_s = true;
if(P[i].m=='d') m_d = true; if(P[i].m=='v') m_v = true;
if(P[i].m=='^') m_t = true; if(P[i].m=='*') m_a = true;
- if(P[i].m=='o') m_o = true; if(P[i].m=='O') m_O = true;
+ if(P[i].m=='o' || P[i].m=='O' || P[i].m=='C') m_o = true;
if(P[i].m=='S') m_S = true; if(P[i].m=='D') m_D = true;
if(P[i].m=='V') m_V = true; if(P[i].m=='T') m_T = true;
- }
- if(m_p) fprintf(fp,"/m_p {sm 0 rm s2 0 rl sm sm rm 0 s2 rl d0} def\n");
- if(m_x) fprintf(fp,"/m_x {sm sm rm s2 s2 rl 0 sm 2 mul rm sm 2 mul s2 rl d0} def\n");
- if(m_s) fprintf(fp,"/m_s {sm sm rm 0 s2 rl s2 0 rl 0 sm 2 mul rl cp d0} def\n");
- if(m_d) fprintf(fp,"/m_d {sm 0 rm ss ss rl ss sm rl sm sm rl cp d0} def\n");
- if(m_v) fprintf(fp,"/m_v {sm ss 2 div rm s2 0 rl sm sm 1.5 mul rl d0 cp} def\n");
- if(m_t) fprintf(fp,"/m_t {sm sm 2 div rm s2 0 rl sm ss 1.5 mul rl d0 cp} def\n");
- if(m_a) fprintf(fp,"/m_a {sm 0 rm s2 0 rl sm 1.6 mul sm 0.8 mul rm ss 1.2 mul ss 1.6 mul rl 0 sm 1.6 mul rm sm 1.2 mul ss 1.6 mul rl d0} def\n");
- if(m_o) fprintf(fp,"/m_o {ss 0 360 d0 arc} def\n");
- if(m_O) fprintf(fp,"/m_O {ss 0 360 d0 arc fill} def\n");
- if(m_S) fprintf(fp,"/m_S {sm sm rm 0 s2 rl s2 0 rl 0 sm 2 mul rl cp} def\n");
- if(m_D) fprintf(fp,"/m_D {sm 0 rm ss ss rl ss sm rl sm sm rl cp} def\n");
- if(m_V) fprintf(fp,"/m_V {sm ss 2 div rm s2 0 rl sm sm 1.5 mul rl cp} def\n");
- if(m_T) fprintf(fp,"/m_T {sm sm 2 div rm s2 0 rl sm ss 1.5 mul rl cp} def\n");
- fprintf(fp,"\n");
+ if(P[i].m=='<') m_l = true; if(P[i].m=='L') m_L = true;
+ if(P[i].m=='>') m_r = true; if(P[i].m=='R') m_R = true;
+ if(P[i].m=='Y') m_Y = true;
+ if(P[i].m=='P') m_P = true; if(P[i].m=='X') m_X = true;
+ }
+ if(m_P) { m_p=true; m_s=true; }
+ if(m_X) { m_x=true; m_s=true; }
+ if(m_p) mgl_printf(fp, gz, "/m_p {sm 0 rm s2 0 rl sm sm rm 0 s2 rl d0} def\n");
+ if(m_x) mgl_printf(fp, gz, "/m_x {sm sm rm s2 s2 rl 0 sm 2 mul rm sm 2 mul s2 rl d0} def\n");
+ if(m_s) mgl_printf(fp, gz, "/m_s {sm sm rm 0 s2 rl s2 0 rl 0 sm 2 mul rl cp d0} def\n");
+ if(m_d) mgl_printf(fp, gz, "/m_d {sm 0 rm ss ss rl ss sm rl sm sm rl cp d0} def\n");
+ if(m_v) mgl_printf(fp, gz, "/m_v {sm ss 2 div rm s2 0 rl sm sm 1.5 mul rl d0 cp} def\n");
+ if(m_t) mgl_printf(fp, gz, "/m_t {sm sm 2 div rm s2 0 rl sm ss 1.5 mul rl d0 cp} def\n");
+ if(m_a) mgl_printf(fp, gz, "/m_a {sm 0 rm s2 0 rl sm 1.6 mul sm 0.8 mul rm ss 1.2 mul ss 1.6 mul rl 0 sm 1.6 mul rm sm 1.2 mul ss 1.6 mul rl d0} def\n");
+ if(m_o) mgl_printf(fp, gz, "/m_o {ss 0 360 d0 arc} def\n");
+ if(m_S) mgl_printf(fp, gz, "/m_S {sm sm rm 0 s2 rl s2 0 rl 0 sm 2 mul rl cp} def\n");
+ if(m_D) mgl_printf(fp, gz, "/m_D {sm 0 rm ss ss rl ss sm rl sm sm rl cp} def\n");
+ if(m_V) mgl_printf(fp, gz, "/m_V {sm ss 2 div rm s2 0 rl sm sm 1.5 mul rl cp} def\n");
+ if(m_T) mgl_printf(fp, gz, "/m_T {sm sm 2 div rm s2 0 rl sm ss 1.5 mul rl cp} def\n");
+ if(m_Y) mgl_printf(fp, gz, "/m_Y {0 sm rm 0 ss rl sm ss rl s2 0 rm sm sm rl d0} def\n");
+ if(m_r) mgl_printf(fp, gz, "/m_r {sm 2 div sm rm 0 s2 rl ss 1.5 mul sm rl d0 cp} def\n");
+ if(m_l) mgl_printf(fp, gz, "/m_l {ss 2 div sm rm 0 s2 rl sm 1.5 mul sm rl d0 cp} def\n");
+ if(m_R) mgl_printf(fp, gz, "/m_R {sm 2 div sm rm 0 s2 rl ss 1.5 mul sm rl cp} def\n");
+ if(m_L) mgl_printf(fp, gz, "/m_L {ss 2 div sm rm 0 s2 rl sm 1.5 mul sm rl cp} def\n");
+ if(m_P) mgl_printf(fp, gz, "/m_P {m_p 0 sm rm m_s} def\n");
+ if(m_X) mgl_printf(fp, gz, "/m_X {m_x ss sm rm m_s} def\n");
+// if(m_C) mgl_printf(fp, gz, "/m_C {m_c m_o} def\n");
+ mgl_printf(fp, gz, "\n");
// write definition for all glyphs
- put_desc(fp,"/%c%c_%04x { np\n", "\t%d %d mt ", "%d %d ll ", "cp\n", "} def\n");
+ put_desc(fp,gz,"/%c%c_%04x { np\n", "\t%d %d mt ", "%d %d ll ", "cp\n", "} def\n");
// write primitives
mreal cp[3]={-1,-1,-1},wp=-1;
int st=0;
@@ -379,70 +382,78 @@ void mglGraphPS::WriteEPS(const char *fname,const char *descr)
wp=1;
if(P[i].s!=MarkSize)
{
- fprintf(fp,"/ss {%g} def\n",P[i].s*0.4*font_factor);
- fprintf(fp,"/s2 {%g} def\n",P[i].s*0.8*font_factor);
- fprintf(fp,"/sm {-%g} def\n",P[i].s*0.4*font_factor);
+ mgl_printf(fp, gz, "/ss {%g} def\n",P[i].s*0.4*font_factor);
+ mgl_printf(fp, gz, "/s2 {%g} def\n",P[i].s*0.8*font_factor);
+ mgl_printf(fp, gz, "/sm {-%g} def\n",P[i].s*0.4*font_factor);
}
switch(P[i].m)
{
- case '+': fprintf(fp,"np %g %g mt m_p %sdr\n",P[i].x[0],P[i].y[0],str); break;
- case 'x': fprintf(fp,"np %g %g mt m_x %sdr\n",P[i].x[0],P[i].y[0],str); break;
- case 's': fprintf(fp,"np %g %g mt m_s %sdr\n",P[i].x[0],P[i].y[0],str); break;
- case 'd': fprintf(fp,"np %g %g mt m_d %sdr\n",P[i].x[0],P[i].y[0],str); break;
- case '*': fprintf(fp,"np %g %g mt m_a %sdr\n",P[i].x[0],P[i].y[0],str); break;
- case 'v': fprintf(fp,"np %g %g mt m_v %sdr\n",P[i].x[0],P[i].y[0],str); break;
- case '^': fprintf(fp,"np %g %g mt m_t %sdr\n",P[i].x[0],P[i].y[0],str); break;
- case 'S': fprintf(fp,"np %g %g mt m_S %sfill\n",P[i].x[0],P[i].y[0],str); break;
- case 'D': fprintf(fp,"np %g %g mt m_D %sfill\n",P[i].x[0],P[i].y[0],str); break;
- case 'V': fprintf(fp,"np %g %g mt m_V %sfill\n",P[i].x[0],P[i].y[0],str); break;
- case 'T': fprintf(fp,"np %g %g mt m_T %sfill\n",P[i].x[0],P[i].y[0],str); break;
- case 'o': fprintf(fp,"%g %g m_o %sdr\n",P[i].x[0],P[i].y[0],str);break;
- case 'O': fprintf(fp,"%g %g m_O %sdr\n",P[i].x[0],P[i].y[0],str);break;
- default: fprintf(fp,"%g %g m_c %sfill\n",P[i].x[0],P[i].y[0],str);
+ case '+': mgl_printf(fp, gz, "np %g %g mt m_p %sdr\n",P[i].x[0],P[i].y[0],str); break;
+ case 'x': mgl_printf(fp, gz, "np %g %g mt m_x %sdr\n",P[i].x[0],P[i].y[0],str); break;
+ case 's': mgl_printf(fp, gz, "np %g %g mt m_s %sdr\n",P[i].x[0],P[i].y[0],str); break;
+ case 'd': mgl_printf(fp, gz, "np %g %g mt m_d %sdr\n",P[i].x[0],P[i].y[0],str); break;
+ case '*': mgl_printf(fp, gz, "np %g %g mt m_a %sdr\n",P[i].x[0],P[i].y[0],str); break;
+ case 'v': mgl_printf(fp, gz, "np %g %g mt m_v %sdr\n",P[i].x[0],P[i].y[0],str); break;
+ case '^': mgl_printf(fp, gz, "np %g %g mt m_t %sdr\n",P[i].x[0],P[i].y[0],str); break;
+ case 'S': mgl_printf(fp, gz, "np %g %g mt m_S %sfill\n",P[i].x[0],P[i].y[0],str); break;
+ case 'D': mgl_printf(fp, gz, "np %g %g mt m_D %sfill\n",P[i].x[0],P[i].y[0],str); break;
+ case 'V': mgl_printf(fp, gz, "np %g %g mt m_V %sfill\n",P[i].x[0],P[i].y[0],str); break;
+ case 'T': mgl_printf(fp, gz, "np %g %g mt m_T %sfill\n",P[i].x[0],P[i].y[0],str); break;
+ case 'o': mgl_printf(fp, gz, "%g %g m_o %sdr\n",P[i].x[0],P[i].y[0],str);break;
+ case 'O': mgl_printf(fp, gz, "%g %g m_o %sfill\n",P[i].x[0],P[i].y[0],str);break;
+ case 'Y': mgl_printf(fp, gz, "np %g %g mt m_Y %sdr\n",P[i].x[0],P[i].y[0],str); break;
+ case '<': mgl_printf(fp, gz, "np %g %g mt m_l %sdr\n",P[i].x[0],P[i].y[0],str); break;
+ case '>': mgl_printf(fp, gz, "np %g %g mt m_r %sdr\n",P[i].x[0],P[i].y[0],str); break;
+ case 'L': mgl_printf(fp, gz, "np %g %g mt m_L %sfill\n",P[i].x[0],P[i].y[0],str); break;
+ case 'R': mgl_printf(fp, gz, "np %g %g mt m_R %sfill\n",P[i].x[0],P[i].y[0],str); break;
+ case 'P': mgl_printf(fp, gz, "np %g %g mt m_P %sdr\n",P[i].x[0],P[i].y[0],str); break;
+ case 'X': mgl_printf(fp, gz, "np %g %g mt m_X %sdr\n",P[i].x[0],P[i].y[0],str); break;
+ case 'C': mgl_printf(fp, gz, "%g %g m_o %g %g m_c %sdr\n",P[i].x[0],P[i].y[0],P[i].x[0],P[i].y[0],str); break;
+ default: mgl_printf(fp, gz, "%g %g m_c %sfill\n",P[i].x[0],P[i].y[0],str);
}
if(P[i].s!=MarkSize)
{
- fprintf(fp,"/ss {%g} def\n",MarkSize*0.4*font_factor);
- fprintf(fp,"/s2 {%g} def\n",MarkSize*0.8*font_factor);
- fprintf(fp,"/sm {-%g} def\n",MarkSize*0.4*font_factor);
+ mgl_printf(fp, gz, "/ss {%g} def\n",MarkSize*0.4*font_factor);
+ mgl_printf(fp, gz, "/s2 {%g} def\n",MarkSize*0.8*font_factor);
+ mgl_printf(fp, gz, "/sm {-%g} def\n",MarkSize*0.4*font_factor);
}
}
else if(P[i].type==2) // quad
- fprintf(fp,"np %g %g mt %g %g ll %g %g ll cp %sfill\n",P[i].x[0],P[i].y[0],P[i].x[1],P[i].y[1],P[i].x[2],P[i].y[2],str);
+ mgl_printf(fp, gz, "np %g %g mt %g %g ll %g %g ll cp %sfill\n",P[i].x[0],P[i].y[0],P[i].x[1],P[i].y[1],P[i].x[2],P[i].y[2],str);
else if(P[i].type==3) // trig
- fprintf(fp,"np %g %g mt %g %g ll %g %g ll %g %g ll cp %sfill\n",P[i].x[0],P[i].y[0],P[i].x[1],P[i].y[1],P[i].x[3],P[i].y[3],P[i].x[2],P[i].y[2],str);
+ mgl_printf(fp, gz, "np %g %g mt %g %g ll %g %g ll %g %g ll cp %sfill\n",P[i].x[0],P[i].y[0],P[i].x[1],P[i].y[1],P[i].x[3],P[i].y[3],P[i].x[2],P[i].y[2],str);
else if(P[i].type==1) // line
{
sprintf(str,"%.2g lw %.2g %.2g %.2g rgb ", P[i].w>1 ? P[i].w:1., P[i].c[0],P[i].c[1],P[i].c[2]);
wp = P[i].w>1 ? P[i].w:1; st = P[i].style;
- put_line(fp,i,wp,cp,st, "np %g %g mt ", "%g %g ll ", false);
- const char *sd = mgl_get_dash(P[i].dash,P[i].w);
- if(sd && sd[0]) fprintf(fp,"%s [%s] sd dr\n",str,sd);
- else fprintf(fp,"%s d0 dr\n",str);
+ put_line(fp,gz,i,wp,cp,st, "np %g %g mt ", "%g %g ll ", false);
+ const char *sd = mgl_get_dash(P[i].style,P[i].w);
+ if(sd && sd[0]) mgl_printf(fp, gz, "%s [%s] %g sd dr\n",str,sd,P[i].w*P[i].s);
+ else mgl_printf(fp, gz, "%s d0 dr\n",str);
}
else if(P[i].type==4) // glyph
{
mreal ss = P[i].s/2, xx = P[i].x[1], yy = P[i].y[1];
- fprintf(fp,"gsave\t%g %g translate %g %g scale %g rotate %s\n",
+ mgl_printf(fp, gz, "gsave\t%g %g translate %g %g scale %g rotate %s\n",
P[i].x[0], P[i].y[0], ss, ss, -P[i].w, str);
if(P[i].style&8) // this is "line"
{
mreal dy = 0.004,f=fabs(P[i].zz[1]);
- fprintf(fp,"np %g %g mt %g %g ll %g %g ll %g %g ll cp ",
+ mgl_printf(fp, gz, "np %g %g mt %g %g ll %g %g ll %g %g ll cp ",
xx,yy+dy, xx+f,yy+dy, xx+f,yy-dy, xx,yy-dy);
}
else
- fprintf(fp,"%.3g %.3g translate %g %g scale %c%c_%04x ",
+ mgl_printf(fp, gz, "%.3g %.3g translate %g %g scale %c%c_%04x ",
xx, yy, P[i].zz[1], P[i].zz[1], P[i].style&1?'b':'n',
P[i].style&2?'i':'n', P[i].m);
- if(P[i].style&4) fprintf(fp,"dr");
- else fprintf(fp,"eofill");
- fprintf(fp," grestore\n");
+ if(P[i].style&4) mgl_printf(fp, gz, "dr");
+ else mgl_printf(fp, gz, "eofill");
+ mgl_printf(fp, gz, " grestore\n");
}
}
for(i=0;i<pNum;i++) if(P[i].type==-1) P[i].type = 1;
- fprintf(fp,"\nshowpage\n%%%%EOF\n");
- fclose(fp);
+ mgl_printf(fp, gz, "\nshowpage\n%%%%EOF\n");
+ if(gz) gzclose(fp); else fclose((FILE *)fp);
}
//-----------------------------------------------------------------------------
void mglGraphPS::WriteSVG(const char *fname,const char *descr)
@@ -452,20 +463,21 @@ void mglGraphPS::WriteSVG(const char *fname,const char *descr)
time_t now;
time(&now);
- FILE *fp = fopen(fname,"wt");
+ bool gz = fname[strlen(fname)-1]=='z';
+ void *fp = gz ? gzopen(fname,"wt") : fopen(fname,"wt");
if(!fp) { SetWarn(mglWarnOpen,fname); return; }
- fprintf(fp,"<?xml version=\"1.0\" standalone=\"no\"?>\n");
- fprintf(fp,"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 20000303 Stylable//EN\" \"http://www.w3.org/TR/2000/03/WD-SVG-20000303/DTD/svg-20000303-stylable.dtd\">\n");
- fprintf(fp,"<svg width=\"%d\" height=\"%d\">\n",Width,Height);
+ mgl_printf(fp, gz, "<?xml version=\"1.0\" standalone=\"no\"?>\n");
+ mgl_printf(fp, gz, "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 20000303 Stylable//EN\" \"http://www.w3.org/TR/2000/03/WD-SVG-20000303/DTD/svg-20000303-stylable.dtd\">\n");
+ mgl_printf(fp, gz, "<svg width=\"%d\" height=\"%d\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",Width,Height);
- fprintf(fp,"<!--Creator: MathGL library-->\n");
- fprintf(fp,"<!--Title: %s-->\n<!--CreationDate: %s-->\n\n",descr?descr:fname,ctime(&now));
+ mgl_printf(fp, gz, "<!--Creator: MathGL library-->\n");
+ mgl_printf(fp, gz, "<!--Title: %s-->\n<!--CreationDate: %s-->\n\n",descr?descr:fname,ctime(&now));
// write definition for all glyphs
- put_desc(fp,"<symbol id=\"%c%c_%04x\"><path d=\"", "\tM %d %d ",
+ put_desc(fp,gz,"<symbol id=\"%c%c_%04x\"><path d=\"", "\tM %d %d ",
"L %d %d ", "Z\n", "\"/></symbol>\n");
// currentColor -> inherit ???
- fprintf(fp,"<g fill=\"none\" stroke=\"none\" stroke-width=\"0.5\">\n");
+ mgl_printf(fp, gz, "<g fill=\"none\" stroke=\"none\" stroke-width=\"0.5\">\n");
// write primitives
mreal cp[3]={-1,-1,-1},wp=-1;
register long i;
@@ -476,113 +488,130 @@ void mglGraphPS::WriteSVG(const char *fname,const char *descr)
if(P[i].type==0)
{
mreal x=P[i].x[0],y=Height-P[i].y[0],s=0.4*font_factor*P[i].s;
+ if(!strchr("xsSoO",P[i].m)) s *= 1.1;
wp = 1;
- if(strchr("SDVT",P[i].m))
- fprintf(fp,"<g fill=\"#%02x%02x%02x\">\n",
+ if(strchr("SDVTLR",P[i].m))
+ mgl_printf(fp, gz, "<g fill=\"#%02x%02x%02x\">\n",
int(255*P[i].c[0]),int(255*P[i].c[1]),int(255*P[i].c[2]));
else
- fprintf(fp,"<g stroke=\"#%02x%02x%02x\">\n",
+ mgl_printf(fp, gz, "<g stroke=\"#%02x%02x%02x\">\n",
int(255*P[i].c[0]),int(255*P[i].c[1]),int(255*P[i].c[2]));
switch(P[i].m)
{
+ case 'P':
+ mgl_printf(fp, gz, "<path d=\"M %g %g L %g %g M %g %g L %g %g M %g %g L %g %g L %g %g L %g %g L %g %g\"/>\n",
+ x-s,y,x+s,y,x,y-s,x,y+s, x-s,y-s,x+s,y-s,x+s,y+s,x-s,y+s,x-s,y-s); break;
case '+':
- fprintf(fp,"<path d=\"M %g %g L %g %g M %g %g L %g %g\"/>\n",
+ mgl_printf(fp, gz, "<path d=\"M %g %g L %g %g M %g %g L %g %g\"/>\n",
x-s,y,x+s,y,x,y-s,x,y+s); break;
+ case 'X':
+ mgl_printf(fp, gz, "<path d=\"M %g %g L %g %g M %g %g L %g %g M %g %g L %g %g L %g %g L %g %g L %g %g\"/>\n",
+ x-s,y-s,x+s,y+s,x+s,y-s,x-s,y+s, x-s,y-s,x+s,y-s,x+s,y+s,x-s,y+s,x-s,y-s); break;
case 'x':
- fprintf(fp,"<path d=\"M %g %g L %g %g M %g %g L %g %g\"/>\n",
+ mgl_printf(fp, gz, "<path d=\"M %g %g L %g %g M %g %g L %g %g\"/>\n",
x-s,y-s,x+s,y+s,x+s,y-s,x-s,y+s); break;
case 's':
- fprintf(fp,"<path d=\"M %g %g L %g %g L %g %g L %g %gZ\"/>\n",
- x-s,y-s,x+s,y-s,x+s,y+s,x-s,y+s); break;
- case 'd':
- fprintf(fp,"<path d=\"M %g %g L %g %g L %g %g L %g %gZ\"/>\n",
- x-s,y,x,y-s,x+s,y,x,y+s); break;
- case '^':
- fprintf(fp,"<path d=\"M %g %g L %g %g L %g %gZ\"/>\n",
- x-s,y+s/2,x+s,y+s/2,x,y-s); break;
- case 'v':
- fprintf(fp,"<path d=\"M %g %g L %g %g L %g %gZ\"/>\n",
- x-s,y-s/2,x+s,y-s/2,x,y+s); break;
case 'S':
- fprintf(fp,"<path d=\"M %g %g L %g %g L %g %g L %g %gZ\"/>\n",
+ mgl_printf(fp, gz, "<path d=\"M %g %g L %g %g L %g %g L %g %gZ\"/>\n",
x-s,y-s,x+s,y-s,x+s,y+s,x-s,y+s); break;
+ case 'd':
case 'D':
- fprintf(fp,"<path d=\"M %g %g L %g %g L %g %g L %g %gZ\"/>\n",
+ mgl_printf(fp, gz, "<path d=\"M %g %g L %g %g L %g %g L %g %gZ\"/>\n",
x-s,y,x,y-s,x+s,y,x,y+s); break;
+ case '^':
case 'T':
- fprintf(fp,"<path d=\"M %g %g L %g %g L %g %gZ\"/>\n",
+ mgl_printf(fp, gz, "<path d=\"M %g %g L %g %g L %g %gZ\"/>\n",
x-s,y+s/2,x+s,y+s/2,x,y-s); break;
+ case 'v':
case 'V':
- fprintf(fp,"<path d=\"M %g %g L %g %g L %g %gZ\"/>\n",
+ mgl_printf(fp, gz, "<path d=\"M %g %g L %g %g L %g %gZ\"/>\n",
x-s,y-s/2,x+s,y-s/2,x,y+s); break;
+ case '<':
+ case 'L':
+ mgl_printf(fp, gz, "<path d=\"M %g %g L %g %g L %g %gZ\"/>\n",
+ x+s/2,y+s,x+s/2,y-s,x-s,y); break;
+ case '>':
+ case 'R':
+ mgl_printf(fp, gz, "<path d=\"M %g %g L %g %g L %g %gZ\"/>\n",
+ x-s/2,y+s,x-s/2,y-s,x+s,y); break;
+ case 'Y':
+ mgl_printf(fp, gz, "<path d=\"M %g %g L %g %g L %g %g M %g %g L %g %g\"/>\n",
+ x,y+s, x,y, x+s,y-s, x,y, x-s,y-s); break;
+ case 'C':
+ mgl_printf(fp, gz, "<circle style=\"fill:#%02x%02x%02x\" cx=\"%g\" cy=\"%g\" r=\"0.15\"/>\n<circle cx=\"%g\" cy=\"%g\" r=\"%g\"/>\n",
+ int(255*P[i].c[0]),int(255*P[i].c[1]),int(255*P[i].c[2]),x,y,x,y,s); break;
case 'o':
- fprintf(fp,"<circle cx=\"%g\" cy=\"%g\" r=\"%g\"/>\n",
+ mgl_printf(fp, gz, "<circle cx=\"%g\" cy=\"%g\" r=\"%g\"/>\n",
x,y,s); break;
case 'O':
- fprintf(fp,"<circle style=\"fill:#%02x%02x%02x\" cx=\"%g\" cy=\"%g\" r=\"%g\"/>\n",
+ mgl_printf(fp, gz, "<circle style=\"fill:#%02x%02x%02x\" cx=\"%g\" cy=\"%g\" r=\"%g\"/>\n",
int(255*P[i].c[0]),int(255*P[i].c[1]),int(255*P[i].c[2]),x,y,s); break;
case '*':
- fprintf(fp,"<path d=\"M %g %g L %g %g M %g %g L %g %g M %g %g L %g %g\"/>\n",
+ mgl_printf(fp, gz, "<path d=\"M %g %g L %g %g M %g %g L %g %g M %g %g L %g %g\"/>\n",
x-s,y,x+s,y,x-0.8*s,y-1.6*s,x+0.8*s,y+1.6*s,x+0.8*s,y-1.6*s,x-0.8*s,y+1.6*s); break;
default:
- fprintf(fp,"<circle style=\"fill:#%02x%02x%02x\" cx=\"%g\" cy=\"%g\" r=\"0.15\"/>\n",
+ mgl_printf(fp, gz, "<circle style=\"fill:#%02x%02x%02x\" cx=\"%g\" cy=\"%g\" r=\"0.15\"/>\n",
int(255*P[i].c[0]),int(255*P[i].c[1]),int(255*P[i].c[2]),x,y); break;
}
- fprintf(fp,"</g>\n");
+ mgl_printf(fp, gz, "</g>\n");
}
else if(P[i].type==2 && P[i].c[3]>0)
{
- fprintf(fp,"<g fill=\"#%02x%02x%02x\" opacity=\"%g\">\n",
+ mgl_printf(fp, gz, "<g fill=\"#%02x%02x%02x\" opacity=\"%g\">\n",
int(255*P[i].c[0]),int(255*P[i].c[1]),int(255*P[i].c[2]),P[i].c[3]);
- fprintf(fp,"<path d=\"M %g %g L %g %g L %g %g Z\"/> </g>\n",
+ mgl_printf(fp, gz, "<path d=\"M %g %g L %g %g L %g %g Z\"/> </g>\n",
P[i].x[0],Height-P[i].y[0],P[i].x[1],Height-P[i].y[1],
P[i].x[2],Height-P[i].y[2]);
}
else if(P[i].type==3 && P[i].c[3]>0)
{
- fprintf(fp,"<g fill=\"#%02x%02x%02x\" opacity=\"%g\">\n",
+ mgl_printf(fp, gz, "<g fill=\"#%02x%02x%02x\" opacity=\"%g\">\n",
int(255*P[i].c[0]),int(255*P[i].c[1]),int(255*P[i].c[2]),P[i].c[3]);
- fprintf(fp,"<path d=\"M %g %g L %g %g L %g %g L %g %g Z\"/> </g>\n",
+ mgl_printf(fp, gz, "<path d=\"M %g %g L %g %g L %g %g L %g %g Z\"/> </g>\n",
P[i].x[0],Height-P[i].y[0],P[i].x[1],Height-P[i].y[1],
P[i].x[3],Height-P[i].y[3],P[i].x[2],Height-P[i].y[2]);
}
else if(P[i].type==1)
{
// const char *dash[]={"", "8 8","4 4","1 3","7 4 1 4","3 2 1 2"};
- fprintf(fp,"<g stroke=\"#%02x%02x%02x\"",
+ mgl_printf(fp, gz, "<g stroke=\"#%02x%02x%02x\"",
int(255*P[i].c[0]),int(255*P[i].c[1]),int(255*P[i].c[2]));
- if(P[i].style) fprintf(fp," stroke-dasharray=\"%s\"", mgl_get_dash(P[i].dash,P[i].w));
- if(P[i].w>1) fprintf(fp," stroke-width=\"%g\"", P[i].w);
+ if(P[i].style)
+ {
+ mgl_printf(fp, gz, " stroke-dasharray=\"%s\"", mgl_get_dash(P[i].style,P[i].w));
+ mgl_printf(fp, gz, " stroke-dashoffset=\"%g\"", P[i].s*P[i].w);
+ }
+ if(P[i].w>1) mgl_printf(fp, gz, " stroke-width=\"%g\"", P[i].w);
memcpy(cp,P[i].c,3*sizeof(mreal));
wp = P[i].w>1 ? P[i].w:1; st = P[i].style;
- put_line(fp,i,wp,cp,st, "><path d=\" M %g %g", " L %g %g", true);
- fprintf(fp,"\"/> </g>\n");
+ put_line(fp,gz,i,wp,cp,st, "><path d=\" M %g %g", " L %g %g", true);
+ mgl_printf(fp, gz, "\"/> </g>\n");
}
else if(P[i].type==4)
{
mreal ss = P[i].s/2, xx = P[i].x[1], yy = P[i].y[1];
if(P[i].style&8) // this is "line"
{
- fprintf(fp,"<g transform=\"translate(%g,%g) scale(%.3g,%.3g) rotate(%g)\"",
+ mgl_printf(fp, gz, "<g transform=\"translate(%g,%g) scale(%.3g,%.3g) rotate(%g)\"",
P[i].x[0], Height-P[i].y[0], ss, -ss, -P[i].w);
if(P[i].style&4)
- fprintf(fp," stroke=\"#%02x%02x%02x\">", int(255*P[i].c[0]),int(255*P[i].c[1]),int(255*P[i].c[2]));
+ mgl_printf(fp, gz, " stroke=\"#%02x%02x%02x\">", int(255*P[i].c[0]),int(255*P[i].c[1]),int(255*P[i].c[2]));
else
- fprintf(fp," fill=\"#%02x%02x%02x\">", int(255*P[i].c[0]),int(255*P[i].c[1]),int(255*P[i].c[2]));
+ mgl_printf(fp, gz, " fill=\"#%02x%02x%02x\">", int(255*P[i].c[0]),int(255*P[i].c[1]),int(255*P[i].c[2]));
mreal dy = 0.004,f=fabs(P[i].zz[1]);
- fprintf(fp,"<path d=\"M %g %g L %g %g L %g %g L %g %g\"/></g>\n",
+ mgl_printf(fp, gz, "<path d=\"M %g %g L %g %g L %g %g L %g %g\"/></g>\n",
xx,yy+dy, xx+f,yy+dy, xx+f,yy-dy, xx,yy-dy);
}
else
{
ss *= P[i].zz[1];
- fprintf(fp,"<g transform=\"translate(%g,%g) scale(%.3g,%.3g) rotate(%g)\"",
+ mgl_printf(fp, gz, "<g transform=\"translate(%g,%g) scale(%.3g,%.3g) rotate(%g)\"",
P[i].x[0], Height-P[i].y[0], ss, -ss, -P[i].w);
if(P[i].style&4)
- fprintf(fp," stroke=\"#%02x%02x%02x\">", int(255*P[i].c[0]),int(255*P[i].c[1]),int(255*P[i].c[2]));
+ mgl_printf(fp, gz, " stroke=\"#%02x%02x%02x\">", int(255*P[i].c[0]),int(255*P[i].c[1]),int(255*P[i].c[2]));
else
- fprintf(fp," fill=\"#%02x%02x%02x\">", int(255*P[i].c[0]),int(255*P[i].c[1]),int(255*P[i].c[2]));
- fprintf(fp,"<use x=\"%g\" y=\"%g\" xlink:href=\"#%c%c_%04x\"/></g>\n",
+ mgl_printf(fp, gz, " fill=\"#%02x%02x%02x\">", int(255*P[i].c[0]),int(255*P[i].c[1]),int(255*P[i].c[2]));
+ mgl_printf(fp, gz, "<use x=\"%g\" y=\"%g\" xlink:href=\"#%c%c_%04x\"/></g>\n",
xx/P[i].zz[1], yy/P[i].zz[1], P[i].style&1?'b':'n',
P[i].style&2?'i':'n', P[i].m);
}
@@ -590,8 +619,8 @@ void mglGraphPS::WriteSVG(const char *fname,const char *descr)
}
for(i=0;i<pNum;i++) if(P[i].type==-1) P[i].type = 1;
- fprintf(fp,"</g></svg>");
- fclose(fp);
+ mgl_printf(fp, gz, "</g></svg>");
+ if(gz) gzclose(fp); else fclose((FILE *)fp);
}
//-----------------------------------------------------------------------------
void mglGraphPS::Finish()
@@ -627,7 +656,8 @@ void mglGraphPS::draw_prim(mglPrim *pr, mreal *pp, mreal *c)
switch(pr->type)
{
case 0: mglGraphAB::mark_plot(pp,pr->m); break;
- case 1: mglGraphAB::line_plot(pp,pp+3,c,c); break;
+ case 1: PDef = pr->style; pPos = pr->s;
+ mglGraphAB::line_plot(pp,pp+3,c,c); break;
case 2: mglGraphAB::trig_plot(pp,pp+3,pp+6,c,c,c); break;
case 3: mglGraphAB::quad_plot(pp,pp+3,pp+6,pp+9,c,c,c,c); break;
case 4:
@@ -647,7 +677,7 @@ void mglGraphPS::pnt_plot(long x,long y, mreal, unsigned char c[4])
combine(G4+4*i0,c); OI[i0]=ObjId;
}
//-----------------------------------------------------------------------------
-void mglGraphPS::put_line(FILE *fp, long i, mreal wp, mreal *cp,int st, const char *ifmt, const char *nfmt, bool neg)
+void mglGraphPS::put_line(void *fp, bool gz, long i, mreal wp, mreal *cp,int st, const char *ifmt, const char *nfmt, bool neg)
{
long k = i,j; // first point
mreal x0=P[i].x[0], y0=P[i].y[0];
@@ -670,7 +700,7 @@ void mglGraphPS::put_line(FILE *fp, long i, mreal wp, mreal *cp,int st, const ch
}
}
for(j=i;j<pNum ;j++) if(P[j].type==-2) P[j].type = 1;
- fprintf(fp,ifmt,x0,neg?Height-y0:y0); ok=true;
+ mgl_printf(fp, gz, ifmt,x0,neg?Height-y0:y0); ok=true;
long m=1;
while(ok)
{
@@ -681,16 +711,16 @@ void mglGraphPS::put_line(FILE *fp, long i, mreal wp, mreal *cp,int st, const ch
{
k=j; P[k].type = -1;
x0 = P[k].x[1]; y0=P[k].y[1];
- fprintf(fp,nfmt,x0,neg?Height-y0:y0);
- if(m>10) { m=0; fprintf(fp,"\n"); }
+ mgl_printf(fp, gz, nfmt,x0,neg?Height-y0:y0);
+ if(m>10) { m=0; mgl_printf(fp, gz, "\n"); }
ok=true; m++;
}
else if(P[j].x[1]==x0 && P[j].y[1]==y0)
{
k=j; P[k].type = -1;
x0 = P[k].x[0]; y0=P[k].y[0];
- fprintf(fp,nfmt,x0,neg?Height-y0:y0);
- if(m>10) { m=0; fprintf(fp,"\n"); }
+ mgl_printf(fp, gz, nfmt,x0,neg?Height-y0:y0);
+ if(m>10) { m=0; mgl_printf(fp, gz, "\n"); }
ok=true; m++;
}
}
@@ -699,7 +729,7 @@ void mglGraphPS::put_line(FILE *fp, long i, mreal wp, mreal *cp,int st, const ch
//-----------------------------------------------------------------------------
//put_desc(fp,"%c%c%c_%04x {", "np %d %d mt %d %d ll %d %d ll cp fill\n",
//"np %d %d mt ", "%d %d ll ", "cp dr\n", "} def")
-void mglGraphPS::put_desc(FILE *fp, const char *pre, const char *ln1, const char *ln2, const char *ln3, const char *suf)
+void mglGraphPS::put_desc(void *fp, bool gz, const char *pre, const char *ln1, const char *ln2, const char *ln3, const char *suf)
{
register long i,j,n;
wchar_t *g;
@@ -716,7 +746,7 @@ void mglGraphPS::put_desc(FILE *fp, const char *pre, const char *ln1, const char
// have to describe
g[n]=P[i].m; s[n]=P[i].style&7; n++; // add to list of described
// "%c%c%c_%04x {"
- fprintf(fp,pre, P[i].style&1?'b':'n', P[i].style&2?'i':'n', P[i].m);
+ mgl_printf(fp, gz, pre, P[i].style&1?'b':'n', P[i].style&2?'i':'n', P[i].m);
long ik,ii;
int nl=fnt->GetNl(P[i].style&3,P[i].m);
const short *ln=fnt->GetLn(P[i].style&3,P[i].m);
@@ -725,12 +755,12 @@ void mglGraphPS::put_desc(FILE *fp, const char *pre, const char *ln1, const char
{
ii = 2*ik;
if(ln[ii]==0x3fff && ln[ii+1]==0x3fff) // line breakthrough
- { fprintf(fp,"%s",ln3); np=true; continue; }
- else if(np) fprintf(fp,ln1,ln[ii],ln[ii+1]);
- else fprintf(fp,ln2,ln[ii],ln[ii+1]);
+ { mgl_printf(fp, gz, "%s",ln3); np=true; continue; }
+ else if(np) mgl_printf(fp, gz, ln1,ln[ii],ln[ii+1]);
+ else mgl_printf(fp, gz, ln2,ln[ii],ln[ii+1]);
np=false;
}
- fprintf(fp,"%s%s",ln3,suf); // finish glyph description suf="} def"
+ mgl_printf(fp, gz, "%s%s",ln3,suf); // finish glyph description suf="} def"
}
delete []g; delete []s;
}
diff --git a/mgl/mgl_eval.cpp b/mgl/mgl_eval.cpp
index 7f7ebb3..0170cdb 100644
--- a/mgl/mgl_eval.cpp
+++ b/mgl/mgl_eval.cpp
@@ -23,6 +23,7 @@
#include <string.h>
#ifndef NO_GSL
#include <gsl/gsl_sf.h>
+#include <gsl/gsl_rng.h>
#include <gsl/gsl_errno.h>
#endif
#include "mgl/mgl_eval.h"
@@ -75,6 +76,7 @@ EQ_LN, // logarithm of x, ln(x)
EQ_LG, // decimal logarithm of x, lg(x) = ln(x)/ln(10)
EQ_SIGN, // sign of number
EQ_STEP, // step function
+EQ_INT, // integer part [x]
EQ_ABS, // absolute value of x
// special functions of 1 argument
EQ_LI2, // dilogarithm for a real argument Li2(x) = - \Re \int_0^x ds \log(1-s)/s.
@@ -118,63 +120,38 @@ EQ_EN,
EQ_CL, // Clausen function
};
//-----------------------------------------------------------------------------
-#define IM1 2147483563
-#define IM2 2147483399
-#define AM (1.0/IM1)
-#define IA1 40014
-#define IA2 40692
-#define IQ1 53668
-#define IQ2 52774
-#define IR1 12211
-#define IR2 3791
-#define NTAB 32
-#define NDIV (1+(IM1-1)/NTAB)
-#define RNMX (1.0 - 1.2e-7)
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
//-----------------------------------------------------------------------------
-static long mgl_idum=0;
-void mgl_srnd(long seed) { mgl_idum = -abs(seed); }
-//-----------------------------------------------------------------------------
+gsl_rng *mgl_rng=0;
+void mgl_srnd(long seed)
+{
+#ifndef NO_GSL
+ if(mgl_rng==0)
+ {
+ gsl_rng_env_setup();
+ mgl_rng = gsl_rng_alloc(gsl_rng_default);
+ }
+ gsl_rng_set(mgl_rng, seed);
+#else
+ srand(seed);
+#endif
+}
double mgl_rnd()
{
- long &idum=mgl_idum;
- long j;
- long k;
- static long idum2=123456789;
- static long iy=0;
- static long iv[NTAB];
- double temp;
- if(mgl_idum==0)
- mgl_idum = -(long)(time(NULL));
- if (mgl_idum <= 0) { // Initialize.
- if (-(idum) < 1) idum=1; // Be sure to prevent idum = 0.
- else idum = -(idum);
- idum2=(idum);
- for (j=NTAB+7;j>=0;j--) { // Load the shuffle table (after 8 warm-ups).
- k=(idum)/IQ1;
- idum=IA1*(idum-k*IQ1)-k*IR1;
- if (idum < 0) idum += IM1;
- if (j < NTAB) iv[j] = idum;
- }
- iy=iv[0];
+#ifndef NO_GSL
+ if(mgl_rng==0)
+ {
+ gsl_rng_env_setup();
+ mgl_rng = gsl_rng_alloc(gsl_rng_default);
+ gsl_rng_set(mgl_rng, time(0));
}
- k=(idum)/IQ1; // Start here when not initializing.
- idum=IA1*(idum-k*IQ1)-k*IR1; // Compute idum=(IA1*idum) % IM1 without
- // over ows by Schrage's method.
- if (idum < 0) idum += IM1;
- k=idum2/IQ2;
- idum2=IA2*(idum2-k*IQ2)-k*IR2; // Compute idum2=(IA2*idum) % IM2 likewise.
- if (idum2 < 0) idum2 += IM2;
- j=iy/NDIV; // Will be in the range 0..NTAB-1.
- iy=iv[j]-idum2; // Here idum is shufted, idum and idum2 are
- // combined to generate output.
- iv[j] = idum;
- if (iy < 1) iy += IM1-1;
- if ((temp=AM*iy) > RNMX) // Because users don't expect endpoint values.
- return RNMX;
- else return temp;
+ return gsl_rng_uniform(mgl_rng);
+// gsl_rng_free(r);
+#else
+ return rand()/(RND_MAX-1.);
+#endif
}
//-----------------------------------------------------------------------------
double mgl_ipow(double x,int n);
@@ -405,6 +382,7 @@ mglFormula::mglFormula(const char *string)
else if(!strcmp(name,"pow")) Kod=EQ_POW;
else if(!strcmp(name,"mod")) Kod=EQ_MOD;
else if(!strcmp(name,"i")) Kod=EQ_BESI;
+ else if(!strcmp(name,"int")) Kod=EQ_INT;
else if(!strcmp(name,"j")) Kod=EQ_BESJ;
else if(!strcmp(name,"k")) Kod=EQ_BESK;
else if(!strcmp(name,"y")) Kod=EQ_BESY;
@@ -518,8 +496,8 @@ mreal mglFormula::CalcIn(const mreal *a1) const
,mgz2,mgz2,mgz2,mgz2,mgz2,mgz2,mgz2,mgz2
#endif
};
- func_1 f1[41] = {sin,cos,tan,asin,acos,atan,sinh,cosh,tanh,
- asinh,acosh,atanh,sqrt,exp,log,log10,sgn,stp,fabs
+ func_1 f1[42] = {sin,cos,tan,asin,acos,atan,sinh,cosh,tanh,
+ asinh,acosh,atanh,sqrt,exp,log,log10,sgn,stp,floor,fabs
#ifndef NO_GSL
,gsl_sf_dilog,gslEllEc,gslEllFc,gslAi,gslBi,gsl_sf_erf,
gsl_sf_expint_3,gsl_sf_expint_Ei,gsl_sf_expint_E1,gsl_sf_expint_E2,
@@ -644,8 +622,8 @@ mreal mglFormula::CalcDIn(int id, const mreal *a1) const
,mgz2,mgz2,mgz2,mgz2,mgz2,mgz2,mgz2,mgz2
#endif
};
- func_1 f11[41] = {cos,cos_d,tan_d,asin_d,acos_d,atan_d,cosh,sinh,tanh_d,
- asinh_d,acosh_d,atanh_d,sqrt_d,exp,log_d,log10_d,mgz1,mgz1,sgn
+ func_1 f11[42] = {cos,cos_d,tan_d,asin_d,acos_d,atan_d,cosh,sinh,tanh_d,
+ asinh_d,acosh_d,atanh_d,sqrt_d,exp,log_d,log10_d,mgz1,mgz1,mgz1,sgn
#ifndef NO_GSL
,dilog_d,gslE_d,gslK_d,gslAi_d,gslBi_d,erf_d,exp3_d,ei_d,e1_d,e2_d,
si_d,ci_d,gamma_d,gsl_sf_psi_1,mgz1,mgz1,sinc_d,mgz1,mgz1,mgz1,mgz1,mgz1
diff --git a/mgl/mgl_evalp.cpp b/mgl/mgl_evalp.cpp
index b045fa6..0aa536b 100644
--- a/mgl/mgl_evalp.cpp
+++ b/mgl/mgl_evalp.cpp
@@ -126,6 +126,48 @@ mglData mglFormulaCalc(const wchar_t *string, mglParse *arg)
wcscpy(str,Buf);
}
len=wcslen(str);
+ if(str[0]=='[') // this is manual subdata
+ {
+ mglData a1;
+ long i, j, br=0,k;
+ bool ar=true,mt=false;
+ for(i=1,j=1;i<len-1;i++)
+ {
+ if(str[i]=='[') br++;
+ if(str[i]==']' && br>0) br--;
+ if(str[i]==',' && !br)
+ {
+ wcscpy(Buf,str+j); Buf[i-j]=0;
+ a1=mglFormulaCalc(Buf, arg);
+ if(j==1)
+ { res = a1; ar = (a1.nx==1); mt = (a1.nx>1 && a1.ny==1); }
+ else
+ {
+ if(ar) // res 1d array
+ { k = res.nx; res.InsertColumns(k); res.Put(a1,k); }
+ else if(mt) // res 2d array
+ { k = res.ny; res.InsertRows(k); res.Put(a1,-1,k); }
+ else // res 3d array
+ { k = res.nz; res.InsertSlices(k); res.Put(a1,-1,-1,k); }
+ }
+ j=i+1;
+ }
+ }
+ wcscpy(Buf,str+j); Buf[i-j]=0;
+ a1=mglFormulaCalc(Buf, arg);
+ if(j==1)
+ { res = a1; ar = (a1.nx==1); mt = (a1.nx>1 && a1.ny==1); }
+ else
+ {
+ if(ar) // res 1d array
+ { k = res.nx; res.InsertColumns(k); res.Put(a1,k); }
+ else if(mt) // res 2d array
+ { k = res.ny; res.InsertRows(k); res.Put(a1,-1,k); }
+ else // res 3d array
+ { k = res.nz; res.InsertSlices(k); res.Put(a1,-1,-1,k); }
+ }
+ return res;
+ }
n=mglFindInText(str,"&|"); // lowest priority -- logical
if(n>=0)
@@ -514,6 +556,9 @@ mglData mglFormulaCalc(const wchar_t *string, mglParse *arg)
else
{ Buf[n]=0; res = mglApplyOper(Buf,Buf+n+1,arg, fmod); }
}
+ else if(!wcscmp(name+1,L"int"))
+ { res=mglFormulaCalc(Buf, arg);
+ for(i=0;i<res.nx*res.ny*res.nz;i++) res.a[i] = floor(res.a[i]); }
#ifndef NO_GSL
else if(!wcscmp(name,L"i"))
{
diff --git a/mgl/mgl_exec.cpp b/mgl/mgl_exec.cpp
index bda95a6..f0b9c4c 100644
--- a/mgl/mgl_exec.cpp
+++ b/mgl/mgl_exec.cpp
@@ -26,7 +26,7 @@
#endif
#include "mgl/mgl_parse.h"
-
+#define iint(x) floor((x)+0.5)
char *mgl_strdup(const char *s);
wchar_t *mgl_str_copy(const char *s);
//-----------------------------------------------------------------------------
@@ -82,8 +82,8 @@ void mglc_ambient(wchar_t out[1024], long , mglArg *a, int k[10])
int mgls_area(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]!=1) return 1;
- else if(k[1]!=1) gr->Area(*(a[0].d),k[1]==2?a[1].s:0,false,k[2]==3 ? a[2].v : NAN);
- else if(k[2]!=1) gr->Area(*(a[0].d),*(a[1].d),k[2]==2?a[2].s:0,false,k[3]==3 ? a[3].v : NAN);
+ else if(k[1]!=1) gr->Area(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3 ? a[2].v : NAN);
+ else if(k[2]!=1) gr->Area(*(a[0].d),*(a[1].d),k[2]==2?a[2].s:0,k[3]==3 ? a[3].v : NAN);
else gr->Area(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s:0);
return 0;
}
@@ -91,9 +91,9 @@ void mglc_area(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]!=1) return;
else if(k[1]!=1)
- mglprintf(out,1024,L"gr->Area(%s, \"%s\", false, %g);",a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN);
+ mglprintf(out,1024,L"gr->Area(%s, \"%s\", %g);",a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN);
else if(k[2]!=1)
- mglprintf(out,1024,L"gr->Area(%s, %s, \"%s\", false, %g);", a[0].s, a[1].s, k[2]==2?a[2].s:"", k[3]==3?a[3].v:NAN);
+ mglprintf(out,1024,L"gr->Area(%s, %s, \"%s\", %g);", a[0].s, a[1].s, k[2]==2?a[2].s:"", k[3]==3?a[3].v:NAN);
else mglprintf(out,1024,L"gr->Area(%s, %s, %s, \"%s\");", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"");
}
//-----------------------------------------------------------------------------
@@ -112,9 +112,9 @@ void mglc_aspect(wchar_t out[1024], long , mglArg *a, int k[10])
int mgls_axial(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]!=1) return 1;
- else if(k[1]!=1) gr->Axial(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3 ? int(a[2].v) : 3);
+ else if(k[1]!=1) gr->Axial(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3 ? iint(a[2].v) : 3);
else if(k[1]==1 && k[2]==1)
- gr->Axial(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s:0,k[4]==3 ? int(a[4].v) : 3);
+ gr->Axial(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s:0,k[4]==3 ? iint(a[4].v) : 3);
else return 1;
return 0;
}
@@ -122,9 +122,9 @@ void mglc_axial(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]!=1) return;
else if(k[1]!=1)
- mglprintf(out,1024,L"gr->Axial(%s, \"%s\", %d);", a[0].s,k[1]==2?a[1].s:"",k[2]==3 ? int(a[2].v) : 3);
+ mglprintf(out,1024,L"gr->Axial(%s, \"%s\", %d);", a[0].s,k[1]==2?a[1].s:"",k[2]==3 ? iint(a[2].v) : 3);
else if(k[1]==1 && k[2]==1)
- mglprintf(out,1024,L"gr->Axial(%s, %s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"", k[4]==3?int(a[4].v):3);
+ mglprintf(out,1024,L"gr->Axial(%s, %s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"", k[4]==3?iint(a[4].v):3);
}
//-----------------------------------------------------------------------------
int mgls_axialdir(mglGraph *gr, long , mglArg *a, int k[10])
@@ -154,7 +154,7 @@ int mgls_axis(mglGraph *gr, long n, mglArg *a, int k[10])
else return 1;
}
else if(k[0]==2) gr->Axis(a[0].s, k[1]==3 && a[1].v!=0);
- else if(k[0]==3) gr->SetCoor(int(a[0].v));
+ else if(k[0]==3) gr->SetCoor(iint(a[0].v));
else if(k[0]==0) gr->Axis("xyz");
else return 1;
return 0;
@@ -177,7 +177,7 @@ void mglc_axis(wchar_t out[1024], long n, mglArg *a, int k[10])
if(ok) mglprintf(out,1024,L"gr->Axis(mglPoint(%g, %g), mglPoint(%g, %g));", a[0].v,a[1].v,a[2].v,a[3].v);
}
else if(k[0]==2) mglprintf(out,1024,L"gr->Axis(\"%s\");", a[0].s);
- else if(k[0]==3) mglprintf(out,1024,L"gr->SetCoor(\"%d\");", int(a[0].v));
+ else if(k[0]==3) mglprintf(out,1024,L"gr->SetCoor(\"%d\");", iint(a[0].v));
else if(k[0]==0) mglprintf(out,1024,L"gr->Axis(\"xyz\");");
}
//-----------------------------------------------------------------------------
@@ -209,38 +209,38 @@ void mglc_box(wchar_t out[1024], long , mglArg *a, int k[10])
int mgls_bars(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]!=1) return 1;
- else if(k[1]!=1) gr->Bars(*(a[0].d), k[1]==2?a[1].s:0, k[2]==3?a[2].v:NAN, k[3]==3?(a[3].v!=0):false);
- else if(k[2]!=1) gr->Bars(*(a[0].d), *(a[1].d), k[2]==2?a[2].s:0, k[3]==3?a[3].v:NAN, k[4]==3?(a[4].v!=0):false);
- else gr->Bars(*(a[0].d), *(a[1].d), *(a[2].d), k[3]==2?a[3].s:0, k[4]==3?(a[4].v!=0):false);
+ else if(k[1]!=1) gr->Bars(*(a[0].d), k[1]==2?a[1].s:0, k[2]==3?a[2].v:NAN);
+ else if(k[2]!=1) gr->Bars(*(a[0].d), *(a[1].d), k[2]==2?a[2].s:0, k[3]==3?a[3].v:NAN);
+ else gr->Bars(*(a[0].d), *(a[1].d), *(a[2].d), k[3]==2?a[3].s:0);
return 0;
}
void mglc_bars(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]!=1) return;
else if(k[1]!=1)
- mglprintf(out,1024,L"gr->Bars(%s, \"%s\", %g, %s);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN, (k[3]==3&&a[3].v!=0)?"true":"false");
+ mglprintf(out,1024,L"gr->Bars(%s, \"%s\", %g);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN);
else if(k[2]!=1)
- mglprintf(out,1024,L"gr->Bars(%s, %s, \"%s\", %g, %s);",a[0].s, a[1].s, k[2]==2?a[2].s:"", k[3]==3?a[3].v:NAN, (k[4]==3&&a[4].v!=0)?"true":"false");
+ mglprintf(out,1024,L"gr->Bars(%s, %s, \"%s\", %g);",a[0].s, a[1].s, k[2]==2?a[2].s:"", k[3]==3?a[3].v:NAN);
else
- mglprintf(out,1024,L"gr->Bars(%s, %s, %s, \"%s\", %s);",a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"", (k[4]==3&&a[4].v!=0)?"true":"false");
+ mglprintf(out,1024,L"gr->Bars(%s, %s, %s, \"%s\");",a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"");
}
//-----------------------------------------------------------------------------
int mgls_barh(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]!=1) return 1;
else if(k[1]!=1)
- gr->Barh(*(a[0].d), k[1]==2?a[1].s:0, k[2]==3?a[2].v:NAN, k[3]==3?(a[3].v!=0):false);
+ gr->Barh(*(a[0].d), k[1]==2?a[1].s:0, k[2]==3?a[2].v:NAN);
else
- gr->Barh(*(a[0].d), *(a[1].d), k[2]==2?a[2].s:0, k[3]==3?a[3].v:NAN, k[4]==3?(a[4].v!=0):false);
+ gr->Barh(*(a[0].d), *(a[1].d), k[2]==2?a[2].s:0, k[3]==3?a[3].v:NAN);
return 0;
}
void mglc_barh(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]!=1) return;
else if(k[1]!=1)
- mglprintf(out,1024,L"gr->Barh(%s, \"%s\", %g, %s);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN, (k[3]==3&&a[3].v!=0)?"true":"false");
+ mglprintf(out,1024,L"gr->Barh(%s, \"%s\", %g);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN);
else
- mglprintf(out,1024,L"gr->Barh(%s, %s, \"%s\", %g, %s);",a[0].s, a[1].s, k[2]==2?a[2].s:"", k[3]==3?a[3].v:NAN, (k[4]==3&&a[4].v!=0)?"true":"false");
+ mglprintf(out,1024,L"gr->Barh(%s, %s, \"%s\", %g);",a[0].s, a[1].s, k[2]==2?a[2].s:"", k[3]==3?a[3].v:NAN);
}
//-----------------------------------------------------------------------------
int mgls_belt(mglGraph *gr, long , mglArg *a, int k[10])
@@ -281,14 +281,14 @@ int mgls_beam(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==3)
gr->Beam(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].v,
- k[5]==2? a[5].s:0,k[6]==3?int(a[6].v):0, int(k[7]==3?a[7].v:3));
+ k[5]==2? a[5].s:0,k[6]==3?iint(a[6].v):0, iint(k[7]==3?a[7].v:3));
else return 1;
return 0;
}
void mglc_beam(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==3)
- mglprintf(out,1024,L"gr->Beam(%s, %s, %s, %s, %g, \"%s\", %d, %d);", a[0].s, a[1].s, a[2].s, a[3].s, a[4].v, k[5]==2? a[5].s:"",k[6]==3?int(a[6].v):0, int(k[7]==3?a[7].v:3));
+ mglprintf(out,1024,L"gr->Beam(%s, %s, %s, %s, %g, \"%s\", %d, %d);", a[0].s, a[1].s, a[2].s, a[3].s, a[4].v, k[5]==2? a[5].s:"",k[6]==3?iint(a[6].v):0, iint(k[7]==3?a[7].v:3));
}
//-----------------------------------------------------------------------------
int mgls_caxis(mglGraph *gr, long , mglArg *a, int k[10])
@@ -358,14 +358,14 @@ void mglc_crange(wchar_t out[1024], long , mglArg *a, int k[10])
int mgls_crop(mglGraph *, long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==3 && k[2]==3 && k[3]==2)
- a[0].d->Crop(int(a[1].v),int(a[2].v),a[3].s[0]);
+ a[0].d->Crop(iint(a[1].v),iint(a[2].v),a[3].s[0]);
else return 1;
return 0;
}
void mglc_crop(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==3 && k[2]==3 && k[3]==2)
- mglprintf(out,1024,L"%s.Crop(%d, %d, '%c');",a[0].s, int(a[1].v), int(a[2].v), a[3].s[0]);
+ mglprintf(out,1024,L"%s.Crop(%d, %d, '%c');",a[0].s, iint(a[1].v), iint(a[2].v), a[3].s[0]);
}
//-----------------------------------------------------------------------------
int mgls_cumsum(mglGraph *, long , mglArg *a, int k[10])
@@ -446,19 +446,19 @@ void mglc_crust(wchar_t out[1024], long , mglArg *a, int k[10])
int mgls_colorbar(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]==2 && k[1]==3 && k[2]==3 && k[3]==3 && k[4]==3 && k[5]==3)
- gr->Colorbar(a[0].s, int(a[1].v), a[2].v, a[3].v, a[4].v, a[5].v);
- else if(k[0]==1) gr->Colorbar(*(a[0].d), k[1]==2 ? a[1].s:0, k[2]==3 ? int(a[2].v):0);
- else gr->Colorbar(k[0]==2 ? a[0].s:0, k[1]==3 ? int(a[1].v):0);
+ gr->Colorbar(a[0].s, iint(a[1].v), a[2].v, a[3].v, a[4].v, a[5].v);
+ else if(k[0]==1) gr->Colorbar(*(a[0].d), k[1]==2 ? a[1].s:0, k[2]==3 ? iint(a[2].v):0);
+ else gr->Colorbar(k[0]==2 ? a[0].s:0, k[1]==3 ? iint(a[1].v):0);
return 0;
}
void mglc_colorbar(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==2 && k[1]==3 && k[2]==3 && k[3]==3 && k[4]==3 && k[5]==3)
- mglprintf(out,1024,L"gr->Colorbar(\"%s\", %d, %g, %g, %g, %g);",a[0].s, int(a[1].v), a[2].v, a[3].v, a[4].v, a[5].v);
+ mglprintf(out,1024,L"gr->Colorbar(\"%s\", %d, %g, %g, %g, %g);",a[0].s, iint(a[1].v), a[2].v, a[3].v, a[4].v, a[5].v);
else if(k[0]==1)
- mglprintf(out,1024,L"gr->Colorbar(%s, \"%s\", %d);",a[0].s, k[1]==2 ? a[1].s:"", k[2]==3 ? int(a[2].v):0);
+ mglprintf(out,1024,L"gr->Colorbar(%s, \"%s\", %d);",a[0].s, k[1]==2 ? a[1].s:"", k[2]==3 ? iint(a[2].v):0);
else
- mglprintf(out,1024,L"gr->Colorbar(\"%s\", %d);",k[0]==2 ? a[0].s:"", k[1]==3 ? int(a[1].v):0);
+ mglprintf(out,1024,L"gr->Colorbar(\"%s\", %d);",k[0]==2 ? a[0].s:"", k[1]==3 ? iint(a[1].v):0);
}
//-----------------------------------------------------------------------------
int mgls_copy(mglGraph *gr, long , mglArg *a, int k[10])
@@ -493,12 +493,12 @@ void mglc_copy(wchar_t out[1024], long , mglArg *a, int k[10])
int mgls_cont(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]!=1) return 1;
- else if(k[1]!=1) gr->Cont(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?int(a[2].v):7,k[3]==3?a[3].v:NAN);
+ else if(k[1]!=1) gr->Cont(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?iint(a[2].v):7,k[3]==3?a[3].v:NAN);
else if(k[1]==1 && k[2]!=1)
gr->Cont(*(a[0].d), *(a[1].d), k[2]==2?a[2].s:0,k[3]==3?a[3].v:NAN);
else if(k[1]==1 && k[2]==1 && k[3]!=1)
gr->Cont(*(a[0].d), *(a[1].d), *(a[2].d), k[3]==2?a[3].s:0,
- k[4]==3?int(a[4].v):7, k[5]==3?a[5].v:NAN);
+ k[4]==3?iint(a[4].v):7, k[5]==3?a[5].v:NAN);
else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]!=1)
gr->Cont(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), k[4]==2?a[4].s:0,
k[5]==3?a[5].v:NAN);
@@ -509,11 +509,11 @@ void mglc_cont(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]!=1) return;
else if(k[1]!=1)
- mglprintf(out,1024,L"gr->Cont(%s, \"%s\", %d, %g);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?int(a[2].v):7, k[3]==3?a[3].v:NAN);
+ mglprintf(out,1024,L"gr->Cont(%s, \"%s\", %d, %g);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?iint(a[2].v):7, k[3]==3?a[3].v:NAN);
else if(k[1]==1 && k[2]!=1)
mglprintf(out,1024,L"gr->Cont(%s, %s, \"%s\", %g);", a[0].s, a[1].s, k[2]==2?a[2].s:"", k[3]==3?a[3].v:NAN);
else if(k[1]==1 && k[2]==1 && k[3]!=1)
- mglprintf(out,1024,L"gr->Cont(%s, %s, %s, \"%s\", %d, %g);", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"", k[4]==3?int(a[4].v):7, k[5]==3?a[5].v:NAN);
+ mglprintf(out,1024,L"gr->Cont(%s, %s, %s, \"%s\", %d, %g);", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"", k[4]==3?iint(a[4].v):7, k[5]==3?a[5].v:NAN);
else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]!=1)
mglprintf(out,1024,L"gr->Cont(%s, %s, %s, %s, \"%s\", %g);", a[0].s, a[1].s, a[2].s, a[3].s, k[4]==2?a[4].s:"", k[5]==3?a[5].v:NAN);
}
@@ -522,12 +522,12 @@ int mgls_contf(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]!=1) return 1;
else if(k[1]!=1)
- gr->ContF(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?int(a[2].v):7,k[3]==3?a[3].v:NAN);
+ gr->ContF(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?iint(a[2].v):7,k[3]==3?a[3].v:NAN);
else if(k[1]==1 && k[2]!=1)
gr->ContF(*(a[0].d), *(a[1].d), k[2]==2?a[2].s:0,k[3]==3?a[3].v:NAN);
else if(k[1]==1 && k[2]==1 && k[3]!=1)
gr->ContF(*(a[0].d), *(a[1].d), *(a[2].d), k[3]==2?a[3].s:0,
- k[4]==3?int(a[4].v):7, k[5]==3?a[5].v:NAN);
+ k[4]==3?iint(a[4].v):7, k[5]==3?a[5].v:NAN);
else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]!=1)
gr->ContF(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), k[4]==2?a[4].s:0,
k[5]==3?a[5].v:NAN);
@@ -538,11 +538,11 @@ void mglc_contf(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]!=1) return;
else if(k[1]!=1)
- mglprintf(out,1024,L"gr->ContF(%s, \"%s\", %d, %g);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?int(a[2].v):7, k[3]==3?a[3].v:NAN);
+ mglprintf(out,1024,L"gr->ContF(%s, \"%s\", %d, %g);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?iint(a[2].v):7, k[3]==3?a[3].v:NAN);
else if(k[1]==1 && k[2]!=1)
mglprintf(out,1024,L"gr->ContF(%s, %s, \"%s\", %g);", a[0].s, a[1].s, k[2]==2?a[2].s:"", k[3]==3?a[3].v:NAN);
else if(k[1]==1 && k[2]==1 && k[3]!=1)
- mglprintf(out,1024,L"gr->ContF(%s, %s, %s, \"%s\", %d, %g);", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"", k[4]==3?int(a[4].v):7, k[5]==3?a[5].v:NAN);
+ mglprintf(out,1024,L"gr->ContF(%s, %s, %s, \"%s\", %d, %g);", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"", k[4]==3?iint(a[4].v):7, k[5]==3?a[5].v:NAN);
else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]!=1)
mglprintf(out,1024,L"gr->ContF(%s, %s, %s, %s, \"%s\", %g);", a[0].s, a[1].s, a[2].s, a[3].s, k[4]==2?a[4].s:"", k[5]==3?a[5].v:NAN);
}
@@ -551,12 +551,12 @@ int mgls_contd(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]!=1) return 1;
else if(k[1]!=1)
- gr->ContD(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?int(a[2].v):7,k[3]==3?a[3].v:NAN);
+ gr->ContD(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?iint(a[2].v):7,k[3]==3?a[3].v:NAN);
else if(k[1]==1 && k[2]!=1)
gr->ContD(*(a[0].d), *(a[1].d), k[2]==2?a[2].s:0,k[3]==3?a[3].v:NAN);
else if(k[1]==1 && k[2]==1 && k[3]!=1)
gr->ContD(*(a[0].d), *(a[1].d), *(a[2].d), k[3]==2?a[3].s:0,
- k[4]==3?int(a[4].v):7, k[5]==3?a[5].v:NAN);
+ k[4]==3?iint(a[4].v):7, k[5]==3?a[5].v:NAN);
else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]!=1)
gr->ContD(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), k[4]==2?a[4].s:0,
k[5]==3?a[5].v:NAN);
@@ -567,11 +567,11 @@ void mglc_contd(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]!=1) return;
else if(k[1]!=1)
- mglprintf(out,1024,L"gr->ContD(%s, \"%s\", %d, %g);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?int(a[2].v):7, k[3]==3?a[3].v:NAN);
+ mglprintf(out,1024,L"gr->ContD(%s, \"%s\", %d, %g);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?iint(a[2].v):7, k[3]==3?a[3].v:NAN);
else if(k[1]==1 && k[2]!=1)
mglprintf(out,1024,L"gr->ContD(%s, %s, \"%s\", %g);", a[0].s, a[1].s, k[2]==2?a[2].s:"", k[3]==3?a[3].v:NAN);
else if(k[1]==1 && k[2]==1 && k[3]!=1)
- mglprintf(out,1024,L"gr->ContD(%s, %s, %s, \"%s\", %d, %g);", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"", k[4]==3?int(a[4].v):7, k[5]==3?a[5].v:NAN);
+ mglprintf(out,1024,L"gr->ContD(%s, %s, %s, \"%s\", %d, %g);", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"", k[4]==3?iint(a[4].v):7, k[5]==3?a[5].v:NAN);
else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]!=1)
mglprintf(out,1024,L"gr->ContD(%s, %s, %s, %s, \"%s\", %g);", a[0].s, a[1].s, a[2].s, a[3].s, k[4]==2?a[4].s:"", k[5]==3?a[5].v:NAN);
}
@@ -580,13 +580,13 @@ int mgls_cont3(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]!=1) return 1;
else if(k[1]==2)
- gr->Cont3(*(a[0].d), a[1].s[0], k[2]==3?int(a[2].v):-1, k[3]==2?a[3].s:0, k[4]==3?int(a[4].v):7);
+ gr->Cont3(*(a[0].d), a[1].s[0], k[2]==3?iint(a[2].v):-1, k[3]==2?a[3].s:0, k[4]==3?iint(a[4].v):7);
else if(k[1]==1 && k[2]==2)
- gr->Cont3(*(a[0].d), *(a[1].d), a[2].s[0], k[3]==3?int(a[3].v):-1, k[4]==2?a[4].s:0);
+ gr->Cont3(*(a[0].d), *(a[1].d), a[2].s[0], k[3]==3?iint(a[3].v):-1, k[4]==2?a[4].s:0);
else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]==2)
- gr->Cont3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s[0], k[5]==3?int(a[5].v):-1, k[6]==2?a[6].s:0, k[7]==3?int(a[7].v):7);
+ gr->Cont3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s[0], k[5]==3?iint(a[5].v):-1, k[6]==2?a[6].s:0, k[7]==3?iint(a[7].v):7);
else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1 && k[5]==2)
- gr->Cont3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s[0], k[6]==3?int(a[6].v):-1, k[7]==2?a[7].s:0);
+ gr->Cont3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s[0], k[6]==3?iint(a[6].v):-1, k[7]==2?a[7].s:0);
else return 1;
return 0;
}
@@ -594,26 +594,26 @@ void mglc_cont3(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]!=1) return;
else if(k[1]==2)
- mglprintf(out,1024,L"gr->Cont3(%s, '%c', %d, \"%s\", %d);", a[0].s, a[1].s[0], k[2]==3?int(a[2].v):-1, k[3]==2?a[3].s:"", k[4]==3?int(a[4].v):7);
+ mglprintf(out,1024,L"gr->Cont3(%s, '%c', %d, \"%s\", %d);", a[0].s, a[1].s[0], k[2]==3?iint(a[2].v):-1, k[3]==2?a[3].s:"", k[4]==3?iint(a[4].v):7);
else if(k[1]==1 && k[2]==2)
- mglprintf(out,1024,L"gr->Cont3(%s, %s, '%c', %d, \"%s\");", a[0].s, a[1].s, a[2].s[0], k[3]==3?int(a[3].v):-1, k[4]==2?a[4].s:"");
+ mglprintf(out,1024,L"gr->Cont3(%s, %s, '%c', %d, \"%s\");", a[0].s, a[1].s, a[2].s[0], k[3]==3?iint(a[3].v):-1, k[4]==2?a[4].s:"");
else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]==2)
- mglprintf(out,1024,L"gr->Cont3(%s, %s, %s, %s, '%c', %d, \"%s\", %d);", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s[0], k[5]==3?int(a[5].v):-1, k[6]==2?a[6].s:0, k[7]==3?int(a[7].v):7);
+ mglprintf(out,1024,L"gr->Cont3(%s, %s, %s, %s, '%c', %d, \"%s\", %d);", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s[0], k[5]==3?iint(a[5].v):-1, k[6]==2?a[6].s:0, k[7]==3?iint(a[7].v):7);
else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1 && k[5]==2)
- mglprintf(out,1024,L"gr->Cont3(%s, %s, %s, %s, %s, '%c', %d, \"%s\");", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s, a[5].s[0], k[6]==3?int(a[6].v):-1, k[7]==2?a[7].s:0);
+ mglprintf(out,1024,L"gr->Cont3(%s, %s, %s, %s, %s, '%c', %d, \"%s\");", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s, a[5].s[0], k[6]==3?iint(a[6].v):-1, k[7]==2?a[7].s:0);
}
//-----------------------------------------------------------------------------
int mgls_contf3(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]!=1) return 1;
else if(k[1]==2)
- gr->ContF3(*(a[0].d), a[1].s[0], k[2]==3?int(a[2].v):-1, k[3]==2?a[3].s:0, k[4]==3?int(a[4].v):7);
+ gr->ContF3(*(a[0].d), a[1].s[0], k[2]==3?iint(a[2].v):-1, k[3]==2?a[3].s:0, k[4]==3?iint(a[4].v):7);
else if(k[1]==1 && k[2]==2)
- gr->ContF3(*(a[0].d), *(a[1].d), a[2].s[0], k[3]==3?int(a[3].v):-1, k[4]==2?a[4].s:0);
+ gr->ContF3(*(a[0].d), *(a[1].d), a[2].s[0], k[3]==3?iint(a[3].v):-1, k[4]==2?a[4].s:0);
else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]==2)
- gr->ContF3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s[0], k[5]==3?int(a[5].v):-1, k[6]==2?a[6].s:0, k[7]==3?int(a[7].v):7);
+ gr->ContF3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), a[4].s[0], k[5]==3?iint(a[5].v):-1, k[6]==2?a[6].s:0, k[7]==3?iint(a[7].v):7);
else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1 && k[5]==2)
- gr->ContF3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s[0], k[6]==3?int(a[6].v):-1, k[7]==2?a[7].s:0);
+ gr->ContF3(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d), a[5].s[0], k[6]==3?iint(a[6].v):-1, k[7]==2?a[7].s:0);
else return 1;
return 0;
}
@@ -621,30 +621,30 @@ void mglc_contf3(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]!=1) return;
else if(k[1]==2)
- mglprintf(out,1024,L"gr->ContF3(%s, '%c', %d, \"%s\", %d);", a[0].s, a[1].s[0], k[2]==3?int(a[2].v):-1, k[3]==2?a[3].s:"", k[4]==3?int(a[4].v):7);
+ mglprintf(out,1024,L"gr->ContF3(%s, '%c', %d, \"%s\", %d);", a[0].s, a[1].s[0], k[2]==3?iint(a[2].v):-1, k[3]==2?a[3].s:"", k[4]==3?iint(a[4].v):7);
else if(k[1]==1 && k[2]==2)
- mglprintf(out,1024,L"gr->ContF3(%s, %s, '%c', %d, \"%s\");", a[0].s, a[1].s, a[2].s[0], k[3]==3?int(a[3].v):-1, k[4]==2?a[4].s:"");
+ mglprintf(out,1024,L"gr->ContF3(%s, %s, '%c', %d, \"%s\");", a[0].s, a[1].s, a[2].s[0], k[3]==3?iint(a[3].v):-1, k[4]==2?a[4].s:"");
else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]==2)
- mglprintf(out,1024,L"gr->ContF3(%s, %s, %s, %s, '%c', %d, \"%s\", %d);", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s[0], k[5]==3?int(a[5].v):-1, k[6]==2?a[6].s:0, k[7]==3?int(a[7].v):7);
+ mglprintf(out,1024,L"gr->ContF3(%s, %s, %s, %s, '%c', %d, \"%s\", %d);", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s[0], k[5]==3?iint(a[5].v):-1, k[6]==2?a[6].s:0, k[7]==3?iint(a[7].v):7);
else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1 && k[5]==2)
- mglprintf(out,1024,L"gr->ContF3(%s, %s, %s, %s, %s, '%c', %d, \"%s\");", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s, a[5].s[0], k[6]==3?int(a[6].v):-1, k[7]==2?a[7].s:0);
+ mglprintf(out,1024,L"gr->ContF3(%s, %s, %s, %s, %s, '%c', %d, \"%s\");", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s, a[5].s[0], k[6]==3?iint(a[6].v):-1, k[7]==2?a[7].s:0);
}
//-----------------------------------------------------------------------------
int mgls_conta(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]!=1) return 1;
else if(k[1]==1 && k[2]==1 && k[3]==1)
- gr->ContA(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), k[4]==2?a[4].s:0, k[5]==3?int(a[5].v):7);
- else gr->ContA(*(a[0].d), k[1]==2?a[1].s:0, k[2]==3?int(a[2].v):7);
+ gr->ContA(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), k[4]==2?a[4].s:0, k[5]==3?iint(a[5].v):7);
+ else gr->ContA(*(a[0].d), k[1]==2?a[1].s:0, k[2]==3?iint(a[2].v):7);
return 0;
}
void mglc_conta(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]!=1) return;
else if(k[1]==1 && k[2]==1 && k[3]==1)
- mglprintf(out,1024,L"gr->ContA(%s, %s, %s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, a[3].s, k[4]==2?a[4].s:"", k[5]==3?int(a[5].v):7);
+ mglprintf(out,1024,L"gr->ContA(%s, %s, %s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, a[3].s, k[4]==2?a[4].s:"", k[5]==3?iint(a[5].v):7);
else
- mglprintf(out,1024,L"gr->ContA(%s, \"%s\", %d);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?int(a[2].v):7);
+ mglprintf(out,1024,L"gr->ContA(%s, \"%s\", %d);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?iint(a[2].v):7);
}
//-----------------------------------------------------------------------------
int mgls_contfa(mglGraph *gr, long , mglArg *a, int k[10])
@@ -652,89 +652,89 @@ int mgls_contfa(mglGraph *gr, long , mglArg *a, int k[10])
if(k[0]!=1) return 1;
else if(k[1]==1 && k[2]==1 && k[3]==1)
gr->ContFA(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s:0,
- k[5]==3?int(a[5].v):7);
- else gr->ContFA(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?int(a[2].v):7);
+ k[5]==3?iint(a[5].v):7);
+ else gr->ContFA(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?iint(a[2].v):7);
return 0;
}
void mglc_contfa(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]!=1) return;
else if(k[1]==1 && k[2]==1 && k[3]==1)
- mglprintf(out,1024,L"gr->ContFA(%s, %s, %s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, a[3].s, k[4]==2?a[4].s:"", k[5]==3?int(a[5].v):7);
+ mglprintf(out,1024,L"gr->ContFA(%s, %s, %s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, a[3].s, k[4]==2?a[4].s:"", k[5]==3?iint(a[5].v):7);
else
- mglprintf(out,1024,L"gr->ContFA(%s, \"%s\", %d);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?int(a[2].v):7);
+ mglprintf(out,1024,L"gr->ContFA(%s, \"%s\", %d);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?iint(a[2].v):7);
}
//-----------------------------------------------------------------------------
int mgls_contx(mglGraph *gr, long , mglArg *a, int k[10])
{
- if(k[0]==1) gr->ContX(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?a[2].v:NAN,k[3]==3?int(a[3].v):7);
+ if(k[0]==1) gr->ContX(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?a[2].v:NAN,k[3]==3?iint(a[3].v):7);
else return 1;
return 0;
}
void mglc_contx(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1)
- mglprintf(out,1024,L"gr->ContX(%s, \"%s\", %g, %d);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN, k[3]==3?int(a[3].v):7);
+ mglprintf(out,1024,L"gr->ContX(%s, \"%s\", %g, %d);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN, k[3]==3?iint(a[3].v):7);
}
//-----------------------------------------------------------------------------
int mgls_contfx(mglGraph *gr, long , mglArg *a, int k[10])
{
- if(k[0]==1) gr->ContFX(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?a[2].v:NAN,k[3]==3?int(a[3].v):7);
+ if(k[0]==1) gr->ContFX(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?a[2].v:NAN,k[3]==3?iint(a[3].v):7);
else return 1;
return 0;
}
void mglc_contfx(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1)
- mglprintf(out,1024,L"gr->ContFX(%s, \"%s\", %g, %d);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN, k[3]==3?int(a[3].v):7);
+ mglprintf(out,1024,L"gr->ContFX(%s, \"%s\", %g, %d);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN, k[3]==3?iint(a[3].v):7);
}
//-----------------------------------------------------------------------------
int mgls_conty(mglGraph *gr, long , mglArg *a, int k[10])
{
- if(k[0]==1) gr->ContY(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?a[2].v:NAN,k[3]==3?int(a[3].v):7);
+ if(k[0]==1) gr->ContY(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?a[2].v:NAN,k[3]==3?iint(a[3].v):7);
else return 1;
return 0;
}
void mglc_conty(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1)
- mglprintf(out,1024,L"gr->ContY(%s, \"%s\", %g, %d);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN, k[3]==3?int(a[3].v):7);
+ mglprintf(out,1024,L"gr->ContY(%s, \"%s\", %g, %d);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN, k[3]==3?iint(a[3].v):7);
}
//-----------------------------------------------------------------------------
int mgls_contfy(mglGraph *gr, long , mglArg *a, int k[10])
{
- if(k[0]==1) gr->ContFY(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?a[2].v:NAN,k[3]==3?int(a[3].v):7);
+ if(k[0]==1) gr->ContFY(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?a[2].v:NAN,k[3]==3?iint(a[3].v):7);
else return 1;
return 0;
}
void mglc_contfy(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1)
- mglprintf(out,1024,L"gr->ContFY(%s, \"%s\", %g, %d);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN, k[3]==3?int(a[3].v):7);
+ mglprintf(out,1024,L"gr->ContFY(%s, \"%s\", %g, %d);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN, k[3]==3?iint(a[3].v):7);
}
//-----------------------------------------------------------------------------
int mgls_contz(mglGraph *gr, long , mglArg *a, int k[10])
{
- if(k[0]==1) gr->ContZ(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?a[2].v:NAN,k[3]==3?int(a[3].v):7);
+ if(k[0]==1) gr->ContZ(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?a[2].v:NAN,k[3]==3?iint(a[3].v):7);
else return 1;
return 0;
}
void mglc_contz(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1)
- mglprintf(out,1024,L"gr->ContZ(%s, \"%s\", %g, %d);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN, k[3]==3?int(a[3].v):7);
+ mglprintf(out,1024,L"gr->ContZ(%s, \"%s\", %g, %d);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN, k[3]==3?iint(a[3].v):7);
}
//-----------------------------------------------------------------------------
int mgls_contfz(mglGraph *gr, long , mglArg *a, int k[10])
{
- if(k[0]==1) gr->ContFZ(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?a[2].v:NAN,k[3]==3?int(a[3].v):7);
+ if(k[0]==1) gr->ContFZ(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?a[2].v:NAN,k[3]==3?iint(a[3].v):7);
else return 1;
return 0;
}
void mglc_contfz(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1)
- mglprintf(out,1024,L"gr->ContFZ(%s, \"%s\", %g, %d);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN, k[3]==3?int(a[3].v):7);
+ mglprintf(out,1024,L"gr->ContFZ(%s, \"%s\", %g, %d);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN, k[3]==3?iint(a[3].v):7);
}
//-----------------------------------------------------------------------------
int mgls_cone(mglGraph *gr, long , mglArg *a, int [10])
@@ -788,11 +788,11 @@ int mgls_dens3(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]!=1) return 1;
else if(k[1]==2)
- gr->Dens3(*(a[0].d),a[1].s[0],k[2]==3?int(a[2].v):-1,
+ gr->Dens3(*(a[0].d),a[1].s[0],k[2]==3?iint(a[2].v):-1,
k[3]==2?a[3].s:0);
else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]==2)
gr->Dens3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s[0],
- k[5]==3?int(a[5].v):-1, k[6]==2?a[6].s:0);
+ k[5]==3?iint(a[5].v):-1, k[6]==2?a[6].s:0);
else return 1;
return 0;
}
@@ -800,9 +800,9 @@ void mglc_dens3(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]!=1) return;
else if(k[1]==2)
- mglprintf(out,1024,L"gr->Dens3(%s, '%c', %d, \"%s\");", a[0].s, a[1].s[0], k[2]==3?int(a[2].v):-1, k[3]==2?a[3].s:"");
+ mglprintf(out,1024,L"gr->Dens3(%s, '%c', %d, \"%s\");", a[0].s, a[1].s[0], k[2]==3?iint(a[2].v):-1, k[3]==2?a[3].s:"");
else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]==2)
- mglprintf(out,1024,L"gr->Dens3(%s, %s, %s, %s, '%c', %d, \"%s\");", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s[0], k[5]==3?int(a[5].v):-1, k[6]==2?a[6].s:0);
+ mglprintf(out,1024,L"gr->Dens3(%s, %s, %s, %s, '%c', %d, \"%s\");", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s[0], k[5]==3?iint(a[5].v):-1, k[6]==2?a[6].s:0);
}
//-----------------------------------------------------------------------------
int mgls_densa(mglGraph *gr, long , mglArg *a, int k[10])
@@ -1072,16 +1072,16 @@ int mgls_flow(mglGraph *gr, long , mglArg *a, int k[10])
int i;
for(i=0;i<7;i++) if(k[i]!=1) break;
if(i==2)
- gr->Flow(*(a[0].d),*(a[1].d),k[2]==2?a[2].s:0,k[3]==3?int(a[3].v):5,
+ gr->Flow(*(a[0].d),*(a[1].d),k[2]==2?a[2].s:0,k[3]==3?iint(a[3].v):5,
true,k[4]==3?a[4].v:NAN);
else if(i==4)
gr->Flow(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s:0,
- k[5]==3?int(a[5].v):5,true,k[6]==3?a[6].v:NAN);
+ k[5]==3?iint(a[5].v):5,true,k[6]==3?a[6].v:NAN);
else if(i==3)
- gr->Flow(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s:0,k[4]==3?int(a[4].v):3);
+ gr->Flow(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s:0,k[4]==3?iint(a[4].v):3);
else if(i==6)
gr->Flow(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),
- k[6]==2?a[6].s:0,k[7]==3?int(a[7].v):3);
+ k[6]==2?a[6].s:0,k[7]==3?iint(a[7].v):3);
else if(k[0]==3 && k[1]==3 && k[2]==1 && k[3]==1 && k[4]==1 && k[5]==1)
gr->FlowP(mglPoint(a[0].v,a[1].v,k[7]==3?a[7].v:NAN),
*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),k[6]==2?a[6].s:0);
@@ -1102,13 +1102,13 @@ void mglc_flow(wchar_t out[1024], long , mglArg *a, int k[10])
int i;
for(i=0;i<7;i++) if(k[i]!=1) break;
if(i==2)
- mglprintf(out,1024,L"gr->Flow(%s, %s, \"%s\", %d, true, %g);", a[0].s, a[1].s, k[2]==2?a[2].s:"", k[3]==3?int(a[3].v):5, k[4]==3?a[4].v:NAN);
+ mglprintf(out,1024,L"gr->Flow(%s, %s, \"%s\", %d, true, %g);", a[0].s, a[1].s, k[2]==2?a[2].s:"", k[3]==3?iint(a[3].v):5, k[4]==3?a[4].v:NAN);
else if(i==4)
- mglprintf(out,1024,L"gr->Flow(%s, %s, %s, %s, \"%s\", %d, true, %g);", a[0].s, a[1].s, a[2].s, a[3].s, k[4]==2?a[4].s:"", k[5]==3?int(a[5].v):5, k[6]==3?a[6].v:NAN);
+ mglprintf(out,1024,L"gr->Flow(%s, %s, %s, %s, \"%s\", %d, true, %g);", a[0].s, a[1].s, a[2].s, a[3].s, k[4]==2?a[4].s:"", k[5]==3?iint(a[5].v):5, k[6]==3?a[6].v:NAN);
else if(i==3)
- mglprintf(out,1024,L"gr->Flow(%s, %s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:0, k[4]==3?int(a[4].v):3);
+ mglprintf(out,1024,L"gr->Flow(%s, %s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:0, k[4]==3?iint(a[4].v):3);
else if(i==6)
- mglprintf(out,1024,L"gr->Flow(%s, %s, %s, %s, %s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s, a[5].s, k[6]==2?a[6].s:0, k[7]==3?int(a[7].v):3);
+ mglprintf(out,1024,L"gr->Flow(%s, %s, %s, %s, %s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s, a[5].s, k[6]==2?a[6].s:0, k[7]==3?iint(a[7].v):3);
else if(k[0]==3 && k[1]==3 && k[2]==1 && k[3]==1 && k[4]==1 && k[5]==1)
mglprintf(out,1024,L"gr->FlowP(mglPoint(%g,%g,%g), %s, %s, %s, %s, \"%s\");",
a[0].v,a[1].v,k[7]==3?a[7].v:NAN,a[2].s,a[3].s,a[4].s,a[5].s,k[6]==2?a[6].s:"");
@@ -1123,6 +1123,32 @@ void mglc_flow(wchar_t out[1024], long , mglArg *a, int k[10])
a[0].v,a[1].v,a[2].v,a[3].s,a[4].s,a[5].s,k[6]==2?a[6].s:"");
}
//-----------------------------------------------------------------------------
+int mgls_grad(mglGraph *gr, long , mglArg *a, int k[10])
+{
+ int i;
+ for(i=0;i<7;i++) if(k[i]!=1) break;
+ if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1)
+ gr->Grad(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d), k[4]==2?a[4].s:0, k[5]==3?iint(a[5].v):5);
+ else if(k[0]==1 && k[1]==1 && k[2]==1)
+ gr->Grad(*(a[0].d),*(a[1].d),*(a[2].d), k[3]==2?a[3].s:0, k[4]==3?iint(a[4].v):5, k[5]==3?a[5].v:NAN);
+ else if(k[0]==1)
+ gr->Grad(*(a[0].d), k[1]==2?a[1].s:0, k[2]==3?iint(a[2].v):5, k[3]==3?a[3].v:NAN);
+ else return 1;
+ return 0;
+}
+void mglc_grad(wchar_t out[1024], long , mglArg *a, int k[10])
+{
+ if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1)
+ mglprintf(out,1024,L"gr->Grad(%s, %s, %s, %s, \"%s\", %d, %g);",
+ a[0].s, a[1].s, a[2].s, a[3].s, k[4]==2?a[4].s:"", k[5]==3?iint(a[5].v):5);
+ else if(k[0]==1 && k[1]==1 && k[2]==1)
+ mglprintf(out,1024,L"gr->Grad(%s, %s, %s, \"%s\", %d, %g);",
+ a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"", k[4]==3?iint(a[4].v):5, k[5]==3?a[5].v:NAN);
+ else if(k[0]==1)
+ mglprintf(out,1024,L"gr->Grad(%s, \"%s\", %d, %g);",
+ a[0].s, k[1]==2?a[1].s:"", k[2]==3?iint(a[2].v):5, k[3]==3?a[3].v:NAN);
+}
+//-----------------------------------------------------------------------------
int mgls_fill(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==2)
@@ -1140,6 +1166,18 @@ void mglc_fill(wchar_t out[1024], long , mglArg *a, int k[10])
mglprintf(out,1024,L"%s.Fill(%g, %g, '%c');", a[0].s, a[1].v,a[2].v, k[3]==2?a[3].s[0]:'x');
}
//-----------------------------------------------------------------------------
+int mgls_fillsample(mglGraph *gr, long , mglArg *a, int k[10])
+{
+ if(k[0]==1 && k[1]==3 && k[2]==2) a[0].d->FillSample(iint(a[1].v), a[2].s);
+ else return 1;
+ return 0;
+}
+void mglc_fillsample(wchar_t out[1024], long , mglArg *a, int k[10])
+{
+ if(k[0]==1 && k[1]==3 && k[2]==2)
+ mglprintf(out,1024,L"%s.FillSample(%d, \"%s\");", a[0].s, iint(a[1].v), a[2].s);
+}
+//-----------------------------------------------------------------------------
int mgls_fog(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]==3) gr->Fog(a[0].v,k[1]==3?a[1].v:0.25);
@@ -1182,31 +1220,39 @@ void mglc_loadfont(wchar_t out[1024], long , mglArg *a, int k[10])
//-----------------------------------------------------------------------------
int mgls_grid(mglGraph *gr, long , mglArg *a, int k[10])
{
- if(k[0]!=1) gr->Grid(k[0]==2?a[0].s:"xyz", k[1]==2?a[1].s:"B-");
- else if(k[1]!=1) gr->Grid(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?a[2].v:NAN);
- else if(k[1]==1 && k[2]==1 && k[3]!=1)
+ gr->Grid(k[0]==2?a[0].s:"xyzt", k[1]==2?a[1].s:"B-");
+ return 0;
+}
+void mglc_grid(wchar_t out[1024], long , mglArg *a, int k[10])
+{
+ mglprintf(out,1024,L"gr->Grid(\"%s\", \"%s\");", k[0]==2?a[0].s:"xyz", k[1]==2?a[1].s:"B-");
+}
+//-----------------------------------------------------------------------------
+int mgls_grid2(mglGraph *gr, long , mglArg *a, int k[10])
+{
+ if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]!=1)
gr->Grid(*(a[0].d), *(a[1].d), *(a[2].d), k[3]==2?a[3].s:0, k[4]==3?a[4].v:NAN);
+ else if(k[0]==1) gr->Grid(*(a[0].d),k[1]==2?a[1].s:0,k[2]==3?a[2].v:NAN);
else return 1;
return 0;
}
-void mglc_grid(wchar_t out[1024], long , mglArg *a, int k[10])
+void mglc_grid2(wchar_t out[1024], long , mglArg *a, int k[10])
{
- if(k[0]!=1) mglprintf(out,1024,L"gr->Grid(\"%s\", \"%s\");", k[0]==2?a[0].s:"xyz", k[1]==2?a[1].s:"B-");
- else if(k[1]!=1)
- mglprintf(out,1024,L"gr->Grid(%s,\"%s\", %g);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN);
- else if(k[1]==1 && k[2]==1 && k[3]!=1)
+ if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]!=1)
mglprintf(out,1024,L"gr->Grid(%s, %s, %s, \"%s\", %g);", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"", k[4]==3?a[4].v:NAN);
+ else if(k[0]==1)
+ mglprintf(out,1024,L"gr->Grid(%s,\"%s\", %g);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN);
}
//-----------------------------------------------------------------------------
int mgls_grid3(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]!=1) return 1;
else if(k[1]==2)
- gr->Grid3(*(a[0].d),a[1].s[0],k[2]==3?int(a[2].v):-1,
+ gr->Grid3(*(a[0].d),a[1].s[0],k[2]==3?iint(a[2].v):-1,
k[3]==2?a[3].s:0);
else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]==2)
gr->Grid3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),a[4].s[0],
- k[5]==3?int(a[5].v):-1, k[6]==2?a[6].s:0);
+ k[5]==3?iint(a[5].v):-1, k[6]==2?a[6].s:0);
else return 1;
return 0;
}
@@ -1214,9 +1260,9 @@ void mglc_grid3(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]!=1) return;
else if(k[1]==2)
- mglprintf(out,1024,L"gr->Grid3(%s, '%c', %d, \"%s\");", a[0].s, a[1].s[0], k[2]==3?int(a[2].v):-1, k[3]==2?a[3].s:"");
+ mglprintf(out,1024,L"gr->Grid3(%s, '%c', %d, \"%s\");", a[0].s, a[1].s[0], k[2]==3?iint(a[2].v):-1, k[3]==2?a[3].s:"");
else if(k[1]==1 && k[2]==1 && k[3]==1 && k[4]==2)
- mglprintf(out,1024,L"gr->Grid3(%s, %s, %s, %s, '%c', %d, \"%s\");", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s[0], k[5]==3?int(a[5].v):-1, k[6]==2?a[6].s:0);
+ mglprintf(out,1024,L"gr->Grid3(%s, %s, %s, %s, '%c', %d, \"%s\");", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s[0], k[5]==3?iint(a[5].v):-1, k[6]==2?a[6].s:0);
}
//-----------------------------------------------------------------------------
int mgls_grida(mglGraph *gr, long , mglArg *a, int k[10])
@@ -1242,9 +1288,9 @@ int mgls_light(mglGraph *gr, long , mglArg *a, int k[10])
else if(k[0]!=3) return 1;
else if(k[1]!=3) gr->Light(a[0].v!=0);
else if(k[2]==3 && k[3]==3)
- gr->Light(int(a[0].v),mglPoint(a[1].v,a[2].v,a[3].v),
+ gr->Light(iint(a[0].v),mglPoint(a[1].v,a[2].v,a[3].v),
k[4]==2?a[4].s[0]:'w',k[5]==3?a[5].v:0.5,true);
- else gr->Light(int(a[0].v),a[1].v!=0);
+ else gr->Light(iint(a[0].v),a[1].v!=0);
return 0;
}
void mglc_light(wchar_t out[1024], long , mglArg *a, int k[10])
@@ -1253,8 +1299,8 @@ void mglc_light(wchar_t out[1024], long , mglArg *a, int k[10])
else if(k[0]!=3) return;
else if(k[1]!=3) mglprintf(out,1024,L"gr->Light(%s);", a[0].v!=0 ? "true":"false");
else if(k[2]==3 && k[3]==3)
- mglprintf(out,1024,L"gr->Light(%d, mglPoint(%g, %g, %g), '%c', %g, true);", int(a[0].v), a[1].v, a[2].v, a[3].v, k[4]==2?a[4].s[0]:'w', k[5]==3?a[5].v:0.5);
- else mglprintf(out,1024,L"gr->Light(%d, %s);", int(a[0].v), a[1].v!=0 ? "true":"false");
+ mglprintf(out,1024,L"gr->Light(%d, mglPoint(%g, %g, %g), '%c', %g, true);", iint(a[0].v), a[1].v, a[2].v, a[3].v, k[4]==2?a[4].s[0]:'w', k[5]==3?a[5].v:0.5);
+ else mglprintf(out,1024,L"gr->Light(%d, %s);", iint(a[0].v), a[1].v!=0 ? "true":"false");
}
//-----------------------------------------------------------------------------
int mgls_line(mglGraph *gr, long n, mglArg *a, int [10])
@@ -1306,7 +1352,7 @@ int mgls_legend(mglGraph *gr, long , mglArg *a, int k[10])
if(k[0]==3 && k[1]==3)
gr->Legend(a[0].v, a[1].v, k[2]==2?a[2].s:"rL", k[3]==3?a[3].v:-1, k[4]==3?a[4].v:0.1);
else
- gr->Legend(k[0]==3?int(a[0].v):3, k[1]==2?a[1].s:"rL", k[2]==3?a[2].v:-1, k[3]==3?a[3].v:0.1);
+ gr->Legend(k[0]==3?iint(a[0].v):3, k[1]==2?a[1].s:"rL", k[2]==3?a[2].v:-1, k[3]==3?a[3].v:0.1);
return 0;
}
void mglc_legend(wchar_t out[1024], long , mglArg *a, int k[10])
@@ -1314,7 +1360,7 @@ void mglc_legend(wchar_t out[1024], long , mglArg *a, int k[10])
if(k[0]==3 && k[1]==3)
mglprintf(out,1024,L"gr->Legend(%g, %g, \"%s\", %g, %g);", a[0].v, a[1].v, k[2]==2?a[2].s:"rL", k[3]==3?a[3].v:-1, k[4]==3?a[4].v:0.1);
else
- mglprintf(out,1024,L"gr->Legend(%d, \"%s\", %g, %g);", k[0]==3?int(a[0].v):3, k[1]==2?a[1].s:"rL", k[2]==3?a[2].v:-1, k[4]==3?a[4].v:0.1);
+ mglprintf(out,1024,L"gr->Legend(%d, \"%s\", %g, %g);", k[0]==3?iint(a[0].v):3, k[1]==2?a[1].s:"rL", k[2]==3?a[2].v:-1, k[4]==3?a[4].v:0.1);
}
//-----------------------------------------------------------------------------
int mgls_linewidth(mglGraph *gr, long , mglArg *a, int k[10])
@@ -1341,13 +1387,24 @@ void mglc_barwidth(wchar_t out[1024], long , mglArg *a, int k[10])
//-----------------------------------------------------------------------------
int mgls_legendbox(mglGraph *gr, long , mglArg *a, int k[10])
{
- if(k[0]==3) gr->LegendBox = (a[0].v!=0);
+ if(k[0]==3) gr->SetLegendBox(a[0].v!=0);
else return 1;
return 0;
}
void mglc_legendbox(wchar_t out[1024], long , mglArg *a, int k[10])
{
- if(k[0]==3) mglprintf(out,1024,L"gr->LegendBox = %s;", (a[0].v!=0)?"true":"false");
+ if(k[0]==3) mglprintf(out,1024,L"gr->SetLegendBox(%s);", (a[0].v!=0)?"true":"false");
+}
+//-----------------------------------------------------------------------------
+int mgls_legendmarks(mglGraph *gr, long , mglArg *a, int k[10])
+{
+ if(k[0]==3) gr->SetLegendMarks(iint(a[0].v));
+ else return 1;
+ return 0;
+}
+void mglc_legendmarks(wchar_t out[1024], long , mglArg *a, int k[10])
+{
+ if(k[0]==3) mglprintf(out,1024,L"gr->SetLegendMarks(%d);", iint(a[0].v));
}
//-----------------------------------------------------------------------------
int mgls_modify(mglGraph *, long , mglArg *a, int k[10])
@@ -1357,7 +1414,7 @@ int mgls_modify(mglGraph *, long , mglArg *a, int k[10])
else if(k[0]==1 && k[1]==2 && k[2]==1)
a[0].d->Modify(a[1].s,*(a[2].d));
else if(k[0]==1 && k[1]==2)
- a[0].d->Modify(a[1].s, k[2]==3 ? int(a[2].v):0);
+ a[0].d->Modify(a[1].s, k[2]==3 ? iint(a[2].v):0);
else return 1;
return 0;
}
@@ -1368,7 +1425,7 @@ void mglc_modify(wchar_t out[1024], long , mglArg *a, int k[10])
else if(k[0]==1 && k[1]==2 && k[2]==1)
mglprintf(out,1024,L"%s.Modify(\"%s\", %s);", a[0].s, a[1].s, a[2].s);
else if(k[0]==1 && k[1]==2)
- mglprintf(out,1024,L"%s.Modify(\"%s\", %d);", a[0].s, a[1].s, k[2]==3 ? int(a[2].v):0);
+ mglprintf(out,1024,L"%s.Modify(\"%s\", %d);", a[0].s, a[1].s, k[2]==3 ? iint(a[2].v):0);
}
//-----------------------------------------------------------------------------
int mgls_max(mglGraph *, long , mglArg *a, int k[10])
@@ -1409,13 +1466,13 @@ void mglc_sum(wchar_t out[1024], long , mglArg *a, int k[10])
//-----------------------------------------------------------------------------
int mgls_meshnum(mglGraph *gr, long , mglArg *a, int k[10])
{
- if(k[0]==3) gr->MeshNum = int(a[0].v);
+ if(k[0]==3) gr->MeshNum = iint(a[0].v);
else return 1;
return 0;
}
void mglc_meshnum(wchar_t out[1024], long , mglArg *a, int k[10])
{
- if(k[0]==3) mglprintf(out,1024,L"gr->MeshNum = %d;", int(a[0].v));
+ if(k[0]==3) mglprintf(out,1024,L"gr->MeshNum = %d;", iint(a[0].v));
}
//-----------------------------------------------------------------------------
int mgls_marksize(mglGraph *gr, long , mglArg *a, int k[10])
@@ -1470,8 +1527,8 @@ int mgls_read(mglGraph *gr, long n, mglArg *a, int k[10])
bool rr=true;
if(k[0]!=1 || k[1]!=2) return 1;
else if(n==2) rr=a[0].d->Read(a[1].s);
- else rr=a[0].d->Read(a[1].s, k[2]==3?int(a[2].v):1,
- k[3]==3?int(a[3].v):1, k[4]==3?int(a[4].v):1);
+ else rr=a[0].d->Read(a[1].s, k[2]==3?iint(a[2].v):1,
+ k[3]==3?iint(a[3].v):1, k[4]==3?iint(a[4].v):1);
if(!rr) gr->SetWarn(mglWarnFile);
return 0;
}
@@ -1480,21 +1537,21 @@ void mglc_read(wchar_t out[1024], long n, mglArg *a, int k[10])
if(k[0]!=1 || k[1]!=2) return;
else if(n==2) mglprintf(out,1024,L"%s.Read(\"%s\");", a[0].s, a[1].s);
else
- mglprintf(out,1024,L"%s.Read(\"%s\", %d, %d, %d);", a[0].s, a[1].s, k[2]==3?int(a[2].v):1, k[3]==3?int(a[3].v):1, k[4]==3?int(a[4].v):1);
+ mglprintf(out,1024,L"%s.Read(\"%s\", %d, %d, %d);", a[0].s, a[1].s, k[2]==3?iint(a[2].v):1, k[3]==3?iint(a[3].v):1, k[4]==3?iint(a[4].v):1);
}
//-----------------------------------------------------------------------------
int mgls_readmat(mglGraph *gr, long , mglArg *a, int k[10])
{
bool rr=true;
if(k[0]!=1 || k[1]!=2) return 1;
- else rr=a[0].d->ReadMat(a[1].s, k[2]==3?int(a[2].v):2);
+ else rr=a[0].d->ReadMat(a[1].s, k[2]==3?iint(a[2].v):2);
if(!rr) gr->SetWarn(mglWarnFile);
return 0;
}
void mglc_readmat(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==2)
- mglprintf(out,1024,L"%s.ReadMat(\"%s\", %d);", a[0].s, a[1].s, k[2]==3?int(a[2].v):2);
+ mglprintf(out,1024,L"%s.ReadMat(\"%s\", %d);", a[0].s, a[1].s, k[2]==3?iint(a[2].v):2);
}
//-----------------------------------------------------------------------------
int mgls_readall(mglGraph *, long , mglArg *a, int k[10])
@@ -1600,15 +1657,15 @@ void mglc_rect(wchar_t out[1024], long n, mglArg *a, int [10])
int mgls_resize(mglGraph *, long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==1)
- *(a[0].d) = a[1].d->Resize(k[2]==3?int(a[2].v):1,
- k[3]==3?int(a[3].v):1, k[4]==3?int(a[4].v):1);
+ *(a[0].d) = a[1].d->Resize(k[2]==3?iint(a[2].v):1,
+ k[3]==3?iint(a[3].v):1, k[4]==3?iint(a[4].v):1);
else return 1;
return 0;
}
void mglc_resize(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==1)
- mglprintf(out,1024,L"%s = %s.Resize(%d, %d, %d);", a[0].s, a[1].s, k[2]==3?int(a[2].v):1, k[3]==3?int(a[3].v):1, k[4]==3?int(a[4].v):1);
+ mglprintf(out,1024,L"%s = %s.Resize(%d, %d, %d);", a[0].s, a[1].s, k[2]==3?iint(a[2].v):1, k[3]==3?iint(a[3].v):1, k[4]==3?iint(a[4].v):1);
}
//-----------------------------------------------------------------------------
int mgls_rotate(mglGraph *gr, long , mglArg *a, int k[10])
@@ -1652,14 +1709,14 @@ void mglc_save(wchar_t out[1024], long , mglArg *a, int k[10])
//-----------------------------------------------------------------------------
int mgls_smooth(mglGraph *, long , mglArg *a, int k[10])
{
- if(k[0]==1) a[0].d->Smooth(k[1]==3?int(a[1].v):2,k[2]==2?a[2].s:"xyz");
+ if(k[0]==1) a[0].d->Smooth(k[1]==3?iint(a[1].v):2,k[2]==2?a[2].s:"xyz");
else return 1;
return 0;
}
void mglc_smooth(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1)
- mglprintf(out,1024,L"%s.Smooth(%d, \"%s\");", a[0].s, k[1]==3?int(a[1].v):2, k[2]==2?a[2].s:"xyz");
+ mglprintf(out,1024,L"%s.Smooth(%d, \"%s\");", a[0].s, k[1]==3?iint(a[1].v):2, k[2]==2?a[2].s:"xyz");
}
//-----------------------------------------------------------------------------
int mgls_swap(mglGraph *, long , mglArg *a, int k[10])
@@ -1673,13 +1730,13 @@ void mglc_swap(wchar_t out[1024], long , mglArg *a, int k[10])
if(k[0]==1 && k[1]==2) mglprintf(out,1024,L"%s.Swap(\"%s\");", a[0].s, a[1].s);
}
//-----------------------------------------------------------------------------
-int mgls_set_id(mglGraph *, long , mglArg *a, int k[10])
+int mgls_idset(mglGraph *, long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==2) a[0].d->SetColumnId(a[1].s);
else return 1;
return 0;
}
-void mglc_set_id(wchar_t out[1024], long , mglArg *a, int k[10])
+void mglc_idset(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==2) mglprintf(out,1024,L"%s.SetColumnId(\"%s\");", a[0].s, a[1].s);
}
@@ -1769,41 +1826,41 @@ void mglc_radar(wchar_t out[1024], long , mglArg *a, int k[10])
int mgls_squeeze(mglGraph *, long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==3)
- a[0].d->Squeeze(int(a[1].v), k[2]==3?int(a[2].v):1, k[3]==3?int(a[3].v):1, k[4]==3 && a[4].v>0);
+ a[0].d->Squeeze(iint(a[1].v), k[2]==3?iint(a[2].v):1, k[3]==3?iint(a[3].v):1, k[4]==3 && a[4].v>0);
else return 1;
return 0;
}
void mglc_squeeze(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==3)
- mglprintf(out,1024,L"%s.Squeeze(%d, %d, %d, %s);", a[0].s, int(a[1].v),
- k[2]==3?int(a[2].v):1, k[3]==3?int(a[3].v):1, k[4]==3 && a[4].v>0 ? "true":"false");
+ mglprintf(out,1024,L"%s.Squeeze(%d, %d, %d, %s);", a[0].s, iint(a[1].v),
+ k[2]==3?iint(a[2].v):1, k[3]==3?iint(a[3].v):1, k[4]==3 && a[4].v>0 ? "true":"false");
}
//-----------------------------------------------------------------------------
int mgls_stfad(mglGraph *, long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==3)
- *(a[0].d) = mglSTFA(*(a[1].d),*(a[2].d), int(a[3].v), k[4]==2?a[4].s[0]:'x');
+ *(a[0].d) = mglSTFA(*(a[1].d),*(a[2].d), iint(a[3].v), k[4]==2?a[4].s[0]:'x');
else return 1;
return 0;
}
void mglc_stfad(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==3)
- mglprintf(out,1024,L"%s = mglSTFA(%s, %s, %d, '%c');", a[0].s, a[1].s, a[2].s, int(a[3].v), k[4]==2?a[4].s[0]:'x');
+ mglprintf(out,1024,L"%s = mglSTFA(%s, %s, %d, '%c');", a[0].s, a[1].s, a[2].s, iint(a[3].v), k[4]==2?a[4].s[0]:'x');
}
//-----------------------------------------------------------------------------
int mgls_setsize(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]==3 && k[1]==3 && a[1].v>1 && a[0].v>1)
- gr->SetSize(int(a[0].v), int(a[1].v));
+ gr->SetSize(iint(a[0].v), iint(a[1].v));
else return 1;
return 0;
}
void mglc_setsize(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==3 && k[1]==3 && a[1].v>1 && a[0].v>1)
- mglprintf(out,1024,L"gr->SetSize(%d, %d);", int(a[0].v), int(a[1].v));
+ mglprintf(out,1024,L"gr->SetSize(%d, %d);", iint(a[0].v), iint(a[1].v));
}
//-----------------------------------------------------------------------------
int mgls_sphere(mglGraph *gr, long , mglArg *a, int k[10])
@@ -1830,18 +1887,18 @@ void mglc_sphere(wchar_t out[1024], long , mglArg *a, int k[10])
int mgls_stfa(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==1 && k[2]==3)
- gr->STFA(*(a[0].d),*(a[1].d), int(a[2].v), k[3]==2?a[3].s:"");
+ gr->STFA(*(a[0].d),*(a[1].d), iint(a[2].v), k[3]==2?a[3].s:"");
else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==3)
- gr->STFA(*(a[0].d),*(a[1].d), *(a[2].d),*(a[3].d), int(a[4].v), k[5]==2?a[5].s:"");
+ gr->STFA(*(a[0].d),*(a[1].d), *(a[2].d),*(a[3].d), iint(a[4].v), k[5]==2?a[5].s:"");
else return 1;
return 0;
}
void mglc_stfa(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==1 && k[2]==3)
- mglprintf(out,1024,L"gr->STFA(%s, %s, %d, \"%s\");", a[0].s, a[1].s, int(a[2].v), k[3]==2?a[3].s:"");
+ mglprintf(out,1024,L"gr->STFA(%s, %s, %d, \"%s\");", a[0].s, a[1].s, iint(a[2].v), k[3]==2?a[3].s:"");
else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==3)
- mglprintf(out,1024,L"gr->STFA(%s, %s, %s, %s, %d, \"%s\");", a[0].s, a[1].s, a[2].s, a[3].s, int(a[4].v), k[5]==2?a[5].s:"");
+ mglprintf(out,1024,L"gr->STFA(%s, %s, %s, %s, %d, \"%s\");", a[0].s, a[1].s, a[2].s, a[3].s, iint(a[4].v), k[5]==2?a[5].s:"");
}
//-----------------------------------------------------------------------------
int mgls_surf3(mglGraph *gr, long , mglArg *a, int k[10])
@@ -1852,10 +1909,10 @@ int mgls_surf3(mglGraph *gr, long , mglArg *a, int k[10])
gr->Surf3(a[4].v,*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),
k[5]==2? a[5].s:0);
else if(k[1]==3) gr->Surf3(a[1].v,*(a[0].d),k[2]==2? a[2].s:0);
- else if(k[1]==2) gr->Surf3(*(a[0].d),a[1].s,int(k[2]==3?a[2].v:3));
+ else if(k[1]==2) gr->Surf3(*(a[0].d),a[1].s,iint(k[2]==3?a[2].v:3));
else if(k[1]==1 && k[2]==1 && k[3]==1)
gr->Surf3(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),
- k[4]==2? a[4].s:0,int(k[5]==3?a[5].v:3));
+ k[4]==2? a[4].s:0,iint(k[5]==3?a[5].v:3));
else return 1;
return 0;
}
@@ -1868,9 +1925,9 @@ void mglc_surf3(wchar_t out[1024], long , mglArg *a, int k[10])
else if(k[1]==3)
mglprintf(out,1024,L"gr->Surf3(%g, %s, \"%s\");", a[1].v, a[0].s, k[2]==2? a[2].s:"");
else if(k[1]==2)
- mglprintf(out,1024,L"gr->Surf3(%s, \"%s\", %d);", a[0].s, a[1].s, int(k[2]==3?a[2].v:3));
+ mglprintf(out,1024,L"gr->Surf3(%s, \"%s\", %d);", a[0].s, a[1].s, iint(k[2]==3?a[2].v:3));
else if(k[1]==1 && k[2]==1 && k[3]==1)
- mglprintf(out,1024,L"gr->Surf3(%s, %s, %s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, a[3].s, k[4]==2?a[4].s:"", int(k[5]==3?a[5].v:3));
+ mglprintf(out,1024,L"gr->Surf3(%s, %s, %s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, a[3].s, k[4]==2?a[4].s:"", iint(k[5]==3?a[5].v:3));
}
//-----------------------------------------------------------------------------
int mgls_surf3c(mglGraph *gr, long , mglArg *a, int k[10])
@@ -1881,10 +1938,10 @@ int mgls_surf3c(mglGraph *gr, long , mglArg *a, int k[10])
gr->Surf3C(a[5].v,*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),
k[6]==2? a[6].s:0);
else if(k[2]==3) gr->Surf3C(a[2].v,*(a[0].d),*(a[1].d),k[3]==2? a[3].s:0);
- else if(k[2]==2) gr->Surf3C(*(a[0].d),*(a[1].d),a[2].s,int(k[3]==3?a[3].v:3));
+ else if(k[2]==2) gr->Surf3C(*(a[0].d),*(a[1].d),a[2].s,iint(k[3]==3?a[3].v:3));
else if(k[2]==1 && k[3]==1 && k[4]==1)
gr->Surf3C(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),
- k[5]==2? a[5].s:0,int(k[6]==3?a[6].v:3));
+ k[5]==2? a[5].s:0,iint(k[6]==3?a[6].v:3));
else return 1;
return 0;
}
@@ -1897,9 +1954,9 @@ void mglc_surf3c(wchar_t out[1024], long , mglArg *a, int k[10])
else if(k[2]==3)
mglprintf(out,1024,L"gr->Surf3C(%g, %s, %s, \"%s\");", a[2].v, a[0].s, a[1].s, k[3]==2?a[3].s:0);
else if(k[2]==2)
- mglprintf(out,1024,L"gr->Surf3C(%s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, int(k[3]==3?a[3].v:3));
+ mglprintf(out,1024,L"gr->Surf3C(%s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, iint(k[3]==3?a[3].v:3));
else if(k[2]==1 && k[3]==1 && k[4]==1)
- mglprintf(out,1024,L"gr->Surf3C(%s, %s, %s, %s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s, k[5]==2?a[5].s:"", int(k[6]==3?a[6].v:3));
+ mglprintf(out,1024,L"gr->Surf3C(%s, %s, %s, %s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s, k[5]==2?a[5].s:"", iint(k[6]==3?a[6].v:3));
}
//-----------------------------------------------------------------------------
int mgls_surf3a(mglGraph *gr, long , mglArg *a, int k[10])
@@ -1910,10 +1967,10 @@ int mgls_surf3a(mglGraph *gr, long , mglArg *a, int k[10])
gr->Surf3A(a[5].v,*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),
k[6]==2? a[6].s:0);
else if(k[2]==3) gr->Surf3A(a[2].v,*(a[0].d),*(a[1].d),k[3]==2? a[3].s:0);
- else if(k[2]==2) gr->Surf3A(*(a[0].d),*(a[1].d),a[2].s,int(k[3]==3?a[3].v:3));
+ else if(k[2]==2) gr->Surf3A(*(a[0].d),*(a[1].d),a[2].s,iint(k[3]==3?a[3].v:3));
else if(k[2]==1 && k[3]==1 && k[4]==1)
gr->Surf3A(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),
- k[5]==2? a[5].s:0,int(k[6]==3?a[6].v:3));
+ k[5]==2? a[5].s:0,iint(k[6]==3?a[6].v:3));
else return 1;
return 0;
}
@@ -1926,35 +1983,39 @@ void mglc_surf3a(wchar_t out[1024], long , mglArg *a, int k[10])
else if(k[2]==3)
mglprintf(out,1024,L"gr->Surf3A(%g, %s, %s, \"%s\");", a[2].v, a[0].s, a[1].s, k[3]==2?a[3].s:0);
else if(k[2]==2)
- mglprintf(out,1024,L"gr->Surf3A(%s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, int(k[3]==3?a[3].v:3));
+ mglprintf(out,1024,L"gr->Surf3A(%s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, iint(k[3]==3?a[3].v:3));
else if(k[2]==1 && k[3]==1 && k[4]==1)
- mglprintf(out,1024,L"gr->Surf3A(%s, %s, %s, %s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s, k[5]==2?a[5].s:"", int(k[6]==3?a[6].v:3));
+ mglprintf(out,1024,L"gr->Surf3A(%s, %s, %s, %s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s, k[5]==2?a[5].s:"", iint(k[6]==3?a[6].v:3));
}
//-----------------------------------------------------------------------------
int mgls_subplot(mglGraph *gr, long , mglArg *a, int k[10])
{
- if(k[0]==3 && k[1]==3 && k[2]==3)
- gr->SubPlot(int(a[0].v), int(a[1].v), int(a[2].v), k[3]==3?a[3].v:0, k[4]==3?a[4].v:0);
+ if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==2)
+ gr->SubPlot(iint(a[0].v), iint(a[1].v), iint(a[2].v), a[3].s);
+ else if(k[0]==3 && k[1]==3 && k[2]==3)
+ gr->SubPlot(iint(a[0].v), iint(a[1].v), iint(a[2].v), k[3]==3?a[3].v:0, k[4]==3?a[4].v:0);
else return 1;
return 0;
}
void mglc_subplot(wchar_t out[1024], long , mglArg *a, int k[10])
{
- if(k[0]==3 && k[1]==3 && k[2]==3)
- mglprintf(out,1024,L"gr->SubPlot(%d, %d, %d, %g, %g);", int(a[0].v), int(a[1].v), int(a[2].v), k[3]==3?a[3].v:0, k[4]==3?a[4].v:0);
+ if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==2)
+ mglprintf(out,1024,L"gr->SubPlot(%d, %d, %d, \"%s\");", iint(a[0].v), iint(a[1].v), iint(a[2].v), a[3].s);
+ else if(k[0]==3 && k[1]==3 && k[2]==3)
+ mglprintf(out,1024,L"gr->SubPlot(%d, %d, %d, %g, %g);", iint(a[0].v), iint(a[1].v), iint(a[2].v), k[3]==3?a[3].v:0, k[4]==3?a[4].v:0);
}
//-----------------------------------------------------------------------------
int mgls_subdata(mglGraph *, long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==1 && k[2]==3)
- *(a[0].d) = a[1].d->SubData(int(a[2].v), k[3]==3?int(a[3].v):-1, k[4]==3?int(a[4].v):-1);
+ *(a[0].d) = a[1].d->SubData(iint(a[2].v), k[3]==3?iint(a[3].v):-1, k[4]==3?iint(a[4].v):-1);
else return 1;
return 0;
}
void mglc_subdata(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==1 && k[2]==3)
- mglprintf(out,1024,L"%s = %s.SubData(%d, %d, %d);", a[0].s, a[1].s, int(a[2].v), k[3]==3?int(a[3].v):-1, k[4]==3?int(a[4].v):-1);
+ mglprintf(out,1024,L"%s = %s.SubData(%d, %d, %d);", a[0].s, a[1].s, iint(a[2].v), k[3]==3?iint(a[3].v):-1, k[4]==3?iint(a[4].v):-1);
}
//-----------------------------------------------------------------------------
int mgls_trace(mglGraph *, long , mglArg *a, int k[10])
@@ -1972,10 +2033,6 @@ int mgls_tile(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]!=1) return 1;
else if(k[1]!=1) gr->Tile(*(a[0].d), k[1]==2? a[1].s:0);
- else if(k[1]==1 && k[2]!=1)
- gr->TileS(*(a[0].d),*(a[1].d),k[2]==2?a[2].s:0);
- else if(k[1]==1 && k[2]==1 && k[3]==1)
- gr->TileS(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2? a[4].s:0);
else if(k[1]==1 && k[2]==1)
gr->Tile(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2? a[3].s:0);
else return 1;
@@ -1986,14 +2043,29 @@ void mglc_tile(wchar_t out[1024], long , mglArg *a, int k[10])
if(k[0]!=1) return;
else if(k[1]!=1)
mglprintf(out,1024,L"gr->Tile(%s, \"%s\");", a[0].s, k[1]==2?a[1].s:"");
- else if(k[1]==1 && k[2]!=1)
- mglprintf(out,1024,L"gr->Tile(%s, %s, \"%s\");", a[0].s, a[1].s, k[2]==2?a[2].s:"");
- else if(k[1]==1 && k[2]==1 && k[3]==1)
- mglprintf(out,1024,L"gr->Tile(%s, %s, %s, %s, \"%s\");", a[0].s, a[1].s, a[2].s, a[3].s, k[4]==2?a[4].s:"");
else if(k[1]==1 && k[2]==1)
mglprintf(out,1024,L"gr->Tile(%s, %s, %s, \"%s\");", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"");
}
//-----------------------------------------------------------------------------
+int mgls_tiles(mglGraph *gr, long , mglArg *a, int k[10])
+{
+ if(k[0]!=1) return 1;
+ else if(k[1]==1 && k[2]!=1)
+ gr->TileS(*(a[0].d),*(a[1].d),k[2]==2?a[2].s:0);
+ else if(k[1]==1 && k[2]==1 && k[3]==1)
+ gr->TileS(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2? a[4].s:0);
+ else return 1;
+ return 0;
+}
+void mglc_tiles(wchar_t out[1024], long , mglArg *a, int k[10])
+{
+ if(k[0]!=1) return;
+ else if(k[1]==1 && k[2]!=1)
+ mglprintf(out,1024,L"gr->TileS(%s, %s, \"%s\");", a[0].s, a[1].s, k[2]==2?a[2].s:"");
+ else if(k[1]==1 && k[2]==1 && k[3]==1)
+ mglprintf(out,1024,L"gr->TileS(%s, %s, %s, %s, \"%s\");", a[0].s, a[1].s, a[2].s, a[3].s, k[4]==2?a[4].s:"");
+}
+//-----------------------------------------------------------------------------
int mgls_text(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==2)
@@ -2060,13 +2132,13 @@ void mglc_transparent(wchar_t out[1024], long , mglArg *a, int k[10])
//-----------------------------------------------------------------------------
int mgls_transptype(mglGraph *gr, long , mglArg *a, int k[10])
{
- if(k[0]==3) gr->TranspType = int(a[0].v);
+ if(k[0]==3) gr->TranspType = iint(a[0].v);
else return 1;
return 0;
}
void mglc_transptype(wchar_t out[1024], long , mglArg *a, int k[10])
{
- if(k[0]==3) mglprintf(out,1024,L"gr->TranspType = %d;", int(a[0].v));
+ if(k[0]==3) mglprintf(out,1024,L"gr->TranspType = %d;", iint(a[0].v));
}
//-----------------------------------------------------------------------------
int mgls_transform(mglGraph *, long , mglArg *a, int k[10])
@@ -2166,7 +2238,7 @@ int mgls_triplot(mglGraph *gr, long , mglArg *a, int k[10])
}
void mglc_triplot(wchar_t out[1024], long , mglArg *a, int k[10])
{
- if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[3]==1)
+ if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1)
mglprintf(out,1024,L"gr->TriPlot(%s, %s, %s, %s, %s, \"%s\");", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s, k[5]==2?a[5].s:"");
else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1)
mglprintf(out,1024,L"gr->TriPlot(%s, %s, %s, %s, \"%s\");", a[0].s, a[1].s, a[2].s, a[3].s, k[4]==2?a[4].s:"");
@@ -2174,6 +2246,51 @@ void mglc_triplot(wchar_t out[1024], long , mglArg *a, int k[10])
mglprintf(out,1024,L"gr->TriPlot(%s, %s, %s, \"%s\", %g);", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"", k[4]==3?a[4].v:NAN);
}
//-----------------------------------------------------------------------------
+int mgls_quadplot(mglGraph *gr, long , mglArg *a, int k[10])
+{
+ if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1)
+ gr->QuadPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),k[5]==2?a[5].s:0);
+ else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1)
+ gr->QuadPlot(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s:0);
+ else if(k[0]==1 && k[1]==1 && k[2]==1)
+ gr->QuadPlot(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s:0,k[4]==3?a[4].v:NAN);
+ else return 1;
+ return 0;
+}
+void mglc_quadplot(wchar_t out[1024], long , mglArg *a, int k[10])
+{
+ if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1)
+ mglprintf(out,1024,L"gr->QuadPlot(%s, %s, %s, %s, %s, \"%s\");", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s, k[5]==2?a[5].s:"");
+ else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1)
+ mglprintf(out,1024,L"gr->QuadPlot(%s, %s, %s, %s, \"%s\");", a[0].s, a[1].s, a[2].s, a[3].s, k[4]==2?a[4].s:"");
+ else if(k[0]==1 && k[1]==1 && k[2]==1)
+ mglprintf(out,1024,L"gr->QuadPlot(%s, %s, %s, \"%s\", %g);", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"", k[4]==3?a[4].v:NAN);
+}
+//-----------------------------------------------------------------------------
+int mgls_tricont(mglGraph *gr, long , mglArg *a, int k[10])
+{
+ if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1 && k[5]==1)
+ gr->TriContV(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),k[6]==2?a[6].s:0,k[7]==3?a[7].v:NAN);
+ else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1)
+ gr->TriContV(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),k[5]==2?a[5].s:0,k[6]==3?a[6].v:NAN);
+ else if(k[0]==1 && k[1]==1 && k[2]==1 && k[5]==1)
+ gr->TriCont(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s:0,k[5]==3?a[5].v:NAN);
+ else return 1;
+ return 0;
+}
+void mglc_tricont(wchar_t out[1024], long , mglArg *a, int k[10])
+{
+ if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1 && k[5]==1)
+ mglprintf(out,1024,L"gr->TriContV(%s, %s, %s, %s, %s, %s, \"%s\", %g);",
+ a[0].s, a[1].s, a[2].s, a[3].s, a[4].s, a[5].s, k[6]==2?a[6].s:"",k[7]==3?a[7].v:NAN);
+ else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1)
+ mglprintf(out,1024,L"gr->TriContV(%s, %s, %s, %s, %s, \"%s\", %g);",
+ a[0].s, a[1].s, a[2].s, a[3].s, a[4].s, k[5]==2?a[5].s:"",k[6]==3?a[6].v:NAN);
+ else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1)
+ mglprintf(out,1024,L"gr->TriCont(%s, %s, %s, %s, \"%s\", %g);",
+ a[0].s, a[1].s, a[2].s, a[3].s, k[4]==2?a[4].s:"", k[5]==3?a[5].v:NAN);
+}
+//-----------------------------------------------------------------------------
int mgls_ternary(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]==3) gr->Ternary(a[0].v!=0);
@@ -2230,13 +2347,13 @@ int mgls_vect(mglGraph *gr, long , mglArg *a, int k[10])
int i;
for(i=0;i<7;i++) if(k[i]!=1) break;
if(i==2)
- gr->Vect(*(a[0].d),*(a[1].d),k[2]==2?a[2].s:0, k[3]==3?a[3].v:NAN, k[4]==3?int(a[4].v):0);
+ gr->Vect(*(a[0].d),*(a[1].d),k[2]==2?a[2].s:0, k[3]==3?a[3].v:NAN, k[4]==3?iint(a[4].v):0);
else if(i==4)
- gr->Vect(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s:0, k[5]==3?a[5].v:NAN, k[6]==3?int(a[6].v):0);
+ gr->Vect(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s:0, k[5]==3?a[5].v:NAN, k[6]==3?iint(a[6].v):0);
else if(i==3)
- gr->Vect(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s:0, k[4]==3?int(a[4].v):0);
+ gr->Vect(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s:0, k[4]==3?iint(a[4].v):0);
else if(i==6)
- gr->Vect(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),k[6]==2?a[6].s:0, k[7]==3?int(a[7].v):0);
+ gr->Vect(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),k[6]==2?a[6].s:0, k[7]==3?iint(a[7].v):0);
else return 1;
return 0;
}
@@ -2245,13 +2362,13 @@ void mglc_vect(wchar_t out[1024], long , mglArg *a, int k[10])
int i;
for(i=0;i<7;i++) if(k[i]!=1) break;
if(i==2)
- mglprintf(out,1024,L"gr->Vect(%s, %s, \"%s\", %g, %d);", a[0].s, a[1].s, k[2]==2?a[2].s:"", k[3]==3?a[3].v:NAN,k[4]==3?int(a[4].v):0);
+ mglprintf(out,1024,L"gr->Vect(%s, %s, \"%s\", %g, %d);", a[0].s, a[1].s, k[2]==2?a[2].s:"", k[3]==3?a[3].v:NAN,k[4]==3?iint(a[4].v):0);
else if(i==4)
- mglprintf(out,1024,L"gr->Vect(%s, %s, %s, %s, \"%s\", %g, %d);", a[0].s, a[1].s, a[2].s, a[3].s, k[4]==2?a[4].s:"", k[5]==3?a[5].v:NAN,k[6]==3?int(a[6].v):0);
+ mglprintf(out,1024,L"gr->Vect(%s, %s, %s, %s, \"%s\", %g, %d);", a[0].s, a[1].s, a[2].s, a[3].s, k[4]==2?a[4].s:"", k[5]==3?a[5].v:NAN,k[6]==3?iint(a[6].v):0);
else if(i==3)
- mglprintf(out,1024,L"gr->Vect(%s, %s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:0,k[4]==3?int(a[4].v):0);
+ mglprintf(out,1024,L"gr->Vect(%s, %s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:0,k[4]==3?iint(a[4].v):0);
else if(i==6)
- mglprintf(out,1024,L"gr->Vect(%s, %s, %s, %s, %s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s, a[5].s, k[6]==2?a[6].s:"",k[7]==3?int(a[7].v):0);
+ mglprintf(out,1024,L"gr->Vect(%s, %s, %s, %s, %s, %s, \"%s\", %d);", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s, a[5].s, k[6]==2?a[6].s:"",k[7]==3?iint(a[7].v):0);
}
//-----------------------------------------------------------------------------
int mgls_vectl(mglGraph *gr, long , mglArg *a, int k[10])
@@ -2306,7 +2423,7 @@ void mglc_traj(wchar_t out[1024], long , mglArg *a, int k[10])
//-----------------------------------------------------------------------------
int mgls_xlabel(mglGraph *gr, long , mglArg *a, int k[10])
{
- if(k[0]==2) gr->Labelw('x', a[0].w, k[1]==3?a[1].v:1, k[2]==3?a[2].v:-1.4, k[3]==3?a[3].v:0);
+ if(k[0]==2) gr->Labelw('x', a[0].w, k[1]==3?a[1].v:0, k[2]==3?a[2].v:-1.4, k[3]==3?a[3].v:0);
else return 1;
return 0;
}
@@ -2317,7 +2434,7 @@ void mglc_xlabel(wchar_t out[1024], long , mglArg *a, int k[10])
//-----------------------------------------------------------------------------
int mgls_ylabel(mglGraph *gr, long , mglArg *a, int k[10])
{
- if(k[0]==2) gr->Labelw('y', a[0].w, k[1]==3?a[1].v:1, k[2]==3?a[2].v:-1.4, k[3]==3?a[3].v:0);
+ if(k[0]==2) gr->Labelw('y', a[0].w, k[1]==3?a[1].v:0, k[2]==3?a[2].v:-1.4, k[3]==3?a[3].v:0);
else return 1;
return 0;
}
@@ -2328,7 +2445,7 @@ void mglc_ylabel(wchar_t out[1024], long , mglArg *a, int k[10])
//-----------------------------------------------------------------------------
int mgls_zlabel(mglGraph *gr, long , mglArg *a, int k[10])
{
- if(k[0]==2) gr->Labelw('z', a[0].w, k[1]==3?a[1].v:1, k[2]==3?a[2].v:-1.4, k[3]==3?a[3].v:0);
+ if(k[0]==2) gr->Labelw('z', a[0].w, k[1]==3?a[1].v:0, k[2]==3?a[2].v:-1.4, k[3]==3?a[3].v:0);
else return 1;
return 0;
}
@@ -2339,7 +2456,7 @@ void mglc_zlabel(wchar_t out[1024], long , mglArg *a, int k[10])
//-----------------------------------------------------------------------------
int mgls_tlabel(mglGraph *gr, long , mglArg *a, int k[10])
{
- if(k[0]==2) gr->Labelw('t', a[0].w, k[1]==3?a[1].v:1, k[2]==3?a[2].v:-1.4, k[3]==3?a[3].v:0);
+ if(k[0]==2) gr->Labelw('t', a[0].w, k[1]==3?a[1].v:0, k[2]==3?a[2].v:-1.4, k[3]==3?a[3].v:0);
else return 1;
return 0;
}
@@ -2423,7 +2540,7 @@ int mgls_xtick(mglGraph *gr, long n, mglArg *a, int k[10])
gr->SetTicksVal('x',i,v,s);
}
else if(k[0]==3)
- gr->SetTicks('x', a[0].v, k[1]==3?int(a[1].v):0, k[2]==3?a[2].v:NAN);
+ gr->SetTicks('x', a[0].v, k[1]==3?iint(a[1].v):0, k[2]==3?a[2].v:NAN);
else if(k[0]==2) gr->SetXTT(a[0].w);
else return 1;
return 0;
@@ -2431,9 +2548,9 @@ int mgls_xtick(mglGraph *gr, long n, mglArg *a, int k[10])
void mglc_xtick(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==3 && k[1]==3 && k[2]==3)
- mglprintf(out,1024,L"gr->SetTicks('x', %g, %d, %g);", a[0].v, int(a[1].v),a[2].v);
+ mglprintf(out,1024,L"gr->SetTicks('x', %g, %d, %g);", a[0].v, iint(a[1].v),a[2].v);
else if(k[0]==3 && k[1]==3)
- mglprintf(out,1024,L"gr->SetTicks('x', %g, %d);", a[0].v, int(a[1].v));
+ mglprintf(out,1024,L"gr->SetTicks('x', %g, %d);", a[0].v, iint(a[1].v));
else if(k[0]==3 && k[1]==2)
mglprintf(out,1024,L"gr->SetTicksVal('x', %g, \"%s\");", a[0].v, a[1].s);
else if(k[0]==3) mglprintf(out,1024,L"gr->SetTicks('x', %g);", a[0].v);
@@ -2455,7 +2572,7 @@ int mgls_ytick(mglGraph *gr, long n, mglArg *a, int k[10])
gr->SetTicksVal('y',i,v,s);
}
else if(k[0]==3)
- gr->SetTicks('y', a[0].v, k[1]==3?int(a[1].v):0, k[2]==3?a[2].v:NAN);
+ gr->SetTicks('y', a[0].v, k[1]==3?iint(a[1].v):0, k[2]==3?a[2].v:NAN);
else if(k[0]==2) gr->SetYTT(a[0].w);
else return 1;
return 0;
@@ -2463,9 +2580,9 @@ int mgls_ytick(mglGraph *gr, long n, mglArg *a, int k[10])
void mglc_ytick(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==3 && k[1]==3 && k[2]==3)
- mglprintf(out,1024,L"gr->SetTicks('y', %g, %d, %g);", a[0].v, int(a[1].v),a[2].v);
+ mglprintf(out,1024,L"gr->SetTicks('y', %g, %d, %g);", a[0].v, iint(a[1].v),a[2].v);
else if(k[0]==3 && k[1]==3)
- mglprintf(out,1024,L"gr->SetTicks('y', %g, %d);", a[0].v, int(a[1].v));
+ mglprintf(out,1024,L"gr->SetTicks('y', %g, %d);", a[0].v, iint(a[1].v));
else if(k[0]==3 && k[1]==2)
mglprintf(out,1024,L"gr->SetTicksVal('y', %g, \"%s\");", a[0].v, a[1].s);
else if(k[0]==3) mglprintf(out,1024,L"gr->SetTicks('y', %g);", a[0].v);
@@ -2486,7 +2603,7 @@ int mgls_ztick(mglGraph *gr, long n, mglArg *a, int k[10])
gr->SetTicksVal('z',i,v,s);
}
else if(k[0]==3)
- gr->SetTicks('z', a[0].v, k[1]==3?int(a[1].v):0, k[2]==3?a[2].v:NAN);
+ gr->SetTicks('z', a[0].v, k[1]==3?iint(a[1].v):0, k[2]==3?a[2].v:NAN);
else if(k[0]==2) gr->SetZTT(a[0].w);
else return 1;
return 0;
@@ -2494,9 +2611,9 @@ int mgls_ztick(mglGraph *gr, long n, mglArg *a, int k[10])
void mglc_ztick(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==3 && k[1]==3 && k[2]==3)
- mglprintf(out,1024,L"gr->SetTicks('z', %g, %d, %g);", a[0].v, int(a[1].v),a[2].v);
+ mglprintf(out,1024,L"gr->SetTicks('z', %g, %d, %g);", a[0].v, iint(a[1].v),a[2].v);
else if(k[0]==3 && k[1]==3)
- mglprintf(out,1024,L"gr->SetTicks('z', %g, %d);", a[0].v, int(a[1].v));
+ mglprintf(out,1024,L"gr->SetTicks('z', %g, %d);", a[0].v, iint(a[1].v));
else if(k[0]==3 && k[1]==2)
mglprintf(out,1024,L"gr->SetTicksVal('z', %g, \"%s\");", a[0].v, a[1].s);
else if(k[0]==3) mglprintf(out,1024,L"gr->SetTicks('z', %g);", a[0].v);
@@ -2540,14 +2657,14 @@ void mglc_error(wchar_t out[1024], long , mglArg *a, int k[10])
//-----------------------------------------------------------------------------
int mgls_extend(mglGraph *, long , mglArg *a, int k[10])
{
- if(k[0]==1 && k[1]==3) a[0].d->Extend(int(a[1].v),k[2]==3?int(a[2].v):0);
+ if(k[0]==1 && k[1]==3) a[0].d->Extend(iint(a[1].v),k[2]==3?iint(a[2].v):0);
else return 1;
return 0;
}
void mglc_extend(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==3)
- mglprintf(out,1024,L"%s.Extend(%d, %d);", a[0].s, int(a[1].v), k[2]==3?int(a[2].v):0);
+ mglprintf(out,1024,L"%s.Extend(%d, %d);", a[0].s, iint(a[1].v), k[2]==3?iint(a[2].v):0);
}
//-----------------------------------------------------------------------------
int mgls_info(mglGraph *gr, long , mglArg *a, int k[10])
@@ -2589,20 +2706,20 @@ void mglc_inplot(wchar_t out[1024], long , mglArg *a, int k[10])
//-----------------------------------------------------------------------------
int mgls_columnplot(mglGraph *gr, long , mglArg *a, int k[10])
{
- if(k[0]==3 && k[1]==3) gr->ColumnPlot(int(a[0].v), int(a[1].v));
+ if(k[0]==3 && k[1]==3) gr->ColumnPlot(iint(a[0].v), iint(a[1].v), k[2]==3?a[2].v:0);
else return 1;
return 0;
}
void mglc_columnplot(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==3 && k[1]==3)
- mglprintf(out,1024,L"gr->ColumnPlot(%d, %d);", int(a[0].v), int(a[1].v));
+ mglprintf(out,1024,L"gr->ColumnPlot(%d, %d, %g);", iint(a[0].v), iint(a[1].v), k[2]==3?a[2].v:0);
}
//-----------------------------------------------------------------------------
int mgls_stickplot(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3)
- gr->StickPlot(int(a[0].v), int(a[1].v), a[2].v, a[3].v);
+ gr->StickPlot(iint(a[0].v), iint(a[1].v), a[2].v, a[3].v);
else return 1;
return 0;
}
@@ -2610,7 +2727,7 @@ void mglc_stickplot(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==3)
mglprintf(out,1024,L"gr->StickPlot(%d, %d, %g, %g);",
- int(a[0].v), int(a[1].v), a[2].v, a[3].v);
+ iint(a[0].v), iint(a[1].v), a[2].v, a[3].v);
}
//-----------------------------------------------------------------------------
int mgls_pipe(mglGraph *gr, long , mglArg *a, int k[10])
@@ -2618,16 +2735,16 @@ int mgls_pipe(mglGraph *gr, long , mglArg *a, int k[10])
int i;
for(i=0;i<7;i++) if(k[i]!=1) break;
if(i==2)
- gr->Pipe(*(a[0].d),*(a[1].d),k[2]==2?a[2].s:0,k[3]==3?a[3].v:0.05,k[4]==3?int(a[4].v):5,
+ gr->Pipe(*(a[0].d),*(a[1].d),k[2]==2?a[2].s:0,k[3]==3?a[3].v:0.05,k[4]==3?iint(a[4].v):5,
true,k[5]==3?a[5].v:NAN);
else if(i==4)
gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),k[4]==2?a[4].s:0,k[5]==3?a[5].v:0.05,
- k[6]==3?int(a[6].v):5,true,k[7]==3?a[7].v:NAN);
+ k[6]==3?iint(a[6].v):5,true,k[7]==3?a[7].v:NAN);
else if(i==3)
- gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s:0,k[4]==3?a[4].v:0.05,k[5]==3?int(a[5].v):3);
+ gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),k[3]==2?a[3].s:0,k[4]==3?a[4].v:0.05,k[5]==3?iint(a[5].v):3);
else if(i==6)
gr->Pipe(*(a[0].d),*(a[1].d),*(a[2].d),*(a[3].d),*(a[4].d),*(a[5].d),
- k[6]==2?a[6].s:0,k[7]==3?a[7].v:0.05,k[8]==3?int(a[8].v):3);
+ k[6]==2?a[6].s:0,k[7]==3?a[7].v:0.05,k[8]==3?iint(a[8].v):3);
else return 1;
return 0;
}
@@ -2636,13 +2753,13 @@ void mglc_pipe(wchar_t out[1024], long , mglArg *a, int k[10])
int i;
for(i=0;i<7;i++) if(k[i]!=1) break;
if(i==2)
- mglprintf(out,1024,L"gr->Pipe(%s, %s, \"%s\", %g, %d, true, %g);", a[0].s, a[1].s, k[2]==2?a[2].s:"", k[3]==3?a[3].v:0.05, k[4]==3?int(a[4].v):5, k[5]==3?a[5].v:NAN);
+ mglprintf(out,1024,L"gr->Pipe(%s, %s, \"%s\", %g, %d, true, %g);", a[0].s, a[1].s, k[2]==2?a[2].s:"", k[3]==3?a[3].v:0.05, k[4]==3?iint(a[4].v):5, k[5]==3?a[5].v:NAN);
else if(i==4)
- mglprintf(out,1024,L"gr->Pipe(%s, %s, %s, %s, \"%s\", %g, %d, true, %g);", a[0].s, a[1].s, a[2].s, a[3].s, k[4]==2?a[4].s:"", k[5]==3?a[5].v:0.05, k[6]==3?int(a[6].v):5, k[7]==3?a[7].v:NAN);
+ mglprintf(out,1024,L"gr->Pipe(%s, %s, %s, %s, \"%s\", %g, %d, true, %g);", a[0].s, a[1].s, a[2].s, a[3].s, k[4]==2?a[4].s:"", k[5]==3?a[5].v:0.05, k[6]==3?iint(a[6].v):5, k[7]==3?a[7].v:NAN);
else if(i==3)
- mglprintf(out,1024,L"gr->Pipe(%s, %s, %s, \"%s\", %g, %d);", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"", k[4]==3?a[4].v:0.05, k[5]==3?int(a[5].v):3);
+ mglprintf(out,1024,L"gr->Pipe(%s, %s, %s, \"%s\", %g, %d);", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"", k[4]==3?a[4].v:0.05, k[5]==3?iint(a[5].v):3);
else if(i==6)
- mglprintf(out,1024,L"gr->Pipe(%s, %s, %s, %s, %s, %s, \"%s\", %g, %d);", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s, a[5].s, k[6]==2?a[6].s:"", k[7]==3?a[7].v:0.05, k[8]==3?int(a[8].v):3);
+ mglprintf(out,1024,L"gr->Pipe(%s, %s, %s, %s, %s, %s, \"%s\", %g, %d);", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s, a[5].s, k[6]==2?a[6].s:"", k[7]==3?a[7].v:0.05, k[8]==3?iint(a[8].v):3);
}
//-----------------------------------------------------------------------------
int mgls_origin(mglGraph *gr, long , mglArg *a, int k[10])
@@ -2675,22 +2792,22 @@ void mglc_plotfactor(wchar_t out[1024], long , mglArg *a, int k[10])
int mgls_norm(mglGraph *, long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==3 && k[2]==3)
- a[0].d->Norm(a[1].v,a[2].v,k[3]==3?a[3].v!=0:false,k[4]==3?int(a[4].v):0);
+ a[0].d->Norm(a[1].v,a[2].v,k[3]==3?a[3].v!=0:false,k[4]==3?iint(a[4].v):0);
else return 1;
return 0;
}
void mglc_norm(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==3 && k[2]==3)
- mglprintf(out,1024,L"%s.Norm(%g, %g, %s, %d);", a[0].s, a[1].v, a[2].v, (k[3]==3&&a[3].v!=0)?"true":"false", k[4]==3?int(a[4].v):0);
+ mglprintf(out,1024,L"%s.Norm(%g, %g, %s, %d);", a[0].s, a[1].v, a[2].v, (k[3]==3&&a[3].v!=0)?"true":"false", k[4]==3?iint(a[4].v):0);
}
//-----------------------------------------------------------------------------
int mgls_hist(mglGraph *gr, long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==3 && k[4]==3 && k[5]==3)
- *(a[0].d) = a[1].d->Hist(*(a[2].d), int(a[3].v), a[4].v, a[5].v, k[6]==3?int(a[6].v):0);
+ *(a[0].d) = a[1].d->Hist(*(a[2].d), iint(a[3].v), a[4].v, a[5].v, k[6]==3?iint(a[6].v):0);
else if(k[0]==1 && k[1]==1 && k[2]==3 && k[3]==3 && k[4]==3)
- *(a[0].d) = a[1].d->Hist(int(a[2].v), a[3].v, a[4].v, k[5]==3?int(a[5].v):0);
+ *(a[0].d) = a[1].d->Hist(iint(a[2].v), a[3].v, a[4].v, k[5]==3?iint(a[5].v):0);
else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1)
gr->Hist(*(a[0].d), *(a[1].d), *(a[2].d), *(a[3].d), *(a[4].d));
else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1)
@@ -2703,9 +2820,9 @@ int mgls_hist(mglGraph *gr, long , mglArg *a, int k[10])
void mglc_hist(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==3 && k[4]==3 && k[5]==3)
- mglprintf(out,1024,L"%s = %s.Hist(%s, %d, %g, %g, %d);", a[0].s, a[1].s, a[2].s, int(a[3].v), a[4].v, a[5].v, k[6]==3?int(a[6].v):0);
+ mglprintf(out,1024,L"%s = %s.Hist(%s, %d, %g, %g, %d);", a[0].s, a[1].s, a[2].s, iint(a[3].v), a[4].v, a[5].v, k[6]==3?iint(a[6].v):0);
else if(k[0]==1 && k[1]==1 && k[2]==3 && k[3]==3 && k[4]==3)
- mglprintf(out,1024,L"%s = %s.Hist(%d, %g, %g, %d);", a[0].s, a[1].s, int(a[2].v), a[3].v, a[4].v, k[5]==3?int(a[5].v):0);
+ mglprintf(out,1024,L"%s = %s.Hist(%d, %g, %g, %d);", a[0].s, a[1].s, iint(a[2].v), a[3].v, a[4].v, k[5]==3?iint(a[5].v):0);
else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1 && k[4]==1)
mglprintf(out,1024,L"gr->Hist(%s, %s, %s, %s, %s);", a[0].s, a[1].s, a[2].s, a[3].s, a[4].s);
else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==1)
@@ -2723,29 +2840,53 @@ int mgls_mirror(mglGraph *, long , mglArg *a, int k[10])
void mglc_mirror(wchar_t out[1024], long , mglArg *a, int k[10])
{ if(k[0]==1 && k[1]==2) mglprintf(out,1024,L"%s.Mirror(\"%s\");", a[0].s, a[1].s); }
//-----------------------------------------------------------------------------
+int mgls_hankel(mglGraph *, long , mglArg *a, int k[10])
+{
+ if(k[0]==1 && k[1]==2) a[0].d->Hankel(a[1].s); else return 1;
+ return 0;
+}
+void mglc_hankel(wchar_t out[1024], long , mglArg *a, int k[10])
+{ if(k[0]==1 && k[1]==2) mglprintf(out,1024,L"%s.Hankel('%s');", a[0].s, a[1].s); }
+//-----------------------------------------------------------------------------
+int mgls_sinfft(mglGraph *, long , mglArg *a, int k[10])
+{
+ if(k[0]==1 && k[1]==2) a[0].d->SinFFT(a[1].s); else return 1;
+ return 0;
+}
+void mglc_sinfft(wchar_t out[1024], long , mglArg *a, int k[10])
+{ if(k[0]==1 && k[1]==2) mglprintf(out,1024,L"%s.SinFFT('%s');", a[0].s, a[1].s); }
+//-----------------------------------------------------------------------------
+int mgls_cosfft(mglGraph *, long , mglArg *a, int k[10])
+{
+ if(k[0]==1 && k[1]==2) a[0].d->CosFFT(a[1].s); else return 1;
+ return 0;
+}
+void mglc_cosfft(wchar_t out[1024], long , mglArg *a, int k[10])
+{ if(k[0]==1 && k[1]==2) mglprintf(out,1024,L"%s.CosFFT('%s');", a[0].s, a[1].s); }
+//-----------------------------------------------------------------------------
int mgls_new(mglGraph *, long , mglArg *a, int k[10])
{
- if(k[0]==1) a[0].d->Create(k[1]==3?int(a[1].v):1, k[2]==3?int(a[2].v):1, k[3]==3?int(a[3].v):1);
+ if(k[0]==1) a[0].d->Create(k[1]==3?iint(a[1].v):1, k[2]==3?iint(a[2].v):1, k[3]==3?iint(a[3].v):1);
else return 1;
return 0;
}
void mglc_new(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1)
- mglprintf(out,1024,L"%s.Create(%d, %d, %d);", a[0].s, k[1]==3?int(a[1].v):1, k[2]==3?int(a[2].v):1, k[3]==3?int(a[3].v):1);
+ mglprintf(out,1024,L"%s.Create(%d, %d, %d);", a[0].s, k[1]==3?iint(a[1].v):1, k[2]==3?iint(a[2].v):1, k[3]==3?iint(a[3].v):1);
}
//-----------------------------------------------------------------------------
int mgls_var(mglGraph *, long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==3 && k[2]==3)
- { a[0].d->Create(int(a[1].v)); a[0].d->Fill(a[2].v, k[3]==3?a[3].v:NAN); }
+ { a[0].d->Create(iint(a[1].v)); a[0].d->Fill(a[2].v, k[3]==3?a[3].v:NAN); }
else return 1;
return 0;
}
void mglc_var(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==3 && k[2]==3)
- mglprintf(out,1024,L"%s.Create(%d);\t%s.Fill(%g,%g);",a[0].s, int(a[1].v), a[0].s, a[2].v, k[3]==3?a[3].v:NAN);
+ mglprintf(out,1024,L"%s.Create(%d);\t%s.Fill(%g,%g);",a[0].s, iint(a[1].v), a[0].s, a[2].v, k[3]==3?a[3].v:NAN);
}
//-----------------------------------------------------------------------------
int mgls_chdir(mglGraph *gr, long , mglArg *a, int k[10])
@@ -2922,14 +3063,14 @@ void mglc_arrowsize(wchar_t out[1024], long , mglArg *a, int k[10])
int mgls_rearrange(mglGraph *, long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==3)
- a[0].d->Rearrange(int(a[1].v), k[2]==3?int(a[2].v):0, k[3]==3?int(a[3].v):0);
+ a[0].d->Rearrange(iint(a[1].v), k[2]==3?iint(a[2].v):0, k[3]==3?iint(a[3].v):0);
else return 1;
return 0;
}
void mglc_rearrange(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==3)
- mglprintf(out,1024,L"%s.Rearrange(%d, %d, %d);",a[0].s, int(a[1].v), k[2]==3?int(a[2].v):0, k[3]==3?int(a[3].v):0);
+ mglprintf(out,1024,L"%s.Rearrange(%d, %d, %d);",a[0].s, iint(a[1].v), k[2]==3?iint(a[2].v):0, k[3]==3?iint(a[3].v):0);
}
//-----------------------------------------------------------------------------
int mgls_ctick(mglGraph *gr, long , mglArg *a, int k[10])
@@ -2947,32 +3088,32 @@ void mglc_ctick(wchar_t out[1024], long , mglArg *a, int k[10])
//-----------------------------------------------------------------------------
int mgls_fplot(mglGraph *gr, long , mglArg *a, int k[10])
{
- if(k[0]==2 && k[1]==2 && k[2]==2) gr->Plot(a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:0, k[4]==3?int(a[4].v):100);
- else if(k[0]==2) gr->Plot(a[0].s, k[1]==2?a[1].s:0, k[2]==3?a[2].v:NAN, k[3]==3?int(a[3].v):100);
+ if(k[0]==2 && k[1]==2 && k[2]==2) gr->Plot(a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:0, k[4]==3?iint(a[4].v):100);
+ else if(k[0]==2) gr->Plot(a[0].s, k[1]==2?a[1].s:0, k[2]==3?a[2].v:NAN, k[3]==3?iint(a[3].v):100);
else return 1;
return 0;
}
void mglc_fplot(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==2 && k[1]==2 && k[2]==2)
- mglprintf(out,1024,L"gr->Plot(\"%s\", \"%s\", \"%s\", \"%s\", %d);", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"", k[4]==3?int(a[4].v):100);
+ mglprintf(out,1024,L"gr->Plot(\"%s\", \"%s\", \"%s\", \"%s\", %d);", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"", k[4]==3?iint(a[4].v):100);
else if(k[0]==2)
- mglprintf(out,1024,L"gr->Plot(\"%s\", \"%s\", %g, %d);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN, k[3]==3?int(a[3].v):100);
+ mglprintf(out,1024,L"gr->Plot(\"%s\", \"%s\", %g, %d);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?a[2].v:NAN, k[3]==3?iint(a[3].v):100);
}
//-----------------------------------------------------------------------------
int mgls_fsurf(mglGraph *gr, long , mglArg *a, int k[10])
{
- if(k[0]==2 && k[1]==2 && k[2]==2) gr->Surf(a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:0, k[4]==3?int(a[4].v):100);
- else if(k[0]==2) gr->Surf(a[0].s, k[1]==2?a[1].s:0, k[2]==3?int(a[2].v):100);
+ if(k[0]==2 && k[1]==2 && k[2]==2) gr->Surf(a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:0, k[4]==3?iint(a[4].v):100);
+ else if(k[0]==2) gr->Surf(a[0].s, k[1]==2?a[1].s:0, k[2]==3?iint(a[2].v):100);
else return 1;
return 0;
}
void mglc_fsurf(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==2 && k[1]==2 && k[2]==2)
- mglprintf(out,1024,L"gr->Surf(\"%s\", \"%s\", \"%s\", \"%s\", %d);", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"", k[4]==3?int(a[4].v):100);
+ mglprintf(out,1024,L"gr->Surf(\"%s\", \"%s\", \"%s\", \"%s\", %d);", a[0].s, a[1].s, a[2].s, k[3]==2?a[3].s:"", k[4]==3?iint(a[4].v):100);
else if(k[0]==2)
- mglprintf(out,1024,L"gr->Surf(\"%s\", \"%s\", %d);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?int(a[2].v):100);
+ mglprintf(out,1024,L"gr->Surf(\"%s\", \"%s\", %d);", a[0].s, k[1]==2?a[1].s:"", k[2]==3?iint(a[2].v):100);
}
//-----------------------------------------------------------------------------
int mgls_fgets(mglGraph *gr, long , mglArg *a, int k[10])
@@ -2981,29 +3122,37 @@ int mgls_fgets(mglGraph *gr, long , mglArg *a, int k[10])
FILE *fp;
if(k[0]==3 && k[1]==3 && k[2]==3 && k[3]==2)
{
- int i, n = (k[4]==3?int(a[4].v):0);
+ int i, n = (k[4]==3?iint(a[4].v):0);
fp = fopen(a[3].s,"rt");
if(!fp)
{
if(gr->Message) sprintf(gr->Message,"Wrong file %s",a[3].s);
return 0;
}
- for(i=0;i<n;i++) fgets(buf,1024,fp);
- fgets(buf,1024,fp);
+ for(i=0;i<n;i++) if(!fgets(buf,1024,fp)) continue;
+ if(!fgets(buf,1024,fp))
+ {
+ if(gr->Message) sprintf(gr->Message,"Couldn't read %d-th string of file %s",n,a[3].s);
+ fclose(fp); return 0;
+ }
fclose(fp);
gr->Text(mglPoint(a[0].v,a[1].v,a[2].v),buf, (k[5]==2 && a[5].s[0]!=0)?a[5].s:gr->FontDef, k[6]==3?a[6].v:-1.4);
}
else if(k[0]==3 && k[1]==3 && k[2]==2)
{
- int i, n = k[3]==3?int(a[3].v):0;
+ int i, n = k[3]==3?iint(a[3].v):0;
fp = fopen(a[2].s,"rt");
if(!fp)
{
if(gr->Message) sprintf(gr->Message,"Wrong file %s",a[2].s);
return 0;
}
- for(i=0;i<n;i++) fgets(buf,1024,fp);
- fgets(buf,1024,fp);
+ for(i=0;i<n;i++) if(!fgets(buf,1024,fp)) continue;
+ if(!fgets(buf,1024,fp))
+ {
+ if(gr->Message) sprintf(gr->Message,"Couldn't read %d-th string of file %s",n,a[3].s);
+ fclose(fp); return 0;
+ }
fclose(fp);
gr->Text(mglPoint(a[0].v,a[1].v,gr->Min.z),buf, (k[4]==2 && a[4].s[0]!=0)?a[4].s:gr->FontDef, k[5]==3?a[5].v:-1.4);
}
@@ -3119,18 +3268,18 @@ void mglc_evaluate(wchar_t out[1024], long , mglArg *a, int k[10])
int mgls_put(mglGraph *, long , mglArg *a, int k[10])
{
if(k[1]==3 && k[0]==1)
- a[0].d->Put(a[1].v, k[2]==3?int(a[2].v):-1, k[3]==3?int(a[3].v):-1, k[4]==3?int(a[4].v):-1);
+ a[0].d->Put(a[1].v, k[2]==3?iint(a[2].v):-1, k[3]==3?iint(a[3].v):-1, k[4]==3?iint(a[4].v):-1);
else if(k[0]==1 && k[1]==1)
- a[0].d->Put(*(a[1].d), k[2]==3?int(a[2].v):-1, k[3]==3?int(a[3].v):-1, k[4]==3?int(a[4].v):-1);
+ a[0].d->Put(*(a[1].d), k[2]==3?iint(a[2].v):-1, k[3]==3?iint(a[3].v):-1, k[4]==3?iint(a[4].v):-1);
else return 1;
return 0;
}
void mglc_put(wchar_t out[1024], long , mglArg *a, int k[10])
{
if(k[0]==1 && k[1]==3)
- mglprintf(out,1024,L"%s.Put(%g, %d, %d, %d);", a[0].s, a[1].v, k[2]==3?int(a[2].v):-1, k[3]==3?int(a[3].v):-1, k[4]==3?int(a[4].v):-1);
+ mglprintf(out,1024,L"%s.Put(%g, %d, %d, %d);", a[0].s, a[1].v, k[2]==3?iint(a[2].v):-1, k[3]==3?iint(a[3].v):-1, k[4]==3?iint(a[4].v):-1);
else if(k[0]==1 && k[1]==1)
- mglprintf(out,1024,L"%s.Put(%s, %d, %d, %d);", a[0].s, a[1].s, k[2]==3?int(a[2].v):-1, k[3]==3?int(a[3].v):-1, k[4]==3?int(a[4].v):-1);
+ mglprintf(out,1024,L"%s.Put(%s, %d, %d, %d);", a[0].s, a[1].s, k[2]==3?iint(a[2].v):-1, k[3]==3?iint(a[3].v):-1, k[4]==3?iint(a[4].v):-1);
}
//-----------------------------------------------------------------------------
int mgls_palette(mglGraph *gr, long , mglArg *a, int k[10])
@@ -3304,6 +3453,42 @@ int mgls_adjust(mglGraph *gr, long , mglArg *a, int k[10])
void mglc_adjust(wchar_t out[1024], long , mglArg *a, int k[10])
{ mglprintf(out,1024,L"gr->AdjustTicks(\"%s\");",k[0]==2?a[0].s:"xyzc"); }
//-----------------------------------------------------------------------------
+int mgls_insert(mglGraph *, long , mglArg *a, int k[10])
+{
+ if(k[0]==1 && k[1]==2) a[0].d->Insert(a[1].s[0], k[2]==3 ? iint(a[2].v):0, k[3]==3 ? iint(a[3].v):1);
+ else return 1;
+ return 0;
+}
+void mglc_insert(wchar_t out[1024], long , mglArg *a, int k[10])
+{
+ if(k[0]==1 && k[1]==2) mglprintf(out,1024,L"%s.Insert('%c', %d, %d);",
+ a[0].s, a[1].s[0], k[2]==3 ? iint(a[2].v):0, k[3]==3 ? iint(a[3].v):1);
+}
+//-----------------------------------------------------------------------------
+int mgls_delete(mglGraph *, long , mglArg *a, int k[10])
+{
+ if(k[0]==1 && k[1]==2) a[0].d->Delete(a[1].s[0], k[2]==3 ? iint(a[2].v):0, k[3]==3 ? iint(a[3].v):1);
+ else return 1;
+ return 0;
+}
+void mglc_delete(wchar_t out[1024], long , mglArg *a, int k[10])
+{
+ if(k[0]==1 && k[1]==2) mglprintf(out,1024,L"%s.Delete('%c', %d, %d);",
+ a[0].s, a[1].s[0], k[2]==3 ? iint(a[2].v):0, k[3]==3 ? iint(a[3].v):1);
+}
+//-----------------------------------------------------------------------------
+int mgls_roll(mglGraph *, long , mglArg *a, int k[10])
+{
+ if(k[0]==1 && k[1]==2 && k[2]==3) a[0].d->Roll(a[1].s[0], iint(a[2].v));
+ else return 1;
+ return 0;
+}
+void mglc_roll(wchar_t out[1024], long , mglArg *a, int k[10])
+{
+ if(k[0]==1 && k[1]==2 && k[2]==3) mglprintf(out,1024,L"%s.Roll('%c', %d);",
+ a[0].s, a[1].s[0], iint(a[2].v));
+}
+//-----------------------------------------------------------------------------
mglCommand mgls_base_cmd[] = {
{L"addlegend",L"Add legend entry",L"addlegend 'txt' 'fmt'", mgls_addlegend, mglc_addlegend, false, 2},
{L"addto",L"Add data or number",L"addto Var Dat|Var num", mgls_addto, mglc_addto, false, 3},
@@ -3334,7 +3519,7 @@ mglCommand mgls_base_cmd[] = {
{L"clf",L"Clear picture",L"clf", mgls_clf, mglc_clf, false, 5},
{L"cloud",L"Draw cloud",L"cloud Adat ['fmt']|Xdat Ydat Zdat Adat ['fmt']", mgls_cloud, mglc_cloud, false, 0},
{L"colorbar",L"Draw colorbar",L"colorbar ['fmt' pos]|Vdat ['fmt' pos]|'sch' pos x y w h ", mgls_colorbar, mglc_colorbar, false, 1},
- {L"columnplot",L"Set position of plot inside cell of column", L"columnplot num ind", mgls_columnplot, mglc_columnplot, false, 4},
+ {L"columnplot",L"Set position of plot inside cell of column", L"columnplot num ind [d]", mgls_columnplot, mglc_columnplot, false, 4},
{L"combine", L"Direct multiplication of arrays", L"combine Res Adat Bdat", mgls_combine, mglc_combine, false, 3},
{L"cone",L"Draw cone",L"cone x1 y1 z1 x2 y2 z2 r1 [r2 'fmt' edge]", mgls_cone, mglc_cone, false, 1},
{L"cont",L"Draw contour lines",L"cont Zdat ['fmt' num zpos]|Vdat Zdat ['fmt' zpos]|Xdat Ydat Zdat ['fmt' num zpos]|Vdat Xdat Ydat Zdat ['fmt' zpos]", mgls_cont, mglc_cont, false, 0},
@@ -3351,6 +3536,7 @@ mglCommand mgls_base_cmd[] = {
{L"conty",L"Draw contour lines at y-slice (or y-plane)",L"conty Dat ['fmt' pos num]", mgls_conty, mglc_conty, false, 0},
{L"contz",L"Draw contour lines at z-slice (or z-plane)",L"contz Dat ['fmt' pos num]", mgls_contz, mglc_contz, false, 0},
{L"copy",L"Copy data from another variable",L"copy Dat1 Dat2 ['eq' onaxis]", mgls_copy, mglc_copy, true, 3},
+ {L"cosfft",L"Cos-Fourier transform at some direction",L"cosfft Dat 'dir'", mgls_cosfft, mglc_cosfft, false, 3},
{L"crange",L"Set color range",L"crange Dat [sym] | c1 c2", mgls_crange, mglc_crange, false, 2},
{L"crop",L"Crop edge of data",L"crop Dat n1 n2 'dir'", mgls_crop, mglc_crop, false, 3},
{L"crust",L"Draw reconstructed surface for arbitrary data points",L"crust Xdat Ydat Zdat ['fmt']", mgls_crust, mglc_crust, false, 0},
@@ -3358,6 +3544,7 @@ mglCommand mgls_base_cmd[] = {
{L"cumsum",L"Cumulative summation",L"cumsum Dat 'dir'", mgls_cumsum, mglc_cumsum, false, 3},
{L"curve",L"Draw curve",L"curve x1 y1 dx1 dy1 x2 y2 dx2 dy2 ['fmt']|x1 y1 z1 dx1 dy1 dz1 x2 y2 z2 dx2 dy2 dz2 ['fmt']", mgls_curve, mglc_curve, false, 1},
{L"cut",L"Setup plot points cutting",L"cut val|x1 y1 z1 x2 y2 z2|'cond'", mgls_cut, mglc_cut, false, 2},
+ {L"delete",L"Delete slice of data",L"delete Dat 'dir' [pos=0 num=1]", mgls_delete, mglc_delete, false, 3},
{L"dens",L"Draw density plot",L"dens Zdat ['fmt' zpos]|Xdat Ydat Zdat ['fmt' zpos]", mgls_dens, mglc_dens, false, 0},
{L"dens3",L"Draw density plot at slices of 3D data",L"dens3 Adat 'dir' [pos 'fmt']|Xdat Ydat Zdat Adat 'dir' [pos 'fmt']", mgls_dens3, mglc_dens3, false, 0},
{L"densa",L"Draw density plot at central slices of 3D data",L"densa Adat ['fmt']|Xdat Ydat Zdat Adat ['fmt']", mgls_densa, mglc_densa, false, 0},
@@ -3381,6 +3568,7 @@ mglCommand mgls_base_cmd[] = {
{L"fall",L"Draw waterfalls",L"fall Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_fall, mglc_fall, false, 0},
{L"fgets",L"Print string from file",L"fgets x y z 'fname' [pos=0 'fmt' size]|x y z 'fname' [pos=0 'fmt' size]", mgls_fgets, mglc_fgets, false, 1},
{L"fill",L"Fill data linearly in range [v1, v2]",L"fill Var v1 v2 ['dir'] | Var 'eq' [Vdat Wdat]", mgls_fill, mglc_fill, false, 3},
+ {L"fillsample",L"Fill x-,k-samples for transforms",L"fillsample Var num 'how'", mgls_fillsample, mglc_fillsample, false, 3},
{L"fit",L"Fit data to formula",L"fit Res A 'eq' 'var' [Ini]|Res X A 'eq' 'var' [Ini]|Res X Y A 'eq' 'var' [Ini]|Res X Y Z A 'eq' 'var' [Ini]", mgls_fit, mglc_fit, true, 3},
{L"fits",L"Fit data to formula",L"fits Res A S 'eq' 'var' [Ini]|Res X A S 'eq' 'var' [Ini]|Res X Y A S 'eq' 'var' [Ini]|Res X Y Z A S 'eq' 'var' [Ini]", mgls_fits, mglc_fits, true, 3},
{L"flow",L"Draw flow threads for vector field",L"flow Udat Vdat ['fmt' num zval]|Xdat Ydat Udat Vdat ['fmt' num zval]|Udat Vdat Wdat ['fmt' num]|Xdat Ydat Zdat Udat Vdat ['fmt' num]|\
@@ -3389,18 +3577,24 @@ mglCommand mgls_base_cmd[] = {
{L"font",L"Setup font",L"font 'fmt' [size]", mgls_font, mglc_font, false, 2},
{L"fplot",L"Plot curve by formula",L"fplot 'y(x)' ['fmt' zval num]|'x(t)' 'y(t)' 'z(t)' ['fmt' num]", mgls_fplot, mglc_fplot, false, 1},
{L"fsurf",L"Plot surface by formula",L"fsurf 'z(x,y)' ['fmt' num]|'x(u,v)' 'y(u,v)' 'z(u,v)' ['fmt' num]", mgls_fsurf, mglc_fsurf, false, 1},
- {L"grid",L"Draw grid",L"grid ['dir' 'fmt']|Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_grid, mglc_grid, false, 0},
+ {L"grad",L"Draw gradient lines for scalar field",L"grad Phi ['fmt' num zval]|Xdat Ydat Phi ['fmt' num zval]|Xdat Ydat Zdat Phi ['fmt' num]", mgls_grad, mglc_grad, false, 0},
+ {L"grid",L"Draw grid",L"grid ['dir' 'fmt']", mgls_grid, mglc_grid, false, 0},
+ {L"grid2",L"Draw grid for data array(s)",L"grid Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_grid2, mglc_grid2, false, 0},
{L"grid3",L"Draw grid at slices of 3D data",L"grid3 Adat 'dir' [pos 'fmt']|Xdat Ydat Zdat Adat 'dir' [pos 'fmt']", mgls_grid3, mglc_grid3, false, 0},
{L"grida",L"Draw grid at central slices of 3D data",L"grida Adat ['fmt']|Xdat Ydat Zdat Adat ['fmt']", mgls_grida, mglc_grida, false, 0},
+ {L"hankel",L"Hankel transform at some direction",L"hankel Dat 'dir'", mgls_hankel, mglc_hankel, false, 3},
{L"hist",L"Create histogram (distribution) of data values",L"hist Res Dat num v1 v2 [nsub]|Res Dat Wdat num v1 v2 [nsub]", mgls_hist, mglc_hist, true, 3},
+ {L"idset",L"Set column id for data",L"idset Dat 'ids'", mgls_idset, mglc_idset, false, 3},
{L"import",L"Import data from PNG picture",L"import Dat 'fname' 'scheme' [v1 v2]", mgls_import, mglc_import, true, 3},
{L"info",L"Print information about data",L"info Dat [detail]|'message'", mgls_info, mglc_info, false, 3},
{L"inplot",L"Set position of plot in picture",L"x1 x2 y1 y2 [rel]", mgls_inplot, mglc_inplot, false, 4},
+ {L"insert",L"Insert slice of data",L"insert Dat 'dir' [pos=0 num=1]", mgls_insert, mglc_insert, false, 3},
{L"integrate",L"Integrate data",L"integrate Dat 'dir'", mgls_integrate, mglc_integrate, false, 3},
{L"jacobian",L"Get Jacobian",L"jacobian Res Xdat Ydat [Zdat]", mgls_jacobian, mglc_jacobian, true, 3},
{L"label",L"Draw label at arbitrary position",L"label x y 'txt' ['fmt' size]", mgls_label, mglc_label, false, 1},
{L"legend",L"Draw legend",L"legend [pos 'fmt' size llen]|x y ['fmt' size llen]", mgls_legend, mglc_legend, false, 1},
{L"legendbox",L"Switch on/off drawing box in legend",L"legendbox val", mgls_legendbox, mglc_legendbox, false, 2},
+ {L"legendmarks",L"Set number of marks in the legend",L"legendmarks val", mgls_legendbox, mglc_legendbox, false, 2},
{L"light",L"Setup light",L"light [val] | val num | num xpos ypos zpos ['fmt' br]", mgls_light, mglc_light, false, 2},
{L"line",L"Draw line",L"line x1 y1 x2 y2 ['fmt']|x1 y1 z1 x2 y2 z2 ['fmt']", mgls_line, mglc_line, false, 1},
{L"linewidth",L"Set default line width",L"linewidth val", mgls_linewidth, mglc_linewidth, false, 2},
@@ -3429,6 +3623,7 @@ mglCommand mgls_base_cmd[] = {
{L"put",L"Put value (numeric or array) to given data element",L"put Dat val [i j k] | Dat Val [i j k]", mgls_put, mglc_put, false, 3},
{L"putsfit",L"Print fitted formula",L"putsfit x y ['pre' 'font' size]|x y z ['pre' 'font' size]", mgls_putsfit, mglc_putsfit, false, 0},
{L"qo2d",L"Solve PDE in accompanied coordinates",L"qo2d Res 'ham' IniRe IniIm Ray [r k0 Xout Yout]", mgls_qo2d, mglc_qo2d, true, 3},
+ {L"quadplot",L"Draw surface of quadrangles",L"quadplot Idat Xdat Ydat ['fmt']|Idat Xdat Ydat Zdat ['fmt']|Idat Xdat Ydat Zdat Cdat ['fmt'] ", mgls_quadplot, mglc_quadplot, false, 0},
{L"radar",L"Draw radar chart",L"radar Rdat ['fmt' r]", mgls_radar, mglc_radar, false, 0},
{L"ranges",L"Set axis ranges",L"ranges x1 x2 y1 y2 [z1 z2]", mgls_ranges, mglc_ranges, false, 2},
{L"ray",L"Solve Hamiltonian ODE (find GO ray or trajectory)",L"ray Res 'ham' x0 y0 z0 px0 py0 pz0 [dz=0.1 tmax=10]", mgls_ray, mglc_ray, true, 3},
@@ -3440,13 +3635,14 @@ mglCommand mgls_base_cmd[] = {
{L"rect",L"Draw rectangle",L"rect x1 y1 x2 y2 ['fmt']|x1 y1 z1 x2 y2 z2 ['fmt']", mgls_rect, mglc_rect, false, 1},
{L"region",L"Draw filled region between 2 curves",L"region Ydat1 Ydat2 ['fmt' inside]|Xdat Ydat1 Ydat2 ['fmt' inside]", mgls_region, mglc_region, false, 0},
{L"resize",L"Resize data",L"resize Res Dat mx [my mz]", mgls_resize, mglc_resize, true, 3},
+ {L"roll",L"Roll data along direction",L"roll Dat 'dir' num", mgls_roll, mglc_roll, false, 0},
{L"rotate",L"Rotate plot",L"rotate tetz tetx [tety] | tet x y z", mgls_rotate, mglc_rotate, false, 4},
{L"rotatetext",L"Set to auto rotate text or not",L"rotatetext val", mgls_rotatetext, mglc_rotatetext, false, 2},
{L"save",L"Save data to file",L"save Dat 'file'", mgls_save, mglc_save, false, 3},
{L"savehdf",L"Save data to HDF5 file",L"savehdf Dat 'file' 'id'", mgls_savehdf, mglc_savehdf, false, 3},
- {L"set_id",L"Set column id for data",L"set_id Dat 'ids'", mgls_set_id, mglc_set_id, false, 3},
{L"setsize",L"Set picture size",L"setsize width height", mgls_setsize, mglc_setsize, false, 5},
{L"sew",L"Remove jump into the data, like phase jumps",L"sew Dat ['dir' da]", mgls_sew, mglc_sew, false, 3},
+ {L"sinfft",L"Sin-Fourier transform at some direction",L"sinfft Dat 'dir'", mgls_sinfft, mglc_sinfft, false, 3},
{L"smooth",L"Smooth data",L"smooth Dat [kind 'dir']", mgls_smooth, mglc_smooth, false, 3},
{L"sphere",L"Draw sphere",L"sphere x0 y0 r ['fmt']|x0 y0 z0 r ['fmt']", mgls_sphere, mglc_sphere, false, 1},
{L"squeeze",L"Squeeze data",L"squeeze Dat kx [ky kz]", mgls_squeeze, mglc_squeeze, false, 3},
@@ -3456,7 +3652,7 @@ mglCommand mgls_base_cmd[] = {
{L"stfad",L"Do STFA transform",L"stfad Res Real Imag dn ['dir']", mgls_stfad, mglc_stfad, true, 3},
{L"stickplot",L"Set position of plot inside cell of stick", L"stickplot num ind tet phi", mgls_stickplot, mglc_stickplot, false, 4},
{L"subdata",L"Extract sub-array",L"subdata Res Dat nx [ny nz]", mgls_subdata, mglc_subdata, true, 3},
- {L"subplot",L"Set position of plot",L"subplot m n pos [dx dy]", mgls_subplot, mglc_subplot, false, 4},
+ {L"subplot",L"Set position of plot",L"subplot m n pos [dx dy]|m n pos 'style'", mgls_subplot, mglc_subplot, false, 4},
{L"subto",L"Subtract data or number",L"subto Var Dat|Var num", mgls_subto, mglc_subto, false, 3},
{L"sum",L"Find summation over direction",L"sum Res Dat 'dir'", mgls_sum, mglc_sum, true, 3},
{L"surf",L"Draw solid surface",L"surf Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_surf, mglc_surf, false, 0},
@@ -3472,7 +3668,8 @@ mglCommand mgls_base_cmd[] = {
{L"textmark",L"Draw TeX mark at point position",L"textmark Ydat Rdat 'text' ['fmt' zval]|Xdat Ydat Rdat 'text' ['fmt' zval]|Xdat Ydat Zdat Rdat 'text' ['fmt']", mgls_textmark, mglc_textmark, false, 0},
{L"ticklen",L"Set tick length",L"ticklen val [stt]", mgls_ticklen, mglc_ticklen, false, 2},
{L"tickstl",L"Set tick style",L"tickstl 'stl' ['sub']", mgls_tickstl, mglc_tickstl, false, 2},
- {L"tile",L"Draw horizontal tiles",L"tile Zdat ['fmt']|Xdat Ydat Zdat ['fmt'] | Zdat Rdat ['fmt']|Xdat Ydat Zdat Rdat ['fmt']", mgls_tile, mglc_tile, false, 0},
+ {L"tile",L"Draw horizontal tiles",L"tile Zdat ['fmt']|Xdat Ydat Zdat ['fmt']", mgls_tile, mglc_tile, false, 0},
+ {L"tiles",L"Draw horizontal tiles with variable size",L"tiles Zdat Rdat ['fmt']|Xdat Ydat Zdat Rdat ['fmt']", mgls_tiles, mglc_tiles, false, 0},
{L"title",L"Print title for the picture",L"title 'text' ['fmt' size]", mgls_title, mglc_title, false, 1},
{L"tlabel",L"Draw label for t-axis",L"tlabel 'txt' [pos size shift]", mgls_tlabel, mglc_tlabel, false, 1},
{L"torus",L"Draw surface of curve rotation",L"torus Rdat ['fmt']|Zdat Rdat ['fmt']", mgls_torus, mglc_torus, false, 0},
@@ -3483,6 +3680,7 @@ mglCommand mgls_base_cmd[] = {
{L"transparent",L"Switch off transparency",L"transparent val", mgls_transparent, mglc_transparent, false, 2}, //!!! OLD !!!
{L"transpose",L"Transpose data array",L"transpose Dat ['dir']", mgls_transpose, mglc_transpose, false, 3},
{L"transptype",L"Set type transparency",L"transptype val", mgls_transptype, mglc_transptype, false, 2},
+ {L"tricont",L"Draw contour lines for surface of triangles",L"tricont Vdat Idat Xdat Ydat ['fmt']|Vdat Idat Xdat Ydat Zdat ['fmt']|Vdat Idat Xdat Ydat Zdat Cdat ['fmt'] ", mgls_tricont, mglc_tricont, false, 0},
{L"triplot",L"Draw surface of triangles",L"triplot Idat Xdat Ydat ['fmt']|Idat Xdat Ydat Zdat ['fmt']|Idat Xdat Ydat Zdat Cdat ['fmt'] ", mgls_triplot, mglc_triplot, false, 0},
{L"tube",L"Draw curve by tube",L"tube Ydat Rdat ['fmt' zval]|Ydat rval ['fmt' zval]|Xdat Ydat Rdat ['fmt' zval]|Xdat Ydat rval ['fmt' zval]|Xdat Ydat Zdat Rdat ['fmt']|Xdat Ydat Zdat rval ['fmt']", mgls_tube, mglc_tube, false, 0},
{L"var",L"Create new 1D data and fill it in range",L"var Dat nx x1 [x2]", mgls_var, mglc_var, true, 3},
diff --git a/mgl/mgl_export.cpp b/mgl/mgl_export.cpp
index 26b7a16..77dfcd5 100644
--- a/mgl/mgl_export.cpp
+++ b/mgl/mgl_export.cpp
@@ -21,6 +21,8 @@
#include <string.h>
#include <stdlib.h>
#include <time.h>
+#include <zlib.h>
+#include <stdarg.h>
#ifndef NO_PNG
#include <png.h>
#endif
@@ -213,9 +215,7 @@ int mgl_jpeg_save(const char *fname, int w, int h, unsigned char **p)
cinfo.in_color_space = JCS_RGB;
jpeg_set_defaults(&cinfo);
jpeg_start_compress(&cinfo, TRUE);
-
- jpeg_write_scanlines(&cinfo, p, h);
-
+ jpeg_write_scanlines(&cinfo, p, h);
jpeg_finish_compress(&cinfo);
jpeg_destroy_compress(&cinfo);
fclose(outfile);
@@ -223,26 +223,37 @@ int mgl_jpeg_save(const char *fname, int w, int h, unsigned char **p)
return 0;
}
//-----------------------------------------------------------------------------
+void mgl_printf(void *fp, bool gz, const char *str, ...)
+{
+ char buf[512];
+ va_list lst;
+ va_start(lst,str);
+ vsprintf(buf,str,lst);
+ va_end(lst);
+ if(gz) gzprintf(fp, "%s", buf);
+ else fprintf((FILE *)fp, "%s", buf);
+}
+//---------------------------------------------------------------------------
int mgl_bps_save(const char *fname, int w, int h, unsigned char **p)
{
time_t now;
time(&now);
register long i,j;
+ bool gz = fname[strlen(fname)-1]=='z';
- FILE *fp = fopen(fname,"wt");
- fprintf(fp,"%%!PS-Adobe-3.0 EPSF-3.0\n%%%%BoundingBox: 0 0 %d %d\n",w,h);
- fprintf(fp,"%%%%Creator: MathGL library\n%%%%Title: %s\n", fname);
- fprintf(fp,"%%%%CreationDate: %s\n",ctime(&now));
-// fprintf(fp,"%%%%EndComments\n\n");
- fprintf(fp,"%d %d 8 [1 0 0 1 0 0] {currentfile %d string readhexstring pop} false 3 colorimage\n",
+ void *fp = gz ? gzopen(fname,"wt") : fopen(fname,"wt");
+ mgl_printf(fp, gz, "%%!PS-Adobe-3.0 EPSF-3.0\n%%%%BoundingBox: 0 0 %d %d\n",w,h);
+ mgl_printf(fp, gz, "%%%%Creator: MathGL library\n%%%%Title: %s\n", fname);
+ mgl_printf(fp, gz, "%%%%CreationDate: %s\n",ctime(&now));
+ mgl_printf(fp, gz, "%d %d 8 [1 0 0 1 0 0] {currentfile %d string readhexstring pop} false 3 colorimage\n",
w,h,1+w*h/40);
for(j=h-1;j>=0;j--) for(i=0;i<w;i++)
{
- if((i+w*(h-j-1))%40==0 && i+j>0) fprintf(fp,"\n");
- fprintf(fp,"%02x%02x%02x",p[j][3*i],p[j][3*i+1],p[j][3*i+2]);
+ if((i+w*(h-j-1))%40==0 && i+j>0) mgl_printf(fp, gz, "\n");
+ mgl_printf(fp, gz, "%02x%02x%02x",p[j][3*i],p[j][3*i+1],p[j][3*i+2]);
}
- fprintf(fp,"\n\nshowpage\n%%%%EOF\n");
- fclose(fp);
+ mgl_printf(fp, gz, "\n\nshowpage\n%%%%EOF\n");
+ if(gz) gzclose(fp); else fclose((FILE *)fp);
return 0;
}
//-----------------------------------------------------------------------------
diff --git a/mgl/mgl_f.cpp b/mgl/mgl_f.cpp
index e5c0d5f..e2cc35b 100644
--- a/mgl/mgl_f.cpp
+++ b/mgl/mgl_f.cpp
@@ -183,9 +183,12 @@ void mgl_set_ambbr_(uintptr_t *gr, mreal *i)
//-----------------------------------------------------------------------------
// Scale and rotate
//-----------------------------------------------------------------------------
+/// Push transformation matrix into stack.
+void mgl_mat_push_(uintptr_t *gr) { _GR_->Push(); }
+/// Pop transformation matrix into stack.
+void mgl_mat_pop_(uintptr_t *gr) { _GR_->Pop(); }
/// Clear transformation matrix.
-void mgl_identity_(uintptr_t *gr, int *rel)
-{ _GR_->Identity(*rel); }
+void mgl_identity_(uintptr_t *gr, int *rel) { _GR_->Identity(*rel); }
/// Clear up the frame
void mgl_clf_(uintptr_t *gr)
{ _GR_->Clf(); }
@@ -195,16 +198,20 @@ void mgl_clf_rgb_(uintptr_t *gr, mreal *r, mreal *g, mreal *b)
/// Put further plotting in some region of whole frame surface.
void mgl_subplot_(uintptr_t *gr, int *nx,int *ny,int *m)
{ _GR_->SubPlot(*nx,*ny,*m); }
-/// Put further plotting in some region of whole frame surface.
void mgl_subplot_d_(uintptr_t *gr, int *nx,int *ny,int *m,mreal *dx,mreal *dy)
{ _GR_->SubPlot(*nx,*ny,*m,*dx,*dy); }
+void mgl_subplot_s_(uintptr_t *gr, int *nx,int *ny,int *m,const char *st,int l)
+{ char *s=new char[l+1]; memcpy(s,st,l); s[l]=0;
+ _GR_->SubPlot(*nx,*ny,*m,s); delete []s; }
/// Put further plotting in some region of whole frame surface.
void mgl_inplot_(uintptr_t *gr, mreal *x1,mreal *x2,mreal *y1,mreal *y2)
-{ _GR_->InPlot(*x1,*x2,*y1,*y2); }
+{ _GR_->InPlot(*x1,*x2,*y1,*y2,false); }
void mgl_relplot_(uintptr_t *gr, mreal *x1,mreal *x2,mreal *y1,mreal *y2)
{ _GR_->InPlot(*x1,*x2,*y1,*y2,true); }
void mgl_columnplot_(uintptr_t *gr, int *num, int *i)
{ _GR_->ColumnPlot(*num,*i); }
+void mgl_columnplot_d_(uintptr_t *gr, int *num, int *i, mreal *d)
+{ _GR_->ColumnPlot(*num,*i,*d); }
void mgl_stickplot_(uintptr_t *gr, int *num, int *i, mreal *tet, mreal *phi)
{ _GR_->StickPlot(*num, *i, *tet, *phi); }
/// Set aspect ratio for further plotting.
@@ -460,6 +467,8 @@ void mgl_legend_(uintptr_t *gr, int *where, const char *font, mreal *size, mreal
}
void mgl_set_legend_box_(uintptr_t *gr, int *enable)
{ _GR_->LegendBox = *enable; }
+void mgl_set_legend_marks_(uintptr_t *gr, int *num)
+{ _GR_->SetLegendMarks(*num); }
//-----------------------------------------------------------------------------
const unsigned char *mgl_get_rgb_(uintptr_t *graph)
{
@@ -507,6 +516,52 @@ void mgl_calc_scr_(uintptr_t *gr, mreal *x, mreal *y, mreal *z, int *xs, int *ys
if(g) g->CalcScr(mglPoint(*x,*y,*z),xs,ys);
}
//-----------------------------------------------------------------------------
+void mgl_wnd_set_delay_(uintptr_t *gr, mreal *dt)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>((mglGraph *)(*gr));
+ if(g) g->Delay = *dt; }
+void mgl_wnd_set_auto_clf_(uintptr_t *gr, int *val)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>((mglGraph *)(*gr));
+ if(g) g->AutoClf = *val; }
+void mgl_wnd_set_show_mouse_pos_(uintptr_t *gr, int *val)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>((mglGraph *)(*gr));
+ if(g) g->ShowMousePos = *val; }
+void mgl_wnd_set_clf_update_(uintptr_t *gr, int *val)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>((mglGraph *)(*gr));
+ if(g) g->ClfOnUpdate = *val; }
+void mgl_wnd_toggle_alpha_(uintptr_t *gr)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>((mglGraph *)(*gr));
+ if(g) g->ToggleAlpha(); }
+void mgl_wnd_toggle_light_(uintptr_t *gr)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>((mglGraph *)(*gr));
+ if(g) g->ToggleLight(); }
+void mgl_wnd_toggle_zoom_(uintptr_t *gr)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>((mglGraph *)(*gr));
+ if(g) g->ToggleZoom(); }
+void mgl_wnd_toggle_rotate_(uintptr_t *gr)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>((mglGraph *)(*gr));
+ if(g) g->ToggleRotate(); }
+void mgl_wnd_toggle_no_(uintptr_t *gr)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>((mglGraph *)(*gr));
+ if(g) g->ToggleNo(); }
+void mgl_wnd_update_(uintptr_t *gr)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>((mglGraph *)(*gr));
+ if(g) g->Update(); }
+void mgl_wnd_reload_(uintptr_t *gr, int *o)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>((mglGraph *)(*gr));
+ if(g) g->ReLoad(*o); }
+void mgl_wnd_adjust_(uintptr_t *gr)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>((mglGraph *)(*gr));
+ if(g) g->Adjust(); }
+void mgl_wnd_next_frame_(uintptr_t *gr)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>((mglGraph *)(*gr));
+ if(g) g->NextFrame(); }
+void mgl_wnd_prev_frame_(uintptr_t *gr)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>((mglGraph *)(*gr));
+ if(g) g->PrevFrame(); }
+void mgl_wnd_animation_(uintptr_t *gr)
+{ mglGraphAB *g = dynamic_cast<mglGraphAB *>((mglGraph *)(*gr));
+ if(g) g->Animation(); }
+//-----------------------------------------------------------------------------
mreal mgl_data_get_value_(uintptr_t *d, int *i, int *j, int *k)
{ return _DT_->a[*i+_DT_->nx*(*j+*k*_DT_->ny)]; }
void mgl_data_set_value_(uintptr_t *d, mreal *v, int *i, int *j, int *k)
@@ -581,4 +636,5 @@ void mgl_set_tick_stl_(uintptr_t *gr, const char *stl, const char *sub, int l, i
_GR_->SetTickStl(t,s);
delete []s; delete []t;
}
+int mgl_get_warn_(uintptr_t *gr) { return _GR_->WarnCode; }
//-----------------------------------------------------------------------------
diff --git a/mgl/mgl_flow.cpp b/mgl/mgl_flow.cpp
index 1f61cac..419de75 100644
--- a/mgl/mgl_flow.cpp
+++ b/mgl/mgl_flow.cpp
@@ -106,7 +106,8 @@ void mglGraph::Flow(const mglData &x, const mglData &y, const mglData &ax, const
Arrow1 = Arrow2 = '_';
SetScheme(sch);
// allocate memory
- if(isnan(zVal)) zVal = Min.z;
+ if(isnan(zVal)) zVal = Min.z;
+ cnt=(num>0); num = abs(num); // redefine central parater
for(long k=0;k<ax.nz;k++)
{
@@ -309,7 +310,8 @@ void mglGraph::Flow(const mglData &x, const mglData &y, const mglData &z, const
if(!(both || (x.nx==n && y.nx==m && z.nx==l)))
{ SetWarn(mglWarnDim,"Flow"); return; }
static int cgid=1; StartGroup("Flow3",cgid++);
-
+ cnt=(num>0); num = abs(num); // redefine central parater
+
Arrow1 = Arrow2 = '_';
SetScheme(sch);
@@ -449,6 +451,53 @@ void mglGraph::FlowP(mglPoint p, const mglData &ax, const mglData &ay, const mgl
}
//-----------------------------------------------------------------------------
//
+// Grad series
+//
+//-----------------------------------------------------------------------------
+void mglGraph::Grad(const mglData &x, const mglData &y, const mglData &z, const mglData &phi, const char *sch, int num)
+{
+ mglData ax(phi), ay(phi),az(phi),xx(phi),yy(phi),zz(phi);
+ long nn = phi.nx*phi.ny*phi.nz;
+ if(x.nx*x.ny*x.nz==nn && y.nx*y.ny*y.nz==nn && x.nx*x.ny*x.nz==nn)
+ { xx = x; yy = y; zz = z; } // nothing to do
+ else if(x.nx==phi.nx && y.nx==phi.ny && z.nx==phi.nz)
+ { // prepare data
+ register long i,j,k,i0;
+ for(i=0;i<phi.nx;i++) for(j=0;j<phi.ny;j++) for(k=0;k<phi.nz;k++)
+ {
+ i0 = i+phi.nx*(j+phi.ny*k); xx.a[i0] = x.a[i];
+ yy.a[i0] = y.a[j]; zz.a[i0] = z.a[k]; }
+ }
+ else { SetWarn(mglWarnDim,"Grad"); return; }
+ ax.Diff(xx,yy,zz); ay.Diff(yy,xx,zz); az.Diff(zz,xx,yy);
+ Flow(xx,yy,zz,ax,ay,az,sch,num,num>0);
+}
+//-----------------------------------------------------------------------------
+void mglGraph::Grad(const mglData &x, const mglData &y, const mglData &phi, const char *sch, int num, mreal zVal)
+{
+ mglData ax(phi), ay(phi),xx(phi),yy(phi);
+ long nn = phi.nx*phi.ny;
+ if(x.nx*x.ny==nn && y.nx*y.ny==nn) { xx = x; yy = y; }
+ else if(x.nx==phi.nx && y.nx==phi.ny)
+ {
+ register long i,j,i0;
+ for(i=0;i<phi.nx;i++) for(j=0;j<phi.ny;j++)
+ { i0 = i+phi.nx*j; xx.a[i0] = x.a[i]; yy.a[i0] = y.a[j]; }
+ }
+ else { SetWarn(mglWarnDim,"Grad"); return; }
+ ax.Diff(xx,yy); ay.Diff(yy,xx);
+ Flow(xx,yy,ax,ay,sch,num,num>0,zVal);
+}
+//-----------------------------------------------------------------------------
+void mglGraph::Grad(const mglData &phi, const char *sch, int num, mreal zVal)
+{
+ mglData x(phi.nx), y(phi.ny), z(phi.nz);
+ x.Fill(Min.x,Max.x); y.Fill(Min.y,Max.y); z.Fill(Min.z,Max.z);
+ if(phi.nz>2) Grad(x,y,z,phi,sch,num?num:3);
+ else Grad(x,y,phi,sch,num?num:5,zVal);
+}
+//-----------------------------------------------------------------------------
+//
// Pipe series
//
//-----------------------------------------------------------------------------
@@ -534,7 +583,8 @@ void mglGraph::Pipe(const mglData &x, const mglData &y, const mglData &ax, const
SetScheme(sch);
// allocate memory
if(isnan(zVal)) zVal = Min.z;
-
+ cnt=(num>0); num = abs(num);
+
for(long k=0;k<ax.nz;k++)
{
if(ax.nz>1) zVal = Min.z+(Max.z-Min.z)*mreal(k)/(ax.nz-1);
@@ -672,7 +722,8 @@ void mglGraph::Pipe(const mglData &x, const mglData &y, const mglData &z, const
Arrow1 = Arrow2 = '_';
SetScheme(sch);
-
+ cnt=(num>0); num = abs(num);
+
for(i=0;i<num;i++) for(j=0;j<num;j++)
{
u = (i+1.)/(num+1.); v = (j+1.)/(num+1.); w = 0;
@@ -762,6 +813,14 @@ void mgl_pipe_xyz(HMGL gr, const HMDT x, const HMDT y, const HMDT z, const HMDT
void mgl_pipe_3d(HMGL gr, const HMDT ax, const HMDT ay, const HMDT az, const char *sch, mreal r0, int num, int central)
{ if(gr && ay && ax && az) gr->Pipe(*ax, *ay, *az, sch, r0, num, central); }
//-----------------------------------------------------------------------------
+/// The gradient of the scalar field
+void mgl_grad_xyz(HMGL gr, const HMDT x, const HMDT y, const HMDT z, const HMDT ph, const char *sch, int num)
+{ if(gr&&x&&y&&z&&ph) gr->Grad(*x,*y,*z,*ph,sch,num); }
+void mgl_grad_xy(HMGL gr, const HMDT x, const HMDT y, const HMDT ph, const char *sch, int num, mreal zVal)
+{ if(gr&&x&&y&&ph) gr->Grad(*x,*y,*ph,sch,num,zVal); }
+void mgl_grad(HMGL gr, const HMDT ph, const char *sch, int num, mreal zVal)
+{ if(gr&&ph) gr->Grad(*ph,sch,num,zVal); }
+//-----------------------------------------------------------------------------
// Fortran interface
//-----------------------------------------------------------------------------
/// Plot flows for vector field {ax,ay} parametrically depended on coordinate {x,y} with color proportional to value |a|
@@ -862,3 +921,26 @@ void mgl_pipe_3d_(uintptr_t *gr, uintptr_t *ax, uintptr_t *ay, uintptr_t *az, co
delete []s;
}
//-----------------------------------------------------------------------------
+/// Plot gradient for scalar field ph parametrically depended on coordinate {x,y} with color proportional to value |a|
+void mgl_grad_xy_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, uintptr_t *ph, const char *sch,
+ int *num, mreal *zVal,int l)
+{
+ char *s=new char[l+1]; memcpy(s,sch,l); s[l]=0;
+ if(gr && ph && x && y) _GR_->Grad(_D_(x), _D_(y), _D_(ph), s, *num, *zVal);
+ delete []s;
+}
+void mgl_grad_xyz_(uintptr_t *gr, uintptr_t *x, uintptr_t *y, uintptr_t *z, uintptr_t *ph, const char *sch,
+ int *num, int l)
+{
+ char *s=new char[l+1]; memcpy(s,sch,l); s[l]=0;
+ if(gr && ph && x && y && z) _GR_->Grad(_D_(x), _D_(y), _D_(z), _D_(ph), s, *num);
+ delete []s;
+}
+/// Plot flows for vector field {ax,ay} with color proportional to value |a|
+void mgl_grad_(uintptr_t *gr, uintptr_t *ph, const char *sch, int *num, mreal *zVal,int l)
+{
+ char *s=new char[l+1]; memcpy(s,sch,l); s[l]=0;
+ if(gr && ph) _GR_->Flow(_D_(ph), s, *num, *zVal);
+ delete []s;
+}
+//-----------------------------------------------------------------------------
diff --git a/mgl/mgl_font.cpp b/mgl/mgl_font.cpp
index 2c94b11..b92712c 100644
--- a/mgl/mgl_font.cpp
+++ b/mgl/mgl_font.cpp
@@ -21,6 +21,8 @@
#include <stdlib.h>
#include <locale.h>
#include <ctype.h>
+#include <wctype.h>
+#include <zlib.h>
#ifdef WIN32
#include <windows.h>
@@ -89,7 +91,7 @@ mreal mglFont::Puts(const wchar_t *str,const char *how, char col)
if(strchr(how,'w')) font = font|MGL_FONT_WIRE;
if(strchr(how,'o')) font = font|MGL_FONT_OLINE;
if(strchr(how,'u')) font = font|MGL_FONT_ULINE;
- }
+ }
return Puts(str, font, align,col);
}
//-----------------------------------------------------------------------------
@@ -271,8 +273,9 @@ unsigned mglFont::Parse(const wchar_t *s)
else if(!wcscmp(s,L"underset")) res = unsigned(-9);
else if(!wcscmp(s,L"stackr")) res = unsigned(-10);
else if(!wcscmp(s,L"stackl")) res = unsigned(-11);
- else if(!wcscmp(s,L"sub")) res = unsigned(-12); // new
- else if(!wcscmp(s,L"sup")) res = unsigned(-13); // new
+ else if(!wcscmp(s,L"sub")) res = unsigned(-12);
+ else if(!wcscmp(s,L"sup")) res = unsigned(-13);
+ else if(!wcscmp(s,L"textsc")) res = unsigned(-14); // new
else if(!wcscmp(s,L"b")) res = MGL_FONT_BOLD;
else if(!wcscmp(s,L"i")) res = MGL_FONT_ITAL;
else if(!wcscmp(s,L"bi")) res = MGL_FONT_BOLD|MGL_FONT_ITAL;
@@ -369,7 +372,8 @@ void mglFont::draw_ouline(mglGraph *gr, int st, mreal x, mreal y, mreal f, mreal
if(st&MGL_FONT_ULINE)
gr->Glyph(x,y-200*f/g, ww*g, (st&MGL_FONT_WIRE)?12:8, 0, ccol);
}
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+#define MGL_CLEAR_STYLE {st = style; yy = y; ff = f; ccol=col; a = (st/MGL_FONT_BOLD)&3;}
mreal mglFont::Puts(const unsigned *text, mreal x,mreal y,mreal f,int style,char col)
{
if(numg==0) return 0;
@@ -402,7 +406,7 @@ mreal mglFont::Puts(const unsigned *text, mreal x,mreal y,mreal f,int style,char
ww = Puts(b1, x, yy, ff, (st&(~MGL_FONT_OLINE)&(~MGL_FONT_ULINE)), ccol);
if(gr && !(style&0x10)) // add under-/over- line now
draw_ouline(gr,st,x,y,f,fact[a],ww,ccol);
- st = style; yy = y; ff = f; // clear style modification
+ MGL_CLEAR_STYLE
}
else if(s==unsigned(-9)) // underset
{
@@ -411,7 +415,7 @@ mreal mglFont::Puts(const unsigned *text, mreal x,mreal y,mreal f,int style,char
Puts(b2, x+(ww-w2)/2, yy-150*ff/fact[a], ff/4, (st&(~MGL_FONT_OLINE)&(~MGL_FONT_ULINE)), ccol);
if(gr && !(style&0x10)) // add under-/over- line now
draw_ouline(gr,st,x,y,f,fact[a],ww,ccol);
- st = style; yy = y; ff = f; // clear style modification
+ MGL_CLEAR_STYLE
}
else if(s==unsigned(-8)) // overset
{
@@ -420,7 +424,7 @@ mreal mglFont::Puts(const unsigned *text, mreal x,mreal y,mreal f,int style,char
Puts(b2, x+(ww-w2)/2, yy+375*ff/fact[a], ff/4, (st&(~MGL_FONT_OLINE)&(~MGL_FONT_ULINE)), ccol);
if(gr && !(style&0x10)) // add under-/over- line now
draw_ouline(gr,st,x,y,f,fact[a],ww,ccol);
- st = style; yy = y; ff = f; // clear style modification
+ MGL_CLEAR_STYLE
}
else if(s==unsigned(-12)) // sub
{
@@ -429,7 +433,7 @@ mreal mglFont::Puts(const unsigned *text, mreal x,mreal y,mreal f,int style,char
Puts(b2, x+(ww-w2)/2, yy-250*ff/fact[a], ff/4, (st&(~MGL_FONT_OLINE)&(~MGL_FONT_ULINE)), ccol);
if(gr && !(style&0x10)) // add under-/over- line now
draw_ouline(gr,st,x,y,f,fact[a],ww,ccol);
- st = style; yy = y; ff = f; // clear style modification
+ MGL_CLEAR_STYLE
}
else if(s==unsigned(-13)) // sup
{
@@ -438,7 +442,7 @@ mreal mglFont::Puts(const unsigned *text, mreal x,mreal y,mreal f,int style,char
Puts(b2, x+(ww-w2)/2, yy+450*ff/fact[a], ff/4, (st&(~MGL_FONT_OLINE)&(~MGL_FONT_ULINE)), ccol);
if(gr && !(style&0x10)) // add under-/over- line now
draw_ouline(gr,st,x,y,f,fact[a],ww,ccol);
- st = style; yy = y; ff = f; // clear style modification
+ MGL_CLEAR_STYLE
}
else if(s==unsigned(-11)) // stackl
{
@@ -447,7 +451,7 @@ mreal mglFont::Puts(const unsigned *text, mreal x,mreal y,mreal f,int style,char
Puts(b2, x, yy-110*ff/fact[a], ff*0.45, (st&(~MGL_FONT_OLINE)&(~MGL_FONT_ULINE)), ccol);
if(gr && !(style&0x10)) // add under-/over- line now
draw_ouline(gr,st,x,y,f,fact[a],ww,ccol);
- st = style; yy = y; ff = f; // clear style modification
+ MGL_CLEAR_STYLE
}
else if(s==unsigned(-10)) // stacr
{
@@ -456,7 +460,7 @@ mreal mglFont::Puts(const unsigned *text, mreal x,mreal y,mreal f,int style,char
Puts(b2, x+(ww-w2), yy-110*ff/fact[a], ff*0.45, (st&(~MGL_FONT_OLINE)&(~MGL_FONT_ULINE)), ccol);
if(gr && !(style&0x10)) // add under-/over- line now
draw_ouline(gr,st,x,y,f,fact[a],ww,ccol);
- st = style; yy = y; ff = f; // clear style modification
+ MGL_CLEAR_STYLE
}
else if(s==unsigned(-7)) // stack
{
@@ -465,7 +469,7 @@ mreal mglFont::Puts(const unsigned *text, mreal x,mreal y,mreal f,int style,char
Puts(b2, x+(ww-w2)/2, yy-110*ff/fact[a], ff*0.45, (st&(~MGL_FONT_OLINE)&(~MGL_FONT_ULINE)), ccol);
if(gr && !(style&0x10)) // add under-/over- line now
draw_ouline(gr,st,x,y,f,fact[a],ww,ccol);
- st = style; yy = y; ff = f; // clear style modification
+ MGL_CLEAR_STYLE
}
else if(s==unsigned(-6)) // frac
{
@@ -477,10 +481,20 @@ mreal mglFont::Puts(const unsigned *text, mreal x,mreal y,mreal f,int style,char
draw_ouline(gr,st,x,y,f,fact[a],ww,ccol);
gr->Glyph(x,y+150*f/fact[a], ww*fact[a], (st&MGL_FONT_WIRE)?12:8, 0, ccol);
}
- st = style; yy = y; ff = f; // clear style modification
+ MGL_CLEAR_STYLE
+ }
+ else if(s==unsigned(-4)) MGL_CLEAR_STYLE // should be never here but if I miss sth ...
+ else if(s==unsigned(-14)) // script symbols
+ {
+ register long j,k=1;
+ if(str[i+1]==unsigned(-3)) for(j=i+2;k>0 && str[j];j++)
+ {
+ if(str[j]==unsigned(-3)) k++;
+ if(str[j]==unsigned(-4)) k--;
+ if(iswlower(str[j]))
+ str[j] = MGL_FONT_UPPER|MGL_FONT_LOWER|towupper(str[j]);
+ }
}
- else if(s==unsigned(-4)) // should be never here but if I miss sth ...
- continue;
else if(s==unsigned(-5)) // large symbol
ff *= 1.5;
else if(s==unsigned(-1)) // set normal font
@@ -498,10 +512,8 @@ mreal mglFont::Puts(const unsigned *text, mreal x,mreal y,mreal f,int style,char
if(j==-1) continue;
if(gr && !(style&0x10))
{
- if(st & MGL_FONT_WIRE)
- gr->Glyph(x,yy,ff,a+4,j,ccol);
- else
- gr->Glyph(x,yy,ff,a,j,ccol);
+ if(st & MGL_FONT_WIRE) gr->Glyph(x,yy,ff,a+4,j,ccol);
+ else gr->Glyph(x,yy,ff,a,j,ccol);
}
}
else
@@ -510,7 +522,7 @@ mreal mglFont::Puts(const unsigned *text, mreal x,mreal y,mreal f,int style,char
if(gr && !(style&0x10)) // add under-/over- line now
draw_ouline(gr,st,x,y,f,fact[a],ww,ccol);
if(s & MGL_FONT_ZEROW) ww = 0;
- st = style; yy = y; ff = f; ccol=col; // clear style modification
+ MGL_CLEAR_STYLE
}
// apply new styles
if(s/MGL_FONT_BOLD) st = st | (s & MGL_FONT_STYLE);
@@ -518,10 +530,9 @@ mreal mglFont::Puts(const unsigned *text, mreal x,mreal y,mreal f,int style,char
ss = (s/MGL_FONT_UPPER)%4;
if(ss)
{
- if(ss==1) yy += 200*ff/fact[a]; // = 500*0.4
- else if(ss==2) yy -= 80*ff/fact[a]; // = -500*0.16
- else if(ss==3) yy += 60*ff/fact[a]; // = 500*0.12
- ff *=0.6;
+ if(ss==1) { ff *=0.6; yy += 200*ff/fact[a]; } // = 500*0.4
+ else if(ss==2) { ff *=0.6; yy -= 80*ff/fact[a]; } // = -500*0.16
+ else if(ss==3) { ff *=0.8; yy += 0*60*ff/fact[a]; } // = 500*0.12
}
}
x += ww; w += ww;
@@ -530,32 +541,6 @@ mreal mglFont::Puts(const unsigned *text, mreal x,mreal y,mreal f,int style,char
return w;
}
//-----------------------------------------------------------------------------
-void mglFont::read_data(FILE *fp, mreal *ff, short *wdt, short *numl,
- unsigned *posl, short *numt, unsigned *post, unsigned &cur)
-{
- char str[256];
- int tmpw, tmpnl, tmpnt;
- unsigned s,i,n, tmpi, tmppl, tmppt;
- long j;
-
- fgets(str,256,fp); // first string is comment (not used)
- fgets(str,256,fp); // second string have information
- sscanf(str, "%u%f%d", &n, ff, &s);
- buf = (short *)realloc(buf, (cur+s)*sizeof(short)); // prealocate buffer
-
- for(i=0;i<n;i++)
- {
- fscanf(fp,"%u%d%d%u%d%u", &tmpi, &tmpw, &tmpnl, &tmppl, &tmpnt, &tmppt);
- j=Internal(unsigned(tmpi)); if(j<0) continue;
- if(wdt) wdt[j] = tmpw;
- numl[j] = tmpnl; posl[j] = tmppl+cur;
- numt[j] = tmpnt; post[j] = tmppt+cur;
- }
- for(i=0;i<s;i++) { fscanf(fp,"%d", &tmpi); buf[i+cur] = tmpi; }
- cur += s;
- fclose(fp); // !!! close file here !!!
-}
-//-----------------------------------------------------------------------------
void mglFont::mem_alloc()
{
id = new wchar_t[numg];
@@ -591,45 +576,6 @@ void mglFont::main_copy()
memcpy(width[3],width[0],numg*sizeof(short));
}
//-----------------------------------------------------------------------------
-bool mglFont::read_main(const char *base, const char *path, unsigned &cur)
-{
- FILE *fp;
- char str[256];
- int tmpi, tmpw, tmpnl, tmpnt;
- unsigned s, tmppl, tmppt;
-#ifdef WIN32 // normal weight (should have most of symbols !!!)
- if(path) sprintf(str,"%s\\%s.vfm",path,base);
-#else
- if(path) sprintf(str,"%s/%s.vfm",path,base);
-#endif
- else sprintf(str,"%s.vfm",base);
-
- fp = fopen(str,"r");
- if(!fp) return false; // this font must be in any case
- fgets(str,256,fp); // first string is comment (not used)
- fgets(str,256,fp); // second string have information
- sscanf(str, "%u%f%u", &numg, fact, &s);
- fact[1] = fact[2] = fact[3] = fact[0]; // copy default factor for other font styles;
- buf = (short *)malloc(s*sizeof(short)); // prealocate buffer
- // now allocate memory for all fonts
- mem_alloc();
- // and load symbols itself
- register long i;
- for(i=0;i<int(numg);i++)
- {
- fscanf(fp,"%u%d%d%u%d%u", &tmpi, &tmpw, &tmpnl, &tmppl, &tmpnt, &tmppt);
- id[i] = tmpi; width[0][i] = tmpw;
- numl[0][i] = tmpnl; ln[0][i] = tmppl;
- numt[0][i] = tmpnt; tr[0][i] = tmppt;
- }
- for(i=0;i<int(s);i++) { fscanf(fp,"%d", &tmpi); buf[i] = tmpi; }
- cur += s;
- fclose(fp); // finish wire normal font
- numb = cur;
- main_copy(); // copy normal style as default for other styles
- return true;
-}
-//-----------------------------------------------------------------------------
bool mglFont::read_def(unsigned &cur)
{
numg = mgl_numg; cur = mgl_cur;
@@ -655,6 +601,81 @@ bool mglFont::read_def(unsigned &cur)
return true;
}
//-----------------------------------------------------------------------------
+bool mglFont::read_data(const char *fname, float *ff, short *wdt, short *numl,
+ unsigned *posl, short *numt, unsigned *post, unsigned &cur)
+{
+ gzFile fp;
+ char str[256];
+ int tmpw, tmpnl, tmpnt;
+ unsigned s,n, tmpi, tmppl, tmppt;
+ register long i,j,ch;
+ fp = gzopen(fname,"r"); if(!fp) return false; // false if no file
+ // first string is comment (not used), second string have information
+ if(!gzgets(fp,str,256) || !gzgets(fp,str,256))
+ { gzclose(fp); return false; }
+ sscanf(str, "%u%f%d", &n, ff, &s);
+ buf = (short *)realloc(buf, (cur+s)*sizeof(short)); // prealocate buffer
+ if(!buf) { gzclose(fp); return false; }
+
+ for(i=0;i<n;i++)
+ {
+ gzgets(fp,str,256);
+ sscanf(str,"%u%d%d%u%d%u", &tmpi, &tmpw, &tmpnl, &tmppl, &tmpnt, &tmppt);
+ j=Internal(unsigned(tmpi)); if(j<0) continue;
+ if(wdt) wdt[j] = tmpw;
+ numl[j] = tmpnl; posl[j] = tmppl+cur;
+ numt[j] = tmpnt; post[j] = tmppt+cur;
+ }
+ for(j=i=0;i<int(s);i++)
+ {
+ for(j=0;j<256;j++)
+ { str[j] = ch = gzgetc(fp); if(ch<=' ') break; }
+ buf[i+cur] = atoi(str);
+ }
+ cur += s;
+ gzclose(fp); // finish wire normal font
+ return true;
+}
+//-----------------------------------------------------------------------------
+bool mglFont::read_main(const char *fname, unsigned &cur)
+{
+ gzFile fp;
+ int tmpi, tmpw, tmpnl, tmpnt;
+ unsigned s, tmppl, tmppt;
+ char str[256];
+
+ fp = gzopen(fname,"r"); if(!fp) return false; // this font must be in any case
+ // first string is comment (not used), second string have information
+ if(!gzgets(fp,str,256) || !gzgets(fp,str,256))
+ { gzclose(fp); return false; }
+ sscanf(str, "%u%f%u", &numg, fact, &s);
+ fact[1] = fact[2] = fact[3] = fact[0]; // copy default factor for other font styles;
+ buf = (short *)malloc(s*sizeof(short)); // prealocate buffer
+ if(!buf) { gzclose(fp); return false; }
+ // now allocate memory for all fonts
+ mem_alloc();
+ // and load symbols itself
+ register long i,j,ch;
+ for(i=0;i<int(numg);i++)
+ {
+ gzgets(fp,str,256);
+ sscanf(str,"%u%d%d%u%d%u", &tmpi, &tmpw, &tmpnl, &tmppl, &tmpnt, &tmppt);
+ id[i] = tmpi; width[0][i] = tmpw;
+ numl[0][i] = tmpnl; ln[0][i] = tmppl;
+ numt[0][i] = tmpnt; tr[0][i] = tmppt;
+ }
+ for(j=i=0;i<int(s);i++)
+ {
+ for(j=0;j<256;j++)
+ { str[j] = ch = gzgetc(fp); if(ch<=' ') break; }
+ buf[i] = atoi(str);
+ }
+ gzclose(fp); // finish wire normal font
+ cur += s; numb = cur;
+ main_copy(); // copy normal style as default for other styles
+ return true;
+}
+//-----------------------------------------------------------------------------
bool mglFont::Load(const char *base, const char *path)
{
// base = 0;
@@ -662,7 +683,6 @@ bool mglFont::Load(const char *base, const char *path)
#ifdef WIN32
sep='\\';
#endif
- FILE *fp;
char str[256];
setlocale(LC_NUMERIC,"C");
unsigned cur=0;
@@ -680,15 +700,14 @@ bool mglFont::Load(const char *base, const char *path)
}
Clear(); // first clear old
- if(!base || !read_main(base,path,cur))
+ sprintf(str,"%s%c%s.vfm",path,sep,base);
+ if(!base || !read_main(str,cur))
{ read_def(cur); if(buf) delete []buf; return true; }
//================== bold ===========================================
- sprintf(str,"%s%c%s_b.vfm",path,sep,base);
- fp = fopen(str,"rt");
- if(fp) // this file may absent
+ sprintf(str,"%s%c%s_b.vfm",path,sep,base); // this file may absent
+ if(read_data(str, fact+1, width[1], numl[1], ln[1], numt[1], tr[1], cur))
{
- read_data(fp, fact+1, width[1], numl[1], ln[1], numt[1], tr[1], cur);
fact[3] = fact[1]; // copy default factor for bold-italic;
// copy normal style as default for other styles
memcpy(numl[3],numl[1],numg*sizeof(short));
@@ -700,13 +719,11 @@ bool mglFont::Load(const char *base, const char *path)
//================== italic =========================================
sprintf(str,"%s%c%s_i.vfm",path,sep,base);
- fp = fopen(str,"rt");
- if(fp) read_data(fp, fact+2, width[2], numl[2], ln[2], numt[2], tr[2], cur);
+ read_data(str, fact+2, width[2], numl[2], ln[2], numt[2], tr[2], cur);
//================== bold-italic ====================================
sprintf(str,"%s%c%s_bi.vfm",path,sep,base);
- fp = fopen(str,"rt");
- if(fp) read_data(fp, fact+3, width[3], numl[3], ln[3], numt[3], tr[3], cur);
+ read_data(str, fact+3, width[3], numl[3], ln[3], numt[3], tr[3], cur);
numb = cur;
// Finally normalize all factors
diff --git a/mgl/mgl_gl.cpp b/mgl/mgl_gl.cpp
index cffa91e..81abcd3 100644
--- a/mgl/mgl_gl.cpp
+++ b/mgl/mgl_gl.cpp
@@ -316,8 +316,8 @@ void mglGraphGL::line_plot(mreal *p1,mreal *p2,mreal *c1,mreal *c2,bool all)
//-----------------------------------------------------------------------------
void mglGraphGL::mark_plot(mreal *pp, char type)
{
- mreal x=pp[0],y=pp[1],z=pp[2], s=MarkSize*175*font_factor; // 175 = 0.35*500
- if(!ScalePoint(x,y,z)) return;
+ mreal x=pp[0],y=pp[1],z=pp[2], s=MarkSize*0.35*font_factor; // 175 = 0.35*500
+// if(!ScalePoint(x,y,z)) return;
Pen(NC,'-',BaseLineWidth);
glColor3f(CDef[0],CDef[1],CDef[2]);
if(type=='.')
@@ -360,6 +360,13 @@ void mglGraphGL::mark_plot(mreal *pp, char type)
glVertex3f(x-0.6*s,y-0.8*s,z); glVertex3f(x+0.6*s,y+0.8*s,z);
glVertex3f(x+0.6*s,y-0.8*s,z); glVertex3f(x-0.6*s,y+0.8*s,z);
glEnd(); break;
+ case 'Y':
+ glBegin(GL_LINES);
+ glVertex3f(x,y-s,z); glVertex3f(x,y,z);
+ glVertex3f(x-0.8*s,y+0.6*s,z); glVertex3f(x,y,z);
+ glVertex3f(x+0.8*s,y+0.6*s,z); glVertex3f(x,y,z);
+ glEnd(); break;
+
case '^':
s = s*1.1;
glBegin(GL_LINE_LOOP);
@@ -369,7 +376,29 @@ void mglGraphGL::mark_plot(mreal *pp, char type)
s = s*1.1;
glBegin(GL_LINE_LOOP);
glVertex3f(x-s,y+s/2,z); glVertex3f(x+s,y+s/2,z);
- glVertex3f(x,y-s,z); glEnd(); break;
+ glVertex3f(x,y-s,z); glEnd(); break;
+
+ case 'R':
+ s = s*1.1;
+ glBegin(GL_TRIANGLES);
+ glVertex3f(x-s/2,y-s,z); glVertex3f(x-s/2,y+s,z);
+ glVertex3f(x+s,y,z); glEnd(); break;
+ case '>':
+ s = s*1.1;
+ glBegin(GL_LINE_LOOP);
+ glVertex3f(x-s/2,y-s,z); glVertex3f(x-s/2,y+s,z);
+ glVertex3f(x+s,y,z); glEnd(); break;
+ case 'L':
+ s = s*1.1;
+ glBegin(GL_TRIANGLES);
+ glVertex3f(x+s/2,y-s,z); glVertex3f(x+s/2,y+s,z);
+ glVertex3f(x-s,y,z); glEnd(); break;
+ case '<':
+ s = s*1.1;
+ glBegin(GL_LINE_LOOP);
+ glVertex3f(x+s/2,y-s,z); glVertex3f(x+s/2,y+s,z);
+ glVertex3f(x-s,y,z); glEnd(); break;
+
case 'S':
glBegin(GL_QUADS);
glVertex3f(x-s,y-s,z); glVertex3f(x+s,y-s,z);
@@ -414,3 +443,69 @@ void mglGraphGL::InPlot(mreal x1,mreal x2,mreal y1,mreal y2,bool rel)
glTranslated(-0.5,-0.5,-0.5);
}
//-----------------------------------------------------------------------------
+void mglGraphGL::Glyph(mreal x, mreal y, mreal f, int s, long j, char col)
+{
+ int ss=s&3;
+ mreal p[12];
+ f /= fnt->GetFact(ss);
+ mglColor cc = mglColor(col);
+ if(!cc.Valid()) cc = mglColor(CDef[0],CDef[1],CDef[2]);
+ glColor4f(cc.r,cc.g,cc.b,CDef[3]);
+ if(s&8)
+ {
+ mreal dy = 0.004;
+ if(s&4) glBegin(GL_LINE_LOOP);
+ else glBegin(GL_QUADS);
+ p[2]=p[5]=p[8]=p[11]=0;
+ p[0]=p[6]=x; p[1]=p[4] =y+dy;
+ p[3]=p[9]=fabs(f)+x; p[7]=p[10]=y-dy;
+ PostScale(p,4);
+ glVertex3f(p[0],p[1],p[2]); glVertex3f(p[3],p[4],p[5]);
+ glVertex3f(p[9],p[10],p[11]); glVertex3f(p[6],p[7],p[8]);
+ glEnd();
+ }
+ else if(s&4)
+ {
+ const short *line = fnt->GetLn(ss,j);
+ long ik,ii,il=0, nl=fnt->GetNl(ss,j);
+ if(!line || nl<=0) return;
+ glBegin(GL_LINES);
+ for(ik=0;ik<nl;ik++)
+ {
+ ii = 2*ik;
+ if(line[ii]==0x3fff && line[ii+1]==0x3fff) // line breakthrough
+ { il = ik+1; continue; }
+ else if(ik==nl-1 || (line[ii+2]==0x3fff && line[ii+3]==0x3fff))
+ { // enclose the circle. May be in future this block should be commented
+ p[0]=f*line[ii]+x; p[1]=f*line[ii+1]+y; p[2]=0; ii=2*il;
+ p[3]=f*line[ii]+x; p[4]=f*line[ii+1]+y; p[5]=0;
+ }
+ else
+ { // normal line
+ p[0]=f*line[ii]+x; p[1]=f*line[ii+1]+y; p[2]=0; ii+=2;
+ p[3]=f*line[ii]+x; p[4]=f*line[ii+1]+y; p[5]=0;
+ }
+ PostScale(p,2);
+ glVertex3f(p[0],p[1],p[2]); glVertex3f(p[3],p[4],p[5]);
+ }
+ glEnd();
+ }
+ else
+ {
+ const short *trig = fnt->GetTr(ss,j);
+ register long ik,ii, nt=fnt->GetNt(ss,j);
+ if(!trig || nt<=0) return;
+ glBegin(GL_TRIANGLES);
+ for(ik=0;ik<nt;ik++)
+ {
+ ii = 6*ik; p[0]=f*trig[ii]+x; p[1]=f*trig[ii+1]+y; p[2]=0;
+ ii+=2; p[3]=f*trig[ii]+x; p[4]=f*trig[ii+1]+y; p[5]=0;
+ ii+=2; p[6]=f*trig[ii]+x; p[7]=f*trig[ii+1]+y; p[8]=0;
+ PostScale(p,3);
+ glVertex3f(p[0],p[1],p[2]); glVertex3f(p[3],p[4],p[5]);
+ glVertex3f(p[6],p[7],p[8]);
+ }
+ glEnd();
+ }
+}
+//-----------------------------------------------------------------------------
diff --git a/mgl/mgl_io.cpp b/mgl/mgl_io.cpp
deleted file mode 100644
index 22143f4..0000000
--- a/mgl/mgl_io.cpp
+++ /dev/null
@@ -1,313 +0,0 @@
-/***************************************************************************
- * mgl_io.cpp is part of Math Graphic Library
- * Copyright (C) 2007 Alexey Balakin <balakin at appl.sci-nnov.ru> *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU Library General Public License as *
- * published by the Free Software Foundation; either version 3 of the *
- * License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU Library General Public *
- * License along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
- ***************************************************************************/
-#include<string.h>
-#include<stdio.h>
-#include<vector>
-#include<mgl/mgl_io.h>
-
-#ifdef WITH_LTDL
-#include<ltdl.h>
-#endif
-
-// Maximum number or registered handlers
-#define MAXCOUNT 255
-
-// Return Codes
-#define IO_OK 0
-#define IO_TOO_MANY_HANDLERS 1
-#define IO_SAVE_LOAD_PTRS_DIFFER 2
-#define IO_COUNTER_ERROR 3
-#define IO_CANT_SET_SEARCH_PATH 4
-#define IO_CANT_FIND_MODULE 5
-#define IO_LOAD_HANDLER_NOTFOUND 6
-#define IO_SAVE_HANDLER_NOTFOUND 7
-#define IO_UNLOAD_MODULE 8
-#define IO_UNKNOWN_HANDLERS 9
-#define IO_SAVE_ERROR 10
-#define IO_LOAD_ERROR 10
-
-int mgl_bmp_save(const char *fname, int w, int h, unsigned char **p);
-int mgl_png_save(const char *fname, int w, int h, unsigned char **p);
-int mgl_pnga_save(const char *fname, int w, int h, unsigned char **p);
-int mgl_png_load(const char *fname, mgl_save func);
-//----------------------------------------------------------------------------
-int mglIO::pRegister(const char *nDesc, int cExt, const char **type, mgl_load nptrLoad, mgl_save nptrSave, void* nltHandle, const char *nModuleName)
-{
- mglModule temp;
- temp.Desc=nDesc;
- temp.countExt=cExt;
- temp.Ext=type;
- temp.ptrLoad=nptrLoad;
- temp.ptrSave=nptrSave;
- temp.ltHandle=nltHandle;
- temp.Name=nModuleName;
- mymod.push_back(temp);
- return IO_OK;
-}
-//----------------------------------------------------------------------------
-int mglIO::Register(const char *nDesc, const int cExt, const char **type,
- mgl_load nptrLoad, mgl_save nptrSave, const char *nModuleName)
-{
- return pRegister(nDesc,cExt,type,nptrLoad,nptrSave,NULL,nModuleName);
-}
-//----------------------------------------------------------------------------
-#ifdef WITH_LTDL
-int mglIO::Register(const char *nDesc, int cExt, const char **type,
- const char *nModuleName, const char *Path)
-{
- lt_dlhandle module=NULL;
- mgl_load nptrLoad;
- mgl_save nptrSave;
- lt_dlinit();
- if(strlen(Path)!=0){
- if(lt_dladdsearchdir(Path)!=0){
-// printf("path %s\n",lt_dlgetsearchpath());
- return IO_CANT_SET_SEARCH_PATH;
- }
- }
- module=lt_dlopenext(nModuleName);
- if(module==NULL)
- return IO_CANT_FIND_MODULE;
- nptrSave=(mgl_save)lt_dlsym(module, "save");
- if(nptrSave==NULL){
-// printf("save not found\n");
- lt_dlclose(module);
- return IO_SAVE_HANDLER_NOTFOUND;
- }
- nptrLoad=(mgl_load)lt_dlsym(module, "load");
- if(nptrLoad==NULL){
- lt_dlclose(module);
- return IO_LOAD_HANDLER_NOTFOUND;
- }
- return pRegister(nDesc,cExt,type,nptrLoad,nptrSave,(void*)module,nModuleName);
-}
-#endif
-//----------------------------------------------------------------------------
-int mglIO::punRegister(int offset)
-{
- if(mymod.size()==0)
- return IO_COUNTER_ERROR;
- if(mymod[offset].ltHandle!=NULL){
-#ifdef WITH_LTDL
- if(!lt_dlclose((lt_dlhandle)(mymod[offset].ltHandle)))
- {
-#endif
- return IO_UNLOAD_MODULE;
-#ifdef WITH_LTDL
- }
- lt_dlexit();}
-#endif
- delete[] mymod[offset].Ext;
- mymod.erase(mymod.begin()+offset);
- return IO_OK;
-}
-//----------------------------------------------------------------------------
-int mglIO::unRegister(mgl_load nptrLoad, mgl_save nptrSave)
-{
- int posLoad=-1;
- int posSave=-1;
- for(unsigned int i=0; i<mymod.size(); i++)
- if(mymod[i].ptrLoad==nptrLoad)
- posLoad=i;
- for(unsigned int i=0; i<mymod.size(); i++)
- if(mymod[i].ptrSave==nptrSave)
- posSave=i;
- if(posSave!=posLoad)
- return IO_SAVE_LOAD_PTRS_DIFFER;
- if(posLoad==-1)
- return IO_UNKNOWN_HANDLERS;
- return punRegister(posLoad);
-}
-//----------------------------------------------------------------------------
-int mglIO::unRegister(const char *nModuleName)
-{
- int offset=-1;
- for(unsigned int i=0;i<mymod.size(); i++)
- if(!strcmp(mymod[i].Name,nModuleName))
- offset=i;
- if(offset==-1)
- return IO_UNKNOWN_HANDLERS;
- return punRegister(offset);
-}
-//----------------------------------------------------------------------------
-int sample_save(const char *fname, int w,int h, unsigned char **p)
-{
- printf("Sample save called\n");
- return 0;
-}
-//----------------------------------------------------------------------------
-int sample_load(const char *fname, void (*func)(void*,int,int,const unsigned char **), void *par)
-{
- printf("Sample load called\n");
- return 0;
-}
-//----------------------------------------------------------------------------
-mglIO::mglIO(void)
-{
- const char *Ext1="sml";
- const char *Ext2="sample";
- const char **type=new const char*[2];
- type[0]=Ext1; type[1]=Ext2;
- Register("Sample data type", 2, type, &sample_save, &sample_load,"sample");
-}
-//----------------------------------------------------------------------------
-mglIO::~mglIO()
-{
- unRegister("sample");
- for(unsigned int i=0;i<mymod.size();i++)
- punRegister(i);
-}
-//----------------------------------------------------------------------------
-int mglIO::Save(const char *type, const char *fname, int w, int h, unsigned char **p) const
-{
- ptrFunc* func;
- for(unsigned int i=0;i<mymod.size();i++)
- for(int j=0;j<mymod[i].countExt;j++)
- if(!strcmp(mymod[i].Ext[j],type)){
- func=mymod[i].ptrSave;
- return (*func)(fname,w,h,p);
- }
- return IO_SAVE_ERROR;
-}
-//----------------------------------------------------------------------------
-int mglIO::Load(const char *type, const char *fname, int w, int h, unsigned char **p) const
-{
- ptrFunc* func;
- for(unsigned int i=0;i<mymod.size();i++)
- for(int j=0;j<mymod[i].countExt;j++)
- if(!strcmp(mymod[i].Ext[j],type))
- {
- func=mymod[i].ptrLoad;
- return (*func)(fname,w,h,p);
- }
- return IO_LOAD_ERROR;
-}
-//----------------------------------------------------------------------------
-int mgl_pnga_save(const char *fname, int w, int h, unsigned char **p)
-{
- FILE *fp = fopen(fname, "wb");
- if (!fp) return 1;
-
- png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING,0,0,0);
- if (!png_ptr) return 1;
- png_infop info_ptr = png_create_info_struct(png_ptr);
- if (!info_ptr)
- { png_destroy_write_struct(&png_ptr,0); return 1; }
-
- png_init_io(png_ptr, fp);
- png_set_filter(png_ptr, 0, PNG_ALL_FILTERS);
- png_set_compression_level(png_ptr, Z_BEST_COMPRESSION);
- png_set_IHDR(png_ptr, info_ptr, w, h, 8,
- PNG_COLOR_TYPE_RGB_ALPHA,
- PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT,
- PNG_FILTER_TYPE_DEFAULT);
- png_set_rows(png_ptr, info_ptr, p);
- png_write_png(png_ptr, info_ptr, PNG_TRANSFORM_IDENTITY, 0);
- png_write_end(png_ptr, info_ptr);
-
- png_destroy_write_struct(&png_ptr, &info_ptr);
- fclose(fp);
- return 0;
-}
-//-----------------------------------------------------------------------------
-int mgl_png_save(const char *fname, int w, int h, unsigned char **p)
-{
- FILE *fp = fopen(fname, "wb");
- if (!fp) return 1;
-
- png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING,0,0,0);
- if (!png_ptr) return 1;
- png_infop info_ptr = png_create_info_struct(png_ptr);
- if (!info_ptr)
- { png_destroy_write_struct(&png_ptr,0); return 1; }
-
- png_init_io(png_ptr, fp);
- png_set_filter(png_ptr, 0, PNG_ALL_FILTERS);
- png_set_compression_level(png_ptr, Z_BEST_COMPRESSION);
- png_set_IHDR(png_ptr, info_ptr, w, h, 8,
- PNG_COLOR_TYPE_RGB,
- PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT,
- PNG_FILTER_TYPE_DEFAULT);
- png_set_rows(png_ptr, info_ptr, p);
- png_write_png(png_ptr, info_ptr, PNG_TRANSFORM_IDENTITY, 0);
- png_write_end(png_ptr, info_ptr);
-
- png_destroy_write_struct(&png_ptr, &info_ptr);
- fclose(fp);
- return 0;
-}
-//-----------------------------------------------------------------------------
-int mgl_bmp_save(const char *fname, int w, int h, unsigned char **p)
-{
- FILE *fp = fopen(fname,"wb");
- if (!fp) return 1;
-
- char z[4] = {0,0,0,0};
- unsigned u = w*h*3 + 54;
- // BITMAPFILEHEADER
- fwrite("BM",2,1,fp); fwrite(&u,4,1,fp);
- fwrite(z,4,1,fp); u=54; fwrite(&u,4,1,fp);
- // BITMAPINFOHEADER
- u=40; fwrite(&u,4,1,fp); fwrite(&(w),4,1,fp); fwrite(&(h),4,1,fp);
- unsigned short pp=1;
- fwrite(&pp,2,1,fp); pp=24; fwrite(&pp,2,1,fp); u = w*h*3;
- fwrite(z,4,1,fp); fwrite(&u,4,1,fp);
- fwrite(z,4,1,fp); fwrite(z,4,1,fp);
- fwrite(z,4,1,fp); fwrite(z,4,1,fp);
- // image
-// for(int i=h-1;i>=0;i--) fwrite(p[i],3*w,1,fp);
- register int i,j;
- for(i=h-1;i>=0;i--) for(j=0;j<w;j++)
- {
- fwrite(p[i]+3*j+2,1,1,fp);
- fwrite(p[i]+3*j+1,1,1,fp);
- fwrite(p[i]+3*j+0,1,1,fp);
- }
- fclose(fp);
- return 0;
-}
-//-----------------------------------------------------------------------------
-void mgl_png_load(const char *fname, void (*func)(void*,int,int,const unsigned char **), void *par)
-{
- FILE *fp = fopen(fname, "rb");
- if (!fp) return;
- png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0);
- if (!png_ptr) return;
- png_infop info_ptr = png_create_info_struct(png_ptr);
- if (!info_ptr)
- { png_destroy_read_struct(&png_ptr,0, 0); return; }
- png_infop end_info = png_create_info_struct(png_ptr);
- if (!end_info)
- { png_destroy_read_struct(&png_ptr, &info_ptr, 0); return; }
-
- png_init_io(png_ptr, fp);
- png_read_png(png_ptr, info_ptr,
- PNG_TRANSFORM_STRIP_ALPHA|PNG_TRANSFORM_PACKING|
- PNG_TRANSFORM_STRIP_16|PNG_TRANSFORM_EXPAND,0);
- unsigned char **rows = png_get_rows(png_ptr, info_ptr);
-
- long w=png_get_image_width(png_ptr, info_ptr);
- long h=png_get_image_height(png_ptr, info_ptr);
- func(par, w, h, rows);
-
- png_destroy_read_struct(&png_ptr, &info_ptr,&end_info);
- fclose(fp);
-}
-//-----------------------------------------------------------------------------
diff --git a/mgl/mgl_main.cpp b/mgl/mgl_main.cpp
index d0fdf72..eeeac50 100644
--- a/mgl/mgl_main.cpp
+++ b/mgl/mgl_main.cpp
@@ -28,11 +28,6 @@
#include <wchar.h>
#include "mgl/mgl.h"
#include "mgl/mgl_eval.h"
-#ifndef MGL_DEF_VIEWER
-//#define MGL_DEF_VIEWER "kuickshow"
-#define MGL_DEF_VIEWER "gthumb"
-//#define MGL_DEF_VIEWER "gwenview";
-#endif
//-----------------------------------------------------------------------------
const char *mglWarn[mglWarnEnd] = {"%s: data dimension(s) is incompatible",
"%s: data dimension(s) is too small",
@@ -240,7 +235,7 @@ void mglGraph::SetScheme(const char *s, bool face)
if(s[0]==0) return;
strcpy(last_style, s);
NumCol = 0;
- for(i=0;i<NUM_COLOR;i++) cmap[i] = NC;
+ for(i=0;i<MGL_CMAP_COLOR;i++) cmap[i] = NC;
cmap[0] = mglColor(0,0,0); cmap[1] = mglColor(1,1,1);
OnCoord = false; SmoothColorbar = true;
for(i=0;i<strlen(s);i++)
@@ -254,7 +249,7 @@ void mglGraph::SetScheme(const char *s, bool face)
{ cmap[NumCol].Set(s[i],(s[i+1]-'0')/5.f); i++; }
else cmap[NumCol].Set(s[i]);
NumCol++;
- if(NumCol>=NUM_COLOR) break;
+ if(NumCol>=MGL_CMAP_COLOR) break;
}
else
{
@@ -263,7 +258,7 @@ void mglGraph::SetScheme(const char *s, bool face)
{
cmap[NumCol].Set(s[i]);
NumCol++;
- if(NumCol>=NUM_COLOR) break;
+ if(NumCol>=MGL_CMAP_COLOR) break;
}
}
}
@@ -420,8 +415,8 @@ char mglGraph::SelectPen(const char *p)
{
// strcpy(last_style, p);
const char *col = "wkrgbcymhRGBCYMHWlenuqpLENUQP";
- const char *stl = " -|;:ji";
- const char *mrk = "*o+xsd.^v";
+ const char *stl = " -|;:ji=";
+ const char *mrk = "*o+xsd.^v<>";
const char *wdh = "123456789";
const char *arr = "AKDTVISO_";
for(unsigned i=0;i<strlen(p);i++)
@@ -443,11 +438,17 @@ char mglGraph::SelectPen(const char *p)
}
if(strchr(p,'#'))
{
+ if(mk=='.') mk = 'C';
+ if(mk=='+') mk = 'P';
+ if(mk=='x') mk = 'X';
if(mk=='o') mk = 'O';
if(mk=='d') mk = 'D';
if(mk=='s') mk = 'S';
if(mk=='^') mk = 'T';
if(mk=='v') mk = 'V';
+ if(mk=='<') mk = 'L';
+ if(mk=='>') mk = 'R';
+ if(mk=='*') mk = 'Y';
}
}
Pen(c, st, BaseLineWidth*w);
@@ -458,7 +459,8 @@ char mglGraph::SelectPen(const char *p)
//-----------------------------------------------------------------------------
void mglGraph::SetPal(const char *colors)
{
- if(!colors || !colors[0]) colors = DefPal; // restore default
+ if(!colors || !colors[0]) // restore default if only 1 color
+ { if(NumPal<2) colors = DefPal; else return; }
memset(Pal,0,100*sizeof(mglColor));
memset(PalNames,0,101*sizeof(char));
int i,n = strlen(colors),k;
@@ -469,7 +471,7 @@ void mglGraph::SetPal(const char *colors)
PalNames[k] = colors[i]; Pal[k] = mglColor(colors[i]); k++;
}
NumPal = k; // CurrPal = 0;
- if(k==0) SetPal(0); // if no colors then set default palette
+ if(k<1) SetPal(0); // if no colors then set default palette
}
//-----------------------------------------------------------------------------
mglColor mglGraph::GetPal()
@@ -489,7 +491,35 @@ void mglGraph::SubPlot(int nx,int ny,int m, mreal dx, mreal dy)
else { dx /= 2; dy /= 2; }
x1 = (mx+dx)/nx; x2 = (mx+1+dx)/nx;
y2 = 1.f-(my+dy)/ny; y1 = 1.f-(my+1+dy)/ny;
- InPlot(x1,x2,y1,y2);
+ InPlot(x1,x2,y1,y2,false);
+}
+//-----------------------------------------------------------------------------
+void mglGraph::SubPlot(int nx,int ny,int m, const char *style)
+{
+ mreal x1,x2,y1,y2;
+ int mx = m%nx, my = m/nx;
+ x1 = float(mx)/nx; x2 = float(mx+1)/nx;
+ y2 = 1.f-float(my)/ny; y1 = 1.f-float(my+1)/ny;
+ InPlot(x1,x2,y1,y2,style);
+}
+//-----------------------------------------------------------------------------
+void mglGraph::InPlot(mreal x1,mreal x2,mreal y1,mreal y2, const char *st)
+{
+ if(!st) { InPlot(x1,x2,y1,y2,false); return; }
+ if(strchr(st,'T')) { y1*=0.9; y2*=0.9; } // general title
+ bool r = !(strchr(st,'r') || strchr(st,'R') || strchr(st,'>') || strchr(st,'g'));
+ bool l = !(strchr(st,'l') || strchr(st,'L') || strchr(st,'<') || strchr(st,'g'));
+ bool u = !(strchr(st,'u') || strchr(st,'U') || strchr(st,'_') || strchr(st,'g'));
+ bool a = !(strchr(st,'a') || strchr(st,'A') || strchr(st,'^') || strchr(st,'g') || strchr(st,'t'));
+ // let use simplified scheme -- i.e. no differences between axis, colorbar and/or title
+ register mreal xs=(x1+x2)/2, ys=(y1+y2)/2, f1 = 1.3, f2 = 1.1;
+ if(r && l) { x2=xs+(x2-xs)*f1; x1=xs+(x1-xs)*f1; }
+ else if(r) { x2=xs+(x2-xs)*f1; x1=xs+(x1-xs)*f2; }
+ else if(l) { x2=xs+(x2-xs)*f2; x1=xs+(x1-xs)*f1; }
+ if(a && u) { y2=ys+(y2-ys)*f1; y1=ys+(y1-ys)*f1; }
+ else if(a) { y2=ys+(y2-ys)*f1; y1=ys+(y1-ys)*f2; }
+ else if(u) { y2=ys+(y2-ys)*f2; y1=ys+(y1-ys)*f1; }
+ InPlot(x1,x2,y1,y2,false);
}
//-----------------------------------------------------------------------------
void mglGraph::Printf(mglPoint p,const char *str,...)
@@ -556,8 +586,9 @@ void mglGraph::ClearEq()
//-----------------------------------------------------------------------------
void mglGraph::DefaultPlotParam()
{
+ LegendMarks = 1;
FontSize = 5; BaseLineWidth = 1;
- Ambient(); Ternary(false);
+ Ambient(); Ternary(0);
PlotId = "frame"; SelectPen("k-1");
SetScheme("BbcyrR"); SetPalette(MGL_DEF_PAL);
SetTicks('x'); SetTicks('y'); SetTicks('z'); SetTicks('c');
@@ -587,7 +618,7 @@ void mglGraph::DefaultPlotParam()
for(int i=0;i<10;i++)
{ Light(i, mglPoint(0,0,1)); Light(i,false); }
Light(0,true); Light(false);
- InPlot(0,1,0,1); Zoom(0,0,1,1);
+ InPlot(0,1,0,1,false); Zoom(0,0,1,1);
}
//-----------------------------------------------------------------------------
void mglGraph::SetTickStl(const char *stl, const char *sub)
@@ -848,12 +879,12 @@ void mglGraph::SetFont(mglFont *f)
//-----------------------------------------------------------------------------
void mglGraph::Title(const wchar_t *str,const char *font,mreal size)
{
- Identity();
+ Push(); Identity();
mglFormula *ox=fx, *oy=fy, *oz=fz;
fx = fy = fz = NULL;
Text(mglPoint((Min.x+Max.x)*0.5, Max.y+(Max.y-Min.y)*0.15, (Min.z+Max.z)*0.5), str, font, size);
fx=ox; fy=oy; fz=oz;
- RestoreM();
+ Pop();
}
//-----------------------------------------------------------------------------
void mglGraph::Title(const char *str,const char *font,mreal size)
@@ -867,7 +898,7 @@ void mglGraph::Title(const char *str,const char *font,mreal size)
//-----------------------------------------------------------------------------
void mglGraph::Labelw(mreal x, mreal y, const wchar_t *text, const char *fnt, mreal size, bool rel)
{
- Identity(rel);
+ Push(); Identity(rel);
mglFormula *ox=fx, *oy=fy, *oz=fz;
fx = fy = fz = NULL;
char *f = new char[strlen(fnt)+1];
@@ -878,7 +909,7 @@ void mglGraph::Labelw(mreal x, mreal y, const wchar_t *text, const char *fnt, mr
Max.z), text, f, size);
delete []f;
fx=ox; fy=oy; fz=oz;
- RestoreM();
+ Pop();
}
//-----------------------------------------------------------------------------
void mglGraph::Label(mreal x, mreal y, const char *str, const char *fnt, mreal size, bool rel)
@@ -1039,7 +1070,7 @@ void mglGraph::ShowImage(const char *viewer, bool keep)
if(keep)
{
sprintf(cmd,"%s %s &", viewer,fname);
- system(cmd);
+ if(system(cmd)==-1) printf("Error to call external viewer\n");
#ifdef WIN32
// sleep(2);
sprintf(cmd,"del %s", fname);
@@ -1053,7 +1084,7 @@ void mglGraph::ShowImage(const char *viewer, bool keep)
else
sprintf(cmd,"%s %s; rm %s", viewer,fname,fname);
#endif
- system(cmd);
+ if(system(cmd)==-1) printf("Error to call external viewer\n");
delete []cmd;
}
//-----------------------------------------------------------------------------
@@ -1074,11 +1105,26 @@ void mglGraph::SetAutoRanges(mreal x1, mreal x2, mreal y1, mreal y2, mreal z1, m
void mglGraph::Colorbar(const char *sch,int where)
{
SetScheme(sch);
+ // â0â - right, â1â - left, â2â - above, â3â - under
+ if(sch && strchr(sch,'>')) where = 0;
+ if(sch && strchr(sch,'<')) where = 1;
+ if(sch && strchr(sch,'^')) where = 2;
+ if(sch && strchr(sch,'_')) where = 3;
+ if(sch && strchr(sch,'A')) { Push(); Identity(); }
Colorbar(where, where==0?1:0, where==2?1:0, 1, 1);
+ if(sch && strchr(sch,'A')) Pop();
}
//-----------------------------------------------------------------------------
void mglGraph::Colorbar(const mglData &v, const char *sch,int where)
-{ Colorbar(v,sch,where, where==0?1:0, where==2?1:0, 1, 1); }
+{
+ if(sch && strchr(sch,'>')) where = 0;
+ if(sch && strchr(sch,'<')) where = 1;
+ if(sch && strchr(sch,'^')) where = 2;
+ if(sch && strchr(sch,'_')) where = 3;
+ if(sch && strchr(sch,'A')) { Push(); Identity(); }
+ Colorbar(v,sch,where, where==0?1:0, where==2?1:0, 1, 1);
+ if(sch && strchr(sch,'A')) Pop();
+}
//-----------------------------------------------------------------------------
void mglGraph::Colorbar(int where, mreal x, mreal y, mreal w, mreal h)
{
@@ -1107,11 +1153,11 @@ void mglGraph::Colorbar(const mglData &v, const char *sch, int where, mreal x, m
delete []c;
}
//-----------------------------------------------------------------------------
-void mglGraph::ColumnPlot(int num, int i)
+void mglGraph::ColumnPlot(int num, int i, mreal dd)
{
mreal d = i/(num+PlotFactor-1);
mreal w = PlotFactor/(num+PlotFactor-1);
- InPlot(0,1,d,d+w,true);
+ InPlot(0,1,d,d+w*(1-dd),true);
}
//-----------------------------------------------------------------------------
void mglGraph::SetCoor(int how)
diff --git a/mgl/mgl_parse.cpp b/mgl/mgl_parse.cpp
index e50c6c2..5443add 100644
--- a/mgl/mgl_parse.cpp
+++ b/mgl/mgl_parse.cpp
@@ -35,6 +35,41 @@ wchar_t *wcstokw32(wchar_t *wcs, const wchar_t *delim) { return wcstok(wcs,delim
wchar_t *mgl_wcsdup(const wchar_t *s);
//-----------------------------------------------------------------------------
+mglFunc::mglFunc(long p, const wchar_t *f, mglFunc *prev)
+{
+ pos = p; next = prev;
+ register long i;
+ for(i=0;(isalnum(f[i]) || f[i]=='_') && i<31;i++) func[i]=f[i];
+ func[i]=0;
+ narg = wcstol(f+i+1,0,0);
+ if(narg<0 || narg>9) narg=0;
+}
+//-----------------------------------------------------------------------------
+long mglParse::IsFunc(const wchar_t *name, int *na)
+{
+ mglFunc *f=func;
+ while(f)
+ {
+ if(!wcscmp(name,f->func))
+ { if(na) *na=f->narg; return f->pos; }
+ f = f->next;
+ }
+ return 0;
+}
+//-----------------------------------------------------------------------------
+void mglParse::ScanFunc(const wchar_t *line)
+{
+ static long num=0;
+ if(!line)
+ { if(func) delete func;
+ num=0; func=0; return; }
+ num++;
+ if(wcsncmp(line,L"func",4) || line[4]>' ') return;
+ register long i;
+ for(i=4;line[i]<=' ' || line[i]=='\'';i++);
+ func = new mglFunc(num-1, line+i, func);
+}
+//-----------------------------------------------------------------------------
void mgl_wcstrim(wchar_t *str)
{
wchar_t *c = mgl_wcsdup(str);
@@ -160,7 +195,7 @@ mglParse::mglParse(bool setsize)
AllowSetSize=setsize;
Once = true; parlen=320;
op1 = new wchar_t[4096]; op2 = new wchar_t[4096];
- fval = new mglData[10];
+ fval = new mglData[40];
}
//-----------------------------------------------------------------------------
mglParse::~mglParse()
@@ -170,9 +205,10 @@ mglParse::~mglParse()
while(DataList->next) delete DataList->next;
delete DataList;
}
- for(long i=0;i<10;i++) if(par[i]) delete [] par[i];
+ for(long i=0;i<40;i++) if(par[i]) delete []par[i];
delete []op1; delete []op2; delete []fval;
if(Cmd!=mgls_base_cmd) delete []Cmd;
+ if(fn_stack) free(fn_stack);
}
//-----------------------------------------------------------------------------
bool mglParse::AddParam(int n, const char *str, bool isstr)
@@ -235,7 +271,7 @@ mglNum *mglParse::FindNum(const char *str)
//-----------------------------------------------------------------------------
bool mglParse::AddParam(int n, const wchar_t *str, bool isstr)
{
- if(n<0 || n>9 || wcschr(str,'$')) return false;
+ if(n<0 || n>39 || wcschr(str,'$')) return false;
if(!isstr) parlen += wcslen(str);
if(par[n]) delete []par[n];
par[n] = new wchar_t[wcslen(str)+1];
@@ -474,11 +510,32 @@ int mglParse::PreExec(mglGraph *, long k, wchar_t **arg, mglArg *a)
return n;
}
//-----------------------------------------------------------------------------
+void mglParse::PutArg(const wchar_t *string, wchar_t *str, bool def)
+{
+ if(parlen>0)
+ {
+ wchar_t *sb = new wchar_t[wcslen(string)+1], *t;
+ if(def) str = str+10;
+ register long n;
+ while((t=wcschr(str,'$'))!=0)
+ {
+ wcscpy(sb,t+2);
+ t[0]=0;
+ n = t[1]-'0'; if(n>=0 && n<=9 && par[n]) wcscat(str,par[n]);
+ n = t[1]-'a'; if(n>=0 && n<='z'-'a' && par[n+10]) wcscat(str,par[n+10]);
+ if(t[1]=='$') wcscat(str,L"\xffff");
+ wcscat(str,sb);
+ }
+ delete []sb;
+ while((t=wcschr(str,L'\xffff'))!=0) *t='$';
+ }
+}
+//-----------------------------------------------------------------------------
// return values: 0 - OK, 1 - wrong arguments, 2 - wrong command, 3 - string too long, 4 -- unclosed string
int mglParse::Parse(mglGraph *gr, const wchar_t *string, long pos)
{
if(!gr || Stop) return 0;
- wchar_t *str, *s = new wchar_t[wcslen(string)+1+parlen],*arg[1024],*t;
+ wchar_t *str, *s = new wchar_t[wcslen(string)+1+40*parlen],*arg[1024],*t;
str = s;
wcscpy(str,string);
wcstrim_mgl(str);
@@ -499,13 +556,13 @@ int mglParse::Parse(mglGraph *gr, const wchar_t *string, long pos)
}
}
// check if string is closed
- for(n=1,k=0;n<long(wcslen(str));n++)
- if(str[n]=='\'' && str[n-1]!='\\') k++;
+ for(n=1,k=0;n<long(wcslen(str));n++) if(str[n]=='\'' && str[n-1]!='\\') k++;
if(k%2) return 4; // strings is not closed
// define parameters or start cycle
if(!skip() && !wcsncmp(str,L"def",3) && (str[6]==' ' || str[6]=='\t'))
{
- if(!skip() && !wcsncmp(str+3,L"ine",3) && (str[6]==' ' || str[6]=='\t'))
+ PutArg(string,str,true);
+ if(!wcsncmp(str+3,L"ine",3))
{
wchar_t *ss=str+7; wcstrim_mgl(ss);// int res = 1;
if(*ss=='$' && ss[1]>='0' && ss[1]<='9')
@@ -515,8 +572,15 @@ int mglParse::Parse(mglGraph *gr, const wchar_t *string, long pos)
AddParam(n, ss);
delete []s; return 0;
}
+ if(*ss=='$' && ss[1]>='a' && ss[1]<='z')
+ {
+ int n=ss[1]-'a';// res = 0;
+ ss +=2; mgl_wcstrim(ss);
+ AddParam(n+10, ss);
+ delete []s; return 0;
+ }
}
- if(!skip() && !wcsncmp(str+3,L"num",3) && (str[6]==' ' || str[6]=='\t'))
+ if(!wcsncmp(str+3,L"num",3))
{
str += 7; wcstrim_mgl(str); int res = 1;
if(*str=='$' && str[1]>='0' && str[1]<='9')
@@ -529,9 +593,19 @@ int mglParse::Parse(mglGraph *gr, const wchar_t *string, long pos)
AddParam(n, buf);
delete []buf;
}
+ if(*str=='$' && str[1]>='a' && str[1]<='z')
+ {
+ int n=str[1]-'a'; res = 0;
+ str +=2; mgl_wcstrim(str);
+ const mglData &d=mglFormulaCalc(str, this);
+ char *buf=new char[128];
+ sprintf(buf,"%g",d.a[0]);
+ AddParam(n+10, buf);
+ delete []buf;
+ }
delete []s; return res;
}
- if(!skip() && !wcsncmp(str+3,L"chr",3) && (str[6]==' ' || str[6]=='\t'))
+ if(!wcsncmp(str+3,L"chr",3))
{
str += 7; wcstrim_mgl(str); int res = 1;
if(*str=='$' && str[1]>='0' && str[1]<='9')
@@ -542,9 +616,17 @@ int mglParse::Parse(mglGraph *gr, const wchar_t *string, long pos)
wchar_t buf[2]={0,0}; buf[0] = wchar_t(d.a[0]);
AddParam(n, buf);
}
+ if(*str=='$' && str[1]>='a' && str[1]<='z')
+ {
+ int n=str[1]-'a'; res = 0;
+ str +=2; mgl_wcstrim(str);
+ const mglData &d=mglFormulaCalc(str, this);
+ wchar_t buf[2]={0,0}; buf[0] = wchar_t(d.a[0]);
+ AddParam(n+10, buf);
+ }
delete []s; return res;
}
- if(!skip() && !wcsncmp(str+3,L"pal",3) && (str[6]==' ' || str[6]=='\t'))
+ if(!wcsncmp(str+3,L"pal",3))
{
str += 7; wcstrim_mgl(str); int res = 1;
if(*str=='$' && str[1]>='0' && str[1]<='9')
@@ -556,6 +638,15 @@ int mglParse::Parse(mglGraph *gr, const wchar_t *string, long pos)
buf[0] = gr->DefPal[int(d.a[0])%gr->NumPal];
AddParam(n, buf);
}
+ if(*str=='$' && str[1]>='a' && str[1]<='z')
+ {
+ int n=str[1]-'a'; res = 0;
+ str +=2; mgl_wcstrim(str);
+ const mglData &d=mglFormulaCalc(str, this);
+ wchar_t buf[2]={0,0};
+ buf[0] = gr->DefPal[int(d.a[0])%gr->NumPal];
+ AddParam(n+10, buf);
+ }
delete []s; return res;
}
}
@@ -565,24 +656,10 @@ int mglParse::Parse(mglGraph *gr, const wchar_t *string, long pos)
while(*t && isspace(*t)) t++;
// if command have format 'for $N ...' then change it to 'for N ...'
if(*t=='$' && t[1]>='0' && t[1]<='9') *t = ' ';
+ if(*t=='$' && t[1]>='a' && t[1]<='z') *t = ' ';
}
// parse arguments (parameters $1, ..., $9)
- if(parlen>0)
- {
- wchar_t *sb = new wchar_t[wcslen(string)+1];
- while((t=wcschr(str,'$'))!=0)
- {
- wcscpy(sb,t+2);
- t[0]=0;
- long n = t[1]-'0';
- if(n>=0 && n<=9 && par[n]) wcscat(str,par[n]);
- wcscat(str,sb);
- }
- delete []sb;
- }
-
- wcstrim_mgl(str);
- if(!skip() && !wcscmp(str,L"stop")) { Stop = true; delete []s; return 0; }
+ PutArg (string,str,false); wcstrim_mgl(str);
for(k=0;k<1024;k++) // parse string to substrings (by spaces)
{
@@ -605,6 +682,9 @@ int mglParse::Parse(mglGraph *gr, const wchar_t *string, long pos)
mglArg *a = new mglArg[k];
FillArg(gr, k, arg, a);
// execute first special (program-flow-control) commands
+ if(!skip() && !wcscmp(arg[0],L"stop"))
+ { Stop = true; delete []s; delete []a; return 0; }
+ if(!wcscmp(arg[0],L"func")) { delete []s; delete []a; return 0; }
n = FlowExec(gr, arg[0],k-1,a);
if(n) { delete []s; delete []a; return n-1; }
if(skip()) { delete []s; delete []a; return 0; }
@@ -623,16 +703,45 @@ int mglParse::Parse(mglGraph *gr, const wchar_t *string, long pos)
n = 1;
if(a[0].type==1)
{
- n=0; mgl_wcstombs(a[0].s, a[0].w, 1024);
- FILE *fp = fopen(a[0].s,"rt"); Execute(gr,fp); fclose(fp);
+ int na=0;
+ mgl_wcstombs(a[0].s, a[0].w, 1024); n=-IsFunc(a[0].w,&na);
+ if(n && k!=na+2)
+ {
+ if(gr->Message)
+ sprintf(gr->Message,"Bad arguments for %ls: %ld instead of %d\n",
+ a[0].w,k-2,na);
+ n = 1;
+ }
+ else if(n)
+ {
+ if(!fn_stack)
+ { fn_num = 100;
+ fn_stack = (mglFnStack*)malloc(fn_num*sizeof(mglFnStack)); }
+ if(fn_pos >= fn_num)
+ { fn_num+= 100;
+ fn_stack = (mglFnStack*)realloc(fn_stack,fn_num*sizeof(mglFnStack)); }
+ memcpy(fn_stack[fn_pos].par,par+1,9*sizeof(wchar_t*));
+ memset(par+1,0,9*sizeof(wchar_t*));
+ for(int i=1;i<k-1;i++) AddParam(i,arg[i+1]);
+ fn_stack[fn_pos].pos = pos; fn_pos++; n--;
+ }
+ else
+ {
+ FILE *fp = fopen(a[0].s,"rt");
+ if(fp) { Execute(gr,fp); fclose(fp); }
+ else n=1;
+ }
}
delete []s; delete []a; return n;
}
if(!wcscmp(arg[0],L"for"))
{
n = 1;
- int r = int(a[0].v);
- if(a[0].type==2 && (r>=0 || r<=9))
+ char ch = arg[1][0];
+ int r = ch-'0';
+ if(ch>='a' && ch<='z') r = 10+ch-'a';
+// int r = int(a[0].v);
+ if(arg[1][1]==0 && (r>=0 || r<=39))
{
if(a[1].type==0)
{
@@ -652,7 +761,7 @@ int mglParse::Parse(mglGraph *gr, const wchar_t *string, long pos)
}
if(n==0)
{
- for(int i=9;i>0;i--)
+ for(int i=39;i>0;i--)
{ for_stack[i]=for_stack[i-1]; if_for[i]=if_for[i-1]; }
for_stack[0] = r+1; fval[r].nz = pos; if_for[0]=if_pos;
wchar_t buf[32]; mglprintf(buf,32,L"%g",fval[r].a[0]);
@@ -755,7 +864,7 @@ int mglParse::FlowExec(mglGraph *, const wchar_t *com, long m, mglArg *a)
}
else n = 1;
if(n==0)
- { if_stack[if_pos] = cond; if_pos = if_pos<19 ? if_pos+1 : 19; }
+ { if_stack[if_pos] = cond; if_pos = if_pos<39 ? if_pos+1 : 39; }
}
else if(!Skip && !wcscmp(com,L"endif"))
{
@@ -796,6 +905,13 @@ int mglParse::FlowExec(mglGraph *, const wchar_t *com, long m, mglArg *a)
if(if_pos==if_for[0]) if_pos = if_pos>0 ? if_pos-1 : 0;
if(out) mglprintf(out,1024,L"break;"); for_br = true;
}
+ else if(!skip() && !wcscmp(com, L"return")) // parse command "delete"
+ {
+ if(!fn_pos) return 2;
+ fn_pos--; n = -fn_stack[fn_pos].pos-1;
+ for(int i=1;i<10;i++) if(par[i]) delete []par[i];
+ memcpy(par+1,fn_stack[fn_pos].par,9*sizeof(wchar_t*));
+ }
else if(!ifskip() && !Skip && !wcscmp(com,L"next"))
{
if(if_pos==if_for[0]) if_pos = if_pos>0 ? if_pos-1 : 0;
@@ -811,9 +927,9 @@ int mglParse::FlowExec(mglGraph *, const wchar_t *com, long m, mglArg *a)
}
else
{
- for(int i=0;i<9;i++)
+ for(int i=0;i<39;i++)
{ for_stack[i]=for_stack[i+1]; if_for[i]=if_for[i+1]; }
- for_stack[9] = 0; for_br=false;
+ for_stack[39] = 0; for_br=false;
}
}
if(out) mglprintf(out,1024,L"}");
@@ -845,7 +961,7 @@ void mgl_error_print(int line, int r, mglGraph *gr)
if(r==2) printf("Wrong command in line %d\n", line);
if(r==3) printf("String too long in line %d\n", line);
if(r==4) printf("Unbalanced ' in line %d\n", line);
- gr->Message[0]=0;
+ if(gr->Message) gr->Message[0]=0;
}
void mglParse::Execute(mglGraph *gr, FILE *fp, bool print)
{
@@ -868,14 +984,16 @@ void mglParse::Execute(mglGraph *gr, int n, const wchar_t **text, void (*error)(
{
if(gr==0 || n<1 || text==0) return;
long i, r;
- for_br=Skip=false; if_pos=0;
+ for_br=Skip=false; if_pos=fn_pos=0; ScanFunc(0);
+ for(i=0;i<n;i++) ScanFunc(text[i]);
for(i=0;i<n;i++)
{
+//printf("line %ld : %ls\n",i,text[i]);
r = Parse(gr,text[i],i+1);
if(r<0) { i = -r-2; continue; }
if(error)
{
- if(r>0) error(i, r, gr);
+ if(r>0) error(i+1, r, gr);
if(gr->Message && gr->Message[0]) error(i,0,gr);
}
}
@@ -1127,7 +1245,7 @@ void mglParse::AddCommand(mglCommand *cmd, int mc)
//-----------------------------------------------------------------------------
mglCommand mglParse::Prg[]={
{L"break",L"Break for-cycle",L"break", 0, 0, 0, 5},
- {L"call",L"Execute script in external file",L"call 'filename'", 0, 0, 0, 5},
+ {L"call",L"Execute script in external file",L"call 'name' [args]", 0, 0, 0, 5},
{L"continue",L"Skip commands and iterate for-cycle again",L"continue", 0, 0, 0, 5},
{L"defchr",L"Define parameter as character",L"defchr $N val", 0, 0, 0, 5},
{L"define",L"Define constant or parameter",L"define $N sth | Var val", 0, 0, 0, 5},
@@ -1138,9 +1256,11 @@ mglCommand mglParse::Prg[]={
{L"elseif",L"Conditional operator",L"elseif val|Dat ['cond']", 0, 0, 0, 5},
{L"endif",L"Finish if/else block",L"endif", 0, 0, 0, 5},
{L"for",L"For cycle",L"for $N v1 v2 [dv] | $N Dat", 0, 0, 0, 5},
+ {L"func",L"Start function definition and stop execution of main script",L"func 'name' [narg]", 0, 0, 0, 5},
{L"if",L"Conditional operator",L"if val|Dat ['cond']", 0, 0, 0, 5},
{L"next",L"Start next for-cycle iteration",L"next", 0, 0, 0, 5},
{L"once",L"Start/close commands which should executed only once",L"once val", 0, 0, 0, 5},
+ {L"return",L"Return from function",L"return", 0, 0, 0, 5},
{L"stop",L"Stop execution",L"stop", 0, 0, 0, 5},
{L"",0,0, 0, 0, 0, 0}};
//-----------------------------------------------------------------------------
@@ -1156,6 +1276,7 @@ void mgl_parse_text(HMGL gr, HMPR p, const char *str) { p->Execute(gr, str); }
void mgl_parsew_text(HMGL gr, HMPR p, const wchar_t *str){ p->Parse(gr, str); }
void mgl_restore_once(HMPR p) { p->RestoreOnce(); }
void mgl_parser_allow_setsize(HMPR p, int a) { p->AllowSetSize = a; }
+void mgl_scan_func(HMPR p, const wchar_t *line) { p->ScanFunc(line); }
//-----------------------------------------------------------------------------
uintptr_t mgl_create_parser_() { return uintptr_t(new mglParse); }
void mgl_delete_parser_(uintptr_t* p) { delete _PR_; }
diff --git a/mgl/mgl_tex_table.cpp b/mgl/mgl_tex_table.cpp
index b518d8f..75ca877 100644
--- a/mgl/mgl_tex_table.cpp
+++ b/mgl/mgl_tex_table.cpp
@@ -159,7 +159,7 @@ mglTeXsymb mgl_tex_symb[] = {
{0x2144, L"Yup"},
{0x1b5, L"Zbar"},
{0x396, L"Zeta"},
- {0x2c6, L"^"},
+ {0x5e, L"^"},
{0xe5, L"aa"},
{0x223e, L"ac"},
{0x23e6, L"accurrent"},
@@ -174,7 +174,7 @@ mglTeXsymb mgl_tex_symb[] = {
{0xe6, L"ae"},
{0x2135, L"aleph"},
{0x3b1, L"alpha"},
- {0x2210, L"amalg"},
+// {0x2210, L"amalg"},
{0x2a3f, L"amalg"},
{0x299f, L"angdnr"},
{0x2220, L"angle"},
diff --git a/mgl/mgl_vect.cpp b/mgl/mgl_vect.cpp
index de8003a..f65afb5 100644
--- a/mgl/mgl_vect.cpp
+++ b/mgl/mgl_vect.cpp
@@ -78,7 +78,7 @@ void mglGraph::Traj(const mglData &x, const mglData &y, const mglData &z,
tt[2*i] = ScalePoint(pp[6*i],pp[6*i+1],pp[6*i+2]);
tt[2*i+1] = ScalePoint(pp[6*i+3],pp[6*i+4],pp[6*i+5]);
}
- vects_plot(n,pp,cc,tt);
+ vects_plot(n,pp,cc,tt,false);
}
cmap[0]=cm; NumCol=nc;
SetPal(0); EndGroup();
@@ -167,9 +167,9 @@ void mglGraph::Vect(const mglData &x, const mglData &y, const mglData &ax, const
tt[2*i0+1]= ScalePoint(pp[6*i0+3],pp[6*i0+4],pp[6*i0+5]);
}
if(flag & MGL_VEC_DOT)
- lines_plot(nn*mm,pp,(flag&MGL_VEC_COL)?0:cc,tt,true);
+ lines_plot(nn*mm,pp,(flag&MGL_VEC_COL)?0:cc,tt,true,flag&MGL_VEC_GRD);
else
- vects_plot(nn*mm,pp,(flag&MGL_VEC_COL)?0:cc,tt);
+ vects_plot(nn*mm,pp,(flag&MGL_VEC_COL)?0:cc,tt,flag&MGL_VEC_GRD);
}
EndGroup();
delete []pp; delete []tt; delete []cc;
@@ -189,7 +189,7 @@ void mglGraph::Vect(const mglData &ax, const mglData &ay, const char *sch, mreal
//
//-----------------------------------------------------------------------------
void mglGraph::VectL(const mglData &x, const mglData &y, const mglData &ax, const mglData &ay, const char *sch, mreal zVal)
-{ Vect(x,y,ax,ay,sch,zVal,MGL_VEC_COL|MGL_VEC_DOT); }
+{ Vect(x,y,ax,ay,sch,zVal,MGL_VEC_COL|MGL_VEC_DOT|MGL_VEC_GRD); }
//-----------------------------------------------------------------------------
void mglGraph::VectL(const mglData &ax, const mglData &ay, const char *sch, mreal zVal)
{
@@ -205,7 +205,7 @@ void mglGraph::VectL(const mglData &ax, const mglData &ay, const char *sch, mrea
//
//-----------------------------------------------------------------------------
void mglGraph::VectC(const mglData &x, const mglData &y, const mglData &ax, const mglData &ay, const char *sch, mreal zVal)
-{ Vect(x,y,ax,ay,sch,zVal,MGL_VEC_LEN|MGL_VEC_DOT); }
+{ Vect(x,y,ax,ay,sch,zVal,MGL_VEC_LEN|MGL_VEC_DOT|MGL_VEC_GRD); }
//-----------------------------------------------------------------------------
void mglGraph::VectC(const mglData &ax, const mglData &ay, const char *sch, mreal zVal)
{
@@ -294,9 +294,9 @@ void mglGraph::Vect(const mglData &x, const mglData &y, const mglData &z, const
tt[2*i0+1]= ScalePoint(pp[6*i0+3],pp[6*i0+4],pp[6*i0+5]);
}
if(flag & MGL_VEC_DOT)
- lines_plot(nn*mm*ll,pp,(flag&MGL_VEC_COL)?0:cc,tt,true);
+ lines_plot(nn*mm*ll,pp,(flag&MGL_VEC_COL)?0:cc,tt,true,flag&MGL_VEC_GRD);
else
- vects_plot(nn*mm*ll,pp,(flag&MGL_VEC_COL)?0:cc,tt);
+ vects_plot(nn*mm*ll,pp,(flag&MGL_VEC_COL)?0:cc,tt,flag&MGL_VEC_GRD);
}
EndGroup();
delete []pp; delete []tt; delete []cc;
@@ -318,7 +318,7 @@ void mglGraph::Vect(const mglData &ax, const mglData &ay, const mglData &az, con
//
//-----------------------------------------------------------------------------
void mglGraph::VectL(const mglData &x, const mglData &y, const mglData &z, const mglData &ax, const mglData &ay, const mglData &az, const char *sch)
-{ Vect(x,y,z,ax,ay,az,sch,MGL_VEC_COL|MGL_VEC_DOT); }
+{ Vect(x,y,z,ax,ay,az,sch,MGL_VEC_COL|MGL_VEC_DOT|MGL_VEC_GRD); }
//-----------------------------------------------------------------------------
void mglGraph::VectL(const mglData &ax, const mglData &ay, const mglData &az, const char *sch)
{
@@ -337,7 +337,7 @@ void mglGraph::VectL(const mglData &ax, const mglData &ay, const mglData &az, co
//-----------------------------------------------------------------------------
void mglGraph::VectC(const mglData &x, const mglData &y, const mglData &z,
const mglData &ax, const mglData &ay, const mglData &az, const char *sch)
-{ Vect(x,y,z,ax,ay,az,sch,MGL_VEC_LEN|MGL_VEC_DOT); }
+{ Vect(x,y,z,ax,ay,az,sch,MGL_VEC_LEN|MGL_VEC_DOT|MGL_VEC_GRD); }
//-----------------------------------------------------------------------------
void mglGraph::VectC(const mglData &ax, const mglData &ay, const mglData &az, const char *sch)
{
diff --git a/mgl/mgl_zb.cpp b/mgl/mgl_zb.cpp
index b7162b7..c152739 100644
--- a/mgl/mgl_zb.cpp
+++ b/mgl/mgl_zb.cpp
@@ -216,7 +216,8 @@ void mglGraphZB::Clf(mglColor Back)
}
//-----------------------------------------------------------------------------
void mglGraphZB::SetSize(int w,int h)
-{
+{
+ if(w<=0 || h<=0) { SetWarn(mglWarnSize); return; }
if(C) { delete []C; delete []Z; }
C = new unsigned char[w*h*32]; // ����� *1 ��� TranspType>0 !!!
Z = new mreal[w*h*8];
@@ -811,9 +812,11 @@ void mglGraphAB::mark_plot(mreal *pp, char type)
mreal p[12]={0,0,pp[2],0,0,pp[2],0,0,pp[2],0,0,pp[2]};
mreal v, ss=MarkSize*0.35*font_factor;
register long i,j,s;
- if(type=='.' || ss==0)
+ if(type=='.' || type=='C' || ss==0)
{
bool aa=UseAlpha; UseAlpha = true;
+ ss *= 1.1; if(type=='C') for(i=long(-4*ss);i<=long(4*ss);i++)
+ pnt_plot(long(pp[0]+ss*cos(i*M_PI_4/ss)), long(pp[1]+ss*sin(i*M_PI_4/ss)),pp[2],cs);
s = long(5.5+fabs(PenWidth));
for(i=-s;i<=s;i++) for(j=-s;j<=s;j++)
{
@@ -821,103 +824,137 @@ void mglGraphAB::mark_plot(mreal *pp, char type)
cs[3] = (unsigned char)(255.f*exp(-6.f*v));
if(cs[3]==0) continue;
pnt_plot(long(pp[0])+i,long(pp[1])+j,pp[2],cs);
- }
+ }
UseAlpha = aa;
}
else
{
mreal pw = PenWidth; PenWidth = BaseLineWidth;
int pd = PDef; PDef = 0xffff;
- register mreal zv = strchr("oOVDTS",type) ? pp[2]+BaseLineWidth : pp[2];
+ register mreal zv = strchr("oOVDTS",type) ? pp[2]+BaseLineWidth : pp[2];
+ if(!strchr("xsSoO",type)) ss *= 1.1;
switch(type)
{
+ case 'P':
+ p[0] = pp[0]-ss; p[1] = pp[1]-ss; p[3] = pp[0]+ss; p[4] = pp[1]-ss;
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
+ p[0] = pp[0]-ss; p[1] = pp[1]-ss; p[3] = pp[0]-ss; p[4] = pp[1]+ss;
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
+ p[0] = pp[0]-ss; p[1] = pp[1]+ss; p[3] = pp[0]+ss; p[4] = pp[1]+ss;
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
+ p[0] = pp[0]+ss; p[1] = pp[1]-ss; p[3] = pp[0]+ss; p[4] = pp[1]+ss;
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
case '+':
- ss = ss*1.1;
p[0] = pp[0]-ss; p[1] = pp[1]; p[3] = pp[0]+ss; p[4] = pp[1];
- line_plot(p,p+3,CDef,CDef);
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
p[0] = pp[0]; p[1] = pp[1]-ss; p[3] = pp[0]; p[4] = pp[1]+ss;
- line_plot(p,p+3,CDef,CDef);
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
break;
+ case 'X':
+ p[0] = pp[0]-ss; p[1] = pp[1]-ss; p[3] = pp[0]+ss; p[4] = pp[1]-ss;
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
+ p[0] = pp[0]-ss; p[1] = pp[1]-ss; p[3] = pp[0]-ss; p[4] = pp[1]+ss;
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
+ p[0] = pp[0]-ss; p[1] = pp[1]+ss; p[3] = pp[0]+ss; p[4] = pp[1]+ss;
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
+ p[0] = pp[0]+ss; p[1] = pp[1]-ss; p[3] = pp[0]+ss; p[4] = pp[1]+ss;
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
case 'x':
p[0] = pp[0]-ss; p[1] = pp[1]-ss; p[3] = pp[0]+ss; p[4] = pp[1]+ss;
- line_plot(p,p+3,CDef,CDef);
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
p[0] = pp[0]+ss; p[1] = pp[1]-ss; p[3] = pp[0]-ss; p[4] = pp[1]+ss;
- line_plot(p,p+3,CDef,CDef);
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
break;
+ case 'S':
+ for(i=long(-ss-1);i<=long(ss+1);i++) for(j=long(-ss-1);j<=long(ss+1);j++)
+ pnt_plot(long(pp[0])+i,long(pp[1])+j,zv,cs);
case 's':
p[0] = pp[0]-ss; p[1] = pp[1]-ss; p[3] = pp[0]+ss; p[4] = pp[1]-ss;
- line_plot(p,p+3,CDef,CDef);
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
p[0] = pp[0]+ss; p[1] = pp[1]-ss; p[3] = pp[0]+ss; p[4] = pp[1]+ss;
- line_plot(p,p+3,CDef,CDef);
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
p[0] = pp[0]+ss; p[1] = pp[1]+ss; p[3] = pp[0]-ss; p[4] = pp[1]+ss;
- line_plot(p,p+3,CDef,CDef);
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
p[0] = pp[0]-ss; p[1] = pp[1]+ss; p[3] = pp[0]-ss; p[4] = pp[1]-ss;
- line_plot(p,p+3,CDef,CDef);
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
break;
+ case 'D':
+ for(i=long(-ss-1);i<=long(ss+1);i++) for(j=long(-ss-1);j<=long(ss+1);j++)
+ if(abs(i)+abs(j)<=long(ss+1))
+ pnt_plot(long(pp[0])+i,long(pp[1])+j,zv,cs);
case 'd':
- ss = ss*1.1;
p[0] = pp[0]; p[1] = pp[1]-ss; p[3] = pp[0]+ss; p[4] = pp[1];
- line_plot(p,p+3,CDef,CDef);
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
p[0] = pp[0]+ss; p[1] = pp[1]; p[3] = pp[0]; p[4] = pp[1]+ss;
- line_plot(p,p+3,CDef,CDef);
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
p[0] = pp[0]; p[1] = pp[1]+ss; p[3] = pp[0]-ss; p[4] = pp[1];
- line_plot(p,p+3,CDef,CDef);
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
p[0] = pp[0]-ss; p[1] = pp[1]; p[3] = pp[0]; p[4] = pp[1]-ss;
- line_plot(p,p+3,CDef,CDef);
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
+ break;
+ case 'Y':
+ p[0] = pp[0]; p[1] = pp[1]-ss; p[3] = pp[0]; p[4] = pp[1];
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
+ p[0] = pp[0]-0.8*ss; p[1] = pp[1]+0.6*ss; p[3] = pp[0]; p[4] = pp[1];
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
+ p[0] = pp[0]+0.8*ss; p[1] = pp[1]+0.6*ss; p[3] = pp[0]; p[4] = pp[1];
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
break;
case '*':
- ss = ss*1.1;
p[0] = pp[0]-ss; p[1] = pp[1]; p[3] = pp[0]+ss; p[4] = pp[1];
- line_plot(p,p+3,CDef,CDef);
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
p[0] = pp[0]-0.6*ss; p[1] = pp[1]-0.8*ss; p[3] = pp[0]+0.6*ss; p[4] = pp[1]+0.8*ss;
- line_plot(p,p+3,CDef,CDef);
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
p[0] = pp[0]-0.6*ss; p[1] = pp[1]+0.8*ss; p[3] = pp[0]+0.6*ss; p[4] = pp[1]-0.8*ss;
- line_plot(p,p+3,CDef,CDef);
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
break;
+ case 'T':
+ for(i=long(-ss-1);i<=long(ss+1);i++) for(j=long(-ss/2-1);j<=long(ss+1);j++)
+ if(3*abs(i)+2*j<=long(2*ss+1))
+ pnt_plot(long(pp[0])+i,long(pp[1])+j,zv,cs);
case '^':
- ss = ss*1.1;
p[0] = pp[0]-ss; p[1] = pp[1]-ss/2; p[3] = pp[0]; p[4] = pp[1]+ss;
- line_plot(p,p+3,CDef,CDef);
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
p[0] = pp[0]-ss; p[1] = pp[1]-ss/2; p[3] = pp[0]+ss; p[4] = pp[1]-ss/2;
- line_plot(p,p+3,CDef,CDef);
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
p[0] = pp[0]+ss; p[1] = pp[1]-ss/2; p[3] = pp[0]; p[4] = pp[1]+ss;
- line_plot(p,p+3,CDef,CDef);
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
break;
+ case 'V':
+ for(i=long(-ss-1);i<=long(ss+1);i++) for(j=long(-ss-1);j<=long(ss/2+1);j++)
+ if(3*abs(i)-2*j<=long(2*ss+1))
+ pnt_plot(long(pp[0])+i,long(pp[1])+j,zv,cs);
case 'v':
- ss = ss*1.1;
p[0] = pp[0]-ss; p[1] = pp[1]+ss/2; p[3] = pp[0]; p[4] = pp[1]-ss;
- line_plot(p,p+3,CDef,CDef);
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
p[0] = pp[0]-ss; p[1] = pp[1]+ss/2; p[3] = pp[0]+ss; p[4] = pp[1]+ss/2;
- line_plot(p,p+3,CDef,CDef);
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
p[0] = pp[0]+ss; p[1] = pp[1]+ss/2; p[3] = pp[0]; p[4] = pp[1]-ss;
- line_plot(p,p+3,CDef,CDef);
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
break;
- case 'S':
- for(i=long(-ss);i<=long(ss);i++) for(j=long(-ss);j<=long(ss);j++)
- pnt_plot(long(pp[0])+i,long(pp[1])+j,zv,cs);
+ case 'L':
+ for(i=long(-ss-1);i<=long(ss+1);i++) for(j=long(-ss-1);j<=long(ss/2+1);j++)
+ if(3*abs(i)-2*j<=long(2*ss+1))
+ pnt_plot(long(pp[0])+j,long(pp[1])+i,zv,cs);
+ case '<':
+ p[0] = pp[0]+ss/2; p[1] = pp[1]-ss; p[3] = pp[0]-ss; p[4] = pp[1];
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
+ p[0] = pp[0]+ss/2; p[1] = pp[1]+ss; p[3] = pp[0]-ss; p[4] = pp[1];
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
+ p[0] = p[3] = pp[0]+ss/2; p[1] = pp[1]-ss; p[4] = pp[1]+ss;
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
break;
- case 'D':
- ss = ss*1.1;
- for(i=long(-ss);i<=long(ss);i++) for(j=long(-ss);j<=long(ss);j++)
- if(abs(i)+abs(j)<=long(ss))
- pnt_plot(long(pp[0])+i,long(pp[1])+j,zv,cs);
- break;
- case 'T':
- ss = ss*1.1;
- for(i=long(-ss);i<=long(ss);i++) for(j=long(-ss/2);j<=long(ss);j++)
- if(3*abs(i)+2*j<=2*long(ss))
- pnt_plot(long(pp[0])+i,long(pp[1])+j,zv,cs);
- break;
- case 'V':
- ss = ss*1.1;
- for(i=long(-ss);i<=long(ss);i++) for(j=long(-ss);j<=long(ss/2);j++)
- if(3*abs(i)-2*j<=2*long(ss))
- pnt_plot(long(pp[0])+i,long(pp[1])+j,zv,cs);
- break;
- case 'o':
- for(i=long(-4*ss);i<=long(4*ss);i++)
- pnt_plot(long(pp[0]+ss*cos(i*M_PI_4/ss)),
- long(pp[1]+ss*sin(i*M_PI_4/ss)),zv,cs);
+ case 'R':
+ for(i=long(-ss-1);i<=long(ss+1);i++) for(j=long(-ss/2-1);j<=long(ss+1);j++)
+ if(3*abs(i)+2*j<=long(2*ss+1))
+ pnt_plot(long(pp[0])+j,long(pp[1])+i,zv,cs);
+ case '>':
+ p[0] = pp[0]-ss/2; p[1] = pp[1]-ss; p[3] = pp[0]+ss; p[4] = pp[1];
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
+ p[0] = pp[0]-ss/2; p[1] = pp[1]+ss; p[3] = pp[0]+ss; p[4] = pp[1];
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
+ p[0] = p[3] = pp[0]-ss/2; p[1] = pp[1]-ss; p[4] = pp[1]+ss;
+ mglGraphAB::line_plot(p,p+3,CDef,CDef);
break;
case 'O':
for(i=long(-ss);i<=long(ss);i++) for(j=long(-ss);j<=long(ss);j++)
@@ -925,6 +962,10 @@ void mglGraphAB::mark_plot(mreal *pp, char type)
if(i*i+j*j>=ss*ss) continue;
pnt_plot(long(pp[0])+i,long(pp[1])+j,zv,cs);
}
+ case 'o':
+ for(i=long(-4*ss);i<=long(4*ss);i++)
+ pnt_plot(long(pp[0]+ss*cos(i*M_PI_4/ss)),
+ long(pp[1]+ss*sin(i*M_PI_4/ss)),zv,cs);
break;
}
PDef = pd; PenWidth = pw;
diff --git a/mgl/mgl_zb2.cpp b/mgl/mgl_zb2.cpp
index 5de8c35..1c2f7a0 100644
--- a/mgl/mgl_zb2.cpp
+++ b/mgl/mgl_zb2.cpp
@@ -487,46 +487,21 @@ void mglGraphAB::quads_plot(long n,mreal *pp,mreal *cc,bool *tt)
{
// if(!DrawFace) return;
register long i;
- mreal *p,*c;
+ mreal *p;
+ mreal *c1=CDef,*c2=CDef,*c3=CDef,*c4=CDef;
PostScale(pp,4*n); LightScale();
- if(cc)
- {
- for(i=0;i<n;i++)
- {
- if(tt && (!tt[4*i] || !tt[4*i+1] || !tt[4*i+2] || !tt[4*i+3]))
- continue;
- p = pp+12*i; c = cc+16*i;
- if(DrawFace)
- quad_plot(p,p+3,p+9,p+6,c,c+4,c+12,c+8);
- else
- {
- line_plot(p,p+3,c,c+4);
- line_plot(p,p+9,c,c+12);
- line_plot(p+9,p+6,c+12,c+8);
- line_plot(p+3,p+6,c+4,c+8);
- }
- }
- }
- else
+ for(i=0;i<n;i++)
{
- for(i=0;i<n;i++)
+ if(tt && (!tt[4*i] || !tt[4*i+1] || !tt[4*i+2] || !tt[4*i+3]))
+ continue;
+ p = pp+12*i;
+ if(cc) { c1=cc+16*i; c2=c1+4; c3=c1+8; c4=c1+12; }
+ if(DrawFace)
+ quad_plot(p,p+3,p+9,p+6,c1,c2,c4,c3);
+ else
{
- if(tt && (!tt[4*i] || !tt[4*i+1] || !tt[4*i+2] || !tt[4*i+3]))
- continue;
- p = pp+12*i; //c = cc+16*i;
- if(DrawFace)
-// quad_plot(p,p+3,p+9,p+6,CDef,CDef,CDef,CDef);
- {
- trig_plot(p,p+3,p+9,CDef,CDef,CDef);
- trig_plot(p+3,p+6,p+9,CDef,CDef,CDef);
- }
- else
- {
- line_plot(p,p+3,CDef,CDef);
- line_plot(p,p+9,CDef,CDef);
- line_plot(p+9,p+6,CDef,CDef);
- line_plot(p+3,p+6,CDef,CDef);
- }
+ line_plot(p,p+3,c1,c2); line_plot(p,p+9,c1,c4);
+ line_plot(p+9,p+6,c4,c3); line_plot(p+3,p+6,c2,c3);
}
}
}
@@ -560,11 +535,41 @@ void mglGraphAB::trigs_plot(long n, long *nn, long m, mreal *pp, mreal *cc, bool
}
}
//-----------------------------------------------------------------------------
-void mglGraphAB::lines_plot(long n,mreal *pp,mreal *cc,bool *tt, bool b)
+void mglGraphAB::quads_plot(long n, long *nn, long m, mreal *pp, mreal *cc, bool *tt,bool wire, bool byquad)
+{
+ if(!DrawFace) wire=true;
+ register long i,j1,j2,j3,j4;
+ mreal *c1,*c2,*c3,*c4;
+ PostScale(pp,m); LightScale();
+ c1 = c2 = c3 = c4 = CDef;
+ for(i=0;i<n;i++)
+ {
+ j1 = nn[4*i]; j2 = nn[4*i+1]; j3 = nn[4*i+2]; j4 = nn[4*i+3];
+ if(tt && (!tt[j1] || !tt[j2] || !tt[j3] || !tt[j4])) continue;
+ if(cc)
+ {
+ if(!byquad)
+ { c1=cc+4*j1; c2=cc+4*j2; c3=cc+4*j3; c4=cc+4*j4; }
+ else
+ { c1 = c2 = c3 = c4 = cc+4*i; }
+ }
+ if(wire)
+ {
+ line_plot(pp+3*j1,pp+3*j2,c1,c2);
+ line_plot(pp+3*j1,pp+3*j4,c1,c4);
+ line_plot(pp+3*j3,pp+3*j2,c3,c2);
+ line_plot(pp+3*j3,pp+3*j4,c3,c4);
+ }
+ else
+ quad_plot(pp+3*j1,pp+3*j2,pp+3*j4,pp+3*j3,c1,c2,c4,c3);
+ }
+}
+//-----------------------------------------------------------------------------
+void mglGraphAB::lines_plot(long n,mreal *pp,mreal *cc,bool *tt, bool b,bool grd)
{
register long i;
mreal s1[4],s2[4],*p;
- mglColor col,c1=cmap[0],c2=NumCol>1?cmap[1]:cmap[0];
+ mglColor col,c1=cmap[0],c2=(grd && NumCol>1)?cmap[1]:cmap[0];
s1[3] = s2[3] = AlphaDef;
PostScale(pp,2*n);
long pOld = PDef;
@@ -579,7 +584,7 @@ void mglGraphAB::lines_plot(long n,mreal *pp,mreal *cc,bool *tt, bool b)
{
col = GetC(cc[i]-0.5,false);
s1[0] = col.r; s1[1] = col.g; s1[2] = col.b;
- col = GetC(cc[i],false);
+ if(grd) col = GetC(cc[i],false);
s2[0] = col.r; s2[1] = col.g; s2[2] = col.b;
}
}
@@ -594,11 +599,11 @@ void mglGraphAB::lines_plot(long n,mreal *pp,mreal *cc,bool *tt, bool b)
PDef = pOld;
}
//-----------------------------------------------------------------------------
-void mglGraphAB::vects_plot(long n,mreal *pp,mreal *cc,bool *tt)
+void mglGraphAB::vects_plot(long n,mreal *pp,mreal *cc,bool *tt, bool grd)
{
register long i;
mreal s1[4],s2[4],*p,q[6],d;
- mglColor col,c1=cmap[0],c2=NumCol>1?cmap[1]:cmap[0];
+ mglColor col,c1=cmap[0],c2=(grd && NumCol>1)?cmap[1]:cmap[0];
s1[3] = s2[3] = AlphaDef;
PostScale(pp,2*n);
long pOld = PDef;
@@ -613,7 +618,7 @@ void mglGraphAB::vects_plot(long n,mreal *pp,mreal *cc,bool *tt)
{
col = GetC(cc[i]-0.5,false);
s1[0] = col.r; s1[1] = col.g; s1[2] = col.b;
- col = GetC(cc[i],false);
+ if(grd) col = GetC(cc[i],false);
s2[0] = col.r; s2[1] = col.g; s2[2] = col.b;
}
}
@@ -713,7 +718,7 @@ void mglGraphAB::Glyph(mreal x, mreal y, mreal f, int s, long j, char col)
void mglGraphAB::glyph_fill(mreal x,mreal y, mreal f, int nt, const short *trig, mreal *c)
{
long ik,ii;
- mreal p[12], n[3]={0,0,0}, pw = Width>2 ? fabs(PenWidth) : 1e-5*Width;
+ mreal p[12], pw = Width>2 ? fabs(PenWidth) : 1e-5*Width;
if(!trig || nt<=0) return;
for(ik=0;ik<nt;ik++)
{
@@ -721,8 +726,10 @@ void mglGraphAB::glyph_fill(mreal x,mreal y, mreal f, int nt, const short *trig,
ii+=2; p[3]=f*trig[ii]+x; p[4]=f*trig[ii+1]+y; p[5]=0;
ii+=2; p[6]=f*trig[ii]+x; p[7]=f*trig[ii+1]+y; p[8]=0;
PostScale(p,3);
- p[2]+=pw; p[5]+=pw; p[8]+=pw;
- mglGraphAB::trig_plot_n(p,p+3,p+6,c,c,c,n,n,n);
+ p[2]+=pw; p[5]+=pw; p[8]+=pw;
+ bool ul=UseLight; UseLight=false;
+ mglGraphAB::trig_plot(p,p+3,p+6,c,c,c);
+ UseLight=ul;
}
}
//-----------------------------------------------------------------------------
diff --git a/png b/png
new file mode 120000
index 0000000..8077efa
--- /dev/null
+++ b/png
@@ -0,0 +1 @@
+texinfo/png/
\ No newline at end of file
diff --git a/texinfo/CMakeLists.txt b/texinfo/CMakeLists.txt
index c0ae756..a5e48fc 100644
--- a/texinfo/CMakeLists.txt
+++ b/texinfo/CMakeLists.txt
@@ -1,3 +1,7 @@
+
+# Warning!!!!!
+# new files and destination for html docs.
+
if(use_doc)
add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/texinfo/png/all.png
COMMAND LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/mgl ${CMAKE_BINARY_DIR}/examples/mgl_example
diff --git a/texinfo/Makefile.am b/texinfo/Makefile.am
index 159449d..d35c1b3 100644
--- a/texinfo/Makefile.am
+++ b/texinfo/Makefile.am
@@ -1,35 +1,42 @@
-SUBDIRS = png .
+SUBDIRS = png .
-CLEANFILES = mathgl_en.info mathgl_en.info-1 mathgl_en.info-2 mathgl_en.info-3 \
-mathgl_ru.info mathgl_ru.info-1 mathgl_ru.info-2 mathgl_ru.info-3
+CLEANFILES = mathgl_en.info mathgl_en.info-1 mathgl_en.info-2 mathgl_en.info-3 mgl_en.info \
+mathgl_ru.info mathgl_ru.info-1 mathgl_ru.info-2 mathgl_ru.info-3 mathgl_ru.info-4 mgl_ru.info
MAKEINFOHTML = texi2html
-TEXI2PDF = texi2pdf
+TEXI2PDF = texi2pdf
AM_MAKEINFOHTMLFLAGS = --split=chapter
AM_MAKEINFOFLAGS = --no-validate
-info_TEXINFOS = mathgl_en.texi
-mathgl_en_TEXINFOS = \
-example_en.texi gpl-3.0.texi overview_en.texi samples_en.texi \
-class_en.texi fdl.texi data_en.texi \
-core_en.texi gpl-2.0.texi mgl_en.texi
+info_TEXINFOS = mathgl_en.texi
+mathgl_en_TEXINFOS = \
+overview_en.texi example_en.texi core_en.texi class_en.texi widget_en.texi \
+data_en.texi other_en.texi mgl_cmd_en.texi samples_en.texi appendix_en.texi fdl.texi
-info_TEXINFOS += mathgl_ru.texi
+
+info_TEXINFOS += mathgl_ru.texi
mathgl_ru_TEXINFOS = \
-samples_ru.texi class_ru.texi overview_ru.texi appendix_ru.texi \
-data_ru.texi mgl_ru.texi core_ru.texi example_ru.texi fdl.texi \
-gpl-2.0.texi gpl-3.0.texi
+overview_ru.texi example_ru.texi core_ru.texi class_ru.texi widget_ru.texi \
+data_ru.texi other_ru.texi mgl_cmd_ru.texi samples_ru.texi appendix_ru.texi fdl.texi
-mglpng=$(DESTDIR)$(docdir)/png_static
+info_TEXINFOS += mgl_en.texi
+mgl_en_TEXINFOS = \
+mgl_cmd_en.texi samples_en.texi ex_mgl_en.texi concept_en.texi fdl.texi
-#install-data-local: install-html install-pdf
-install-data-local: install-html
- mkdir -p $(mglpng)
- cp -r $(top_srcdir)/texinfo/png_static/*.png $(mglpng)
+info_TEXINFOS += mgl_ru.texi
+mgl_ru_TEXINFOS = \
+mgl_cmd_ru.texi samples_ru.texi ex_mgl_ru.texi concept_ru.texi fdl.texi
+#mglpng=$(DESTDIR)$(docdir)/png_static
+
+#install-data-local: install-html install-pdf
+install-data-local:
+# mkdir -p $(mglpng)
+# cp -r $(top_srcdir)/texinfo/png_static/*.png $(mglpng)
uninstall-local:
- rm -rf $(mglpng)
+# rm -rf $(mglpng)
#all-local: html pdf
all-local: html
+ ./filter.py
diff --git a/texinfo/Makefile.in b/texinfo/Makefile.in
index 8a6869c..da79aba 100644
--- a/texinfo/Makefile.in
+++ b/texinfo/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -35,7 +35,8 @@ build_triplet = @build@
host_triplet = @host@
subdir = texinfo
DIST_COMMON = $(mathgl_en_TEXINFOS) $(mathgl_ru_TEXINFOS) \
- $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ $(mgl_en_TEXINFOS) $(mgl_ru_TEXINFOS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/config/autotroll.m4 \
$(top_srcdir)/configure.ac
@@ -47,14 +48,14 @@ CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
-INFO_DEPS = mathgl_en.info mathgl_ru.info
+INFO_DEPS = mathgl_en.info mathgl_ru.info mgl_en.info mgl_ru.info
TEXINFO_TEX = $(top_srcdir)/config/texinfo.tex
am__TEXINFO_TEX_DIR = $(top_srcdir)/config
-DVIS = mathgl_en.dvi mathgl_ru.dvi
-PDFS = mathgl_en.pdf mathgl_ru.pdf
-PSS = mathgl_en.ps mathgl_ru.ps
-HTMLS = mathgl_en.html mathgl_ru.html
-TEXINFOS = mathgl_en.texi mathgl_ru.texi
+DVIS = mathgl_en.dvi mathgl_ru.dvi mgl_en.dvi mgl_ru.dvi
+PDFS = mathgl_en.pdf mathgl_ru.pdf mgl_en.pdf mgl_ru.pdf
+PSS = mathgl_en.ps mathgl_ru.ps mgl_en.ps mgl_ru.ps
+HTMLS = mathgl_en.html mathgl_ru.html mgl_en.html mgl_ru.html
+TEXINFOS = mathgl_en.texi mathgl_ru.texi mgl_en.texi mgl_ru.texi
TEXI2DVI = texi2dvi
DVIPS = dvips
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -161,6 +162,8 @@ GREP = @GREP@
GSL_FLAGS = @GSL_FLAGS@
GSL_LIBS = @GSL_LIBS@
HAVE_SWIG = @HAVE_SWIG@
+HDF4_FLAGS = @HDF4_FLAGS@
+HDF4_LIBS = @HDF4_LIBS@
HDF5_FLAGS = @HDF5_FLAGS@
HDF5_LIBS = @HDF5_LIBS@
INSTALL = @INSTALL@
@@ -181,6 +184,7 @@ LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MGL_AGE = @MGL_AGE@
MGL_CURRENT = @MGL_CURRENT@
+MGL_RELEASE = @MGL_RELEASE@
MGL_REVISION = @MGL_REVISION@
MKDIR_P = @MKDIR_P@
MOC = @MOC@
@@ -291,25 +295,28 @@ top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
SUBDIRS = png .
-CLEANFILES = mathgl_en.info mathgl_en.info-1 mathgl_en.info-2 mathgl_en.info-3 \
-mathgl_ru.info mathgl_ru.info-1 mathgl_ru.info-2 mathgl_ru.info-3
+CLEANFILES = mathgl_en.info mathgl_en.info-1 mathgl_en.info-2 mathgl_en.info-3 mgl_en.info \
+mathgl_ru.info mathgl_ru.info-1 mathgl_ru.info-2 mathgl_ru.info-3 mathgl_ru.info-4 mgl_ru.info
MAKEINFOHTML = texi2html
TEXI2PDF = texi2pdf
AM_MAKEINFOHTMLFLAGS = --split=chapter
AM_MAKEINFOFLAGS = --no-validate
-info_TEXINFOS = mathgl_en.texi mathgl_ru.texi
+info_TEXINFOS = mathgl_en.texi mathgl_ru.texi mgl_en.texi mgl_ru.texi
mathgl_en_TEXINFOS = \
-example_en.texi gpl-3.0.texi overview_en.texi samples_en.texi \
-class_en.texi fdl.texi data_en.texi \
-core_en.texi gpl-2.0.texi mgl_en.texi
+overview_en.texi example_en.texi core_en.texi class_en.texi widget_en.texi \
+data_en.texi other_en.texi mgl_cmd_en.texi samples_en.texi appendix_en.texi fdl.texi
mathgl_ru_TEXINFOS = \
-samples_ru.texi class_ru.texi overview_ru.texi appendix_ru.texi \
-data_ru.texi mgl_ru.texi core_ru.texi example_ru.texi fdl.texi \
-gpl-2.0.texi gpl-3.0.texi
+overview_ru.texi example_ru.texi core_ru.texi class_ru.texi widget_ru.texi \
+data_ru.texi other_ru.texi mgl_cmd_ru.texi samples_ru.texi appendix_ru.texi fdl.texi
+
+mgl_en_TEXINFOS = \
+mgl_cmd_en.texi samples_en.texi ex_mgl_en.texi concept_en.texi fdl.texi
+
+mgl_ru_TEXINFOS = \
+mgl_cmd_ru.texi samples_ru.texi ex_mgl_ru.texi concept_ru.texi fdl.texi
-mglpng = $(DESTDIR)$(docdir)/png_static
all: all-recursive
.SUFFIXES:
@@ -434,6 +441,90 @@ mathgl_ru.html: mathgl_ru.texi $(mathgl_ru_TEXINFOS)
rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
exit 1; \
fi
+
+mgl_en.info: mgl_en.texi $(mgl_en_TEXINFOS)
+ restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+ rm -rf $$backupdir && mkdir $$backupdir && \
+ if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+ for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+ if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+ done; \
+ else :; fi && \
+ if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+ -o $@ `test -f 'mgl_en.texi' || echo '$(srcdir)/'`mgl_en.texi; \
+ then \
+ rc=0; \
+ else \
+ rc=$$?; \
+ $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
+ fi; \
+ rm -rf $$backupdir; exit $$rc
+
+mgl_en.dvi: mgl_en.texi $(mgl_en_TEXINFOS)
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+ $(TEXI2DVI) -o $@ `test -f 'mgl_en.texi' || echo '$(srcdir)/'`mgl_en.texi
+
+mgl_en.pdf: mgl_en.texi $(mgl_en_TEXINFOS)
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+ $(TEXI2PDF) -o $@ `test -f 'mgl_en.texi' || echo '$(srcdir)/'`mgl_en.texi
+
+mgl_en.html: mgl_en.texi $(mgl_en_TEXINFOS)
+ rm -rf $(@:.html=.htp)
+ if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+ -o $(@:.html=.htp) `test -f 'mgl_en.texi' || echo '$(srcdir)/'`mgl_en.texi; \
+ then \
+ rm -rf $@; \
+ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+ mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
+ else \
+ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+ rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
+ exit 1; \
+ fi
+
+mgl_ru.info: mgl_ru.texi $(mgl_ru_TEXINFOS)
+ restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+ rm -rf $$backupdir && mkdir $$backupdir && \
+ if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+ for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+ if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+ done; \
+ else :; fi && \
+ if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+ -o $@ `test -f 'mgl_ru.texi' || echo '$(srcdir)/'`mgl_ru.texi; \
+ then \
+ rc=0; \
+ else \
+ rc=$$?; \
+ $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
+ fi; \
+ rm -rf $$backupdir; exit $$rc
+
+mgl_ru.dvi: mgl_ru.texi $(mgl_ru_TEXINFOS)
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+ $(TEXI2DVI) -o $@ `test -f 'mgl_ru.texi' || echo '$(srcdir)/'`mgl_ru.texi
+
+mgl_ru.pdf: mgl_ru.texi $(mgl_ru_TEXINFOS)
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+ $(TEXI2PDF) -o $@ `test -f 'mgl_ru.texi' || echo '$(srcdir)/'`mgl_ru.texi
+
+mgl_ru.html: mgl_ru.texi $(mgl_ru_TEXINFOS)
+ rm -rf $(@:.html=.htp)
+ if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+ -o $(@:.html=.htp) `test -f 'mgl_ru.texi' || echo '$(srcdir)/'`mgl_ru.texi; \
+ then \
+ rm -rf $@; \
+ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+ mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
+ else \
+ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+ rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
+ exit 1; \
+ fi
.dvi.ps:
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
$(DVIPS) -o $@ $<
@@ -524,13 +615,23 @@ mostlyclean-aminfo:
mathgl_ru.cps mathgl_ru.fn mathgl_ru.fns mathgl_ru.ky \
mathgl_ru.kys mathgl_ru.log mathgl_ru.pg mathgl_ru.tmp \
mathgl_ru.toc mathgl_ru.tp mathgl_ru.tps mathgl_ru.vr \
- mathgl_ru.vrs
+ mathgl_ru.vrs mgl_en.aux mgl_en.cp mgl_en.cps mgl_en.fn \
+ mgl_en.fns mgl_en.ky mgl_en.kys mgl_en.log mgl_en.pg \
+ mgl_en.tmp mgl_en.toc mgl_en.tp mgl_en.tps mgl_en.vr \
+ mgl_en.vrs mgl_ru.aux mgl_ru.cp mgl_ru.cps mgl_ru.fn \
+ mgl_ru.fns mgl_ru.ky mgl_ru.kys mgl_ru.log mgl_ru.pg \
+ mgl_ru.tmp mgl_ru.toc mgl_ru.tp mgl_ru.tps mgl_ru.vr \
+ mgl_ru.vrs
clean-aminfo:
-test -z "mathgl_en.dvi mathgl_en.pdf mathgl_en.ps mathgl_en.html mathgl_ru.dvi \
- mathgl_ru.pdf mathgl_ru.ps mathgl_ru.html" \
+ mathgl_ru.pdf mathgl_ru.ps mathgl_ru.html mgl_en.dvi \
+ mgl_en.pdf mgl_en.ps mgl_en.html mgl_ru.dvi mgl_ru.pdf \
+ mgl_ru.ps mgl_ru.html" \
|| rm -rf mathgl_en.dvi mathgl_en.pdf mathgl_en.ps mathgl_en.html mathgl_ru.dvi \
- mathgl_ru.pdf mathgl_ru.ps mathgl_ru.html
+ mathgl_ru.pdf mathgl_ru.ps mathgl_ru.html mgl_en.dvi \
+ mgl_en.pdf mgl_en.ps mgl_en.html mgl_ru.dvi mgl_ru.pdf \
+ mgl_ru.ps mgl_ru.html
maintainer-clean-aminfo:
@list='$(INFO_DEPS)'; for i in $$list; do \
@@ -546,7 +647,7 @@ maintainer-clean-aminfo:
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
- @failcom='exit 1'; \
+ @fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
@@ -571,7 +672,7 @@ $(RECURSIVE_TARGETS):
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
- @failcom='exit 1'; \
+ @fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
@@ -935,16 +1036,18 @@ uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
uninstall-local uninstall-pdf-am uninstall-ps-am
-#install-data-local: install-html install-pdf
-install-data-local: install-html
- mkdir -p $(mglpng)
- cp -r $(top_srcdir)/texinfo/png_static/*.png $(mglpng)
+#mglpng=$(DESTDIR)$(docdir)/png_static
+#install-data-local: install-html install-pdf
+install-data-local:
+# mkdir -p $(mglpng)
+# cp -r $(top_srcdir)/texinfo/png_static/*.png $(mglpng)
uninstall-local:
- rm -rf $(mglpng)
+# rm -rf $(mglpng)
#all-local: html pdf
all-local: html
+ ./filter.py
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/texinfo/appendix_en.texi b/texinfo/appendix_en.texi
index b5ccc38..7841b66 100644
--- a/texinfo/appendix_en.texi
+++ b/texinfo/appendix_en.texi
@@ -11,7 +11,57 @@ The full list of TeX-like commands recognizable by MathGL is shown below. If com
@strong{Accents}: \hat, \tilde, \dot, \ddot, \dddot, \ddddot, \acute, \check, \grave, \vec, \bar, \breve
- at strong{Special symbols}: \textquotedbl, \textdollar, \And, \textasciigrave, \textsubw, \colon, \less, \greater, \lbrack, \backslash, \rbrack, \textasciicircum, \lbrace, \vert, \rbrace, \textasciitilde, \aa, \ae, \textexclamdown, \textcent, \sterling, \textcurrency, \yen, \textbrokenbar, \S, \textasciidieresis, \textcopyright, \textordfeminine, \guillemotleft, \neg, \textregistered, \textasciimacron, \textdegree, \pm, \texttwosuperior, \textthreesuperior, \textasciiacute, \textmu, \P, \cdotp, \textonesuperior, \textordmasculine, \guillemotright, \textonequarter, \textonehalf, \textthreequarters, \textquestiondown, \AA, \AE, \DH, \times, \O, \TH, \ss, \dh, \div, \o, \th, \DJ, \dj, \textcrh, \L, \l, \OE, \oe, \NG, \ng, \textcrb, \texthtc, \textflorin, \texthvlig, \texthtk, \textctd, \textctl, \textctn, \textctt, \textdotlessj, \textbarl, \textcrlambda, \lambdabar, \Ohorn, \ohorn, \texthtp, \textlooptoprevesh, \textlhookt, \texthtt, \Uhorn, \uhorn, \Zbar, \textbenttailyogh, \textcrtwo, \textcrinvglotstop, \textpipe, \textdoublepipe, \textdoublebarpipe, \textexclam, \textturna, \textscripta, \textturnscripta, \texthtb, \textopeno, \textctc, \textrtaild, \texthtd, \textreve, \textschwa, \texthtg, \textscriptg, \textscg, \textgamma, \textramshorns, \textturnh, \texthth, \texththeng, \textbari, \textiota, \textturnmrleg, \textltailm, \textltailn, \textrtailn, \textscn, \textbaro, \textscoelig, \textcloseomega, \textphi, \textturnr, \textscr, \textinvscr, \textrtails, \textesh, \textbardotlessjvar, \textvibyi, \textctesh, \textturnt, \textrtailt, \textbaru, \textrtailz, \textctz, \textyogh, \textctyogh, \textglotstop, \textrevglotstop, \textinvglotstop, \textstretchcvar, \textbullseye, \textscb, \textrhookschwa, \textepsilon, \textrevepsilon, \textrhookrevepsilon, \textcloserevepsilon, \textbardotlessj, \textsci, \textltilde, \textbeltl, \textrtaill, \textlyoghlig, \textturnm, \textturnlonglegr, \textturnrrtail, \textlonglegr, \textrtailr, \textfishhookr, \textlhti, \textupsilon, \textscriptv, \textturnv, \textturnw, \textturny, \textscy, \textcloseepsilon, \texthtscg, \textsch, \textctj, \textturnk, \textscl, \texthtq, \textbarglotstop, \textbarrevglotstop, \textdzlig, \textdyoghlig, \textdctzlig, \texttslig, \texttctctlig, \texttctctlig, \textlongy, \textlongy, \ipasupgamma, \ipasupl, \ipasups, \ipasupx, \ipasuprerglotstpp, \tonebarextrahigh, \tonebarhigh, \tonebarmid, \tonebarlow, \tonebarextralow, \textsuph, \textsuphth, \textsupj, \textsupr, \textsupturnr, \textsupturnrrtail, \textsupinvscr, \textsupw, \textsupy, \cprime, \cdprime, \textturncomma, \rasp, \lasp, \texthamza, \textain, \textraiseglotstop, \textraiserevglotstop, \textlptr, \textrptr, \textuptr, \textdptr, \$\wedge$, \v, \textprimstress, \textmacron, \textacute, \textgrave, \textsecstress, \textlowmacron, \textlowgrave, \textlowacute, \textlengthmark, \texthalflength, \textrhalfring, \textlhalfring, \textraised, \textlowered, \textadvanced, \textretracted, \textbreve, \textdotaccent, \textringaccent, \textogonek, \textsmalltilde, \textdoubleacute, \textrhoticity, \textovercross, \ipavoicing, \ipaunaspirated, \sampi, \Alpha, \Beta, \Gamma, \Delta, \Epsilon, \Zeta, \Eta, \Theta, \Iota, \Kappa, \Lambda, \Mu, \Nu, \Xi, \Omicron, \Pi, \Rho, \Sigma, \Tau, \textsilon, \Phi, \Chi, \Psi, \Omega, \alpha, \beta, \gamma, \delta, \varepsilon, \zeta, \eta, \theta, \iota, \kappa, \lambda, \mu, \nu, \xi, \omicron, \pi, \rho, \varsigma, \sigma, \tau, \silon, \varphi, \chi, \psi, \omega, \varbeta, \vartheta, \silon, \phi, \varpi, \oldKoppa, \oldkoppa, \Stigma, \stigma, \Digamma, \digamma, \Koppa, \koppa, \varkappa, \varrho, \varTheta, \epsilon, \backepsilon, \textsca, \textsce, \textscu, \textlhookd, \textlhookk, \textlhookl, \texthooks, \testhookx, \texthookz, \texthyphen, \nobreakhyphen, \figdash, \endash, \emdash, \horizbar, \Vert, \twolowline, \lq, \rq, \dagger, \dag, \ddagger, \ddag, \textbullet, \enleadertwodots, \dots, \textperthousand, \textpertenthousand, \textprime, \prime, \textdprime, \dprime, \texttrprime, \trprime, \textbackprime, \backprime, \textbackdprime, \backdprime, \textbacktrprime, \backtrprime, \caretinsert, \guilsinglleft, \tieconcat, \hyphenbullet, \fracslash, \Question, \closure, \textAsterisks, \textdiscount, \textqprime, \qprime, \quotsinglbase, \quotsinglright, \textquotedblleft, \textquotedblright, \quotdblbase, \quotdblright, \guilsinglright, \textreferencemark, \Exclam, \overline, \textasterisklow, \textsemicolonreversed, \medmathspace, \supn, \textfranc, \textlira, \textpesetas, \euro, \BbbC, \incare, \Eulerconst, \scrI, \Im, \scrL, \ell, \BbbN, \textnumero, \textcircledP, \wp, \BbbP, \texttrademark, \BbbZ, \textoz, \textohm, \mho, \frakZ, \turnediota, \scrE, \scrF, \Finv, \scrM, \scro, \aleph, \beth, \gimel, \daleth, \Bbbsum, \Game, \sansLturned, \sansLmirrored, \Yup, \itBbbD, \itBbbd, \itBbbe, \itBbbi, \itBbbj, \scrg, \scrH, \frakH, \BbbH, \Planckconst, \hslash, \hbar, \BbbQ, \scrR, \Re, \BbbR, \textrecipe, \Angstrom, \scrB, \frakC, \textestimated, \scre, \Bbbpi, \Bbbgamma, \BbbGamma, \BbbPi, \PropertyLine, \upand, \fraconethird, \fractwothirds, \fraconefifth, \fractwofifths, \fracthreefifths, \fracfourfifths, \fraconesixth, \fracfivesixths, \fraconeeighth, \fracthreeeighths, \fracfiveeighths, \fracseveneights, \ldasharrhead, \leftdasharrow, \leftdasharrowhead, \rightdasharrow, \updasharrow, \leftarrow, \gets, \shortleftarrow, \uparrow, \rightarrow, \to, \shortrightarrow, \downarrow, \leftrightarrow, \updownarrow, \nwarrow, \nearrow, \searrow, \swarrow, \downdasharrow, \barleftarrow, \rightarrowbar, \leftwhitearrow, \upwhitearrow, \rightwhitearrow, \downwhitearrow, \nleftarrow, \nrightarrow, \leftsquigarrow, \rightsquigarrow, \leadsto, \twoheadleftarrow, \twoheaduparrow, \twoheadrightarrow, \twoheaddownarrow, \leftarrowtail, \rightarrowtail, \mapsfrom, \mapsup, \mapsto, \mapsdown, \updownarrowbar, \hookleftarrow, \hookrightarrow, \looparrowleft, \looparrowright, \leftrightsquigarrow, \nleftrightarrow, \downzigzagarrow, \Lsh, \Rsh, \Ldsh, \Rdsh, \linefeed, \carriagereturn, \curvearrowleft, \curvearrowright, \barovernorthwestarrow, \barleftarrowrightarrowbar, \acwopencirclearrow, \cwopencirclearrow, \leftharpoonup, \leftharpoondown, \upharpoonright, \upharpoonleft, \rightharpoonup, \rightharpoondown, \downharpoonright, \downharpoonleft, \rightleftarrows, \updownarrows, \leftrightarrows, \leftleftarrows, \upuparrows, \rightrightarrows, \downdownarrows, \leftrightharpoons, \rightleftharpoons, \nLeftarrow, \nLeftrightarrow, \nRightarrow, \Leftarrow, \Uparrow, \Rightarrow, \Downarrow, \Leftrightarrow, \Updownarrow, \Nwarrow, \Nearrow, \Searrow, \Swarrow, \Lleftarrow, \Rrightarrow, \leftsquigarrow, \rightsquigarrow, \nHuparrow, \nHdownarrow, \whitearrowupfrombar, \circleonrightarrow, \downuparrows, \rightthreearrows, \nvleftarrow, \nvrightarrow, \nvleftrightarrow, \nVleftarrow, \nVrightarrow, \nVleftrightarrow, \leftarrowtriangle, \rightarrowtriangle, \leftrightarrowtriangle, \forall, \complement, \partial, \exists, \nexists, \varnothing, \emptyset, \increment, \nabla, \in, \varin, \notin, \smallin, \ni, \owns, \varni, \nni, \smallni, \QED, \prod, \coprod, \amalg, \sum, \minus, \mp, \dotplus, \slash, \smallsetminus, \setminus, \ast, \circ, \bullet, \surd, \sqrt, \sqrt3, \sqrt4, \cuberoot, \fourthroot, \propto, \varpropto, \infty, \rightangle, \angle, \measuredangle, \sphericalangle, \mid, \nmid, \parallel, \nparallel, \wedge, \vee, \cap, \cup, \smallint, \int, \iint, \iiint, \oint, \oiint, \oiiint, \intclockwise, \varointclockwise, \ointctrclockwise, \therefore, \because, \colon, \Colon, \dotminus, \dashcolon, \dotsminusdots, \kernelcontraction, \sim, \thicksim, \backsim, \ac, \sinewave, \wr, \nsim, \eqsim, \simeq, \nsime, \cong, \simneqq, \ncong, \approx, \thickapprox, \napprox, \approxeq, \approxident, \backcong, \asymp, \Bumpeq, \bumpeq, \doteq, \Doteq, \fallingdotseq, \risingdotseq, \coloneq, \eqcolon, \eqcirc, \circeq, \arceq, \wedgeq, \veeeq, \stareq, \triangleq, \eqdef, \measeq, \questeq, \ne, \neq, \equiv, \nequiv, \Equiv, \leq, \le, \geq, \ge, \leqq, \geqq, \lneqq, \gneqq, \ll, \gg, \between, \nasymp, \nless, \ngtr, \nleq, \ngeq, \lesssim, \gtrsim, \nlesssim, \ngtrsim, \lessgtr, \gtrless, \nlessgtr, \ngtrless, \prec, \succ, \preccurlyeq, \succcurlyeq, \precsim, \succsim, \nprec, \nsucc, \subset, \supset, \nsubset, \nsupset, \subseteq, \supseteq, \nsubseteq, \nsupseteq, \subsetneq, \supsetneq, \cupleftarrow, \cupdot, \uplus, \sqsubset, \sqsupset, \sqsubseteq, \sqsupseteq, \sqcap, \sqcup, \oplus, \ominus, \otimes, \oslash, \odot, \circledcirc, \circledast, \circledequal, \circleddash, \boxplus, \boxminus, \boxtimes, \boxdot, \vdash, \dashv, \top, \bot, \assert, \models, \vDash, \Vdash, \Vvdash, \VDash, \nvdash, \nvDash, \nVdash, \nVDash, \prurel, \scurel, \vartriangleleft, \lhd, \vartriangleright, \rhd, \trianglelefteq, \unlhd, \trianglerighteq, \unrhd, \origof, \imageof, \multimap, \hermitmatrix, \intercal, \veebar, \barwedge, \barvee, \measuredrightangle, \varlrtriangle, \bigwedge, \bigvee, \bigcap, \bigcup, \smalldiamond, \cdot, \star, \divideontimes, \bowtie, \ltimes, \rtimes, \leftthreetimes, \rightthreetimes, \backsimeq, \curlyvee, \curlywedge, \Subset, \Supset, \Cap, \Cup, \pitchfork, \equalparallel, \lessdot, \gtrdot, \lll, \ggg, \lesseqgtr, \gtreqless, \eqless, \eqgtr, \curlyeqprec, \curlyeqsucc, \npreccurlyeq, \nsucccurlyeq, \nsqsubseteq, \nsqsupseteq, \sqsubsetneq, \sqsupsetneq, \lnsim, \gnsim, \precnsim, \succnsim, \ntriangleleft, \ntriangleright, \ntrianglelefteq, \ntrianglerighteq, \vdots, \cdots, \adots, \ddots, \disin, \varisins, \isins, \isindot, \varisinobar, \isinobar, \isinvb, \isinE, \nisd, \varnis, \nis, \varniobar, \niobar, \bagmember, \diameter, \house, \varbarwedge, \vardoublebarwedge, \lceil, \rceil, \lfloor, \rfloor, \drcrop, \dlcrop, \urcrop, \ulcrop, \invnot, \sqlozenge, \profline, \profsurf, \recorder, \target, \viewdata, \cloverleaf, \turnednot, \watchicon, \ulcorner, \urcorner, \llcorner, \lrcorner, \inttop, \intbottom, \frown, \smile, \clangle, \crangle, \varhexagonlrbonds, \cylcty, \profalar, \conictaper, \topbot, \obar, \APLnotslash, \APLnotbackslash, \APLboxupcaret, \APLboxquestion, \rangledownzigzagarrow, \dircurrent, \hexagon, \lparenuend, \lparenextender, \lparenlend, \rparenuend, \rparenextender, \rparenlend, \lbrackuend, \lbrackextender, \lbracklend, \rbrackuend, \rbrackextender, \rbracklend, \lbraceuend, \lbracemid, \lbracelend, \vbraceextender, \rbraceuend, \rbracemid, \rbracelend, \intextender, \harrowextender, \lmoustache, \rmoustache, \sumtop, \sumbottom, \overbracket, \underbracket, \bbrktbrk, \sqrtbottom, \lvboxline, \rvboxline, \carreturn, \varrowextender, \overparen, \underparen, \overbrace, \underbrace, \obrbrak, \ubrbrak, \trapezium, \benzenr, \strns, \fltns, \accurrent, \elinters, \textvisiblespace, \circledone, \circledtwo, \circledthree, \circledfour, \circledfive, \circledsix, \circledseven, \circledeight, \circlednine, \circledA, \circledB, \circledC, \circledD, \circledE, \circledF, \circledG, \circledH, \circledI, \circledJ, \circledK, \circledL, \circledM, \circledN, \circledO, \circledP, \circledQ, \circledR, \circledS, \circledT, \circledU, \circledV, \circledW, \circledX, \circledY, \circledZ, \circleda, \circledb, \circledc, \circledd, \circlede, \circledf, \circledg, \circledh, \circledi, \circledj, \circledk, \circledl, \circledm, \circledn, \circledo, \circledp, \circledq, \circledr, \circleds, \circledt, \circledu, \circledv, \circledw, \circledx, \circledy, \circledz, \circledzero, \bdhrule, \bdvrule, \bdtriplevdash, \bdquadhdash, \bdquadvdash, \bddvrh, \bddvlh, \bduvrh, \bduvlh, \bdbvrh, \bdbvlh, \bddvbh, \bduvbh, \bdbvbh, \bdHrule, \bdVrule, \bddvrH, \bddVrh, \bddVrH, \bddvlH, \bddVlh, \bddVlH, \bduvrH, \bduVrh, \bduVrH, \bduvlH, \bduVlh, \bduVlH, \bdbvrH, \bdbVrh, \bdbVrH, \bdbvlH, \bdbVlh, \bdbVlH, \bddvbH, \bddVbh, \bddVbH, \bduvbH, \bduVbh, \bduVbH, \bdbvbH, \bdbVbh, \bdbVbH, \bdnesw, \bdnwse, \blockuphalf, \blocklowhalf, \blockfull, \blocklefthalf, \blockrighthalf, \blockqtrshaded, \blockhalfshaded, \blockthreeqtrshaded, \mdlgblksquare, \mdlgwhtsquare, \squoval, \blackinwhitesquare, \squarehfill, \squarevfill, \squarehvfill, \squarenwsefill, \squareneswfill, \squarecrossfill, \squaregrayfill, \smblksquare, \smwhtsquare, \hrectangleblack, \hrectangle, \vrectangleblack, \vrectangle, \parallelogramblack, \parallelogram, \bigblacktriangleup, \bigtriangleup, \blacktriangle, \vartriangle, \blacktriangleright, \triangleright, \smallblacktriangleright, \smalltriangleright, \blackpointerright, \whitepointerright, \bigblacktriangledown, \bigtriangledown, \blacktriangledown, \triangledown, \blacktriangleleft, \triangleleft, \smallblacktriangleleft, \smalltriangleleft, \blackpointerleft, \whitepointerleft, \mdlgblkdiamond, \mdlgwhtdiamond, \diamond, \blackinwhitediamond, \fisheye, \lozenge, \mdlgwhtcircle, \dottedcircle, \circlevertfill, \bullseye, \mdlgblkcircle, \circlelefthalfblack, \circlerighthalfblack, \circlebottomhalfblack, \circletophalfblack, \circleurquadblack, \blackcircleulquadwhite, \blacklefthalfcircle, \blackrighthalfcircle, \inversebullet, \inversewhitecircle, \invwhiteupperhalfcircle, \invwhitelowerhalfcircle, \ularc, \urarc, \lrarc, \llarc, \topsemicircle, \botsemicircle, \lrblacktriangle, \llblacktriangle, \ulblacktriangle, \urblacktriangle, \smwhtcircle, \squareleftblack, \squareleftblack, \squareulblack, \squarelrblack, \boxbar, \trianglecdot, \triangleleftblack, \trianglerightblack, \lgwhtcircle, \squareulquad, \squarellquad, \squarelrquad, \squareurquad, \circleulquad, \circlellquad, \circlelrquad, \circleurquad, \ultriangle, \urtriangle, \lltriangle, \mdwhtsquare, \box, \mdblksquare, \mdsmwhtsquare, \mdsmblksquare, \lrtriangle, \bigstar, \bigwhitestar, \astrosun, \conjunction, \phone, \XBox, \danger, \frownie, \smiley, \blacksmiley, \sun, \rightmoon, \leftmoon, \mercury, \female, \earth, \male, \jupiter, \saturn, \neptune, \pluto, \aries, \taurus, \spadesuit, \heartsuit, \diamondsuit, \clubsuit, \varspadesuit, \varheartsuit, \vardiamondsuit, \varclubsuit, \quarternote, \eighthnote, \twonotes, \flat, \natural, \sharp, \acidfree, \dicei, \diceii, \diceiii, \diceiv, \dicev, \dicevi, \circledrightdot, \circledtwodots, \blackcircledrightdot, \blackcircledtwodots, \triangleexclam, \Hermaphrodite, \mdwhtcircl, \mdblkrcl, \mdsmwhtcircl, \neuter, \scissors, \envelope, \checkmark, \maltese, \circledstar, \varstar, \dingasterisk, \lbrbrak, \rbrbrak, \circledsansone, \circledsanstwo, \circledsansthree, \circledsansfour, \circledsansfive, \circledsanssix, \circledsansseven, \circledsanseight, \circledsansnine, \circledsansten, \blackcircledsansone, \blackcircledsanstwo, \blackcircledsansthree, \blackcircledsansfour, \blackcircledsansfive, \blackcircledsanssix, \blackcircledsansseven, \blackcircledsanseight, \blackcircledsansnine, \blackcircledsansten, \draftingarrow, \threedangle, \whiteinwhitetriangle, \perp, \subsetcirc, \supsetcirc, \lbag, \rbag, \veedot, \bsolhsub, \suphsol, \longdivision, \diamondcdot, \wedgedot, \upin, \pullback, \pushout, \leftouterjoin, \rightouterjoin, \fullouterjoin, \bigbot, \bigtop, \DashVDash, \dashVdash, \multimapinv, \vlongdash, \longdashv, \cirbot, \lozengeminus, \concavediamond, \concavediamondtickleft, \concavediamondtickright, \whitesquaretickleft, \whitesquaretickright, \lBrack, \rBrack, \langle, \rangle, \lAngle, \rAngle, \Lbrbrak, \Rbrbrak, \UUparrow, \DDownarrow, \acwgapcirclearrow, \cwgapcirclearrow, \rightarrowonoplus, \longleftarrow, \longrightarrow, \longleftrightarrow, \Longleftarrow, \Longrightarrow, \Longleftrightarrow, \longmapsfrom, \longmapsto, \Longmapsfrom, \Longmapsto, \longrightsquigarrow, \nvtwoheadrightarrow, \nVtwoheadrightarrow, \nvLeftarrow, \nvRightarrow, \nvLeftrightarrow, \twoheadmapsto, \Mapsfrom, \Mapsto, \downarrowbarred, \uparrowbarred, \Uuparrow, \Ddownarrow, \leftbkarrow, \rightbkarrow, \leftdbkarrow, \dbkarow, \drbkarow, \rightdotarrow, \baruparrow, \downarrowbar, \nvrightarrowtail, \nVrightarrowtail, \twoheadrightarrowtail, \nvtwoheadrightarrowtail, \nVtwoheadrightarrowtail, \lefttail, \righttail, \leftdbltail, \rightdbltail, \diamondleftarrow, \rightarrowdiamond, \diamondleftarrowbar, \barrightarrowdiamond, \nwsearrow, \neswarrow, \hknwarrow, \hknearrow, \hksearow, \hkswarow, \tona, \toea, \tosa, \towa, \rdiagovfdiag, \fdiagovrdiag, \seovnearrow, \neovsearrow, \fdiagovnearrow, \rdiagovsearrow, \neovnwarrow, \nwovnearrow, \rightcurvedarrow, \uprightcurvearrow, \downrightcurvedarrow, \leftdowncurvedarrow, \rightdowncurvedarrow, \cwrightarcarrow, \acwleftarcarrow, \acwoverarcarrow, \acwundercurvearrow, \curvearrowrightminus, \curvearrowleftplus, \cwundercurvearrow, \ccwundercurvearrow, \acwcirclearrow, \cwcirclearrow, \rightarrowshortleftarrow, \leftarrowshortrightarrow, \shortrightarrowleftarrow, \rightarrowplus, \leftarrowplus, \rightarrowx, \leftrightarrowcircle, \twoheaduparrowcircle, \leftrightharpoonupdown, \leftrightharpoondownup, \updownharpoonrightleft, \updownharpoonleftright, \leftrightharpoonupup, \updownharpoonrightright, \leftrightharpoondowndown, \updownharpoonleftleft, \barleftharpoonup, \rightharpoonupbar, \barupharpoonright, \downharpoonrightbar, \barleftharpoondown, \rightharpoondownbar, \barupharpoonleft, \downharpoonleftbar, \leftharpoonupbar, \barrightharpoonup, \upharpoonrightbar, \bardownharpoonright, \leftharpoondownbar, \barrightharpoondown, \upharpoonleftbar, \bardownharpoonleft, \leftharpoonsupdown, \upharpoonsleftright, \rightharpoonsupdown, \downharpoonsleftright, \leftrightharpoonsup, \leftrightharpoonsdown, \rightleftharpoonsup, \rightleftharpoonsdown, \leftharpoonupdash, \dashleftharpoondown, \rightharpoonupdash, \dashrightharpoondown, \updownharpoonsleftright, \downupharpoonsleftright, \rightimply, \equalrightarrow, \similarrightarrow, \leftarrowsimilar, \rightarrowsimilar, \rightarrowapprox, \ltlarr, \leftarrowless, \gtrarr, \subrarr, \leftarrowsubset, \suplarr, \leftfishtail, \rightfishtail, \upfishtail, \downfishtail, \Vvert, \mdsmblkcircle, \typecolon, \lBrace, \rBrace, \lParen, \rParen, \llparenthesis, \rrparenthesis, \llangle, \rrangle, \lbrackubar, \rbrackubar, \lbrackultick, \rbracklrtick, \lbracklltick, \rbrackurtick, \langledot, \rangledot, \lparenless, \rparengtr, \Lparengtr, \Rparenless, \lblkbrbrak, \rblkbrbrak, \fourvdots, \vzigzag, \measuredangleleft, \rightanglesqr, \rightanglemdot, \angles, \angdnr, \gtlpar, \sphericalangleup, \turnangle, \revangle, \angleubar, \revangleubar, \wideangledown, \wideangleup, \measanglerutone, \measanglelutonw, \measanglerdtose, \measangleldtosw, \measangleurtone, \measangleultonw, \measangledrtose, \measangledltosw, \revemptyset, \emptysetobar, \emptysetocirc, \emptysetoarr, \emptysetoarrl, \circlehbar, \circledvert, \circledparallel, \obslash, \operp, \obot, \olcross, \odotslashdot, \uparrowoncircle, \circledwhitebullet, \circledbullet, \olessthan, \ogreaterthan, \cirscir, \cirE, \boxdiag, \boxbslash, \boxast, \boxcircle, \boxbox, \boxonbox, \triangleodot, \triangleubar, \triangles, \triangleserifs, \rtriltri, \ltrivb, \vbrtri, \lfbowtie, \rfbowtie, \fbowtie, \lftimes, \rftimes, \hourglass, \blackhourglass, \lvzigzag, \rvzigzag, \Lvzigzag, \Rvzigzag, \iinfin, \tieinfty, \nvinfty, \dualmap, \laplac, \lrtriangleeq, \shuffle, \eparsl, \smeparsl, \eqvparsl, \gleichstark, \thermod, \downtriangleleftblack, \downtrianglerightblack, \blackdiamonddownarrow, \mdlgblklozenge, \circledownarrow, \blackcircledownarrow, \errbarsquare, \errbarblacksquare, \errbardiamond, \errbarblackdiamond, \errbarcircle, \errbarblackcircle, \ruledelayed, \setminus, \dsol, \rsolbar, \xsol, \xbsol, \doubleplus, \tripleplus, \lcurvyangle, \rcurvyangle, \tplus, \tminus, \sumint, \iiiint, \intbar, \intBar, \fint, \circfint, \awint, \rppolint, \scpolint, \npolint, \pointnt, \sqint, \intlharhk, \intx, \intcap, \intcup, \upint, \lowint, \zpipe, \ringplus, \plushat, \simplus, \plusdot, \plussim, \plussubtwo, \plustrif, \commaminus, \minusdot, \minusfdots, \minusrdots, \opluslhrim, \oplusrhrim, \vectimes, \dottimes, \timesbar, \btimes, \smashtimes, \otimeslhrim, \otimesrhrim, \otimeshat, \Otimes, \odiv, \triangleplus, \triangleminus, \triangletimes, \intprod, \intprodr, \fcmp, \amalg, \capdot, \uminus, \barcup, \barcap, \capwedge, \cupvee, \twocups, \twocaps, \closedvarcup, \closedvarcap, \Sqcap, \Sqcup, \closedvarcupsmashprod, \wedgeodot, \veeodot, \Wedge, \Vee, \wedgeonwedge, \veeonvee, \bigslopedvee, \bigslopedwedge, \veeonwedge, \wedgemidvert, \veemidvert, \midbarwedge, \midbarvee, \doublebarwedge, \wedgebar, \wedgedoublebar, \varveebar, \doublebarvee, \veedoublebar, \dsub, \rsub, \eqdot, \dotequiv, \equivVert, \equivVvert, \dotsim, \simrdots, \simminussim, \congdot, \asteq, \hatapprox, \approxeqq, \eqqplus, \pluseqq, \eqqsim, \Coloneq, \eqeq, \eqeqeq, \ddotseq, \equivDD, \ltcir, \gtcir, \ltquest, \gtquest, \leqslant, \geqslant, \lesdot, \gesdot, \lesdoto, \gesdoto, \lesdotor, \gesdotol, \lessapprox, \gtrapprox, \lneq, \gneq, \lnapprox, \gnapprox, \lesseqqgtr, \gtreqqless, \lsime, \gsime, \lsimg, \gsiml, \lgE, \glE, \lesges, \gesles, \eqslantless, \eqslantgtr, \elsdot, \egsdot, \eqqless, \eqqgtr, \eqqslantless, \eqqslantgtr, \simless, \simgtr, \simlE, \simgE, \Lt, \Gt, \partialmeetcontraction, \glj, \gla, \ltcc, \gtcc, \lescc, \gescc, \smt, \lat, \smte, \late, \bumpeqq, \preceq, \succeq, \precneq, \succneq, \preceqq, \succeqq, \precneqq, \succneqq, \precapprox, \succapprox, \precnapprox, \succnapprox, \Prec, \Sc, \subsetdot, \supsetdot, \subsetplus, \supsetplus, \submult, \supmult, \subedot, \supedot, \subseteqq, \supseteqq, \subsim, \supsim, \subsetapprox, \supsetapprox, \subsetneqq, \supsetneqq, \lsqhook, \rsqhook, \csub, \csup, \csube, \csupe, \subsup, \supsub, \subsub, \supsup, \suphsub, \supdsub, \forkv, \topfork, \mlcp, \forks, \forksnot, \shortlefttack, \shortdowntack, \shortuptack, \perps, \vDdash, \dashV, \Dashv, \DashV, \varVdash, \Barv, \vBar, \vBarv, \barV, \Vbar, \Not, \bNot, \revnmid, \cirmid, \midcir, \topcir, \nhpar, \parsim, \interleave, \nhVvert, \threedotcolon, \lllnest, \gggnest, \leqqslant, \leqqslant, \talloblong, \squareurblack, \squarellblack, \diamondleftblack, \diamondrightblack, \diamondtopblack, \diamondbotblack, \dottedsquare, \lgblksquare, \lgwhtsquare, \vysmlblksquare, \vysmlwhtsquare, \pentagonblack, \pentagon, \varhexagon, \varhexagonblack, \hexagonblack, \lgblkcircle, \mdblkdiamond, \mdwhtdiamond, \mdblklozenge, \mdwhtlozenge, \smblkdiamond, \smblklozenge, \smwhtlozenge, \blkhorzoval, \whthorzoval, \blkvertoval, \whtvertoval, \circleonleftarrow, \leftthreearrows, \leftarrowonoplus, \longleftsquigarrow, \nvtwoheadleftarrow, \nVtwoheadleftarrow, \twoheadmapsfrom, \twoheadleftdbkarrow, \leftdotarrow, \nvleftarrowtail, \nVleftarrowtail, \twoheadleftarrowtail, \nvtwoheadleftarrowtail, \nVtwoheadleftarrowtail, \leftarrowx, \leftcurvedarrow, \equalleftarrow, \bsimilarleftarrow, \leftarrowbackapprox, \rightarrowgtr, \rightarrowsupset, \LLeftarrow, \RRightarrow, \bsimilarrightarrow, \rightarrowbackapprox, \similarleftarrow, \leftarrowapprox, \leftarrowbsimilar, \righarrowbsimilar, \medwhitestar, \medblackstar, \smwhitestar, \rightpentagonblack, \rightpentagon, \postalmark, \hzigzag, \hiraganano, \textheng, \texthen, \calB, \calE, \calF, \calH, \calM, \calR.
+ at strong{Special symbols}:
+
+\# (#), \% (%), \& (&), \^ (^).
+
+\AA (Ã
), \AE (Ã), \APLboxquestion (â°), \APLboxupcaret (â), \APLnotbackslash (â), \APLnotslash (â¿), \Alpha (Î), \And (&), \Angstrom (â«), \Barv (â«§), \BbbC (â), \BbbGamma (â¾), \BbbH (â), \BbbN (â), \BbbP (â), \BbbPi (â¿), \BbbQ (â), \BbbR (â), \BbbZ (â¤), \Bbbgamma (â½), \Bbbpi (â¼), \Bbbsum (â
), \Beta (Î), \Bumpeq (â), \Cap (â), \Chi (Χ), \Colon (â·), \Coloneq (â©´), \Cup (â), \DDownarrow (â±), \DH (Ã), \DJ (Ä), \DashV (â«¥), \DashVDash (â), \Dashv (⫤), \Ddownarrow (â¤), \Delta (Î), \Digamma (Ï), \Doteq (â), \Downarrow (â), \Epsilon (Î), \Equiv (â£), \Eta (Î), \Eulerconst (â), \Exclam (â¼), \Finv (â²), \Game (â
), \Gamma (Î), \Gt (⪢), \Hermaphrodite (â¥), \Im (â), \Iota (Î), \Kappa (Î), \Koppa (Ï), \L (Å), \LLeftarrow (â
), \Lambda (Î), \Lbrbrak (â¬), \Ldsh (â²), \Leftarrow (â), \Leftrightarrow (â), \Lleftarrow (â), \Longleftarrow (â¸), \Longleftrightarrow (âº), \Longmapsfrom (â½), \Longmapsto (â¾), \Longrightarrow (â¹), \Lparengtr (â¦), \Lsh (â°), \Lt (⪡), \Lvzigzag (â§), \Mapsfrom (â¤), \Mapsto (â¤), \Mu (Î), \NG (Å), \Nearrow (â), \Not (⫬), \Nu (Î), \Nwarrow (â), \O (Ã), \OE (Å), \Ohorn (Æ ), \Omega (Ω), \Omicron (Î), \Otimes (⨷), \P (¶), \Phi (Φ), \Pi (Î ), \Planckconst (â), \Prec (⪻), \PropertyLine (â
), \Psi (Ψ), \QED (â), \Question (â), \RRightarrow (â), \Rbrbrak (â), \Rdsh (â³), \Re (â), \Rho (Ρ), \Rightarrow (â), \Rparenless (â¦), \Rrightarrow (â), \Rsh (â±), \Rvzigzag (â§), \S (§), \Sc (⪼), \Searrow (â), \Sigma (Σ), \Sqcap (â©), \Sqcup (â©), \Stigma (Ï), \Subset (â), \Supset (â), \Swarrow (â), \TH (Ã), \Tau (Τ), \Theta (Î), \UUparrow (â°), \Uhorn (Ư), \Uparrow (â), \Updownarrow (â), \Uuparrow (â¤), \VDash (â«), \Vbar (â««), \Vdash (â©), \Vee (â©), \Vert (â), \Vvdash (âª), \Vvert (â¦), \Wedge (â©), \XBox (â), \Xi (Î), \Yup (â
), \Zbar (Ƶ), \Zeta (Î).
+
+\aa (Ã¥), \ac (â¾), \accurrent (â¦), \acidfree (â¾), \acwcirclearrow (â¥), \acwgapcirclearrow (â²), \acwleftarcarrow (⤹), \acwopencirclearrow (âº), \acwoverarcarrow (⤺), \acwundercurvearrow (⤻), \adots (â°), \ae (æ), \aleph (âµ), \alpha (α), \amalg (⨿), \angdnr (â¦), \angle (â ), \angles (â¦), \angleubar (⦤), \approx (â), \approxeq (â), \approxeqq (â©°), \approxident (â), \arceq (â), \aries (â), \assert (â¦), \ast (â), \asteq (â©®), \astrosun (â), \asymp (â), \awint (â¨).
+
+\bNot (â«), \backcong (â), \backdprime (â¶), \backepsilon (϶), \backprime (âµ), \backsim (â½), \backsimeq (â), \backslash (\), \backtrprime (â·), \bagmember (â¿), \barV (⫪), \barcap (â©), \barcup (â©), \bardownharpoonleft (⥡), \bardownharpoonright (â¥), \barleftarrow (â¤), \barleftarrowrightarrowbar (â¹), \barleftharpoondown (â¥), \barleftharpoonup (â¥), \barovernorthwestarrow (â¸), \barrightarrowdiamond (⤠), \barrightharpoondown (â¥), \barrightharpoonup (â¥), \baruparrow (â¤), \barupharpoonleft (â¥), \barupharpoonright (â¥), \barvee (â½), \barwedge (â¼), \bbrktbrk (â¶), \bdHrule (â), \bdVrule (â), \bdbVbH (â¬), \bdbVbh (â«), \bdbVlH (â£), \bdbVlh (â¢), \bdbVrH (â ), \bdbVrh (â), \bdbvbH (âª), \bdbvbh (â¼), \bdbvlH (â¡), \bdbvlh (â¤), \bdbvrH (â), \bdbvrh (â), \bddVbH (â¦), \bddVbh (â¥), \bddVlH (â), \bddVlh (â), \bddVrH (â), \bddVrh (â), \bddvbH (â¤), \bddvbh (â¬), \bddvlH (â), \bddvlh (â), \bddvrH (â), \bddvrh (â), \bdhrule (â), \bdnesw (â±), \bdnwse (â²), \bdquadhdash (â), \bdquadvdash (â), \bdtriplevdash (â), \bduVbH (â©), \bduVbh (â¨), \bduVlH (â), \bduVlh (â), \bduVrH (â), \bduVrh (â), \bduvbH (â§), \bduvbh (â´), \bduvlH (â), \bduvlh (â), \bduvrH (â), \bduvrh (â), \bdvrule (â), \because (âµ), \benzenr (â£), \beta (β), \beth (â¶), \between (â¬), \bigblacktriangledown (â¼), \bigblacktriangleup (â²), \bigbot (â), \bigcap (â), \bigcup (â), \bigslopedvee (â©), \bigslopedwedge (â©), \bigstar (â
), \bigtop (â), \bigtriangledown (â½), \bigtriangleup (â³), \bigvee (â), \bigwedge (â), \bigwhitestar (â), \blackcircledownarrow (â§), \blackcircledrightdot (â), \blackcircledsanseight (â), \blackcircledsansfive (â), \blackcircledsansfour (â), \blackcircledsansnine (â), \blackcircledsansone (â), \blackcircledsansseven (â), \blackcircledsanssix (â), \blackcircledsansten (â), \blackcircledsansthree (â), \blackcircledsanstwo (â), \blackcircledtwodots (â), \blackcircleulquadwhite (â), \blackdiamonddownarrow (⧪), \blackhourglass (â§), \blackinwhitediamond (â), \blackinwhitesquare (â£), \blacklefthalfcircle (â), \blackpointerleft (â), \blackpointerright (âº), \blackrighthalfcircle (â), \blacksmiley (â»), \blacktriangle (â´), \blacktriangledown (â¾), \blacktriangleleft (â), \blacktriangleright (â¶), \blkhorzoval (⬬), \blkvertoval (⬮), \blockfull (â), \blockhalfshaded (â), \blocklefthalf (â), \blocklowhalf (â), \blockqtrshaded (â), \blockrighthalf (â), \blockthreeqtrshaded (â), \blockuphalf (â), \bot (â¥), \botsemicircle (â¡), \bowtie (â), \box (â»), \boxast (â§), \boxbar (â«), \boxbox (â§), \boxbslash (â§
), \boxcircle (â§), \boxdiag (â§), \boxdot (â¡), \boxminus (â), \boxonbox (â§), \boxplus (â), \boxtimes (â ), \bsimilarleftarrow (â), \bsimilarrightarrow (â), \bsolhsub (â), \btimes (⨲), \bullet (â), \bullseye (â), \bumpeq (â), \bumpeqq (⪮).
+
+\calB (â¬), \calE (â°), \calF (â±), \calH (â), \calM (â³), \calR (â), \cap (â©), \capdot (â©), \capwedge (â©), \caretinsert (â¸), \carreturn (â), \carriagereturn (âµ), \ccwundercurvearrow (⤿), \cdot (â
), \cdotp (·), \cdots (â¯), \cdprime (ʺ), \checkmark (â), \chi (Ï), \cirE (â§), \cirbot (â), \circ (â), \circeq (â), \circfint (â¨), \circlebottomhalfblack (â), \circledA (â¶), \circledB (â·), \circledC (â¸), \circledD (â¹), \circledE (âº), \circledF (â»), \circledG (â¼), \circledH (â½), \circledI (â¾), \circledJ (â¿), \circledK (â), \circledL (â), \circledM (â), \circledN (â), \circledO (â), \circledP (â
), \circledQ (â), \circledR (â), \circledS (â), \circledT (â), \circledU (â), \circledV (â), \circledW (â), \circledX (â), \circledY (â), \circledZ (â), \circleda (â), \circledast (â), \circledb (â), \circledbullet (⦿), \circledc (â), \circledcirc (â), \circledd (â), \circleddash (â), \circlede (â), \circledeight (â§), \circledequal (â), \circledf (â), \circledfive (â¤), \circledfour (â£), \circledg (â), \circledh (â), \circledi (â), \circledj (â), \circledk (â), \circledl (â), \circledm (â), \circledn (â), \circlednine (â¨), \circledo (â), \circledone (â ), \circledownarrow (⧬), \circledp (â), \circledparallel (⦷), \circledq (â ), \circledr (â¡), \circledrightdot (â), \circleds (â¢), \circledsanseight (â), \circledsansfive (â), \circledsansfour (â), \circledsansnine (â), \circledsansone (â), \circledsansseven (â), \circledsanssix (â
), \circledsansten (â), \circledsansthree (â), \circledsanstwo (â), \circledseven (â¦), \circledsix (â¥), \circledstar (âª), \circledt (â£), \circledthree (â¢), \circledtwo (â¡), \circledtwodots (â), \circledu (â¤), \circledv (â¥), \circledvert (⦶), \circledw (â¦), \circledwhitebullet (⦾), \circledx (â§), \circledy (â¨), \circledz (â©), \circledzero (âª), \circlehbar (⦵), \circlelefthalfblack (â), \circlellquad (âµ), \circlelrquad (â¶), \circleonleftarrow (⬰), \circleonrightarrow (â´), \circlerighthalfblack (â), \circletophalfblack (â), \circleulquad (â´), \circleurquad (â·), \circleurquadblack (â), \circlevertfill (â), \cirmid (⫯), \cirscir (â§), \clangle (â©), \closedvarcap (â©), \closedvarcup (â©), \closedvarcupsmashprod (â©), \closure (â), \cloverleaf (â), \clubsuit (â£), \colon (:), \colon (â¶), \coloneq (â), \commaminus (⨩), \complement (â), \concavediamond (â¡), \concavediamondtickleft (â¢), \concavediamondtickright (â£), \cong (â
), \congdot (â©), \conictaper (â²), \conjunction (â), \coprod (â), \cprime (ʹ), \crangle (âª), \csub (â«), \csube (â«), \csup (â«), \csupe (â«), \cuberoot (â), \cup (âª), \cupdot (â), \cupleftarrow (â), \cupvee (â©
), \curlyeqprec (â), \curlyeqsucc (â), \curlyvee (â), \curlywedge (â), \curvearrowleft (â¶), \curvearrowleftplus (⤽), \curvearrowright (â·), \curvearrowrightminus (⤼), \cwcirclearrow (â¥), \cwgapcirclearrow (â³), \cwopencirclearrow (â»), \cwrightarcarrow (⤸), \cwundercurvearrow (⤾), \cylcty (â).
+
+\dag (â ), \dagger (â ), \daleth (â¸), \danger (â¡), \dashV (â«£), \dashVdash (â), \dashcolon (â¹), \dashleftharpoondown (⥫), \dashrightharpoondown (â¥), \dashv (â£), \dbkarow (â¤), \ddag (â¡), \ddagger (â¡), \ddots (â±), \ddotseq (â©·), \delta (δ), \dh (ð), \diameter (â), \diamond (â), \diamondbotblack (â¬), \diamondcdot (â), \diamondleftarrow (â¤), \diamondleftarrowbar (â¤), \diamondleftblack (â¬), \diamondrightblack (â¬), \diamondsuit (â¢), \diamondtopblack (â¬), \dicei (â), \diceii (â), \diceiii (â), \diceiv (â), \dicev (â), \dicevi (â
), \digamma (Ï), \dingasterisk (â½), \dircurrent (â), \disin (â²), \div (÷), \divideontimes (â), \dj (Ä), \dlcrop (â), \doteq (â), \dotequiv (â©§), \dotminus (â¸), \dotplus (â), \dots (â¦), \dotsim (⩪), \dotsminusdots (âº), \dottedcircle (â), \dottedsquare (â¬), \dottimes (⨰), \doublebarvee (â©¢), \doublebarwedge (â©), \doubleplus (⧺), \downarrow (â), \downarrowbar (â¤), \downarrowbarred (â¤), \downdasharrow (â£), \downdownarrows (â), \downfishtail (⥿), \downharpoonleft (â), \downharpoonleftbar (â¥), \downharpoonright (â), \downharpoonrightbar (â¥), \downharpoonsleftright (⥥), \downrightcurvedarrow (⤵), \downtriangleleftblack (⧨), \downtrianglerightblack (â§©), \downuparrows (âµ), \downupharpoonsleftright (⥯), \downwhitearrow (â©), \downzigzagarrow (â¯), \dprime (â³), \draftingarrow (â), \drbkarow (â¤), \drcrop (â), \dsol (â§¶), \dsub (⩤), \dualmap (â§).
+
+\earth (â), \egsdot (âª), \eighthnote (âª), \elinters (â§), \ell (â), \elsdot (âª), \emdash (â), \emptyset (â
), \emptysetoarr (⦳), \emptysetoarrl (⦴), \emptysetobar (⦱), \emptysetocirc (⦲), \endash (â), \enleadertwodots (â¥), \envelope (â), \eparsl (â§£), \epsilon (ϵ), \eqcirc (â), \eqcolon (â), \eqdef (â), \eqdot (⩦), \eqeq (⩵), \eqeqeq (â©¶), \eqgtr (â), \eqless (â), \eqqgtr (âª), \eqqless (âª), \eqqplus (⩱), \eqqsim (⩳), \eqqslantgtr (âª), \eqqslantless (âª), \eqsim (â), \eqslantgtr (âª), \eqslantless (âª), \equalleftarrow (â), \equalparallel (â), \equalrightarrow (⥱), \equiv (â¡), \equivDD (⩸), \equivVert (⩨), \equivVvert (â©©), \eqvparsl (â§¥), \errbarblackcircle (â§³), \errbarblackdiamond (â§±), \errbarblacksquare (⧯), \errbarcircle (â§²), \errbardiamond (â§°), \errbarsquare (â§®), \eta (η), \euro (â¬), \exists (â).
+
+\fallingdotseq (â), \fbowtie (â§), \fcmp (⨾), \fdiagovnearrow (⤯), \fdiagovrdiag (⤬), \female (â), \figdash (â), \fint (â¨), \fisheye (â), \flat (â), \fltns (â¥), \forall (â), \forks (â«), \forksnot (â«), \forkv (â«), \fourthroot (â), \fourvdots (â¦), \fracfiveeighths (â
), \fracfivesixths (â
), \fracfourfifths (â
), \fraconeeighth (â
), \fraconefifth (â
), \fraconesixth (â
), \fraconethird (â
), \fracseveneights (â
), \fracslash (â), \fracthreeeighths (â
), \fracthreefifths (â
), \fractwofifths (â
), \fractwothirds (â
), \frakC (â), \frakH (â), \frakZ (â¨), \frown (â¢), \frownie (â¹), \fullouterjoin (â).
+
+\gamma (γ), \ge (â¥), \geq (â¥), \geqq (â§), \geqslant (⩾), \gescc (⪩), \gesdot (âª), \gesdoto (âª), \gesdotol (âª), \gesles (âª), \gets (â), \gg (â«), \ggg (â), \gggnest (⫸), \gimel (â·), \glE (âª), \gla (⪥), \gleichstark (⧦), \glj (⪤), \gnapprox (âª), \gneq (âª), \gneqq (â©), \gnsim (â§), \greater (>), \gsime (âª), \gsiml (âª), \gtcc (⪧), \gtcir (⩺), \gtlpar (⦠), \gtquest (⩼), \gtrapprox (âª), \gtrarr (⥸), \gtrdot (â), \gtreqless (â), \gtreqqless (âª), \gtrless (â·), \gtrsim (â³), \guillemotleft («), \guillemotright (»), \guilsinglleft (â¹), \guilsinglright (âº).
+
+\harrowextender (â¯), \hatapprox (⩯), \hbar (â), \heartsuit (â¡), \hermitmatrix (â¹), \hexagon (â), \hexagonblack (⬣), \hiraganano (ã®), \hknearrow (⤤), \hknwarrow (⤣), \hksearow (⤥), \hkswarow (⤦), \hookleftarrow (â©), \hookrightarrow (âª), \horizbar (â), \hourglass (â§), \house (â), \hrectangle (â), \hrectangleblack (â¬), \hslash (â), \hyphenbullet (â), \hzigzag (ã°).
+
+\iiiint (â¨), \iiint (â), \iinfin (â§), \iint (â¬), \imageof (â·), \in (â), \incare (â
), \increment (â), \infty (â), \int (â«), \intBar (â¨), \intbar (â¨), \intbottom (â¡), \intcap (â¨), \intclockwise (â±), \intcup (â¨), \intercal (âº), \interleave (â«´), \intextender (â®), \intlharhk (â¨), \intprod (⨼), \intprodr (⨽), \inttop (â ), \intx (â¨), \inversebullet (â), \inversewhitecircle (â), \invnot (â), \invwhitelowerhalfcircle (â), \invwhiteupperhalfcircle (â), \iota (ι), \ipasupgamma (Ë ), \ipasupl (Ë¡), \ipasuprerglotstpp (ˤ), \ipasups (Ë¢), \ipasupx (Ë£), \ipaunaspirated (Ë), \ipavoicing (ˬ), \isinE (â¹), \isindot (âµ), \isinobar (â·), \isins (â´), \isinvb (â¸), \itBbbD (â
), \itBbbd (â
), \itBbbe (â
), \itBbbi (â
), \itBbbj (â
).
+
+\jupiter (â), \kappa (κ), \kernelcontraction (â»), \koppa (Ï).
+
+\l (Å), \lAngle (âª), \lBrace (â¦), \lBrack (â¦), \lParen (â¦
), \lambda (λ), \lambdabar (Æ), \langle (â¨), \langledot (â¦), \laplac (â§ ), \lasp (ʽ), \lat (⪫), \late (âª), \lbag (â
), \lblkbrbrak (â¦), \lbrace (@{), \lbracelend (â©), \lbracemid (â¨), \lbraceuend (â§), \lbrack ([), \lbrackextender (â¢), \lbracklend (â£), \lbracklltick (â¦), \lbrackubar (â¦), \lbrackuend (â¡), \lbrackultick (â¦), \lbrbrak (â²), \lceil (â), \lcurvyangle (â§¼), \ldasharrhead (â ), \le (â¤), \leadsto (â), \leftarrow (â), \leftarrowapprox (â), \leftarrowbackapprox (â), \leftarrowbsimilar (â), \leftarrowless (⥷), \leftarrowonoplus (⬲), \leftarrowplus (â¥), \leftarrowshortrightarrow (â¥), \leftarrowsimilar (⥳), \leftarrowsubset (⥺), \leftarrowtail (â¢), \leftarrowtriangle (â½), \leftarrowx (⬾), \leftbkarrow (â¤), \leftcurvedarrow (⬿), \leftdasharrow (â ), \leftdasharrowhead (â¡), \leftdbkarrow (â¤), \leftdbltail (â¤), \leftdotarrow (⬸), \leftdowncurvedarrow (⤶), \leftfishtail (⥼), \leftharpoondown (â½), \leftharpoondownbar (â¥), \leftharpoonsupdown (⥢), \leftharpoonup (â¼), \leftharpoonupbar (â¥), \leftharpoonupdash (⥪), \leftleftarrows (â), \leftmoon (â¾), \leftouterjoin (â), \leftrightarrow (â), \leftrightarrowcircle (â¥), \leftrightarrows (â), \leftrightarrowtriangle (â¿), \leftrightharpoondowndown (â¥), \leftrightharpoondownup (â¥), \leftrightharpoons (â), \leftrightharpoonsdown (⥧), \leftrightharpoonsup (⥦), \leftrightharpoonupdown (â¥), \leftrightharpoonupup (â¥), \leftrightsquigarrow (â), \leftsquigarrow (â), \leftsquigarrow (â), \lefttail (â¤), \leftthreearrows (⬱), \leftthreetimes (â), \leftwhitearrow (â¦), \leq (â¤), \leqq (â¦), \leqqslant (⫹), \leqqslant (⫺), \leqslant (⩽), \lescc (⪨), \lesdot (â©¿), \lesdoto (âª), \lesdotor (âª), \lesges (âª), \less (<), \lessapprox (âª
), \lessdot (â), \lesseqgtr (â), \lesseqqgtr (âª), \lessgtr (â¶), \lesssim (â²), \lfbowtie (â§), \lfloor (â), \lftimes (â§), \lgE (âª), \lgblkcircle (⬤), \lgblksquare (â¬), \lgwhtcircle (â¯), \lgwhtsquare (â¬), \lhd (â²), \linefeed (â´), \ll (âª), \llangle (â¦), \llarc (â), \llblacktriangle (â£), \llcorner (â), \lll (â), \lllnest (â«·), \llparenthesis (â¦), \lltriangle (âº), \lmoustache (â°), \lnapprox (âª), \lneq (âª), \lneqq (â¨), \lnsim (â¦), \longdashv (â), \longdivision (â), \longleftarrow (âµ), \longleftrightarrow (â·), \longleftsquigarrow (⬳), \longmapsfrom (â»), \longmapsto (â¼), \longrightarrow (â¶), \longrightsquigarrow (â¿), \looparrowleft (â«), \looparrowright (â¬), \lowint (â¨), \lozenge (â), \lozengeminus (â ), \lparenextender (â), \lparenlend (â), \lparenless (â¦), \lparenuend (â), \lq (â), \lrarc (â), \lrblacktriangle (â¢), \lrcorner (â), \lrtriangle (â¿), \lrtriangleeq (â§¡), \lsime (âª), \lsimg (âª), \lsqhook (â«), \ltcc (⪦), \ltcir (⩹), \ltimes (â), \ltlarr (⥶), \ltquest (â©»), \ltrivb (â§), \lvboxline (â¸), \lvzigzag (â§).
+
+\male (â), \maltese (â ), \mapsdown (â§), \mapsfrom (â¤), \mapsto (â¦), \mapsup (â¥), \mdblkdiamond (⬥), \mdblklozenge (⬧), \mdblkrcl (â«), \mdblksquare (â¼), \mdlgblkcircle (â), \mdlgblkdiamond (â), \mdlgblklozenge (â§«), \mdlgblksquare (â ), \mdlgwhtcircle (â), \mdlgwhtdiamond (â), \mdlgwhtsquare (â¡), \mdsmblkcircle (â¦), \mdsmblksquare (â¾), \mdsmwhtcircl (â¬), \mdsmwhtsquare (â½), \mdwhtcircl (âª), \mdwhtdiamond (⬦), \mdwhtlozenge (⬨), \mdwhtsquare (â»), \measangledltosw (⦯), \measangledrtose (⦮), \measangleldtosw (⦫), \measanglelutonw (⦩), \measanglerdtose (⦪), \measanglerutone (⦨), \measangleultonw (â¦), \measangleurtone (⦬), \measeq (â), \measuredangle (â¡), \measuredangleleft (â¦), \measuredrightangle (â¾), \medblackstar (â), \medmathspace (â), \medwhitestar (â), \mercury (â¿), \mho (â§), \mid (â£), \midbarvee (â©), \midbarwedge (â©), \midcir (â«°), \minus (â), \minusdot (⨪), \minusfdots (⨫), \minusrdots (⨬), \mlcp (â«), \models (â§), \mp (â), \mu (μ), \multimap (â¸), \multimapinv (â).
+
+\nHdownarrow (â), \nHuparrow (â), \nLeftarrow (â), \nLeftrightarrow (â), \nRightarrow (â), \nVDash (â¯), \nVdash (â®), \nVleftarrow (âº), \nVleftarrowtail (⬺), \nVleftrightarrow (â¼), \nVrightarrow (â»), \nVrightarrowtail (â¤), \nVtwoheadleftarrow (⬵), \nVtwoheadleftarrowtail (⬽), \nVtwoheadrightarrow (â¤), \nVtwoheadrightarrowtail (â¤), \nabla (â), \napprox (â), \nasymp (â), \natural (â®), \ncong (â), \ne (â ), \nearrow (â), \neg (¬), \neovnwarrow (⤱), \neovsearrow (⤮), \neptune (â), \neq (â ), \nequiv (â¢), \neswarrow (⤢), \neuter (â²), \nexists (â), \ng (Å), \ngeq (â±), \ngtr (â¯), \ngtrless (â¹), \ngtrsim (âµ), \nhVvert (⫵), \nhpar (⫲), \ni (â), \niobar (â¾), \nis (â¼), \nisd (âº), \nleftarrow (â), \nleftrightarrow (â®), \nleq (â°), \nless (â®), \nlessgtr (â¸), \nlesssim (â´), \nmid (â¤), \nni (â), \nobreakhyphen (â), \notin (â), \nparallel (â¦), \npolint (â¨), \nprec (â), \npreccurlyeq (â ), \nrightarrow (â), \nsim (â), \nsime (â), \nsqsubseteq (â¢), \nsqsupseteq (â£), \nsubset (â), \nsubseteq (â), \nsucc (â), \nsucccurlyeq (â¡), \nsupset (â
), \nsupseteq (â), \ntriangleleft (âª), \ntrianglelefteq (â¬), \ntriangleright (â«), \ntrianglerighteq (â), \nu (ν), \nvDash (â), \nvLeftarrow (â¤), \nvLeftrightarrow (â¤), \nvRightarrow (â¤), \nvdash (â¬), \nvinfty (â§), \nvleftarrow (â·), \nvleftarrowtail (⬹), \nvleftrightarrow (â¹), \nvrightarrow (â¸), \nvrightarrowtail (â¤), \nvtwoheadleftarrow (⬴), \nvtwoheadleftarrowtail (⬼), \nvtwoheadrightarrow (â¤), \nvtwoheadrightarrowtail (â¤), \nwarrow (â), \nwovnearrow (⤲), \nwsearrow (⤡).
+
+\o (ø), \obar (â½), \obot (⦺), \obrbrak (â ), \obslash (⦸), \odiv (⨸), \odot (â), \odotslashdot (⦼), \oe (Å), \ogreaterthan (â§), \ohorn (Æ¡), \oiiint (â°), \oiint (â¯), \oint (â®), \ointctrclockwise (â³), \olcross (⦻), \oldKoppa (Ï), \oldkoppa (Ï), \olessthan (â§), \omega (Ï), \omicron (ο), \ominus (â), \operp (⦹), \oplus (â), \opluslhrim (â¨), \oplusrhrim (⨮), \origof (â¶), \oslash (â), \otimes (â), \otimeshat (⨶), \otimeslhrim (⨴), \otimesrhrim (⨵), \overbrace (â), \overbracket (â´), \overline (â¾), \overparen (â), \owns (â).
+
+\parallel (â¥), \parallelogram (â±), \parallelogramblack (â°), \parsim (⫳), \partial (â), \partialmeetcontraction (⪣), \pentagon (⬠), \pentagonblack (â¬), \perp (â), \perps (â«¡), \phi (Ï), \phone (â), \pi (Ï), \pitchfork (â), \plusdot (⨥), \pluseqq (⩲), \plushat (⨣), \plussim (⨦), \plussubtwo (⨧), \plustrif (⨨), \pluto (â), \pm (±), \pointnt (â¨), \postalmark (ã), \prec (âº), \precapprox (⪷), \preccurlyeq (â¼), \preceq (⪯), \preceqq (⪳), \precnapprox (⪹), \precneq (⪱), \precneqq (⪵), \precnsim (â¨), \precsim (â¾), \prime (â²), \prod (â), \profalar (â®), \profline (â), \profsurf (â), \propto (â), \prurel (â°), \psi (Ï), \pullback (â), \pushout (â).
+
+\qprime (â), \quarternote (â©), \questeq (â), \quotdblbase (â), \quotdblright (â), \quotsinglbase (â), \quotsinglright (â).
+
+\rAngle (â«), \rBrace (â¦), \rBrack (â§), \rParen (â¦), \rangle (â©), \rangledot (â¦), \rangledownzigzagarrow (â¼), \rasp (ʼ), \rbag (â), \rblkbrbrak (â¦), \rbrace (@}), \rbracelend (â), \rbracemid (â¬), \rbraceuend (â«), \rbrack (]), \rbrackextender (â¥), \rbracklend (â¦), \rbracklrtick (â¦), \rbrackubar (â¦), \rbrackuend (â¤), \rbrackurtick (â¦), \rbrbrak (â³), \rceil (â), \rcurvyangle (â§½), \rdiagovfdiag (⤫), \rdiagovsearrow (⤰), \recorder (â), \revangle (⦣), \revangleubar (⦥), \revemptyset (⦰), \revnmid (â«®), \rfbowtie (â§), \rfloor (â), \rftimes (â§), \rhd (â³), \rho (Ï), \righarrowbsimilar (â), \rightangle (â), \rightanglemdot (â¦), \rightanglesqr (â¦), \rightarrow (â), \rightarrowapprox (⥵), \rightarrowbackapprox (â), \rightarrowbar (â¥), \rightarrowdiamond (â¤), \rightarrowgtr (â), \rightarrowonoplus (â´), \rightarrowplus (â¥
), \rightarrowshortleftarrow (â¥), \rightarrowsimilar (⥴), \rightarrowsupset (â), \rightarrowtail (â£), \rightarrowtriangle (â¾), \rightarrowx (â¥), \rightbkarrow (â¤), \rightcurvedarrow (⤳), \rightdasharrow (â¢), \rightdbltail (â¤), \rightdotarrow (â¤), \rightdowncurvedarrow (⤷), \rightfishtail (⥽), \rightharpoondown (â), \rightharpoondownbar (â¥), \rightharpoonsupdown (⥤), \rightharpoonup (â), \rightharpoonupbar (â¥), \rightharpoonupdash (⥬), \rightimply (⥰), \rightleftarrows (â), \rightleftharpoons (â), \rightleftharpoonsdown (⥩), \rightleftharpoonsup (⥨), \rightmoon (â½), \rightouterjoin (â), \rightpentagon (â), \rightpentagonblack (â), \rightrightarrows (â), \rightsquigarrow (â), \rightsquigarrow (â), \righttail (â¤), \rightthreearrows (â¶), \rightthreetimes (â), \rightwhitearrow (â¨), \ringplus (⨢), \risingdotseq (â), \rmoustache (â±), \rparenextender (â), \rparengtr (â¦), \rparenlend (â ), \rparenuend (â), \rppolint (â¨), \rq (â), \rrangle (â¦), \rrparenthesis (â¦), \rsolbar (â§·), \rsqhook (â«), \rsub (â©¥), \rtimes (â), \rtriltri (â§), \ruledelayed (â§´), \rvboxline (â¹), \rvzigzag (â§).
+
+\sampi (Ï¡), \sansLmirrored (â
), \sansLturned (â
), \saturn (â), \scissors (â), \scpolint (â¨), \scrB (â¬), \scrE (â°), \scrF (â±), \scrH (â), \scrI (â), \scrL (â), \scrM (â³), \scrR (â), \scre (â¯), \scrg (â), \scro (â´), \scurel (â±), \searrow (â), \seovnearrow (â¤), \setminus (â), \setminus (â§µ), \sharp (â¯), \shortdowntack (â«), \shortleftarrow (â), \shortlefttack (â«), \shortrightarrow (â), \shortrightarrowleftarrow (â¥), \shortuptack (â« ), \shuffle (â§¢), \sigma (Ï), \silon (Ï
), \silon (Ï), \sim (â¼), \simeq (â), \simgE (⪠), \simgtr (âª), \similarleftarrow (â), \similarrightarrow (⥲), \simlE (âª), \simless (âª), \simminussim (⩬), \simneqq (â), \simplus (⨤), \simrdots (â©«), \sinewave (â¿), \slash (â), \smallblacktriangleleft (â), \smallblacktriangleright (â¸), \smalldiamond (â), \smallin (â), \smallint (â«), \smallni (â), \smallsetminus (â), \smalltriangleleft (â), \smalltriangleright (â¹), \smashtimes (⨳), \smblkdiamond (⬩), \smblklozenge (⬪), \smblksquare (âª), \smeparsl (⧤), \smile (â£), \smiley (âº), \smt (⪪), \smte (⪬), \smwhitestar (â), \smwhtcircle (â¦), \smwhtlozenge (⬫), \smwhtsquare (â«), \spadesuit (â ), \sphericalangle (â¢), \sphericalangleup (⦡), \sqcap (â), \sqcup (â), \sqint (â¨), \sqlozenge (â), \sqrt (â), \sqrt3 (â), \sqrt4 (â), \sqrtbottom (â·), \sqsubset (â), \sqsubseteq (â), \sqsubsetneq (â¤), \sqsupset (â), \sqsupseteq (â), \sqsupsetneq (â¥), \squarecrossfill (â©), \squaregrayfill (â©), \squarehfill (â¤), \squarehvfill (â¦), \squareleftblack (â§), \squareleftblack (â¨), \squarellblack (â¬), \squarellquad (â±), \squarelrblack (âª), \squarelrquad (â²), \squareneswfill (â¨), \squarenwsefill (â§), \squareulblack (â©), \squareulquad (â°), \squareurblack (â¬), \squareurquad (â³), \squarevfill (â¥), \squoval (â¢), \ss (Ã), \star (â), \stareq (â), \sterling (£), \stigma (Ï), \strns (â¤), \subedot (â«), \submult (â«), \subrarr (⥹), \subset (â), \subsetapprox (â«), \subsetcirc (â), \subsetdot (⪽), \subseteq (â), \subseteqq (â«
), \subsetneq (â), \subsetneqq (â«), \subsetplus (⪿), \subsim (â«), \subsub (â«), \subsup (â«), \succ (â»), \succapprox (⪸), \succcurlyeq (â½), \succeq (⪰), \succeqq (⪴), \succnapprox (⪺), \succneq (⪲), \succneqq (⪶), \succnsim (â©), \succsim (â¿), \sum (â), \sumbottom (â³), \sumint (â¨), \sumtop (â²), \sun (â¼), \supdsub (â«), \supedot (â«), \suphsol (â), \suphsub (â«), \suplarr (⥻), \supmult (â«), \supn (â¿), \supset (â), \supsetapprox (â«), \supsetcirc (â), \supsetdot (⪾), \supseteq (â), \supseteqq (â«), \supsetneq (â), \supsetneqq (â«), \supsetplus (â«), \supsim (â«), \supsub (â«), \supsup (â«), \surd (â), \swarrow (â).
+
+\talloblong (⫾), \target (â), \tau (Ï), \taurus (â), \testhookx (á¶), \textAsterisks (â), \textacute (Ë), \textadvanced (Ë), \textain (Ê¿), \textasciiacute (´), \textasciicircum (^), \textasciidieresis (¨), \textasciigrave (`), \textasciimacron (¯), \textasciitilde (~), \textasterisklow (â), \textbackdprime (â¶), \textbackprime (âµ), \textbacktrprime (â·), \textbardotlessj (É), \textbardotlessjvar (Ê), \textbarglotstop (Ê¡), \textbari (ɨ), \textbarl (Æ), \textbaro (ɵ), \textbarrevglotstop (Ê¢), \textbaru (Ê), \textbeltl (ɬ), \textbenttailyogh (ƺ), \textbreve (Ë), \textbrokenbar (¦), \textbullet (â¢), \textbullseye (Ê), \textcent (¢), \textcircledP (â), \textcloseepsilon (Ê), \textcloseomega (É·), \textcloserevepsilon (É), \textcopyright (©), \textcrb (Æ), \textcrh (ħ), \textcrinvglotstop (ƾ), \textcrlambda (Æ), \textcrtwo (Æ»), \textctc (É), \textctd (È¡), \textctesh (Ê), \textctj (Ê), \textctl (È´), \textctn (ȵ), \textctt (ȶ), \textctyogh (Ê), \textctz (Ê), \textcurrency (¤), \textdctzlig (Ê¥), \textdegree (°), \textdiscount (â), \textdollar ($), \textdotaccent (Ë), \textdotlessj (È·), \textdoubleacute (Ë), \textdoublebarpipe (Ç), \textdoublepipe (Ç), \textdprime (â³), \textdptr (Ë
), \textdyoghlig (ʤ), \textdzlig (Ê£), \textepsilon (É), \textesh (Ê), \textestimated (â®), \textexclam (Ç), \textexclamdown (¡), \textfishhookr (ɾ), \textflorin (Æ), \textfranc (â£), \textgamma (É£), \textglotstop (Ê), \textgrave (Ë), \texthalflength (Ë), \texthamza (ʾ), \texthen (ê§), \textheng (ê§), \texthooks (á¶), \texthookz (á¶), \texthtb (É), \texthtc (Æ), \texthtd (É), \texthtg (É ), \texthth (ɦ), \texththeng (ɧ), \texthtk (Æ), \texthtp (Æ¥), \texthtq (Ê ), \texthtscg (Ê), \texthtt (Æ), \texthvlig (Æ), \texthyphen (â), \textinvglotstop (Ê), \textinvscr (Ê), \textiota (É©), \textlengthmark (Ë), \textlhalfring (Ë), \textlhookd (á¶), \textlhookk (á¶), \textlhookl (á¶
), \textlhookt (Æ«), \textlhti (É¿), \textlira (â¤), \textlonglegr (ɼ), \textlongy (Ê®), \textlongy (ʯ), \textlooptoprevesh (ƪ), \textlowacute (Ë), \textlowered (Ë), \textlowgrave (Ë), \textlowmacron (Ë), \textlptr (Ë), \textltailm (ɱ), \textltailn (ɲ), \textltilde (É«), \textlyoghlig (É®), \textmacron (Ë), \textmu (µ), \textnumero (â), \textogonek (Ë), \textohm (â¦), \textonehalf (½), \textonequarter (¼), \textonesuperior (¹), \textopeno (É), \textordfeminine (ª), \textordmasculine (º), \textovercross (Ë), \textoz (â¥), \textpertenthousand (â±), \textperthousand (â°), \textpesetas (â§), \textphi (ɸ), \textpipe (Ç), \textprime (â²), \textprimstress (Ë), \textqprime (â), \textquestiondown (¿), \textquotedbl ("), \textquotedblleft (â), \textquotedblright (â), \textraised (Ë), \textraiseglotstop (Ë), \textraiserevglotstop (Ë), \textramshorns (ɤ), \textrecipe (â), \textreferencemark (â»), \textregistered (®), \textretracted (Ë), \textreve (É), \textrevepsilon (É), \textrevglotstop (Ê), \textrhalfring (Ë), \textrhookrevepsilon (É), \textrhookschwa (É), \textrhoticity (Ë), \textringaccent (Ë), \textrptr (Ë), \textrtaild (É), \textrtaill (É), \textrtailn (ɳ), \textrtailr (ɽ), \textrtails (Ê), \textrtailt (Ê), \textrtailz (Ê), \textsca (á´), \textscb (Ê), \textsce (á´), \textscg (É¢), \textsch (Ê), \textschwa (É), \textsci (ɪ), \textscl (Ê), \textscn (É´), \textscoelig (ɶ), \textscr (Ê), \textscripta (É), \textscriptg (É¡), \textscriptv (Ê), \textscu (á´), \textscy (Ê), \textsecstress (Ë), \textsemicolonreversed (â), \textsilon (Î¥), \textsmalltilde (Ë), \textstretchcvar (Ê), \textsubw (w), \textsuph (ʰ), \textsuphth (ʱ), \textsupinvscr (ʶ), \textsupj (ʲ), \textsupr (ʳ), \textsupturnr (Ê´), \textsupturnrrtail (ʵ), \textsupw (Ê·), \textsupy (ʸ), \texttctctlig (ʧ), \texttctctlig (ʨ), \textthreequarters (¾), \textthreesuperior (³), \texttrademark (â¢), \texttrprime (â´), \texttslig (ʦ), \textturna (É), \textturncomma (Ê»), \textturnh (É¥), \textturnk (Ê), \textturnlonglegr (ɺ), \textturnm (ɯ), \textturnmrleg (ɰ), \textturnr (ɹ), \textturnrrtail (É»), \textturnscripta (É), \textturnt (Ê), \textturnv (Ê), \textturnw (Ê), \textturny (Ê), \texttwosuperior (²), \textupsilon (Ê), \textuptr (Ë), \textvibyi (Ê
), \textvisiblespace (â£), \textyogh (Ê), \th (þ), \therefore (â´), \thermod (â§§), \theta (θ), \thickapprox (â), \thicksim (â¼), \threedangle (â), \threedotcolon (â«¶), \tieconcat (â), \tieinfty (â§), \times (Ã), \timesbar (⨱), \tminus (â§¿), \to (â), \toea (⤨), \tona (⤧), \tonebarextrahigh (Ë¥), \tonebarextralow (Ë©), \tonebarhigh (˦), \tonebarlow (˨), \tonebarmid (˧), \top (â¤), \topbot (â¶), \topcir (⫱), \topfork (â«), \topsemicircle (â ), \tosa (⤩), \towa (⤪), \tplus (â§¾), \trapezium (â¢), \trianglecdot (â¬), \triangledown (â¿), \triangleexclam (â ), \triangleleft (â), \triangleleftblack (â), \trianglelefteq (â´), \triangleminus (⨺), \triangleodot (â§), \triangleplus (⨹), \triangleq (â), \triangleright (â·), \trianglerightblack (â®), \trianglerighteq (âµ), \triangles (â§), \triangleserifs (â§), \triangletimes (⨻), \triangleubar (â§), \tripleplus (â§»), \trprime (â´), \turnangle (⦢), \turnediota (â©), \turnednot (â), \twocaps (â©), \twocups (â©), \twoheaddownarrow (â¡), \twoheadleftarrow (â), \twoheadleftarrowtail (⬻), \twoheadleftdbkarrow (⬷), \twoheadmapsfrom (⬶), \twoheadmapsto (â¤
), \twoheadrightarrow (â ), \twoheadrightarrowtail (â¤), \twoheaduparrow (â), \twoheaduparrowcircle (â¥), \twolowline (â), \twonotes (â«), \typecolon (â¦).
+
+\ubrbrak (â¡), \uhorn (ư), \ularc (â), \ulblacktriangle (â¤), \ulcorner (â), \ulcrop (â), \ultriangle (â¸), \uminus (â©), \underbrace (â), \underbracket (âµ), \underparen (â), \unlhd (â´), \unrhd (âµ), \upand (â
), \uparrow (â), \uparrowbarred (â¤), \uparrowoncircle (⦽), \updasharrow (â¢), \updownarrow (â), \updownarrowbar (â¨), \updownarrows (â
), \updownharpoonleftleft (â¥), \updownharpoonleftright (â¥), \updownharpoonrightleft (â¥), \updownharpoonrightright (â¥), \updownharpoonsleftright (⥮), \upfishtail (⥾), \upharpoonleft (â¿), \upharpoonleftbar (⥠), \upharpoonright (â¾), \upharpoonrightbar (â¥), \upharpoonsleftright (⥣), \upin (â), \upint (â¨), \uplus (â), \uprightcurvearrow (⤴), \upuparrows (â), \upwhitearrow (â§), \urarc (â), \urblacktriangle (â¥), \urcorner (â), \urcrop (â), \urtriangle (â¹).
+
+\v (Ë), \vBar (⫨), \vBarv (â«©), \vDash (â¨), \vDdash (â«¢), \varTheta (Ï´), \varVdash (⫦), \varbarwedge (â
), \varbeta (Ï), \varclubsuit (â§), \vardiamondsuit (â¦), \vardoublebarwedge (â), \varepsilon (ε), \varheartsuit (â¥), \varhexagon (⬡), \varhexagonblack (⬢), \varhexagonlrbonds (â¬), \varin (â), \varisinobar (â¶), \varisins (â³), \varkappa (ϰ), \varlrtriangle (â¿), \varni (â), \varniobar (â½), \varnis (â»), \varnothing (â
), \varointclockwise (â²), \varphi (Ï), \varpi (Ï), \varpropto (â), \varrho (ϱ), \varrowextender (â), \varsigma (Ï), \varspadesuit (â¤), \varstar (â¶), \vartheta (Ï), \vartriangle (âµ), \vartriangleleft (â²), \vartriangleright (â³), \varveebar (â©¡), \vbraceextender (âª), \vbrtri (â§), \vdash (â¢), \vdots (â®), \vectimes (⨯), \vee (â¨), \veebar (â»), \veedot (â), \veedoublebar (â©£), \veeeq (â), \veemidvert (â©), \veeodot (â©), \veeonvee (â©), \veeonwedge (â©), \vert (|), \viewdata (â), \vlongdash (â), \vrectangle (â¯), \vrectangleblack (â®), \vysmlblksquare (â¬), \vysmlwhtsquare (â¬), \vzigzag (â¦).
+
+\watchicon (â), \wedge (â§), \wedgebar (â©), \wedgedot (â), \wedgedoublebar (â© ), \wedgemidvert (â©), \wedgeodot (â©), \wedgeonwedge (â©), \wedgeq (â), \whitearrowupfrombar (âª), \whiteinwhitetriangle (â), \whitepointerleft (â
), \whitepointerright (â»), \whitesquaretickleft (â¤), \whitesquaretickright (â¥), \whthorzoval (â¬), \whtvertoval (⬯), \wideangledown (⦦), \wideangleup (⦧), \wp (â), \wr (â).
+
+\xbsol (⧹), \xi (ξ), \xsol (⧸), \yen (¥), \zeta (ζ), \zpipe (⨠),
IF ANYBODY WILL CHECK WHETHER ALL NAMES CORRESPOND TO RIGHT TEX SYMBOLS I SHALL APPRECIATE IT GREATLY.
diff --git a/texinfo/appendix_ru.texi b/texinfo/appendix_ru.texi
index 51b049f..beb6c26 100644
--- a/texinfo/appendix_ru.texi
+++ b/texinfo/appendix_ru.texi
@@ -10,7 +10,56 @@
@strong{ÐкÑенÑÑ}: \hat, \tilde, \dot, \ddot, \dddot, \ddddot, \acute, \check, \grave, \vec, \bar, \breve
- at strong{СпеÑиалÑнÑе ÑимволÑ}: \textquotedbl, \textdollar, \And, \textasciigrave, \textsubw, \colon, \less, \greater, \lbrack, \backslash, \rbrack, \textasciicircum, \lbrace, \vert, \rbrace, \textasciitilde, \aa, \ae, \textexclamdown, \textcent, \sterling, \textcurrency, \yen, \textbrokenbar, \S, \textasciidieresis, \textcopyright, \textordfeminine, \guillemotleft, \neg, \textregistered, \textasciimacron, \textdegree, \pm, \texttwosuperior, \textthreesuperior, \textasciiacute, \textmu, \P, \cdotp, \textonesuperior, \textordmasculine, \guillemotright, \textonequarter, \textonehalf, \textthreequarters, \textquestiondown, \AA, \AE, \DH, \times, \O, \TH, \ss, \dh, \div, \o, \th, \DJ, \dj, \textcrh, \L, \l, \OE, \oe, \NG, \ng, \textcrb, \texthtc, \textflorin, \texthvlig, \texthtk, \textctd, \textctl, \textctn, \textctt, \textdotlessj, \textbarl, \textcrlambda, \lambdabar, \Ohorn, \ohorn, \texthtp, \textlooptoprevesh, \textlhookt, \texthtt, \Uhorn, \uhorn, \Zbar, \textbenttailyogh, \textcrtwo, \textcrinvglotstop, \textpipe, \textdoublepipe, \textdoublebarpipe, \textexclam, \textturna, \textscripta, \textturnscripta, \texthtb, \textopeno, \textctc, \textrtaild, \texthtd, \textreve, \textschwa, \texthtg, \textscriptg, \textscg, \textgamma, \textramshorns, \textturnh, \texthth, \texththeng, \textbari, \textiota, \textturnmrleg, \textltailm, \textltailn, \textrtailn, \textscn, \textbaro, \textscoelig, \textcloseomega, \textphi, \textturnr, \textscr, \textinvscr, \textrtails, \textesh, \textbardotlessjvar, \textvibyi, \textctesh, \textturnt, \textrtailt, \textbaru, \textrtailz, \textctz, \textyogh, \textctyogh, \textglotstop, \textrevglotstop, \textinvglotstop, \textstretchcvar, \textbullseye, \textscb, \textrhookschwa, \textepsilon, \textrevepsilon, \textrhookrevepsilon, \textcloserevepsilon, \textbardotlessj, \textsci, \textltilde, \textbeltl, \textrtaill, \textlyoghlig, \textturnm, \textturnlonglegr, \textturnrrtail, \textlonglegr, \textrtailr, \textfishhookr, \textlhti, \textupsilon, \textscriptv, \textturnv, \textturnw, \textturny, \textscy, \textcloseepsilon, \texthtscg, \textsch, \textctj, \textturnk, \textscl, \texthtq, \textbarglotstop, \textbarrevglotstop, \textdzlig, \textdyoghlig, \textdctzlig, \texttslig, \texttctctlig, \texttctctlig, \textlongy, \textlongy, \ipasupgamma, \ipasupl, \ipasups, \ipasupx, \ipasuprerglotstpp, \tonebarextrahigh, \tonebarhigh, \tonebarmid, \tonebarlow, \tonebarextralow, \textsuph, \textsuphth, \textsupj, \textsupr, \textsupturnr, \textsupturnrrtail, \textsupinvscr, \textsupw, \textsupy, \cprime, \cdprime, \textturncomma, \rasp, \lasp, \texthamza, \textain, \textraiseglotstop, \textraiserevglotstop, \textlptr, \textrptr, \textuptr, \textdptr, \$\wedge$, \v, \textprimstress, \textmacron, \textacute, \textgrave, \textsecstress, \textlowmacron, \textlowgrave, \textlowacute, \textlengthmark, \texthalflength, \textrhalfring, \textlhalfring, \textraised, \textlowered, \textadvanced, \textretracted, \textbreve, \textdotaccent, \textringaccent, \textogonek, \textsmalltilde, \textdoubleacute, \textrhoticity, \textovercross, \ipavoicing, \ipaunaspirated, \sampi, \Alpha, \Beta, \Gamma, \Delta, \Epsilon, \Zeta, \Eta, \Theta, \Iota, \Kappa, \Lambda, \Mu, \Nu, \Xi, \Omicron, \Pi, \Rho, \Sigma, \Tau, \textsilon, \Phi, \Chi, \Psi, \Omega, \alpha, \beta, \gamma, \delta, \varepsilon, \zeta, \eta, \theta, \iota, \kappa, \lambda, \mu, \nu, \xi, \omicron, \pi, \rho, \varsigma, \sigma, \tau, \silon, \varphi, \chi, \psi, \omega, \varbeta, \vartheta, \silon, \phi, \varpi, \oldKoppa, \oldkoppa, \Stigma, \stigma, \Digamma, \digamma, \Koppa, \koppa, \varkappa, \varrho, \varTheta, \epsilon, \backepsilon, \textsca, \textsce, \textscu, \textlhookd, \textlhookk, \textlhookl, \texthooks, \testhookx, \texthookz, \texthyphen, \nobreakhyphen, \figdash, \endash, \emdash, \horizbar, \Vert, \twolowline, \lq, \rq, \dagger, \dag, \ddagger, \ddag, \textbullet, \enleadertwodots, \dots, \textperthousand, \textpertenthousand, \textprime, \prime, \textdprime, \dprime, \texttrprime, \trprime, \textbackprime, \backprime, \textbackdprime, \backdprime, \textbacktrprime, \backtrprime, \caretinsert, \guilsinglleft, \tieconcat, \hyphenbullet, \fracslash, \Question, \closure, \textAsterisks, \textdiscount, \textqprime, \qprime, \quotsinglbase, \quotsinglright, \textquotedblleft, \textquotedblright, \quotdblbase, \quotdblright, \guilsinglright, \textreferencemark, \Exclam, \overline, \textasterisklow, \textsemicolonreversed, \medmathspace, \supn, \textfranc, \textlira, \textpesetas, \euro, \BbbC, \incare, \Eulerconst, \scrI, \Im, \scrL, \ell, \BbbN, \textnumero, \textcircledP, \wp, \BbbP, \texttrademark, \BbbZ, \textoz, \textohm, \mho, \frakZ, \turnediota, \scrE, \scrF, \Finv, \scrM, \scro, \aleph, \beth, \gimel, \daleth, \Bbbsum, \Game, \sansLturned, \sansLmirrored, \Yup, \itBbbD, \itBbbd, \itBbbe, \itBbbi, \itBbbj, \scrg, \scrH, \frakH, \BbbH, \Planckconst, \hslash, \hbar, \BbbQ, \scrR, \Re, \BbbR, \textrecipe, \Angstrom, \scrB, \frakC, \textestimated, \scre, \Bbbpi, \Bbbgamma, \BbbGamma, \BbbPi, \PropertyLine, \upand, \fraconethird, \fractwothirds, \fraconefifth, \fractwofifths, \fracthreefifths, \fracfourfifths, \fraconesixth, \fracfivesixths, \fraconeeighth, \fracthreeeighths, \fracfiveeighths, \fracseveneights, \ldasharrhead, \leftdasharrow, \leftdasharrowhead, \rightdasharrow, \updasharrow, \leftarrow, \gets, \shortleftarrow, \uparrow, \rightarrow, \to, \shortrightarrow, \downarrow, \leftrightarrow, \updownarrow, \nwarrow, \nearrow, \searrow, \swarrow, \downdasharrow, \barleftarrow, \rightarrowbar, \leftwhitearrow, \upwhitearrow, \rightwhitearrow, \downwhitearrow, \nleftarrow, \nrightarrow, \leftsquigarrow, \rightsquigarrow, \leadsto, \twoheadleftarrow, \twoheaduparrow, \twoheadrightarrow, \twoheaddownarrow, \leftarrowtail, \rightarrowtail, \mapsfrom, \mapsup, \mapsto, \mapsdown, \updownarrowbar, \hookleftarrow, \hookrightarrow, \looparrowleft, \looparrowright, \leftrightsquigarrow, \nleftrightarrow, \downzigzagarrow, \Lsh, \Rsh, \Ldsh, \Rdsh, \linefeed, \carriagereturn, \curvearrowleft, \curvearrowright, \barovernorthwestarrow, \barleftarrowrightarrowbar, \acwopencirclearrow, \cwopencirclearrow, \leftharpoonup, \leftharpoondown, \upharpoonright, \upharpoonleft, \rightharpoonup, \rightharpoondown, \downharpoonright, \downharpoonleft, \rightleftarrows, \updownarrows, \leftrightarrows, \leftleftarrows, \upuparrows, \rightrightarrows, \downdownarrows, \leftrightharpoons, \rightleftharpoons, \nLeftarrow, \nLeftrightarrow, \nRightarrow, \Leftarrow, \Uparrow, \Rightarrow, \Downarrow, \Leftrightarrow, \Updownarrow, \Nwarrow, \Nearrow, \Searrow, \Swarrow, \Lleftarrow, \Rrightarrow, \leftsquigarrow, \rightsquigarrow, \nHuparrow, \nHdownarrow, \whitearrowupfrombar, \circleonrightarrow, \downuparrows, \rightthreearrows, \nvleftarrow, \nvrightarrow, \nvleftrightarrow, \nVleftarrow, \nVrightarrow, \nVleftrightarrow, \leftarrowtriangle, \rightarrowtriangle, \leftrightarrowtriangle, \forall, \complement, \partial, \exists, \nexists, \varnothing, \emptyset, \increment, \nabla, \in, \varin, \notin, \smallin, \ni, \owns, \varni, \nni, \smallni, \QED, \prod, \coprod, \amalg, \sum, \minus, \mp, \dotplus, \slash, \smallsetminus, \setminus, \ast, \circ, \bullet, \surd, \sqrt, \sqrt3, \sqrt4, \cuberoot, \fourthroot, \propto, \varpropto, \infty, \rightangle, \angle, \measuredangle, \sphericalangle, \mid, \nmid, \parallel, \nparallel, \wedge, \vee, \cap, \cup, \smallint, \int, \iint, \iiint, \oint, \oiint, \oiiint, \intclockwise, \varointclockwise, \ointctrclockwise, \therefore, \because, \colon, \Colon, \dotminus, \dashcolon, \dotsminusdots, \kernelcontraction, \sim, \thicksim, \backsim, \ac, \sinewave, \wr, \nsim, \eqsim, \simeq, \nsime, \cong, \simneqq, \ncong, \approx, \thickapprox, \napprox, \approxeq, \approxident, \backcong, \asymp, \Bumpeq, \bumpeq, \doteq, \Doteq, \fallingdotseq, \risingdotseq, \coloneq, \eqcolon, \eqcirc, \circeq, \arceq, \wedgeq, \veeeq, \stareq, \triangleq, \eqdef, \measeq, \questeq, \ne, \neq, \equiv, \nequiv, \Equiv, \leq, \le, \geq, \ge, \leqq, \geqq, \lneqq, \gneqq, \ll, \gg, \between, \nasymp, \nless, \ngtr, \nleq, \ngeq, \lesssim, \gtrsim, \nlesssim, \ngtrsim, \lessgtr, \gtrless, \nlessgtr, \ngtrless, \prec, \succ, \preccurlyeq, \succcurlyeq, \precsim, \succsim, \nprec, \nsucc, \subset, \supset, \nsubset, \nsupset, \subseteq, \supseteq, \nsubseteq, \nsupseteq, \subsetneq, \supsetneq, \cupleftarrow, \cupdot, \uplus, \sqsubset, \sqsupset, \sqsubseteq, \sqsupseteq, \sqcap, \sqcup, \oplus, \ominus, \otimes, \oslash, \odot, \circledcirc, \circledast, \circledequal, \circleddash, \boxplus, \boxminus, \boxtimes, \boxdot, \vdash, \dashv, \top, \bot, \assert, \models, \vDash, \Vdash, \Vvdash, \VDash, \nvdash, \nvDash, \nVdash, \nVDash, \prurel, \scurel, \vartriangleleft, \lhd, \vartriangleright, \rhd, \trianglelefteq, \unlhd, \trianglerighteq, \unrhd, \origof, \imageof, \multimap, \hermitmatrix, \intercal, \veebar, \barwedge, \barvee, \measuredrightangle, \varlrtriangle, \bigwedge, \bigvee, \bigcap, \bigcup, \smalldiamond, \cdot, \star, \divideontimes, \bowtie, \ltimes, \rtimes, \leftthreetimes, \rightthreetimes, \backsimeq, \curlyvee, \curlywedge, \Subset, \Supset, \Cap, \Cup, \pitchfork, \equalparallel, \lessdot, \gtrdot, \lll, \ggg, \lesseqgtr, \gtreqless, \eqless, \eqgtr, \curlyeqprec, \curlyeqsucc, \npreccurlyeq, \nsucccurlyeq, \nsqsubseteq, \nsqsupseteq, \sqsubsetneq, \sqsupsetneq, \lnsim, \gnsim, \precnsim, \succnsim, \ntriangleleft, \ntriangleright, \ntrianglelefteq, \ntrianglerighteq, \vdots, \cdots, \adots, \ddots, \disin, \varisins, \isins, \isindot, \varisinobar, \isinobar, \isinvb, \isinE, \nisd, \varnis, \nis, \varniobar, \niobar, \bagmember, \diameter, \house, \varbarwedge, \vardoublebarwedge, \lceil, \rceil, \lfloor, \rfloor, \drcrop, \dlcrop, \urcrop, \ulcrop, \invnot, \sqlozenge, \profline, \profsurf, \recorder, \target, \viewdata, \cloverleaf, \turnednot, \watchicon, \ulcorner, \urcorner, \llcorner, \lrcorner, \inttop, \intbottom, \frown, \smile, \clangle, \crangle, \varhexagonlrbonds, \cylcty, \profalar, \conictaper, \topbot, \obar, \APLnotslash, \APLnotbackslash, \APLboxupcaret, \APLboxquestion, \rangledownzigzagarrow, \dircurrent, \hexagon, \lparenuend, \lparenextender, \lparenlend, \rparenuend, \rparenextender, \rparenlend, \lbrackuend, \lbrackextender, \lbracklend, \rbrackuend, \rbrackextender, \rbracklend, \lbraceuend, \lbracemid, \lbracelend, \vbraceextender, \rbraceuend, \rbracemid, \rbracelend, \intextender, \harrowextender, \lmoustache, \rmoustache, \sumtop, \sumbottom, \overbracket, \underbracket, \bbrktbrk, \sqrtbottom, \lvboxline, \rvboxline, \carreturn, \varrowextender, \overparen, \underparen, \overbrace, \underbrace, \obrbrak, \ubrbrak, \trapezium, \benzenr, \strns, \fltns, \accurrent, \elinters, \textvisiblespace, \circledone, \circledtwo, \circledthree, \circledfour, \circledfive, \circledsix, \circledseven, \circledeight, \circlednine, \circledA, \circledB, \circledC, \circledD, \circledE, \circledF, \circledG, \circledH, \circledI, \circledJ, \circledK, \circledL, \circledM, \circledN, \circledO, \circledP, \circledQ, \circledR, \circledS, \circledT, \circledU, \circledV, \circledW, \circledX, \circledY, \circledZ, \circleda, \circledb, \circledc, \circledd, \circlede, \circledf, \circledg, \circledh, \circledi, \circledj, \circledk, \circledl, \circledm, \circledn, \circledo, \circledp, \circledq, \circledr, \circleds, \circledt, \circledu, \circledv, \circledw, \circledx, \circledy, \circledz, \circledzero, \bdhrule, \bdvrule, \bdtriplevdash, \bdquadhdash, \bdquadvdash, \bddvrh, \bddvlh, \bduvrh, \bduvlh, \bdbvrh, \bdbvlh, \bddvbh, \bduvbh, \bdbvbh, \bdHrule, \bdVrule, \bddvrH, \bddVrh, \bddVrH, \bddvlH, \bddVlh, \bddVlH, \bduvrH, \bduVrh, \bduVrH, \bduvlH, \bduVlh, \bduVlH, \bdbvrH, \bdbVrh, \bdbVrH, \bdbvlH, \bdbVlh, \bdbVlH, \bddvbH, \bddVbh, \bddVbH, \bduvbH, \bduVbh, \bduVbH, \bdbvbH, \bdbVbh, \bdbVbH, \bdnesw, \bdnwse, \blockuphalf, \blocklowhalf, \blockfull, \blocklefthalf, \blockrighthalf, \blockqtrshaded, \blockhalfshaded, \blockthreeqtrshaded, \mdlgblksquare, \mdlgwhtsquare, \squoval, \blackinwhitesquare, \squarehfill, \squarevfill, \squarehvfill, \squarenwsefill, \squareneswfill, \squarecrossfill, \squaregrayfill, \smblksquare, \smwhtsquare, \hrectangleblack, \hrectangle, \vrectangleblack, \vrectangle, \parallelogramblack, \parallelogram, \bigblacktriangleup, \bigtriangleup, \blacktriangle, \vartriangle, \blacktriangleright, \triangleright, \smallblacktriangleright, \smalltriangleright, \blackpointerright, \whitepointerright, \bigblacktriangledown, \bigtriangledown, \blacktriangledown, \triangledown, \blacktriangleleft, \triangleleft, \smallblacktriangleleft, \smalltriangleleft, \blackpointerleft, \whitepointerleft, \mdlgblkdiamond, \mdlgwhtdiamond, \diamond, \blackinwhitediamond, \fisheye, \lozenge, \mdlgwhtcircle, \dottedcircle, \circlevertfill, \bullseye, \mdlgblkcircle, \circlelefthalfblack, \circlerighthalfblack, \circlebottomhalfblack, \circletophalfblack, \circleurquadblack, \blackcircleulquadwhite, \blacklefthalfcircle, \blackrighthalfcircle, \inversebullet, \inversewhitecircle, \invwhiteupperhalfcircle, \invwhitelowerhalfcircle, \ularc, \urarc, \lrarc, \llarc, \topsemicircle, \botsemicircle, \lrblacktriangle, \llblacktriangle, \ulblacktriangle, \urblacktriangle, \smwhtcircle, \squareleftblack, \squareleftblack, \squareulblack, \squarelrblack, \boxbar, \trianglecdot, \triangleleftblack, \trianglerightblack, \lgwhtcircle, \squareulquad, \squarellquad, \squarelrquad, \squareurquad, \circleulquad, \circlellquad, \circlelrquad, \circleurquad, \ultriangle, \urtriangle, \lltriangle, \mdwhtsquare, \box, \mdblksquare, \mdsmwhtsquare, \mdsmblksquare, \lrtriangle, \bigstar, \bigwhitestar, \astrosun, \conjunction, \phone, \XBox, \danger, \frownie, \smiley, \blacksmiley, \sun, \rightmoon, \leftmoon, \mercury, \female, \earth, \male, \jupiter, \saturn, \neptune, \pluto, \aries, \taurus, \spadesuit, \heartsuit, \diamondsuit, \clubsuit, \varspadesuit, \varheartsuit, \vardiamondsuit, \varclubsuit, \quarternote, \eighthnote, \twonotes, \flat, \natural, \sharp, \acidfree, \dicei, \diceii, \diceiii, \diceiv, \dicev, \dicevi, \circledrightdot, \circledtwodots, \blackcircledrightdot, \blackcircledtwodots, \triangleexclam, \Hermaphrodite, \mdwhtcircl, \mdblkrcl, \mdsmwhtcircl, \neuter, \scissors, \envelope, \checkmark, \maltese, \circledstar, \varstar, \dingasterisk, \lbrbrak, \rbrbrak, \circledsansone, \circledsanstwo, \circledsansthree, \circledsansfour, \circledsansfive, \circledsanssix, \circledsansseven, \circledsanseight, \circledsansnine, \circledsansten, \blackcircledsansone, \blackcircledsanstwo, \blackcircledsansthree, \blackcircledsansfour, \blackcircledsansfive, \blackcircledsanssix, \blackcircledsansseven, \blackcircledsanseight, \blackcircledsansnine, \blackcircledsansten, \draftingarrow, \threedangle, \whiteinwhitetriangle, \perp, \subsetcirc, \supsetcirc, \lbag, \rbag, \veedot, \bsolhsub, \suphsol, \longdivision, \diamondcdot, \wedgedot, \upin, \pullback, \pushout, \leftouterjoin, \rightouterjoin, \fullouterjoin, \bigbot, \bigtop, \DashVDash, \dashVdash, \multimapinv, \vlongdash, \longdashv, \cirbot, \lozengeminus, \concavediamond, \concavediamondtickleft, \concavediamondtickright, \whitesquaretickleft, \whitesquaretickright, \lBrack, \rBrack, \langle, \rangle, \lAngle, \rAngle, \Lbrbrak, \Rbrbrak, \UUparrow, \DDownarrow, \acwgapcirclearrow, \cwgapcirclearrow, \rightarrowonoplus, \longleftarrow, \longrightarrow, \longleftrightarrow, \Longleftarrow, \Longrightarrow, \Longleftrightarrow, \longmapsfrom, \longmapsto, \Longmapsfrom, \Longmapsto, \longrightsquigarrow, \nvtwoheadrightarrow, \nVtwoheadrightarrow, \nvLeftarrow, \nvRightarrow, \nvLeftrightarrow, \twoheadmapsto, \Mapsfrom, \Mapsto, \downarrowbarred, \uparrowbarred, \Uuparrow, \Ddownarrow, \leftbkarrow, \rightbkarrow, \leftdbkarrow, \dbkarow, \drbkarow, \rightdotarrow, \baruparrow, \downarrowbar, \nvrightarrowtail, \nVrightarrowtail, \twoheadrightarrowtail, \nvtwoheadrightarrowtail, \nVtwoheadrightarrowtail, \lefttail, \righttail, \leftdbltail, \rightdbltail, \diamondleftarrow, \rightarrowdiamond, \diamondleftarrowbar, \barrightarrowdiamond, \nwsearrow, \neswarrow, \hknwarrow, \hknearrow, \hksearow, \hkswarow, \tona, \toea, \tosa, \towa, \rdiagovfdiag, \fdiagovrdiag, \seovnearrow, \neovsearrow, \fdiagovnearrow, \rdiagovsearrow, \neovnwarrow, \nwovnearrow, \rightcurvedarrow, \uprightcurvearrow, \downrightcurvedarrow, \leftdowncurvedarrow, \rightdowncurvedarrow, \cwrightarcarrow, \acwleftarcarrow, \acwoverarcarrow, \acwundercurvearrow, \curvearrowrightminus, \curvearrowleftplus, \cwundercurvearrow, \ccwundercurvearrow, \acwcirclearrow, \cwcirclearrow, \rightarrowshortleftarrow, \leftarrowshortrightarrow, \shortrightarrowleftarrow, \rightarrowplus, \leftarrowplus, \rightarrowx, \leftrightarrowcircle, \twoheaduparrowcircle, \leftrightharpoonupdown, \leftrightharpoondownup, \updownharpoonrightleft, \updownharpoonleftright, \leftrightharpoonupup, \updownharpoonrightright, \leftrightharpoondowndown, \updownharpoonleftleft, \barleftharpoonup, \rightharpoonupbar, \barupharpoonright, \downharpoonrightbar, \barleftharpoondown, \rightharpoondownbar, \barupharpoonleft, \downharpoonleftbar, \leftharpoonupbar, \barrightharpoonup, \upharpoonrightbar, \bardownharpoonright, \leftharpoondownbar, \barrightharpoondown, \upharpoonleftbar, \bardownharpoonleft, \leftharpoonsupdown, \upharpoonsleftright, \rightharpoonsupdown, \downharpoonsleftright, \leftrightharpoonsup, \leftrightharpoonsdown, \rightleftharpoonsup, \rightleftharpoonsdown, \leftharpoonupdash, \dashleftharpoondown, \rightharpoonupdash, \dashrightharpoondown, \updownharpoonsleftright, \downupharpoonsleftright, \rightimply, \equalrightarrow, \similarrightarrow, \leftarrowsimilar, \rightarrowsimilar, \rightarrowapprox, \ltlarr, \leftarrowless, \gtrarr, \subrarr, \leftarrowsubset, \suplarr, \leftfishtail, \rightfishtail, \upfishtail, \downfishtail, \Vvert, \mdsmblkcircle, \typecolon, \lBrace, \rBrace, \lParen, \rParen, \llparenthesis, \rrparenthesis, \llangle, \rrangle, \lbrackubar, \rbrackubar, \lbrackultick, \rbracklrtick, \lbracklltick, \rbrackurtick, \langledot, \rangledot, \lparenless, \rparengtr, \Lparengtr, \Rparenless, \lblkbrbrak, \rblkbrbrak, \fourvdots, \vzigzag, \measuredangleleft, \rightanglesqr, \rightanglemdot, \angles, \angdnr, \gtlpar, \sphericalangleup, \turnangle, \revangle, \angleubar, \revangleubar, \wideangledown, \wideangleup, \measanglerutone, \measanglelutonw, \measanglerdtose, \measangleldtosw, \measangleurtone, \measangleultonw, \measangledrtose, \measangledltosw, \revemptyset, \emptysetobar, \emptysetocirc, \emptysetoarr, \emptysetoarrl, \circlehbar, \circledvert, \circledparallel, \obslash, \operp, \obot, \olcross, \odotslashdot, \uparrowoncircle, \circledwhitebullet, \circledbullet, \olessthan, \ogreaterthan, \cirscir, \cirE, \boxdiag, \boxbslash, \boxast, \boxcircle, \boxbox, \boxonbox, \triangleodot, \triangleubar, \triangles, \triangleserifs, \rtriltri, \ltrivb, \vbrtri, \lfbowtie, \rfbowtie, \fbowtie, \lftimes, \rftimes, \hourglass, \blackhourglass, \lvzigzag, \rvzigzag, \Lvzigzag, \Rvzigzag, \iinfin, \tieinfty, \nvinfty, \dualmap, \laplac, \lrtriangleeq, \shuffle, \eparsl, \smeparsl, \eqvparsl, \gleichstark, \thermod, \downtriangleleftblack, \downtrianglerightblack, \blackdiamonddownarrow, \mdlgblklozenge, \circledownarrow, \blackcircledownarrow, \errbarsquare, \errbarblacksquare, \errbardiamond, \errbarblackdiamond, \errbarcircle, \errbarblackcircle, \ruledelayed, \setminus, \dsol, \rsolbar, \xsol, \xbsol, \doubleplus, \tripleplus, \lcurvyangle, \rcurvyangle, \tplus, \tminus, \sumint, \iiiint, \intbar, \intBar, \fint, \circfint, \awint, \rppolint, \scpolint, \npolint, \pointnt, \sqint, \intlharhk, \intx, \intcap, \intcup, \upint, \lowint, \zpipe, \ringplus, \plushat, \simplus, \plusdot, \plussim, \plussubtwo, \plustrif, \commaminus, \minusdot, \minusfdots, \minusrdots, \opluslhrim, \oplusrhrim, \vectimes, \dottimes, \timesbar, \btimes, \smashtimes, \otimeslhrim, \otimesrhrim, \otimeshat, \Otimes, \odiv, \triangleplus, \triangleminus, \triangletimes, \intprod, \intprodr, \fcmp, \amalg, \capdot, \uminus, \barcup, \barcap, \capwedge, \cupvee, \twocups, \twocaps, \closedvarcup, \closedvarcap, \Sqcap, \Sqcup, \closedvarcupsmashprod, \wedgeodot, \veeodot, \Wedge, \Vee, \wedgeonwedge, \veeonvee, \bigslopedvee, \bigslopedwedge, \veeonwedge, \wedgemidvert, \veemidvert, \midbarwedge, \midbarvee, \doublebarwedge, \wedgebar, \wedgedoublebar, \varveebar, \doublebarvee, \veedoublebar, \dsub, \rsub, \eqdot, \dotequiv, \equivVert, \equivVvert, \dotsim, \simrdots, \simminussim, \congdot, \asteq, \hatapprox, \approxeqq, \eqqplus, \pluseqq, \eqqsim, \Coloneq, \eqeq, \eqeqeq, \ddotseq, \equivDD, \ltcir, \gtcir, \ltquest, \gtquest, \leqslant, \geqslant, \lesdot, \gesdot, \lesdoto, \gesdoto, \lesdotor, \gesdotol, \lessapprox, \gtrapprox, \lneq, \gneq, \lnapprox, \gnapprox, \lesseqqgtr, \gtreqqless, \lsime, \gsime, \lsimg, \gsiml, \lgE, \glE, \lesges, \gesles, \eqslantless, \eqslantgtr, \elsdot, \egsdot, \eqqless, \eqqgtr, \eqqslantless, \eqqslantgtr, \simless, \simgtr, \simlE, \simgE, \Lt, \Gt, \partialmeetcontraction, \glj, \gla, \ltcc, \gtcc, \lescc, \gescc, \smt, \lat, \smte, \late, \bumpeqq, \preceq, \succeq, \precneq, \succneq, \preceqq, \succeqq, \precneqq, \succneqq, \precapprox, \succapprox, \precnapprox, \succnapprox, \Prec, \Sc, \subsetdot, \supsetdot, \subsetplus, \supsetplus, \submult, \supmult, \subedot, \supedot, \subseteqq, \supseteqq, \subsim, \supsim, \subsetapprox, \supsetapprox, \subsetneqq, \supsetneqq, \lsqhook, \rsqhook, \csub, \csup, \csube, \csupe, \subsup, \supsub, \subsub, \supsup, \suphsub, \supdsub, \forkv, \topfork, \mlcp, \forks, \forksnot, \shortlefttack, \shortdowntack, \shortuptack, \perps, \vDdash, \dashV, \Dashv, \DashV, \varVdash, \Barv, \vBar, \vBarv, \barV, \Vbar, \Not, \bNot, \revnmid, \cirmid, \midcir, \topcir, \nhpar, \parsim, \interleave, \nhVvert, \threedotcolon, \lllnest, \gggnest, \leqqslant, \leqqslant, \talloblong, \squareurblack, \squarellblack, \diamondleftblack, \diamondrightblack, \diamondtopblack, \diamondbotblack, \dottedsquare, \lgblksquare, \lgwhtsquare, \vysmlblksquare, \vysmlwhtsquare, \pentagonblack, \pentagon, \varhexagon, \varhexagonblack, \hexagonblack, \lgblkcircle, \mdblkdiamond, \mdwhtdiamond, \mdblklozenge, \mdwhtlozenge, \smblkdiamond, \smblklozenge, \smwhtlozenge, \blkhorzoval, \whthorzoval, \blkvertoval, \whtvertoval, \circleonleftarrow, \leftthreearrows, \leftarrowonoplus, \longleftsquigarrow, \nvtwoheadleftarrow, \nVtwoheadleftarrow, \twoheadmapsfrom, \twoheadleftdbkarrow, \leftdotarrow, \nvleftarrowtail, \nVleftarrowtail, \twoheadleftarrowtail, \nvtwoheadleftarrowtail, \nVtwoheadleftarrowtail, \leftarrowx, \leftcurvedarrow, \equalleftarrow, \bsimilarleftarrow, \leftarrowbackapprox, \rightarrowgtr, \rightarrowsupset, \LLeftarrow, \RRightarrow, \bsimilarrightarrow, \rightarrowbackapprox, \similarleftarrow, \leftarrowapprox, \leftarrowbsimilar, \righarrowbsimilar, \medwhitestar, \medblackstar, \smwhitestar, \rightpentagonblack, \rightpentagon, \postalmark, \hzigzag, \hiraganano, \textheng, \texthen, \calB, \calE, \calF, \calH, \calM, \calR.
+ at strong{СпеÑиалÑнÑе ÑимволÑ}:
+\# (#), \% (%), \& (&), \^ (^).
+
+\AA (Ã
), \AE (Ã), \APLboxquestion (â°), \APLboxupcaret (â), \APLnotbackslash (â), \APLnotslash (â¿), \Alpha (Î), \And (&), \Angstrom (â«), \Barv (â«§), \BbbC (â), \BbbGamma (â¾), \BbbH (â), \BbbN (â), \BbbP (â), \BbbPi (â¿), \BbbQ (â), \BbbR (â), \BbbZ (â¤), \Bbbgamma (â½), \Bbbpi (â¼), \Bbbsum (â
), \Beta (Î), \Bumpeq (â), \Cap (â), \Chi (Χ), \Colon (â·), \Coloneq (â©´), \Cup (â), \DDownarrow (â±), \DH (Ã), \DJ (Ä), \DashV (â«¥), \DashVDash (â), \Dashv (⫤), \Ddownarrow (â¤), \Delta (Î), \Digamma (Ï), \Doteq (â), \Downarrow (â), \Epsilon (Î), \Equiv (â£), \Eta (Î), \Eulerconst (â), \Exclam (â¼), \Finv (â²), \Game (â
), \Gamma (Î), \Gt (⪢), \Hermaphrodite (â¥), \Im (â), \Iota (Î), \Kappa (Î), \Koppa (Ï), \L (Å), \LLeftarrow (â
), \Lambda (Î), \Lbrbrak (â¬), \Ldsh (â²), \Leftarrow (â), \Leftrightarrow (â), \Lleftarrow (â), \Longleftarrow (â¸), \Longleftrightarrow (âº), \Longmapsfrom (â½), \Longmapsto (â¾), \Longrightarrow (â¹), \Lparengtr (â¦), \Lsh (â°), \Lt (⪡), \Lvzigzag (â§), \Mapsfrom (â¤), \Mapsto (â¤), \Mu (Î), \NG (Å), \Nearrow (â), \Not (⫬), \Nu (Î), \Nwarrow (â), \O (Ã), \OE (Å), \Ohorn (Æ ), \Omega (Ω), \Omicron (Î), \Otimes (⨷), \P (¶), \Phi (Φ), \Pi (Î ), \Planckconst (â), \Prec (⪻), \PropertyLine (â
), \Psi (Ψ), \QED (â), \Question (â), \RRightarrow (â), \Rbrbrak (â), \Rdsh (â³), \Re (â), \Rho (Ρ), \Rightarrow (â), \Rparenless (â¦), \Rrightarrow (â), \Rsh (â±), \Rvzigzag (â§), \S (§), \Sc (⪼), \Searrow (â), \Sigma (Σ), \Sqcap (â©), \Sqcup (â©), \Stigma (Ï), \Subset (â), \Supset (â), \Swarrow (â), \TH (Ã), \Tau (Τ), \Theta (Î), \UUparrow (â°), \Uhorn (Ư), \Uparrow (â), \Updownarrow (â), \Uuparrow (â¤), \VDash (â«), \Vbar (â««), \Vdash (â©), \Vee (â©), \Vert (â), \Vvdash (âª), \Vvert (â¦), \Wedge (â©), \XBox (â), \Xi (Î), \Yup (â
), \Zbar (Ƶ), \Zeta (Î).
+
+\aa (Ã¥), \ac (â¾), \accurrent (â¦), \acidfree (â¾), \acwcirclearrow (â¥), \acwgapcirclearrow (â²), \acwleftarcarrow (⤹), \acwopencirclearrow (âº), \acwoverarcarrow (⤺), \acwundercurvearrow (⤻), \adots (â°), \ae (æ), \aleph (âµ), \alpha (α), \amalg (⨿), \angdnr (â¦), \angle (â ), \angles (â¦), \angleubar (⦤), \approx (â), \approxeq (â), \approxeqq (â©°), \approxident (â), \arceq (â), \aries (â), \assert (â¦), \ast (â), \asteq (â©®), \astrosun (â), \asymp (â), \awint (â¨).
+
+\bNot (â«), \backcong (â), \backdprime (â¶), \backepsilon (϶), \backprime (âµ), \backsim (â½), \backsimeq (â), \backslash (\), \backtrprime (â·), \bagmember (â¿), \barV (⫪), \barcap (â©), \barcup (â©), \bardownharpoonleft (⥡), \bardownharpoonright (â¥), \barleftarrow (â¤), \barleftarrowrightarrowbar (â¹), \barleftharpoondown (â¥), \barleftharpoonup (â¥), \barovernorthwestarrow (â¸), \barrightarrowdiamond (⤠), \barrightharpoondown (â¥), \barrightharpoonup (â¥), \baruparrow (â¤), \barupharpoonleft (â¥), \barupharpoonright (â¥), \barvee (â½), \barwedge (â¼), \bbrktbrk (â¶), \bdHrule (â), \bdVrule (â), \bdbVbH (â¬), \bdbVbh (â«), \bdbVlH (â£), \bdbVlh (â¢), \bdbVrH (â ), \bdbVrh (â), \bdbvbH (âª), \bdbvbh (â¼), \bdbvlH (â¡), \bdbvlh (â¤), \bdbvrH (â), \bdbvrh (â), \bddVbH (â¦), \bddVbh (â¥), \bddVlH (â), \bddVlh (â), \bddVrH (â), \bddVrh (â), \bddvbH (â¤), \bddvbh (â¬), \bddvlH (â), \bddvlh (â), \bddvrH (â), \bddvrh (â), \bdhrule (â), \bdnesw (â±), \bdnwse (â²), \bdquadhdash (â), \bdquadvdash (â), \bdtriplevdash (â), \bduVbH (â©), \bduVbh (â¨), \bduVlH (â), \bduVlh (â), \bduVrH (â), \bduVrh (â), \bduvbH (â§), \bduvbh (â´), \bduvlH (â), \bduvlh (â), \bduvrH (â), \bduvrh (â), \bdvrule (â), \because (âµ), \benzenr (â£), \beta (β), \beth (â¶), \between (â¬), \bigblacktriangledown (â¼), \bigblacktriangleup (â²), \bigbot (â), \bigcap (â), \bigcup (â), \bigslopedvee (â©), \bigslopedwedge (â©), \bigstar (â
), \bigtop (â), \bigtriangledown (â½), \bigtriangleup (â³), \bigvee (â), \bigwedge (â), \bigwhitestar (â), \blackcircledownarrow (â§), \blackcircledrightdot (â), \blackcircledsanseight (â), \blackcircledsansfive (â), \blackcircledsansfour (â), \blackcircledsansnine (â), \blackcircledsansone (â), \blackcircledsansseven (â), \blackcircledsanssix (â), \blackcircledsansten (â), \blackcircledsansthree (â), \blackcircledsanstwo (â), \blackcircledtwodots (â), \blackcircleulquadwhite (â), \blackdiamonddownarrow (⧪), \blackhourglass (â§), \blackinwhitediamond (â), \blackinwhitesquare (â£), \blacklefthalfcircle (â), \blackpointerleft (â), \blackpointerright (âº), \blackrighthalfcircle (â), \blacksmiley (â»), \blacktriangle (â´), \blacktriangledown (â¾), \blacktriangleleft (â), \blacktriangleright (â¶), \blkhorzoval (⬬), \blkvertoval (⬮), \blockfull (â), \blockhalfshaded (â), \blocklefthalf (â), \blocklowhalf (â), \blockqtrshaded (â), \blockrighthalf (â), \blockthreeqtrshaded (â), \blockuphalf (â), \bot (â¥), \botsemicircle (â¡), \bowtie (â), \box (â»), \boxast (â§), \boxbar (â«), \boxbox (â§), \boxbslash (â§
), \boxcircle (â§), \boxdiag (â§), \boxdot (â¡), \boxminus (â), \boxonbox (â§), \boxplus (â), \boxtimes (â ), \bsimilarleftarrow (â), \bsimilarrightarrow (â), \bsolhsub (â), \btimes (⨲), \bullet (â), \bullseye (â), \bumpeq (â), \bumpeqq (⪮).
+
+\calB (â¬), \calE (â°), \calF (â±), \calH (â), \calM (â³), \calR (â), \cap (â©), \capdot (â©), \capwedge (â©), \caretinsert (â¸), \carreturn (â), \carriagereturn (âµ), \ccwundercurvearrow (⤿), \cdot (â
), \cdotp (·), \cdots (â¯), \cdprime (ʺ), \checkmark (â), \chi (Ï), \cirE (â§), \cirbot (â), \circ (â), \circeq (â), \circfint (â¨), \circlebottomhalfblack (â), \circledA (â¶), \circledB (â·), \circledC (â¸), \circledD (â¹), \circledE (âº), \circledF (â»), \circledG (â¼), \circledH (â½), \circledI (â¾), \circledJ (â¿), \circledK (â), \circledL (â), \circledM (â), \circledN (â), \circledO (â), \circledP (â
), \circledQ (â), \circledR (â), \circledS (â), \circledT (â), \circledU (â), \circledV (â), \circledW (â), \circledX (â), \circledY (â), \circledZ (â), \circleda (â), \circledast (â), \circledb (â), \circledbullet (⦿), \circledc (â), \circledcirc (â), \circledd (â), \circleddash (â), \circlede (â), \circledeight (â§), \circledequal (â), \circledf (â), \circledfive (â¤), \circledfour (â£), \circledg (â), \circledh (â), \circledi (â), \circledj (â), \circledk (â), \circledl (â), \circledm (â), \circledn (â), \circlednine (â¨), \circledo (â), \circledone (â ), \circledownarrow (⧬), \circledp (â), \circledparallel (⦷), \circledq (â ), \circledr (â¡), \circledrightdot (â), \circleds (â¢), \circledsanseight (â), \circledsansfive (â), \circledsansfour (â), \circledsansnine (â), \circledsansone (â), \circledsansseven (â), \circledsanssix (â
), \circledsansten (â), \circledsansthree (â), \circledsanstwo (â), \circledseven (â¦), \circledsix (â¥), \circledstar (âª), \circledt (â£), \circledthree (â¢), \circledtwo (â¡), \circledtwodots (â), \circledu (â¤), \circledv (â¥), \circledvert (⦶), \circledw (â¦), \circledwhitebullet (⦾), \circledx (â§), \circledy (â¨), \circledz (â©), \circledzero (âª), \circlehbar (⦵), \circlelefthalfblack (â), \circlellquad (âµ), \circlelrquad (â¶), \circleonleftarrow (⬰), \circleonrightarrow (â´), \circlerighthalfblack (â), \circletophalfblack (â), \circleulquad (â´), \circleurquad (â·), \circleurquadblack (â), \circlevertfill (â), \cirmid (⫯), \cirscir (â§), \clangle (â©), \closedvarcap (â©), \closedvarcup (â©), \closedvarcupsmashprod (â©), \closure (â), \cloverleaf (â), \clubsuit (â£), \colon (:), \colon (â¶), \coloneq (â), \commaminus (⨩), \complement (â), \concavediamond (â¡), \concavediamondtickleft (â¢), \concavediamondtickright (â£), \cong (â
), \congdot (â©), \conictaper (â²), \conjunction (â), \coprod (â), \cprime (ʹ), \crangle (âª), \csub (â«), \csube (â«), \csup (â«), \csupe (â«), \cuberoot (â), \cup (âª), \cupdot (â), \cupleftarrow (â), \cupvee (â©
), \curlyeqprec (â), \curlyeqsucc (â), \curlyvee (â), \curlywedge (â), \curvearrowleft (â¶), \curvearrowleftplus (⤽), \curvearrowright (â·), \curvearrowrightminus (⤼), \cwcirclearrow (â¥), \cwgapcirclearrow (â³), \cwopencirclearrow (â»), \cwrightarcarrow (⤸), \cwundercurvearrow (⤾), \cylcty (â).
+
+\dag (â ), \dagger (â ), \daleth (â¸), \danger (â¡), \dashV (â«£), \dashVdash (â), \dashcolon (â¹), \dashleftharpoondown (⥫), \dashrightharpoondown (â¥), \dashv (â£), \dbkarow (â¤), \ddag (â¡), \ddagger (â¡), \ddots (â±), \ddotseq (â©·), \delta (δ), \dh (ð), \diameter (â), \diamond (â), \diamondbotblack (â¬), \diamondcdot (â), \diamondleftarrow (â¤), \diamondleftarrowbar (â¤), \diamondleftblack (â¬), \diamondrightblack (â¬), \diamondsuit (â¢), \diamondtopblack (â¬), \dicei (â), \diceii (â), \diceiii (â), \diceiv (â), \dicev (â), \dicevi (â
), \digamma (Ï), \dingasterisk (â½), \dircurrent (â), \disin (â²), \div (÷), \divideontimes (â), \dj (Ä), \dlcrop (â), \doteq (â), \dotequiv (â©§), \dotminus (â¸), \dotplus (â), \dots (â¦), \dotsim (⩪), \dotsminusdots (âº), \dottedcircle (â), \dottedsquare (â¬), \dottimes (⨰), \doublebarvee (â©¢), \doublebarwedge (â©), \doubleplus (⧺), \downarrow (â), \downarrowbar (â¤), \downarrowbarred (â¤), \downdasharrow (â£), \downdownarrows (â), \downfishtail (⥿), \downharpoonleft (â), \downharpoonleftbar (â¥), \downharpoonright (â), \downharpoonrightbar (â¥), \downharpoonsleftright (⥥), \downrightcurvedarrow (⤵), \downtriangleleftblack (⧨), \downtrianglerightblack (â§©), \downuparrows (âµ), \downupharpoonsleftright (⥯), \downwhitearrow (â©), \downzigzagarrow (â¯), \dprime (â³), \draftingarrow (â), \drbkarow (â¤), \drcrop (â), \dsol (â§¶), \dsub (⩤), \dualmap (â§).
+
+\earth (â), \egsdot (âª), \eighthnote (âª), \elinters (â§), \ell (â), \elsdot (âª), \emdash (â), \emptyset (â
), \emptysetoarr (⦳), \emptysetoarrl (⦴), \emptysetobar (⦱), \emptysetocirc (⦲), \endash (â), \enleadertwodots (â¥), \envelope (â), \eparsl (â§£), \epsilon (ϵ), \eqcirc (â), \eqcolon (â), \eqdef (â), \eqdot (⩦), \eqeq (⩵), \eqeqeq (â©¶), \eqgtr (â), \eqless (â), \eqqgtr (âª), \eqqless (âª), \eqqplus (⩱), \eqqsim (⩳), \eqqslantgtr (âª), \eqqslantless (âª), \eqsim (â), \eqslantgtr (âª), \eqslantless (âª), \equalleftarrow (â), \equalparallel (â), \equalrightarrow (⥱), \equiv (â¡), \equivDD (⩸), \equivVert (⩨), \equivVvert (â©©), \eqvparsl (â§¥), \errbarblackcircle (â§³), \errbarblackdiamond (â§±), \errbarblacksquare (⧯), \errbarcircle (â§²), \errbardiamond (â§°), \errbarsquare (â§®), \eta (η), \euro (â¬), \exists (â).
+
+\fallingdotseq (â), \fbowtie (â§), \fcmp (⨾), \fdiagovnearrow (⤯), \fdiagovrdiag (⤬), \female (â), \figdash (â), \fint (â¨), \fisheye (â), \flat (â), \fltns (â¥), \forall (â), \forks (â«), \forksnot (â«), \forkv (â«), \fourthroot (â), \fourvdots (â¦), \fracfiveeighths (â
), \fracfivesixths (â
), \fracfourfifths (â
), \fraconeeighth (â
), \fraconefifth (â
), \fraconesixth (â
), \fraconethird (â
), \fracseveneights (â
), \fracslash (â), \fracthreeeighths (â
), \fracthreefifths (â
), \fractwofifths (â
), \fractwothirds (â
), \frakC (â), \frakH (â), \frakZ (â¨), \frown (â¢), \frownie (â¹), \fullouterjoin (â).
+
+\gamma (γ), \ge (â¥), \geq (â¥), \geqq (â§), \geqslant (⩾), \gescc (⪩), \gesdot (âª), \gesdoto (âª), \gesdotol (âª), \gesles (âª), \gets (â), \gg (â«), \ggg (â), \gggnest (⫸), \gimel (â·), \glE (âª), \gla (⪥), \gleichstark (⧦), \glj (⪤), \gnapprox (âª), \gneq (âª), \gneqq (â©), \gnsim (â§), \greater (>), \gsime (âª), \gsiml (âª), \gtcc (⪧), \gtcir (⩺), \gtlpar (⦠), \gtquest (⩼), \gtrapprox (âª), \gtrarr (⥸), \gtrdot (â), \gtreqless (â), \gtreqqless (âª), \gtrless (â·), \gtrsim (â³), \guillemotleft («), \guillemotright (»), \guilsinglleft (â¹), \guilsinglright (âº).
+
+\harrowextender (â¯), \hatapprox (⩯), \hbar (â), \heartsuit (â¡), \hermitmatrix (â¹), \hexagon (â), \hexagonblack (⬣), \hiraganano (ã®), \hknearrow (⤤), \hknwarrow (⤣), \hksearow (⤥), \hkswarow (⤦), \hookleftarrow (â©), \hookrightarrow (âª), \horizbar (â), \hourglass (â§), \house (â), \hrectangle (â), \hrectangleblack (â¬), \hslash (â), \hyphenbullet (â), \hzigzag (ã°).
+
+\iiiint (â¨), \iiint (â), \iinfin (â§), \iint (â¬), \imageof (â·), \in (â), \incare (â
), \increment (â), \infty (â), \int (â«), \intBar (â¨), \intbar (â¨), \intbottom (â¡), \intcap (â¨), \intclockwise (â±), \intcup (â¨), \intercal (âº), \interleave (â«´), \intextender (â®), \intlharhk (â¨), \intprod (⨼), \intprodr (⨽), \inttop (â ), \intx (â¨), \inversebullet (â), \inversewhitecircle (â), \invnot (â), \invwhitelowerhalfcircle (â), \invwhiteupperhalfcircle (â), \iota (ι), \ipasupgamma (Ë ), \ipasupl (Ë¡), \ipasuprerglotstpp (ˤ), \ipasups (Ë¢), \ipasupx (Ë£), \ipaunaspirated (Ë), \ipavoicing (ˬ), \isinE (â¹), \isindot (âµ), \isinobar (â·), \isins (â´), \isinvb (â¸), \itBbbD (â
), \itBbbd (â
), \itBbbe (â
), \itBbbi (â
), \itBbbj (â
).
+
+\jupiter (â), \kappa (κ), \kernelcontraction (â»), \koppa (Ï).
+
+\l (Å), \lAngle (âª), \lBrace (â¦), \lBrack (â¦), \lParen (â¦
), \lambda (λ), \lambdabar (Æ), \langle (â¨), \langledot (â¦), \laplac (â§ ), \lasp (ʽ), \lat (⪫), \late (âª), \lbag (â
), \lblkbrbrak (â¦), \lbrace (@{), \lbracelend (â©), \lbracemid (â¨), \lbraceuend (â§), \lbrack ([), \lbrackextender (â¢), \lbracklend (â£), \lbracklltick (â¦), \lbrackubar (â¦), \lbrackuend (â¡), \lbrackultick (â¦), \lbrbrak (â²), \lceil (â), \lcurvyangle (â§¼), \ldasharrhead (â ), \le (â¤), \leadsto (â), \leftarrow (â), \leftarrowapprox (â), \leftarrowbackapprox (â), \leftarrowbsimilar (â), \leftarrowless (⥷), \leftarrowonoplus (⬲), \leftarrowplus (â¥), \leftarrowshortrightarrow (â¥), \leftarrowsimilar (⥳), \leftarrowsubset (⥺), \leftarrowtail (â¢), \leftarrowtriangle (â½), \leftarrowx (⬾), \leftbkarrow (â¤), \leftcurvedarrow (⬿), \leftdasharrow (â ), \leftdasharrowhead (â¡), \leftdbkarrow (â¤), \leftdbltail (â¤), \leftdotarrow (⬸), \leftdowncurvedarrow (⤶), \leftfishtail (⥼), \leftharpoondown (â½), \leftharpoondownbar (â¥), \leftharpoonsupdown (⥢), \leftharpoonup (â¼), \leftharpoonupbar (â¥), \leftharpoonupdash (⥪), \leftleftarrows (â), \leftmoon (â¾), \leftouterjoin (â), \leftrightarrow (â), \leftrightarrowcircle (â¥), \leftrightarrows (â), \leftrightarrowtriangle (â¿), \leftrightharpoondowndown (â¥), \leftrightharpoondownup (â¥), \leftrightharpoons (â), \leftrightharpoonsdown (⥧), \leftrightharpoonsup (⥦), \leftrightharpoonupdown (â¥), \leftrightharpoonupup (â¥), \leftrightsquigarrow (â), \leftsquigarrow (â), \leftsquigarrow (â), \lefttail (â¤), \leftthreearrows (⬱), \leftthreetimes (â), \leftwhitearrow (â¦), \leq (â¤), \leqq (â¦), \leqqslant (⫹), \leqqslant (⫺), \leqslant (⩽), \lescc (⪨), \lesdot (â©¿), \lesdoto (âª), \lesdotor (âª), \lesges (âª), \less (<), \lessapprox (âª
), \lessdot (â), \lesseqgtr (â), \lesseqqgtr (âª), \lessgtr (â¶), \lesssim (â²), \lfbowtie (â§), \lfloor (â), \lftimes (â§), \lgE (âª), \lgblkcircle (⬤), \lgblksquare (â¬), \lgwhtcircle (â¯), \lgwhtsquare (â¬), \lhd (â²), \linefeed (â´), \ll (âª), \llangle (â¦), \llarc (â), \llblacktriangle (â£), \llcorner (â), \lll (â), \lllnest (â«·), \llparenthesis (â¦), \lltriangle (âº), \lmoustache (â°), \lnapprox (âª), \lneq (âª), \lneqq (â¨), \lnsim (â¦), \longdashv (â), \longdivision (â), \longleftarrow (âµ), \longleftrightarrow (â·), \longleftsquigarrow (⬳), \longmapsfrom (â»), \longmapsto (â¼), \longrightarrow (â¶), \longrightsquigarrow (â¿), \looparrowleft (â«), \looparrowright (â¬), \lowint (â¨), \lozenge (â), \lozengeminus (â ), \lparenextender (â), \lparenlend (â), \lparenless (â¦), \lparenuend (â), \lq (â), \lrarc (â), \lrblacktriangle (â¢), \lrcorner (â), \lrtriangle (â¿), \lrtriangleeq (â§¡), \lsime (âª), \lsimg (âª), \lsqhook (â«), \ltcc (⪦), \ltcir (⩹), \ltimes (â), \ltlarr (⥶), \ltquest (â©»), \ltrivb (â§), \lvboxline (â¸), \lvzigzag (â§).
+
+\male (â), \maltese (â ), \mapsdown (â§), \mapsfrom (â¤), \mapsto (â¦), \mapsup (â¥), \mdblkdiamond (⬥), \mdblklozenge (⬧), \mdblkrcl (â«), \mdblksquare (â¼), \mdlgblkcircle (â), \mdlgblkdiamond (â), \mdlgblklozenge (â§«), \mdlgblksquare (â ), \mdlgwhtcircle (â), \mdlgwhtdiamond (â), \mdlgwhtsquare (â¡), \mdsmblkcircle (â¦), \mdsmblksquare (â¾), \mdsmwhtcircl (â¬), \mdsmwhtsquare (â½), \mdwhtcircl (âª), \mdwhtdiamond (⬦), \mdwhtlozenge (⬨), \mdwhtsquare (â»), \measangledltosw (⦯), \measangledrtose (⦮), \measangleldtosw (⦫), \measanglelutonw (⦩), \measanglerdtose (⦪), \measanglerutone (⦨), \measangleultonw (â¦), \measangleurtone (⦬), \measeq (â), \measuredangle (â¡), \measuredangleleft (â¦), \measuredrightangle (â¾), \medblackstar (â), \medmathspace (â), \medwhitestar (â), \mercury (â¿), \mho (â§), \mid (â£), \midbarvee (â©), \midbarwedge (â©), \midcir (â«°), \minus (â), \minusdot (⨪), \minusfdots (⨫), \minusrdots (⨬), \mlcp (â«), \models (â§), \mp (â), \mu (μ), \multimap (â¸), \multimapinv (â).
+
+\nHdownarrow (â), \nHuparrow (â), \nLeftarrow (â), \nLeftrightarrow (â), \nRightarrow (â), \nVDash (â¯), \nVdash (â®), \nVleftarrow (âº), \nVleftarrowtail (⬺), \nVleftrightarrow (â¼), \nVrightarrow (â»), \nVrightarrowtail (â¤), \nVtwoheadleftarrow (⬵), \nVtwoheadleftarrowtail (⬽), \nVtwoheadrightarrow (â¤), \nVtwoheadrightarrowtail (â¤), \nabla (â), \napprox (â), \nasymp (â), \natural (â®), \ncong (â), \ne (â ), \nearrow (â), \neg (¬), \neovnwarrow (⤱), \neovsearrow (⤮), \neptune (â), \neq (â ), \nequiv (â¢), \neswarrow (⤢), \neuter (â²), \nexists (â), \ng (Å), \ngeq (â±), \ngtr (â¯), \ngtrless (â¹), \ngtrsim (âµ), \nhVvert (⫵), \nhpar (⫲), \ni (â), \niobar (â¾), \nis (â¼), \nisd (âº), \nleftarrow (â), \nleftrightarrow (â®), \nleq (â°), \nless (â®), \nlessgtr (â¸), \nlesssim (â´), \nmid (â¤), \nni (â), \nobreakhyphen (â), \notin (â), \nparallel (â¦), \npolint (â¨), \nprec (â), \npreccurlyeq (â ), \nrightarrow (â), \nsim (â), \nsime (â), \nsqsubseteq (â¢), \nsqsupseteq (â£), \nsubset (â), \nsubseteq (â), \nsucc (â), \nsucccurlyeq (â¡), \nsupset (â
), \nsupseteq (â), \ntriangleleft (âª), \ntrianglelefteq (â¬), \ntriangleright (â«), \ntrianglerighteq (â), \nu (ν), \nvDash (â), \nvLeftarrow (â¤), \nvLeftrightarrow (â¤), \nvRightarrow (â¤), \nvdash (â¬), \nvinfty (â§), \nvleftarrow (â·), \nvleftarrowtail (⬹), \nvleftrightarrow (â¹), \nvrightarrow (â¸), \nvrightarrowtail (â¤), \nvtwoheadleftarrow (⬴), \nvtwoheadleftarrowtail (⬼), \nvtwoheadrightarrow (â¤), \nvtwoheadrightarrowtail (â¤), \nwarrow (â), \nwovnearrow (⤲), \nwsearrow (⤡).
+
+\o (ø), \obar (â½), \obot (⦺), \obrbrak (â ), \obslash (⦸), \odiv (⨸), \odot (â), \odotslashdot (⦼), \oe (Å), \ogreaterthan (â§), \ohorn (Æ¡), \oiiint (â°), \oiint (â¯), \oint (â®), \ointctrclockwise (â³), \olcross (⦻), \oldKoppa (Ï), \oldkoppa (Ï), \olessthan (â§), \omega (Ï), \omicron (ο), \ominus (â), \operp (⦹), \oplus (â), \opluslhrim (â¨), \oplusrhrim (⨮), \origof (â¶), \oslash (â), \otimes (â), \otimeshat (⨶), \otimeslhrim (⨴), \otimesrhrim (⨵), \overbrace (â), \overbracket (â´), \overline (â¾), \overparen (â), \owns (â).
+
+\parallel (â¥), \parallelogram (â±), \parallelogramblack (â°), \parsim (⫳), \partial (â), \partialmeetcontraction (⪣), \pentagon (⬠), \pentagonblack (â¬), \perp (â), \perps (â«¡), \phi (Ï), \phone (â), \pi (Ï), \pitchfork (â), \plusdot (⨥), \pluseqq (⩲), \plushat (⨣), \plussim (⨦), \plussubtwo (⨧), \plustrif (⨨), \pluto (â), \pm (±), \pointnt (â¨), \postalmark (ã), \prec (âº), \precapprox (⪷), \preccurlyeq (â¼), \preceq (⪯), \preceqq (⪳), \precnapprox (⪹), \precneq (⪱), \precneqq (⪵), \precnsim (â¨), \precsim (â¾), \prime (â²), \prod (â), \profalar (â®), \profline (â), \profsurf (â), \propto (â), \prurel (â°), \psi (Ï), \pullback (â), \pushout (â).
+
+\qprime (â), \quarternote (â©), \questeq (â), \quotdblbase (â), \quotdblright (â), \quotsinglbase (â), \quotsinglright (â).
+
+\rAngle (â«), \rBrace (â¦), \rBrack (â§), \rParen (â¦), \rangle (â©), \rangledot (â¦), \rangledownzigzagarrow (â¼), \rasp (ʼ), \rbag (â), \rblkbrbrak (â¦), \rbrace (@}), \rbracelend (â), \rbracemid (â¬), \rbraceuend (â«), \rbrack (]), \rbrackextender (â¥), \rbracklend (â¦), \rbracklrtick (â¦), \rbrackubar (â¦), \rbrackuend (â¤), \rbrackurtick (â¦), \rbrbrak (â³), \rceil (â), \rcurvyangle (â§½), \rdiagovfdiag (⤫), \rdiagovsearrow (⤰), \recorder (â), \revangle (⦣), \revangleubar (⦥), \revemptyset (⦰), \revnmid (â«®), \rfbowtie (â§), \rfloor (â), \rftimes (â§), \rhd (â³), \rho (Ï), \righarrowbsimilar (â), \rightangle (â), \rightanglemdot (â¦), \rightanglesqr (â¦), \rightarrow (â), \rightarrowapprox (⥵), \rightarrowbackapprox (â), \rightarrowbar (â¥), \rightarrowdiamond (â¤), \rightarrowgtr (â), \rightarrowonoplus (â´), \rightarrowplus (â¥
), \rightarrowshortleftarrow (â¥), \rightarrowsimilar (⥴), \rightarrowsupset (â), \rightarrowtail (â£), \rightarrowtriangle (â¾), \rightarrowx (â¥), \rightbkarrow (â¤), \rightcurvedarrow (⤳), \rightdasharrow (â¢), \rightdbltail (â¤), \rightdotarrow (â¤), \rightdowncurvedarrow (⤷), \rightfishtail (⥽), \rightharpoondown (â), \rightharpoondownbar (â¥), \rightharpoonsupdown (⥤), \rightharpoonup (â), \rightharpoonupbar (â¥), \rightharpoonupdash (⥬), \rightimply (⥰), \rightleftarrows (â), \rightleftharpoons (â), \rightleftharpoonsdown (⥩), \rightleftharpoonsup (⥨), \rightmoon (â½), \rightouterjoin (â), \rightpentagon (â), \rightpentagonblack (â), \rightrightarrows (â), \rightsquigarrow (â), \rightsquigarrow (â), \righttail (â¤), \rightthreearrows (â¶), \rightthreetimes (â), \rightwhitearrow (â¨), \ringplus (⨢), \risingdotseq (â), \rmoustache (â±), \rparenextender (â), \rparengtr (â¦), \rparenlend (â ), \rparenuend (â), \rppolint (â¨), \rq (â), \rrangle (â¦), \rrparenthesis (â¦), \rsolbar (â§·), \rsqhook (â«), \rsub (â©¥), \rtimes (â), \rtriltri (â§), \ruledelayed (â§´), \rvboxline (â¹), \rvzigzag (â§).
+
+\sampi (Ï¡), \sansLmirrored (â
), \sansLturned (â
), \saturn (â), \scissors (â), \scpolint (â¨), \scrB (â¬), \scrE (â°), \scrF (â±), \scrH (â), \scrI (â), \scrL (â), \scrM (â³), \scrR (â), \scre (â¯), \scrg (â), \scro (â´), \scurel (â±), \searrow (â), \seovnearrow (â¤), \setminus (â), \setminus (â§µ), \sharp (â¯), \shortdowntack (â«), \shortleftarrow (â), \shortlefttack (â«), \shortrightarrow (â), \shortrightarrowleftarrow (â¥), \shortuptack (â« ), \shuffle (â§¢), \sigma (Ï), \silon (Ï
), \silon (Ï), \sim (â¼), \simeq (â), \simgE (⪠), \simgtr (âª), \similarleftarrow (â), \similarrightarrow (⥲), \simlE (âª), \simless (âª), \simminussim (⩬), \simneqq (â), \simplus (⨤), \simrdots (â©«), \sinewave (â¿), \slash (â), \smallblacktriangleleft (â), \smallblacktriangleright (â¸), \smalldiamond (â), \smallin (â), \smallint (â«), \smallni (â), \smallsetminus (â), \smalltriangleleft (â), \smalltriangleright (â¹), \smashtimes (⨳), \smblkdiamond (⬩), \smblklozenge (⬪), \smblksquare (âª), \smeparsl (⧤), \smile (â£), \smiley (âº), \smt (⪪), \smte (⪬), \smwhitestar (â), \smwhtcircle (â¦), \smwhtlozenge (⬫), \smwhtsquare (â«), \spadesuit (â ), \sphericalangle (â¢), \sphericalangleup (⦡), \sqcap (â), \sqcup (â), \sqint (â¨), \sqlozenge (â), \sqrt (â), \sqrt3 (â), \sqrt4 (â), \sqrtbottom (â·), \sqsubset (â), \sqsubseteq (â), \sqsubsetneq (â¤), \sqsupset (â), \sqsupseteq (â), \sqsupsetneq (â¥), \squarecrossfill (â©), \squaregrayfill (â©), \squarehfill (â¤), \squarehvfill (â¦), \squareleftblack (â§), \squareleftblack (â¨), \squarellblack (â¬), \squarellquad (â±), \squarelrblack (âª), \squarelrquad (â²), \squareneswfill (â¨), \squarenwsefill (â§), \squareulblack (â©), \squareulquad (â°), \squareurblack (â¬), \squareurquad (â³), \squarevfill (â¥), \squoval (â¢), \ss (Ã), \star (â), \stareq (â), \sterling (£), \stigma (Ï), \strns (â¤), \subedot (â«), \submult (â«), \subrarr (⥹), \subset (â), \subsetapprox (â«), \subsetcirc (â), \subsetdot (⪽), \subseteq (â), \subseteqq (â«
), \subsetneq (â), \subsetneqq (â«), \subsetplus (⪿), \subsim (â«), \subsub (â«), \subsup (â«), \succ (â»), \succapprox (⪸), \succcurlyeq (â½), \succeq (⪰), \succeqq (⪴), \succnapprox (⪺), \succneq (⪲), \succneqq (⪶), \succnsim (â©), \succsim (â¿), \sum (â), \sumbottom (â³), \sumint (â¨), \sumtop (â²), \sun (â¼), \supdsub (â«), \supedot (â«), \suphsol (â), \suphsub (â«), \suplarr (⥻), \supmult (â«), \supn (â¿), \supset (â), \supsetapprox (â«), \supsetcirc (â), \supsetdot (⪾), \supseteq (â), \supseteqq (â«), \supsetneq (â), \supsetneqq (â«), \supsetplus (â«), \supsim (â«), \supsub (â«), \supsup (â«), \surd (â), \swarrow (â).
+
+\talloblong (⫾), \target (â), \tau (Ï), \taurus (â), \testhookx (á¶), \textAsterisks (â), \textacute (Ë), \textadvanced (Ë), \textain (Ê¿), \textasciiacute (´), \textasciicircum (^), \textasciidieresis (¨), \textasciigrave (`), \textasciimacron (¯), \textasciitilde (~), \textasterisklow (â), \textbackdprime (â¶), \textbackprime (âµ), \textbacktrprime (â·), \textbardotlessj (É), \textbardotlessjvar (Ê), \textbarglotstop (Ê¡), \textbari (ɨ), \textbarl (Æ), \textbaro (ɵ), \textbarrevglotstop (Ê¢), \textbaru (Ê), \textbeltl (ɬ), \textbenttailyogh (ƺ), \textbreve (Ë), \textbrokenbar (¦), \textbullet (â¢), \textbullseye (Ê), \textcent (¢), \textcircledP (â), \textcloseepsilon (Ê), \textcloseomega (É·), \textcloserevepsilon (É), \textcopyright (©), \textcrb (Æ), \textcrh (ħ), \textcrinvglotstop (ƾ), \textcrlambda (Æ), \textcrtwo (Æ»), \textctc (É), \textctd (È¡), \textctesh (Ê), \textctj (Ê), \textctl (È´), \textctn (ȵ), \textctt (ȶ), \textctyogh (Ê), \textctz (Ê), \textcurrency (¤), \textdctzlig (Ê¥), \textdegree (°), \textdiscount (â), \textdollar ($), \textdotaccent (Ë), \textdotlessj (È·), \textdoubleacute (Ë), \textdoublebarpipe (Ç), \textdoublepipe (Ç), \textdprime (â³), \textdptr (Ë
), \textdyoghlig (ʤ), \textdzlig (Ê£), \textepsilon (É), \textesh (Ê), \textestimated (â®), \textexclam (Ç), \textexclamdown (¡), \textfishhookr (ɾ), \textflorin (Æ), \textfranc (â£), \textgamma (É£), \textglotstop (Ê), \textgrave (Ë), \texthalflength (Ë), \texthamza (ʾ), \texthen (ê§), \textheng (ê§), \texthooks (á¶), \texthookz (á¶), \texthtb (É), \texthtc (Æ), \texthtd (É), \texthtg (É ), \texthth (ɦ), \texththeng (ɧ), \texthtk (Æ), \texthtp (Æ¥), \texthtq (Ê ), \texthtscg (Ê), \texthtt (Æ), \texthvlig (Æ), \texthyphen (â), \textinvglotstop (Ê), \textinvscr (Ê), \textiota (É©), \textlengthmark (Ë), \textlhalfring (Ë), \textlhookd (á¶), \textlhookk (á¶), \textlhookl (á¶
), \textlhookt (Æ«), \textlhti (É¿), \textlira (â¤), \textlonglegr (ɼ), \textlongy (Ê®), \textlongy (ʯ), \textlooptoprevesh (ƪ), \textlowacute (Ë), \textlowered (Ë), \textlowgrave (Ë), \textlowmacron (Ë), \textlptr (Ë), \textltailm (ɱ), \textltailn (ɲ), \textltilde (É«), \textlyoghlig (É®), \textmacron (Ë), \textmu (µ), \textnumero (â), \textogonek (Ë), \textohm (â¦), \textonehalf (½), \textonequarter (¼), \textonesuperior (¹), \textopeno (É), \textordfeminine (ª), \textordmasculine (º), \textovercross (Ë), \textoz (â¥), \textpertenthousand (â±), \textperthousand (â°), \textpesetas (â§), \textphi (ɸ), \textpipe (Ç), \textprime (â²), \textprimstress (Ë), \textqprime (â), \textquestiondown (¿), \textquotedbl ("), \textquotedblleft (â), \textquotedblright (â), \textraised (Ë), \textraiseglotstop (Ë), \textraiserevglotstop (Ë), \textramshorns (ɤ), \textrecipe (â), \textreferencemark (â»), \textregistered (®), \textretracted (Ë), \textreve (É), \textrevepsilon (É), \textrevglotstop (Ê), \textrhalfring (Ë), \textrhookrevepsilon (É), \textrhookschwa (É), \textrhoticity (Ë), \textringaccent (Ë), \textrptr (Ë), \textrtaild (É), \textrtaill (É), \textrtailn (ɳ), \textrtailr (ɽ), \textrtails (Ê), \textrtailt (Ê), \textrtailz (Ê), \textsca (á´), \textscb (Ê), \textsce (á´), \textscg (É¢), \textsch (Ê), \textschwa (É), \textsci (ɪ), \textscl (Ê), \textscn (É´), \textscoelig (ɶ), \textscr (Ê), \textscripta (É), \textscriptg (É¡), \textscriptv (Ê), \textscu (á´), \textscy (Ê), \textsecstress (Ë), \textsemicolonreversed (â), \textsilon (Î¥), \textsmalltilde (Ë), \textstretchcvar (Ê), \textsubw (w), \textsuph (ʰ), \textsuphth (ʱ), \textsupinvscr (ʶ), \textsupj (ʲ), \textsupr (ʳ), \textsupturnr (Ê´), \textsupturnrrtail (ʵ), \textsupw (Ê·), \textsupy (ʸ), \texttctctlig (ʧ), \texttctctlig (ʨ), \textthreequarters (¾), \textthreesuperior (³), \texttrademark (â¢), \texttrprime (â´), \texttslig (ʦ), \textturna (É), \textturncomma (Ê»), \textturnh (É¥), \textturnk (Ê), \textturnlonglegr (ɺ), \textturnm (ɯ), \textturnmrleg (ɰ), \textturnr (ɹ), \textturnrrtail (É»), \textturnscripta (É), \textturnt (Ê), \textturnv (Ê), \textturnw (Ê), \textturny (Ê), \texttwosuperior (²), \textupsilon (Ê), \textuptr (Ë), \textvibyi (Ê
), \textvisiblespace (â£), \textyogh (Ê), \th (þ), \therefore (â´), \thermod (â§§), \theta (θ), \thickapprox (â), \thicksim (â¼), \threedangle (â), \threedotcolon (â«¶), \tieconcat (â), \tieinfty (â§), \times (Ã), \timesbar (⨱), \tminus (â§¿), \to (â), \toea (⤨), \tona (⤧), \tonebarextrahigh (Ë¥), \tonebarextralow (Ë©), \tonebarhigh (˦), \tonebarlow (˨), \tonebarmid (˧), \top (â¤), \topbot (â¶), \topcir (⫱), \topfork (â«), \topsemicircle (â ), \tosa (⤩), \towa (⤪), \tplus (â§¾), \trapezium (â¢), \trianglecdot (â¬), \triangledown (â¿), \triangleexclam (â ), \triangleleft (â), \triangleleftblack (â), \trianglelefteq (â´), \triangleminus (⨺), \triangleodot (â§), \triangleplus (⨹), \triangleq (â), \triangleright (â·), \trianglerightblack (â®), \trianglerighteq (âµ), \triangles (â§), \triangleserifs (â§), \triangletimes (⨻), \triangleubar (â§), \tripleplus (â§»), \trprime (â´), \turnangle (⦢), \turnediota (â©), \turnednot (â), \twocaps (â©), \twocups (â©), \twoheaddownarrow (â¡), \twoheadleftarrow (â), \twoheadleftarrowtail (⬻), \twoheadleftdbkarrow (⬷), \twoheadmapsfrom (⬶), \twoheadmapsto (â¤
), \twoheadrightarrow (â ), \twoheadrightarrowtail (â¤), \twoheaduparrow (â), \twoheaduparrowcircle (â¥), \twolowline (â), \twonotes (â«), \typecolon (â¦).
+
+\ubrbrak (â¡), \uhorn (ư), \ularc (â), \ulblacktriangle (â¤), \ulcorner (â), \ulcrop (â), \ultriangle (â¸), \uminus (â©), \underbrace (â), \underbracket (âµ), \underparen (â), \unlhd (â´), \unrhd (âµ), \upand (â
), \uparrow (â), \uparrowbarred (â¤), \uparrowoncircle (⦽), \updasharrow (â¢), \updownarrow (â), \updownarrowbar (â¨), \updownarrows (â
), \updownharpoonleftleft (â¥), \updownharpoonleftright (â¥), \updownharpoonrightleft (â¥), \updownharpoonrightright (â¥), \updownharpoonsleftright (⥮), \upfishtail (⥾), \upharpoonleft (â¿), \upharpoonleftbar (⥠), \upharpoonright (â¾), \upharpoonrightbar (â¥), \upharpoonsleftright (⥣), \upin (â), \upint (â¨), \uplus (â), \uprightcurvearrow (⤴), \upuparrows (â), \upwhitearrow (â§), \urarc (â), \urblacktriangle (â¥), \urcorner (â), \urcrop (â), \urtriangle (â¹).
+
+\v (Ë), \vBar (⫨), \vBarv (â«©), \vDash (â¨), \vDdash (â«¢), \varTheta (Ï´), \varVdash (⫦), \varbarwedge (â
), \varbeta (Ï), \varclubsuit (â§), \vardiamondsuit (â¦), \vardoublebarwedge (â), \varepsilon (ε), \varheartsuit (â¥), \varhexagon (⬡), \varhexagonblack (⬢), \varhexagonlrbonds (â¬), \varin (â), \varisinobar (â¶), \varisins (â³), \varkappa (ϰ), \varlrtriangle (â¿), \varni (â), \varniobar (â½), \varnis (â»), \varnothing (â
), \varointclockwise (â²), \varphi (Ï), \varpi (Ï), \varpropto (â), \varrho (ϱ), \varrowextender (â), \varsigma (Ï), \varspadesuit (â¤), \varstar (â¶), \vartheta (Ï), \vartriangle (âµ), \vartriangleleft (â²), \vartriangleright (â³), \varveebar (â©¡), \vbraceextender (âª), \vbrtri (â§), \vdash (â¢), \vdots (â®), \vectimes (⨯), \vee (â¨), \veebar (â»), \veedot (â), \veedoublebar (â©£), \veeeq (â), \veemidvert (â©), \veeodot (â©), \veeonvee (â©), \veeonwedge (â©), \vert (|), \viewdata (â), \vlongdash (â), \vrectangle (â¯), \vrectangleblack (â®), \vysmlblksquare (â¬), \vysmlwhtsquare (â¬), \vzigzag (â¦).
+
+\watchicon (â), \wedge (â§), \wedgebar (â©), \wedgedot (â), \wedgedoublebar (â© ), \wedgemidvert (â©), \wedgeodot (â©), \wedgeonwedge (â©), \wedgeq (â), \whitearrowupfrombar (âª), \whiteinwhitetriangle (â), \whitepointerleft (â
), \whitepointerright (â»), \whitesquaretickleft (â¤), \whitesquaretickright (â¥), \whthorzoval (â¬), \whtvertoval (⬯), \wideangledown (⦦), \wideangleup (⦧), \wp (â), \wr (â).
+
+\xbsol (⧹), \xi (ξ), \xsol (⧸), \yen (¥), \zeta (ζ), \zpipe (⨠),
Я ÐУÐУ ÐÐ ÐÐÐÐ ÐÐ ÐÐÐÐТÐÐÐÐ ÐСÐÐ ÐТÐ-ÐÐÐУÐЬ ÐÐ ÐÐÐÐ ÐТ СÐÐТÐÐТСТÐÐÐ ÐСÐÐ¥ ÐÐÐÐ ÐÐ ÐÐÐÐЬÐЫРТÐÐ¥-ÐРСÐÐÐÐÐÐÐ.
diff --git a/texinfo/class_en.texi b/texinfo/class_en.texi
index fdf7d4a..4e822e3 100644
--- a/texinfo/class_en.texi
+++ b/texinfo/class_en.texi
@@ -1,6 +1,5 @@
@c ------------------------------------------------------------------
- at node Plotter classes, Widget classes, MathGL core, Top
@chapter Plotter classes
@cindex mglGraphAB
@cindex mglGraphZB
@@ -43,7 +42,7 @@ Class mglGraphIDTF implements plotting function for 1D, 2D and 3D plots and exp
Generally this class is a bit less abstract class than mglGraph class (@pxref{MathGL core}). It provide many protected methods for handling intermediate data from mglGraph methods and require a few methods to be defined by derived class. The developers of derived classes should look on file @samp{mgl_ab.h} and comments inside it or contact me.
-Here I just show new public methods for class mglGraphAB. There are functions returning the created picture (bitmap), its width and height. You may display it by yourself in any graphical library (see also, @ref{Widget classes}) or save in file (see also, @ref{Export to file}).
+Here I just show main public methods for class mglGraphAB. There are functions returning the created picture (bitmap), its width and height. You may display it by yourself in any graphical library (see also, @ref{Widget classes}) or save in file (see also, @ref{Export to file}).
@deftypefn {Method on @code{mglGraphAB} (C++)} @code{const unsigned char *} GetBits ()
@deftypefnx {Method on @code{mglGraph} (Python)} @code{void} GetRGB (@code{char *}buf, @code{int} size)
@@ -83,7 +82,7 @@ There are some keys handles for manipulating by the plot: 'a', 'd', 'w', 's' for
@end deftypemethod
@deftypemethod mglGraphAB @code{void} Window (@code{int} argc, @code{char **}argv, @code{mglDraw *}draw, @code{const char *}title, @code{bool} maximize=@code{false})
-This function is mostly the same as previous one. The only difference is that the drawing function and function for data reloading are specified as methods on a class inherited from class @code{mglDraw}. This class is defined in @code{#include <mgl/mgl_data.h>} and have only 2 methods:
+This function is mostly the same as previous one. The only difference is that the drawing function and function for data reloading are specified as methods on a class inherited from class @code{mglDraw}. This class is defined in @code{#include <mgl/mgl_define.h>} and have only 2 methods:
@verbatim
class mglDraw
{
@@ -96,43 +95,59 @@ You should inherit yours class from @code{mglDraw} and reimplement one or both f
@end deftypemethod
- at deftypemethod mglGraphAB @code{void} ToggleAlpha ()
+ at deftypefn {Method on @code{mglGraphAB} (C++)} @code{void} ToggleAlpha ()
+ at deftypefnx {C function} @code{int} mgl_wnd_toggle_alpha (@code{HMGL} gr)
Switch on/off transparency but do not overwrite switches in user drawing function.
- at end deftypemethod
- at deftypemethod mglGraphAB @code{void} ToggleLight ()
+ at end deftypefn
+ at deftypefn {Method on @code{mglGraphAB} (C++)} @code{void} ToggleLight ()
+ at deftypefnx {C function} @code{int} mgl_wnd_toggle_light (@code{HMGL} gr)
Switch on/off lighting but do not overwrite switches in user drawing function.
- at end deftypemethod
- at deftypemethod mglGraphAB @code{void} ToggleZoom ()
+ at end deftypefn
+ at deftypefn {Method on @code{mglGraphAB} (C++)} @code{void} ToggleZoom ()
+ at deftypefnx {C function} @code{int} mgl_wnd_toggle_zoom (@code{HMGL} gr)
Switch on/off zooming by mouse as region selection.
- at end deftypemethod
- at deftypemethod mglGraphAB @code{void} ToggleRotate ()
+ at end deftypefn
+ at deftypefn {Method on @code{mglGraphAB} (C++)} @code{void} ToggleRotate ()
+ at deftypefnx {C function} @code{int} mgl_wnd_toggle_rotate (@code{HMGL} gr)
Switch on/off rotation by mouse. Usually, left button is used for rotation, middle button for shift, right button for zoom/perspective.
- at end deftypemethod
- at deftypemethod mglGraphAB @code{void} ToggleNo ()
+ at end deftypefn
+ at deftypefn {Method on @code{mglGraphAB} (C++)} @code{void} ToggleNo ()
+ at deftypefnx {C function} @code{int} mgl_wnd_toggle_no (@code{HMGL} gr)
Switch off all zooming and rotation and restore initial state.
- at end deftypemethod
- at deftypemethod mglGraphAB @code{void} Update ()
+ at end deftypefn
+ at deftypefn {Method on @code{mglGraphAB} (C++)} @code{void} Update ()
+ at deftypefnx {C function} @code{int} mgl_wnd_update (@code{HMGL} gr)
Update window contents.
- at end deftypemethod
- at deftypemethod mglGraphAB @code{void} ReLoad (@code{bool} o)
+ at end deftypefn
+ at deftypefn {Method on @code{mglGraphAB} (C++)} @code{void} ReLoad (@code{bool} o)
+ at deftypefnx {C function} @code{int} mgl_wnd_reload (@code{HMGL} gr, @code{int} val)
Reload user data and update picture.
- at end deftypemethod
- at deftypemethod mglGraphAB @code{void} Adjust ()
+ at end deftypefn
+ at deftypefn {Method on @code{mglGraphAB} (C++)} @code{void} Adjust ()
+ at deftypefnx {C function} @code{int} mgl_wnd_adjust (@code{HMGL} gr)
Adjust size of bitmap to window size.
- at end deftypemethod
- at deftypemethod mglGraphAB @code{void} NextFrame ()
+ at end deftypefn
+ at deftypefn {Method on @code{mglGraphAB} (C++)} @code{void} NextFrame ()
+ at deftypefnx {C function} @code{int} mgl_wnd_next_frame (@code{HMGL} gr)
Show next frame if one.
- at end deftypemethod
- at deftypemethod mglGraphAB @code{void} PrevFrame ()
+ at end deftypefn
+ at deftypefn {Method on @code{mglGraphAB} (C++)} @code{void} PrevFrame ()
+ at deftypefnx {C function} @code{int} mgl_wnd_prev_frame (@code{HMGL} gr)
Show previous frame if one.
- at end deftypemethod
- at deftypemethod mglGraphAB @code{void} Animation ()
-Run/stop slideshow (animation) of frames
- at end deftypemethod
+ at end deftypefn
+ at deftypefn {Method on @code{mglGraphAB} (C++)} @code{void} Animation ()
+ at deftypefnx {C function} @code{int} mgl_wnd_animation (@code{HMGL} gr)
+Run/stop slideshow (animation) of frames.
+ at end deftypefn
+ at deftypefn {C function} @code{int} mgl_wnd_set_auto_clf (@code{HMGL} gr, @code{int} val)
+ at end deftypefn
@deftypecv {Widget option} mglGraphAB @code{bool} AutoClf
Clear canvas between drawing. You may switch it off for accumulate previous drawing (for example some points or parts of a picture).
@end deftypecv
+
+ at deftypefn {C function} @code{int} mgl_wnd_set_delay (@code{HMGL} gr, @code{int} val)
+ at end deftypefn
@deftypecv {Widget option} mglGraphAB @code{float} Delay
Delay for animation in seconds. Default value is 1 sec.
@end deftypecv
@@ -148,780 +163,13 @@ Calculate 3D coordinate @{x,y,z@} for screen point @{xs,ys@}. At this moment it
Calculate screen point @{xs,ys@} for 3D coordinate @{x,y,z@}. The calculation are done for the last used InPlot (@pxref{Transformation matrix}).
@end deftypefn
+ at deftypefn {C function} @code{int} mgl_wnd_set_show_mouse_pos (@code{HMGL} gr, @code{int} val)
+ at end deftypefn
@deftypecv {Widget option} mglGraphAB @code{float} ShowMousePos
Switch to show or not in the widget the last mouse click position.
@end deftypecv
+
@deftypecv {Widget option} mglGraphAB @code{mglPoint} LastMousePos
Last position of mouse click.
@end deftypecv
- at c ------------------------------------------------------------------
- at node Widget classes, mglData class, Plotter classes, Top
- at chapter Widget classes
- at cindex mglGraphFLTK
- at cindex mglGraphQT
- at cindex mglGraphGLUT
- at cindex Fl_MathGL
- at cindex QMathGL
- at cindex window
- at cindex widgets
-
-There are set of ``window'' classes for making a window with MathGL graphics: @code{mglGraphFLTK}, @code{mglGraphQT}, @code{mglGraphGLUT}. All these classes allow user to show, rotate, export, and change view of the plot using keyboard. Most of them (except @code{mglGraphGLUT}) also have toolbar and menu for simplifying plot manipulation. Usually these classes (except @code{mglGraphGLUT}) are derived from @code{mglGraphZB} class and have a ``connected'' class for widget in corresponding window library. All window classes have the same set of functions (@pxref{mglGraphAB class}). Below the full list of classes with short comments.
-
- at deftp {Class} mglGraphFLTK
-Class @code{mglGraphFLTK} adds the possibility to create plotting window with the help of FLTK library. It allows one to show, rotate, export, and change view of the plot by keyboard, menu and toolbar. ``Corresponding'' widget class is @code{Fl_MathGL}. Class is defined in @code{#include <mgl/mgl_fltk.h>}.
- at end deftp
-
- at deftp {Class} Fl_MathGL
-Class is FLTK widget for displaying the MathGL output. Class is defined in @code{#include <mgl/mgl_fltk.h>}.
- at end deftp
-
- at deftp {Class} mglGraphQT
-Class @code{mglGraphQT} adds the possibility to create plotting window with the help of QT library. It allows one to show, rotate, export, and change view of the plot by keyboard, menu and toolbar. ``Corresponding'' widget class is @code{QMathGL}. Class is defined in @code{#include <mgl/mgl_qt.h>}.
- at end deftp
-
- at deftp {Class} QMathGL
-Class is Qt widget for dysplaying the MathGL output. Class is defined in @code{#include <mgl/mgl_qt.h>}.
- at end deftp
-
- at deftp {Class} mglGraphGLUT
-Class @code{mglGraphGLUT} adds the possibility to create plotting window with the help of GLUT library. It allows one to show, rotate, export, and change view of the plot only by keyboard. Class is defined in @code{#include <mgl/mgl_glut.h>}.
- at end deftp
-
- at menu
-* Fl_MathGL class::
-* QMathGL class::
- at end menu
-
- at c ------------------------------------------------------------------
- at node Fl_MathGL class, QMathGL class, , Widget classes
- at section Fl_MathGL class
- at cindex Fl_MathGL
- at cindex widgets
-
-Class is FLTK widget which display MathGL graphics (defined in @code{#include <mgl/mgl_fltk.h>}
-
- at deftypemethod Fl_MathGL @code{void} set_draw (@code{mglDraw *}dr)
-Sets drawing function from a class inherited from @code{mglDraw}.
- at end deftypemethod
- at deftypemethod Fl_MathGL @code{void} update (@code{mglGraph *}gr=@code{NULL})
-Update (redraw) plot using grapher @var{gr} (built-in by default).
- at end deftypemethod
- at deftypemethod Fl_MathGL @code{void} set_angle (@code{float} t, @code{float} p)
-Set angles for additional plot rotation
- at end deftypemethod
- at deftypemethod Fl_MathGL @code{void} set_state (@code{int} f)
-Set bitwise flags for general state (1-Alpha, 2-Light)
- at end deftypemethod
- at deftypemethod Fl_MathGL @code{void} set_state (@code{bool} z, @code{bool} r)
-Set flags for handling mouse: @var{z}=@code{true} allow zooming, @var{r}=@code{true} allow rotation/shifting/perspective and so on.
- at end deftypemethod
- at deftypemethod Fl_MathGL @code{void} set_zoom (@code{float} X1, @code{float} Y1, @code{float} X2, @code{float} Y2)
-Set zoom in/out region
- at end deftypemethod
- at deftypemethod Fl_MathGL @code{void} get_zoom (@code{float *}X1, @code{float *}Y1, @code{float *}X2, @code{float *}Y2)
-Get zoom in/out region
- at end deftypemethod
- at deftypemethod Fl_MathGL @code{void} set_popup (@code{const Fl_Menu_Item *}pmenu, @code{Fl_Widget *}w, @code{void *}v)
-Set popup menu pointer
- at end deftypemethod
- at deftypemethod Fl_MathGL @code{mglGraph *} get_graph ()
-Get pointer to grapher
- at end deftypemethod
-
- at deftypecv {Widget option} Fl_MathGL @code{Fl_Valuator *} tet_val
-Pointer to external tet-angle validator.
- at end deftypecv
- at deftypecv {Widget option} Fl_MathGL @code{Fl_Valuator *} phi_val
-Pointer to external phi-angle validator.
- at end deftypecv
- at deftypecv {Widget option} Fl_MathGL @code{mglGraphAB *} graph
-Pointer to grapher
- at end deftypecv
- at deftypecv {Widget option} Fl_MathGL @code{void *} draw_par
-Parameters for drawing function mglGraph::DrawFunc.
- at end deftypecv
- at deftypecv {Widget option} Fl_MathGL @code{int (*} draw_func @code{)(mglGraph *gr, void *par)}
-Drawing function for window procedure. It should return the number of frames.
- at end deftypecv
-
- at c ------------------------------------------------------------------
- at node QMathGL class, , Fl_MathGL class, Widget classes
- at section QMathGL class
- at cindex QMathGL
- at cindex widgets
-
-Class is Qt widget which display MathGL graphics (defined in @code{#include <mgl/mgl_qt.h>}
-
- at deftypemethod QMathGL @code{double} getRatio ()
-Return aspect ratio of the picture.
- at end deftypemethod
-
- at deftypemethod QMathGL @code{void} setDraw (@code{mglDraw *}dr)
-Sets drawing functions from a class inherited from @code{mglDraw}.
- at end deftypemethod
- at deftypemethod QMathGL @code{void} setDraw (@code{int (*}draw)(@code{mglGraph *}gr, @code{void *}p), @code{void *}par=@code{NULL})
-Sets the drawing function @var{draw}. There is support of a list of plots (frames). So as one can prepare a set of frames at first and redraw it fast later (but it requires more memory). Function should return positive number of frames for the list or zero if it will plot directly. Parameter @var{par} contains pointer to data for the plotting function @var{draw}.
- at end deftypemethod
-
- at deftypemethod QMathGL @code{void} setGraph (@code{mglGraphAB *}gr)
-Set pointer to external grapher (instead of built-in @code{mglGraphZB}). Note that QMathGL will automatically delete this object at destruction or at new @code{setGraph()} call.
- at end deftypemethod
-
- at deftypemethod QMathGL @code{void} setPopup (@code{QMenu *}p)
-Set popup menu pointer.
- at end deftypemethod
- at deftypemethod QMathGL @code{void} setSize (@code{int} w, @code{int} h)
-Set widget/picture sizes
- at end deftypemethod
- at deftypemethod QMathGL @code{double} getRatio ()
-Return aspect ratio of the picture.
- at end deftypemethod
-
- at deftypemethod QMathGL @code{int} getPer ()
-Get perspective value in percents.
- at end deftypemethod
- at deftypemethod QMathGL @code{int} getPhi ()
-Get Phi-angle value in degrees.
- at end deftypemethod
- at deftypemethod QMathGL @code{int} getTet ()
-Get Theta-angle value in degrees.
- at end deftypemethod
- at deftypemethod QMathGL @code{bool} getAlpha ()
-Get transparency state.
- at end deftypemethod
- at deftypemethod QMathGL @code{bool} getLight ()
-Get lightning state.
- at end deftypemethod
- at deftypemethod QMathGL @code{bool} getZoom ()
-Get mouse zooming state.
- at end deftypemethod
- at deftypemethod QMathGL @code{bool} getRotate ()
-Get mouse rotation state.
- at end deftypemethod
-
- at defop Slot QMathGL @code{void} refresh ()
-Redraw saved bitmap without executing drawing function.
- at end defop
- at defop Slot QMathGL @code{void} update (@code{mglGraph *}gr=@code{NULL})
-Update picture by executing drawing function.
- at end defop
- at defop Slot QMathGL @code{void} copy ()
-Copy graphics to clipboard.
- at end defop
- at defop Slot QMathGL @code{void} setPer (@code{int} val)
-Set perspective value.
- at end defop
- at defop Slot QMathGL @code{void} setPhi (@code{int} val)
-Set Phi-angle value.
- at end defop
- at defop Slot QMathGL @code{void} setTet (@code{int} val)
-Set Theta-angle value.
- at end defop
- at defop Slot QMathGL @code{void} setAlpha (@code{bool} val)
-Switch on/off transparency.
- at end defop
- at defop Slot QMathGL @code{void} setLight (@code{bool} val)
-Switch on/off lightning.
- at end defop
- at defop Slot QMathGL @code{void} setZoom (@code{bool} val)
-Switch on/off mouse zooming.
- at end defop
- at defop Slot QMathGL @code{void} setRotate (@code{bool} val)
-Switch on/off mouse rotation.
- at end defop
- at defop Slot QMathGL @code{void} zoomIn ()
-Zoom in graphics.
- at end defop
- at defop Slot QMathGL @code{void} zoomOut ()
-Zoom out graphics.
- at end defop
- at defop Slot QMathGL @code{void} restore ()
-Restore zoom and rotation to default values.
- at end defop
- at defop Slot QMathGL @code{void} reload ()
-Reload data and execute script.
- at end defop
- at defop Slot QMathGL @code{void} shiftLeft ()
-Shift graphics to left direction.
- at end defop
- at defop Slot QMathGL @code{void} shiftRight ()
-Shift graphics to right direction.
- at end defop
- at defop Slot QMathGL @code{void}shiftUp ()
-Shift graphics to up direction.
- at end defop
- at defop Slot QMathGL @code{void} shiftDown ()
-Shift graphics to down direction.
- at end defop
- at defop Slot QMathGL @code{void} exportPNG (@code{QString} fname=@code{""})
-Export current picture to PNG file.
- at end defop
- at defop Slot QMathGL @code{void} exportPNGs (@code{QString} fname=@code{""})
-Export current picture to PNG file (no transparency).
- at end defop
- at defop Slot QMathGL @code{void} exportJPG (@code{QString} fname=@code{""})
-Export current picture to JPEG file.
- at end defop
- at defop Slot QMathGL @code{void} exportBPS (@code{QString} fname=@code{""})
-Export current picture to bitmap EPS file.
- at end defop
- at defop Slot QMathGL @code{void} exportEPS (@code{QString} fname=@code{""})
-Export current picture to vector EPS file.
- at end defop
- at defop Slot QMathGL @code{void} exportSVG (@code{QString} fname=@code{""})
-Export current picture to SVG file.
- at end defop
- at defop Slot QMathGL @code{void} exportIDTF (@code{QString} fname=@code{""})
-Export current picture to IDTF file.
- at end defop
- at defop Slot QMathGL @code{void} setMGLFont (@code{QString} path)
-Restore (@var{path}=@code{""} or load font for graphics.
- at end defop
- at defop Slot QMathGL @code{void} print ()
-Print current picture
- at end defop
- at defop Slot QMathGL @code{void} adjust ()
-Adjust plot size to fill entire window. This function is executed only if graph is mglGraphQT instance.
- at end defop
- at defop Slot QMathGL @code{void} nextSlide ()
-Show next slide. This function is executed only if graph is mglGraphQT instance.
- at end defop
- at defop Slot QMathGL @code{void} prevSlide ()
-Show previous slide. This function is executed only if graph is mglGraphQT instance.
- at end defop
- at defop Slot QMathGL @code{void} animation (@code{bool} st=@code{true})
-Start animation. This function is executed only if graph is mglGraphQT instance.
- at end defop
- at defop Slot QMathGL @code{void} about ()
-Show about information.
- at end defop
- at defop Slot QMathGL @code{void} aboutQt ()
-Show information about Qt version.
- at end defop
-
- at defop Signal QMathGL @code{void} phiChanged (@code{int} val)
-Phi angle changed (by mouse or by toolbar).
- at end defop
- at defop Signal QMathGL @code{void} tetChanged (@code{int} val)
-Tet angle changed (by mouse or by toolbar).
- at end defop
- at defop Signal QMathGL @code{void} perChanged (@code{int} val)
-Perspective changed (by mouse or by toolbar).
- at end defop
- at defop Signal QMathGL @code{void} alphaChanged (@code{bool} val)
-Transparency changed (by toolbar).
- at end defop
- at defop Signal QMathGL @code{void} lightChanged (@code{bool} val)
-Lighting changed (by toolbar).
- at end defop
- at defop Signal QMathGL @code{void} zoomChanged (@code{bool} val)
-Zooming changed (by toolbar).
- at end defop
- at defop Signal QMathGL @code{void} rotateChanged (@code{bool} val)
-Rotation changed (by toolbar).
- at end defop
-
- at deftypecv {Widget option} QMathGL @code{QString} appName
-Application name for message boxes.
- at end deftypecv
- at deftypecv {Widget option} QMathGL @code{bool} autoResize
-Allow auto resizing (default is false).
- at end deftypecv
- at deftypecv {Widget option} QMathGL @code{int} animDelay
-Animation delay in ms.
- at end deftypecv
-
-
-
- at c ------------------------------------------------------------------
- at c @node mglData class, Other classes, Widget classes, Top
- at c @chapter mglData class
-
- at include data_en.texi
-
-
-
- at c ------------------------------------------------------------------
- at node Other classes, MGL interface, mglData class, Top
- at chapter Other classes
-
- at menu
-* mglParse class::
-* mglFormula class::
-* mglFont class::
-* mglColor class::
-* mglPoint class::
-* mglVar class::
-* mglCommand class::
-* mglArg class::
- at end menu
-
- at c ------------------------------------------------------------------
- at node mglParse class, mglFormula class, , Other classes
- at section mglParse class
- at cindex mglParse
-
-Class for parsing and executing MGL script. This class is defined in @code{#include <mgl/mgl_parse.h>}.
-
-Class mglParse is the interpreter for MGL scripts (@pxref{MGL interface}). The main function of mglParse class is @code{Parse()}. Exactly this function parses and executes the script string-by-string. Also there are two subservient functions for the finding and creation of a variable. These functions can be useful for displaying values of variables (arrays) in some external program (in window, for example). The variable @var{DataList} contains full list of variables in script. Flag @var{AllowSetSize} allows one to prevent changing the size of the picture inside the script (forbids the MGL command @code{setsize}).
-
-Note an important feature -- if user defines function @var{func} in variable then it will be called before the destroying of this variable (@pxref{mglVar class}).
-
- at deftypefn {Method on @code{mglParse} (C++, Python)} @code{} mglParse (@code{bool} setsize=@code{false})
- at deftypefnx {C function} @code{HMPR} mgl_create_parser ()
-Constructor initializes all values with zero and set @var{AllowSetSize} value.
- at end deftypefn
-
- at deftypefn {Method on @code{mglParse} (C++, Python)} @code{} ~mglParse ()
- at deftypefnx {C function} @code{void} mgl_delete_parser (@code{HMPR} p)
-Destructor delete parser
- at end deftypefn
-
- at deftypefn {Method on @code{mglParse} (C++, Python)} @code{int} Parse (@code{mglGraph *}gr, @code{const char *}str, @code{long} pos=@code{0})
- at deftypefnx {Method on @code{mglParse} (C++)} @code{int} Parse (@code{mglGraph *}gr, @code{const wchar_t *}str, @code{long} pos=@code{0})
- at deftypefnx {C function} @code{int} mgl_parse (@code{HMGL} gr, @code{HMPR} p, @code{const char *}str, @code{int} pos)
- at deftypefnx {C function} @code{int} mgl_parsew (@code{HMGL} gr, @code{HMPR} p, @code{const wchar_t *}str, @code{int} pos)
-Main function in the class. It parses the string @var{str} and executes it by using @var{gr} as a graphics plotter. Returns the value depending on an error presence in the string @var{str}: 0 -- no error, 1 -- wrong command argument(s), 2 -- unknown command, 3 -- string is too long. Optional argument @var{pos} allows to save the string position in the document (or file) for using @code{for|next} command.
- at end deftypefn
-
- at deftypefn {Method on @code{mglParse} (C++)} @code{int} Export (@code{wchar_t} cpp_out at code{[1024]}, @code{mglGraph *}gr, @code{const wchar_t *}str)
-Function parses the string @var{str}, executes it by using @var{gr} as a graphics plotter and exports it to C++ code. Returns the value depending on an error presence in the string @var{str}: 0 -- no error, 1 -- wrong command argument(s), 2 -- unknown command, 3 -- string is too long. Output C++ text will be placed in @var{out} variable. If string @var{str} have options (defined after ';' symbol) then the corresponding C++ texts are placed in variables @var{op1}, @var{op2}.
- at end deftypefn
-
- at deftypefn {Method on @code{mglParse} (C++)} @code{void} Execute (@code{mglGraph *}gr, @code{FILE *}fp, @code{bool} print=@code{false})
-Function parse and execute line-by-line MGL script in file @var{fp}. If @var{print}=@code{true} then all warnings and information will be printed in stdout. Also this function support the @code{for|next} MGL commands.
- at end deftypefn
- at deftypefn {Method on @code{mglParse} (C++)} @code{void} Execute (@code{mglGraph *}gr, @code{int} num, @code{const wchar_t **}text, @code{void (*} error @code{)(int line, int kind)=NULL})
-Function parse and execute line-by-line MGL script in array @var{text}. If @var{error} is not @code{NULL} then this function will be called for all warnings, information and other messages. Also this function support the @code{for|next} MGL commands.
- at end deftypefn
-
- at deftypefn {Method on @code{mglParse} (C++, Python)} @code{void} Execute (@code{mglGraph *}gr, @code{const char *}text, @code{void (*} error @code{)(int line, int kind)=NULL})
- at deftypefnx {Method on @code{mglParse} (C++)} @code{void} Execute (@code{mglGraph *}gr, @code{const wchar_t *}text, @code{void (*} error @code{)(int line, int kind)=NULL})
- at deftypefnx {C function} @code{void} mgl_parse_text (@code{HMGL} gr, @code{HMPR} p, @code{const char *}text)
- at deftypefnx {C function} @code{void} mgl_parsew_text (@code{HMGL} gr, @code{HMPR} p, @code{const wchar_t *}text)
-Function parse and execute line-by-line MGL script in string @var{text}. Lines are separated by @samp{\n} symbol as usual. If @var{error} is not @code{NULL} then this function will be called for all warnings, information and other messages. Also this function support the @code{for|next} MGL commands.
- at end deftypefn
-
- at deftypefn {Method on @code{mglParse} (C++, Python)} @code{bool} AddParam (@code{int} n, @code{const char *}str, @code{bool} isstr=@code{true})
- at deftypefnx {Method on @code{mglParse} (C++)} @code{bool} AddParam (@code{int} n, @code{const wchar_t *}str, @code{bool} isstr=@code{true})
- at deftypefnx {C function} @code{void} mgl_add_param (@code{HMPR} p, @code{int} id, @code{const char *}val)
- at deftypefnx {C function} @code{void} mgl_add_paramw (@code{HMPR} p, @code{int} id, @code{const wchar_t *}val)
-Function set the value of @var{n}-th parameter as string @var{str} (@var{n}=0, 1 ... 9). It return @code{true} for success.
- at end deftypefn
-
- at deftypefn {Method on @code{mglParse} (C++, Python)} @code{mglVar *} FindVar (@code{const char *}name)
- at deftypefnx {Method on @code{mglParse} (C++)} @code{mglVar *} FindVar (@code{const wchar_t *}name)
- at deftypefnx {C function} @code{const HMDT} mgl_find_var (@code{HMPR} p, @code{const char *}name)
-Function returns the pointer to variable with name @var{name} or zero if variable is absent. Use this function to put external data array to the script or get the data from the script.
- at end deftypefn
- at deftypefn {Method on @code{mglParse} (C++, Python)} @code{mglVar *} AddVar (@code{const char *}name)
- at deftypefnx {Method on @code{mglParse} (C++)} @code{mglVar *} AddVar (@code{const wchar_t *}name)
- at deftypefnx {C function} @code{const HMDT} mgl_add_var (@code{HMPR} p, @code{const char *}name)
-Function returns the pointer to variable with name @var{name}. If variable is absent then new variable is created with name @var{name}. Use this function to put external data array to the script or get the data from the script.
- at end deftypefn
-
- at deftypefn {Method on @code{mglParse} (C++)} @code{void} DeleteVar (@code{mglVar *}v)
- at deftypefnx {Method on @code{mglParse} (C++)} @code{void} DeleteVar (@code{const char *}name)
- at deftypefnx {Method on @code{mglParse} (C++)} @code{void} DeleteVar (@code{const wchar_t *}name)
-Function delete the variable specified by its name or by its pointer.
- at end deftypefn
-
- at deftypefn {Method on @code{mglParse} (C++, Python)} @code{inline void} RestoreOnce ()
- at deftypefnx {C function} @code{void} mgl_restore_once (@code{HMPR} p)
-Restore Once flag.
- at end deftypefn
-
- at deftypefn {Method on @code{mglParse} (Python)} @code{void} AllowSetSize (@code{bool} a)
- at deftypefnx {C function} @code{void} mgl_parser_allow_setsize (@code{HMPR} p, @code{int} a)
-Allow to parse 'setsize' command or not.
- at end deftypefn
-
- at deftypefn {Method on @code{mglParse} (C++)} @code{void} AddCommand (@code{mglCommand *}cmd, @code{int} num=@code{0})
-Add @var{num} commands @var{cmd} to the defined MGL commands list. Parameter @var{cmd} is array of @code{mglCommand} structures. If parameter @var{num}=0 then it will be determined automatically. At this, array @var{cmd} @strong{must have} last element with @code{name=L""}
- at end deftypefn
-
- at deftypecv {Option} mglParse @code{mglVar *} DataList
-List of variables defined in script.
- at end deftypecv
- at deftypecv {Option} mglParse @code{bool} AllowSetSize
-Flag which allows/forbids the command @code{setsize} in scripts.
- at end deftypecv
- at deftypecv {Option} mglParse @code{bool} Stop
-Flag which interrupt script execution.
- at end deftypecv
- at deftypecv {Option} mglParse @code{mglCommand *} Cmd
-Table (array) of recognizable MGL commands (can be changed by user). Items in the table @strong{MUST be sorted} by @var{name} field !!! Last items must have empty name (i.e. @code{L""}).
- at end deftypecv
- at deftypecv {Option} mglParse @code{wchar_t *} op1
-These strings contain command options and should be placed before the command. These variables are used for MGL->C++ (or other language) conversion.
- at end deftypecv
- at deftypecv {Option} mglParse @code{wchar_t *} op2
-These strings contain command options and should be placed after the command. These variables are used for MGL->C++ (or other language) conversion.
- at end deftypecv
-
- at c ------------------------------------------------------------------
- at node mglFormula class, mglFont class, mglParse class, Other classes
- at section mglFormula class
- at cindex mglFormula
-
-Class for evaluating of formula specified by the string. This class is defined in @code{#include <mgl/mgl_eval.h>}.
-
-It is the fast variant of formula evaluation. At creation it will be recognized and compiled to tree-like internal code. At evaluation stage only fast calculations are performed. There is no difference between lower or upper case in formulas. If argument value lie outside the range of function definition then function returns NaN.
-
-There are a lot of functions and operators available. The operators are: @samp{+} -- addition, @samp{-} -- subtraction, @samp{*} -- multiplication, @samp{/} -- division, @samp{^} -- integer power. Also there are logical ``operators'': @samp{<} -- true if x<y, @samp{>} -- true if x>y, @samp{=} -- true if x=y, @samp{&} -- true if x and y both nonzero, @samp{|} -- true if x or y nonzero. These logical operators have lowest priority and return 1 if true or 0 if false.
-
-The basic functions are: @samp{sqrt(x)} -- square root of @var{x}, @samp{pow(x,y)} power @var{x} in @var{y}, @samp{ln(x)} -- natural logarithm of @var{x}, @samp{lg(x)} -- decimal logarithm of @var{x}, @samp{log(a,x)} -- logarithm base @var{a} of @var{x}, @samp{abs(x)} -- absolute value of @var{x}, @samp{sign(x)} -- sign of @var{x}, @samp{mod(x,y)} -- x modulo y, @samp{step(x)} -- step function, @samp{rnd} -- random number, @samp{pi} -- number @math{\pi=3.1415926...}.
-
-Trigonometric functions are: @samp{sin(x)}, @samp{cos(x)}, @samp{tan(x)} (or @samp{tg(x)}). Inverse trigonometric functions are: @samp{asin(x)}, @samp{acos(x)}, @samp{atan(x)}. Hyperbolic functions are: @samp{sinh(x)} (or @samp{sh(x)}), @samp{cosh(x)} (or @samp{ch(x)}), @samp{tanh(x)} (or @samp{th(x)}). Inverse hyperbolic functions are: @samp{asinh(x)}, @samp{acosh(x)}, @samp{atanh(x)}.
-
-There are a set of special functions: @samp{gamma(x)} -- Gamma function @math{\Gamma(x) = \int_0^\infty dt t^@{x-1@} \exp(-t)} , @samp{psi(x)} -- digamma function @math{\psi(x) = \Gamma'(x)/\Gamma(x)} for x!=0, @samp{ai(x)} -- Airy function Ai(x), @samp{bi(x)} -- Airy function Bi(x), @samp{cl(x)} -- Clausen function, @samp{li2(x)} (or @samp{dilog(x)}) -- dilogarithm @math{Li_2(x) = - \Re \int_0^x ds \log(1-s)/s}, @samp{sinc(x)} -- compute @math{sinc(x) = \sin(\pi x) / (\pi x)} for any value of x, @samp{zeta(x)} -- Riemann zeta function @math{\zeta(s) = \sum_@{k=1@}^\infty k^@{-s@}} for arbitrary s!=1, @samp{eta(x)} -- eta function @math{\eta(s) = (1-2^@{1-s@}) \zeta(s)} for arbitrary s, @samp{lp(l,x)} -- Legendre polynomial @math{P_l(x)}, (|x|<=1, l>=0), @samp{w0(x)} -- principal branch of the Lambert @var{W} function, @samp{w1(x)} -- principal branch of the Lambert @var{W} function. Function W(x) is defined to be solution of the equation @math{W \exp(W) = x}.
-
-The exponent integrals are: @samp{ci(x)} -- Cosine integral @math{Ci(x) = \int_0^x dt \cos(t)/t}, @samp{si(x)} -- Sine integral @math{Si(x) = \int_0^x dt \sin(t)/t}, @samp{erf(x)} -- error function @math{erf(x) = (2/\sqrt(\pi)) \int_0^x dt \exp(-t^2)}, @samp{ei(x)} -- exponential integral @math{Ei(x) := - PV(\int_@{-x@}^\infty dt \exp(-t)/t)} (where PV denotes the principal value of the integral), @samp{e1(x)} -- exponential integral @math{E_1(x) := Re \int_1^\infty dt \exp(-xt)/t} , @samp{e2(x)} -- exponential integral @math{E_2(x) := Re \int_1^\infty dt \exp(-xt)/t^2}, @samp{ei3(x)} -- exponential integral @math{Ei_3(x) = \int_0^x dt \exp(-t^3)} for x>=0.
-
-Bessel functions are: @samp{j(nu,x)} -- regular cylindrical Bessel function of fractional order @var{nu}, @samp{y(nu,x)} -- irregular cylindrical Bessel function of fractional order @var{nu}, @samp{i(nu,x)} -- regular modified Bessel function of fractional order @var{nu}, @samp{k(nu,x)} -- irregular modified Bessel function of fractional order @var{nu}.
-
-Elliptic integrals are: @samp{ee(k)} -- complete elliptic integral is denoted by @math{E(k) = E(\pi/2, k)}, @samp{ek(k)} -- complete elliptic integral is denoted by @math{K(k) = F(\pi/2, k)}, @samp{e(phi,k)} -- elliptic integral @math{E(\phi,k) = \int_0^\phi dt \sqrt((1 - k^2 \sin^2(t)))}, @samp{f(phi,k)} -- elliptic integral @math{F(\phi,k) = \int_0^\phi dt 1/\sqrt((1 - k^2 \sin^2(t)))}.
-
-Jacobi elliptic functions are: @samp{sn(u,m)}, @samp{cn(u,m)}, @samp{dn(u,m)}, @samp{sc(u,m)}, @samp{sd(u,m)}, @samp{ns(u,m)}, @samp{cs(u,m)}, @samp{cd(u,m)}, @samp{nc(u,m)}, @samp{ds(u,m)}, @samp{dc(u,m)}, @samp{nd(u,m)}.
-
-Note, some of these functions are unavailable if NO\_GSL is defined during compilation of MathGL library.
-
- at deftypemethod mglFormula @code{} mglFormula (@code{const char *}str)
-Parses the formula @var{str} and creates formula-tree. Constructor recursively parses the formula and creates a tree-like structure containing functions and operators for fast further evaluating by @code{Calc()} or @code{CalcD()} functions.
- at end deftypemethod
- at deftypemethod mglFormula @code{float} Calc (@code{float} x, @code{float} y=@code{0}, @code{float} z=@code{0}, @code{float} u=@code{0})
-Evaluates the formula for @code{'x','r'}=@var{x}, @code{'y','n'}=@var{y}, @code{'z','t'}=@var{z}, @code{'a','u'}=@var{u}. Error code (if one) can be obtained from function @code{GetError()}.
- at end deftypemethod
- at deftypemethod mglFormula @code{float} Calc (@code{float} x, @code{float} y, @code{float} z, @code{float} u, @code{float} v, @code{float} w)
-Evaluates the formula for @code{'x'}=@var{x}, @code{'y'}=@var{y}, @code{'z'}=@var{z}, @code{'u'}=@var{u}, @code{'v'}=@var{v}, @code{'w'}=@var{w}. Error code (if one) can be obtained from function @code{GetError()}.
- at end deftypemethod
- at deftypemethod mglFormula @code{float} Calc (@code{float} var at code{['z'-'a'+1]})
-Evaluates the formula for variables in array @var{var}['z'-'a']. Error code (if one) can be obtained from function @code{GetError()}.
- at end deftypemethod
- at deftypemethod mglFormula @code{float} CalcD (@code{float} var at code{['z'-'a'+1]}, @code{char} diff)
-Evaluates the formula derivation respect to @var{diff} for variables in array @var{var}['z'-'a']. Error code (if one) can be obtained from function @code{GetError()}.
- at end deftypemethod
- at deftypemethod mglFormula @code{int} GetError ()
-Returns error code: @code{0} means no error; @code{ERR_LOG} means error in logarithm or power functions; @code{ERR_ARC} means error in inverse functions (like asin); @code{ERR_SQRT} means error in sqrt function.
- at end deftypemethod
-
- at c ------------------------------------------------------------------
- at node mglFont class, mglColor class, mglFormula class, Other classes
- at section mglFont class
- at cindex mglFont
-
-Class for working with font: load, get metrics, parse and draw strings. This class is defined in @code{#include <mgl/mgl_font.h>}.
-
-The class is based on loading and drawing of vector Hershey font. There are two styles of specifying of the font type and aligning: by integer parameters or by string.
-
-The string can be any combination of characters: @samp{rbiLCRwou}. The font types are: @samp{r} -- roman font, @samp{i} -- italic style, @samp{b} -- bold style. By default roman font (that is @samp{} or @samp{r}) is used. The align types are: @samp{L} -- align left (default), @samp{C} -- align center, @samp{R} -- align right. Additional font effects are: @samp{w} -- wire, @samp{o} -- over-lined, @samp{u} -- underlined.
-
-The over way of font and alignment setting is the using of the integer constant. Integer font Id can be one of predefined constants: @code{MGL_FONT_ITAL, MGL_FONT_BOLD, MGL_FONT_BOLD_ITAL = MGL_FONT_ITAL+MGL_FONT_BOLD}. Default font is @code{MGL_FONT_ROMAN}. Also there are flags @code{MGL_FONT_ULINE, MGL_FONT_OLINE, MGL_FONT_WIRE} for additional font effects. Align parameter controls the text alignment: 0 -- align left, 1 -- align center, 2 -- align right.
-
-Parsing of the string to special (TeX-like) commands will be done if variable @var{parse} is true (it's default). There are commands for the font style changing inside the string (for example, use \b for bold font): \a or \overline -- over-lined, \b or \textbf -- bold, \i or \textit -- italic, \r or \textrm -- roman (disable bold and italic attributes), \u or \underline -- underlined, \w or \wire -- wired, \big -- bigger size, @@ -- smaller size. The lower and upper indexes are specified by @samp{_} and @samp{^} symbols. At this the changed font style is applied only on next symbol or symbols in braces @{@}. The text in braces @{@} are treated as single symbol that allow one to print the index of index. For example, compare the strings @samp{sin (x^@{2^3@})} and @samp{sin (x^2^3)}. You may also change text color inside string by command #? or by \color? where @samp{?} is symbolic id of the color (@pxref{mglColor class}). For example, words @samp{Blue} and @samp{red} will be colored in the string @samp{#b@{Blue@} and \colorr@{red@} text}.
-
-The most of commands for special TeX or AMSTeX symbols, the commands for font style changing (\textrm, \textbf, \textit, \overline, \underline), accents (\hat, \tilde, \dot, \ddot, \acute, \check, \grave, \bar, \breve) and roots (\sqrt, \sqrt3, \sqrt4) are recognized. The full list contain approximately 2000 commands. Note that first space symbol after the command is ignored, but second one is printed as normal symbol (space). For example, the following strings produce the same result @math{\tilde a}: @samp{\tilde@{a@}}; @samp{\tilde a}; @samp{\tilde@{@}a}.
-
- at ifhtml
- at html
-The Greek letters are recognizable special symbols: α – \alpha, β – \beta, γ – \gamma, δ – \delta, ε – \epsilon, η – \eta, ι – \iota, χ – \chi, κ – \kappa, λ – \lambda, μ – \mu, ν – \nu, o – \o, ω – \omega, ϕ – \phi, π – \pi, ψ – \psi, ρ – \rho, σ – \sigma, θ – \theta, τ – \tau, υ – \upsilon, ξ – \xi, ζ – \zeta, ς – \varsigma, ɛ – \varepsilon, ϑ – \vartheta, φ – \varphi, ϰ – \varkappa; A – \Alpha, B – \Beta, Γ – \Gamma, Δ – \Delta, E – \Epsilon, H – \Eta, I – \Iota, C – \Chi, K – \Kappa, Λ – \Lambda, M – \Mu, N – \Nu, O – \O, Ω – \Omega, Φ – \Phi, Π – \Pi, Ψ – \Psi, R – \Rho, Σ – \Sigma, Θ – \Theta, T – \Tau, Υ – \Upsilon, Ξ – \Xi, Z – \Zeta.
-
-<p>The small part of most common special TeX symbols are: ∠ – \angle, ⋅ – \cdot, ♣ – \clubsuit, ✓ – \checkmark, ∪ – \cup, ∩ – \cap, ♢ – \diamondsuit, ◇ – \diamond, ÷
- – \div,
-↓ – \downarrow, † – \dag, ‡ – \ddag, ≡ – \equiv, ∃ – \exists, ⌢ – \frown, ♭ – \flat, ≥ – \ge, ≥ – \geq, ≧ – \geqq, ← – \gets, ♡ – \heartsuit, ∞ – \infty, ∫ – \int, \Int, ℑ – \Im, ♢ – \lozenge, ⟨ – \langle, ≤ – \le, ≤ – \leq, ≦ – \leqq, ← – \leftarrow, ∓ – \mp, ∇ – \nabla, ≠ – \ne, ≠ – \neq, ♮ – \natural, ∮ – \oint, ⊙ – \odot, ⊕ – \oplus, ∂ – \partial, ∥ – \parallel, ⊥ –\perp, ± – \pm, ∝ – \propto, ∏ – \prod, ℜ – \Re, → – \rightarrow, ⟩ – \rangle, ♠ – \spadesuit, ~ – \sim, ⌣ – \smile, ⊂ – \subset, ⊃ – \supset, √ – \sqrt or \surd, § – \S, ♯ – \sharp, ∑ – \sum, × – \times, → – \to, ∴ – \therefore, ↑ – \uparrow, ℘ – \wp. </p>
- at end html
- at end ifhtml
- at ifnothtml
-The Greek letters are recognizable special symbols: @math{\alpha} -- \alpha, @math{\beta} -- \beta, @math{\gamma} -- \gamma, @math{\delta} -- \delta, @math{\epsilon} -- \epsilon, @math{\eta} -- \eta, @math{\iota} -- \iota, @math{\chi} -- \chi, @math{\kappa} -- \kappa, @math{\lambda} -- \lambda, @math{\mu} -- \mu, @math{\nu} -- \nu, @math{o} -- \o, @math{\omega} -- \omega, @math{\phi} -- \phi, @math{\pi} -- \pi, @math{\psi} -- \psi, @math{\rho} -- \rho, @math{\sigma} -- \sigma, @math{\theta} -- \theta, @math{\tau} -- \tau, @math{\upsilon} -- \upsilon, @math{\xi} -- \xi, @math{\zeta} -- \zeta, @math{\varsigma} -- \varsigma, @math{\varepsilon} -- \varepsilon, @math{\vartheta} -- \vartheta, @math{\varphi} -- \varphi, A -- \Alpha, B -- \Beta, @math{\Gamma} -- \Gamma, @math{\Delta} -- \Delta, E -- \Epsilon, H -- \Eta, I -- \Iota, C -- \Chi, K -- \Kappa, @math{\Lambda} -- \Lambda, M -- \Mu, N -- \Nu, O -- \O, @math{\Omega} -- \Omega, @math{\Phi} -- \Phi, @math{\Pi} -- \Pi, @math{\Psi} -- \Psi, R -- \Rho, @math{\Sigma} -- \Sigma, @math{\Theta} -- \Theta, T -- \Tau, @math{\Upsilon} -- \Upsilon, @math{\Xi} -- \Xi, Z -- \Zeta.
-
-The small part of most common special TeX symbols are: @math{\angle} -- \angle, @math{\aleph} -- \aleph, @math{\cdot} -- \cdot, @math{\clubsuit} -- \clubsuit, @math{\cup} -- \cup, @math{\cap} -- \cap, @math{\diamondsuit} -- \diamondsuit, @math{\diamond} -- \diamond, @math{\div} -- \div, @math{\downarrow} -- \downarrow, @math{\dag} -- \dag, @math{\ddag} -- \ddag, @math{\equiv} -- \equiv, @math{\exists} -- \exists, @math{\frown} -- \frown, @math{\flat} -- \flat, @math{\ge} -- \ge, @math{\geq} -- \geq, @math{\gets} -- \gets, @math{\heartsuit} -- \heartsuit, @math{\infty} -- \infty, @math{\in} -- \in, @math{\int} -- \int, @math{\Im} -- \Im, @math{\langle} -- \langle, @math{\le} -- \le, @math{\leq} -- \leq, @math{\leftarrow} -- \leftarrow, @math{\mp} -- \mp, @math{\nabla} -- \nabla, @math{\ne} -- \ne, @math{\neq} -- \neq, @math{\natural} -- \natural, @math{\oint} -- \oint, @math{\odot} -- \odot, @math{\oplus} -- \oplus, @math{\partial} -- \partial, @math{\parallel} -- \parallel, @math{\perp} -- \perp, @math{\pm} -- \pm, @math{\propto} -- \propto, @math{\prod} -- \prod, @math{\Re} -- \Re, @math{\rightarrow} -- \rightarrow, @math{\rangle} -- \rangle, @math{\spadesuit} -- \spadesuit, @math{\sim} -- \sim, @math{\smile} -- \smile, @math{\subset} -- \subset, @math{\supset} -- \supset, @math{\surd} -- \sqrt or \surd, @math{\S} -- \S, @math{\sharp} -- \sharp, @math{\sum} -- \sum, @math{\times} -- \times, @math{\to} -- \to, @math{\uparrow} -- \uparrow, @math{\wp} -- \wp and so on.
- at end ifnothtml
-
- at menu
-* Format of font files::
- at end menu
-
-
- at deftypemethod mglFont @code{} mglFont (@code{const char *}name=@code{MGL_DEF_FONT_NAME}, @code{const char *}path=@code{NULL})
-Initialize the font and load data from file @var{name} (default name is "STIX" for Linux and MacOS) or if @var{name}=@code{NULL} limited data from memory (default for Windows).
- at end deftypemethod
- at deftypemethod mglFont @code{bool} Load (@code{const char *} base, @code{const char *}path=@code{NULL})
-Load font from file @var{path}/@var{base} into the memory. The font may contain 4 files: @var{base}.vfm, @var{base}_b.vfm, @var{base}_i.vfm, @var{base}_bi.vfm. Appendix contain detailed description of font format.
- at end deftypemethod
- at deftypemethod mglFont @code{void} Restore ()
-Restore default font.
- at end deftypemethod
- at deftypemethod mglFont @code{void} (@code{mglFont *} fnt)
-Copy data from other font instance.
- at end deftypemethod
- at deftypemethod mglFont @code{void} Clear ()
-Clear memory by deleting the loaded font.
- at end deftypemethod
- at deftypemethod mglFont @code{inline unsigned} GetNumGlyph ()
-Return the number of glyphs in the font.
- at end deftypemethod
- at deftypemethod mglFont @code{inline bool} Ready ()
-Return true if font is loaded and ready for use.
- at end deftypemethod
-
-
- at deftypemethod mglFont @code{float} Height (@code{int} font)
-Gets height of text for font specified by integer constant.
- at end deftypemethod
- at deftypemethod mglFont @code{float} Puts (@code{const char *}str, @code{int} font=@code{0}, @code{int} align=@code{0})
-Prints 8-bit text string for font specified by integer constant.
- at end deftypemethod
- at deftypemethod mglFont @code{float} Width (@code{const char *}str, @code{int} font=@code{0})
-Gets width of 8-bit text string for font specified by integer constant.
- at end deftypemethod
- at deftypemethod mglFont @code{float} Puts (@code{const wchar_t *}str, @code{int} font=@code{0}, @code{int} align=@code{0})
-Prints Unicode text string for font specified by integer constant.
- at end deftypemethod
- at deftypemethod mglFont @code{float} Width (@code{const wchar_t *}str, @code{int} font=@code{0})
-Gets width of Unicode text string for font specified by integer constant.
- at end deftypemethod
-
-
- at deftypemethod mglFont @code{float} Height (@code{const char *}how)
-Gets height of text for font specified by string.
- at end deftypemethod
- at deftypemethod mglFont @code{float} Puts (@code{const char *}str, @code{const char *}how)
-Prints 8-bit text string for font specified by string.
- at end deftypemethod
- at deftypemethod mglFont @code{float} Width (@code{const char *}str, @code{const char *}how)
-Gets width of 8-bit text string for font specified by string.
- at end deftypemethod
- at deftypemethod mglFont @code{float} Puts (@code{const wchar_t *}str, @code{const char *}how)
-Prints Unicode text string for font specified by string.
- at end deftypemethod
- at deftypemethod mglFont @code{float} Width (@code{const wchar_t *}str, @code{const char *}how)
-Gets width of Unicode text string for font specified by string.
- at end deftypemethod
-
- at deftypecv {Parameter} mglFont @code{mglGraph *} gr
-Instance of mglGraph class which is used for character drawing.
- at end deftypecv
- at deftypecv {Parameter} mglFont @code{bool} parse
-Flag for switching on/off the parsing of TeX commands. Default value is @code{true}.
- at end deftypecv
-
- at c ------------------------------------------------------------------
- at node Format of font files, , , mglFont class
- at subsection Format of font files
-
-Starting from v.1.6 the MathGL library uses new font files. The font is defined in 4 files with suffixes @samp{*.vfm}, @samp{*_b.vfm}, @samp{*_i.vfm}, @samp{*_bi.vfm}. These files are text files containing the data for roman font, bold font, italic font and bold italic font. The files (or some symbols in the files) for bold, italic or bold italic fonts can be absent. In this case the roman glyph will be used for them. By analogy, if the bold italic font is absent but the bold font is present then bold glyph will be used for bold italic. You may create these font files by yourself from *.ttf, *.otf files with the help of program @code{font_tools}. This program can be found at MathGL home site.
-
-The format of font files (*.vfm -- vector font for MathGL) is the following.
- at enumerate
- at item
-First string contains human readable comment and is always ignored.
- at item
-Second string contains 3 numbers, delimited by space or tabulation. The order of numbers is the following: @var{numg} -- the number of glyphs in the file (integer), @var{fact} -- the factor for glyph sizing (float), @var{size} -- the size of buffer for glyph description (integer).
- at item
-After it @var{numg}-th strings with glyphs description are placed. Each string contains 6 positive numbers, delimited by space of tabulation. The order of numbers is the following: Unicode glyph ID, glyph width, number of lines in glyph, position of lines coordinates in the buffer (length is 2*number of lines), number of triangles in glyph, position of triangles coordinates in the buffer (length is 6*number of triangles).
- at item
-The end of file contains the buffer with point coordinates at lines or triangles vertexes. The size of buffer (the number of integer) is @var{size}.
- at end enumerate
-
-Note: the closing contour line is done automatically (so the last segment may be absent). For starting new contour use a point with coordinates @code{@{0x3fff, 0x3fff@}}.
-
-
- at c ------------------------------------------------------------------
- at node mglColor class, mglPoint class, mglFont class, Other classes
- at section mglColor class
- at cindex mglColor
-
-Structure for working with colors. This structure is defined in @code{#include <mgl/mgl.h>}.
-
-There are two ways to set the color in MathGL. First one is using of float values of red, green and blue channels for precise color definition. The second way is the using of character id. There are a set of characters specifying frequently used colors. Normally capital letter gives more dark color than lowercase one. The full list of characters is: @samp{k} -- black, @samp{r} -- red, @samp{R} -- dark red, @samp{g} -- green, @samp{G} -- dark green, @samp{b} -- blue, @samp{B} -- dark blue, @samp{c} -- cyan, @samp{C} -- dark cyan, @samp{m} -- magenta, @samp{M} -- dark magenta, @samp{y} -- yellow, @samp{Y} -- dark yellow (gold), @samp{h} -- gray, @samp{H} -- dark gray, @samp{w} -- white, @samp{W} -- bright gray, @samp{l} -- green-blue, @samp{L} -- dark green-blue, @samp{e} -- green-yellow, @samp{E} -- dark green-yellow, @samp{n} -- sky-blue, @samp{N} -- dark sky-blue, @samp{u} -- blue-violet, @samp{U} -- dark blue-violet, @samp{p} -- purple, @samp{P} -- dark purple, @samp{q} -- orange, @samp{Q} -- dark orange (brown).
-
-Also you may use ``lighted'' colors in color scheme specification (@emph{not in line style!}). The ``lighted'' color contain 2 symbols: first one is usual symbol for color specification, second one is digit for its brightness. The digit can be in range @samp{1}... at samp{9}. At this @samp{5} correspond to normal color, @samp{1} is very dark version of the color (practically black), @samp{9} is very bright version of the color (practically white).
-
- at float
- at image{png/colors, 7cm}
- at caption{Colors and its ids.}
- at end float
-
- at deftypecv {Parameter} mglVar @code{float} {r, g, b}
-Reg, green and blue component of color.
- at end deftypecv
-
- at deftypemethod mglColor @code{} mglColor (@code{float} R, @code{float} G, @code{float} B)
-Constructor sets the color by float values of Red, Green and Blue channels.
- at end deftypemethod
- at deftypemethod mglColor @code{} mglColor (@code{char} c=@code{'k'})
-Constructor sets the color from character id. The black color is used by default.
- at end deftypemethod
- at deftypemethod mglColor @code{void} Set (@code{float} R, @code{float} G, @code{float} B)
-Sets color from values of Red, Green and Blue channels. This values should be in interval [0,1].
- at end deftypemethod
- at deftypemethod mglColor @code{void} Set (@code{mglColor} c, @code{float} bright=@code{1})
-Sets color as ``lighted'' version of color @var{c}.
- at end deftypemethod
- at deftypemethod mglColor @code{void} Set (@code{char} p)
-Sets color from symbolic id.
- at end deftypemethod
- at deftypemethod mglColor @code{bool} Valid ()
-Checks correctness of the color.
- at end deftypemethod
- at deftypemethod mglColor @code{float} Norm ()
-Gets maximal of spectral component.
- at end deftypemethod
- at deftypemethod mglColor @code{bool} operator== (@code{const mglColor &}c)
-Compare with another color
- at end deftypemethod
-
- at deftypefn {Library Function} {inline mglColor} operator+ (@code{const mglColor &}a, @code{const mglColor &}b)
-Adds colors by its RGB values.
- at end deftypefn
- at deftypefn {Library Function} {inline mglColor} operator- (@code{const mglColor &}a, @code{const mglColor &}b)
-Subtracts colors by its RGB values.
- at end deftypefn
- at deftypefn {Library Function} {inline mglColor} operator* (@code{const mglColor &}a, @code{float} b)
-Multiplies color by number.
- at end deftypefn
- at deftypefn {Library Function} {inline mglColor} operator* (@code{float} a, @code{const mglColor &}b)
-Multiplies color by number.
- at end deftypefn
- at deftypefn {Library Function} {inline mglColor} operator/ (@code{const mglColor &}a, @code{float} b)
-Divide color by number.
- at end deftypefn
- at deftypefn {Library Function} {inline mglColor} operator! (@code{const mglColor &}a)
-Return inverted color.
- at end deftypefn
-
- at c ------------------------------------------------------------------
- at node mglPoint class, mglArg class, mglColor class, Other classes
- at section mglPoint class
- at cindex mglPoint
-
-Structure describes point in space. This structure is defined in @code{#include <mgl/mgl.h>}
-
- at deftypecv {Parameter} mglVar @code{float} {x, y, z}
-Point coordinates. By default all values are zero.
- at end deftypecv
-
- at deftypefn {Library Function} {inline mglPoint} operator+ (@code{const mglPoint &}a, @code{const mglPoint &}b)
-Point of summation (summation of vectors).
- at end deftypefn
- at deftypefn {Library Function} {inline mglPoint} operator- (@code{const mglPoint &}a, @code{const mglPoint &}b)
-Point of difference (difference of vectors).
- at end deftypefn
- at deftypefn {Library Function} {inline mglPoint} operator* (@code{float} a, @code{const mglPoint &}b)
-Multiplies (scale) points by number.
- at end deftypefn
- at deftypefn {Library Function} {inline mglPoint} operator* (@code{const mglPoint &}a, @code{float} b)
-Multiplies (scale) points by number.
- at end deftypefn
- at deftypefn {Library Function} {inline mglPoint} operator/ (@code{const mglPoint &}a, @code{float} b)
-Multiplies (scale) points by number 1/b.
- at end deftypefn
- at deftypefn {Library Function} {inline float} operator- (@code{const mglPoint &}a, @code{const mglPoint &}b)
-Scalar product of vectors.
- at end deftypefn
- at deftypefn {Library Function} {inline mglPoint} operator^ (@code{const mglPoint &}a, @code{const mglPoint &}b)
-Cross-product of vectors.
- at end deftypefn
- at deftypefn {Library Function} {inline mglPoint} operator& (@code{const mglPoint &}a, @code{const mglPoint &}b)
-The part of @var{a} which is perpendicular to vector @var{b}.
- at end deftypefn
- at deftypefn {Library Function} {inline mglPoint} operator| (@code{const mglPoint &}a, @code{const mglPoint &}b)
-The part of @var{a} which is parallel to vector @var{b}.
- at end deftypefn
-
- at deftypefn {Library Function} {inline mglPoint} operator! (@code{const mglPoint &}a)
-Return vector perpendicular to vector @var{a}.
- at end deftypefn
- at deftypefn {Library Function} {inline bool} Norm (@code{const mglPoint &}a)
-Return the norm |@var{a}|^2 of vector @var{a}.
- at end deftypefn
-
- at deftypefn {Library Function} {inline bool} operator== (@code{const mglPoint &}a, @code{const mglPoint &}b)
-Return true if points are the same.
- at end deftypefn
- at deftypefn {Library Function} {inline bool} operator!= (@code{const mglPoint &}a, @code{const mglPoint &}b)
-Return true if points are different.
- at end deftypefn
-
- at c ------------------------------------------------------------------
- at node mglVar class, mglCommand class, mglArg class, Other classes
- at section mglVar class
- at cindex mglVar
-
-Structure describes variable of type @code{mglData} and its name in MGL script. This structure is used by @code{mglParse} and is defined in @code{#include <mgl/mgl_parse.h>}.
-
- at deftypecv {Parameter} mglVar @code{mglData} d
-Data itself
- at end deftypecv
- at deftypecv {Parameter} mglVar @code{wchar_t} s[256]
-Data name
- at end deftypecv
- at deftypecv {Parameter} mglVar @code{void *} o
-Pointer to external object for function @var{func}.
- at end deftypecv
- at deftypecv {Parameter} mglVar @code{mglVar *} next
-Pointer to next instance in list
- at end deftypecv
- at deftypecv {Parameter} mglVar @code{mglVar *} prev
-Pointer to prev instance in list
- at end deftypecv
- at deftypecv {Parameter} mglVar @code{bool} temp
-Flag for temporar variable. Temporal variables will be destroyed after script execution.
- at end deftypecv
- at deftypecv {Parameter} mglVar @code{void (*} func @code{)(void *)}
-Callback function for destroying non-temporal variable.
- at end deftypecv
-
- at deftypemethod mglGraphAB @code{void} MoveAfter (@code{mglVar *}var)
-Move variable after @var{var} and copy @code{func} from @code{var} (if @code{func} is not 0)
- at end deftypemethod
-
-
- at c ------------------------------------------------------------------
- at node mglCommand class, , mglVar class, Other classes
- at section mglCommand class
- at cindex mglCommand
-
-Structure describes MGL command, its name, short description, executable and export functions. The structure is used by @code{mglParse} and is defined in @code{#include <mgl/mgl_parse.h>}.
-
- at deftypecv {Parameter} mglCommand @code{const wchar_t *} name
-Name of command.
- at end deftypecv
- at deftypecv {Parameter} mglCommand @code{const wchar_t *} desc
-Short command description (can be NULL).
- at end deftypecv
- at deftypecv {Parameter} mglCommand @code{const wchar_t *} form
-Format of command arguments (can be NULL).
- at end deftypecv
- at deftypecv {Parameter} mglCommand @code{int (*} exec @code{)(mglGraph *gr, long n, mglArg *a, int k[10])const wchar_t *}
-Function for executing (plotting) the command using grapher @var{gr} and having @var{n}-th arguments @var{a}. Function must return 0 if all is OK; or 1 if arguments are wrong.
- at end deftypecv
- at deftypecv {Parameter} mglCommand @code{void (*} save @code{)(wchar_t out[1024], long n, mglArg *a, int k[10])const wchar_t *}
-Function for exporting in C++ (can be NULL).
- at end deftypecv
-
-
- at c ------------------------------------------------------------------
- at node mglArg class, mglVar class, mglPoint class, Other classes
- at section mglArg class
- at cindex mglArg
-
-Structure describes arguments of functions in the stucture @code{mglCommand}. It is defined in @code{#include <mgl/mgl_parse.h>}.
-
- at deftypecv {Parameter} mglArg @code{int} type
-Type of argument: 0-data, 1-string, 2-number.
- at end deftypecv
- at deftypecv {Parameter} mglArg @code{mglData *} d
-Pointer to data (used if type=0).
- at end deftypecv
- at deftypecv {Parameter} mglArg @code{wchar_t} w[2048]
-String with parameters (used if type=1 or if type=0 as variable name).
- at end deftypecv
- at deftypecv {Parameter} mglArg @code{char} s[2048]
-String with parameters (used if type=1).
- at end deftypecv
- at deftypecv {Parameter} mglArg @code{float} v
-Numerical value (used if type==2)
- at end deftypecv
-
diff --git a/texinfo/class_ru.texi b/texinfo/class_ru.texi
index fdf7d4a..e80f0f4 100644
--- a/texinfo/class_ru.texi
+++ b/texinfo/class_ru.texi
@@ -1,33 +1,32 @@
@c ------------------------------------------------------------------
- at node Plotter classes, Widget classes, MathGL core, Top
- at chapter Plotter classes
+ at chapter ÐлаÑÑÑ Ð´Ð»Ñ Ð¾ÑÑиÑовки
@cindex mglGraphAB
@cindex mglGraphZB
@cindex mglGraphPS
@cindex mglGraphGL
@cindex mglGraphIDTF
-The class mglGraph (@pxref{MathGL core}) provide the basic tools for creating scientific graphics but it is abstract class. The matter is that there are several possible way to draw a graphics: in bitmap, in vector file, using OpenGL and so on. As result, user should use some of derived classes to do actual drawing. In principle, it is possible to derive a class exactly from mglGraph (and it was in v.1.6). But I recommend to derive from mglGraphAB class for higher compatibility of produced graphics from different classes. Class mglGraphAB is another abstract class which provide basic coordinates transformation, plotting functions and export to bitmap picture. It still require a functions for drawing lines, triangles and quadrangles. So below a set of ``plotter'' classes with short comments.
+ÐлаÑÑ mglGraph (@pxref{MathGL core}) обеÑпеÑÐ¸Ð²Ð°ÐµÑ Ð±Ð°Ð·Ð¾Ð²Ñе ÑÑнкÑии Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð°ÑÑной гÑаÑики, но ÑÑо абÑÑÑакÑнÑй клаÑÑ. ÐÑиÑина в Ñом, ÑÑо ÑÑÑеÑÑвÑÐµÑ Ð½ÐµÑколÑко возможноÑÑей вÑвода/оÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑÑивÑегоÑÑ ÑиÑÑнка: в ÑаÑÑÑовÑй или в векÑоÑнÑй ÑайлÑ, иÑполÑзÑÑ OpenGL и Ñ.д. Ð ÑезÑлÑÑаÑе, Ð´Ð»Ñ ÐºÐ¾Ð½ÐµÑной оÑÑиÑовки необÑ
одимо иÑполÑзоваÑÑ Ð¿ÑоизводнÑе клаÑÑÑ. РпÑинÑипе, можно наÑледоваÑÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвенно mglGraph (и Ñак бÑло до веÑÑии 1.6). Ðднако, Ñ ÑекомендÑÑ Ð¸ÑполÑзоваÑÑ Ð² каÑеÑÑве базового клаÑÑ mglGraphAB Ð´Ð»Ñ Ð±Ð¾Ð»ÑÑего единообÑÐ°Ð·Ð¸Ñ Ð¿Ð¾Ð»ÑÑаÑÑейÑÑ Ð³ÑаÑики в ÑазлиÑнÑÑ
клаÑÑаÑ
. ÐлаÑÑ mglGraphAB -- дÑÑгой абÑÑÑакÑнÑй клаÑÑ, обеÑпеÑиваÑÑий пÑеобÑазование кооÑдинаÑ, базовÑе ÑÑнкÑии ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ ÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð² ÑаÑÑÑовое изобÑажение. Ðн ÑÑебÑÐµÑ Ð´Ð¾Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑнкÑий ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð»Ð¸Ð½Ð¸Ð¹, ÑÑеÑголÑников и ÑеÑÑÑеÑ
ÑголÑников. Ðиже пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ñ ÐºÐ»Ð°ÑÑÑ ``оÑÑиÑовки'' Ñ ÐºÐ¾ÑоÑкими комменÑаÑиÑми.
- at deftp {Class} mglGraphAB
-Abstract class mglGraphAB implements plotting function for 1D, 2D and 3D plots using Z-ordering and provides base functionality for to screen coordinate transformation, bitmap creation and so on. Class is defined in @code{#include <mgl/mgl_ab.h>}.
+ at deftp {ÐлаÑÑ} mglGraphAB
+ÐбÑÑÑакÑнÑй клаÑÑ, обеÑпеÑиваÑÑий оÑÑиÑÐ¾Ð²ÐºÑ Ð¿Ð¾ глÑбине, пÑеобÑазование к ÑкÑаннÑм кооÑдинаÑам, ÑоÑ
Ñанение в ÑаÑÑÑовое изобÑажение и Ñ.д. ÐлаÑÑ Ð¾Ð¿Ñеделен в @code{#include <mgl/mgl_ab.h>}.
@end deftp
- at deftp {Class} mglGraphZB
-Class mglGraphZB implements plotting function for 1D, 2D and 3D plots using Z-Buffer. It is useful for off-screen (for console or SSH terminal) programs. Also this class can be used in any other programs which may draw bitmap on the screen (for example, by using FLTK, Qt, wxWidgets libraries and so on). Note that bitmap picture is saved while exporting to EPS format. The produced graphics have better quality but slower in comparison with graphics in the class mglGraphPS. Class is defined in @code{#include <mgl/mgl_zb.h>}.
+ at deftp {ÐлаÑÑ} mglGraphZB
+РеализÑÐµÑ ÑаÑÑÑовÑÑ Ð¾ÑÑиÑÐ¾Ð²ÐºÑ Ð¸Ð·Ð¾Ð±ÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸ÑполÑзÑÑ Z-Buffer. Ðожно иÑполÑзоваÑÑ Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² памÑÑи (или в конÑоли/SSH ÑеÑминале). Также ÑÑÐ¾Ñ ÐºÐ»Ð°ÑÑ Ð¸ÑполÑзÑеÑÑÑ ÐºÐ°Ðº базовÑй Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² окне (напÑимеÑ, иÑполÑзÑÑ FLTK, Qt, wxWidgets библиоÑеки и пÑ.). ÐÑи ÑкÑпоÑÑе в EPS ÑоÑÐ¼Ð°Ñ ÑоÑ
ÑанÑеÑÑÑ ÑаÑÑÑÐ¾Ð²Ð°Ñ ÐºÐ°ÑÑинка. ÐолÑÑаÑÑийÑÑ ÑиÑÑнок лÑÑÑего каÑеÑÑва, но ÑиÑÑеÑÑÑ Ð¼ÐµÐ´Ð»ÐµÐ½Ð½ÐµÐµ Ñем в клаÑÑе mglGraphPS. ÐлаÑÑ Ð¾Ð¿Ñеделен в @code{#include <mgl/mgl_zb.h>}.
@end deftp
- at deftp {Class} mglGraphPS
-Class mglGraphPS implements plotting functions for 1D, 2D and 3D plots and exports them to PostScript or SVG file. It is useful for off-screen (for console or SSH terminal) programs. Note that there is no transparency support now and color interpolation and lightning support is limited (not so nice as in class mglGraphZB). As result the plots with transparency (SurfA, Surf3A, CloudP, CloudQ) may look not so good. However the speed of drawing is higher in comparison with one in the class mglGraphZB. Class is defined in @code{#include <mgl/mgl_eps.h>}.
+ at deftp {ÐлаÑÑ} mglGraphPS
+РеализÑÐµÑ Ð²ÐµÐºÑоÑнÑÑ Ð¾ÑÑиÑÐ¾Ð²ÐºÑ Ð¸Ð·Ð¾Ð±ÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑÑ ÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð² векÑоÑнÑй PostScript или SVG Ñайл. Ðожно иÑполÑзоваÑÑ Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² памÑÑи (или в конÑоли/SSH ÑеÑминале). ÐамеÑÑ, ÑÑо Ñглаживание ÑвеÑа не поддеÑживаеÑÑÑ, а пÑи ÑкÑпоÑÑе в EPS не поддеÑживаеÑÑÑ Ð¸ пÑозÑаÑноÑÑÑ (в ÑÐ¸Ð»Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ ÑоÑмаÑа). Ð ÑезÑлÑÑаÑе ÑиÑÑнок полÑÑаеÑÑÑ Ð±ÑÑÑÑее, но более низкого каÑеÑÑва Ñем в клаÑÑе mglGraphZB. ÐлаÑÑ Ð¾Ð¿Ñеделен в @code{#include <mgl/mgl_eps.h>}.
@end deftp
- at deftp {Class} mglGraphGL
-Class mglGraphGL implements plotting function for 1D, 2D and 3D plots under OpenGL. This class can not be used in off-screen applications. Note, that several transparent overlapped surfaces are drawn not so correctly due to OpenGL limitations. Class is defined in @code{#include <mgl/mgl_gl.h>}.
+ at deftp {ÐлаÑÑ} mglGraphGL
+РеализÑÐµÑ Ð²ÐµÐºÑоÑнÑÑ Ð³ÑаÑÐ¸ÐºÑ Ñ Ð¸ÑполÑзованием OpenGL. ÐлаÑÑ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзован Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² конÑоли. Ð ÑÐ¸Ð»Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ OpenGL возможна пÑоблема коÑÑекÑного оÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð½ÐµÑколÑкиÑ
пеÑекÑÑваÑÑиÑ
ÑÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑей. ÐлаÑÑ Ð¾Ð¿Ñеделен в @code{#include <mgl/mgl_gl.h>}.
@end deftp
- at deftp {Class} mglGraphIDTF
-Class mglGraphIDTF implements plotting function for 1D, 2D and 3D plots and export it in IDTF format. Later this file can be converted in U3D format. Class is defined in @code{#include <mgl/mgl_idtf.h>}.
+ at deftp {ÐлаÑÑ} mglGraphIDTF
+РеализÑÐµÑ ÑкÑпоÑÑ Ð³ÑаÑики в IDTF ÑоÑмаÑе, коÑоÑÑй заÑем можно пÑеобÑазоваÑÑ Ð² ÑоÑÐ¼Ð°Ñ U3D. ÐлаÑÑ Ð¾Ð¿Ñеделен в @code{#include <mgl/mgl_idtf.h>}.
@end deftp
@menu
@@ -36,20 +35,20 @@ Class mglGraphIDTF implements plotting function for 1D, 2D and 3D plots and exp
@c ------------------------------------------------------------------
@node mglGraphAB class, , , Plotter classes
- at section mglGraphAB class
+ at section ÐлаÑÑ mglGraphAB
@cindex mglGraphAB
@cindex window
-#cindex mglDraw
+ at cindex mglDraw
-Generally this class is a bit less abstract class than mglGraph class (@pxref{MathGL core}). It provide many protected methods for handling intermediate data from mglGraph methods and require a few methods to be defined by derived class. The developers of derived classes should look on file @samp{mgl_ab.h} and comments inside it or contact me.
+ÐообÑе говоÑÑ ÑÑо ÑÑÑÑ ``менее абÑÑÑакÑнÑй'' клаÑÑ Ñем mglGraph (@pxref{MathGL core}). Ðн пÑедоÑÑавлÑÐµÑ Ð¼Ð½Ð¾Ð³Ð¾ меÑодов Ð´Ð»Ñ Ð¾Ð±ÑабоÑки пÑомежÑÑоÑнÑÑ
даннÑÑ
и ÑÑебÑÐµÑ Ð² пÑоизводнÑÑ
клаÑÑаÑ
опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑолÑко неÑколÑкиÑ
меÑодов Ð´Ð»Ñ Ð¾ÑÑиÑовки пÑимиÑивов. РазÑабоÑÑикам, наÑледÑÑÑим ÑÑÐ¾Ñ ÐºÐ»Ð°ÑÑ, ÑледÑÐµÑ Ð¿Ð¾ÑмоÑÑеÑÑ Ñайл @samp{mgl_ab.h} и комменÑаÑии в нем или обÑаÑиÑÑÑÑ Ðº авÑоÑÑ.
-Here I just show new public methods for class mglGraphAB. There are functions returning the created picture (bitmap), its width and height. You may display it by yourself in any graphical library (see also, @ref{Widget classes}) or save in file (see also, @ref{Export to file}).
+Ðиже Ñ ÑолÑко пеÑеÑиÑÐ»Ñ Ð¾ÑновнÑе обÑедоÑÑÑпнÑе меÑÐ¾Ð´Ñ ÐºÐ»Ð°ÑÑа mglGraphAB. РпеÑвÑÑ Ð¾ÑеÑÐµÐ´Ñ ÑÑо ÑÑнкÑии, возвÑаÑаÑÑие ÑозданнÑй ÑаÑÑÑовÑй ÑиÑÑнок, его ÑиÑÐ¸Ð½Ñ Ð¸ вÑÑоÑÑ. РдалÑнейÑем его можно иÑполÑзоваÑÑ Ð² лÑбой гÑаÑиÑеÑкой библиоÑеке (Ñм. Ñакже, @ref{Widget classes}) или ÑоÑ
ÑаниÑÑ Ð² Ñайл (Ñм. Ñакже, @ref{Export to file}).
- at deftypefn {Method on @code{mglGraphAB} (C++)} @code{const unsigned char *} GetBits ()
- at deftypefnx {Method on @code{mglGraph} (Python)} @code{void} GetRGB (@code{char *}buf, @code{int} size)
- at deftypefnx {Method on @code{mglGraph} (Python)} @code{void} GetBGRN (@code{char *}buf, @code{int} size)
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraphAB} (C++)} @code{const unsigned char *} GetBits ()
+ at deftypefnx {ÐеÑод клаÑÑа @code{mglGraph} (Python)} @code{void} GetRGB (@code{char *}buf, @code{int} size)
+ at deftypefnx {ÐеÑод клаÑÑа @code{mglGraph} (Python)} @code{void} GetBGRN (@code{char *}buf, @code{int} size)
@deftypefnx {C function} @code{const unsigned char *} mgl_get_rgb (@code{HMGL} gr)
-Gets RGB bitmap of the current state of the image. Format of each element of bits is: @{red, green, blue@}. Number of elements is Width*Height. Position of element @{i,j@} is [3*i + 3*Width*j] (or is [4*i + 4*Width*j] for @code{GetBGRN()}). For Python you have to provide the proper @var{size} of the buffer, @var{buf} i.e. the code should look like
+ÐозвÑаÑÐ°ÐµÑ ÑаÑÑÑовое изобÑажение в ÑоÑмаÑе RGB Ð´Ð»Ñ ÑекÑÑего кадÑа. ФоÑÐ¼Ð°Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑлеменÑа (пикÑелÑ): @{red, green, blue@}. ЧиÑло ÑлеменÑов Width*Height. Ðоложение ÑлеменÑа @{i,j@} еÑÑÑ [3*i + 3*Width*j] (или [4*i + 4*Width*j] Ð´Ð»Ñ @code{GetBGRN()}). Ð Python Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿ÑедоÑÑавиÑÑ Ð±ÑÑÐµÑ @var{buf} доÑÑаÑоÑного ÑазмеÑа @var{size}, Ñ.е. код должен вÑглÑдеÑÑ ÑледÑÑÑим обÑазом
@verbatim
from mathgl import *
gr = mglGraph();
@@ -59,31 +58,31 @@ gr.GetBGRN(bits, len(bits));
@end verbatim
@end deftypefn
- at deftypefn {Method on @code{mglGraphAB} (C++)} @code{const unsigned char *} GetRGBA ()
- at deftypefnx {Method on @code{mglGraph} (Python)} @code{void} GetRGBA (@code{char *}buf, @code{int} size)
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraphAB} (C++)} @code{const unsigned char *} GetRGBA ()
+ at deftypefnx {ÐеÑод клаÑÑа @code{mglGraph} (Python)} @code{void} GetRGBA (@code{char *}buf, @code{int} size)
@deftypefnx {C function} @code{const unsigned char *} mgl_get_rgba (@code{HMGL} gr)
-Gets RGBA bitmap of the current state of the image. Format of each element of bits is: @{red, green, blue, alpha@}. Number of elements is Width*Height. Position of element @{i,j@} is [4*i + 4*Width*j].
+ÐозвÑаÑÐ°ÐµÑ ÑаÑÑÑовое изобÑажение в ÑоÑмаÑе RGBA Ð´Ð»Ñ ÑекÑÑего кадÑа. ФоÑÐ¼Ð°Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑлеменÑа (пикÑелÑ): @{red, green, blue, alpha@}. ЧиÑло ÑлеменÑов Width*Height. Ðоложение ÑлеменÑа @{i,j@} еÑÑÑ [4*i + 4*Width*j].
@end deftypefn
- at deftypefn {Method on @code{mglGraphAB} (C++, Python)} @code{int} GetWidth ()
- at deftypefnx {Method on @code{mglGraphAB} (C++, Python)} @code{int} GetHeight ()
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraphAB} (C++, Python)} @code{int} GetWidth ()
+ at deftypefnx {ÐеÑод клаÑÑа @code{mglGraphAB} (C++, Python)} @code{int} GetHeight ()
@deftypefnx {C function} @code{int} mgl_get_width (@code{HMGL} gr)
@deftypefnx {C function} @code{int} mgl_get_height (@code{HMGL} gr)
-Gets width and height of the image.
+ÐозвÑаÑÐ°ÐµÑ ÑиÑÐ¸Ð½Ñ Ð¸ вÑÑоÑÑ Ð¸Ð·Ð¾Ð±ÑажениÑ.
@end deftypefn
-Class mglGraphAB is the base class for ``widget classes''. So there are set of functions for handling window behavior. Most of them are applicable only for ``window'' classes (like mglGraphFLTK and so on, @pxref{Widget classes}). In all other classes these functions just do nothing. You should provide the corresponding interface in derived ``widget'' classes for user convenience.
+ÐлаÑÑ mglGraphAB -- базовÑй клаÑÑ Ð´Ð»Ñ ``оконнÑÑ
клаÑÑов''. ÐоÑÑÐ¾Ð¼Ñ Ð¾Ð½ ÑодеÑÐ¶Ð¸Ñ Ð½Ð°Ð±Ð¾Ñ ÑÑнкÑий Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾ÐºÐ½Ð¾Ð¼. ÐолÑÑинÑÑво из ниÑ
пÑименимо ÑолÑко в ``оконнÑÑ
клаÑÑаÑ
'' (Ñипа mglGraphFLTK и дÑ, @pxref{Widget classes}). РоÑÑалÑнÑÑ
ÑлÑÑаÑÑ
ÑÑнкÑии ниÑего не делаÑÑ. ÐÑли Ð²Ñ ÑоздаеÑе оконнÑй клаÑÑ, Ñо Ðам ÑледÑÐµÑ Ð¿ÑедоÑÑавиÑÑ Ñакой же инÑеÑÑÐµÐ¹Ñ Ð´Ð»Ñ ÑдобÑÑва полÑзоваÑелÑ.
@deftypemethod mglGraphAB @code{void} Window (@code{int} argc, @code{char **}argv, @code{int (*}draw)(@code{mglGraph *}gr, @code{void *}p), @code{const char *}title, @code{void *}par=@code{NULL}, @code{void (*}reload)(@code{int} next, @code{void *}p)=@code{NULL}, @code{bool} maximize=@code{false})
-This function creates a window for plotting. Parameters @var{argc}, @var{argv} contain OS specific information and should be the same as in function @code{main(int argc,char **argv)}. Parameter @var{draw} sets a pointer (this is the name of function) to drawing function. There is support of a list of plots (frames). So as one can prepare a set of frames at first and redraw it fast later (but it requires more memory). Function should return positive number of frames for the list or zero if it will plot directly. Note, that @var{draw} can be @code{NULL} for displaying static bitmaps only (no animation or slides). Parameter @var{title} sets the title of the window. Parameter @var{par} contains pointer to data for the plotting function @var{draw}. Parameter @var{maximize}=@code{true} open maximized window.
+Ð¡Ð¾Ð·Ð´Ð°ÐµÑ Ð¾ÐºÐ½Ð¾ Ð´Ð»Ñ Ð²Ñвода гÑаÑика. ÐаÑамеÑÑÑ @var{argc}, @var{argv} ÑодеÑÐ¶Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑÐµÐ¼Ñ Ð¸ иÑ
ÑлеÑÐ´ÐµÑ Ð¿ÐµÑедаÑÑ Ð² ÑÑÑ ÑÑнкÑÐ¸Ñ Ð¸Ð· ÑÑнкÑии @code{main(int argc,char **argv)} (Ñ
оÑÑ Ð¾Ð½Ð¸ и могÑÑ Ð±ÑÑÑ ÑÐ°Ð²Ð½Ñ @code{NULL}). ÐаÑамеÑÑ @var{draw} -- ÑказаÑÐµÐ»Ñ (имÑ) ÑÑнкÑии ÑиÑованиÑ. ÐÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½ÐµÑколÑкиÑ
кадÑов внаÑале (ÑÑебÑÐµÑ Ð±Ð¾Ð»ÑÑе памÑÑи) и иÑ
бÑÑÑÑÐ°Ñ Ð°Ð½Ð¸Ð¼Ð°Ñии в далÑнейÑем. Ð ÑÑом ÑлÑÑае ÑÑнкÑÐ¸Ñ @var{draw} должна возвÑаÑаÑÑ ÑиÑло кадÑов или Ð½Ð¾Ð»Ñ Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ запÑоÑÑ. ÐамеÑÑ, ÑÑо @var{draw} Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñавна @code{NULL} Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑÑаÑиÑеÑкой (ÑекÑÑей) каÑÑинки. ÐаÑамеÑÑ @var{title} Ð·Ð°Ð´Ð°ÐµÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº окна. ÐаÑамеÑÑ @var{par} ÑодеÑÐ¶Ð¸Ñ ÑказаÑÐµÐ»Ñ Ð½Ð° даннÑе, пеÑедаваемÑе ÑÑнкÑии ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ @var{draw}. ÐаÑамеÑÑ @var{maximize}=@code{true} оÑкÑÑÐ²Ð°ÐµÑ Ð¾ÐºÐ½Ð¾ ÑаÑкÑÑÑÑм на веÑÑ ÑкÑан.
-There are some keys handles for manipulating by the plot: 'a', 'd', 'w', 's' for the rotating; ',', '.' for viewing of the previous or next frames in the list; 'r' for the switching of transparency; 'f' for the switching of lightning; 'x' for hiding (closing) the window.
+Рокне пÑоÑмоÑÑа можно иÑполÑзоваÑÑ ÐºÐ»Ð°Ð²Ð¸Ñи: 'a', 'd', 'w', 's' Ð´Ð»Ñ Ð²ÑаÑениÑ; ',', '.' Ð´Ð»Ñ Ð¿ÑоÑмоÑÑа пÑедÑдÑÑего и ÑледÑÑÑего кадÑов; 'r' Ð´Ð»Ñ Ð¿ÐµÑеклÑÑÐµÐ½Ð¸Ñ Ð¿ÑозÑаÑноÑÑи; 'f' Ð´Ð»Ñ Ð¿ÐµÑеклÑÑÐµÐ½Ð¸Ñ Ð¾ÑпеÑенноÑÑи; 'x' Ð´Ð»Ñ Ð·Ð°ÐºÑÑÑÐ¸Ñ Ð¾ÐºÐ½Ð°.
- at strong{IMPORTANT!!!} You need to add a call of Rotate() (@pxref{Transformation matrix}) function for having possibility of plot rotation. If plot should be unrotated by default just add @code{Rotate(0,0)} in drawing function.
+ at strong{ÐÐÐÐÐ!!!} Ðам не ÑледÑÐµÑ Ð²ÑзÑваÑÑ ÑÑнкÑÐ¸Ñ Rotate() (@pxref{Transformation matrix}) еÑли ÐÑ Ñ
оÑиÑе вÑаÑаÑÑ Ð³ÑаÑик.
@end deftypemethod
@deftypemethod mglGraphAB @code{void} Window (@code{int} argc, @code{char **}argv, @code{mglDraw *}draw, @code{const char *}title, @code{bool} maximize=@code{false})
-This function is mostly the same as previous one. The only difference is that the drawing function and function for data reloading are specified as methods on a class inherited from class @code{mglDraw}. This class is defined in @code{#include <mgl/mgl_data.h>} and have only 2 methods:
+РоÑновном аналогиÑна пÑедÑдÑÑей. ÐÑновное оÑлиÑие в Ñом, ÑÑо ÑÑнкÑии ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
опÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð² клаÑÑе наÑледнике клаÑÑа @code{mglDraw}. ÐÑÐ¾Ñ ÐºÐ»Ð°ÑÑ Ð¾Ð¿Ñеделен в @code{#include <mgl/mgl_define.h>} и Ð¸Ð¼ÐµÐµÑ ÑолÑко 2 меÑода:
@verbatim
class mglDraw
{
@@ -92,836 +91,88 @@ public:
virtual void Reload(int) {};
};
@end verbatim
-You should inherit yours class from @code{mglDraw} and reimplement one or both functions for using this function.
+ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑоздаÑÑ ÐºÐ»Ð°ÑÑ-наÑледник @code{mglDraw} и пеÑеопÑеделиÑÑ Ð¾Ð´Ð¸Ð½ или оба меÑода Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑÑнкÑией.
@end deftypemethod
- at deftypemethod mglGraphAB @code{void} ToggleAlpha ()
-Switch on/off transparency but do not overwrite switches in user drawing function.
- at end deftypemethod
- at deftypemethod mglGraphAB @code{void} ToggleLight ()
-Switch on/off lighting but do not overwrite switches in user drawing function.
- at end deftypemethod
- at deftypemethod mglGraphAB @code{void} ToggleZoom ()
-Switch on/off zooming by mouse as region selection.
- at end deftypemethod
- at deftypemethod mglGraphAB @code{void} ToggleRotate ()
-Switch on/off rotation by mouse. Usually, left button is used for rotation, middle button for shift, right button for zoom/perspective.
- at end deftypemethod
- at deftypemethod mglGraphAB @code{void} ToggleNo ()
-Switch off all zooming and rotation and restore initial state.
- at end deftypemethod
- at deftypemethod mglGraphAB @code{void} Update ()
-Update window contents.
- at end deftypemethod
- at deftypemethod mglGraphAB @code{void} ReLoad (@code{bool} o)
-Reload user data and update picture.
- at end deftypemethod
- at deftypemethod mglGraphAB @code{void} Adjust ()
-Adjust size of bitmap to window size.
- at end deftypemethod
- at deftypemethod mglGraphAB @code{void} NextFrame ()
-Show next frame if one.
- at end deftypemethod
- at deftypemethod mglGraphAB @code{void} PrevFrame ()
-Show previous frame if one.
- at end deftypemethod
- at deftypemethod mglGraphAB @code{void} Animation ()
-Run/stop slideshow (animation) of frames
- at end deftypemethod
-
- at deftypecv {Widget option} mglGraphAB @code{bool} AutoClf
-Clear canvas between drawing. You may switch it off for accumulate previous drawing (for example some points or parts of a picture).
- at end deftypecv
- at deftypecv {Widget option} mglGraphAB @code{float} Delay
-Delay for animation in seconds. Default value is 1 sec.
- at end deftypecv
-
- at deftypefn {Method on @code{mglGraphAB} (C++, Python)} @code{mglPoint} CalcXYZ (@code{int} xs, @code{int} ys)
- at deftypefnx {C function} @code{void} mgl_calc_xyz (@code{HMGL} gr, @code{int} xs, @code{int} ys, @code{float *}x, @code{float *}y, @code{float *}z)
-Calculate 3D coordinate @{x,y,z@} for screen point @{xs,ys@}. At this moment it ignore perspective and transformation formulas (curvilinear coordinates). The calculation are done for the last used InPlot (@pxref{Transformation matrix}).
- at end deftypefn
-
- at deftypefn {Method on @code{mglGraphAB} (C++, Python)} @code{mglPoint} CalcScr (@code{mglPoint} p)
- at deftypefnx {Method on @code{mglGraphAB} (C++)} @code{void} CalcScr (@code{mglPoint} p, @code{int *}xs, @code{int *}ys)
- at deftypefnx {C function} @code{void} mgl_calc_scr (@code{HMGL} gr, @code{float} x, @code{float} y, @code{float} z, @code{int *}xs, @code{int *}ys)
-Calculate screen point @{xs,ys@} for 3D coordinate @{x,y,z@}. The calculation are done for the last used InPlot (@pxref{Transformation matrix}).
- at end deftypefn
-
- at deftypecv {Widget option} mglGraphAB @code{float} ShowMousePos
-Switch to show or not in the widget the last mouse click position.
- at end deftypecv
- at deftypecv {Widget option} mglGraphAB @code{mglPoint} LastMousePos
-Last position of mouse click.
- at end deftypecv
-
- at c ------------------------------------------------------------------
- at node Widget classes, mglData class, Plotter classes, Top
- at chapter Widget classes
- at cindex mglGraphFLTK
- at cindex mglGraphQT
- at cindex mglGraphGLUT
- at cindex Fl_MathGL
- at cindex QMathGL
- at cindex window
- at cindex widgets
-
-There are set of ``window'' classes for making a window with MathGL graphics: @code{mglGraphFLTK}, @code{mglGraphQT}, @code{mglGraphGLUT}. All these classes allow user to show, rotate, export, and change view of the plot using keyboard. Most of them (except @code{mglGraphGLUT}) also have toolbar and menu for simplifying plot manipulation. Usually these classes (except @code{mglGraphGLUT}) are derived from @code{mglGraphZB} class and have a ``connected'' class for widget in corresponding window library. All window classes have the same set of functions (@pxref{mglGraphAB class}). Below the full list of classes with short comments.
-
- at deftp {Class} mglGraphFLTK
-Class @code{mglGraphFLTK} adds the possibility to create plotting window with the help of FLTK library. It allows one to show, rotate, export, and change view of the plot by keyboard, menu and toolbar. ``Corresponding'' widget class is @code{Fl_MathGL}. Class is defined in @code{#include <mgl/mgl_fltk.h>}.
- at end deftp
-
- at deftp {Class} Fl_MathGL
-Class is FLTK widget for displaying the MathGL output. Class is defined in @code{#include <mgl/mgl_fltk.h>}.
- at end deftp
-
- at deftp {Class} mglGraphQT
-Class @code{mglGraphQT} adds the possibility to create plotting window with the help of QT library. It allows one to show, rotate, export, and change view of the plot by keyboard, menu and toolbar. ``Corresponding'' widget class is @code{QMathGL}. Class is defined in @code{#include <mgl/mgl_qt.h>}.
- at end deftp
-
- at deftp {Class} QMathGL
-Class is Qt widget for dysplaying the MathGL output. Class is defined in @code{#include <mgl/mgl_qt.h>}.
- at end deftp
-
- at deftp {Class} mglGraphGLUT
-Class @code{mglGraphGLUT} adds the possibility to create plotting window with the help of GLUT library. It allows one to show, rotate, export, and change view of the plot only by keyboard. Class is defined in @code{#include <mgl/mgl_glut.h>}.
- at end deftp
-
- at menu
-* Fl_MathGL class::
-* QMathGL class::
- at end menu
-
- at c ------------------------------------------------------------------
- at node Fl_MathGL class, QMathGL class, , Widget classes
- at section Fl_MathGL class
- at cindex Fl_MathGL
- at cindex widgets
-
-Class is FLTK widget which display MathGL graphics (defined in @code{#include <mgl/mgl_fltk.h>}
-
- at deftypemethod Fl_MathGL @code{void} set_draw (@code{mglDraw *}dr)
-Sets drawing function from a class inherited from @code{mglDraw}.
- at end deftypemethod
- at deftypemethod Fl_MathGL @code{void} update (@code{mglGraph *}gr=@code{NULL})
-Update (redraw) plot using grapher @var{gr} (built-in by default).
- at end deftypemethod
- at deftypemethod Fl_MathGL @code{void} set_angle (@code{float} t, @code{float} p)
-Set angles for additional plot rotation
- at end deftypemethod
- at deftypemethod Fl_MathGL @code{void} set_state (@code{int} f)
-Set bitwise flags for general state (1-Alpha, 2-Light)
- at end deftypemethod
- at deftypemethod Fl_MathGL @code{void} set_state (@code{bool} z, @code{bool} r)
-Set flags for handling mouse: @var{z}=@code{true} allow zooming, @var{r}=@code{true} allow rotation/shifting/perspective and so on.
- at end deftypemethod
- at deftypemethod Fl_MathGL @code{void} set_zoom (@code{float} X1, @code{float} Y1, @code{float} X2, @code{float} Y2)
-Set zoom in/out region
- at end deftypemethod
- at deftypemethod Fl_MathGL @code{void} get_zoom (@code{float *}X1, @code{float *}Y1, @code{float *}X2, @code{float *}Y2)
-Get zoom in/out region
- at end deftypemethod
- at deftypemethod Fl_MathGL @code{void} set_popup (@code{const Fl_Menu_Item *}pmenu, @code{Fl_Widget *}w, @code{void *}v)
-Set popup menu pointer
- at end deftypemethod
- at deftypemethod Fl_MathGL @code{mglGraph *} get_graph ()
-Get pointer to grapher
- at end deftypemethod
-
- at deftypecv {Widget option} Fl_MathGL @code{Fl_Valuator *} tet_val
-Pointer to external tet-angle validator.
- at end deftypecv
- at deftypecv {Widget option} Fl_MathGL @code{Fl_Valuator *} phi_val
-Pointer to external phi-angle validator.
- at end deftypecv
- at deftypecv {Widget option} Fl_MathGL @code{mglGraphAB *} graph
-Pointer to grapher
- at end deftypecv
- at deftypecv {Widget option} Fl_MathGL @code{void *} draw_par
-Parameters for drawing function mglGraph::DrawFunc.
- at end deftypecv
- at deftypecv {Widget option} Fl_MathGL @code{int (*} draw_func @code{)(mglGraph *gr, void *par)}
-Drawing function for window procedure. It should return the number of frames.
- at end deftypecv
-
- at c ------------------------------------------------------------------
- at node QMathGL class, , Fl_MathGL class, Widget classes
- at section QMathGL class
- at cindex QMathGL
- at cindex widgets
-
-Class is Qt widget which display MathGL graphics (defined in @code{#include <mgl/mgl_qt.h>}
-
- at deftypemethod QMathGL @code{double} getRatio ()
-Return aspect ratio of the picture.
- at end deftypemethod
-
- at deftypemethod QMathGL @code{void} setDraw (@code{mglDraw *}dr)
-Sets drawing functions from a class inherited from @code{mglDraw}.
- at end deftypemethod
- at deftypemethod QMathGL @code{void} setDraw (@code{int (*}draw)(@code{mglGraph *}gr, @code{void *}p), @code{void *}par=@code{NULL})
-Sets the drawing function @var{draw}. There is support of a list of plots (frames). So as one can prepare a set of frames at first and redraw it fast later (but it requires more memory). Function should return positive number of frames for the list or zero if it will plot directly. Parameter @var{par} contains pointer to data for the plotting function @var{draw}.
- at end deftypemethod
-
- at deftypemethod QMathGL @code{void} setGraph (@code{mglGraphAB *}gr)
-Set pointer to external grapher (instead of built-in @code{mglGraphZB}). Note that QMathGL will automatically delete this object at destruction or at new @code{setGraph()} call.
- at end deftypemethod
-
- at deftypemethod QMathGL @code{void} setPopup (@code{QMenu *}p)
-Set popup menu pointer.
- at end deftypemethod
- at deftypemethod QMathGL @code{void} setSize (@code{int} w, @code{int} h)
-Set widget/picture sizes
- at end deftypemethod
- at deftypemethod QMathGL @code{double} getRatio ()
-Return aspect ratio of the picture.
- at end deftypemethod
-
- at deftypemethod QMathGL @code{int} getPer ()
-Get perspective value in percents.
- at end deftypemethod
- at deftypemethod QMathGL @code{int} getPhi ()
-Get Phi-angle value in degrees.
- at end deftypemethod
- at deftypemethod QMathGL @code{int} getTet ()
-Get Theta-angle value in degrees.
- at end deftypemethod
- at deftypemethod QMathGL @code{bool} getAlpha ()
-Get transparency state.
- at end deftypemethod
- at deftypemethod QMathGL @code{bool} getLight ()
-Get lightning state.
- at end deftypemethod
- at deftypemethod QMathGL @code{bool} getZoom ()
-Get mouse zooming state.
- at end deftypemethod
- at deftypemethod QMathGL @code{bool} getRotate ()
-Get mouse rotation state.
- at end deftypemethod
-
- at defop Slot QMathGL @code{void} refresh ()
-Redraw saved bitmap without executing drawing function.
- at end defop
- at defop Slot QMathGL @code{void} update (@code{mglGraph *}gr=@code{NULL})
-Update picture by executing drawing function.
- at end defop
- at defop Slot QMathGL @code{void} copy ()
-Copy graphics to clipboard.
- at end defop
- at defop Slot QMathGL @code{void} setPer (@code{int} val)
-Set perspective value.
- at end defop
- at defop Slot QMathGL @code{void} setPhi (@code{int} val)
-Set Phi-angle value.
- at end defop
- at defop Slot QMathGL @code{void} setTet (@code{int} val)
-Set Theta-angle value.
- at end defop
- at defop Slot QMathGL @code{void} setAlpha (@code{bool} val)
-Switch on/off transparency.
- at end defop
- at defop Slot QMathGL @code{void} setLight (@code{bool} val)
-Switch on/off lightning.
- at end defop
- at defop Slot QMathGL @code{void} setZoom (@code{bool} val)
-Switch on/off mouse zooming.
- at end defop
- at defop Slot QMathGL @code{void} setRotate (@code{bool} val)
-Switch on/off mouse rotation.
- at end defop
- at defop Slot QMathGL @code{void} zoomIn ()
-Zoom in graphics.
- at end defop
- at defop Slot QMathGL @code{void} zoomOut ()
-Zoom out graphics.
- at end defop
- at defop Slot QMathGL @code{void} restore ()
-Restore zoom and rotation to default values.
- at end defop
- at defop Slot QMathGL @code{void} reload ()
-Reload data and execute script.
- at end defop
- at defop Slot QMathGL @code{void} shiftLeft ()
-Shift graphics to left direction.
- at end defop
- at defop Slot QMathGL @code{void} shiftRight ()
-Shift graphics to right direction.
- at end defop
- at defop Slot QMathGL @code{void}shiftUp ()
-Shift graphics to up direction.
- at end defop
- at defop Slot QMathGL @code{void} shiftDown ()
-Shift graphics to down direction.
- at end defop
- at defop Slot QMathGL @code{void} exportPNG (@code{QString} fname=@code{""})
-Export current picture to PNG file.
- at end defop
- at defop Slot QMathGL @code{void} exportPNGs (@code{QString} fname=@code{""})
-Export current picture to PNG file (no transparency).
- at end defop
- at defop Slot QMathGL @code{void} exportJPG (@code{QString} fname=@code{""})
-Export current picture to JPEG file.
- at end defop
- at defop Slot QMathGL @code{void} exportBPS (@code{QString} fname=@code{""})
-Export current picture to bitmap EPS file.
- at end defop
- at defop Slot QMathGL @code{void} exportEPS (@code{QString} fname=@code{""})
-Export current picture to vector EPS file.
- at end defop
- at defop Slot QMathGL @code{void} exportSVG (@code{QString} fname=@code{""})
-Export current picture to SVG file.
- at end defop
- at defop Slot QMathGL @code{void} exportIDTF (@code{QString} fname=@code{""})
-Export current picture to IDTF file.
- at end defop
- at defop Slot QMathGL @code{void} setMGLFont (@code{QString} path)
-Restore (@var{path}=@code{""} or load font for graphics.
- at end defop
- at defop Slot QMathGL @code{void} print ()
-Print current picture
- at end defop
- at defop Slot QMathGL @code{void} adjust ()
-Adjust plot size to fill entire window. This function is executed only if graph is mglGraphQT instance.
- at end defop
- at defop Slot QMathGL @code{void} nextSlide ()
-Show next slide. This function is executed only if graph is mglGraphQT instance.
- at end defop
- at defop Slot QMathGL @code{void} prevSlide ()
-Show previous slide. This function is executed only if graph is mglGraphQT instance.
- at end defop
- at defop Slot QMathGL @code{void} animation (@code{bool} st=@code{true})
-Start animation. This function is executed only if graph is mglGraphQT instance.
- at end defop
- at defop Slot QMathGL @code{void} about ()
-Show about information.
- at end defop
- at defop Slot QMathGL @code{void} aboutQt ()
-Show information about Qt version.
- at end defop
-
- at defop Signal QMathGL @code{void} phiChanged (@code{int} val)
-Phi angle changed (by mouse or by toolbar).
- at end defop
- at defop Signal QMathGL @code{void} tetChanged (@code{int} val)
-Tet angle changed (by mouse or by toolbar).
- at end defop
- at defop Signal QMathGL @code{void} perChanged (@code{int} val)
-Perspective changed (by mouse or by toolbar).
- at end defop
- at defop Signal QMathGL @code{void} alphaChanged (@code{bool} val)
-Transparency changed (by toolbar).
- at end defop
- at defop Signal QMathGL @code{void} lightChanged (@code{bool} val)
-Lighting changed (by toolbar).
- at end defop
- at defop Signal QMathGL @code{void} zoomChanged (@code{bool} val)
-Zooming changed (by toolbar).
- at end defop
- at defop Signal QMathGL @code{void} rotateChanged (@code{bool} val)
-Rotation changed (by toolbar).
- at end defop
-
- at deftypecv {Widget option} QMathGL @code{QString} appName
-Application name for message boxes.
- at end deftypecv
- at deftypecv {Widget option} QMathGL @code{bool} autoResize
-Allow auto resizing (default is false).
- at end deftypecv
- at deftypecv {Widget option} QMathGL @code{int} animDelay
-Animation delay in ms.
- at end deftypecv
-
-
-
- at c ------------------------------------------------------------------
- at c @node mglData class, Other classes, Widget classes, Top
- at c @chapter mglData class
-
- at include data_en.texi
-
-
-
- at c ------------------------------------------------------------------
- at node Other classes, MGL interface, mglData class, Top
- at chapter Other classes
-
- at menu
-* mglParse class::
-* mglFormula class::
-* mglFont class::
-* mglColor class::
-* mglPoint class::
-* mglVar class::
-* mglCommand class::
-* mglArg class::
- at end menu
-
- at c ------------------------------------------------------------------
- at node mglParse class, mglFormula class, , Other classes
- at section mglParse class
- at cindex mglParse
-
-Class for parsing and executing MGL script. This class is defined in @code{#include <mgl/mgl_parse.h>}.
-
-Class mglParse is the interpreter for MGL scripts (@pxref{MGL interface}). The main function of mglParse class is @code{Parse()}. Exactly this function parses and executes the script string-by-string. Also there are two subservient functions for the finding and creation of a variable. These functions can be useful for displaying values of variables (arrays) in some external program (in window, for example). The variable @var{DataList} contains full list of variables in script. Flag @var{AllowSetSize} allows one to prevent changing the size of the picture inside the script (forbids the MGL command @code{setsize}).
-
-Note an important feature -- if user defines function @var{func} in variable then it will be called before the destroying of this variable (@pxref{mglVar class}).
-
- at deftypefn {Method on @code{mglParse} (C++, Python)} @code{} mglParse (@code{bool} setsize=@code{false})
- at deftypefnx {C function} @code{HMPR} mgl_create_parser ()
-Constructor initializes all values with zero and set @var{AllowSetSize} value.
- at end deftypefn
-
- at deftypefn {Method on @code{mglParse} (C++, Python)} @code{} ~mglParse ()
- at deftypefnx {C function} @code{void} mgl_delete_parser (@code{HMPR} p)
-Destructor delete parser
- at end deftypefn
-
- at deftypefn {Method on @code{mglParse} (C++, Python)} @code{int} Parse (@code{mglGraph *}gr, @code{const char *}str, @code{long} pos=@code{0})
- at deftypefnx {Method on @code{mglParse} (C++)} @code{int} Parse (@code{mglGraph *}gr, @code{const wchar_t *}str, @code{long} pos=@code{0})
- at deftypefnx {C function} @code{int} mgl_parse (@code{HMGL} gr, @code{HMPR} p, @code{const char *}str, @code{int} pos)
- at deftypefnx {C function} @code{int} mgl_parsew (@code{HMGL} gr, @code{HMPR} p, @code{const wchar_t *}str, @code{int} pos)
-Main function in the class. It parses the string @var{str} and executes it by using @var{gr} as a graphics plotter. Returns the value depending on an error presence in the string @var{str}: 0 -- no error, 1 -- wrong command argument(s), 2 -- unknown command, 3 -- string is too long. Optional argument @var{pos} allows to save the string position in the document (or file) for using @code{for|next} command.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraphAB} (C++)} @code{void} ToggleAlpha ()
+ at deftypefnx {C function} @code{int} mgl_wnd_toggle_alpha (@code{HMGL} gr)
+ÐклÑÑаеÑ/вÑклÑÑÐ°ÐµÑ Ð¿ÑозÑаÑноÑÑÑ, но не пеÑезапиÑÑÐ²Ð°ÐµÑ Ð½Ð°ÑÑÑойки полÑзоваÑелÑÑкой ÑÑнкÑии ÑиÑованиÑ.
@end deftypefn
-
- at deftypefn {Method on @code{mglParse} (C++)} @code{int} Export (@code{wchar_t} cpp_out at code{[1024]}, @code{mglGraph *}gr, @code{const wchar_t *}str)
-Function parses the string @var{str}, executes it by using @var{gr} as a graphics plotter and exports it to C++ code. Returns the value depending on an error presence in the string @var{str}: 0 -- no error, 1 -- wrong command argument(s), 2 -- unknown command, 3 -- string is too long. Output C++ text will be placed in @var{out} variable. If string @var{str} have options (defined after ';' symbol) then the corresponding C++ texts are placed in variables @var{op1}, @var{op2}.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraphAB} (C++)} @code{void} ToggleLight ()
+ at deftypefnx {C function} @code{int} mgl_wnd_toggle_light (@code{HMGL} gr)
+ÐклÑÑаеÑ/вÑклÑÑÐ°ÐµÑ Ð¾ÑвеÑение, но не пеÑезапиÑÑÐ²Ð°ÐµÑ Ð½Ð°ÑÑÑойки полÑзоваÑелÑÑкой ÑÑнкÑии ÑиÑованиÑ.
+Switch on/off lighting but do not overwrite switches in user drawing function.
@end deftypefn
-
- at deftypefn {Method on @code{mglParse} (C++)} @code{void} Execute (@code{mglGraph *}gr, @code{FILE *}fp, @code{bool} print=@code{false})
-Function parse and execute line-by-line MGL script in file @var{fp}. If @var{print}=@code{true} then all warnings and information will be printed in stdout. Also this function support the @code{for|next} MGL commands.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraphAB} (C++)} @code{void} ToggleZoom ()
+ at deftypefnx {C function} @code{int} mgl_wnd_toggle_zoom (@code{HMGL} gr)
+ÐклÑÑаеÑ/вÑклÑÑÐ°ÐµÑ Ð¿Ñиближение вÑбÑанного мÑÑÑÑ Ð¾Ð±Ð»Ð°ÑÑи ÑиÑÑнка.
@end deftypefn
- at deftypefn {Method on @code{mglParse} (C++)} @code{void} Execute (@code{mglGraph *}gr, @code{int} num, @code{const wchar_t **}text, @code{void (*} error @code{)(int line, int kind)=NULL})
-Function parse and execute line-by-line MGL script in array @var{text}. If @var{error} is not @code{NULL} then this function will be called for all warnings, information and other messages. Also this function support the @code{for|next} MGL commands.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraphAB} (C++)} @code{void} ToggleRotate ()
+ at deftypefnx {C function} @code{int} mgl_wnd_toggle_rotate (@code{HMGL} gr)
+ÐклÑÑаеÑ/вÑклÑÑÐ°ÐµÑ Ñежим вÑаÑÐµÐ½Ð¸Ñ Ð¼ÑÑÑÑ. ÐбÑÑно Ð»ÐµÐ²Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° вÑаÑÐ°ÐµÑ Ð³ÑаÑик, ÑÑеднÑÑ ÑдвигаеÑ, пÑÐ°Ð²Ð°Ñ Ð¿ÑÐ¸Ð±Ð»Ð¸Ð¶Ð°ÐµÑ Ð¸ менÑÐµÑ Ð¿ÐµÑÑпекÑивÑ.
@end deftypefn
-
- at deftypefn {Method on @code{mglParse} (C++, Python)} @code{void} Execute (@code{mglGraph *}gr, @code{const char *}text, @code{void (*} error @code{)(int line, int kind)=NULL})
- at deftypefnx {Method on @code{mglParse} (C++)} @code{void} Execute (@code{mglGraph *}gr, @code{const wchar_t *}text, @code{void (*} error @code{)(int line, int kind)=NULL})
- at deftypefnx {C function} @code{void} mgl_parse_text (@code{HMGL} gr, @code{HMPR} p, @code{const char *}text)
- at deftypefnx {C function} @code{void} mgl_parsew_text (@code{HMGL} gr, @code{HMPR} p, @code{const wchar_t *}text)
-Function parse and execute line-by-line MGL script in string @var{text}. Lines are separated by @samp{\n} symbol as usual. If @var{error} is not @code{NULL} then this function will be called for all warnings, information and other messages. Also this function support the @code{for|next} MGL commands.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraphAB} (C++)} @code{void} ToggleNo ()
+ at deftypefnx {C function} @code{int} mgl_wnd_toggle_no (@code{HMGL} gr)
+ÐÑклÑÑÐ°ÐµÑ Ñежим пÑиближениÑ/вÑаÑÐµÐ½Ð¸Ñ Ð¸ воÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð²Ð¸Ð´ по ÑмолÑаниÑ.
+Switch off all zooming and rotation and restore initial state.
@end deftypefn
-
- at deftypefn {Method on @code{mglParse} (C++, Python)} @code{bool} AddParam (@code{int} n, @code{const char *}str, @code{bool} isstr=@code{true})
- at deftypefnx {Method on @code{mglParse} (C++)} @code{bool} AddParam (@code{int} n, @code{const wchar_t *}str, @code{bool} isstr=@code{true})
- at deftypefnx {C function} @code{void} mgl_add_param (@code{HMPR} p, @code{int} id, @code{const char *}val)
- at deftypefnx {C function} @code{void} mgl_add_paramw (@code{HMPR} p, @code{int} id, @code{const wchar_t *}val)
-Function set the value of @var{n}-th parameter as string @var{str} (@var{n}=0, 1 ... 9). It return @code{true} for success.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraphAB} (C++)} @code{void} Update ()
+ at deftypefnx {C function} @code{int} mgl_wnd_update (@code{HMGL} gr)
+ÐбновлÑÐµÑ ÑодеÑжимое окна.
@end deftypefn
-
- at deftypefn {Method on @code{mglParse} (C++, Python)} @code{mglVar *} FindVar (@code{const char *}name)
- at deftypefnx {Method on @code{mglParse} (C++)} @code{mglVar *} FindVar (@code{const wchar_t *}name)
- at deftypefnx {C function} @code{const HMDT} mgl_find_var (@code{HMPR} p, @code{const char *}name)
-Function returns the pointer to variable with name @var{name} or zero if variable is absent. Use this function to put external data array to the script or get the data from the script.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraphAB} (C++)} @code{void} ReLoad (@code{bool} o)
+ at deftypefnx {C function} @code{int} mgl_wnd_reload (@code{HMGL} gr, @code{int} val)
+ÐеÑезагÑÑÐ¶Ð°ÐµÑ Ð´Ð°Ð½Ð½Ñе полÑзоваÑÐµÐ»Ñ Ð¸ обновлÑÐµÑ ÐºÐ°ÑÑинкÑ.
@end deftypefn
- at deftypefn {Method on @code{mglParse} (C++, Python)} @code{mglVar *} AddVar (@code{const char *}name)
- at deftypefnx {Method on @code{mglParse} (C++)} @code{mglVar *} AddVar (@code{const wchar_t *}name)
- at deftypefnx {C function} @code{const HMDT} mgl_add_var (@code{HMPR} p, @code{const char *}name)
-Function returns the pointer to variable with name @var{name}. If variable is absent then new variable is created with name @var{name}. Use this function to put external data array to the script or get the data from the script.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraphAB} (C++)} @code{void} Adjust ()
+ at deftypefnx {C function} @code{int} mgl_wnd_adjust (@code{HMGL} gr)
+ÐодгонÑÐµÑ ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ°ÑÑинки под ÑÐ°Ð·Ð¼ÐµÑ Ð¾ÐºÐ½Ð° (виджеÑа).
@end deftypefn
-
- at deftypefn {Method on @code{mglParse} (C++)} @code{void} DeleteVar (@code{mglVar *}v)
- at deftypefnx {Method on @code{mglParse} (C++)} @code{void} DeleteVar (@code{const char *}name)
- at deftypefnx {Method on @code{mglParse} (C++)} @code{void} DeleteVar (@code{const wchar_t *}name)
-Function delete the variable specified by its name or by its pointer.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraphAB} (C++)} @code{void} NextFrame ()
+ at deftypefnx {C function} @code{int} mgl_wnd_next_frame (@code{HMGL} gr)
+ÐоказÑÐ²Ð°ÐµÑ ÑледÑÑÑий кадÑ.
@end deftypefn
-
- at deftypefn {Method on @code{mglParse} (C++, Python)} @code{inline void} RestoreOnce ()
- at deftypefnx {C function} @code{void} mgl_restore_once (@code{HMPR} p)
-Restore Once flag.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraphAB} (C++)} @code{void} PrevFrame ()
+ at deftypefnx {C function} @code{int} mgl_wnd_prev_frame (@code{HMGL} gr)
+ÐоказÑÐ²Ð°ÐµÑ Ð¿ÑедÑдÑÑий кадÑ.
+Show previous frame if one.
@end deftypefn
-
- at deftypefn {Method on @code{mglParse} (Python)} @code{void} AllowSetSize (@code{bool} a)
- at deftypefnx {C function} @code{void} mgl_parser_allow_setsize (@code{HMPR} p, @code{int} a)
-Allow to parse 'setsize' command or not.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraphAB} (C++)} @code{void} Animation ()
+ at deftypefnx {C function} @code{int} mgl_wnd_animation (@code{HMGL} gr)
+ÐапÑÑкаеÑ/оÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ñлайд-ÑÐ¾Ñ (анимаÑиÑ) кадÑов.
@end deftypefn
- at deftypefn {Method on @code{mglParse} (C++)} @code{void} AddCommand (@code{mglCommand *}cmd, @code{int} num=@code{0})
-Add @var{num} commands @var{cmd} to the defined MGL commands list. Parameter @var{cmd} is array of @code{mglCommand} structures. If parameter @var{num}=0 then it will be determined automatically. At this, array @var{cmd} @strong{must have} last element with @code{name=L""}
+ at deftypefn {C function} @code{int} mgl_wnd_set_auto_clf (@code{HMGL} gr, @code{int} val)
@end deftypefn
-
- at deftypecv {Option} mglParse @code{mglVar *} DataList
-List of variables defined in script.
- at end deftypecv
- at deftypecv {Option} mglParse @code{bool} AllowSetSize
-Flag which allows/forbids the command @code{setsize} in scripts.
- at end deftypecv
- at deftypecv {Option} mglParse @code{bool} Stop
-Flag which interrupt script execution.
- at end deftypecv
- at deftypecv {Option} mglParse @code{mglCommand *} Cmd
-Table (array) of recognizable MGL commands (can be changed by user). Items in the table @strong{MUST be sorted} by @var{name} field !!! Last items must have empty name (i.e. @code{L""}).
- at end deftypecv
- at deftypecv {Option} mglParse @code{wchar_t *} op1
-These strings contain command options and should be placed before the command. These variables are used for MGL->C++ (or other language) conversion.
- at end deftypecv
- at deftypecv {Option} mglParse @code{wchar_t *} op2
-These strings contain command options and should be placed after the command. These variables are used for MGL->C++ (or other language) conversion.
- at end deftypecv
-
- at c ------------------------------------------------------------------
- at node mglFormula class, mglFont class, mglParse class, Other classes
- at section mglFormula class
- at cindex mglFormula
-
-Class for evaluating of formula specified by the string. This class is defined in @code{#include <mgl/mgl_eval.h>}.
-
-It is the fast variant of formula evaluation. At creation it will be recognized and compiled to tree-like internal code. At evaluation stage only fast calculations are performed. There is no difference between lower or upper case in formulas. If argument value lie outside the range of function definition then function returns NaN.
-
-There are a lot of functions and operators available. The operators are: @samp{+} -- addition, @samp{-} -- subtraction, @samp{*} -- multiplication, @samp{/} -- division, @samp{^} -- integer power. Also there are logical ``operators'': @samp{<} -- true if x<y, @samp{>} -- true if x>y, @samp{=} -- true if x=y, @samp{&} -- true if x and y both nonzero, @samp{|} -- true if x or y nonzero. These logical operators have lowest priority and return 1 if true or 0 if false.
-
-The basic functions are: @samp{sqrt(x)} -- square root of @var{x}, @samp{pow(x,y)} power @var{x} in @var{y}, @samp{ln(x)} -- natural logarithm of @var{x}, @samp{lg(x)} -- decimal logarithm of @var{x}, @samp{log(a,x)} -- logarithm base @var{a} of @var{x}, @samp{abs(x)} -- absolute value of @var{x}, @samp{sign(x)} -- sign of @var{x}, @samp{mod(x,y)} -- x modulo y, @samp{step(x)} -- step function, @samp{rnd} -- random number, @samp{pi} -- number @math{\pi=3.1415926...}.
-
-Trigonometric functions are: @samp{sin(x)}, @samp{cos(x)}, @samp{tan(x)} (or @samp{tg(x)}). Inverse trigonometric functions are: @samp{asin(x)}, @samp{acos(x)}, @samp{atan(x)}. Hyperbolic functions are: @samp{sinh(x)} (or @samp{sh(x)}), @samp{cosh(x)} (or @samp{ch(x)}), @samp{tanh(x)} (or @samp{th(x)}). Inverse hyperbolic functions are: @samp{asinh(x)}, @samp{acosh(x)}, @samp{atanh(x)}.
-
-There are a set of special functions: @samp{gamma(x)} -- Gamma function @math{\Gamma(x) = \int_0^\infty dt t^@{x-1@} \exp(-t)} , @samp{psi(x)} -- digamma function @math{\psi(x) = \Gamma'(x)/\Gamma(x)} for x!=0, @samp{ai(x)} -- Airy function Ai(x), @samp{bi(x)} -- Airy function Bi(x), @samp{cl(x)} -- Clausen function, @samp{li2(x)} (or @samp{dilog(x)}) -- dilogarithm @math{Li_2(x) = - \Re \int_0^x ds \log(1-s)/s}, @samp{sinc(x)} -- compute @math{sinc(x) = \sin(\pi x) / (\pi x)} for any value of x, @samp{zeta(x)} -- Riemann zeta function @math{\zeta(s) = \sum_@{k=1@}^\infty k^@{-s@}} for arbitrary s!=1, @samp{eta(x)} -- eta function @math{\eta(s) = (1-2^@{1-s@}) \zeta(s)} for arbitrary s, @samp{lp(l,x)} -- Legendre polynomial @math{P_l(x)}, (|x|<=1, l>=0), @samp{w0(x)} -- principal branch of the Lambert @var{W} function, @samp{w1(x)} -- principal branch of the Lambert @var{W} function. Function W(x) is defined to be solution of the equation @math{W \exp(W) = x}.
-
-The exponent integrals are: @samp{ci(x)} -- Cosine integral @math{Ci(x) = \int_0^x dt \cos(t)/t}, @samp{si(x)} -- Sine integral @math{Si(x) = \int_0^x dt \sin(t)/t}, @samp{erf(x)} -- error function @math{erf(x) = (2/\sqrt(\pi)) \int_0^x dt \exp(-t^2)}, @samp{ei(x)} -- exponential integral @math{Ei(x) := - PV(\int_@{-x@}^\infty dt \exp(-t)/t)} (where PV denotes the principal value of the integral), @samp{e1(x)} -- exponential integral @math{E_1(x) := Re \int_1^\infty dt \exp(-xt)/t} , @samp{e2(x)} -- exponential integral @math{E_2(x) := Re \int_1^\infty dt \exp(-xt)/t^2}, @samp{ei3(x)} -- exponential integral @math{Ei_3(x) = \int_0^x dt \exp(-t^3)} for x>=0.
-
-Bessel functions are: @samp{j(nu,x)} -- regular cylindrical Bessel function of fractional order @var{nu}, @samp{y(nu,x)} -- irregular cylindrical Bessel function of fractional order @var{nu}, @samp{i(nu,x)} -- regular modified Bessel function of fractional order @var{nu}, @samp{k(nu,x)} -- irregular modified Bessel function of fractional order @var{nu}.
-
-Elliptic integrals are: @samp{ee(k)} -- complete elliptic integral is denoted by @math{E(k) = E(\pi/2, k)}, @samp{ek(k)} -- complete elliptic integral is denoted by @math{K(k) = F(\pi/2, k)}, @samp{e(phi,k)} -- elliptic integral @math{E(\phi,k) = \int_0^\phi dt \sqrt((1 - k^2 \sin^2(t)))}, @samp{f(phi,k)} -- elliptic integral @math{F(\phi,k) = \int_0^\phi dt 1/\sqrt((1 - k^2 \sin^2(t)))}.
-
-Jacobi elliptic functions are: @samp{sn(u,m)}, @samp{cn(u,m)}, @samp{dn(u,m)}, @samp{sc(u,m)}, @samp{sd(u,m)}, @samp{ns(u,m)}, @samp{cs(u,m)}, @samp{cd(u,m)}, @samp{nc(u,m)}, @samp{ds(u,m)}, @samp{dc(u,m)}, @samp{nd(u,m)}.
-
-Note, some of these functions are unavailable if NO\_GSL is defined during compilation of MathGL library.
-
- at deftypemethod mglFormula @code{} mglFormula (@code{const char *}str)
-Parses the formula @var{str} and creates formula-tree. Constructor recursively parses the formula and creates a tree-like structure containing functions and operators for fast further evaluating by @code{Calc()} or @code{CalcD()} functions.
- at end deftypemethod
- at deftypemethod mglFormula @code{float} Calc (@code{float} x, @code{float} y=@code{0}, @code{float} z=@code{0}, @code{float} u=@code{0})
-Evaluates the formula for @code{'x','r'}=@var{x}, @code{'y','n'}=@var{y}, @code{'z','t'}=@var{z}, @code{'a','u'}=@var{u}. Error code (if one) can be obtained from function @code{GetError()}.
- at end deftypemethod
- at deftypemethod mglFormula @code{float} Calc (@code{float} x, @code{float} y, @code{float} z, @code{float} u, @code{float} v, @code{float} w)
-Evaluates the formula for @code{'x'}=@var{x}, @code{'y'}=@var{y}, @code{'z'}=@var{z}, @code{'u'}=@var{u}, @code{'v'}=@var{v}, @code{'w'}=@var{w}. Error code (if one) can be obtained from function @code{GetError()}.
- at end deftypemethod
- at deftypemethod mglFormula @code{float} Calc (@code{float} var at code{['z'-'a'+1]})
-Evaluates the formula for variables in array @var{var}['z'-'a']. Error code (if one) can be obtained from function @code{GetError()}.
- at end deftypemethod
- at deftypemethod mglFormula @code{float} CalcD (@code{float} var at code{['z'-'a'+1]}, @code{char} diff)
-Evaluates the formula derivation respect to @var{diff} for variables in array @var{var}['z'-'a']. Error code (if one) can be obtained from function @code{GetError()}.
- at end deftypemethod
- at deftypemethod mglFormula @code{int} GetError ()
-Returns error code: @code{0} means no error; @code{ERR_LOG} means error in logarithm or power functions; @code{ERR_ARC} means error in inverse functions (like asin); @code{ERR_SQRT} means error in sqrt function.
- at end deftypemethod
-
- at c ------------------------------------------------------------------
- at node mglFont class, mglColor class, mglFormula class, Other classes
- at section mglFont class
- at cindex mglFont
-
-Class for working with font: load, get metrics, parse and draw strings. This class is defined in @code{#include <mgl/mgl_font.h>}.
-
-The class is based on loading and drawing of vector Hershey font. There are two styles of specifying of the font type and aligning: by integer parameters or by string.
-
-The string can be any combination of characters: @samp{rbiLCRwou}. The font types are: @samp{r} -- roman font, @samp{i} -- italic style, @samp{b} -- bold style. By default roman font (that is @samp{} or @samp{r}) is used. The align types are: @samp{L} -- align left (default), @samp{C} -- align center, @samp{R} -- align right. Additional font effects are: @samp{w} -- wire, @samp{o} -- over-lined, @samp{u} -- underlined.
-
-The over way of font and alignment setting is the using of the integer constant. Integer font Id can be one of predefined constants: @code{MGL_FONT_ITAL, MGL_FONT_BOLD, MGL_FONT_BOLD_ITAL = MGL_FONT_ITAL+MGL_FONT_BOLD}. Default font is @code{MGL_FONT_ROMAN}. Also there are flags @code{MGL_FONT_ULINE, MGL_FONT_OLINE, MGL_FONT_WIRE} for additional font effects. Align parameter controls the text alignment: 0 -- align left, 1 -- align center, 2 -- align right.
-
-Parsing of the string to special (TeX-like) commands will be done if variable @var{parse} is true (it's default). There are commands for the font style changing inside the string (for example, use \b for bold font): \a or \overline -- over-lined, \b or \textbf -- bold, \i or \textit -- italic, \r or \textrm -- roman (disable bold and italic attributes), \u or \underline -- underlined, \w or \wire -- wired, \big -- bigger size, @@ -- smaller size. The lower and upper indexes are specified by @samp{_} and @samp{^} symbols. At this the changed font style is applied only on next symbol or symbols in braces @{@}. The text in braces @{@} are treated as single symbol that allow one to print the index of index. For example, compare the strings @samp{sin (x^@{2^3@})} and @samp{sin (x^2^3)}. You may also change text color inside string by command #? or by \color? where @samp{?} is symbolic id of the color (@pxref{mglColor class}). For example, words @samp{Blue} and @samp{red} will be colored in the string @samp{#b@{Blue@} and \colorr@{red@} text}.
-
-The most of commands for special TeX or AMSTeX symbols, the commands for font style changing (\textrm, \textbf, \textit, \overline, \underline), accents (\hat, \tilde, \dot, \ddot, \acute, \check, \grave, \bar, \breve) and roots (\sqrt, \sqrt3, \sqrt4) are recognized. The full list contain approximately 2000 commands. Note that first space symbol after the command is ignored, but second one is printed as normal symbol (space). For example, the following strings produce the same result @math{\tilde a}: @samp{\tilde@{a@}}; @samp{\tilde a}; @samp{\tilde@{@}a}.
-
- at ifhtml
- at html
-The Greek letters are recognizable special symbols: α – \alpha, β – \beta, γ – \gamma, δ – \delta, ε – \epsilon, η – \eta, ι – \iota, χ – \chi, κ – \kappa, λ – \lambda, μ – \mu, ν – \nu, o – \o, ω – \omega, ϕ – \phi, π – \pi, ψ – \psi, ρ – \rho, σ – \sigma, θ – \theta, τ – \tau, υ – \upsilon, ξ – \xi, ζ – \zeta, ς – \varsigma, ɛ – \varepsilon, ϑ – \vartheta, φ – \varphi, ϰ – \varkappa; A – \Alpha, B – \Beta, Γ – \Gamma, Δ – \Delta, E – \Epsilon, H – \Eta, I – \Iota, C – \Chi, K – \Kappa, Λ – \Lambda, M – \Mu, N – \Nu, O – \O, Ω – \Omega, Φ – \Phi, Π – \Pi, Ψ – \Psi, R – \Rho, Σ – \Sigma, Θ – \Theta, T – \Tau, Υ – \Upsilon, Ξ – \Xi, Z – \Zeta.
-
-<p>The small part of most common special TeX symbols are: ∠ – \angle, ⋅ – \cdot, ♣ – \clubsuit, ✓ – \checkmark, ∪ – \cup, ∩ – \cap, ♢ – \diamondsuit, ◇ – \diamond, ÷
- – \div,
-↓ – \downarrow, † – \dag, ‡ – \ddag, ≡ – \equiv, ∃ – \exists, ⌢ – \frown, ♭ – \flat, ≥ – \ge, ≥ – \geq, ≧ – \geqq, ← – \gets, ♡ – \heartsuit, ∞ – \infty, ∫ – \int, \Int, ℑ – \Im, ♢ – \lozenge, ⟨ – \langle, ≤ – \le, ≤ – \leq, ≦ – \leqq, ← – \leftarrow, ∓ – \mp, ∇ – \nabla, ≠ – \ne, ≠ – \neq, ♮ – \natural, ∮ – \oint, ⊙ – \odot, ⊕ – \oplus, ∂ – \partial, ∥ – \parallel, ⊥ –\perp, ± – \pm, ∝ – \propto, ∏ – \prod, ℜ – \Re, → – \rightarrow, ⟩ – \rangle, ♠ – \spadesuit, ~ – \sim, ⌣ – \smile, ⊂ – \subset, ⊃ – \supset, √ – \sqrt or \surd, § – \S, ♯ – \sharp, ∑ – \sum, × – \times, → – \to, ∴ – \therefore, ↑ – \uparrow, ℘ – \wp. </p>
- at end html
- at end ifhtml
- at ifnothtml
-The Greek letters are recognizable special symbols: @math{\alpha} -- \alpha, @math{\beta} -- \beta, @math{\gamma} -- \gamma, @math{\delta} -- \delta, @math{\epsilon} -- \epsilon, @math{\eta} -- \eta, @math{\iota} -- \iota, @math{\chi} -- \chi, @math{\kappa} -- \kappa, @math{\lambda} -- \lambda, @math{\mu} -- \mu, @math{\nu} -- \nu, @math{o} -- \o, @math{\omega} -- \omega, @math{\phi} -- \phi, @math{\pi} -- \pi, @math{\psi} -- \psi, @math{\rho} -- \rho, @math{\sigma} -- \sigma, @math{\theta} -- \theta, @math{\tau} -- \tau, @math{\upsilon} -- \upsilon, @math{\xi} -- \xi, @math{\zeta} -- \zeta, @math{\varsigma} -- \varsigma, @math{\varepsilon} -- \varepsilon, @math{\vartheta} -- \vartheta, @math{\varphi} -- \varphi, A -- \Alpha, B -- \Beta, @math{\Gamma} -- \Gamma, @math{\Delta} -- \Delta, E -- \Epsilon, H -- \Eta, I -- \Iota, C -- \Chi, K -- \Kappa, @math{\Lambda} -- \Lambda, M -- \Mu, N -- \Nu, O -- \O, @math{\Omega} -- \Omega, @math{\Phi} -- \Phi, @math{\Pi} -- \Pi, @math{\Psi} -- \Psi, R -- \Rho, @math{\Sigma} -- \Sigma, @math{\Theta} -- \Theta, T -- \Tau, @math{\Upsilon} -- \Upsilon, @math{\Xi} -- \Xi, Z -- \Zeta.
-
-The small part of most common special TeX symbols are: @math{\angle} -- \angle, @math{\aleph} -- \aleph, @math{\cdot} -- \cdot, @math{\clubsuit} -- \clubsuit, @math{\cup} -- \cup, @math{\cap} -- \cap, @math{\diamondsuit} -- \diamondsuit, @math{\diamond} -- \diamond, @math{\div} -- \div, @math{\downarrow} -- \downarrow, @math{\dag} -- \dag, @math{\ddag} -- \ddag, @math{\equiv} -- \equiv, @math{\exists} -- \exists, @math{\frown} -- \frown, @math{\flat} -- \flat, @math{\ge} -- \ge, @math{\geq} -- \geq, @math{\gets} -- \gets, @math{\heartsuit} -- \heartsuit, @math{\infty} -- \infty, @math{\in} -- \in, @math{\int} -- \int, @math{\Im} -- \Im, @math{\langle} -- \langle, @math{\le} -- \le, @math{\leq} -- \leq, @math{\leftarrow} -- \leftarrow, @math{\mp} -- \mp, @math{\nabla} -- \nabla, @math{\ne} -- \ne, @math{\neq} -- \neq, @math{\natural} -- \natural, @math{\oint} -- \oint, @math{\odot} -- \odot, @math{\oplus} -- \oplus, @math{\partial} -- \partial, @math{\parallel} -- \parallel, @math{\perp} -- \perp, @math{\pm} -- \pm, @math{\propto} -- \propto, @math{\prod} -- \prod, @math{\Re} -- \Re, @math{\rightarrow} -- \rightarrow, @math{\rangle} -- \rangle, @math{\spadesuit} -- \spadesuit, @math{\sim} -- \sim, @math{\smile} -- \smile, @math{\subset} -- \subset, @math{\supset} -- \supset, @math{\surd} -- \sqrt or \surd, @math{\S} -- \S, @math{\sharp} -- \sharp, @math{\sum} -- \sum, @math{\times} -- \times, @math{\to} -- \to, @math{\uparrow} -- \uparrow, @math{\wp} -- \wp and so on.
- at end ifnothtml
-
- at menu
-* Format of font files::
- at end menu
-
-
- at deftypemethod mglFont @code{} mglFont (@code{const char *}name=@code{MGL_DEF_FONT_NAME}, @code{const char *}path=@code{NULL})
-Initialize the font and load data from file @var{name} (default name is "STIX" for Linux and MacOS) or if @var{name}=@code{NULL} limited data from memory (default for Windows).
- at end deftypemethod
- at deftypemethod mglFont @code{bool} Load (@code{const char *} base, @code{const char *}path=@code{NULL})
-Load font from file @var{path}/@var{base} into the memory. The font may contain 4 files: @var{base}.vfm, @var{base}_b.vfm, @var{base}_i.vfm, @var{base}_bi.vfm. Appendix contain detailed description of font format.
- at end deftypemethod
- at deftypemethod mglFont @code{void} Restore ()
-Restore default font.
- at end deftypemethod
- at deftypemethod mglFont @code{void} (@code{mglFont *} fnt)
-Copy data from other font instance.
- at end deftypemethod
- at deftypemethod mglFont @code{void} Clear ()
-Clear memory by deleting the loaded font.
- at end deftypemethod
- at deftypemethod mglFont @code{inline unsigned} GetNumGlyph ()
-Return the number of glyphs in the font.
- at end deftypemethod
- at deftypemethod mglFont @code{inline bool} Ready ()
-Return true if font is loaded and ready for use.
- at end deftypemethod
-
-
- at deftypemethod mglFont @code{float} Height (@code{int} font)
-Gets height of text for font specified by integer constant.
- at end deftypemethod
- at deftypemethod mglFont @code{float} Puts (@code{const char *}str, @code{int} font=@code{0}, @code{int} align=@code{0})
-Prints 8-bit text string for font specified by integer constant.
- at end deftypemethod
- at deftypemethod mglFont @code{float} Width (@code{const char *}str, @code{int} font=@code{0})
-Gets width of 8-bit text string for font specified by integer constant.
- at end deftypemethod
- at deftypemethod mglFont @code{float} Puts (@code{const wchar_t *}str, @code{int} font=@code{0}, @code{int} align=@code{0})
-Prints Unicode text string for font specified by integer constant.
- at end deftypemethod
- at deftypemethod mglFont @code{float} Width (@code{const wchar_t *}str, @code{int} font=@code{0})
-Gets width of Unicode text string for font specified by integer constant.
- at end deftypemethod
-
-
- at deftypemethod mglFont @code{float} Height (@code{const char *}how)
-Gets height of text for font specified by string.
- at end deftypemethod
- at deftypemethod mglFont @code{float} Puts (@code{const char *}str, @code{const char *}how)
-Prints 8-bit text string for font specified by string.
- at end deftypemethod
- at deftypemethod mglFont @code{float} Width (@code{const char *}str, @code{const char *}how)
-Gets width of 8-bit text string for font specified by string.
- at end deftypemethod
- at deftypemethod mglFont @code{float} Puts (@code{const wchar_t *}str, @code{const char *}how)
-Prints Unicode text string for font specified by string.
- at end deftypemethod
- at deftypemethod mglFont @code{float} Width (@code{const wchar_t *}str, @code{const char *}how)
-Gets width of Unicode text string for font specified by string.
- at end deftypemethod
-
- at deftypecv {Parameter} mglFont @code{mglGraph *} gr
-Instance of mglGraph class which is used for character drawing.
- at end deftypecv
- at deftypecv {Parameter} mglFont @code{bool} parse
-Flag for switching on/off the parsing of TeX commands. Default value is @code{true}.
- at end deftypecv
-
- at c ------------------------------------------------------------------
- at node Format of font files, , , mglFont class
- at subsection Format of font files
-
-Starting from v.1.6 the MathGL library uses new font files. The font is defined in 4 files with suffixes @samp{*.vfm}, @samp{*_b.vfm}, @samp{*_i.vfm}, @samp{*_bi.vfm}. These files are text files containing the data for roman font, bold font, italic font and bold italic font. The files (or some symbols in the files) for bold, italic or bold italic fonts can be absent. In this case the roman glyph will be used for them. By analogy, if the bold italic font is absent but the bold font is present then bold glyph will be used for bold italic. You may create these font files by yourself from *.ttf, *.otf files with the help of program @code{font_tools}. This program can be found at MathGL home site.
-
-The format of font files (*.vfm -- vector font for MathGL) is the following.
- at enumerate
- at item
-First string contains human readable comment and is always ignored.
- at item
-Second string contains 3 numbers, delimited by space or tabulation. The order of numbers is the following: @var{numg} -- the number of glyphs in the file (integer), @var{fact} -- the factor for glyph sizing (float), @var{size} -- the size of buffer for glyph description (integer).
- at item
-After it @var{numg}-th strings with glyphs description are placed. Each string contains 6 positive numbers, delimited by space of tabulation. The order of numbers is the following: Unicode glyph ID, glyph width, number of lines in glyph, position of lines coordinates in the buffer (length is 2*number of lines), number of triangles in glyph, position of triangles coordinates in the buffer (length is 6*number of triangles).
- at item
-The end of file contains the buffer with point coordinates at lines or triangles vertexes. The size of buffer (the number of integer) is @var{size}.
- at end enumerate
-
-Note: the closing contour line is done automatically (so the last segment may be absent). For starting new contour use a point with coordinates @code{@{0x3fff, 0x3fff@}}.
-
-
- at c ------------------------------------------------------------------
- at node mglColor class, mglPoint class, mglFont class, Other classes
- at section mglColor class
- at cindex mglColor
-
-Structure for working with colors. This structure is defined in @code{#include <mgl/mgl.h>}.
-
-There are two ways to set the color in MathGL. First one is using of float values of red, green and blue channels for precise color definition. The second way is the using of character id. There are a set of characters specifying frequently used colors. Normally capital letter gives more dark color than lowercase one. The full list of characters is: @samp{k} -- black, @samp{r} -- red, @samp{R} -- dark red, @samp{g} -- green, @samp{G} -- dark green, @samp{b} -- blue, @samp{B} -- dark blue, @samp{c} -- cyan, @samp{C} -- dark cyan, @samp{m} -- magenta, @samp{M} -- dark magenta, @samp{y} -- yellow, @samp{Y} -- dark yellow (gold), @samp{h} -- gray, @samp{H} -- dark gray, @samp{w} -- white, @samp{W} -- bright gray, @samp{l} -- green-blue, @samp{L} -- dark green-blue, @samp{e} -- green-yellow, @samp{E} -- dark green-yellow, @samp{n} -- sky-blue, @samp{N} -- dark sky-blue, @samp{u} -- blue-violet, @samp{U} -- dark blue-violet, @samp{p} -- purple, @samp{P} -- dark purple, @samp{q} -- orange, @samp{Q} -- dark orange (brown).
-
-Also you may use ``lighted'' colors in color scheme specification (@emph{not in line style!}). The ``lighted'' color contain 2 symbols: first one is usual symbol for color specification, second one is digit for its brightness. The digit can be in range @samp{1}... at samp{9}. At this @samp{5} correspond to normal color, @samp{1} is very dark version of the color (practically black), @samp{9} is very bright version of the color (practically white).
-
- at float
- at image{png/colors, 7cm}
- at caption{Colors and its ids.}
- at end float
-
- at deftypecv {Parameter} mglVar @code{float} {r, g, b}
-Reg, green and blue component of color.
+ at deftypecv {Widget option} mglGraphAB @code{bool} AutoClf
+ÐклÑÑаеÑ/вÑклÑÑÐ°ÐµÑ Ð°Ð²ÑомаÑиÑеÑкÑÑ Ð¾ÑиÑÑÐºÑ ÑиÑÑнка Ð¼ÐµÐ¶Ð´Ñ Ð¿ÐµÑеÑиÑовкой. ÐÑклÑÑение полезно Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñ Ð½Ð°ÐºÐ¾Ð¿Ð»ÐµÐ½Ð¸ÐµÐ¼ (напÑимеÑ, ÑезÑлÑÑаÑов/ÑоÑек ÑаÑÑеÑа).
@end deftypecv
- at deftypemethod mglColor @code{} mglColor (@code{float} R, @code{float} G, @code{float} B)
-Constructor sets the color by float values of Red, Green and Blue channels.
- at end deftypemethod
- at deftypemethod mglColor @code{} mglColor (@code{char} c=@code{'k'})
-Constructor sets the color from character id. The black color is used by default.
- at end deftypemethod
- at deftypemethod mglColor @code{void} Set (@code{float} R, @code{float} G, @code{float} B)
-Sets color from values of Red, Green and Blue channels. This values should be in interval [0,1].
- at end deftypemethod
- at deftypemethod mglColor @code{void} Set (@code{mglColor} c, @code{float} bright=@code{1})
-Sets color as ``lighted'' version of color @var{c}.
- at end deftypemethod
- at deftypemethod mglColor @code{void} Set (@code{char} p)
-Sets color from symbolic id.
- at end deftypemethod
- at deftypemethod mglColor @code{bool} Valid ()
-Checks correctness of the color.
- at end deftypemethod
- at deftypemethod mglColor @code{float} Norm ()
-Gets maximal of spectral component.
- at end deftypemethod
- at deftypemethod mglColor @code{bool} operator== (@code{const mglColor &}c)
-Compare with another color
- at end deftypemethod
-
- at deftypefn {Library Function} {inline mglColor} operator+ (@code{const mglColor &}a, @code{const mglColor &}b)
-Adds colors by its RGB values.
- at end deftypefn
- at deftypefn {Library Function} {inline mglColor} operator- (@code{const mglColor &}a, @code{const mglColor &}b)
-Subtracts colors by its RGB values.
- at end deftypefn
- at deftypefn {Library Function} {inline mglColor} operator* (@code{const mglColor &}a, @code{float} b)
-Multiplies color by number.
- at end deftypefn
- at deftypefn {Library Function} {inline mglColor} operator* (@code{float} a, @code{const mglColor &}b)
-Multiplies color by number.
- at end deftypefn
- at deftypefn {Library Function} {inline mglColor} operator/ (@code{const mglColor &}a, @code{float} b)
-Divide color by number.
+ at deftypefn {C function} @code{int} mgl_wnd_set_delay (@code{HMGL} gr, @code{int} val)
@end deftypefn
- at deftypefn {Library Function} {inline mglColor} operator! (@code{const mglColor &}a)
-Return inverted color.
- at end deftypefn
-
- at c ------------------------------------------------------------------
- at node mglPoint class, mglArg class, mglColor class, Other classes
- at section mglPoint class
- at cindex mglPoint
-
-Structure describes point in space. This structure is defined in @code{#include <mgl/mgl.h>}
-
- at deftypecv {Parameter} mglVar @code{float} {x, y, z}
-Point coordinates. By default all values are zero.
+ at deftypecv {Widget option} mglGraphAB @code{float} Delay
+ÐадеÑжка анимаÑии в ÑекÑндаÑ
. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ñавно 1 ÑекÑнде.
@end deftypecv
- at deftypefn {Library Function} {inline mglPoint} operator+ (@code{const mglPoint &}a, @code{const mglPoint &}b)
-Point of summation (summation of vectors).
- at end deftypefn
- at deftypefn {Library Function} {inline mglPoint} operator- (@code{const mglPoint &}a, @code{const mglPoint &}b)
-Point of difference (difference of vectors).
- at end deftypefn
- at deftypefn {Library Function} {inline mglPoint} operator* (@code{float} a, @code{const mglPoint &}b)
-Multiplies (scale) points by number.
- at end deftypefn
- at deftypefn {Library Function} {inline mglPoint} operator* (@code{const mglPoint &}a, @code{float} b)
-Multiplies (scale) points by number.
- at end deftypefn
- at deftypefn {Library Function} {inline mglPoint} operator/ (@code{const mglPoint &}a, @code{float} b)
-Multiplies (scale) points by number 1/b.
- at end deftypefn
- at deftypefn {Library Function} {inline float} operator- (@code{const mglPoint &}a, @code{const mglPoint &}b)
-Scalar product of vectors.
- at end deftypefn
- at deftypefn {Library Function} {inline mglPoint} operator^ (@code{const mglPoint &}a, @code{const mglPoint &}b)
-Cross-product of vectors.
- at end deftypefn
- at deftypefn {Library Function} {inline mglPoint} operator& (@code{const mglPoint &}a, @code{const mglPoint &}b)
-The part of @var{a} which is perpendicular to vector @var{b}.
- at end deftypefn
- at deftypefn {Library Function} {inline mglPoint} operator| (@code{const mglPoint &}a, @code{const mglPoint &}b)
-The part of @var{a} which is parallel to vector @var{b}.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraphAB} (C++, Python)} @code{mglPoint} CalcXYZ (@code{int} xs, @code{int} ys)
+ at deftypefnx {C function} @code{void} mgl_calc_xyz (@code{HMGL} gr, @code{int} xs, @code{int} ys, @code{float *}x, @code{float *}y, @code{float *}z)
+ÐÑÑиÑлÑÐµÑ 3D кооÑдинаÑÑ @{x,y,z@} Ð´Ð»Ñ ÑкÑанной ÑоÑки @{xs,ys@}. РданнÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¸Ð³Ð½Ð¾ÑиÑÑеÑÑÑ Ð¿ÐµÑÑпекÑива гÑаÑика и ÑоÑмÑÐ»Ñ Ð¿ÐµÑеÑ
ода в кÑиволинейнÑе кооÑдинаÑÑ. ÐÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ð¿ÑоизводÑÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ñледнего иÑполÑзованного InPlot (@pxref{Transformation matrix}).
@end deftypefn
- at deftypefn {Library Function} {inline mglPoint} operator! (@code{const mglPoint &}a)
-Return vector perpendicular to vector @var{a}.
- at end deftypefn
- at deftypefn {Library Function} {inline bool} Norm (@code{const mglPoint &}a)
-Return the norm |@var{a}|^2 of vector @var{a}.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraphAB} (C++, Python)} @code{mglPoint} CalcScr (@code{mglPoint} p)
+ at deftypefnx {ÐеÑод клаÑÑа @code{mglGraphAB} (C++)} @code{void} CalcScr (@code{mglPoint} p, @code{int *}xs, @code{int *}ys)
+ at deftypefnx {C function} @code{void} mgl_calc_scr (@code{HMGL} gr, @code{float} x, @code{float} y, @code{float} z, @code{int *}xs, @code{int *}ys)
+ÐÑÑиÑлÑÐµÑ ÑкÑаннÑе кооÑдинаÑÑ @{xs,ys@} Ð´Ð»Ñ 3D кооÑÐ´Ð¸Ð½Ð°Ñ @{x,y,z@}. ÐÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ð¿ÑоизводÑÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ñледнего иÑполÑзованного InPlot (@pxref{Transformation matrix}).
@end deftypefn
- at deftypefn {Library Function} {inline bool} operator== (@code{const mglPoint &}a, @code{const mglPoint &}b)
-Return true if points are the same.
+ at deftypefn {C function} @code{int} mgl_wnd_set_show_mouse_pos (@code{HMGL} gr, @code{int} val)
@end deftypefn
- at deftypefn {Library Function} {inline bool} operator!= (@code{const mglPoint &}a, @code{const mglPoint &}b)
-Return true if points are different.
- at end deftypefn
-
- at c ------------------------------------------------------------------
- at node mglVar class, mglCommand class, mglArg class, Other classes
- at section mglVar class
- at cindex mglVar
-
-Structure describes variable of type @code{mglData} and its name in MGL script. This structure is used by @code{mglParse} and is defined in @code{#include <mgl/mgl_parse.h>}.
-
- at deftypecv {Parameter} mglVar @code{mglData} d
-Data itself
- at end deftypecv
- at deftypecv {Parameter} mglVar @code{wchar_t} s[256]
-Data name
- at end deftypecv
- at deftypecv {Parameter} mglVar @code{void *} o
-Pointer to external object for function @var{func}.
- at end deftypecv
- at deftypecv {Parameter} mglVar @code{mglVar *} next
-Pointer to next instance in list
- at end deftypecv
- at deftypecv {Parameter} mglVar @code{mglVar *} prev
-Pointer to prev instance in list
- at end deftypecv
- at deftypecv {Parameter} mglVar @code{bool} temp
-Flag for temporar variable. Temporal variables will be destroyed after script execution.
- at end deftypecv
- at deftypecv {Parameter} mglVar @code{void (*} func @code{)(void *)}
-Callback function for destroying non-temporal variable.
- at end deftypecv
-
- at deftypemethod mglGraphAB @code{void} MoveAfter (@code{mglVar *}var)
-Move variable after @var{var} and copy @code{func} from @code{var} (if @code{func} is not 0)
- at end deftypemethod
-
-
- at c ------------------------------------------------------------------
- at node mglCommand class, , mglVar class, Other classes
- at section mglCommand class
- at cindex mglCommand
-
-Structure describes MGL command, its name, short description, executable and export functions. The structure is used by @code{mglParse} and is defined in @code{#include <mgl/mgl_parse.h>}.
-
- at deftypecv {Parameter} mglCommand @code{const wchar_t *} name
-Name of command.
- at end deftypecv
- at deftypecv {Parameter} mglCommand @code{const wchar_t *} desc
-Short command description (can be NULL).
- at end deftypecv
- at deftypecv {Parameter} mglCommand @code{const wchar_t *} form
-Format of command arguments (can be NULL).
- at end deftypecv
- at deftypecv {Parameter} mglCommand @code{int (*} exec @code{)(mglGraph *gr, long n, mglArg *a, int k[10])const wchar_t *}
-Function for executing (plotting) the command using grapher @var{gr} and having @var{n}-th arguments @var{a}. Function must return 0 if all is OK; or 1 if arguments are wrong.
- at end deftypecv
- at deftypecv {Parameter} mglCommand @code{void (*} save @code{)(wchar_t out[1024], long n, mglArg *a, int k[10])const wchar_t *}
-Function for exporting in C++ (can be NULL).
+ at deftypecv {Widget option} mglGraphAB @code{float} ShowMousePos
+ÐклÑÑаеÑ/вÑклÑÑÐ°ÐµÑ Ð¿Ð¾ÐºÐ°Ð· кооÑÐ´Ð¸Ð½Ð°Ñ Ð¿Ð¾Ñледнего нажаÑÐ¸Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ мÑÑи на ÑиÑÑнке.
@end deftypecv
-
- at c ------------------------------------------------------------------
- at node mglArg class, mglVar class, mglPoint class, Other classes
- at section mglArg class
- at cindex mglArg
-
-Structure describes arguments of functions in the stucture @code{mglCommand}. It is defined in @code{#include <mgl/mgl_parse.h>}.
-
- at deftypecv {Parameter} mglArg @code{int} type
-Type of argument: 0-data, 1-string, 2-number.
- at end deftypecv
- at deftypecv {Parameter} mglArg @code{mglData *} d
-Pointer to data (used if type=0).
- at end deftypecv
- at deftypecv {Parameter} mglArg @code{wchar_t} w[2048]
-String with parameters (used if type=1 or if type=0 as variable name).
- at end deftypecv
- at deftypecv {Parameter} mglArg @code{char} s[2048]
-String with parameters (used if type=1).
- at end deftypecv
- at deftypecv {Parameter} mglArg @code{float} v
-Numerical value (used if type==2)
+ at deftypecv {Widget option} mglGraphAB @code{mglPoint} LastMousePos
+ÐоÑледнее положение нажаÑÐ¸Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ мÑÑи.
@end deftypecv
diff --git a/texinfo/concept_en.texi b/texinfo/concept_en.texi
new file mode 100644
index 0000000..f05b618
--- /dev/null
+++ b/texinfo/concept_en.texi
@@ -0,0 +1,171 @@
+
+ at node Coordinate axes, Line styles, , General concepts
+ at subsection Coordinate axes
+
+Two axis representations are used in MathGL. The first one consists of normalizing the data point coordinates in a box @var{Min}x at var{Max} (@pxref{Axis settings}). If @var{Cut} is @code{true} then the outlier points are omitted, otherwise they are projected to the bounding box (@pxref{Cutting}). Also, the point will be omitted if it lies inside the box defined by @var{CutMin} x @var{CutMax} or if the value of formula @code{CutOff}() is nonzero for its coordinates. After that, transformation formulas are applied to the data point. Finally, the data point is plotted by one of the functions.
+
+There is a possibility to set members @var{Max}, @var{Min} directly, but one should call @code{RecalcBorder()} function to setup plotting routines. A safer way is to set these values by calling the @code{Axis()} function, which calls @code{RecalcBorder()} automatically. Another way to specify the scaling of the axis is to set it as a minimal or maximal value of the data array. Functions @code{XRange(), YRange(), ZRange()} do it. The second (optional) argument is used to replace the axis range or to join with the existed range.
+
+The axis origin is defined by the variable @var{Org} and is applied to all consequent calls of axes or grid drawing. By default, if this point lies outside the bounding box then it is projected onto the one (variable @var{AutoOrg} controls it). If one of the values of @var{Org} is equal to NAN then the corresponding value will be selected automatically.
+
+There is 4-th axis @emph{c} (color axis or colorbar) in addition to the usual axes @emph{x, y, z}. It sets the range of values for the surface coloring. Its borders are automatically set to values of Min.z, Max.z during the call of @code{Axis()} function. Also, one can directly change the color range by setting variables @var{Cmax}, @var{Cmax}, or calling functions @code{CAxis()} or @code{CRange()}. Use @code{Colorbar()} function for showing the colorbar.
+
+The form (appearence) of tick labels is controlled by @code{SetTicks()} function (@pxref{Axis settings}). It has 3 arguments: first one @var{d} sets the tick step (if positive) or tick number (if negative) or switches logarithmic ticks on (if zero); the second one, @var{ns}, sets the number of subticks; the last one is the starting point for ticks (default is axis origin). Function @var{SetTuneTicks} switches on/off tick enhancing by factoring out acommon multiplier (for small coordinate values, like 0.001 to 0.002, or large, like from 1000 to 2000) or common component (for narrow range, like from 0.999 to 1.000). Finally, you may use functions @code{SetXTT(), SetYTT(), SetZTT(), SetCTT()} for setting templates for tick labels (it supports TeX symbols). Also, there is a possibility to print arbitrary text as tick labels the by help of @code{SetTicksVal()} function.
+
+ at node Line styles, Color scheme, Coordinate axes, General concepts
+ at subsection Line styles
+
+ at cindex Line style
+ at cindex Mark style
+ at cindex Arrows
+
+The line style is defined by the string which may contain specifications for color (@samp{wkrgbcymhRGBCYMHWlenupqLENUPQ}), dashing style (@samp{-|;:ji} or space), width (@samp{0123456789}) and marks (@samp{o+xsd.^v} and @samp{#} modifier). If one of the type of information is omitted then default values used with the previous color or one from palette (for @pxref{1D plotting}) are adopted.
+ at ifhtml
+ at html
+By default palette contain following colors: <span style="color: rgb(76, 76, 76);">dark gray</span> ‘<samp>H</samp>’, <span style="color: rgb(0, 0, 255);">blue</span> ‘<samp>b</samp>’, <span style="color: rgb(0, 255, 0);">green</span> ‘<samp>g</samp>’, <span style="color: rgb(255, 0, 0);">red</span> ‘<samp>r</samp>’, <span style="color: rgb(0, 255, 255);">cyan</span> ‘<samp>c</samp>’, <span style="color: rgb(255, 0, 255);">magenta</span> ‘<samp>m</samp>’, <span style="color: rgb(255, 255, 0);">yellow</span> ‘<samp>y</samp>’, <span style="color: rgb(127, 127, 127);">gray</span> ‘<samp>h</samp>’, <span style="color: rgb(0, 255, 127);">green-blue</span> ‘<samp>l</samp>’, <span style="color: rgb(0, 127, 255);">sky-blue</span> ‘<samp>n</samp>’, <span style="color: rgb(255, 127, 0);">orange</span> ‘<samp>q</samp>’, <span style="color: rgb(127, 255, 0);">green-yellow</span> ‘<samp>e</samp>’, <span style="color: rgb(127, 0, 255);">blue-violet</span> ‘<samp>u</samp>’, <span style="color: rgb(255, 0, 127);">purple</span> ‘<samp>p</samp>’.
+
+<p>The color types are: ‘<samp>k</samp>’ -- black, ‘<samp>r</samp>’ -- <span style="color: rgb(255, 0, 0);">red</span>, ‘<samp>R</samp>’ -- <span style="color: rgb(127, 0, 0);">dark red</span>, ‘<samp>g</samp>’ -- <span style="color: rgb(0, 255, 0);">green</span>, ‘<samp>G</samp>’ -- <span style="color: rgb(0, 127, 0);">dark green</span>, ‘<samp>b</samp>’ -- <span style="color: rgb(0, 0, 255);">blue</span>, ‘<samp>B</samp>’ -- <span style="color: rgb(0, 0, 127);">dark blue</span>, ‘<samp>c</samp>’ -- <span style="color: rgb(0, 255, 255);">cyan</span>, ‘<samp>C</samp>’ -- <span style="color: rgb(0, 127, 127);">dark cyan</span>, ‘<samp>m</samp>’ -- <span style="color: rgb(255, 0, 255);">magenta</span>, ‘<samp>M</samp>’ -- <span style="color: rgb(127, 0, 127);">dark magenta</span>, ‘<samp>y</samp>’ -- <span style="color: rgb(255, 255, 0);">yellow</span>, ‘<samp>Y</samp>’ -- <span style="color: rgb(127, 127, 0);">dark yellow (gold)</span>, ‘<samp>h</samp>’ -- <span style="color: rgb(127, 127, 127);">gray</span>, ‘<samp>H</samp>’ -- <span style="color: rgb(76, 76, 76);">dark gray</span>, ‘<samp>w</samp>’ -- white, ‘<samp>W</samp>’ -- <span style="color: rgb(178, 178, 178);">bright gray</span>, ‘<samp>l</samp>’ -- <span style="color: rgb(0, 255, 127);">green-blue</span>, ‘<samp>L</samp>’ -- <span style="color: rgb(0, 127, 63);">dark green-blue</span>, ‘<samp>e</samp>’ -- <span style="color: rgb(127, 255, 0);">green-yellow</span>, ‘<samp>E</samp>’ -- <span style="color: rgb(63, 127, 0);">dark green-yellow</span>, ‘<samp>n</samp>’ -- <span style="color: rgb(0, 127, 255);">sky-blue</span>, ‘<samp>N</samp>’ -- <span style="color: rgb(0, 63, 127);">dark sky-blue</span>, ‘<samp>u</samp>’ -- <span style="color: rgb(127, 0, 255);">blue-violet</span>, ‘<samp>U</samp>’ -- <span style="color: rgb(63, 0, 127);">dark blue-violet</span>, ‘<samp>p</samp>’ -- <span style="color: rgb(255, 0, 127);">purple</span>, ‘<samp>P</samp>’ -- <span style="color: rgb(127, 0, 63);">dark purple</span>, ‘<samp>q</samp>’ -- <span style="color: rgb(255, 127, 0);">orange</span>, ‘<samp>Q</samp>’ -- <span style="color: rgb(127, 63, 0);">dark orange (brown)</span>.</p>
+
+Dashing style has the following meaning: space -- no line (usable for plotting only marks), ‘<samp>-</samp>’ -- solid line (■■■■■■■■■■■■■■■■), ‘<samp>|</samp>’ -- long dashed line (■■■■■■■■□□□□□□□□), ‘<samp>;</samp>’ -- dashed line (■■■■□□□□■■■■□□□□), ‘<samp>=</samp>’ -- small dashed line (■■□□■■□□■■□□■■□□), ‘<samp>:</samp>’ -- dotted line (■□□□■□□□■□□□■□□□), ‘<samp>j</samp>’ -- dash-dotted line (■■■■■■■□□□□■□□□□), ‘<samp>i</samp>’ -- small dash-dotted line (■■■□□■□□■■■□□■□□).
+ at end html
+ at end ifhtml
+ at ifnothtml
+The line style is defined by the string which may contain specifications for color (@samp{wkrgbcymhRGBCYMHWlenupqLENUPQ}), dashing style (@samp{-|;:ji} or space), width (@samp{0123456789}) and marks (@samp{o+xsd.^v} and @samp{#} modifier). If one of the type of information is omitted then default values used with the previous color or one from palette (for @pxref{1D plotting}) are adopted. By default palette contain following colors: dark gray @samp{H}, blue @samp{b}, green @samp{g}, red @samp{r}, cyan @samp{c}, magenta @samp{m}, yellow @samp{y}, gray @samp{h}, blue-green @samp{l}, sky-blue @samp{n}, orange @samp{q}, yellow-green @samp{e}, blue-violet @samp{u}, purple @samp{p}.
+
+The color types are: @samp{k} -- black, @samp{r} -- red, @samp{R} -- dark red, @samp{g} -- green, @samp{G} -- dark green, @samp{b} -- blue, @samp{B} -- dark blue, @samp{c} -- cyan, @samp{C} -- dark cyan, @samp{m} -- magenta, @samp{M} -- dark magenta, @samp{y} -- yellow, @samp{Y} -- dark yellow (gold), @samp{h} -- gray, @samp{H} -- dark gray, @samp{w} -- white, @samp{W} -- bright gray, @samp{l} -- green-blue, @samp{L} -- dark green-blue, @samp{e} -- green-yellow, @samp{E} -- dark green-yellow, @samp{n} -- sky-blue, @samp{N} -- dark sky-blue, @samp{u} -- blue-violet, @samp{U} -- dark blue-violet, @samp{p} -- purple, @samp{P} -- dark purple, @samp{q} -- orange, @samp{Q} -- dark orange (brown).
+
+Dashing style has the following meaning: space -- no line (usable for plotting only marks), @samp{-} -- solid line (################), @samp{|} -- long dashed line (########________), @samp{;} -- dashed line (####____####____), @samp{=} -- small dashed line (##__##__##__##__), @samp{:} -- dotted line (#___#___#___#___), @samp{j} -- dash-dotted line (#######____#____), @samp{i} -- small dash-dotted line (###__#__###__#__).
+ at end ifnothtml
+
+Marker types are: @samp{o} -- circle, @samp{+} -- cross, @samp{x} -- skew cross, @samp{s} - square, @samp{d} - rhomb (or diamond), @samp{.} -- dot (point), @samp{^} -- triangle up, @samp{v} -- triangle down, @samp{<} -- triangle left, @samp{>} -- triangle right, @samp{#*} -- Y sign, @samp{#+} -- squared cross, @samp{#x} -- squared skew cross, @samp{#.} -- circled dot. If string contain symbol @samp{#} then the solid versions of markers are used.
+
+ at float
+ at image{../png/sample5, 7cm}
+ at caption{Styles of lines and marks.}
+ at end float
+
+One may specify to draw a special symbol (an arrow) at the beginning and at the end of line. This is done if the specification string contains one of the following symbols: @samp{A} -- outer arrow, @samp{V} -- inner arrow, @samp{I} -- transverse hatches, @samp{K} -- arrow with hatches, @samp{T} -- triangle, @samp{S} -- square, @samp{D} -- rhombus, @samp{O} -- circle, @samp{_} -- nothing (the default). The following rule applies: the first symbol specifies the arrow at the end of line, the second specifies the arrow at the beginning of the line. For example, @samp{r-A} defines a red solid line with usual arrow at the end, @samp{b|AI} defines a blue dash line with an arrow at the end and with hatches at the beginning, @samp{_O} defines a line with the current style and with a circle at the beginning. These styles are applicable during the graphics plotting as well (for example, @ref{1D plotting}).
+
+ at float
+ at image{../png/sampled, 7cm}
+ at caption{Arrow styles.}
+ at end float
+
+ at node Color scheme, Font styles, Line styles, General concepts
+ at subsection Color scheme
+
+ at cindex Color scheme
+
+The color scheme is used for determining the color of surfaces, isolines, isosurfaces and so on. The color scheme is defined by the string, which may contain several characters that are color id (@pxref{Line styles}) or characters @samp{d#:|}. Symbol @samp{d} denotes the interpolation by 3d position instead of the coloring by amplitude. Symbol @samp{#} switches to mesh drawing or to a wire plot. Symbol @samp{|} disables color interpolation in color scheme, which can be useful, for example, for sharp colors during matrix plotting. Symbol @samp{:} finishes the color scheme parsing. Following it, the user may put styles for the text, rotation axis for curves/isocontours, and so on. Color scheme may contain up to 32 color values.
+
+You may also use ``lighted'' colors in the color scheme specification (@emph{not in line style!}). The ``lighted'' color contain 2 symbols: first one is the usual symbol for color specification, the second one is a digit for its brightness. The digit can be in range @samp{1}... at samp{9}.
+Number @samp{5} corresponds to a normal color, @samp{1} is a very dark version of the color (practically black), and @samp{9} is a very bright version of the color (practically white). For example, the color scheme can be @samp{b2b7wr7r2}.
+
+ at float
+ at image{../png/colors, 7cm}
+ at caption{Colors and its ids.}
+ at end float
+
+For coloring by @emph{amplitude} (most common) the final color is a linear interpolation of color array. The color array is constructed from the string ids. The argument is the amplitude normalized between @var{Cmin} -- @var{Cmax} (@pxref{Axis settings}). For example, string containing 4 characters @samp{bcyr} corresponds to a colorbar from blue (lowest value) through cyan (next value) through yellow (next value) to the red (highest value). String @samp{kw} corresponds to a colorbar from black (lowest value) to white (highest value). String @samp{m} corresponds to a simple magenta color.
+
+There are several useful combinations. String @samp{kw} corresponds to the simplest gray color scheme where higher values are brighter. String @samp{wk} presents the inverse gray color scheme where higher value is darker. Strings @samp{kRryw}, @samp{kGgw}, @samp{kBbcw} present the well-known @emph{hot}, @emph{summer} and @emph{winter} color schemes. Strings @samp{BbwrR} and @samp{bBkRr} allow to view bi-color figure on white or black background, where negative values are blue and positive values are red. String @samp{BbcyrR} gives a color scheme similar to the well-known @emph{jet} color scheme.
+
+ at float
+ at image{../png/color_schemes, 7cm}
+ at caption{Most popular color schemes.}
+ at end float
+
+When coloring by @emph{coordinate}, the final color is determined by the position of the point in 3d space and is calculated from formula c=x*c[1] + y*c[2] + z*c[3]. Here, c[1], c[2], c[3] are the first three elements of color array; x, y, z are normalized to @var{Min} -- @var{Max} coordinates of the point. This type of coloring is useful for isosurface plot where color may show the exact position of a piece of surface.
+
+ at node Font styles, Textual formulas, Color scheme, General concepts
+ at subsection Font styles
+
+ at cindex Font styles
+
+Text style is specified by the string which may contain several characters of font (@samp{ribwou}) and/or alignment (@samp{LRC}) specifications. The string also may contain the color id characters @samp{wkrgbcymhRGBCYMHW} (@pxref{Line styles}) after the symbol @samp{:}. For example, @samp{biC:b} sets the bold italic font text aligned at the center and with blue color.
+
+The font types are: @samp{r} -- roman font, @samp{i} -- italic style, @samp{b} -- bold style. By default roman roman font is used. The align types are: @samp{L} -- align left (default), @samp{C} -- align center, @samp{R} -- align right. Additional font effects are: @samp{w} -- wired, @samp{o} -- over-lined, @samp{u} -- underlined.
+ at c Also a parsing of the LaTeX-like syntax is provided (for detail, @pxref{mglFont class} and @ref{Font settings}).
+
+Also a parsing of the LaTeX-like syntax is provided. There are commands for the font style changing inside the string (for example, use \b for bold font): \a or \overline -- over-lined, \b or \textbf -- bold, \i or \textit -- italic, \r or \textrm -- roman (disable bold and italic attributes), \u or \underline -- underlined, \w or \wire -- wired, \big -- bigger size, @@ -- smaller size. The lower and upper indexes are specified by @samp{_} and @samp{^} symbols. At this the changed font style is applied only on next symbol or symbols in braces @{@}. The text in braces @{@} are treated as single symbol that allow one to print the index of index. For example, compare the strings @samp{sin (x^@{2^3@})} and @samp{sin (x^2^3)}. You may also change text color inside string by command #? or by \color? where @samp{?} is symbolic id of the color (@pxref{Line styles}). For example, words @samp{Blue} and @samp{red} will be colored in the string @samp{#b@{Blue@} and \colorr@{red@} text}. The most of functions understand the newline symbol @samp{\n} and allows to print multi-line text. Finally, you can use arbitrary UTF codes by command @code{\utf0x????}. For example, @code{\utf0x3b1} will produce
+ at ifhtml
+ at html
+ α symbol.
+ at end html
+ at end ifhtml
+ at ifnothtml
+ @math{\alpha} symbol.
+ at end ifnothtml
+
+The most of commands for special TeX or AMSTeX symbols, the commands for font style changing (\textrm, \textbf, \textit, \textsc, \overline, \underline), accents (\hat, \tilde, \dot, \ddot, \acute, \check, \grave, \bar, \breve) and roots (\sqrt, \sqrt3, \sqrt4) are recognized. The full list contain approximately 2000 commands. Note that first space symbol after the command is ignored, but second one is printed as normal symbol (space). For example, the following strings produce the same result @math{\tilde a}: @samp{\tilde@{a@}}; @samp{\tilde a}; @samp{\tilde@{@}a}.
+
+ at ifhtml
+ at html
+In particular, the Greek letters are recognizable special symbols: α – \alpha, β – \beta, γ – \gamma, δ – \delta, ε – \epsilon, η – \eta, ι – \iota, χ – \chi, κ – \kappa, λ – \lambda, μ – \mu, ν – \nu, o – \o, ω – \omega, ϕ – \phi, π – \pi, ψ – \psi, ρ – \rho, σ – \sigma, θ – \theta, τ – \tau, υ – \upsilon, ξ – \xi, ζ – \zeta, ς – \varsigma, ɛ – \varepsilon, ϑ – \vartheta, φ – \varphi, ϰ – \varkappa; A – \Alpha, B – \Beta, Γ – \Gamma, Δ – \Delta, E – \Epsilon, H – \Eta, I – \Iota, C – \Chi, K – \Kappa, Λ – \Lambda, M – \Mu, N – \Nu, O – \O, Ω – \Omega, Φ – \Phi, Π – \Pi, Ψ – \Psi, R – \Rho, Σ – \Sigma, Θ – \Theta, T – \Tau, Υ – \Upsilon, Ξ – \Xi, Z – \Zeta.
+
+<p>The small part of most common special TeX symbols are: ∠ – \angle, ⋅ – \cdot, ♣ – \clubsuit, ✓ – \checkmark, ∪ – \cup, ∩ – \cap, ♢ – \diamondsuit, ◇ – \diamond, ÷
+ – \div,
+↓ – \downarrow, † – \dag, ‡ – \ddag, ≡ – \equiv, ∃ – \exists, ⌢ – \frown, ♭ – \flat, ≥ – \ge, ≥ – \geq, ≧ – \geqq, ← – \gets, ♡ – \heartsuit, ∞ – \infty, ∫ – \int, \Int, ℑ – \Im, ♢ – \lozenge, ⟨ – \langle, ≤ – \le, ≤ – \leq, ≦ – \leqq, ← – \leftarrow, ∓ – \mp, ∇ – \nabla, ≠ – \ne, ≠ – \neq, ♮ – \natural, ∮ – \oint, ⊙ – \odot, ⊕ – \oplus, ∂ – \partial, ∥ – \parallel, ⊥ –\perp, ± – \pm, ∝ – \propto, ∏ – \prod, ℜ – \Re, → – \rightarrow, ⟩ – \rangle, ♠ – \spadesuit, ~ – \sim, ⌣ – \smile, ⊂ – \subset, ⊃ – \supset, √ – \sqrt or \surd, § – \S, ♯ – \sharp, ∑ – \sum, × – \times, → – \to, ∴ – \therefore, ↑ – \uparrow, ℘ – \wp. </p>
+ at end html
+ at end ifhtml
+ at ifnothtml
+In particular, the Greek letters are recognizable special symbols: @math{\alpha} -- \alpha, @math{\beta} -- \beta, @math{\gamma} -- \gamma, @math{\delta} -- \delta, @math{\epsilon} -- \epsilon, @math{\eta} -- \eta, @math{\iota} -- \iota, @math{\chi} -- \chi, @math{\kappa} -- \kappa, @math{\lambda} -- \lambda, @math{\mu} -- \mu, @math{\nu} -- \nu, @math{o} -- \o, @math{\omega} -- \omega, @math{\phi} -- \phi, @math{\pi} -- \pi, @math{\psi} -- \psi, @math{\rho} -- \rho, @math{\sigma} -- \sigma, @math{\theta} -- \theta, @math{\tau} -- \tau, @math{\upsilon} -- \upsilon, @math{\xi} -- \xi, @math{\zeta} -- \zeta, @math{\varsigma} -- \varsigma, @math{\varepsilon} -- \varepsilon, @math{\vartheta} -- \vartheta, @math{\varphi} -- \varphi, A -- \Alpha, B -- \Beta, @math{\Gamma} -- \Gamma, @math{\Delta} -- \Delta, E -- \Epsilon, H -- \Eta, I -- \Iota, C -- \Chi, K -- \Kappa, @math{\Lambda} -- \Lambda, M -- \Mu, N -- \Nu, O -- \O, @math{\Omega} -- \Omega, @math{\Phi} -- \Phi, @math{\Pi} -- \Pi, @math{\Psi} -- \Psi, R -- \Rho, @math{\Sigma} -- \Sigma, @math{\Theta} -- \Theta, T -- \Tau, @math{\Upsilon} -- \Upsilon, @math{\Xi} -- \Xi, Z -- \Zeta.
+
+The small part of most common special TeX symbols are: @math{\angle} -- \angle, @math{\aleph} -- \aleph, @math{\cdot} -- \cdot, @math{\clubsuit} -- \clubsuit, @math{\cup} -- \cup, @math{\cap} -- \cap, @math{\diamondsuit} -- \diamondsuit, @math{\diamond} -- \diamond, @math{\div} -- \div, @math{\downarrow} -- \downarrow, @math{\dag} -- \dag, @math{\ddag} -- \ddag, @math{\equiv} -- \equiv, @math{\exists} -- \exists, @math{\frown} -- \frown, @math{\flat} -- \flat, @math{\ge} -- \ge, @math{\geq} -- \geq, @math{\gets} -- \gets, @math{\heartsuit} -- \heartsuit, @math{\infty} -- \infty, @math{\in} -- \in, @math{\int} -- \int, @math{\Im} -- \Im, @math{\langle} -- \langle, @math{\le} -- \le, @math{\leq} -- \leq, @math{\leftarrow} -- \leftarrow, @math{\mp} -- \mp, @math{\nabla} -- \nabla, @math{\ne} -- \ne, @math{\neq} -- \neq, @math{\natural} -- \natural, @math{\oint} -- \oint, @math{\odot} -- \odot, @math{\oplus} -- \oplus, @math{\partial} -- \partial, @math{\parallel} -- \parallel, @math{\perp} -- \perp, @math{\pm} -- \pm, @math{\propto} -- \propto, @math{\prod} -- \prod, @math{\Re} -- \Re, @math{\rightarrow} -- \rightarrow, @math{\rangle} -- \rangle, @math{\spadesuit} -- \spadesuit, @math{\sim} -- \sim, @math{\smile} -- \smile, @math{\subset} -- \subset, @math{\supset} -- \supset, @math{\surd} -- \sqrt or \surd, @math{\S} -- \S, @math{\sharp} -- \sharp, @math{\sum} -- \sum, @math{\times} -- \times, @math{\to} -- \to, @math{\uparrow} -- \uparrow, @math{\wp} -- \wp and so on.
+ at end ifnothtml
+
+The font size can be defined explicitly (if @var{size}>0) or relative to a base font size as |@var{size}|*@var{FontSize} (if @var{size}<0). The value @var{size}=0 specifies that the string will not be printed. The base font size is measured in internal ``MathGL'' units. Special functions @code{SetFontSizePT(), SetFontSizeCM(), SetFontSizeIN()} allow one to set it in more ``common'' variables for a given dpi value of the picture.
+
+
+ at node Textual formulas, , Font styles, General concepts
+ at subsection Textual formulas
+
+ at cindex Textual formulas
+
+MathGL have the fast variant of textual formula evaluation
+ at ifclear UDAV
+ (@pxref{mglFormula class})
+ at end ifclear
+. There are a lot of functions and operators available. The operators are: @samp{+} -- addition, @samp{-} -- subtraction, @samp{*} -- multiplication, @samp{/} -- division, @samp{^} -- integer power. Also there are logical ``operators'': @samp{<} -- true if x<y, @samp{>} -- true if x>y, @samp{=} -- true if x=y, @samp{&} -- true if x and y both nonzero, @samp{|} -- true if x or y nonzero. These logical operators have lowest priority and return 1 if true or 0 if false.
+
+The basic functions are: @samp{sqrt(x)} -- square root of @var{x}, @samp{pow(x,y)} -- power @var{x} in @var{y}, @samp{ln(x)} -- natural logarithm of @var{x}, @samp{lg(x)} -- decimal logarithm of @var{x}, @samp{log(a,x)} -- logarithm base @var{a} of @var{x}, @samp{abs(x)} -- absolute value of @var{x}, @samp{sign(x)} -- sign of @var{x}, @samp{mod(x,y)} -- x modulo y, @samp{step(x)} -- step function, @samp{int(x)} -- integer part of @var{x}, @samp{rnd} -- random number, @samp{pi} -- number
+ at ifhtml
+ at html
+π = 3.1415926…
+ at end html
+ at end ifhtml
+ at ifnothtml
+ at math{\pi=3.1415926...}
+ at end ifnothtml
+
+
+Trigonometric functions are: @samp{sin(x)}, @samp{cos(x)}, @samp{tan(x)} (or @samp{tg(x)}). Inverse trigonometric functions are: @samp{asin(x)}, @samp{acos(x)}, @samp{atan(x)}. Hyperbolic functions are: @samp{sinh(x)} (or @samp{sh(x)}), @samp{cosh(x)} (or @samp{ch(x)}), @samp{tanh(x)} (or @samp{th(x)}). Inverse hyperbolic functions are: @samp{asinh(x)}, @samp{acosh(x)}, @samp{atanh(x)}.
+
+ at ifhtml
+ at html
+<p>There are a set of special functions: ‘<samp>gamma(x)</samp>’ – Gamma function Γ(x) = ∫<sub>0</sub><sup>∞</sup> t<sup>x-1</sup> exp(-t) dt, ‘<samp>psi(x)</samp>’ – digamma function ψ(x) = Γ′(x)/Γ(x) for x≠0, ‘<samp>ai(x)</samp>’ – Airy function Ai(x), ‘<samp>bi(x)</samp>’ – Airy function Bi(x), ‘<samp>cl(x)</samp>’ – Clausen function, ‘<samp>li2(x)</samp>’ (or ‘<samp>dilog(x)</samp>’) – dilogarithm Li<sub>2</sub>(x) = -ℜ∫<sub>0</sub><sup>x</sup>ds log(1-s)/s, ‘<samp>sinc(x)</samp>’ – compute sinc(x) = sin(πx)/(πx) for any value of x, ‘<samp>zeta(x)</samp>’ – Riemann zeta function ζ(s) = ∑<sub>k=1</sub><sup>∞</sup>k<sup>-s</sup> for arbitrary s≠1, ‘<samp>eta(x)</samp>’ – eta function η(s) = (1 - 2<sup>1-s</sup>)ζ(s) for arbitrary s, ‘<samp>lp(l,x)</samp>’ – Legendre polynomial P<sub>l</sub>(x), (|x|≤1, l≥0), ‘<samp>w0(x)</samp>’ – principal branch of the Lambert W function, ‘<samp>w1(x)</samp>’ – principal branch of the Lambert W function. Function W(x) is defined to be solution of the equation: W exp(W) = x. </p>
+
+<p>The exponent integrals are: ‘<samp>ci(x)</samp>’ – Cosine integral Ci(x) = ∫<sub>0</sub><sup>x</sup>dt cos(t)/t, ‘<samp>si(x)</samp>’ – Sine integral Si(x) = ∫<sub>0</sub><sup>x</sup>dt sin(t)/t, ‘<samp>erf(x)</samp>’ – error function erf(x) = (2/√π) ∫<sub>0</sub><sup>x</sup>dt exp(-t<sup>2</sup>) , ‘<samp>ei(x)</samp>’ – exponential integral Ei(x) = -PV(∫<sub>-x</sub><sup>∞</sup>dt exp(-t)/t) (where PV denotes the principal value of the integral), ‘<samp>e1(x)</samp>’ – exponential integral E<sub>1</sub>(x) = ℜ∫<sub>1</sub><sup>∞</sup>dt exp(-xt)/t, ‘<samp>e2(x)</samp>’ – exponential integral E<sub>2</sub>(x) = ℜ∫<sub>1</sub>∞</sup>dt exp(-xt)/t<sup>2</sup>, ‘<samp>ei3(x)</samp>’ – exponential integral Ei<sub>3</sub>(x) = ∫<sub>0</sub><sup>x</sup>dt exp(-t<sup>3</sup>) for x≥0. </p>
+
+<p>Bessel functions are: ‘<samp>j(nu,x)</samp>’ – regular cylindrical Bessel function of fractional order <em>nu</em>, ‘<samp>y(nu,x)</samp>’ – irregular cylindrical Bessel function of fractional order <em>nu</em>, ‘<samp>i(nu,x)</samp>’ – regular modified Bessel function of fractional order <em>nu</em>, ‘<samp>k(nu,x)</samp>’ – irregular modified Bessel function of fractional order <em>nu</em>. </p>
+
+<p>Elliptic integrals are: ‘<samp>ee(k)</samp>’ – complete elliptic integral is denoted by E(k) = E(π/2,k), ‘<samp>ek(k)</samp>’ – complete elliptic integral is denoted by K(k) = F(π/2,k), ‘<samp>e(phi,k)</samp>’ – elliptic integral E(φ,k) = ∫<sub>0</sub><sup>φ</sup>dt √(1 - k<sup>2</sup>sin<sup>2</sup>(t)), ‘<samp>f(phi,k)</samp>’ – elliptic integral F(φ,k) = ∫<sub>0</sub><sup>φ</sup>dt 1/√(1 - k<sup>2</sup>sin<sup>2</sup>(t))</p>
+ at end html
+ at end ifhtml
+ at ifnothtml
+There are a set of special functions: @samp{gamma(x)} -- Gamma function @math{\Gamma(x) = \int_0^\infty dt t^@{x-1@} \exp(-t)} , @samp{psi(x)} -- digamma function @math{\psi(x) = \Gamma</samp>’(x)/\Gamma(x)} for x!=0, @samp{ai(x)} -- Airy function Ai(x), @samp{bi(x)} -- Airy function Bi(x), @samp{cl(x)} -- Clausen function, @samp{li2(x)} (or @samp{dilog(x)}) -- dilogarithm @math{Li_2(x) = - \Re \int_0^x ds \log(1-s)/s}, @samp{sinc(x)} -- compute @math{sinc(x) = \sin(\pi x) / (\pi x)} for any value of x, @samp{zeta(x)} -- Riemann zeta function @math{\zeta(s) = \sum_@{k=1@}^\infty k^@{-s@}} for arbitrary s!=1, @samp{eta(x)} -- eta function @math{\eta(s) = (1-2^@{1-s@}) \zeta(s)} for arbitrary s, @samp{lp(l,x)} -- Legendre polynomial @math{P_l(x)}, (|x|<=1, l>=0), @samp{w0(x)}, @samp{w1(x)} -- principal branch of the Lambert @var{W} functions. Function W(x) is defined to be solution of the equation @math{W \exp(W) = x}.
+
+The exponent integrals are: @samp{ci(x)} -- Cosine integral @math{Ci(x) = \int_0^x dt \cos(t)/t}, @samp{si(x)} -- Sine integral @math{Si(x) = \int_0^x dt \sin(t)/t}, @samp{erf(x)} -- error function @math{erf(x) = (2/\sqrt(\pi)) \int_0^x dt \exp(-t^2)}, @samp{ei(x)} -- exponential integral @math{Ei(x) := - PV(\int_@{-x@}^\infty dt \exp(-t)/t)} (where PV denotes the principal value of the integral), @samp{e1(x)} -- exponential integral @math{E_1(x) := Re \int_1^\infty dt \exp(-xt)/t} , @samp{e2(x)} -- exponential integral @math{E_2(x) := Re \int_1^\infty dt \exp(-xt)/t^2}, @samp{ei3(x)} -- exponential integral @math{Ei_3(x) = \int_0^x dt \exp(-t^3)} for x>=0.
+
+Bessel functions are: @samp{j(nu,x)} -- regular cylindrical Bessel function of fractional order @var{nu}, @samp{y(nu,x)} -- irregular cylindrical Bessel function of fractional order @var{nu}, @samp{i(nu,x)} -- regular modified Bessel function of fractional order @var{nu}, @samp{k(nu,x)} -- irregular modified Bessel function of fractional order @var{nu}.
+
+Elliptic integrals are: @samp{ee(k)} -- complete elliptic integral is denoted by @math{E(k) = E(\pi/2, k)}, @samp{ek(k)} -- complete elliptic integral is denoted by @math{K(k) = F(\pi/2, k)}, @samp{e(phi,k)} -- elliptic integral @math{E(\phi,k) = \int_0^\phi dt \sqrt((1 - k^2 \sin^2(t)))}, @samp{f(phi,k)} -- elliptic integral @math{F(\phi,k) = \int_0^\phi dt 1/\sqrt((1 - k^2 \sin^2(t)))}.
+ at end ifnothtml
+
+Jacobi elliptic functions are: @samp{sn(u,m)}, @samp{cn(u,m)}, @samp{dn(u,m)}, @samp{sc(u,m)}, @samp{sd(u,m)}, @samp{ns(u,m)}, @samp{cs(u,m)}, @samp{cd(u,m)}, @samp{nc(u,m)}, @samp{ds(u,m)}, @samp{dc(u,m)}, @samp{nd(u,m)}.
+
+Note, some of these functions are unavailable if NO_GSL is defined during compilation of MathGL library.
+
+There is no difference between lower or upper case in formulas. If argument value lie outside the range of function definition then function returns NaN.
+
+
diff --git a/texinfo/concept_ru.texi b/texinfo/concept_ru.texi
new file mode 100644
index 0000000..0d988a4
--- /dev/null
+++ b/texinfo/concept_ru.texi
@@ -0,0 +1,169 @@
+
+
+ at node Coordinate axes, Line styles, , General concepts
+ at subsection ÐÑи кооÑдинаÑ
+
+ÐÑедÑÑавление ÑиÑÑÐµÐ¼Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ Ð² MathGL ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· двÑÑ
ÑаÑÑей. ÐнаÑале кооÑдинаÑÑ Ð½Ð¾ÑмиÑÑÑÑÑÑ Ð² инÑеÑвал @var{Min}x at var{Max} (@pxref{Axis settings}). ÐÑли Ñлаг @var{Cut} ÑÑÑановлен, Ñо ÑоÑки вне инÑеÑвала оÑбÑаÑÑваÑÑÑÑ, в пÑоÑивном ÑлÑÑае, они пÑоеÑиÑÑÑÑÑÑ Ð½Ð° огÑаниÑиваÑÑий паÑаллелепипед (@pxref{Cutting}). ÐÑоме Ñого, оÑбÑаÑÑваÑÑÑÑ ÑоÑки внÑÑÑи гÑаниÑ, опÑеделеннÑÑ
пеÑеменнÑми @var{CutMin}x at var{CutMax} и ÑоÑки, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ
знаÑение ÑÑнкÑии @code{CutOff}() не Ñавно нÑлÑ. ÐоÑле ÑÑого ÑоÑмÑÐ»Ñ Ð¿ÐµÑеÑ
ода в кÑиволинейнÑÑ ÑиÑÑÐµÐ¼Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ @code{SetFunc()}пÑименÑÑÑÑÑ Ðº каждой ÑоÑке. ÐаконеÑ, ÑоÑка даннÑÑ
оÑобÑажаеÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¾Ð´Ð½Ð¾Ð¹ из гÑаÑиÑеÑкиÑ
ÑÑнкÑий.
+
+ÐелиÑÐ¸Ð½Ñ @var{Max}, @var{Min} можно изменÑÑÑ Ð²ÑÑÑнÑÑ. Ðднако, поÑле ÑÑого необÑ
одимо вÑзваÑÑ ÑÑнкÑÐ¸Ñ @code{RecalcBorder()} Ð´Ð»Ñ Ð½Ð°ÑÑÑойки гÑаÑика. Ðолее ÑдобнÑй и безопаÑнÑй пÑÑÑ ÑоÑÑÐ¾Ð¸Ñ Ð² вÑзове ÑÑнкÑий @code{Axis(), SetRanges()} и дÑ. РпоÑледнем ÑлÑÑае ÑÑнкÑÐ¸Ñ @code{RecalcBorder()} вÑзÑваеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки. РазмеÑÑ Ð¾Ñей можно задаваÑÑ Ð¸ авÑомаÑиÑеÑки по минималÑÐ½Ð¾Ð¼Ñ Ð¸ макÑималÑÐ½Ð¾Ð¼Ñ Ð·Ð½Ð°ÑениÑм маÑÑива даннÑÑ
. ÐÐ»Ñ ÑÑого пÑедназнаÑÐµÐ½Ñ ÑÑнкÑии @code{XRange(), YRange(), ZRange()}. ÐÑоÑой не обÑзаÑелÑнÑй аÑгÑÐ¼ÐµÐ½Ñ ÑказÑваеÑ, заменÑÑÑ Ð»Ð¸ новÑе знаÑÐµÐ½Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¾Ñи кооÑÐ´Ð¸Ð½Ð°Ñ (по ÑмолÑаниÑ) или ÑолÑко ÑаÑÑиÑиÑÑ Ñже ÑÑÑеÑÑвÑÑÑий диапазон.
+
+ТоÑка пеÑеÑеÑÐµÐ½Ð¸Ñ Ð¾Ñей кооÑÐ´Ð¸Ð½Ð°Ñ Ð·Ð°Ð´Ð°ÐµÑÑÑ Ð¿ÐµÑеменной @var{Org} и дейÑÑвÑÐµÑ Ð½Ð° поÑледÑÑÑие вÑÐ·Ð¾Ð²Ñ ÑÑнкÑий ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ñей кооÑÐ´Ð¸Ð½Ð°Ñ Ð¸ ÑеÑки. Ðо ÑмолÑаниÑ, еÑли ÑоÑка пеÑеÑеÑÐµÐ½Ð¸Ñ Ð¾Ñей кооÑÐ´Ð¸Ð½Ð°Ñ Ð¿Ð¾Ð¿Ð°Ð´Ð°ÐµÑ Ð²Ð½Ðµ диапазона оÑей кооÑдинаÑ, Ñо она пÑоеÑиÑÑеÑÑÑ Ð½Ð° гÑаниÑÑ Ð¾Ð±Ð»Ð°ÑÑи. ÐзмениÑÑ Ñакое поведение можно, задав @var{AutoOrg}=@code{false}. Ð ÑлÑÑае, еÑли одно из знаÑений @var{Org} Ñавно NAN, Ñо ÑооÑвеÑÑÑвÑÑÑее знаÑение бÑÐ´ÐµÑ Ð²ÑбÑано авÑомаÑиÑеÑки.
+
+ÐÑоме пÑивÑÑнÑÑ
оÑей @emph{x, y, z} еÑÑÑ ÐµÑе одна оÑÑ -- ÑвеÑÐ¾Ð²Ð°Ñ Ñкала -- оÑÑ @emph{c}. Ðна иÑполÑзÑеÑÑÑ Ð¿Ñи окÑаÑивании повеÑÑ
ноÑÑей и Ð·Ð°Ð´Ð°ÐµÑ Ð³ÑаниÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑÑнкÑии пÑи окÑаÑивании. ÐÑи вÑзове @code{Axis()} ее гÑаниÑÑ Ð°Ð²ÑомаÑиÑеÑки ÑÑÑанавливаÑÑÑÑ ÑавнÑми Min.z и Max.z. Ðозможно и ÑÑÑное изменение гÑÐ°Ð½Ð¸Ñ ÑвеÑового инÑеÑвала поÑÑедÑÑвом вÑзова ÑÑнкÑии @code{CAxis()} или изменение гÑÐ°Ð½Ð¸Ñ Ð¿Ð¾ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ Ð¼Ð°ÑÑÐ¸Ð²Ñ @code{CRange()}. ÐÑполÑзÑйÑе @code{Colorbar()} Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑвеÑовой ÑкалÑ.
+
+Ðид меÑок по оÑÑм опÑеделÑеÑÑÑ ÑÑнкÑией @code{SetTicks()} (@pxref{Axis settings}). Ðна Ð¸Ð¼ÐµÐµÑ 3 аÑгÑменÑа: пеÑвÑй @var{d} Ð·Ð°Ð´Ð°ÐµÑ Ñаг меÑок (еÑли положиÑелÑнÑ) или иÑ
ÑиÑло (еÑли оÑÑиÑаÑелÑнÑ) или логаÑиÑмиÑеÑкие меÑки (еÑли ÑÐ°Ð²Ð½Ñ Ð½ÑлÑ); вÑоÑо @var{ns} Ð·Ð°Ð´Ð°ÐµÑ ÑиÑло "подмеÑок"; поÑледний опÑеделÑÐµÑ Ð½Ð°ÑалÑнÑÑ ÑоÑÐºÑ Ð´Ð»Ñ Ð¼ÐµÑок (по ÑмолÑÐ°Ð½Ð¸Ñ ÑÑо ÑоÑка пеÑеÑеÑÐµÐ½Ð¸Ñ Ð¾Ñей). ФÑнкÑÐ¸Ñ @var{SetTuneTicks} вклÑÑаеÑ/вÑклÑÑÐ°ÐµÑ Ð²Ñделение обÑего множиÑÐµÐ»Ñ (болÑÑого или малого ÑакÑоÑов в диапазоне) Ð´Ð»Ñ Ð¼ÐµÑок оÑей кооÑдинаÑ. ÐаконеÑ, еÑли ÑÑандаÑÑнÑй вид меÑок не ÑÑÑÑÐ°Ð¸Ð²Ð°ÐµÑ Ð¿Ð¾Ð»ÑзоваÑелÑ, Ñо иÑ
Ñаблон можно задаÑÑ Ñвно (можно иÑполÑзоваÑÑ Ð¸ ТеХ ÑимволÑ), воÑполÑзовавÑиÑÑ ÑÑнкÑиÑми @code{SetXTT(), SetYTT(). SetZTT(). SetCTT()}. ÐÑоме Ñого, в каÑеÑÑве меÑок можно вÑвеÑÑи пÑоизволÑнÑй ÑекÑÑ Ð¸ÑполÑзовав ÑÑнкÑÐ¸Ñ @code{SetTicksVal()}.
+
+ at node Line styles, Color scheme, Coordinate axes, General concepts
+ at subsection СÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¹
+
+ at cindex СÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¹
+ at cindex СÑÐ¸Ð»Ñ Ð¼Ð°ÑкеÑов
+ at cindex СÑÐ¸Ð»Ñ ÑÑÑелок
+
+СÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ задаеÑÑÑ ÑÑÑокой, коÑоÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ñимвол ÑвеÑа (@samp{wkrgbcymhRGBCYMHWlenupqLENUPQ}), Ñип пÑнкÑиÑа (@samp{-|;:ji} или пÑобел), ÑиÑÐ¸Ð½Ñ Ð»Ð¸Ð½Ð¸Ð¸ (@samp{0123456789}) и Ñип маÑкеÑа (@samp{o+xsd.^v} и модиÑикаÑÐ¾Ñ @samp{#}). ÐÑли пÑопÑÑен ÑÐ²ÐµÑ Ð¸Ð»Ð¸ Ñип пÑнкÑиÑа, Ñо иÑполÑзÑеÑÑÑ Ð·Ð½Ð°Ñение по ÑмолÑÐ°Ð½Ð¸Ñ Ñ Ð¿Ð¾Ñледним ÑказаннÑм ÑвеÑом или знаÑение из палиÑÑÑ (Ð´Ð»Ñ @pxref{1D plotting}).
+ at ifhtml
+ at html
+Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð°Ð»Ð¸ÑÑÑ ÑодеÑÐ¶Ð¸Ñ ÑледÑÑÑие ÑвеÑа: <span style="color: rgb(76, 76, 76);">Ñемно ÑеÑÑй</span> ‘<samp>H</samp>’, <span style="color: rgb(0, 0, 255);">Ñиний</span> ‘<samp>b</samp>’, <span style="color: rgb(0, 255, 0);">зеленÑй</span> ‘<samp>g</samp>’, <span style="color: rgb(255, 0, 0);">кÑаÑнÑй</span> ‘<samp>r</samp>’, <span style="color: rgb(0, 255, 255);">голÑбой</span> ‘<samp>c</samp>’, <span style="color: rgb(255, 0, 255);">пÑÑпÑÑнÑй</span> ‘<samp>m</samp>’, <span style="color: rgb(255, 255, 0);">yellow</span> ‘<samp>y</samp>’, <span style="color: rgb(127, 127, 127);">ÑеÑÑй</span> ‘<samp>h</samp>’, <span style="color: rgb(0, 255, 127);">Ñине-зеленÑй</span> ‘<samp>l</samp>’, <span style="color: rgb(0, 127, 255);">небеÑно-Ñиний</span> ‘<samp>n</samp>’, <span style="color: rgb(255, 127, 0);">оÑанжевÑй</span> ‘<samp>q</samp>’, <span style="color: rgb(127, 255, 0);">желÑо-зеленÑй</span> ‘<samp>e</samp>’, <span style="color: rgb(127, 0, 255);">Ñине-ÑиолеÑовÑй</span> ‘<samp>u</samp>’, <span style="color: rgb(255, 0, 127);">ÑиолеÑовÑй</span> ‘<samp>p</samp>’.
+
+<p>Ð¡Ð¸Ð¼Ð²Ð¾Ð»Ñ ÑвеÑа: ‘<samp>k</samp>’ -- ÑеÑнÑй, ‘<samp>r</samp>’ -- <span style="color: rgb(255, 0, 0);">кÑаÑнÑй</span>, ‘<samp>R</samp>’ -- <span style="color: rgb(127, 0, 0);">Ñемно кÑаÑнÑй</span>, ‘<samp>g</samp>’ -- <span style="color: rgb(0, 255, 0);">зеленÑй</span>, ‘<samp>G</samp>’ -- <span style="color: rgb(0, 127, 0);">Ñемно зеленÑй</span>, ‘<samp>b</samp>’ -- <span style="color: rgb(0, 0, 255);">Ñиний</span>, ‘<samp>B</samp>’ -- <span style="color: rgb(0, 0, 127);">Ñемно Ñиний</span>, ‘<samp>c</samp>’ -- <span style="color: rgb(0, 255, 255);">голÑбой</span>, ‘<samp>C</samp>’ -- <span style="color: rgb(0, 127, 127);">Ñемно голÑбой</span>, ‘<samp>m</samp>’ -- <span style="color: rgb(255, 0, 255);">пÑÑпÑÑнÑй</span>, ‘<samp>M</samp>’ -- <span style="color: rgb(127, 0, 127);">Ñемно пÑÑпÑÑнÑй</span>, ‘<samp>y</samp>’ -- <span style="color: rgb(255, 255, 0);">желÑÑй</span>, ‘<samp>Y</samp>’ -- <span style="color: rgb(127, 127, 0);">Ñемно желÑÑй (золоÑой)</span>, ‘<samp>h</samp>’ -- <span style="color: rgb(127, 127, 127);">ÑеÑÑй</span>, ‘<samp>H</samp>’ -- <span style="color: rgb(76, 76, 76);">Ñемно ÑеÑÑй</span>, ‘<samp>w</samp>’ -- белÑй, ‘<samp>W</samp>’ -- <span style="color: rgb(178, 178, 178);">ÑвеÑло ÑеÑÑй</span>, ‘<samp>l</samp>’ -- <span style="color: rgb(0, 255, 127);">Ñине-зеленÑй</span>, ‘<samp>L</samp>’ -- <span style="color: rgb(0, 127, 63);">Ñемно Ñине-зеленÑй</span>, ‘<samp>e</samp>’ -- <span style="color: rgb(127, 255, 0);">желÑо-зеленÑй</span>, ‘<samp>E</samp>’ -- <span style="color: rgb(63, 127, 0);">Ñемно желÑо-зеленÑй</span>, ‘<samp>n</samp>’ -- <span style="color: rgb(0, 127, 255);">небеÑно-Ñиний</span>, ‘<samp>N</samp>’ -- <span style="color: rgb(0, 63, 127);">Ñемно небеÑно-Ñиний</span>, ‘<samp>u</samp>’ -- <span style="color: rgb(127, 0, 255);">Ñине-ÑиолеÑовÑй</span>, ‘<samp>U</samp>’ -- <span style="color: rgb(63, 0, 127);">Ñемно Ñине-ÑиолеÑовÑй</span>, ‘<samp>p</samp>’ -- <span style="color: rgb(255, 0, 127);">ÑиолеÑовÑй</span>, ‘<samp>P</samp>’ -- <span style="color: rgb(127, 0, 63);">Ñемно ÑиолеÑовÑй</span>, ‘<samp>q</samp>’ -- <span style="color: rgb(255, 127, 0);">оÑанжевÑй</span>, ‘<samp>Q</samp>’ -- <span style="color: rgb(127, 63, 0);">Ñемно оÑанжевÑй (коÑиÑневÑй)</span>.</p>
+
+Тип пÑнкÑиÑа: пÑобел -- Ð½ÐµÑ Ð»Ð¸Ð½Ð¸Ð¸ (Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑолÑко маÑкеÑов), ‘<samp>-</samp>’ -- ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ (■■■■■■■■■■■■■■■■), ‘<samp>|</samp>’ -- длиннÑй пÑнкÑÐ¸Ñ (■■■■■■■■□□□□□□□□), ‘<samp>;</samp>’ -- пÑнкÑÐ¸Ñ (■■■■□□□□■■■■□□□□), ‘<samp>=</samp>’ -- коÑоÑкий пÑнкÑÐ¸Ñ (■■□□■■□□■■□□■■□□), ‘<samp>:</samp>’ -- ÑоÑки (■□□□■□□□■□□□■□□□), ‘<samp>j</samp>’ -- пÑнкÑÐ¸Ñ Ñ ÑоÑками (■■■■■■■□□□□■□□□□), ‘<samp>i</samp>’ -- мелкий пÑнкÑÐ¸Ñ Ñ ÑоÑками (■■■□□■□□■■■□□■□□).
+ at end html
+ at end ifhtml
+ at ifnothtml
+Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð°Ð»Ð¸ÑÑÑ ÑодеÑÐ¶Ð¸Ñ ÑледÑÑÑие ÑвеÑа: Ñемно ÑеÑÑй @samp{H}, Ñиний @samp{b}, зеленÑй @samp{g}, кÑаÑнÑй @samp{r}, голÑбой @samp{c}, пÑÑпÑÑнÑй @samp{m}, yellow @samp{y}, ÑеÑÑй @samp{h}, Ñине-зеленÑй @samp{l}, небеÑно-Ñиний @samp{n}, оÑанжевÑй @samp{q}, желÑо-зеленÑй @samp{e}, Ñине-ÑиолеÑовÑй @samp{u}, ÑиолеÑовÑй @samp{p}.
+
+Ð¡Ð¸Ð¼Ð²Ð¾Ð»Ñ ÑвеÑа Ñе же, ÑÑо и в клаÑÑе mglColor (@pxref{mglColor class}): @samp{k} -- ÑеÑнÑй, @samp{r} -- кÑаÑнÑй, @samp{R} -- Ñемно кÑаÑнÑй, @samp{g} -- зеленÑй, @samp{G} -- Ñемно зеленÑй, @samp{b} -- Ñиний, @samp{B} -- Ñемно Ñиний, @samp{c} -- голÑбой, @samp{C} -- Ñемно голÑбой, @samp{m} -- пÑÑпÑÑнÑй, @samp{M} -- Ñемно пÑÑпÑÑнÑй, @samp{y} -- желÑÑй, @samp{Y} -- Ñемно желÑÑй (золоÑой), @samp{h} -- ÑеÑÑй, @samp{H} -- Ñемно ÑеÑÑй, @samp{w} -- белÑй, @samp{W} -- ÑвеÑло ÑеÑÑй, @samp{l} -- Ñине-зеленÑй, @samp{L} -- Ñемно Ñине-зеленÑй, @samp{e} -- желÑо-зеленÑй, @samp{E} -- Ñемно желÑо-зеленÑй, @samp{n} -- небеÑно-Ñиний, @samp{N} -- Ñемно небеÑно-Ñиний, @samp{u} -- Ñине-ÑиолеÑовÑй, @samp{U} -- Ñемно Ñине-ÑиолеÑовÑй, @samp{p} -- ÑиолеÑовÑй, @samp{P} -- Ñемно ÑиолеÑовÑй, @samp{q} -- оÑанжевÑй, @samp{Q} -- Ñемно оÑанжевÑй (коÑиÑневÑй).
+
+Тип пÑнкÑиÑа: пÑобел -- Ð½ÐµÑ Ð»Ð¸Ð½Ð¸Ð¸ (Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑолÑко маÑкеÑов), @samp{-} -- ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ (################), @samp{|} -- длиннÑй пÑнкÑÐ¸Ñ (########________), @samp{;} -- пÑнкÑÐ¸Ñ (####____####____), @samp{=} -- коÑоÑкий пÑнкÑÐ¸Ñ (##__##__##__##__), @samp{:} -- ÑоÑки (#___#___#___#___), @samp{j} -- пÑнкÑÐ¸Ñ Ñ ÑоÑками (#######____#____), @samp{i} -- мелкий пÑнкÑÐ¸Ñ Ñ ÑоÑками (###__#__###__#__).
+ at end ifnothtml
+
+Ð¢Ð¸Ð¿Ñ Ð¼Ð°ÑкеÑов: @samp{o} -- окÑÑжноÑÑÑ, @samp{+} -- кÑеÑÑ, @samp{x} -- коÑой кÑеÑÑ, @samp{s} - квадÑаÑ, @samp{d} - Ñомб, @samp{.} -- ÑоÑка, @samp{^} -- ÑÑеÑголÑник ввеÑÑ
, @samp{v} -- ÑÑеÑголÑник вниз, @samp{<} -- ÑÑеÑголÑник влево, @samp{>} -- ÑÑеÑголÑник впÑаво, @samp{#*} -- знак Y, @samp{#+} -- кÑеÑÑ Ð² квадÑаÑе, @samp{#x} -- коÑой кÑеÑÑ Ð² квадÑаÑе, @samp{#.} -- ÑоÑка в окÑÑжноÑÑи. ÐÑли в ÑÑÑоке пÑиÑÑÑÑÑвÑÐµÑ Ñимвол @samp{#}, Ñо иÑполÑзÑÑÑÑÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÐµÐ¼.
+
+ at float
+ at image{../png/sample5, 7cm}
+ at caption{СÑили линий и маÑкеÑов.}
+ at end float
+
+Ðа конÑе и в наÑале линии можно вÑводиÑÑ ÑпеÑиалÑнÑй Ñимвол (ÑÑÑелкÑ), еÑли в ÑÑÑоке ÑказаÑÑ Ð¾Ð´Ð¸Ð½ из Ñимволов: @samp{A} -- ÑÑÑелка наÑÑжÑ, @samp{V} -- ÑÑÑелка внÑÑÑÑ, @samp{I} -- попеÑеÑÐ½Ð°Ñ ÑеÑÑа, @samp{K} -- ÑÑÑелка Ñ ÑеÑÑой, @samp{T} -- ÑÑеÑголÑник, @samp{S} -- квадÑаÑ, @samp{D} -- Ñомб, @samp{O} -- кÑÑг, @samp{_} -- Ð½ÐµÑ ÑÑÑелки (по ÑмолÑаниÑ). ÐÑи ÑÑом дейÑÑвÑÐµÑ ÑледÑÑÑее пÑавило: пеÑвÑй Ñимвол опÑеделÑÐµÑ ÑÑÑÐµÐ»ÐºÑ Ð½Ð° конÑе линии, вÑоÑой Ñимвол -- ÑÑÑÐµÐ»ÐºÑ Ð² наÑале линии. ÐапÑимеÑ, @samp{r-A} -- кÑаÑÐ½Ð°Ñ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñо ÑÑÑелкой на конÑе, @samp{b|AI} -- Ñиний пÑнкÑÐ¸Ñ Ñо ÑÑÑелкой на конÑе и ÑеÑÑой внаÑале, @samp{_O} -- Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑÑилем и кÑÑжком внаÑале. ÐÑи ÑÑили дейÑÑвÑÑÑ Ð¸ пÑи поÑÑÑоении гÑаÑиков (напÑимеÑ, @ref{1D plotting}).
+
+ at float
+ at image{../png/sampled, 7cm}
+ at caption{СÑили ÑÑÑелок.}
+ at end float
+
+ at node Color scheme, Font styles, Line styles, General concepts
+ at subsection ЦвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема
+
+ at cindex ЦвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема
+
+ЦвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑвеÑа повеÑÑ
ноÑÑей, линий ÑÑÐ¾Ð²Ð½Ñ Ð¸ пÑ. ЦвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема задаеÑÑÑ ÑÑÑокой @emph{s}, коÑоÑÐ°Ñ ÑодеÑÐ¶Ð¸Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ ÑвеÑа (@pxref{Line styles}) или ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ @samp{d#:|}. Символ @samp{d} ÑказÑÐ²Ð°ÐµÑ Ð½Ð° опÑеделение ÑвеÑа в завиÑимоÑÑи Ð¾Ñ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÑоÑки в пÑоÑÑÑанÑÑве, а не по амплиÑÑде даннÑÑ
. Символ @samp{#} пеÑеклÑÑÐ°ÐµÑ ÑиÑование повеÑÑ
ноÑÑи на ÑеÑÑаÑое (Ð´Ð»Ñ ÑÑеÑ
меÑнÑÑ
повеÑÑ
ноÑÑей) или вклÑÑÐ°ÐµÑ ÑиÑование ÑеÑки на повеÑÑ
ноÑÑи. Символ @samp{|} оÑклÑÑÐ°ÐµÑ Ð¸Ð½ÑеÑполÑÑÐ¸Ñ ÑвеÑа в ÑвеÑовой ÑÑ
еме. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ Ð´Ð»Ñ ``ÑезкиÑ
'' ÑвеÑов, напÑимеÑ, пÑи ÑиÑовании маÑÑиÑ. ÐÑли в ÑÑÑоке вÑÑÑеÑаеÑÑÑ Ñимвол @samp{:}, Ñо он пÑинÑдиÑелÑно заканÑÐ¸Ð²Ð°ÐµÑ ÑÐ°Ð·Ð±Ð¾Ñ ÑÑÑоки Ð´Ð»Ñ ÑÑÐ¸Ð»Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑи. ÐоÑле ÑÑого Ñимвола могÑÑ Ð¸Ð´Ñи опиÑание ÑÑÐ¸Ð»Ñ ÑекÑÑа или оÑи вÑаÑÐµÐ½Ð¸Ñ ÐºÑивой/линий ÑÑовнÑ. ЦвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð´Ð¾ 32 знаÑений ÑвеÑа.
+
+Ð ÑвеÑовой ÑÑ
еме можно иÑполÑзоваÑÑ ÑоналÑнÑе (``подÑвеÑеннÑе'') ÑвеÑа (@emph{не в ÑÑиле линий!}). ТоналÑнÑй ÑÐ²ÐµÑ Ð·Ð°Ð´Ð°ÐµÑÑÑ Ð´Ð²ÑÐ¼Ñ Ñимволами: пеÑвÑй -- обÑÑнÑй ÑвеÑ, вÑоÑой -- его ÑÑкоÑÑÑ ÑиÑÑой. ЦиÑÑа Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð² диапазоне @samp{1}... at samp{9}. ÐÑи ÑÑом @samp{5} ÑооÑвеÑÑÑвÑÐµÑ Ð½Ð¾ÑмалÑÐ½Ð¾Ð¼Ñ ÑвеÑÑ, @samp{1} -- оÑÐµÐ½Ñ ÑÐµÐ¼Ð½Ð°Ñ Ð²ÐµÑÑÐ¸Ñ ÑвеÑа (поÑÑи ÑеÑнÑй), @samp{9} -- оÑÐµÐ½Ñ ÑвеÑÐ»Ð°Ñ Ð²ÐµÑÑÐ¸Ñ ÑвеÑа (поÑÑи белÑй). ÐапÑÐ¸Ð¼ÐµÑ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ @samp{b2b7wr7r2}.
+
+ at float
+ at image{../png/colors, 7cm}
+ at caption{ЦвеÑа и иÑ
иденÑиÑикаÑоÑÑ.}
+ at end float
+
+ÐÑи опÑеделении ÑвеÑа по @emph{амплиÑÑде} (наиболее ÑаÑÑо иÑполÑзÑеÑÑÑ) оконÑаÑелÑнÑй ÑÐ²ÐµÑ Ð¾Ð¿ÑеделÑеÑÑÑ Ð¿ÑÑем линейной инÑеÑполÑÑии маÑÑива ÑвеÑов. ÐаÑÑив ÑвеÑов ÑоÑмиÑÑеÑÑÑ Ð¸Ð· ÑвеÑов, ÑказаннÑÑ
в ÑÑÑоке ÑпеÑиÑикаÑии. ÐÑгÑÐ¼ÐµÐ½Ñ -- амплиÑÑда, ноÑмиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¼ÐµÐ¶Ð´Ñ @var{Cmin} -- @var{Cmax} (@pxref{Axis settings}). ÐапÑимеÑ, ÑÑÑока из 4 Ñимволов @samp{bcyr} ÑооÑвеÑÑÑвÑÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑвеÑа Ð¾Ñ Ñинего (минималÑное знаÑение) ÑеÑез голÑбой и желÑÑй (пÑомежÑÑоÑнÑе знаÑениÑ) к кÑаÑÐ½Ð¾Ð¼Ñ (макÑималÑное знаÑение). СÑÑока @samp{kw} ÑооÑвеÑÑÑвÑÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑвеÑа Ð¾Ñ ÑеÑного (минималÑное знаÑение) к Ð±ÐµÐ»Ð¾Ð¼Ñ (макÑималÑное знаÑение). СÑÑока из одного Ñимвола (напÑимеÑ, @samp{g}) ÑооÑвеÑÑÑвÑÐµÑ Ð¾Ð´Ð½Ð¾ÑÐ¾Ð½Ð½Ð¾Ð¼Ñ ÑвеÑÑ (в Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ ÑлÑÑае зеленомÑ).
+
+ÐÑÑÑ Ð½ÐµÑколÑко полезнÑÑ
ÑвеÑовÑÑ
ÑÑ
ем. СÑÑока @samp{kw} Ð´Ð°ÐµÑ Ð¾Ð±ÑÑнÑÑ ÑеÑÑÑ (ÑеÑно-белÑÑ) ÑÑ
емÑ, когда болÑÑие знаÑÐµÐ½Ð¸Ñ ÑвеÑлее. СÑÑока @samp{wk} пÑедÑÑавлÑÐµÑ Ð¾Ð±ÑаÑнÑÑ ÑеÑÑÑ ÑÑ
емÑ, когда болÑÑие знаÑÐµÐ½Ð¸Ñ Ñемнее. СÑÑоки @samp{kRryw}, @samp{kGgw}, @samp{kBbcw} пÑедÑÑавлÑÑÑ Ñобой Ñ
оÑоÑо извеÑÑнÑе ÑÑ
ÐµÐ¼Ñ @emph{hot}, @emph{summer} и @emph{winter}. СÑÑоки @samp{BbwrR} и @samp{bBkRr} позволÑÑÑ ÑиÑоваÑÑ Ð´Ð²ÑÑ
ÑвеÑнÑе ÑигÑÑÑ Ð½Ð° белом или ÑеÑном Ñоне, когда оÑÑиÑаÑелÑнÑе знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ Ñиним ÑвеÑом, а положиÑелÑнÑе -- кÑаÑнÑм. СÑÑока @samp{BbcyrR} Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ, близкÑÑ Ðº Ñ
оÑоÑо извеÑÑной ÑÑ
еме @emph{jet}.
+
+
+ at float
+ at image{../png/color_schemes, 7cm}
+ at caption{Ðаиболее попÑлÑÑнÑе ÑвеÑовÑе ÑÑ
емÑ.}
+ at end float
+
+ÐÑи опÑеделении ÑвеÑа по @emph{Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÑоÑки в пÑоÑÑÑанÑÑве} оконÑаÑелÑнÑй ÑÐ²ÐµÑ Ð¾Ð¿ÑеделÑеÑÑÑ Ð¿Ð¾ ÑоÑмÑле c=x*c[1] + y*c[2] + z*c[3]. ÐдеÑÑ c[1], c[2], c[3] -- пеÑвÑе ÑÑи ÑвеÑа в ÑвеÑовом маÑÑиве; x, y, z -- кооÑдинаÑÑ ÑоÑки, ноÑмиÑованнÑе на @var{Min}x at var{Max}. Такой Ñип опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑвеÑа полезен, напÑимеÑ, пÑи поÑÑÑоении повеÑÑ
ноÑÑей ÑÑовнÑ, когда ÑÐ²ÐµÑ Ð´Ð°ÐµÑ Ð¿ÑедÑÑавление о положении ÑоÑки в пÑоÑÑÑанÑÑве.
+
+ at node Font styles, Textual formulas, Color scheme, General concepts
+ at subsection СÑÐ¸Ð»Ñ ÑекÑÑа
+
+ at cindex СÑÐ¸Ð»Ñ ÑекÑÑа
+
+СÑÐ¸Ð»Ñ ÑекÑÑа задаеÑÑÑ ÑÑÑокой, коÑоÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð½ÐµÑколÑко Ñимволов: Ñип ÑÑиÑÑа (@samp{ribwou}) и/или вÑÑÐ°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ (@samp{LRC}), а Ñакже ÑÐ²ÐµÑ ÑекÑÑа @samp{wkrgbcymhRGBCYMHW} (@pxref{Line styles}) поÑле Ñимвола @samp{:}. ÐапÑимеÑ, @samp{biC:b} ÑооÑвеÑÑÑвÑÐµÑ Ð¶Ð¸ÑÐ½Ð¾Ð¼Ñ ÐºÑÑÑÐ¸Ð²Ñ Ñ Ð²ÑÑавниванием по ÑенÑÑÑ Ñинего ÑвеÑа.
+
+ÐаÑеÑÑÐ°Ð½Ð¸Ñ ÑÑиÑÑа: @samp{r} -- пÑÑмой ÑÑиÑÑ, @samp{i} -- кÑÑÑив, @samp{b} -- жиÑнÑй. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ÑполÑзÑеÑÑÑ Ð¿ÑÑмой ÑÑиÑÑ. Ð¢Ð¸Ð¿Ñ Ð²ÑÑÐ°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ ÑекÑÑа: @samp{L} -- по Ð»ÐµÐ²Ð¾Ð¼Ñ ÐºÑÐ°Ñ (по ÑмолÑаниÑ), @samp{C} -- по ÑенÑÑÑ, @samp{R} -- по пÑÐ°Ð²Ð¾Ð¼Ñ ÐºÑаÑ. ÐополниÑелÑнÑе ÑÑÑекÑÑ ÑÑиÑÑа: @samp{w} -- конÑÑÑнÑй, @samp{o} -- надÑеÑкнÑÑÑй, @samp{u} -- подÑеÑкнÑÑÑй.
+ at c СинÑакÑиÑеÑкий ÑÐ°Ð·Ð±Ð¾Ñ LaTeX-иÑ
команд по ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÐºÐ»ÑÑен (подÑобнее Ñм. @pxref{mglFont class} и @ref{Font settings}).
+
+СинÑакÑиÑеÑкий ÑÐ°Ð·Ð±Ð¾Ñ LaTeX-иÑ
команд по ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÐºÐ»ÑÑен. ÐÑо ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÑÐ¼ÐµÐ½Ñ ÑÑÐ¸Ð»Ñ ÑекÑÑа (напÑимеÑ, \b Ð´Ð»Ñ Ð¶Ð¸Ñного ÑекÑÑа): \a или \overline -- надÑеÑкивание, \b или \textbf -- жиÑнÑй, \i или \textit -- кÑÑÑив, \r или \textrm -- пÑÑмой (оÑменÑÐµÑ ÑÑили жиÑного и кÑÑÑива), \u или \underline -- подÑеÑкнÑÑÑй, \w или \wire -- конÑÑÑнÑй, \big -- болÑÑего ÑазмеÑа, @@ -- менÑÑего ÑазмеÑа. Ðижний и веÑÑ
ний индекÑÑ Ð·Ð°Ð´Ð°ÑÑÑÑ Ñимволами @samp{_} и @samp{^}. ÐÑи ÑÑом изменение ÑÑÐ¸Ð»Ñ Ð¿ÑименÑеÑÑÑ ÑолÑко к ÑледÑÑÑÐµÐ¼Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¸Ð»Ð¸ к Ñимволам в ÑигÑÑнÑÑ
ÑкобкаÑ
@{@}, коÑоÑÑе понимаÑÑÑÑ ÐºÐ°Ðº единÑй блок. ÐапÑимеÑ, ÑÑавниÑе ÑÑÑоки @samp{sin (x^@{2^3@})} и @samp{sin (x^2^3)}. Ðожно Ñакже менÑÑÑ ÑÐ²ÐµÑ ÑекÑÑа внÑÑÑи ÑÑÑоки Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´ #? или \color?, где @samp{?} -- Ñимвол ÑвеÑа (@pxref{Line styles}). ÐапÑимеÑ, Ñлова @samp{Blue} и @samp{red} бÑдÑÑ Ð¾ÐºÑаÑÐµÐ½Ñ Ð² ÑооÑвеÑÑÑвÑÑÑий ÑÐ²ÐµÑ Ð² ÑÑÑоке @samp{#b@{Blue@} and \colorr@{red@} text}. ÐолÑÑинÑÑво ÑÑнкÑий Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÐµÑ Ñимвол новой ÑÑÑоки @samp{\n} и позволÑÐµÑ Ð²ÑводиÑÑ Ð¼Ð½Ð¾Ð³Ð¾ ÑÑÑоÑнÑй ÑекÑÑ. ÐаконеÑ, можно иÑполÑзоваÑÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ñ Ð¿ÑоизволÑнÑм UTF кодом Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ @code{\utf0x????}. ÐапÑимеÑ, @code{\utf0x3b1} даÑÑ Ñимвол
+ at ifhtml
+ at html
+α.
+ at end html
+ at end ifhtml
+ at ifnothtml
+ at math{\alpha}.
+ at end ifnothtml
+
+РаÑпознаÑÑÑÑ Ñакже болÑÑинÑÑво Ñимволов TeX и AMSTeX, ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÑÐ¼ÐµÐ½Ñ ÑÑÐ¸Ð»Ñ ÑекÑÑа (\textrm, \textbf, \textit, \textsc, \overline, \underline), акÑенÑÑ (\hat, \tilde, \dot, \ddot, \acute, \check, \grave, \bar, \breve) и коÑни (\sqrt, \sqrt3, \sqrt4). ÐолнÑй ÑпиÑок ÑодеÑÐ¶Ð¸Ñ Ð¾ÐºÐ¾Ð»Ð¾ 2000 Ñимволов. ÐÑмеÑÑ, ÑÑо пеÑвÑй пÑобел (пÑобел, ÑабÑлÑÑÐ¸Ñ Ð¸ пÑ.) поÑле ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¸Ð³Ð½Ð¾ÑиÑÑеÑÑÑ, а вÑе оÑÑалÑнÑе пÑÐ¾Ð±ÐµÐ»Ñ Ð¿ÐµÑаÑаÑÑÑÑ Ð¾Ð±ÑÑнÑм обÑазом. ÐапÑимеÑ, ÑледÑÑÑие ÑÑÑоки даÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñй ÑезÑлÑÑÐ°Ñ @math{\tilde a}: @samp{\tilde@{a@}}; @samp{\tilde a}; @samp{\tilde@{@}a}.
+
+ at ifhtml
+ at html
+Ð ÑаÑÑноÑÑи, ÑаÑпознаÑÑÑÑ Ð³ÑеÑеÑкие бÑквÑ: α – \alpha, β – \beta, γ – \gamma, δ – \delta, ε – \epsilon, η – \eta, ι – \iota, χ – \chi, κ – \kappa, λ – \lambda, μ – \mu, ν – \nu, o – \o, ω – \omega, ϕ – \phi, π – \pi, ψ – \psi, ρ – \rho, σ – \sigma, θ – \theta, τ – \tau, υ – \upsilon, ξ – \xi, ζ – \zeta, ς – \varsigma, ɛ – \varepsilon, ϑ – \vartheta, φ – \varphi, ϰ – \varkappa; A – \Alpha, B – \Beta, Γ – \Gamma, Δ – \Delta, E – \Epsilon, H – \Eta, I – \Iota, C – \Chi, K – \Kappa, Λ – \Lambda, M – \Mu, N – \Nu, O – \O, Ω – \Omega, Φ – \Phi, Π – \Pi, Ψ – \Psi, R – \Rho, Σ – \Sigma, Θ – \Theta, T – \Tau, Υ – \Upsilon, Ξ – \Xi, Z – \Zeta.
+
+<p>ÐÑе пÑимеÑÑ Ð½Ð°Ð¸Ð±Ð¾Ð»ÐµÐµ обÑеÑпоÑÑебиÑелÑнÑÑ
TeX-иÑ
Ñимволов: ∠ – \angle, ⋅ – \cdot, ♣ – \clubsuit, ✓ – \checkmark, ∪ – \cup, ∩ – \cap, ♢ – \diamondsuit, ◇ – \diamond, ÷
+ – \div,
+↓ – \downarrow, † – \dag, ‡ – \ddag, ≡ – \equiv, ∃ – \exists, ⌢ – \frown, ♭ – \flat, ≥ – \ge, ≥ – \geq, ≧ – \geqq, ← – \gets, ♡ – \heartsuit, ∞ – \infty, ∫ – \int, \Int, ℑ – \Im, ♢ – \lozenge, ⟨ – \langle, ≤ – \le, ≤ – \leq, ≦ – \leqq, ← – \leftarrow, ∓ – \mp, ∇ – \nabla, ≠ – \ne, ≠ – \neq, ♮ – \natural, ∮ – \oint, ⊙ – \odot, ⊕ – \oplus, ∂ – \partial, ∥ – \parallel, ⊥ –\perp, ± – \pm, ∝ – \propto, ∏ – \prod, ℜ – \Re, → – \rightarrow, ⟩ – \rangle, ♠ – \spadesuit, ~ – \sim, ⌣ – \smile, ⊂ – \subset, ⊃ – \supset, √ – \sqrt or \surd, § – \S, ♯ – \sharp, ∑ – \sum, × – \times, → – \to, ∴ – \therefore, ↑ – \uparrow, ℘ – \wp. </p>
+ at end html
+ at end ifhtml
+ at ifnothtml
+Ð ÑаÑÑноÑÑи, ÑаÑпознаÑÑÑÑ Ð³ÑеÑеÑкие бÑквÑ: @math{\alpha} -- \alpha, @math{\beta} -- \beta, @math{\gamma} -- \gamma, @math{\delta} -- \delta, @math{\epsilon} -- \epsilon, @math{\eta} -- \eta, @math{\iota} -- \iota, @math{\chi} -- \chi, @math{\kappa} -- \kappa, @math{\lambda} -- \lambda, @math{\mu} -- \mu, @math{\nu} -- \nu, @math{o} -- \o, @math{\omega} -- \omega, @math{\phi} -- \phi, @math{\pi} -- \pi, @math{\psi} -- \psi, @math{\rho} -- \rho, @math{\sigma} -- \sigma, @math{\theta} -- \theta, @math{\tau} -- \tau, @math{\upsilon} -- \upsilon, @math{\xi} -- \xi, @math{\zeta} -- \zeta, @math{\varsigma} -- \varsigma, @math{\varepsilon} -- \varepsilon, @math{\vartheta} -- \vartheta, @math{\varphi} -- \varphi, A -- \Alpha, B -- \Beta, @math{\Gamma} -- \Gamma, @math{\Delta} -- \Delta, E -- \Epsilon, H -- \Eta, I -- \Iota, C -- \Chi, K -- \Kappa, @math{\Lambda} -- \Lambda, M -- \Mu, N -- \Nu, O -- \O, @math{\Omega} -- \Omega, @math{\Phi} -- \Phi, @math{\Pi} -- \Pi, @math{\Psi} -- \Psi, R -- \Rho, @math{\Sigma} -- \Sigma, @math{\Theta} -- \Theta, T -- \Tau, @math{\Upsilon} -- \Upsilon, @math{\Xi} -- \Xi, Z -- \Zeta.
+
+ÐÑе пÑимеÑÑ Ð½Ð°Ð¸Ð±Ð¾Ð»ÐµÐµ обÑеÑпоÑÑебиÑелÑнÑÑ
TeX-иÑ
Ñимволов: @math{\angle} -- \angle, @math{\aleph} -- \aleph, @math{\cdot} -- \cdot, @math{\clubsuit} -- \clubsuit, @math{\cup} -- \cup, @math{\cap} -- \cap, @math{\diamondsuit} -- \diamondsuit, @math{\diamond} -- \diamond, @math{\div} -- \div, @math{\downarrow} -- \downarrow, @math{\dag} -- \dag, @math{\ddag} -- \ddag, @math{\equiv} -- \equiv, @math{\exists} -- \exists, @math{\frown} -- \frown, @math{\flat} -- \flat, @math{\ge} -- \ge, @math{\geq} -- \geq, @math{\gets} -- \gets, @math{\heartsuit} -- \heartsuit, @math{\infty} -- \infty, @math{\in} -- \in, @math{\int} -- \int, @math{\Im} -- \Im, @math{\langle} -- \langle, @math{\le} -- \le, @math{\leq} -- \leq, @math{\leftarrow} -- \leftarrow, @math{\mp} -- \mp, @math{\nabla} -- \nabla, @math{\ne} -- \ne, @math{\neq} -- \neq, @math{\natural} -- \natural, @math{\oint} -- \oint, @math{\odot} -- \odot, @math{\oplus} -- \oplus, @math{\partial} -- \partial, @math{\parallel} -- \parallel, @math{\perp} -- \perp, @math{\pm} -- \pm, @math{\propto} -- \propto, @math{\prod} -- \prod, @math{\Re} -- \Re, @math{\rightarrow} -- \rightarrow, @math{\rangle} -- \rangle, @math{\spadesuit} -- \spadesuit, @math{\sim} -- \sim, @math{\smile} -- \smile, @math{\subset} -- \subset, @math{\supset} -- \supset, @math{\surd} -- \sqrt or \surd, @math{\S} -- \S, @math{\sharp} -- \sharp, @math{\sum} -- \sum, @math{\times} -- \times, @math{\to} -- \to, @math{\uparrow} -- \uparrow, @math{\wp} -- \wp and so on.
+ at end ifnothtml
+
+Ð Ð°Ð·Ð¼ÐµÑ ÑекÑÑа Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð·Ð°Ð´Ð°Ð½ Ñвно (еÑли @var{size}>0) или оÑноÑиÑелÑно базового ÑазмеÑа ÑÑиÑÑа Ð´Ð»Ñ ÑиÑÑнка |@var{size}|*@var{FontSize} пÑи @var{size}<0. ÐнаÑение @var{size}=0 ÑказÑваеÑ, ÑÑо ÑооÑвеÑÑÑвÑÑÑÐ°Ñ ÑÑÑока вÑводиÑÑÑÑ Ð½Ðµ бÑдеÑ. ÐазовÑй ÑÐ°Ð·Ð¼ÐµÑ ÑÑиÑÑа измеÑÑеÑÑÑ Ð²Ð¾ внÑÑÑенниÑ
единиÑаÑ
. СпеÑиалÑнÑе ÑÑнкÑии @code{SetFontSizePT(), SetFontSizeCM(), SetFontSizeIN()} позволÑÑÑ Ð·Ð°Ð´Ð°Ð²Ð°ÑÑ ÐµÐ³Ð¾ в более ``пÑивÑÑнÑÑ
'' единиÑаÑ
.
+
+ at node Textual formulas, , Font styles, General concepts
+ at subsection ТекÑÑовÑе ÑоÑмÑлÑ
+
+ at cindex ТекÑÑовÑе ÑоÑмÑлÑ
+
+MathGL Ð¸Ð¼ÐµÐµÑ Ð±ÑÑÑÑÑй паÑÑÐµÑ ÑекÑÑовÑÑ
ÑоÑмÑл
+ at ifclear UDAV
+ (@pxref{mglFormula class})
+ at end ifclear
+, понимаÑÑий болÑÑое ÑиÑло ÑÑнкÑий и опеÑаÑий. ÐазовÑе опеÑаÑии: @samp{+} -- Ñложение, @samp{-} -- вÑÑиÑание, @samp{*} -- Ñмножение, @samp{/} -- деление, @samp{^} -- возведение в ÑелоÑиÑленнÑÑ ÑÑепенÑ. Также еÑÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкие опеÑаÑии: @samp{<} -- иÑÑина еÑли if x<y, @samp{>} -- иÑÑина еÑли x>y, @samp{=} -- иÑÑина еÑли x=y, @samp{&} -- иÑÑина еÑли x и y оба не ÑÐ°Ð²Ð½Ñ Ð½ÑлÑ, @samp{|} -- иÑÑина еÑли x или y не нÑлÑ. ÐогиÑеÑкие опеÑаÑии имеÑÑ Ð½Ð°Ð¸Ð½Ð¸Ð·Ñий пÑиоÑиÑÐµÑ Ð¸ возвÑаÑаÑÑ 1 еÑли иÑÑина или 0 еÑли ложно.
+
+ÐазовÑе ÑÑнкÑии: @samp{sqrt(x)} -- квадÑаÑнÑй коÑÐµÐ½Ñ Ð¸Ð· @var{x}, @samp{pow(x,y)} -- @var{x} в ÑÑепени @var{y}, @samp{ln(x)} -- наÑÑÑалÑнÑй логаÑиÑм @var{x}, @samp{lg(x)} -- деÑÑÑиÑнÑй логаÑиÑм @var{x}, @samp{log(a,x)} -- логаÑиÑм по оÑÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ @var{a} Ð¾Ñ @var{x}, @samp{abs(x)} -- модÑÐ»Ñ @var{x}, @samp{sign(x)} -- знак @var{x}, @samp{mod(x,y)} -- оÑÑаÑок Ð¾Ñ Ð´ÐµÐ»ÐµÐ½Ð¸Ñ x на y, @samp{step(x)} -- ÑÑÑпенÑаÑÐ°Ñ ÑÑнкÑиÑ, @samp{int(x)} -- ÑÐµÐ»Ð°Ñ ÑаÑÑÑ @var{x}, @samp{rnd} -- ÑлÑÑайное ÑиÑло, @samp{pi} -- ÑиÑло
+ at ifhtml
+ at html
+π = 3.1415926…
+ at end html
+ at end ifhtml
+ at ifnothtml
+ at math{\pi=3.1415926...}
+ at end ifnothtml
+
+ТÑигономеÑÑиÑеÑкие ÑÑнкÑии: @samp{sin(x)}, @samp{cos(x)}, @samp{tan(x)} (или @samp{tg(x)}). ÐбÑаÑнÑе ÑÑигономеÑÑиÑеÑкие ÑÑнкÑии: @samp{asin(x)}, @samp{acos(x)}, @samp{atan(x)}. ÐипеÑболиÑеÑкие ÑÑнкÑии: @samp{sinh(x)} (или @samp{sh(x)}), @samp{cosh(x)} (или @samp{ch(x)}), @samp{tanh(x)} (или @samp{th(x)}). ÐбÑаÑнÑе гипеÑболиÑеÑкие ÑÑнкÑии: @samp{asinh(x)}, @samp{acosh(x)}, @samp{atanh(x)}.
+
+ at ifhtml
+ at html
+<p>СпеÑиалÑнÑе ÑÑнкÑии: ‘<samp>gamma(x)</samp>’ – гамма ÑÑнкÑÐ¸Ñ Γ(x) = ∫<sub>0</sub><sup>∞</sup> t<sup>x-1</sup> exp(-t) dt, ‘<samp>psi(x)</samp>’ – дигамма ÑÑнкÑÐ¸Ñ ψ(x) = Γ′(x)/Γ(x) Ð´Ð»Ñ x≠0, ‘<samp>ai(x)</samp>’ – ÐйÑи ÑÑнкÑÐ¸Ñ Ai(x), ‘<samp>bi(x)</samp>’ – ÐйÑи ÑÑнкÑÐ¸Ñ Bi(x), ‘<samp>cl(x)</samp>’ – ÑÑнкÑÐ¸Ñ ÐлаÑзена, ‘<samp>li2(x)</samp>’ (или ‘<samp>dilog(x)</samp>’) – дилогаÑиÑм Li<sub>2</sub>(x) = -ℜ∫<sub>0</sub><sup>x</sup>ds log(1-s)/s, ‘<samp>sinc(x)</samp>’ – ÑÑнкÑÐ¸Ñ sinc(x) = sin(πx)/(πx) Ð´Ð»Ñ Ð»ÑбÑÑ
x, ‘<samp>zeta(x)</samp>’ – зеÑа ÑÑнкÑÐ¸Ñ Ð Ð¸Ð¼Ð°Ð½Ð° ζ(s) = ∑<sub>k=1</sub><sup>∞</sup>k<sup>-s</sup> Ð´Ð»Ñ s≠1, ‘<samp>eta(x)</samp>’ – ÑÑа ÑÑнкÑÐ¸Ñ η(s) = (1 - 2<sup>1-s</sup>)ζ(s) Ð´Ð»Ñ Ð¿ÑоизволÑного s, ‘<samp>lp(l,x)</samp>’ – полином ÐежандÑа P<sub>l</sub>(x), (|x|≤1, l≥0), ‘<samp>w0(x)</samp>’, ‘<samp>w1(x)</samp>’ – ÑÑнкÑии ÐамбеÑÑа W. ФÑнкÑии W(x) опÑÐµÐ´ÐµÐ»ÐµÐ½Ñ ÐºÐ°Ðº ÑеÑение ÑÑавнениÑ: W exp(W) = x. </p>
+
+<p>ÐкÑпоненÑиалÑнÑе инÑегÑалÑ: ‘<samp>ci(x)</samp>’ – cos-инÑегÑал Ci(x) = ∫<sub>0</sub><sup>x</sup>dt cos(t)/t, ‘<samp>si(x)</samp>’ – sin-инÑегÑал Si(x) = ∫<sub>0</sub><sup>x</sup>dt sin(t)/t, ‘<samp>erf(x)</samp>’ – ÑÑнкÑÐ¸Ñ Ð¾Ñибки erf(x) = (2/√π) ∫<sub>0</sub><sup>x</sup>dt exp(-t<sup>2</sup>) , ‘<samp>ei(x)</samp>’ – инÑегÑал Ei(x) = -PV(∫<sub>-x</sub><sup>∞</sup>dt exp(-t)/t) (где PV обознаÑÐ°ÐµÑ Ð³Ð»Ð°Ð²Ð½Ð¾Ðµ знаÑение), ‘<samp>e1(x)</samp>’ – инÑегÑал E<sub>1</sub>(x) = ℜ∫<sub>1</sub><sup>∞</sup>dt exp(-xt)/t, ‘<samp>e2(x)</samp>’ – инÑегÑал E<sub>2</sub>(x) = ℜ∫<sub>1</sub>∞</sup>dt exp(-xt)/t<sup>2</sup>, ‘<samp>ei3(x)</samp>’ – инÑегÑал Ei<sub>3</sub>(x) = ∫<sub>0</sub><sup>x</sup>dt exp(-t<sup>3</sup>) Ð´Ð»Ñ x≥0. </p>
+
+<p>ФÑнкÑии ÐеÑÑелÑ: ‘<samp>j(nu,x)</samp>’ – ÑÑнкÑÐ¸Ñ ÐеÑÑÐµÐ»Ñ Ð¿ÐµÑвого Ñода, ‘<samp>y(nu,x)</samp>’ – ÑÑнкÑÐ¸Ñ ÐеÑÑÐµÐ»Ñ Ð²ÑоÑого Ñода, ‘<samp>i(nu,x)</samp>’ – модиÑиÑиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ ÑÑнкÑÐ¸Ñ ÐеÑÑÐµÐ»Ñ Ð¿ÐµÑвого Ñода, ‘<samp>k(nu,x)</samp>’ – модиÑиÑиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ ÑÑнкÑÐ¸Ñ ÐеÑÑÐµÐ»Ñ Ð²ÑоÑого Ñода. </p>
+
+<p>ÐллипÑиÑеÑкие инÑегÑалÑ: ‘<samp>ee(k)</samp>’ – полнÑй ÑллипÑиÑеÑкий инÑегÑал E(k) = E(π/2,k), ‘<samp>ek(k)</samp>’ – полнÑй ÑллипÑиÑеÑкий инÑегÑал K(k) = F(π/2,k), ‘<samp>e(phi,k)</samp>’ – ÑллипÑиÑеÑкий инÑегÑал E(φ,k) = ∫<sub>0</sub><sup>φ</sup>dt √(1 - k<sup>2</sup>sin<sup>2</sup>(t)), ‘<samp>f(phi,k)</samp>’ – ÑллипÑиÑеÑкий инÑегÑал F(φ,k) = ∫<sub>0</sub><sup>φ</sup>dt 1/√(1 - k<sup>2</sup>sin<sup>2</sup>(t))</p>
+ at end html
+ at end ifhtml
+ at ifnothtml
+СпеÑиалÑнÑе ÑÑнкÑии: @samp{gamma(x)} -- гамма ÑÑнкÑÐ¸Ñ @math{\Gamma(x) = \int_0^\infty dt t^@{x-1@} \exp(-t)} , @samp{psi(x)} -- дигамма ÑÑнкÑÐ¸Ñ @math{\psi(x) = \Gamma</samp>’(x)/\Gamma(x)} Ð´Ð»Ñ x!=0, @samp{ai(x)} -- ÐйÑи ÑÑнкÑÐ¸Ñ Ai(x), @samp{bi(x)} -- ÐйÑи ÑÑнкÑÐ¸Ñ Bi(x), @samp{cl(x)} -- ÑÑнкÑÐ¸Ñ ÐлаÑзена, @samp{li2(x)} (или @samp{dilog(x)}) -- дилогаÑиÑм @math{Li_2(x) = - \Re \int_0^x ds \log(1-s)/s}, @samp{sinc(x)} -- ÑÑнкÑÐ¸Ñ @math{sinc(x) = \sin(\pi x) / (\pi x)} Ð´Ð»Ñ Ð»ÑбÑÑ
x, @samp{zeta(x)} -- зеÑа ÑÑнкÑÐ¸Ñ Ð Ð¸Ð¼Ð°Ð½Ð° @math{\zeta(s) = \sum_@{k=1@}^\infty k^@{-s@}} Ð´Ð»Ñ s!=1, @samp{eta(x)} -- ÑÑа ÑÑнкÑÐ¸Ñ @math{\eta(s) = (1-2^@{1-s@}) \zeta(s)} Ð´Ð»Ñ Ð¿ÑоизволÑного s, @samp{lp(l,x)} -- полином ÐежандÑа @math{P_l(x)}, (|x|<=1, l>=0), @samp{w0(x)}, @samp{w1(x)} -- ÑÑнкÑии ÐамбеÑÑа @var{W}. ФÑнкÑии W(x) опÑÐµÐ´ÐµÐ»ÐµÐ½Ñ ÐºÐ°Ðº ÑеÑение ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ @math{W \exp(W) = x}.
+
+ÐкÑпоненÑиалÑнÑе инÑегÑалÑ: @samp{ci(x)} -- cos-инÑегÑал @math{Ci(x) = \int_0^x dt \cos(t)/t}, @samp{si(x)} -- sin-инÑегÑал @math{Si(x) = \int_0^x dt \sin(t)/t}, @samp{erf(x)} -- ÑÑнкÑÐ¸Ñ Ð¾Ñибки @math{erf(x) = (2/\sqrt(\pi)) \int_0^x dt \exp(-t^2)}, @samp{ei(x)} -- инÑегÑал @math{Ei(x) := - PV(\int_@{-x@}^\infty dt \exp(-t)/t)} (где PV обознаÑÐ°ÐµÑ Ð³Ð»Ð°Ð²Ð½Ð¾Ðµ знаÑение), @samp{e1(x)} -- инÑегÑал @math{E_1(x) := Re \int_1^\infty dt \exp(-xt)/t} , @samp{e2(x)} -- инÑегÑал @math{E_2(x) := Re \int_1^\infty dt \exp(-xt)/t^2}, @samp{ei3(x)} -- инÑегÑал @math{Ei_3(x) = \int_0^x dt \exp(-t^3)} Ð´Ð»Ñ x>=0.
+
+ФÑнкÑии ÐеÑÑелÑ: @samp{j(nu,x)} -- ÑÑнкÑÐ¸Ñ ÐеÑÑÐµÐ»Ñ Ð¿ÐµÑвого Ñода, @samp{y(nu,x)} -- ÑÑнкÑÐ¸Ñ ÐеÑÑÐµÐ»Ñ Ð²ÑоÑого Ñода, @samp{i(nu,x)} -- модиÑиÑиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ ÑÑнкÑÐ¸Ñ ÐеÑÑÐµÐ»Ñ Ð¿ÐµÑвого Ñода, @samp{k(nu,x)} -- модиÑиÑиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ ÑÑнкÑÐ¸Ñ ÐеÑÑÐµÐ»Ñ Ð²ÑоÑого Ñода.
+
+ÐллипÑиÑеÑкие инÑегÑалÑ: @samp{ee(k)} -- полнÑй ÑллипÑиÑеÑкий инÑегÑал @math{E(k) = E(\pi/2, k)}, @samp{ek(k)} -- полнÑй ÑллипÑиÑеÑкий инÑегÑал @math{K(k) = F(\pi/2, k)}, @samp{e(phi,k)} -- ÑллипÑиÑеÑкий инÑегÑал @math{E(\phi,k) = \int_0^\phi dt \sqrt((1 - k^2 \sin^2(t)))}, @samp{f(phi,k)} -- ÑллипÑиÑеÑкий инÑегÑал @math{F(\phi,k) = \int_0^\phi dt 1/\sqrt((1 - k^2 \sin^2(t)))}.
+ at end ifnothtml
+
+ФÑнкÑии Якоби: @samp{sn(u,m)}, @samp{cn(u,m)}, @samp{dn(u,m)}, @samp{sc(u,m)}, @samp{sd(u,m)}, @samp{ns(u,m)}, @samp{cs(u,m)}, @samp{cd(u,m)}, @samp{nc(u,m)}, @samp{ds(u,m)}, @samp{dc(u,m)}, @samp{nd(u,m)}.
+
+ÐекоÑоÑÑе из ÑÑнкÑий могÑÑ Ð±ÑÑÑ Ð½ÐµÐ´Ð¾ÑÑÑÐ¿Ð½Ñ ÐµÑли Ñлаг NO_GSL бÑл опÑеделен пÑи компилÑÑии библиоÑеки MathGL.
+
+ÐÑи ÑазбоÑе ÑоÑмÑл Ð½ÐµÑ ÑазлиÑÐ¸Ñ Ð¼ÐµÐ¶Ð´Ñ Ð²ÐµÑÑ
ним и нижним ÑегиÑÑÑом. ÐÑли аÑгÑÐ¼ÐµÐ½Ñ Ð»ÐµÐ¶Ð¸Ñ Ð²Ð½Ðµ облаÑÑи опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑнкÑии, Ñо возвÑаÑаеÑÑÑ NaN.
+
diff --git a/texinfo/core_en.texi b/texinfo/core_en.texi
index 4a3526b..0103d78 100644
--- a/texinfo/core_en.texi
+++ b/texinfo/core_en.texi
@@ -1,5 +1,4 @@
@c ------------------------------------------------------------------
- at node MathGL core, Plotter classes, Examples, Top
@chapter MathGL core
@cindex mglGraph
@@ -82,7 +81,7 @@ Flag which temporary switches transparency on/off for the plot. This is the same
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} SetTranspType (@code{int} type)
@deftypefnx {C function} @code{void} mgl_set_transp_type (@code{HMGL} gr, @code{int} enable)
-Set the transparency type. Normal transparency (@samp{0}) -- below things is less visible than upper ones. It does not look well in OpenGL mode (mglGraphGL) for several surfaces. Glass-like transparency (@samp{1}) -- below and upper things are commutable and just decrease intensity of light by RGB channel. Lamp-like transparency (@samp{2}) -- below and upper things are commutable and are the source of some additional light. I recommend to set @code{SetAlphaDef(0.3)} or less for lamp-like transparency.
+Set the transparency type. Normal transparency (@samp{0}) -- below things is less visible than upper ones. It does not look well in OpenGL mode (mglGraphGL) for several surfaces. Glass-like transparency (@samp{1}) -- below and upper things are commutable and just decrease intensity of light by RGB channel. Lamp-like transparency (@samp{2}) -- below and upper things are commutable and are the source of some additional light. I recommend to set @code{SetAlphaDef(0.3)} or less for lamp-like transparency. @xref{Normal transparency}, @ref{Glass-like transparency}, @ref{Lamp-like transparency}.
@end deftypefn
@deftypecv {@emph{Obsolete option}} mglGraph @code{float} AlphaDef
@@ -237,7 +236,7 @@ Flag which determines how points outside bounding box are drawn. If it is @code{
@end deftypefn
@float
- at image{png_static/cut, 7cm}
+ at image{cut, 7cm}
@caption{Left figure is drawn with parameter @code{Cut=false}. Right one is drawn with parameter @code{Cut=true}.}
@end float
@@ -377,8 +376,9 @@ Number of actual colors in palette. See @code{SetPalette()}.
@subsection Error handling
@cindex Message
- at cindex WarnCode
+ at c @cindex WarnCode
@cindex SetWarn
+ at cindex GetWarnCode
There are 2 variables which indicate the warnings/errors presence during plot creation. Normally user should set it to zero by @code{SetWarn(0);} before plotting and check if @var{WarnCode} is not zero after plotting. Only last warning will be saved. All warnings/errors produced by MathGL is not critical -- the plot just will not be drawn.
@@ -390,8 +390,9 @@ Set warning code and corresponding message from function @var{who}. Normally you
Pointer to buffer for writing messages about matters why some plot are not drawn. Set to NULL to disable messages. The buffer length must be at least 1024. If Message[0]==0 then there are no messages
@end deftypecv
- at deftypecv {General option (C++)} mglGraph @code{int} WarnCode
-Numerical ID of warning about the not drawn plot. Possible values are:
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{int} GetWarnCode ()
+ at deftypefnx {C function} @code{int} mgl_get_warn_code (@code{HMGL} gr)
+Return the numerical ID of warning about the not drawn plot. Possible values are:
@table @code
@item mglWarnNone=0
Everything OK
@@ -424,6 +425,10 @@ Setsize: size(s) is zero or negative
@item mglWarnFmt
Format is not supported for that build
@end table
+ at end deftypefn
+
+ at deftypecv {Obsolete option} mglGraph @code{int} WarnCode
+Numerical ID of warning about the not drawn plot.
@end deftypecv
@c ==================================================================
@@ -577,7 +582,7 @@ Flag for automatic shifting of axes origin @var{Org} if it lies out of range @va
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} SetFunc (@code{const char *}EqX, @code{const char *}EqY, @code{const char *}EqZ=@code{""}, @code{const char *}EqA=@code{""})
@deftypefnx {C function} @code{void} mgl_set_func (@code{HMGL} gr, @code{const char *}EqX, @code{const char *}EqY, @code{const char *}EqZ)
@deftypefnx {C function} @code{void} mgl_set_func_ext (@code{HMGL} gr, @code{const char *}EqX, @code{const char *}EqY, @code{const char *}EqZ, @code{const char *}EqA)
-Sets transformation formulas for curvilinear coordinate. Each string should contain mathematical expression for real coordinate depending on internal coordinates x, y, z. For example, the cylindrical coordinates are introduced as @code{Axis("x*cos(y)", "x*sin(y)", "z");}. For removing of formulas the corresponding parameter should be empty or @code{NULL}. Using transformation formulas will slightly slowing the program. Parameter @var{EqA} set the similar transformation formula for color scheme. @xref{mglFormula class}.
+Sets transformation formulas for curvilinear coordinate. Each string should contain mathematical expression for real coordinate depending on internal coordinates @samp{x}, @samp{y}, @samp{z} and @samp{a} or @samp{c} for colorbar. For example, the cylindrical coordinates are introduced as @code{Axis("x*cos(y)", "x*sin(y)", "z");}. For removing of formulas the corresponding parameter should be empty or @code{NULL}. Using transformation formulas will slightly slowing the program. Parameter @var{EqA} set the similar transformation formula for color scheme. @xref{Textual formulas}.
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} SetCoor (@code{int} how)
@@ -683,6 +688,8 @@ The position of common multiplier/component on the axis. See @code{SetTuneTicks(
@cindex RestoreM
@cindex View
@cindex ColumnPlot
+ at cindex Push
+ at cindex Pop
These functions control how and where further plotting will be placed. There is a curtain order of calling of these functions for the better plot view. First one should be SubPlot() or InPlot() for specifying the place. After it a Rotate() and Aspect(). And finally any other plotting functions may be called. Alternatevely you can use ColumnPlot() for position plots in the column one by another without gap between plot axis (bounding boxes).
@@ -692,15 +699,21 @@ These functions control how and where further plotting will be placed. There is
Puts further plotting in a @var{m}-th cell of @var{nx}*@var{ny} grid of the whole frame area. This function set off any aspects or rotations. So it should be used first for creating the subplot. From the aesthetical point of view it is not recommended to use this function with different matrices in the same frame. The position of the cell can be shifted from its default position by relative size @var{dx}, @var{dy}.
@end deftypefn
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} SubPlot (@code{int} nx, @code{int} ny, @code{int} m, @code{const char *}style)
+ at deftypefnx {C function} @code{void} mgl_subplot_s (@code{HMGL} gr, @code{int} nx, @code{int} ny, @code{int} m, @code{const char *}style)
+The same as previous but space reserved for axis/colorbar is saved only if @var{style} contain: @samp{L} or @samp{<} -- at left side, @samp{R} or @samp{>} -- at right side, @samp{A} or @samp{^} -- at top side, @samp{U} or @samp{_} -- at bottom side.
+ at end deftypefn
+
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} InPlot (@code{float} x1, @code{float} x2, @code{float} y1, @code{float} y2, @code{bool} rel=@code{false})
@deftypefnx {C function} @code{void} mgl_inplot (@code{HMGL} gr, @code{float} x1, @code{float} x2, @code{float} y1, @code{float} y2)
@deftypefnx {C function} @code{void} mgl_relplot (@code{HMGL} gr, @code{float} x1, @code{float} x2, @code{float} y1, @code{float} y2)
Puts further plotting in some region of the whole frame surface. This function allows one to create a plot in arbitrary place of the screen. The position is defined by rectangular coordinates [@var{x1}, @var{x2}]*[@var{y1}, @var{y2}]. The coordinates @var{x1}, @var{x2}, @var{y1}, @var{y2} are normalized to interval [0, 1]. If parameter @var{rel}=@code{true} then the relative position to current SubPlot() (or last InPlot() with @var{rel}=@code{false}) is used. This function set off any aspects or rotations. So it should be used first for creating subplot.
@end deftypefn
- at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} ColumnPlot (@code{int} num, @code{int} ind)
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} ColumnPlot (@code{int} num, @code{int} ind, @code{float} d=@code{0})
@deftypefnx {C function} @code{void} mgl_columnplot (@code{HMGL} gr, @code{int} num, @code{int} ind)
-Puts further plotting in @var{ind}-th cell of column with @var{num} cells. The position is relative to previous SubPlot() call (or InPlot() with @var{rel}=@code{false}). @sref{ColumnPlot sample}
+ at deftypefnx {C function} @code{void} mgl_columnplot_d (@code{HMGL} gr, @code{int} num, @code{int} ind, @code{float} d)
+Puts further plotting in @var{ind}-th cell of column with @var{num} cells. The position is relative to previous SubPlot() call (or InPlot() with @var{rel}=@code{false}). Parameter @var{d} set extra gap between cells. @sref{ColumnPlot sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} StickPlot (@code{int} num, @code{int} ind, @code{float} tet, @code{float} phi)
@@ -733,10 +746,15 @@ Add (switch on) the perspective to plot. The parameter @math{a ~ 1/z_@{eff@} \in
Clears transformation matrix. This function clears all previous effects of Aspect(), SubPlot(), InPlot() or Rotate() functions. It is equivalent to the call of @code{InPlot(0,1,0,1,rel)}.
@end deftypefn
- at deftypefn {Method on @code{mglGraph} (C++)} @code{void} RestoreM ()
-Restore transformation matrix after last @code{InPlot()}. This function clears all previous effects of Aspect(), SubPlot(), InPlot() or Rotate() functions. It is useful to restore back the transformation matrix after @code{Identity()} call.
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Push ()
+ at deftypefnx {C function} @code{void} mgl_mat_push (@code{HMGL} gr)
+Push transformation matrix into stack. Later you can restore its current state by Pop() function. Stack can keep up to 10 matrices.
@end deftypefn
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Pop ()
+ at deftypefnx {C function} @code{void} mgl_mat_pop (@code{HMGL} gr)
+Pop (restore last 'pushed') transformation matrix into stack.
+ at end deftypefn
@c ##################################################################
@node Export to file, Primitives drawing, Transformation matrix, MathGL core
@@ -784,12 +802,12 @@ Exports current frame to BMP file. Parameter @var{fname} specifies the file name
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} WriteEPS (@code{const char *}fname, @code{const char *}descr=@code{""})
@deftypefnx {C function} @code{void} mgl_write_eps (@code{HMGL} gr, @code{const char *}fname, @code{const char *}descr)
-Exports current frame to EPS file. The vector representation is used if possible. So it is not recommended for the export of large data plot. It is better to use bitmap format (for example PNG or JPEG). However, program has no internal limitations for size of output file. Parameter @var{fname} specifies the file name, @var{descr} adds description to file. By default there is no description added.
+Exports current frame to EPS file. The vector representation is used if possible. So it is not recommended for the export of large data plot. It is better to use bitmap format (for example PNG or JPEG). However, program has no internal limitations for size of output file. Parameter @var{fname} specifies the file name, @var{descr} adds description to file. By default there is no description added. If file name is terminated by @samp{z} (for example, @samp{fname.eps.gz}) then file will be compressed in gzip format.
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} WriteSVG (@code{const char *}fname, @code{const char *}descr=@code{""})
@deftypefnx {C function} @code{void} mgl_write_svg (@code{HMGL} gr, @code{const char *}fname, @code{const char *}descr)
-Exports current frame to SVG (Scalable Vector Graphics) file. The vector representation is used. In difference of EPS format, SVG format support transparency that allows to correctly draw half-transparent plot (like SurfA(), Surf3A(), CloudQ() or CloudP()). Note, the output file may be too large for graphic of large data array (especially for surfaces). It is better to use bitmap format (for example PNG or JPEG). However, program has no internal limitations for size of output file. Parameter @var{fname} specifies the file name, @var{descr} adds description to file (default is file name).
+Exports current frame to SVG (Scalable Vector Graphics) file. The vector representation is used. In difference of EPS format, SVG format support transparency that allows to correctly draw half-transparent plot (like SurfA(), Surf3A(), CloudQ() or CloudP()). Note, the output file may be too large for graphic of large data array (especially for surfaces). It is better to use bitmap format (for example PNG or JPEG). However, program has no internal limitations for size of output file. Parameter @var{fname} specifies the file name, @var{descr} adds description to file (default is file name). If file name is terminated by @samp{z} (for example, @samp{fname.svgz}) then file will be compressed in gzip format.
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} WriteIDTF (@code{const char *}fname, @code{const char *}descr=@code{""})
@@ -918,9 +936,9 @@ Draw a set of triangles (or lines if @var{trig}=@code{NULL}) for glyph which is
@cindex Text
@cindex Title
-These functions draw the text. There are functions for drawing text in arbitrary place, in arbitrary direction and along arbitrary curve. The class mglFont (@pxref{mglFont class}) is used for low-level string parsing and printing. It can use arbitrary font-faces and parse many TeX commands (for detail @pxref{mglFont class}). All these functions have 2 variant: for printing 8-bit text (@code{char *}) and for printing Unicode text (@code{wchar_t *}). In first case the conversion in current locale is used. So sometimes you need to specify it by @code{setlocale()} function. The size argument control the size of text: if positive it give the value, if negative it give the value relative to @var{FontSize}. The font type (STIX, arial, courier, times and so on) can be selected by function SetFont(), GetFont(). @xref{Font settings}.
+These functions draw the text. There are functions for drawing text in arbitrary place, in arbitrary direction and along arbitrary curve. The class mglFont (@pxref{mglFont class}) is used for low-level string parsing and printing. It can use arbitrary font-faces and parse many TeX commands (for detail @pxref{Font styles}). All these functions have 2 variant: for printing 8-bit text (@code{char *}) and for printing Unicode text (@code{wchar_t *}). In first case the conversion in current locale is used. So sometimes you need to specify it by @code{setlocale()} function. The size argument control the size of text: if positive it give the value, if negative it give the value relative to @var{FontSize}. The font type (STIX, arial, courier, times and so on) can be selected by function SetFont(), GetFont(). @xref{Font settings}.
-The font parameters are described by string. This string may contain several characters of font type (@samp{rbiwou}) and/or align (@samp{LRC}) specification. Also it may contain the text color @samp{wkrgbcymhRGBCYMHW} (@pxref{mglColor class}) after symbol @samp{:}. The font types are: @samp{r} -- roman font, @samp{i} -- italic style, @samp{b} -- bold style, @samp{w} -- wired style, @samp{o} -- over-lined text, @samp{u} -- underlined text. By default roman font is used. The align types are: @samp{L} -- align left (default), @samp{C} -- align center, @samp{R} -- align right. For example, string @samp{iC:b} correspond to italic font style for centered text which printed by blue color.
+The font parameters are described by string. This string may contain several characters of font type (@samp{rbiwou}) and/or align (@samp{LRC}) specification. Also it may contain the text color @samp{wkrgbcymhRGBCYMHW} (@pxref{Line styles}) after symbol @samp{:}. The font types are: @samp{r} -- roman font, @samp{i} -- italic style, @samp{b} -- bold style, @samp{w} -- wired style, @samp{o} -- over-lined text, @samp{u} -- underlined text. By default roman font is used. The align types are: @samp{L} -- align left (default), @samp{C} -- align center, @samp{R} -- align right. For example, string @samp{iC:b} correspond to italic font style for centered text which printed by blue color.
If string contains symbols @samp{aA} then text is printed at arbitrary position @{@var{x}, @var{y}@} (supposed to be in range [0,1]) of subplot (for @samp{a}) or picture (for @samp{A}).
@@ -975,7 +993,7 @@ Print string @var{text} as title of the picture (at the top of the picture). Can
@deftypefnx {C function} @code{void} mgl_text_y (@code{HMGL} gr, @code{const HMDT} y, @code{const char *}text, @code{const char *}font, float size)
@deftypefnx {C function} @code{void} mgl_text_xy (@code{const HMDT} x, @code{const HMDT} y, @code{const char *}text, @code{const char *}font, float size)
@deftypefnx {C function} @code{void} mgl_text_xyz (@code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}text, @code{const char *}font, float size)
-The function draws @var{text} along the curve between points @{@var{x}[i], @var{y}[i], @var{z}[i]@} by font style @var{font} and with size @var{size}. The string @var{font} may contain symbols @samp{t} for printing the text under the curve (default), or @samp{T} for printing the text above the curve. The sizes of 1st dimension must be equal for all arrays @var{x.nx=y.nx=z.nx}. If array @var{x} is not specified then its an automatic array is used with values equidistantly distributed in interval [@var{Min}.x, @var{Max}.x] (@pxref{Ranges (bounding box)}). If array @var{z} is not specified then @var{z}[i] = @var{zVal} is used. @sref{Text sample}
+The function draws @var{text} along the curve between points @{@var{x}[i], @var{y}[i], @var{z}[i]@} by font style @var{font} and with size @var{size}. The string @var{font} may contain symbols @samp{t} for printing the text under the curve (default), or @samp{T} for printing the text above the curve. The sizes of 1st dimension must be equal for all arrays @code{x.nx=y.nx=z.nx}. If array @var{x} is not specified then its an automatic array is used with values equidistantly distributed in interval [@var{Min}.x, @var{Max}.x] (@pxref{Ranges (bounding box)}). If array @var{z} is not specified then @var{z}[i] = @var{zVal} is used. @sref{Text sample}
@end deftypefn
@c ##################################################################
@@ -991,23 +1009,27 @@ These functions draw the ``things for measuring'', like axis with ticks, colorba
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Axis (@code{const char *}dir=@code{"xyz"}, @code{bool} adjust=@code{false})
@deftypefnx {C function} @code{void} mgl_axis (@code{HMGL} gr, @code{const char *}dir)
-Draws axes with ticks (@pxref{Axis settings}) in directions determined by string parameter @var{dir}.If string contain the symbol @samp{_} then tick labels are not printed. Font for ticks labels is determined by @var{FontDef} (@pxref{Font settings}). Ticks will be adjusted if @var{adjust}=@code{true} (by call of @code{AdjustTicks()}).
+Draws axes with ticks (@pxref{Axis settings}) in directions determined by string parameter @var{dir}.If string contain the symbol @samp{_} then tick labels are not printed. Font for ticks labels is determined by @var{FontDef} (@pxref{Font settings}). Ticks will be adjusted if @var{adjust}=@code{true} (by call of @code{AdjustTicks()}). You may specified an arrow at the end of axis (see @pxref{Line styles})
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Colorbar (@code{const char *}sch=@code{""}, @code{int} where=@code{0})
@deftypefnx {C function} @code{void} mgl_colorbar (@code{HMGL} gr, @code{const char *}sch, @code{int} where)
-Draws colorbar with color scheme @var{sch} (current scheme if @code{sch=""}) at edge of plot. Parameter @var{where} specifies the position of the colorbar: @samp{0} - at right (default), @samp{1} - at left, @samp{2} - at top, @samp{3} - at bottom. @sref{Dens sample}
+Draws colorbar with color scheme @var{sch} (current scheme if @code{sch=""}) at edge of plot. Parameter @var{where} specifies the position of the colorbar: @samp{0} - at right (default), @samp{1} - at left, @samp{2} - at top, @samp{3} - at bottom. If string @var{sch} contains @samp{<>^_} then the parameter @var{pos} is defined as: @code{pos=0} for @samp{>} (right), @code{pos=1} for @samp{<} (left), @code{pos=2} for @samp{^} (top), @code{pos=3} for @samp{_} (bottom). If string have @samp{A} then absolute (relative to picture) coordinates is used. @sref{Dens sample}
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Colorbar (@code{const mglData &}v, @code{const char *}sch=@code{""}, @code{int} where=@code{0})
+ at deftypefnx {C function} @code{void} mgl_colorbar_val (@code{HMGL} gr, @code{const HMDT} v, @code{const char *}sch, @code{int} where)
+The same as previous but with sharp colors @var{sch} (current palette if @code{sch=""}) for values @var{v}. @sref{ContD sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Colorbar (@code{const char *}sch, @code{int} where, @code{float} x, @code{float} y, @code{float} w, @code{float} h)
- at deftypefnx {Method on @code{mglGraph} (C++)} @code{void} Colorbar (@code{int} where, @code{float} x, @code{float} y, @code{float} w, @code{float} h)
+ at deftypefnx {Method on @code{mglGraph} (C++, Python)} @code{void} Colorbar (@code{int} where, @code{float} x, @code{float} y, @code{float} w, @code{float} h)
@deftypefnx {C function} @code{void} mgl_colorbar_ext (@code{HMGL} gr, @code{const char *}sch, @code{int} where, @code{float} x, @code{float} y, @code{float} w, @code{float} h)
-Draws colorbar with color scheme @var{sch} (current scheme if not specified) at arbitrary position of subplot @{@var{x}, @var{y}@} (supposed to be in range [0,1]). Parameter @var{where} specifies the position of colorbar labels: @samp{0} - at left, @samp{1} - at right, @samp{2} - at bottom, @samp{3} - at top. Parameters @var{w}, @var{h} set the relative width and height of the colorbar.
+The same as first one but at arbitrary position of subplot @{@var{x}, @var{y}@} (supposed to be in range [0,1]). Parameters @var{w}, @var{h} set the relative width and height of the colorbar.
@end deftypefn
- at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Colorbar (@code{const mglData &}v, @code{const char *}sch=@code{""}, @code{int} where=@code{0})
- at deftypefnx {C function} @code{void} mgl_colorbar_val (@code{HMGL} gr, @code{const HMDT} v, @code{const char *}sch, @code{int} where)
-Draws colorbar with sharp colors @var{sch} (current palette if @code{sch=""}) for values @var{v} at edge of plot. Parameter @var{where} specifies the position of the colorbar: @samp{0} - at right (default), @samp{1} - at left, @samp{2} - at top, @samp{3} - at bottom. @sref{ContD sample}
+ at deftypefn {Method on @code{mglGraph} (C++)} @code{void} Colorbar (@code{const mglData &}v, @code{const char *}sch, @code{int} where, @code{float} x, @code{float} y, @code{float} w, @code{float} h)
+The same as previous but with sharp colors @var{sch} (current palette if @code{sch=""}) for values @var{v}. @sref{ContD sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Grid (@code{const char *}dir=@code{"xyz"}, @code{const char *}pen=@code{"B-"})
@@ -1023,8 +1045,8 @@ Draws grid lines perpendicular to direction determined by string parameter @var{
Draws bounding box outside the plotting volume with color @var{col}.
@end deftypefn
- at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Label (@code{char} dir, @code{const char *}text, @code{float} pos=@code{+1}, @code{float} size=@code{-1.4}, @code{float} shift=@code{0})
- at deftypefnx {Method on @code{mglGraph} (C++)} @code{void} Label (@code{char} dir, @code{const wchar_t *}text, @code{float} pos=@code{+1}, @code{float} size=@code{-1.4}, @code{float} shift=@code{0})
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Label (@code{char} dir, @code{const char *}text, @code{float} pos=@code{0}, @code{float} size=@code{-1.4}, @code{float} shift=@code{0})
+ at deftypefnx {Method on @code{mglGraph} (C++)} @code{void} Label (@code{char} dir, @code{const wchar_t *}text, @code{float} pos=@code{0}, @code{float} size=@code{-1.4}, @code{float} shift=@code{0})
@deftypefnx {C function} @code{void} mgl_label (@code{HMGL} gr, @code{char} dir, @code{const char *}text)
@deftypefnx {C function} @code{void} mgl_label_ext (@code{HMGL} gr, @code{char} dir, @code{const char *}text, @code{float} pos, @code{float} size, @code{float} shift)
@deftypefnx {C function} @code{void} mgl_labelw_ext (@code{HMGL} gr, @code{char} dir, @code{const wchar_t *}text, @code{float} pos, @code{float} size, @code{float} shift)
@@ -1037,8 +1059,10 @@ Prints the label @var{text} for axis @var{dir}=@samp{x}, at samp{y}, at samp{z}, at samp{
@cindex Legend
@cindex AddLegend
@cindex ClearLegend
+ at cindex SetLegendBox
+ at cindex SetLegendMarks
-These functions draw legend to the graph (useful for @ref{1D plotting}). Legend entry is a pair of strings: one for style of the line, another one with description text (with included TeX parsing). The arrays of strings may be used directly or by accumulating first to the internal arrays (by function AddLegend()) and further plotting it. The position of the legend can be selected automatic or manually. Parameters @var{font} and @var{size} specify the font style and size (@pxref{Font settings}). Parameter @var{llen} set the relative width of the line sample and the text indent. If line style string for entry is empty then the corresponding text is printed without indent. @sref{Legend sample}
+These functions draw legend to the graph (useful for @ref{1D plotting}). Legend entry is a pair of strings: one for style of the line, another one with description text (with included TeX parsing). The arrays of strings may be used directly or by accumulating first to the internal arrays (by function AddLegend()) and further plotting it. The position of the legend can be selected automatic or manually. Parameters @var{font} and @var{size} specify the font style and size (@pxref{Font settings}). Parameter @var{llen} set the relative width of the line sample and the text indent. If line style string for entry is empty then the corresponding text is printed without indent. If string @var{font} contains symbol @samp{A} then legend coordinates set position in the picture (not in the current subplot). @sref{Legend sample}
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Legend (@code{int} where=@code{0x3}, @code{const char *}font=@code{"rL"}, @code{float} size=@code{-0.8}, @code{float} llen=@code{0.1})
@deftypefnx {C function} @code{void} mgl_legend (@code{HMGL} gr, @code{int} where, @code{const char *}font, @code{float} size, @code{float} llen)
@@ -1075,6 +1099,11 @@ Clears saved legend strings.
Switch on/off drawing box near legend. By default (=@code{true}) box is drawn.
@end deftypefn
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} SetLegendMarks (@code{int} num)
+ at deftypefnx {C function} @code{void} mgl_set_legend_marks (@code{HMGL} gr, @code{int} num)
+Set the number of marks in the legend. By default 1 mark is used.
+ at end deftypefn
+
@deftypecv {@emph{Obsolete option}} mglGraph @code{bool} LegendBox
Switch on/off drawing box near legend. See @code{SetLegendBox()}.
@end deftypecv
@@ -1083,7 +1112,7 @@ Switch on/off drawing box near legend. See @code{SetLegendBox()}.
@node 1D plotting, 2D plotting, Legend, MathGL core
@section 1D plotting
-These functions perform plotting of 1D data. 1D means that data depended from only 1 parameter like parametric curve @{x(i),y(i),z(i)@}, i=1...n. There are 5 generally different types of data representations: simple line plot (Plot), line plot with filling under it (Area), stairs plot (Step), bar plot (Bars, Barh) and vertical lines (Stem). 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 are specified by the string argument. If the string parameter is "" then solid line with color from palette Pal is used (@pxref{Palette and colors}). Also there are some special 1d plots having slightly different interface: surface of curve rotation (Torus), chart (Chart) and error boxes (Error), marks with variable size (Mark), tubes (Tube) and so on. @xref{Line styles}.
+These functions perform plotting of 1D data. 1D means that data depended from only 1 parameter like parametric curve @{x(i),y(i),z(i)@}, i=1...n. There are 5 generally different types of data representations: simple line plot (Plot), line plot with filling under it (Area), stairs plot (Step), bar plot (Bars, Barh) and vertical lines (Stem). 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 are specified by the string argument. If the string parameter is "" then solid line with color from palette Pal is used (@pxref{Palette and colors}). Also there are some special 1d plots having slightly different interface: surface of curve rotation (Torus), chart (Chart) and error boxes (Error), marks with variable size (Mark), tubes (Tube) and so on. @xref{Line styles}. @sref{1D plot sample}
@menu
@@ -1110,7 +1139,7 @@ These functions perform plotting of 1D data. 1D means that data depended from on
@subsection Plot
@cindex Plot
-These functions draw continuous lines between points. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @var{x.nx=y.nx=z.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). See also @ref{Area}, @ref{Step}, @ref{Stem}, @ref{Tube}, @ref{Mark}, @ref{Error}, @ref{Belt}, @ref{Tens}. @sref{Plot sample}
+These functions draw continuous lines between points. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @code{x.nx=y.nx=z.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). See also @ref{Area}, @ref{Step}, @ref{Stem}, @ref{Tube}, @ref{Mark}, @ref{Error}, @ref{Belt}, @ref{Tens}. @sref{Plot sample}
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Plot (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""})
@deftypefnx {C function} @code{void} mgl_plot_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}pen)
@@ -1127,13 +1156,6 @@ The function draws continuous lines between points @{@var{x}[i], @var{y}[i]@} in
The function draws continuous lines between points @{@var{x}[i], @var{y}[i]@} in plane @var{z}=@var{zVal} (default in plane @var{z}=@var{Min.z}), where @var{x}[i] values are equidistantly distributed in interval [@var{Min}.x, @var{Max}.x].
@end deftypefn
- at deftypefn {Method on @code{mglGraph} (C++)} @code{void} Plot2 (@code{const mglData &}a, @code{const char *}pen=@code{""}, @code{float} zVal=@code{NAN})
-The function draws continuous lines between points @{@var{x}[i], @var{y}[i]@} in plane @var{z}=@var{zVal} (default in plane @var{z}=@var{Min.z}), where @var{x}=@var{a}(2*k,:), @var{y}=@var{a}(2*k+1,:), k \in 0 ... @var{a.ny}/2. This function is obsolete -- use Plot() and SubData() functions instead.
- at end deftypefn
- at deftypefn {Method on @code{mglGraph} (C++)} @code{void} Plot3 (@code{const mglData &}a, @code{const char *}pen=@code{""})
-The function draws continuous lines between points @{@var{x}[i], @var{y}[i], @var{z}[i]@} in 3D space, where @var{x}=@var{a}(3*k,:), @var{y}=@var{a}(3*k+1,:), @var{z}=@var{a}(3*k+2,:), k \in 0 ... @var{a.ny}/3. This function is obsolete -- use Plot() and SubData() functions instead.
- at end deftypefn
-
@c ==================================================================
@node Radar, Tens, Plot, 1D plotting
@subsection Radar
@@ -1149,7 +1171,7 @@ This functions draws radar chart which is continuous lines between points locate
@subsection Tens
@cindex Tens
-These functions draw continuous lines between points with color defined by the special array (look like tension plot). The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @var{x.nx=y.nx=z.nx}. String @var{pen} specifies the color scheme (@pxref{Color scheme}) and style and/or width of line (@pxref{Line styles}). By default (@code{pen=""}) solid line with current color scheme is used. See also @ref{Plot}, @ref{Mesh}, @ref{Fall}. @sref{Tens sample}
+These functions draw continuous lines between points with color defined by the special array (look like tension plot). The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @code{x.nx=y.nx=z.nx}. String @var{pen} specifies the color scheme (@pxref{Color scheme}) and style and/or width of line (@pxref{Line styles}). By default (@code{pen=""}) solid line with current color scheme is used. See also @ref{Plot}, @ref{Mesh}, @ref{Fall}. @sref{Tens sample}
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Tens (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}c, @code{const char *}pen=@code{""})
@deftypefnx {C function} @code{void} mgl_tens_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} c, @code{const char *}pen)
@@ -1171,30 +1193,21 @@ The function draws continuous lines between points @{@var{x}[i], @var{y}[i]@} in
@subsection Area
@cindex Area
-These functions draw continuous lines between points and fills it to axis plane. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @var{x.nx=y.nx=z.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). See also @ref{Plot}, @ref{Bars}, @ref{Stem}. @sref{Area sample}
+These functions draw continuous lines between points and fills it to axis plane. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @code{x.nx=y.nx=z.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). Also you can use gradient filling if number of specified colors is equal to 2*number of curves. If string contain symbol @samp{a} then lines are drawn one above another (like summation) -- you can reach the same effect if call @code{y.CumSum("y");} before plot. See also @ref{Plot}, @ref{Bars}, @ref{Stem}. @sref{Area sample}
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Area (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""})
@deftypefnx {C function} @code{void} mgl_area_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}pen)
The function draws continuous lines between points @{@var{x}[i], @var{y}[i], @var{z}[i]@} in 3D space and fills it down to @var{z} = Org.z.
@end deftypefn
- at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Area (@code{const mglData &}x, @code{const mglData &}y, @code{const char *}pen=@code{""}, @code{bool} sum=@code{false})
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Area (@code{const mglData &}x, @code{const mglData &}y, @code{const char *}pen=@code{""})
@deftypefnx {C function} @code{void} mgl_area_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const char *}pen)
- at deftypefnx {C function} @code{void} mgl_area_xys (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const char *}pen)
-The function draws continuous lines between points @{@var{x}[i], @var{y}[i]@} in plane @var{z}=@var{zVal} (default in plane @var{z}=@var{Min.z}) and fills it down to @var{y} = Org.y. Parameter @var{sum} set to draw a lines one above another (like summation). Note, you can reach the same effect if call @code{y.CumSum("y");} before plot.
+The function draws continuous lines between points @{@var{x}[i], @var{y}[i]@} in plane @var{z}=@var{zVal} (default in plane @var{z}=@var{Min.z}) and fills it down to @var{y} = Org.y.
@end deftypefn
- at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Area (@code{const mglData &}y, @code{const char *}pen=@code{""}, @code{bool} sum=@code{false})
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Area (@code{const mglData &}y, @code{const char *}pen=@code{""})
@deftypefnx {C function} @code{void} mgl_area (@code{HMGL} gr, @code{const HMDT} y, @code{const char *}pen)
- at deftypefnx {C function} @code{void} mgl_area_s (@code{HMGL} gr, @code{const HMDT} y, @code{const char *}pen)
-The function draws continuous lines between points @{@var{x}[i], @var{y}[i]@} in plane @var{z}=@var{zVal} (default in plane @var{z}=@var{Min.z}) and fills it down to @var{y} = Org.y, where @var{x}[i] values are equidistantly distributed in interval [@var{Min}.x, @var{Max}.x]. Parameter @var{sum} set to draw a lines one above another (like summation). Note, you can reach the same effect if call @code{y.CumSum("y");} before plot.
- at end deftypefn
-
- at deftypefn {Method on @code{mglGraph} (C++)} @code{void} Area2 (@code{const mglData &}a, @code{const char *}pen=@code{""}, @code{float} zVal=@code{NAN})
-The function draws continuous lines between points @{@var{x}[i], @var{y}[i]@} in plane @var{z}=@var{zVal} (default in plane @var{z}=@var{Min.z}) and fills it down to @var{y} = Org.y, where @var{x}=@var{a}(2*k,:), @var{y}=@var{a}(2*k+1,:), k \in 0 ... @var{a.ny}/2. This function is obsolete -- use Area() and SubData() functions instead.
- at end deftypefn
- at deftypefn {Method on @code{mglGraph} (C++)} @code{void} Area3 (@code{const mglData &}a, @code{const char *}pen=@code{""})
-The function draws continuous lines between points @{@var{x}[i], @var{y}[i], @var{z}[i]@} in 3D space and fills it down to @var{z} = Org.z, where @var{x}=@var{a}(3*k,:), @var{y}=@var{a}(3*k+1,:), @var{z}=@var{a}(3*k+2,:), k \in 0 ... @var{a.ny}/3. This function is obsolete -- use Area() and SubData() functions instead.
+The function draws continuous lines between points @{@var{x}[i], @var{y}[i]@} in plane @var{z}=@var{zVal} (default in plane @var{z}=@var{Min.z}) and fills it down to @var{y} = Org.y, where @var{x}[i] values are equidistantly distributed in interval [@var{Min}.x, @var{Max}.x].
@end deftypefn
@c ==================================================================
@@ -1202,11 +1215,11 @@ The function draws continuous lines between points @{@var{x}[i], @var{y}[i], @va
@subsection Region
@cindex Region
-These functions fill area between 2 curves. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @var{x.nx=y1.nx=y2.nx} and all dimensions of arrays @var{y1} and @var{y2} must be equal too. String @var{pen} specifies the color (@pxref{Line styles}). By default (@code{pen=""}) color from palette is used (@pxref{Palette and colors}). See also @ref{Area}, @ref{Bars}, @ref{Stem}. @sref{Region sample}
+These functions fill area between 2 curves. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @code{x.nx=y1.nx=y2.nx} and all dimensions of arrays @var{y1} and @var{y2} must be equal too. String @var{pen} specifies the color (@pxref{Line styles}). By default (@code{pen=""}) color from palette is used (@pxref{Palette and colors}). Also you can use gradient filling if number of specified colors is equal to 2*number of curves. See also @ref{Area}, @ref{Bars}, @ref{Stem}. @sref{Region sample}
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Region (@code{const mglData &}x, @code{const mglData &}y1, @code{const mglData &}y2, @code{const char *}pen=@code{""}, @code{float} zVal=@code{NAN}, @code{bool} inside=@code{true})
@deftypefnx {C function} @code{void} mgl_region_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y1, @code{const HMDT} y2, @code{const char *}pen, @code{int} inside)
-The function fills area between curves @{@var{x}[i], @var{y1}[i]@} and @{@var{x}[i], @var{y2}[i]@} at z=@var{zVal}.
+The function fills area between curves @{@var{x}[i], @var{y1}[i]@} and @{@var{x}[i], @var{y2}[i]@} at z=@var{zVal}. Parameter @code{inside=false} set to fill are with y1<y<y2 else the area with y2<y<y1 will be also filled.
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Region (@code{const mglData &}y1, @code{const mglData &}y2, @code{const char *}pen=@code{""}, @code{float} zVal=@code{NAN}, @code{bool} inside=@code{true})
@@ -1219,7 +1232,7 @@ The function fills area between curves @{@var{x}[i], @var{y1}[i]@} and @{@var{x}
@subsection Stem
@cindex Stem
-These functions draw vertical lines from points to axis plane. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @var{x.nx=y.nx=z.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). See also @ref{Area}, @ref{Bars}, @ref{Plot}. @sref{Stem sample}
+These functions draw vertical lines from points to axis plane. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @code{x.nx=y.nx=z.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). See also @ref{Area}, @ref{Bars}, @ref{Plot}, @ref{Mark}. @sref{Stem sample}
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Stem (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""})
@deftypefnx {C function} @code{void} mgl_stem_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}pen)
@@ -1236,19 +1249,12 @@ The function draws vertical lines from points @{@var{x}[i], @var{y}[i]@} down to
The function draws vertical lines from points @{@var{x}[i], @var{y}[i]@} down to @var{y} = Org.y in plane @var{z}=@var{zVal} (default in plane @var{z}=@var{Min.z}), where @var{x}[i] values are equidistantly distributed in interval [@var{Min}.x, @var{Max}.x].
@end deftypefn
- at deftypefn {Method on @code{mglGraph} (C++)} @code{void} Stem2 (@code{const mglData &}a, @code{const char *}pen=@code{""}, @code{float} zVal=@code{NAN})
-The function draws vertical lines from points @{@var{x}[i], @var{y}[i]@} down to @var{y} = Org.y in plane @var{z}=@var{zVal} (default in plane @var{z}=@var{Min.z}), where @var{x}=@var{a}(2*k,:), @var{y}=@var{a}(2*k+1,:), k \in 0 ... @var{a.ny}/2. This function is obsolete -- use Stem() and SubData() functions instead.
- at end deftypefn
- at deftypefn {Method on @code{mglGraph} (C++)} @code{void} Stem3 (@code{const mglData &}a, @code{const char *}pen=@code{""})
-The function draws vertical lines from points @{@var{x}[i], @var{y}[i], @var{z}[i]@} down to @var{z} = Org.z, where @var{x}=@var{a}(3*k,:), @var{y}=@var{a}(3*k+1,:), @var{z}=@var{a}(3*k+2,:), k \in 0 ... @var{a.ny}/3. This function is obsolete -- use Stem() and SubData() functions instead.
- at end deftypefn
-
@c ==================================================================
@node Bars, Barh, Stem, 1D plotting
@subsection Bars
@cindex Bars
-These functions draw vertical bars from points to axis plane. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @var{x.nx=y.nx=z.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). See also @ref{Barh}, @ref{Area}, @ref{Stem}, @ref{Chart}, @ref{Default sizes}. @sref{Bars sample}
+These functions draw vertical bars from points to axis plane. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @code{x.nx=y.nx=z.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). If string contain symbol @samp{a} then lines are drawn one above another (like summation). If string contain symbol @samp{f} then waterfall chart is drawn for determining the cumulative effect of sequentially introduced positive or negative values. You can different colors for positive and negative values if number of specified colors is equal to 2*number of curves. See also @ref{Barh}, @ref{Area}, @ref{Stem}, @ref{Chart}, @ref{Default sizes}. @sref{Bars sample}
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Bars (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""})
@deftypefnx {C function} @code{void} mgl_bars_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}pen)
@@ -1265,19 +1271,12 @@ The function draws vertical bars from points @{@var{x}[i], @var{y}[i]@} down to
The function draws vertical bars from points @{@var{x}[i], @var{y}[i]@} down to @var{y} = Org.y in plane @var{z}=@var{zVal} (default in plane @var{z}=@var{Min.z}), where @var{x}[i] values are equidistantly distributed in interval [@var{Min}.x, @var{Max}.x].
@end deftypefn
- at deftypefn {Method on @code{mglGraph} (C++)} @code{void} Bars2 (@code{const mglData &}a, @code{const char *}pen=@code{""}, @code{float} zVal=@code{NAN})
-The function draws vertical bars from points @{@var{x}[i], @var{y}[i]@} down to @var{y} = Org.y in plane @var{z}=@var{zVal} (default in plane @var{z}=@var{Min.z}), where @var{x}=@var{a}(2*k,:), @var{y}=@var{a}(2*k+1,:), k \in 0 ... @var{a.ny}/2. This function is obsolete -- use Bars() and SubData() functions instead.
- at end deftypefn
- at deftypefn {Method on @code{mglGraph} (C++)} @code{void} Bars3 (@code{const mglData &}a, @code{const char *}pen=@code{""})
-The function draws vertical bars from points @{@var{x}[i], @var{y}[i], @var{z}[i]@} down to @var{z} = Org.z, where @var{x}=@var{a}(3*k,:), @var{y}=@var{a}(3*k+1,:), @var{z}=@var{a}(3*k+2,:), k \in 0 ... @var{a.ny}/3. This function is obsolete -- use Bars() and SubData() functions instead.
- at end deftypefn
-
@c ==================================================================
@node Barh, Chart, Bars, 1D plotting
@subsection Barh
@cindex Barh
-These functions draw horizontal bars from points to axis plane. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @var{x.nx=y.nx=z.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). See also @ref{Barh}, @ref{Default sizes}. @sref{Barh sample}
+These functions draw horizontal bars from points to axis plane. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @code{x.nx=y.nx=z.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). If string contain symbol @samp{a} then lines are drawn one above another (like summation). See also @ref{Barh}, @ref{Default sizes}. @sref{Barh sample}
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Barh (@code{const mglData &}y, @code{const mglData &}v, @code{const char *}pen=@code{""})
@deftypefnx {C function} @code{void} mgl_barh_xy (@code{HMGL} gr, @code{const HMDT} y, @code{const HMDT} v, @code{const char *}pen)
@@ -1305,7 +1304,7 @@ The function draws colored stripes (boxes) for data in array @var{a}. The number
@subsection Step
@cindex Step
-These functions draw continuous stairs for points to axis plane. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @var{x.nx=y.nx=z.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). See also @ref{Plot}, @ref{Stem}, @ref{Tile}, @ref{Boxs}. @sref{Step sample}
+These functions draw continuous stairs for points to axis plane. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @code{x.nx=y.nx=z.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). See also @ref{Plot}, @ref{Stem}, @ref{Tile}, @ref{Boxs}. @sref{Step sample}
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Step (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""})
@deftypefnx {C function} @code{void} mgl_step_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}pen)
@@ -1322,13 +1321,6 @@ The function draws continuous stairs for points @{@var{x}[i], @var{y}[i]@} in pl
The function draws continuous stairs for points @{@var{x}[i], @var{y}[i]@} in plane @var{z}=@var{zVal} (default in plane @var{z}=@var{Min.z}), where @var{x}[i] values are equidistantly distributed in interval [@var{Min}.x, @var{Max}.x].
@end deftypefn
- at deftypefn {Method on @code{mglGraph} (C++)} @code{void} Step2 (@code{const mglData &}a, @code{const char *}pen=@code{""}, @code{float} zVal=@code{NAN})
-The function draws continuous stairs for points @{@var{x}[i], @var{y}[i]@} in plane @var{z}=@var{zVal} (default in plane @var{z}=@var{Min.z}), where @var{x}=@var{a}(2*k,:), @var{y}=@var{a}(2*k+1,:), k \in 0 ... @var{a.ny}/2. This function is obsolete -- use Step() and SubData() functions instead.
- at end deftypefn
- at deftypefn {Method on @code{mglGraph} (C++)} @code{void} Step3 (@code{const mglData &}a, @code{const char *}pen=@code{""})
-The function draws continuous stairs for points @{@var{x}[i], @var{y}[i], @var{z}[i]@}, where @var{x}=@var{a}(3*k,:), @var{y}=@var{a}(3*k+1,:), @var{z}=@var{a}(3*k+2,:), k \in 0 ... @var{a.ny}/3. This function is obsolete -- use Step() and SubData() functions instead.
- at end deftypefn
-
@c ==================================================================
@node Torus, Tube, Step, 1D plotting
@subsection Torus
@@ -1345,16 +1337,12 @@ The function draws surface which is result of curve @{@var{r}[i], @var{z}[i]@} r
The function draws surface which is result of curve @{@var{r}[i], @var{z}[i]@} rotation, where @var{r}[i] values are equidistantly distributed in interval [@var{Min}.x, @var{Max}.x].
@end deftypefn
- at deftypefn {Method on @code{mglGraph} (C++)} @code{void} Torus2 (@code{const mglData &}a, @code{const char *}pen=@code{""})
-The function draws surface which is result of curve @{@var{x}[i], @var{y}[i]@} rotation, where @var{r}=@var{a}(2*k,:), @var{z}=@var{a}(2*k+1,:), k \in 0 ... @var{a.ny}/2. This function is obsolete -- use Torus() and SubData() functions instead.
- at end deftypefn
-
@c ==================================================================
@node Tube, Mark, Torus, 1D plotting
@subsection Tube
@cindex Tube
-These functions draw the tube with variable radius @var{r}[i] along the curve between points @{@var{x}[i], @var{y}[i], @var{z}[i]@}. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @var{x.nx=y.nx=z.nx=r.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). See also @ref{Plot}. @sref{Tube sample}
+These functions draw the tube with variable radius @var{r}[i] along the curve between points @{@var{x}[i], @var{y}[i], @var{z}[i]@}. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @code{x.nx=y.nx=z.nx=r.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). See also @ref{Plot}. @sref{Tube sample}
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Tube (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}r, @code{const char *}pen=@code{""})
@deftypefnx {Method on @code{mglGraph} (C++, Python)} @code{void} Tube (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{float} r, @code{const char *}pen=@code{""})
@@ -1382,7 +1370,7 @@ The function draws tube with radius @var{r} between points @{@var{x}[i], @var{y}
@subsection Mark
@cindex Mark
-These functions draw marks with size @var{r}*@var{MarkSize} (@pxref{Default sizes}) at points @{@var{x}[i], @var{y}[i], @var{z}[i]@}. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @var{x.nx=y.nx=z.nx=r.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). If you need to draw markers of the same size then you may use @ref{Plot} function. See also @ref{Plot}, @ref{TextMark}, @ref{Stem}, @ref{Error}. @sref{Mark sample}
+These functions draw marks with size @var{r}*@var{MarkSize} (@pxref{Default sizes}) at points @{@var{x}[i], @var{y}[i], @var{z}[i]@}. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @code{x.nx=y.nx=z.nx=r.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). If you need to draw markers of the same size then you may use @ref{Plot} function. See also @ref{Plot}, @ref{TextMark}, @ref{Stem}, @ref{Error}. @sref{Mark sample}
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Mark (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}r, @code{const char *}pen=@code{""})
@deftypefnx {C function} @code{void} mgl_mark_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} r, @code{const char *}pen)
@@ -1404,7 +1392,7 @@ The function draws marks for points @{@var{x}[i], @var{y}[i]@} in plane @var{z}=
@subsection TextMark
@cindex TextMark
-These functions draw string @var{text} as marks with size proportional to @var{r}*@var{MarkSize} (@pxref{Default sizes}) at points @{@var{x}[i], @var{y}[i], @var{z}[i]@}. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @var{x.nx=y.nx=z.nx=r.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). See also @ref{Plot}, @ref{Mark}, @ref{Stem}. @sref{TextMark sample}
+These functions draw string @var{text} as marks with size proportional to @var{r}*@var{MarkSize} (@pxref{Default sizes}) at points @{@var{x}[i], @var{y}[i], @var{z}[i]@}. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @code{x.nx=y.nx=z.nx=r.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). See also @ref{Plot}, @ref{Mark}, @ref{Stem}. @sref{TextMark sample}
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} TextMark (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}r, @code{const char *}text, @code{const char *}fnt=@code{""})
@deftypefnx {Method on @code{mglGraph} (C++)} @code{void} TextMark (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}r, @code{const wchar_t *}text, @code{const char *}fnt=@code{""})
@@ -1439,7 +1427,7 @@ The function draws textual marks for points @{@var{x}[i], @var{y}[i]@} in plane
@subsection Error
@cindex Error
-These functions draw error boxes at points @{@var{x}[i], @var{y}[i]@} on plane @var{z} = @var{zVal} (by default @var{z}=@var{Min.z}). This can be useful, for example, in experimental points, or to show numeric error or some estimations and so on. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @var{x.nx=y.nx=z.nx=r.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). See also @ref{Plot}. @sref{Error sample}
+These functions draw error boxes at points @{@var{x}[i], @var{y}[i]@} on plane @var{z} = @var{zVal} (by default @var{z}=@var{Min.z}). This can be useful, for example, in experimental points, or to show numeric error or some estimations and so on. The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @code{x.nx=y.nx=z.nx=r.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). See also @ref{Plot}. @sref{Error sample}
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Error (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}ex, @code{const mglData &}ey, @code{const char *}pen=@code{""})
@deftypefnx {C function} @code{void} mgl_error_exy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} ex, @code{const HMDT} ey, @code{const char *}pen)
@@ -1461,7 +1449,7 @@ Draws a error box @var{ey} (along only one direction) in point position @{@var{x
@subsection BoxPlot
@cindex BoxPlot
-These functions draw boxplot (also known as a box-and-whisker diagram) at points @var{x}[i] on plane @var{z} = @var{zVal} (by default @var{z}=@var{Min.z}). This is five-number summaries of data @var{a}[i,j] (minimum, lower quartile (Q1), median (Q2), upper quartile (Q3) and maximum) along second (j-th) direction. The sizes of 1st dimension @strong{must be equal} for all arrays @var{x.nx=a.nx}. String @var{pen} specifies the color and style of line (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). See also @ref{Plot}, @ref{Error}, @ref{Bars}, @ref{Default sizes}. @sref{BoxPlot sample}
+These functions draw boxplot (also known as a box-and-whisker diagram) at points @var{x}[i] on plane @var{z} = @var{zVal} (by default @var{z}=@var{Min.z}). This is five-number summaries of data @var{a}[i,j] (minimum, lower quartile (Q1), median (Q2), upper quartile (Q3) and maximum) along second (j-th) direction. The sizes of 1st dimension @strong{must be equal} for all arrays @code{x.nx=a.nx}. String @var{pen} specifies the color and style of line (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). See also @ref{Plot}, @ref{Error}, @ref{Bars}, @ref{Default sizes}. @sref{BoxPlot sample}
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} BoxPlot (@code{const mglData &}x, @code{const mglData &}a, @code{const char *}pen=@code{""})
@deftypefnx {C function} @code{void} mgl_boxplot_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} a, @code{const char *}pen)
@@ -1477,7 +1465,7 @@ Draws a boxplot with @var{x}[i] values equidistantly distributed in interval [@v
@node 2D plotting, 3D plotting, 1D plotting, MathGL core
@section 2D plotting
-These functions perform plotting of 2D data. 2D means that data depend from 2 independent parameters like matrix @math{f(x_i,y_j), i=1...n, j=1...m}. There are several generally different types of data representations: simple mesh lines plot (Mesh), surface plot (Surf), surface plot by boxes (Boxs), surface plot by tiles (Tile), waterfall-like plot (Fall), belt plot (Belt), density plot (Dens), contour lines plot (Cont), solid contours plot (ContF) and its rotational figure (Axial). Cont, ContF and Axial functions have variants for automatic and manual selection of level values for contours. Also there are functions for plotting data grid lines according to the data format (Grid) for enhancing density or contour plots. Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. Parameters of color scheme are specified by the string argument. @xref{Color scheme}.
+These functions perform plotting of 2D data. 2D means that data depend from 2 independent parameters like matrix @math{f(x_i,y_j), i=1...n, j=1...m}. There are several generally different types of data representations: simple mesh lines plot (Mesh), surface plot (Surf), surface plot by boxes (Boxs), surface plot by tiles (Tile), waterfall-like plot (Fall), belt plot (Belt), density plot (Dens), contour lines plot (Cont), solid contours plot (ContF) and its rotational figure (Axial). Cont, ContF and Axial functions have variants for automatic and manual selection of level values for contours. Also there are functions for plotting data grid lines according to the data format (Grid) for enhancing density or contour plots. Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. Parameters of color scheme are specified by the string argument. @xref{Color scheme}. @sref{2D plot sample}
@menu
* Mesh::
@@ -1491,6 +1479,7 @@ These functions perform plotting of 2D data. 2D means that data depend from 2 in
* ContF::
* ContD::
* Axial::
+* Grad::
* Grid::
@end menu
@@ -1501,7 +1490,7 @@ These functions perform plotting of 2D data. 2D means that data depend from 2 in
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Mesh (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
@deftypefnx {C function} @code{void} mgl_mesh_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-The function draws mesh lines for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. String @var{sch} sets the color scheme. Previous color scheme is used by default. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @var{x.nx=z.nx && y.nx=z.ny} or @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Mesh lines are plotted for each z slice of the data. See also @ref{Surf}, @ref{Fall}, NeshNum (@pxref{Other settings}), @ref{Cont}, @ref{Tens}. @sref{Mesh sample}
+The function draws mesh lines for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. String @var{sch} sets the color scheme. Previous color scheme is used by default. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @code{x.nx=z.nx && y.nx=z.ny} or @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Mesh lines are plotted for each z slice of the data. See also @ref{Surf}, @ref{Fall}, MeshNum (@pxref{Other settings}), @ref{Cont}, @ref{Tens}. @sref{Mesh sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Mesh (@code{const mglData &}z, @code{const char *}sch=@code{""})
@@ -1516,7 +1505,7 @@ The same as previous with @var{x}, @var{y} equidistantly distributed in interval
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Fall (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
@deftypefnx {C function} @code{void} mgl_fall_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-The function draws fall lines for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. This plot can be used for plotting several curves shifted in depth one from another. String @var{sch} sets the color scheme. Previous color scheme is used by default. If @var{sch} contain @samp{x} then lines are drawn along x-direction else (by default) lines are drawn along y-direction. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @var{x.nx=z.nx && y.nx=z.ny} or @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Fall lines are plotted for each z slice of the data. See also @ref{Belt}, @ref{Mesh}, @ref{Tens}, NeshNum (@pxref{Other settings}). @sref{Fall sample}
+The function draws fall lines for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. This plot can be used for plotting several curves shifted in depth one from another. String @var{sch} sets the color scheme. Previous color scheme is used by default. If @var{sch} contain @samp{x} then lines are drawn along x-direction else (by default) lines are drawn along y-direction. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @code{x.nx=z.nx && y.nx=z.ny} or @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Fall lines are plotted for each z slice of the data. See also @ref{Belt}, @ref{Mesh}, @ref{Tens}, MeshNum (@pxref{Other settings}). @sref{Fall sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Fall (@code{const mglData &}z, @code{const char *}sch=@code{""})
@@ -1531,7 +1520,7 @@ The same as previous with @var{x}, @var{y} equidistantly distributed in interval
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Belt (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
@deftypefnx {C function} @code{void} mgl_belt_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-The function draws belts for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. This plot can be used as 3d generalization of Plot (@pxref{Plot}). String @var{sch} sets the color scheme. Previous color scheme is used by default. If @var{sch} contain @samp{x} then belts are drawn along x-direction else (by default) belts are drawn along y-direction. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @var{x.nx=z.nx && y.nx=z.ny} or @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Belts are plotted for each z slice of the data. See also @ref{Fall}, @ref{Surf}, @ref{Plot}, NeshNum (@pxref{Other settings}). @sref{Belt sample}
+The function draws belts for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. This plot can be used as 3d generalization of Plot (@pxref{Plot}). String @var{sch} sets the color scheme. Previous color scheme is used by default. If @var{sch} contain @samp{x} then belts are drawn along x-direction else (by default) belts are drawn along y-direction. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @code{x.nx=z.nx && y.nx=z.ny} or @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Belts are plotted for each z slice of the data. See also @ref{Fall}, @ref{Surf}, @ref{Plot}, MeshNum (@pxref{Other settings}). @sref{Belt sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Belt (@code{const mglData &}z, @code{const char *}sch=@code{""})
@@ -1546,7 +1535,7 @@ The same as previous with @var{x}, @var{y} equidistantly distributed in interval
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Surf (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
@deftypefnx {C function} @code{void} mgl_surf_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-The function draws surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. String @var{sch} sets the color scheme. Previous color scheme is used by default. If string @var{sch} have symbol @samp{#} then grid lines are drawn. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @var{x.nx=z.nx && y.nx=z.ny} or @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{Mesh}, @ref{Dens}, @ref{Belt}, @ref{Tile}, @ref{Boxs}, @ref{SurfC}, @ref{SurfA}. @sref{Surf sample}
+The function draws surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. String @var{sch} sets the color scheme. Previous color scheme is used by default. If string @var{sch} have symbol @samp{#} then grid lines are drawn. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @code{x.nx=z.nx && y.nx=z.ny} or @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{Mesh}, @ref{Dens}, @ref{Belt}, @ref{Tile}, @ref{Boxs}, @ref{SurfC}, @ref{SurfA}. @sref{Surf sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Surf (@code{const mglData &}z, @code{const char *}sch=@code{""})
@@ -1561,7 +1550,7 @@ The same as previous with @var{x}, @var{y} equidistantly distributed in interval
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Boxs (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
@deftypefnx {C function} @code{void} mgl_boxs_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-The function draws vertical boxes for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. String @var{sch} sets the color scheme. Previous color scheme is used by default. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @var{x.nx=z.nx && y.nx=z.ny} or @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{Surf}, @ref{Tile}, @ref{Step}. @sref{Boxs sample}
+The function draws vertical boxes for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. String @var{sch} sets the color scheme. Previous color scheme is used by default. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @code{x.nx=z.nx && y.nx=z.ny} or @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{Surf}, @ref{Dens}, @ref{Tile}, @ref{Step}. @sref{Boxs sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Boxs (@code{const mglData &}z, @code{const char *}sch=@code{""})
@@ -1576,7 +1565,7 @@ The same as previous with @var{x}, @var{y} equidistantly distributed in interval
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Tile (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
@deftypefnx {C function} @code{void} mgl_tile_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-The function draws horizontal tiles for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. Such plot can be used as 3d generalization of Step (@pxref{Step}). String @var{sch} sets the color scheme. Previous color scheme is used by default. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @var{x.nx=z.nx && y.nx=z.ny} or @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{Surf}, @ref{Boxs}, @ref{Step}, @ref{TileS}. @sref{Tile sample}
+The function draws horizontal tiles for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. Such plot can be used as 3d generalization of Step (@pxref{Step}). String @var{sch} sets the color scheme. Previous color scheme is used by default. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @code{x.nx=z.nx && y.nx=z.ny} or @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{Surf}, @ref{Boxs}, @ref{Step}, @ref{TileS}. @sref{Tile sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Tile (@code{const mglData &}z, @code{const char *}sch=@code{""})
@@ -1591,7 +1580,7 @@ The same as previous with @var{x}, @var{y} equidistantly distributed in interval
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Dens (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@deftypefnx {C function} @code{void} mgl_dens_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
-The function draws density plot for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} at @var{z} = @var{zVal}. String @var{sch} sets the color scheme. Previous color scheme is used by default. If string @var{sch} have symbol @samp{#} then grid lines are drawn. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @var{x.nx=z.nx && y.nx=z.ny} or @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{Surf}, @ref{Cont}, @ref{ContF}, @ref{DensXYZ}. @sref{Dens sample}
+The function draws density plot for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} at @var{z} = @var{zVal}. String @var{sch} sets the color scheme. Previous color scheme is used by default. If string @var{sch} have symbol @samp{#} then grid lines are drawn. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @code{x.nx=z.nx && y.nx=z.ny} or @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{Surf}, @ref{Cont}, @ref{ContF}, @ref{Boxs}, @ref{Tile}, @ref{DensXYZ}. @sref{Dens sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Dens (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@@ -1606,7 +1595,7 @@ The same as previous with @var{x}, @var{y} equidistantly distributed in interval
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Cont (@code{const mglData &}v, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@deftypefnx {C function} @code{void} mgl_cont_xy_val (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
-The function draws contour lines for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} at @var{z} = @var{zVal} (or for @var{z=v}[k] if @code{zVal==NAN}). Contours are plotted for @var{z}[i,j]=@var{v}[k] where @var{v}[k] are values of data array @var{v}. String @var{sch} sets the color scheme. Previous color scheme is used by default. If string @var{sch} have symbol @samp{#} then grid lines are drawn. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @var{x.nx=z.nx && y.nx=z.ny} or @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{Dens}, @ref{ContF}, @ref{Axial}, @ref{ContXYZ}. @sref{Cont sample}
+The function draws contour lines for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} at @var{z} = @var{zVal} (or for @var{z=v}[k] if @code{zVal==NAN}). Contours are plotted for @var{z}[i,j]=@var{v}[k] where @var{v}[k] are values of data array @var{v}. String @var{sch} sets the color scheme. Previous color scheme is used by default. If string @var{sch} have symbol @samp{#} then grid lines are drawn. If string @var{sch} have symbol @samp{t} or @samp{T} then contour labels @var{v}[k] will be drawn below (or above) the contours. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @code{x.nx=z.nx && y.nx=z.ny} or @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{Dens}, @ref{ContF}, @ref{ContD}, @ref{Axial}, @ref{ContXYZ}. @sref{Cont sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Cont (@code{const mglData &}v, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@@ -1631,7 +1620,7 @@ The same as previous with @var{x}, @var{y} equidistantly distributed in interval
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} ContF (@code{const mglData &}v, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@deftypefnx {C function} @code{void} mgl_contf_xy_val (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
-The function draws solid (or filled) contour lines for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} at @var{z} = @var{zVal} (or for @var{z=v}[k] if @code{zVal==NAN}). Contours are plotted for @var{z}[i,j]=@var{v}[k] where @var{v}[k] are values of data array @var{v} (must be @code{v.nx>2}). String @var{sch} sets the color scheme. Previous color scheme is used by default. If string @var{sch} have symbol @samp{#} then grid lines are drawn. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @var{x.nx=z.nx && y.nx=z.ny} or @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{Dens}, @ref{Cont}, @ref{Axial}, @ref{ContFXYZ}. @sref{ContF sample}
+The function draws solid (or filled) contour lines for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} at @var{z} = @var{zVal} (or for @var{z=v}[k] if @code{zVal==NAN}). Contours are plotted for @var{z}[i,j]=@var{v}[k] where @var{v}[k] are values of data array @var{v} (must be @code{v.nx>2}). String @var{sch} sets the color scheme. Previous color scheme is used by default. If string @var{sch} have symbol @samp{#} then grid lines are drawn. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @code{x.nx=z.nx && y.nx=z.ny} or @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{Dens}, @ref{Cont}, @ref{Axial}, @ref{ContFXYZ}. @sref{ContF sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} ContF (@code{const mglData &}v, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@@ -1656,7 +1645,7 @@ The same as previous with @var{x}, @var{y} equidistantly distributed in interval
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} ContD (@code{const mglData &}v, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@deftypefnx {C function} @code{void} mgl_contd_xy_val (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
-The function draws solid (or filled) contour lines for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} at @var{z} = @var{zVal} (or for @var{z=v}[k] if @code{zVal==NAN}) with manual colors. Contours are plotted for @var{z}[i,j]=@var{v}[k] where @var{v}[k] are values of data array @var{v} (must be @code{v.nx>2}). String @var{sch} sets the contour colors: the color of k-th contour is determined by character @code{sch[k%strlen(sch)]}. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @var{x.nx=z.nx && y.nx=z.ny} or @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{Dens}, @ref{Cont}, @ref{ContF}. @sref{ContD sample}
+The function draws solid (or filled) contour lines for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} at @var{z} = @var{zVal} (or for @var{z=v}[k] if @code{zVal==NAN}) with manual colors. Contours are plotted for @var{z}[i,j]=@var{v}[k] where @var{v}[k] are values of data array @var{v} (must be @code{v.nx>2}). String @var{sch} sets the contour colors: the color of k-th contour is determined by character @code{sch[k%strlen(sch)]}. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @code{x.nx=z.nx && y.nx=z.ny} or @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{Dens}, @ref{Cont}, @ref{ContF}. @sref{ContD sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} ContD (@code{const mglData &}v, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@@ -1675,13 +1664,13 @@ The same as previous with @var{x}, @var{y} equidistantly distributed in interval
@end deftypefn
@c ==================================================================
- at node Axial, Grid, ContD, 2D plotting
+ at node Axial, Grad, ContD, 2D plotting
@subsection Axial
@cindex Axial
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Axial (@code{const mglData &}v, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
@deftypefnx {C function} @code{void} mgl_axial_xy_val (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-The function draws surface which is result of contour plot rotation for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. Contours are plotted for @var{z}[i,j]=@var{v}[k] where @var{v}[k] are values of data array @var{v}. String @var{sch} sets the color scheme. Previous color scheme is used by default. If string @var{sch} have symbol @samp{#} then wire plot is produced. If string contain symbols @samp{x}, @samp{y} or @samp{z} then rotation axis @var{AxialDir} (@pxref{Other settings}) will be set to specified direction. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @var{x.nx=z.nx && y.nx=z.ny} or @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{Cont}, @ref{ContF}, @ref{Torus}, @ref{Surf3}. @sref{Axial sample}
+The function draws surface which is result of contour plot rotation for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. Contours are plotted for @var{z}[i,j]=@var{v}[k] where @var{v}[k] are values of data array @var{v}. String @var{sch} sets the color scheme. Previous color scheme is used by default. If string @var{sch} have symbol @samp{#} then wire plot is produced. If string contain symbols @samp{x}, @samp{y} or @samp{z} then rotation axis @var{AxialDir} (@pxref{Other settings}) will be set to specified direction. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @code{x.nx=z.nx && y.nx=z.ny} or @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{Cont}, @ref{ContF}, @ref{Torus}, @ref{Surf3}. @sref{Axial sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Axial (@code{const mglData &}v, @code{const mglData &}z, @code{const char *}sch=@code{""})
@@ -1699,14 +1688,35 @@ The same as first one with vector @var{v} of @var{num}-th elements equidistantly
The same as previous with @var{x}, @var{y} equidistantly distributed in interval [@var{Min}, @var{Max}].
@end deftypefn
+
+ at c ==================================================================
+ at node Grad, Grid, Axial, 2D plotting
+ at subsection Grad
+ at cindex Grad
+
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Grad (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}phi, @code{const char *}sch=@code{""}, @code{int} num=@code{5})
+ at deftypefnx {C function} @code{void} mgl_grad_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{int} num, @code{float} zVal)
+The function draws gradient lines for scalar field @var{phi}[i,j,k] specified parametrically @{@var{x}[i,j,k], @var{y}[i,j,k], @var{z}[i,j,k]@}. String @var{sch} sets the color scheme. Previous color scheme is used by default. Number of lines is proportional to @var{num}. If @var{num}<0 then lines start from borders only. The minor dimensions of arrays @var{x}, @var{y}, @var{z}, @var{phi} should be equal @code{x.nx=phi.nx && y.nx=phi.ny && z.nx=phi.nz} or @code{x.nx=y.nx=z.nx=phi.nx && x.ny=y.ny=z.ny=phi.ny && x.nz=y.nz=z.nz=phi.nz}. Arrays @var{x}, @var{y} and @var{z} can be vectors (not matrices as @var{phi}). See also @ref{Dens3}, @ref{Cont3}, @ref{Flow}.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Grad (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{int} num=@code{5}, @code{float} zVal=@code{NAN})
+ at deftypefnx {C function} @code{void} mgl_grad_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{int} num, @code{float} zVal)
+The function draws gradient lines for scalar field @var{phi}[i,j] specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{phi}[i,j]@} at @var{z} = @var{zVal}. String @var{sch} sets the color scheme. Previous color scheme is used by default. Number of lines is proportional to @var{num}. If @var{num}<0 then lines start from borders only. The minor dimensions of arrays @var{x}, @var{y}, @var{phi} should be equal @code{x.nx=phi.nx && y.nx=phi.ny} or @code{x.nx=y.nx=phi.nx && x.ny=y.ny=phi.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{phi}). Lines are plotted for each z slice of the data. See also @ref{Dens}, @ref{Cont}, @ref{ContF}, @ref{Flow}. @sref{Grad sample}
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Grad (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{int} num=@code{5}, @code{float} zVal=@code{NAN})
+ at deftypefnx {C function} @code{void} mgl_grad (@code{HMGL} gr, @code{const HMDT} z, @code{const char *}sch, @code{int} num, @code{float} zVal)
+The same as previous with @var{x}, @var{y} equidistantly distributed in interval [@var{Min}, @var{Max}].
+ at end deftypefn
+
@c ==================================================================
- at node Grid, , Axial, 2D plotting
+ at node Grid, , Grad, 2D plotting
@subsection Grid
@cindex Grid
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Grid (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@deftypefnx {C function} @code{void} mgl_grid_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
-The function draws grid lines for density plot of surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} at @var{z} = @var{zVal}. String @var{sch} sets the color scheme. Previous color scheme is used by default. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @var{x.nx=z.nx && y.nx=z.ny} or @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Grid is plotted for each z slice of the data. See also @ref{Dens}, @ref{Cont}, @ref{ContF}.
+The function draws grid lines for density plot of surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} at @var{z} = @var{zVal}. String @var{sch} sets the color scheme. Previous color scheme is used by default. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @code{x.nx=z.nx && y.nx=z.ny} or @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Grid is plotted for each z slice of the data. See also @ref{Dens}, @ref{Cont}, @ref{ContF}.
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Grid (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@@ -1719,7 +1729,7 @@ The same as previous with @var{x}, @var{y} equidistantly distributed in interval
@node 3D plotting, Dual plotting, 2D plotting, MathGL core
@section 3D plotting
-These functions perform plotting of 3D data. 3D means that data depend from 3 independent parameters like matrix @math{f(x_i,y_j,z_k), i=1...n, j=1...m, k=1...l}. There are 5 generally different types of data representations: isosurface or surface of constant value (Surf3), density plot at slices (Dens3), contour lines plot at slices (Cont3), solid contours plot at slices (ContF3) and cloud-like plot (Cloud). Surf3, Cont3 and ContF3 functions have variants for automatic and manual selection of level values for surfaces/contours. Also there are functions for plotting data grid lines according to the data format (Grid3) for enhancing density or contour plots. Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. Parameters of color scheme are specified by the string argument. @xref{Color scheme}.
+These functions perform plotting of 3D data. 3D means that data depend from 3 independent parameters like matrix @math{f(x_i,y_j,z_k), i=1...n, j=1...m, k=1...l}. There are 5 generally different types of data representations: isosurface or surface of constant value (Surf3), density plot at slices (Dens3), contour lines plot at slices (Cont3), solid contours plot at slices (ContF3) and cloud-like plot (Cloud). Surf3, Cont3 and ContF3 functions have variants for automatic and manual selection of level values for surfaces/contours. Also there are functions for plotting data grid lines according to the data format (Grid3) for enhancing density or contour plots. Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. Parameters of color scheme are specified by the string argument. @xref{Color scheme}. @sref{3D plot sample}
@menu
* Surf3::
@@ -1790,7 +1800,7 @@ The same as previous with @var{x}, @var{y}, @var{z} equidistantly distributed in
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Cont3 (@code{const mglData &}v, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}a, @code{char} dir, @code{int} sVal=@code{-1}, @code{const char *}stl=@code{""})
@deftypefnx {C function} @code{void} mgl_cont3_xyz_val (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} a, @code{char} dir, @code{int} sVal, @code{const char *}stl)
-The function draws contour plot for 3d data specified parametrically @var{a}[i,j,k](@var{x}[i,j,k], @var{y}[i,j,k], @var{z}[i,j,k]). Contours are plotted for values specified in array @var{v} at slice @var{sVal} in @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@} direction. String @var{sch} sets the color scheme. Previous color scheme is used by default. If string @var{stl} have symbol @samp{#} then grid lines are drawn. The minor dimensions of arrays @var{x}, @var{y}, @var{z} must be equal. Arrays @var{x}, @var{y}, @var{z} can be vectors (not 3d arrays as @var{a}). See also @ref{Dens3}, @ref{ContF3}, @ref{Cont}, @ref{Grid3}. @sref{Cont3 sample}
+The function draws contour plot for 3d data specified parametrically @var{a}[i,j,k](@var{x}[i,j,k], @var{y}[i,j,k], @var{z}[i,j,k]). Contours are plotted for values specified in array @var{v} at slice @var{sVal} in @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@} direction. String @var{stl} sets the color scheme. Previous color scheme is used by default. If string @var{stl} have symbol @samp{#} then grid lines are drawn. If string @var{stl} have symbol @samp{t} or @samp{T} then contour labels @var{v}[k] will be drawn below (or above) the contours. The minor dimensions of arrays @var{x}, @var{y}, @var{z} must be equal. Arrays @var{x}, @var{y}, @var{z} can be vectors (not 3d arrays as @var{a}). See also @ref{Dens3}, @ref{ContF3}, @ref{Cont}, @ref{Grid3}. @sref{Cont3 sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Cont3 (@code{const mglData &}v, @code{const mglData &}a, @code{char} dir, @code{int} sVal=@code{-1}, @code{const char *}sch=@code{""})
@@ -1947,7 +1957,7 @@ These plotting functions draw @emph{two matrix} simultaneously. There are 5 gene
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} SurfC (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""})
@deftypefnx {C function} @code{void} mgl_surfc_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} c, @code{const char *}sch)
-The function draws surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} and color it by matrix @var{c}[i,j]. String @var{sch} sets the color scheme. Previous color scheme is used by default. If string @var{sch} have symbol @samp{#} then grid lines are drawn. All dimensions of arrays @var{z} and @var{c} must be equal. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @var{x.nx=z.nx && y.nx=z.ny} or @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{Surf}, @ref{SurfA}, @ref{Surf3C}. @sref{SurfC sample}
+The function draws surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} and color it by matrix @var{c}[i,j]. String @var{sch} sets the color scheme. Previous color scheme is used by default. If string @var{sch} have symbol @samp{#} then grid lines are drawn. All dimensions of arrays @var{z} and @var{c} must be equal. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @code{x.nx=z.nx && y.nx=z.ny} or @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{Surf}, @ref{SurfA}, @ref{Surf3C}. @sref{SurfC sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} SurfC (@code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""})
@@ -1989,7 +1999,7 @@ The same as previous with @var{x}, @var{y}, @var{z} equidistantly distributed in
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} SurfA (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""})
@deftypefnx {C function} @code{void} mgl_surfa_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} c, @code{const char *}sch)
-The function draws surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} and transparent it by matrix @var{c}[i,j]. String @var{sch} sets the color scheme. Previous color scheme is used by default. If string @var{sch} have symbol @samp{#} then grid lines are drawn. All dimensions of arrays @var{z} and @var{c} must be equal. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @var{x.nx=z.nx && y.nx=z.ny} or @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{Surf}, @ref{SurfC}, @ref{Surf3A}, @ref{TileS}. @sref{SurfA sample}
+The function draws surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} and transparent it by matrix @var{c}[i,j]. String @var{sch} sets the color scheme. Previous color scheme is used by default. If string @var{sch} have symbol @samp{#} then grid lines are drawn. All dimensions of arrays @var{z} and @var{c} must be equal. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @code{x.nx=z.nx && y.nx=z.ny} or @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{Surf}, @ref{SurfC}, @ref{Surf3A}, @ref{TileS}. @sref{SurfA sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} SurfA (@code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""})
@@ -2030,7 +2040,7 @@ The same as previous with @var{x}, @var{y}, @var{z} equidistantly distributed in
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} TileS (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}r, @code{const char *}sch=@code{""})
@deftypefnx {C function} @code{void} mgl_tiles_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} r, @code{const char *}sch)
-The function draws horizontal tiles for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. It is mostly the same as Tile() but the size of tiles is determined by @var{r} array. This is some kind of ``transparency'' useful for exporting to EPS files. String @var{sch} sets the color scheme. Previous color scheme is used by default. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @var{x.nx=z.nx && y.nx=z.ny} or @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{SurfA}, @ref{Tile}. @sref{TileS sample}
+The function draws horizontal tiles for surface specified parametrically @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. It is mostly the same as Tile() but the size of tiles is determined by @var{r} array. This is some kind of ``transparency'' useful for exporting to EPS files. String @var{sch} sets the color scheme. Previous color scheme is used by default. The minor dimensions of arrays @var{x}, @var{y}, @var{z} should be equal @code{x.nx=z.nx && y.nx=z.ny} or @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{z}). Surface is plotted for each z slice of the data. See also @ref{SurfA}, @ref{Tile}. @sref{TileS sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} TileS (@code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""})
@@ -2060,7 +2070,7 @@ The same as previous with @var{x}, @var{y} equidistantly distributed in interval
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} STFA (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}re, @code{const mglData &}im, @code{int} dn, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@deftypefnx {C function} @code{void} mgl_stfa_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} re, @code{const HMDT} im, @code{int} dn, @code{const char *}sch, @code{float} zVal)
-Draws spectrogram of complex array @var{re}+i*@code{im} for Fourier size of @var{dn} points at plane @var{z=zVal}. Parameter @var{dn} is arbitrary even integer. For example in 1D case, result is density plot of data @math{res[i,j]=|\sum_d^dn exp(I*j*d)*(re[i*dn+d]+I*im[i*dn+d])|/dn} with size @{int(nx/dn), dn, ny@}. At this array @var{re}, @var{im} parametrically depend on coordinates @var{x}, @var{y}. String @var{sch} sets the color scheme. Previous color scheme is used by default. The size of @var{re} and @var{im} must be the same. The minor dimensions of arrays @var{x}, @var{y}, @var{re} should be equal. Arrays @var{x}, @var{y} can be vectors (not matrix as @var{re}). @xref{Color scheme}.
+Draws spectrogram of complex array @var{re}+i*@code{im} for Fourier size of @var{dn} points at plane @var{z=zVal}. Parameter @var{dn} is arbitrary even integer. For example in 1D case, result is density plot of data @math{res[i,j]=|\sum_d^dn exp(I*j*d)*(re[i*dn+d]+I*im[i*dn+d])|/dn} with size @{int(nx/dn), dn, ny@}. At this array @var{re}, @var{im} parametrically depend on coordinates @var{x}, @var{y}. String @var{sch} sets the color scheme. Previous color scheme is used by default. The size of @var{re} and @var{im} must be the same. The minor dimensions of arrays @var{x}, @var{y}, @var{re} should be equal. Arrays @var{x}, @var{y} can be vectors (not matrix as @var{re}). @sref{STFA sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} STFA (@code{const mglData &}re, @code{const mglData &}im, @code{int} dn, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@@ -2199,7 +2209,7 @@ The same as previous with @var{x}, @var{y} equidistantly distributed in interval
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Flow (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}ax, @code{const mglData &}ay, @code{const char *}sch=@code{""}, @code{int} num=@code{5}, @code{bool} central=@code{true}, @code{float} zVal=@code{NAN})
@deftypefnx {C function} @code{void} mgl_flow_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} ax, @code{const HMDT} ay, @code{const char *}sch, @code{int} num, @code{int} central, @code{float} zVal)
-The function draws flow threads for the plane vector field @{@var{ax}, @var{ay}@} parametrically depending on coordinates @var{x}, @var{y} at level z = @var{zVal}. Number of threads is proportional to @var{num}. Parameter @var{central} sets the thread start from center (if true) or only from edges (if false). The color of lines is proportional to @math{\sqrt@{ax^2+ay^2@}}. Warm color corresponds to normal flow (like attractor). Cold one corresponds to inverse flow (like source). String @var{sch} sets the color scheme. Previous color scheme is used by default. The size of @var{ax} and @var{ay} must be equal. The minor dimensions of arrays @var{x}, @var{y} and @var{ax} must be equal too. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{ax}). The vector field is plotted for each z slice of @var{ax}, @var{ay}. See also @ref{Pipe}, @ref{VectC}, @ref{Vect}. @sref{Flow sample}
+The function draws flow threads for the plane vector field @{@var{ax}, @var{ay}@} parametrically depending on coordinates @var{x}, @var{y} at level z = @var{zVal}. Number of threads is proportional to @var{num}. Parameter @var{central} sets the thread start from center (if true) or only from edges (if false). From v.1.11 it is ignored and always equal to (@var{num}>0). The color of lines is proportional to @math{\sqrt@{ax^2+ay^2@}}. Warm color corresponds to normal flow (like attractor). Cold one corresponds to inverse flow (like source). String @var{sch} sets the color scheme. Previous color scheme is used by default. The size of @var{ax} and @var{ay} must be equal. The minor dimensions of arrays @var{x}, @var{y} and @var{ax} must be equal too. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{ax}). The vector field is plotted for each z slice of @var{ax}, @var{ay}. See also @ref{Pipe}, @ref{VectC}, @ref{Vect}. @sref{Flow sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Flow (@code{const mglData &}ax, @code{const mglData &}ay, @code{const char *}sch=@code{""}, @code{int} num=@code{5}, @code{bool} central=@code{true}, @code{float} zVal=@code{NAN})
@@ -2254,7 +2264,7 @@ The same as previous with @var{x}, @var{y} equidistantly distributed in interval
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Pipe (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}ax, @code{const mglData &}ay, @code{const char *}sch=@code{""}, @code{float} r0=@code{0.05}, @code{int} num=@code{5}, @code{bool} central=@code{true}, @code{float} zVal=@code{NAN})
@deftypefnx {C function} @code{void} mgl_pipe_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} ax, @code{const HMDT} ay, @code{const char *}sch, @code{float} r0, @code{int} num, @code{int} central, @code{float} zVal)
-The function draws flow pipes for the plane vector field @{@var{ax}, @var{ay}@} parametrically depending on coordinates @var{x}, @var{y} at level z = @var{zVal}. Number of pipes is proportional to @var{num}. Parameter @var{central} sets the pipe start from center (if true) or only from edges (if false). The color of lines is proportional to @math{\sqrt@{ax^2+ay^2@}}. Warm color corresponds to normal flow (like attractor). Cold one corresponds to inverse flow (like source). String @var{sch} sets the color scheme. Previous color scheme is used by default. Parameter @var{r0} set the base pipe radius. If @var{r0}<0 then pipe radius is inverse proportional to amplitude. The size of @var{ax} and @var{ay} must be equal. The minor dimensions of arrays @var{x}, @var{y} and @var{ax} must be equal too. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{ax}). The vector field is plotted for each z slice of @var{ax}, @var{ay}. See also @ref{Pipe}, @ref{VectC}, @ref{Vect}. @sref{Pipe sample}
+The function draws flow pipes for the plane vector field @{@var{ax}, @var{ay}@} parametrically depending on coordinates @var{x}, @var{y} at level z = @var{zVal}. Number of pipes is proportional to @var{num}. Parameter @var{central} sets the pipe start from center (if true) or only from edges (if false). From v.1.11 it is ignored and always equal to (@var{num}>0). The color of lines is proportional to @math{\sqrt@{ax^2+ay^2@}}. Warm color corresponds to normal flow (like attractor). Cold one corresponds to inverse flow (like source). String @var{sch} sets the color scheme. Previous color scheme is used by default. Parameter @var{r0} set the base pipe radius. If @var{r0}<0 then pipe radius is inverse proportional to amplitude. The size of @var{ax} and @var{ay} must be equal. The minor dimensions of arrays @var{x}, @var{y} and @var{ax} must be equal too. Arrays @var{x} and @var{y} can be vectors (not matrices as @var{ax}). The vector field is plotted for each z slice of @var{ax}, @var{ay}. See also @ref{Flow}, @ref{VectC}, @ref{Vect}. @sref{Pipe sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Pipe (@code{const mglData &}ax, @code{const mglData &}ay, @code{const char *}sch=@code{""}, @code{float} r0=@code{0.05}, @code{int} num=@code{5}, @code{bool} central=@code{true}, @code{float} zVal=@code{NAN})
@@ -2286,6 +2296,8 @@ These functions perform miscelaneous plotting. There is unstructured data points
* Dots::
* Crust::
* TriPlot::
+* TriCont::
+* QuadPlot::
* Plots by formula::
* SimplePlot::
@end menu
@@ -2437,7 +2449,7 @@ The same as previous with @var{x=tr}(0,:), @var{y=tr}(1,:), @var{z=tr}(2,:).
@end deftypefn
@c ==================================================================
- at node TriPlot, Plots by formula, Crust, Other plotting
+ at node TriPlot, TriCont, Crust, Other plotting
@subsection TriPlot
@cindex TriPlot
@@ -2445,7 +2457,7 @@ The same as previous with @var{x=tr}(0,:), @var{y=tr}(1,:), @var{z=tr}(2,:).
@deftypefnx {Method on @code{mglGraph} (C++, Python)} @code{void} TriPlot (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
@deftypefnx {C function} @code{void} mgl_triplot_xyz (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
@deftypefnx {C function} @code{void} mgl_triplot_xyzc (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} c, @code{const char *}sch)
-The function draws the surface of triangles. Triangle vertexes are set by indexes @var{id} of data points @{@var{x}[i], @var{y}[i], @var{z}[i]@}. String @var{sch} sets the color scheme. Previous color scheme is used by default. If string contain @samp{#} then wire plot is produced. First dimensions of @var{id} must be 3 or greater. Arrays @var{x}, @var{y}, @var{z} must have equal sizes. Parameter @var{c} set the colors of triangles (if @var{id}.ny=@var{c}.nx) or colors of vertexes (if @var{x}.nx=@var{c}.nx). See also @ref{Dots}, @ref{Crust}.
+The function draws the surface of triangles. Triangle vertexes are set by indexes @var{id} of data points @{@var{x}[i], @var{y}[i], @var{z}[i]@}. String @var{sch} sets the color scheme. Previous color scheme is used by default. If string contain @samp{#} then wire plot is produced. First dimensions of @var{id} must be 3 or greater. Arrays @var{x}, @var{y}, @var{z} must have equal sizes. Parameter @var{c} set the colors of triangles (if @var{id}.ny=@var{c}.nx) or colors of vertexes (if @var{x}.nx=@var{c}.nx). See also @ref{Dots}, @ref{Crust}, @ref{QuadPlot}.
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} TriPlot (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@@ -2454,7 +2466,43 @@ The same as previous with @var{z}[i]=@var{zVal}.
@end deftypefn
@c ==================================================================
- at node Plots by formula, SimplePlot, TriPlot, Other plotting
+ at node TriCont, QuadPlot, TriPlot, Other plotting
+ at subsection TriCont
+ at cindex TriCont
+
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} TriContV (@code{const mglData &}v, @code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
+ at deftypefnx {Method on @code{mglGraph} (C++, Python)} @code{void} TriContV (@code{const mglData &}v, @code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
+ at deftypefnx {C function} @code{void} mgl_tricont_xyzcv (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} c, @code{const char *}sch, @code{float} zVal)
+ at deftypefnx {C function} @code{void} mgl_tricont_xyzv (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
+The function draws contour lines for surface of triangles at @var{z} = @var{zVal} (or for @var{z=v}[k] if @code{zVal==NAN}). Triangle vertexes are set by indexes @var{id} of data points @{@var{x}[i], @var{y}[i], @var{z}[i]@}. Contours are plotted for @var{z}[i,j]=@var{v}[k] where @var{v}[k] are values of data array @var{v}. String @var{sch} sets the color scheme. Previous color scheme is used by default. Array @var{c} (if specified) is used for contour coloring. First dimensions of @var{id} must be 3 or greater. Arrays @var{x}, @var{y}, @var{z} must have equal sizes. Parameter @var{c} set the colors of triangles (if @var{id}.ny=@var{c}.nx) or colors of vertexes (if @var{x}.nx=@var{c}.nx). See also @ref{TriPlot}, @ref{Cont}.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} TriCont (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""}, @code{num}=@code{7}, @code{float} zVal=@code{NAN})
+ at deftypefnx {Method on @code{mglGraph} (C++, Python)} @code{void} TriCont (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{num}=@code{7}, @code{float} zVal=@code{NAN})
+ at deftypefnx {C function} @code{void} mgl_tricont_xyzc (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} c, @code{const char *}sch, @code{num}, @code{float} zVal)
+ at deftypefnx {C function} @code{void} mgl_tricont_xyz (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{num}, @code{float} zVal)
+The same as first one with vector @var{v} of @var{num}-th elements equidistantly distributed in range [@var{Cmin}, @var{Cmax}].
+ at end deftypefn
+
+ at c ==================================================================
+ at node QuadPlot, Plots by formula, TriCont, Other plotting
+ at subsection QuadPlot
+ at cindex QuadPlot
+
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} QuadPlot (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""})
+ at deftypefnx {Method on @code{mglGraph} (C++, Python)} @code{void} QuadPlot (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
+ at deftypefnx {C function} @code{void} mgl_quadplot_xyz (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
+ at deftypefnx {C function} @code{void} mgl_quadplot_xyzc (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} c, @code{const char *}sch)
+The function draws the surface of quadrangles. Quadrangles vertexes are set by indexes @var{id} of data points @{@var{x}[i], @var{y}[i], @var{z}[i]@}. String @var{sch} sets the color scheme. Previous color scheme is used by default. If string contain @samp{#} then wire plot is produced. First dimensions of @var{id} must be 4 or greater. Arrays @var{x}, @var{y}, @var{z} must have equal sizes. Parameter @var{c} set the colors of quadrangles (if @var{id}.ny=@var{c}.nx) or colors of vertexes (if @var{x}.nx=@var{c}.nx). See also @ref{TriPlot}.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} QuadPlot (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
+ at deftypefnx {C function} @code{void} mgl_quadplot_xy (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const char *}sch, @code{float} zVal)
+The same as previous with @var{z}[i]=@var{zVal}.
+ at end deftypefn
+
+ at c ==================================================================
+ at node Plots by formula, SimplePlot, QuadPlot, Other plotting
@subsection Plots by formula
@cindex Plot
@cindex Surf
diff --git a/texinfo/core_ru.texi b/texinfo/core_ru.texi
index b01c131..1ec64b8 100644
--- a/texinfo/core_ru.texi
+++ b/texinfo/core_ru.texi
@@ -1,5 +1,4 @@
@c ------------------------------------------------------------------
- at node MathGL core, Plotter classes, Examples, Top
@chapter ЯдÑо MathGL
@cindex mglGraph
@@ -77,12 +76,12 @@
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} SetTransparent (@code{bool} val)
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_set_transp (@code{HMGL} gr, @code{int} enable)
-ÐÑеменно вклÑÑаеÑ/воÑ
вÑаÑÐ°ÐµÑ Ð¿ÑозÑаÑноÑÑÑ Ð³ÑаÑиков. ÐÑо аналог @code{Alpha(val)}, но ÑабоÑÐ°ÐµÑ Ð±Ð¾Ð»ÐµÐµ коÑÑекÑно Ð´Ð»Ñ ÐºÐ»Ð°ÑÑа mglGraphGL.
+ÐÑеменно вклÑÑаеÑ/возвÑаÑÐ°ÐµÑ Ð¿ÑозÑаÑноÑÑÑ Ð³ÑаÑиков. ÐÑо аналог @code{Alpha(val)}, но ÑабоÑÐ°ÐµÑ Ð±Ð¾Ð»ÐµÐµ коÑÑекÑно Ð´Ð»Ñ ÐºÐ»Ð°ÑÑа mglGraphGL.
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} SetTranspType (@code{int} type)
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_set_transp_type (@code{HMGL} gr, @code{int} enable)
-ÐÐ°Ð´Ð°ÐµÑ Ñип пÑозÑаÑноÑÑи. ÐбÑÑÐ½Ð°Ñ Ð¿ÑозÑаÑноÑÑÑ (@samp{0}) -- "закÑÑÑÑе" обÑекÑÑ Ð²Ð¸Ð´Ð½Ñ Ð¼ÐµÐ½ÑÑе Ñем закÑÑваÑÑие. ÐÑÐ¾Ñ Ñежим некоÑÑекÑно оÑобÑажаеÑÑÑ Ð² OpenGL (mglGraphGL) Ð´Ð»Ñ Ð½ÐµÑколÑкиÑ
пеÑекÑÑваÑÑиÑ
ÑÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑей. "СÑеклÑннаÑ" пÑозÑаÑноÑÑÑ (@samp{1}) -- закÑÑÑÑе и закÑÑваÑÑие обÑекÑÑ ÐµÐ´Ð¸Ð½Ð¾Ð¾Ð±Ñазно оÑлаблÑÑÑ Ð¸Ð½ÑенÑивноÑÑÑ ÑвеÑа (по RGB каналам). "ÐамповаÑ" пÑозÑаÑноÑÑÑ (@samp{2}) -- закÑÑÑÑе и закÑÑваÑÑие обÑекÑÑ ÑвлÑÑÑÑÑ Ð¸ÑÑоÑниками дополниÑелÑного оÑвеÑÐµÐ½Ð¸Ñ (ÑекомендÑÑ ÑÑÑановиÑÑ @code{SetAlphaDef(0.3)} или менÑÑе в ÑÑом ÑлÑÑае).
+ÐÐ°Ð´Ð°ÐµÑ Ñип пÑозÑаÑноÑÑи. ÐбÑÑÐ½Ð°Ñ Ð¿ÑозÑаÑноÑÑÑ (@samp{0}) -- "закÑÑÑÑе" обÑекÑÑ Ð²Ð¸Ð´Ð½Ñ Ð¼ÐµÐ½ÑÑе Ñем закÑÑваÑÑие. ÐÑÐ¾Ñ Ñежим некоÑÑекÑно оÑобÑажаеÑÑÑ Ð² OpenGL (mglGraphGL) Ð´Ð»Ñ Ð½ÐµÑколÑкиÑ
пеÑекÑÑваÑÑиÑ
ÑÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑей. "СÑеклÑннаÑ" пÑозÑаÑноÑÑÑ (@samp{1}) -- закÑÑÑÑе и закÑÑваÑÑие обÑекÑÑ ÐµÐ´Ð¸Ð½Ð¾Ð¾Ð±Ñазно оÑлаблÑÑÑ Ð¸Ð½ÑенÑивноÑÑÑ ÑвеÑа (по RGB каналам). "ÐамповаÑ" пÑозÑаÑноÑÑÑ (@samp{2}) -- закÑÑÑÑе и закÑÑваÑÑие обÑекÑÑ ÑвлÑÑÑÑÑ Ð¸ÑÑоÑниками дополниÑелÑного оÑвеÑÐµÐ½Ð¸Ñ (ÑекомендÑÑ ÑÑÑановиÑÑ @code{SetAlphaDef(0.3)} или менÑÑе в ÑÑом ÑлÑÑае). @xref{Normal transparency}, @ref{Glass-like transparency}, @ref{Lamp-like transparency}.
@end deftypefn
@deftypecv {@emph{УÑÑаÑевÑÐ°Ñ Ð¿ÐµÑеменнаÑ}} mglGraph @code{float} AlphaDef
@@ -135,7 +134,7 @@
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Fog (@code{float} d, @code{float} dz=@code{0.25})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_set_fog (@code{HMGL} gr, @code{float} d, @code{float} dz)
-ÐмиÑиÑÑÐµÑ ÑÑман на гÑаÑике. ТÑман наÑинаеÑÑÑ Ð½Ð° оÑноÑиÑелÑном ÑаÑÑÑоÑнии @var{dz} Ð¾Ñ ÑоÑки обзоÑа и его плоÑноÑÑÑ ÑаÑÑÐµÑ ÑкÑпоненÑиалÑно вглÑÐ±Ñ Ð¿Ð¾ Ð·Ð°ÐºÐ¾Ð½Ñ ~ 1-exp(- at emph{d*z}). ÐдеÑÑ @emph{z} -- ноÑÐ¼Ð°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð½Ð° 1 глÑбина гÑаÑика. ÐÑли @var{d}=@code{0} Ñо ÑÑман оÑÑÑÑÑÑвÑеÑ. @sref{Surface in fog sample}
+ÐмиÑиÑÑÐµÑ ÑÑман на гÑаÑике. ТÑман наÑинаеÑÑÑ Ð½Ð° оÑноÑиÑелÑном ÑаÑÑÑоÑнии @var{dz} Ð¾Ñ ÑоÑки обзоÑа и его плоÑноÑÑÑ ÑаÑÑÐµÑ ÑкÑпоненÑиалÑно вглÑÐ±Ñ Ð¿Ð¾ Ð·Ð°ÐºÐ¾Ð½Ñ ~@math{1-exp(-d*z)}. ÐдеÑÑ @emph{z} -- ноÑÐ¼Ð°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð½Ð° 1 глÑбина гÑаÑика. ÐÑли @var{d}=@code{0} Ñо ÑÑман оÑÑÑÑÑÑвÑеÑ. @sref{Surface in fog sample}
@end deftypefn
@c ==================================================================
@@ -237,7 +236,7 @@
@end deftypefn
@float
- at image{png_static/cut, 7cm}
+ at image{cut, 7cm}
@caption{ÐевÑй ÑиÑÑнок наÑиÑован пÑи @code{Cut=false}, пÑавÑй пÑи @code{Cut=true}.}
@end float
@@ -377,7 +376,7 @@
@subsection ÐбÑабоÑка оÑибок
@cindex Message
- at cindex WarnCode
+ at cindex GetWarnCode
@cindex SetWarn
ÐÑÑÑ 2 пеÑеменнÑе показÑваÑÑие налиÑие пÑедÑпÑеждениÑ/оÑибки пÑи Ñоздании гÑаÑика. ÐбÑÑно Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑбÑоÑиÑÑ Ð¸Ñ
Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ @code{SetWarn(0);} пеÑед поÑÑÑоением и пÑовеÑиÑÑ Ð¿ÐµÑеменнÑÑ @var{WarnCode} на налиÑие оÑибок поÑле поÑÑÑоениÑ. ТолÑко поÑледнее пÑедÑпÑеждение ÑоÑ
ÑанÑеÑÑÑ. ÐамеÑÑ, ÑÑо вÑе пÑедÑпÑеждениÑ/оÑибки в MathGL не ÑвлÑÑÑÑÑ ÐºÑиÑиÑнÑми -- в Ñ
ÑдÑем из ваÑианÑов ÑооÑвеÑÑÑвÑÑÑий гÑаÑик пÑоÑÑо не бÑÐ´ÐµÑ Ð¿Ð¾ÑÑÑоен.
@@ -390,8 +389,9 @@
УказаÑÐµÐ»Ñ Ð½Ð° ÑÑÑÐ¾ÐºÑ Ð´Ð»Ñ Ð²Ñвода ÑообÑений библиоÑеки о пÑиÑине оÑÑÑÑÑÑÐ²Ð¸Ñ Ð³ÑаÑика. ÐÑли Ñавен NULL, Ñо ÑообÑÐµÐ½Ð¸Ñ Ð½Ðµ вÑводÑÑÑÑ. Ð Ð°Ð·Ð¼ÐµÑ Ð±ÑÑеÑа должен бÑÑÑ Ð½Ðµ менее 1024 байÑ. ÐÑли Message[0]==0, Ñо ÑообÑений неÑ.
@end deftypecv
- at deftypecv {ÐеÑеменнаÑ(C++)} mglGraph @code{int} WarnCode
-Ðод ÑообÑÐµÐ½Ð¸Ñ Ð¾ пÑиÑине оÑÑÑÑÑÑÐ²Ð¸Ñ Ð³ÑаÑика. ÐозможнÑе знаÑениÑ:
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{int} GetWarn ()
+ at deftypefnx {C function} @code{int} mgl_get_warn (@code{HMGL} gr)
+ÐозвÑаÑÐ°ÐµÑ ÐºÐ¾Ð´ ÑообÑÐµÐ½Ð¸Ñ Ð¾ пÑиÑине оÑÑÑÑÑÑÐ²Ð¸Ñ Ð³ÑаÑика. ÐозможнÑе знаÑениÑ:
@table @code
@item mglWarnNone=0
ÐÑедÑпÑеждений неÑ
@@ -424,6 +424,10 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@item mglWarnFmt
ФоÑÐ¼Ð°Ñ Ð½Ðµ поддеÑживаеÑÑÑ
@end table
+ at end deftypefn
+
+ at deftypecv {УÑÑаÑевÑÐ°Ñ Ð¿ÐµÑеменнаÑ} mglGraph @code{int} WarnCode
+Ðод ÑообÑÐµÐ½Ð¸Ñ Ð¾ пÑиÑине оÑÑÑÑÑÑÐ²Ð¸Ñ Ð³ÑаÑика.
@end deftypecv
@c ==================================================================
@@ -577,7 +581,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} SetFunc (@code{const char *}EqX, @code{const char *}EqY, @code{const char *}EqZ=@code{""}, @code{const char *}EqA=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_set_func (@code{HMGL} gr, @code{const char *}EqX, @code{const char *}EqY, @code{const char *}EqZ)
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_set_func_ext (@code{HMGL} gr, @code{const char *}EqX, @code{const char *}EqY, @code{const char *}EqZ, @code{const char *}EqA)
-ÐÐ°Ð´Ð°ÐµÑ ÑоÑмÑÐ»Ñ Ð¿ÐµÑеÑ
ода к кÑиволинейнÑм кооÑдинаÑам. ÐÐ°Ð¶Ð´Ð°Ñ ÑÑÑока ÑвлÑеÑÑÑ Ð¼Ð°ÑемаÑиÑеÑким вÑÑажением, завиÑÑÑим Ð¾Ñ ÑÑаÑÑÑ
кооÑÐ´Ð¸Ð½Ð°Ñ x, y, z. ÐапÑимеÑ, Ð´Ð»Ñ ÑилиндÑиÑеÑкиÑ
кооÑÐ´Ð¸Ð½Ð°Ñ Ð±ÑÐ´ÐµÑ @code{Axis("x*cos(y)", "x*sin(y)", "z");}. ÐÐ»Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑоÑмÑл ÑооÑвеÑÑÑвÑÑÑий паÑамеÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ Ð¿ÑÑÑÑм или @code{NULL}. ÐÑполÑзование ÑоÑмÑл пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñлегка замедлÑÐµÑ Ð¿ÑогÑаммÑ, Ñ.е.. @code{Axis("", "", "")} бÑÑÑÑее Ñем @code{Axis("1*x", "1*y", "1*z")}. ÐаÑамеÑÑ @var{EqA} Ð·Ð°Ð´Ð°ÐµÑ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸ÑнÑÑ ÑоÑмÑÐ»Ñ Ð´Ð»Ñ ÑвеÑовой ÑкалÑ. @xref{mglFormula class}.
+ÐÐ°Ð´Ð°ÐµÑ ÑоÑмÑÐ»Ñ Ð¿ÐµÑеÑ
ода к кÑиволинейнÑм кооÑдинаÑам. ÐÐ°Ð¶Ð´Ð°Ñ ÑÑÑока ÑвлÑеÑÑÑ Ð¼Ð°ÑемаÑиÑеÑким вÑÑажением, завиÑÑÑим Ð¾Ñ ÑÑаÑÑÑ
кооÑÐ´Ð¸Ð½Ð°Ñ @samp{x}, @samp{y}, @samp{z} и @samp{a} или @samp{c} Ð´Ð»Ñ ÑвеÑовой ÑкалÑ. ÐапÑимеÑ, Ð´Ð»Ñ ÑилиндÑиÑеÑкиÑ
кооÑÐ´Ð¸Ð½Ð°Ñ Ð±ÑÐ´ÐµÑ @code{Axis("x*cos(y)", "x*sin(y)", "z");}. ÐÐ»Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑоÑмÑл ÑооÑвеÑÑÑвÑÑÑий паÑамеÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ Ð¿ÑÑÑÑм или @code{NULL}. ÐÑполÑзование ÑоÑмÑл пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñлегка замедлÑÐµÑ Ð¿ÑогÑаммÑ, Ñ.е.. @code{Axis("", "", "")} бÑÑÑÑее Ñем @code{Axis("1*x", "1*y", "1*z")}. ÐаÑамеÑÑ @var{EqA} Ð·Ð°Ð´Ð°ÐµÑ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸ÑнÑÑ ÑоÑмÑÐ»Ñ Ð´Ð»Ñ ÑвеÑовой ÑкалÑ. @xref{Textual formulas}.
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} SetCoor (@code{int} how)
@@ -613,7 +617,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_set_ticks (@code{HMGL} gr, @code{float} dx, @code{float} dy, @code{float} dz)
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_set_subticks (@code{HMGL} gr, @code{int} nx, @code{int} ny, @code{int} nz)
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_set_tick_origin (@code{HMGL} gr, @code{float} x0, @code{float} y0, @code{float} z0)
-ÐÐ°Ð´Ð°ÐµÑ Ñаг меÑок оÑей @var{d}, ÑиÑло подмеÑок @var{ns} и наÑалÑное положение меÑок @var{org} Ð´Ð»Ñ Ð¾Ñи Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ @var{dir} (иÑполÑзÑйÑе 'c' Ð´Ð»Ñ Ð¼ÐµÑок colorbar). ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ @var{d} Ð·Ð°Ð´Ð°ÐµÑ Ñаг меÑок (еÑли положиÑелÑна) или иÑ
ÑиÑло на оÑи (if оÑÑиÑаÑелÑна). ÐÑлевое знаÑение Ð·Ð°Ð´Ð°ÐµÑ Ð»Ð¾Ð³Ð°ÑиÑмиÑеÑкие меÑки. ÐÑли @var{org}=@code{NAN}, Ñо иÑполÑзÑеÑÑÑ Ð·Ð½Ð°Ñение из пеÑеменной @var{Org}.
+ÐÐ°Ð´Ð°ÐµÑ Ñаг меÑок оÑей @var{d}, ÑиÑло подмеÑок @var{ns} и наÑалÑное положение меÑок @var{org} Ð´Ð»Ñ Ð¾Ñи Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ @var{dir} (иÑполÑзÑйÑе 'c' Ð´Ð»Ñ Ð¼ÐµÑок colorbar). ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ @var{d} Ð·Ð°Ð´Ð°ÐµÑ Ñаг меÑок (еÑли положиÑелÑна) или иÑ
ÑиÑло на оÑи (еÑли оÑÑиÑаÑелÑна). ÐÑлевое знаÑение Ð·Ð°Ð´Ð°ÐµÑ Ð»Ð¾Ð³Ð°ÑиÑмиÑеÑкие меÑки. ÐÑли @var{org}=@code{NAN}, Ñо иÑполÑзÑеÑÑÑ Ð·Ð½Ð°Ñение из пеÑеменной @var{Org}.
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} SetTicksVal (@code{char} dir, @code{int} n, @code{float *}val, @code{const char **}lbl)
@@ -691,15 +695,21 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
ÐомеÑÐ°ÐµÑ Ð¿Ð¾ÑледÑÑÑий вÑвод в @var{m}-ÑÑ ÑÑÐµÐ¹ÐºÑ ÑеÑки ÑазмеÑом @var{nx}*@var{ny} Ð¾Ñ Ð²Ñего ÑиÑÑнка. ФÑнкÑÐ¸Ñ ÑбÑаÑÑÐ²Ð°ÐµÑ Ð¼Ð°ÑÑиÑÑ ÑÑанÑÑоÑмаÑии (повоÑоÑÑ Ð¸ ÑжаÑие гÑаÑика) и должна вÑзÑваÑÑÑÑ Ð¿ÐµÑвой Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ "подгÑаÑика". С ÑÑÑеÑиÑеÑкой ÑоÑки зÑÐµÐ½Ð¸Ñ Ð½Ðµ ÑекомендÑеÑÑÑ Ð²ÑзÑваÑÑ ÑÑÑ ÑÑнкÑÐ¸Ñ Ñ ÑазлиÑнÑми (или не кÑаÑнÑми) ÑазмеÑами ÑеÑки. ЯÑейка Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑно ÑдвинÑÑа оÑноÑиÑелÑно Ñвоего обÑÑного Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° оÑноÑиÑелÑнÑй ÑÐ°Ð·Ð¼ÐµÑ @var{dx}, @var{dy}.
@end deftypefn
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} SubPlot (@code{int} nx, @code{int} ny, @code{int} m, @code{const char *}style)
+ at deftypefnx {C function} @code{void} mgl_subplot_s (@code{HMGL} gr, @code{int} nx, @code{int} ny, @code{int} m, @code{const char *}style)
+ÐналогиÑно пÑедÑдÑÑемÑ, но меÑÑо Ð´Ð»Ñ Ð¾Ñей/colorbar ÑезеÑвиÑÑеÑÑÑ ÑолÑко еÑли ÑÑÑока @var{style} ÑодеÑжиÑ: @samp{L} или @samp{<} -- Ñ Ð»ÐµÐ²Ð¾Ð³Ð¾ кÑаÑ, @samp{R} или @samp{>} -- Ñ Ð¿Ñавого кÑаÑ, @samp{A} или @samp{^} -- Ñ Ð²ÐµÑÑ
него кÑаÑ, @samp{U} или @samp{_} -- Ñ Ð½Ð¸Ð¶Ð½ÐµÐ³Ð¾ кÑаÑ.
+ at end deftypefn
+
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} InPlot (@code{float} x1, @code{float} x2, @code{float} y1, @code{float} y2, @code{bool} rel=@code{false})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_inplot (@code{HMGL} gr, @code{float} x1, @code{float} x2, @code{float} y1, @code{float} y2)
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_relplot (@code{HMGL} gr, @code{float} x1, @code{float} x2, @code{float} y1, @code{float} y2)
-ÐомеÑÐ°ÐµÑ Ð¿Ð¾ÑледÑÑÑий вÑвод в пÑÑмоÑголÑнÑÑ Ð¾Ð±Ð»Ð°ÑÑÑ [@var{x1}, @var{x2}]*[@var{y1}, @var{y2}] (иÑÑ
однÑй ÑÐ°Ð·Ð¼ÐµÑ [0,1]*[0,1]). ÐÑа ÑÑнкÑÐ¸Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð¿Ð¾Ð¼ÐµÑÑиÑÑ Ð³ÑаÑик в пÑоизволÑнÑÑ Ð¾Ð±Ð»Ð°ÑÑÑ ÑиÑÑнока. ÐÑли паÑамеÑÑ @var{rel}=@code{true}, Ñо иÑполÑзÑеÑÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð¾ÑноÑиÑелÑно ÑекÑего SubPlot() (или InPlot() Ñ @var{rel}=@code{false}). ФÑнкÑÐ¸Ñ ÑбÑаÑÑÐ²Ð°ÐµÑ Ð¼Ð°ÑÑиÑÑ ÑÑанÑÑоÑмаÑии (повоÑоÑÑ Ð¸ ÑжаÑие гÑаÑика) и должна вÑзÑваÑÑÑÑ Ð¿ÐµÑвой Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ "подгÑаÑика".
+ÐомеÑÐ°ÐµÑ Ð¿Ð¾ÑледÑÑÑий вÑвод в пÑÑмоÑголÑнÑÑ Ð¾Ð±Ð»Ð°ÑÑÑ [@var{x1}, @var{x2}]*[@var{y1}, @var{y2}] (иÑÑ
однÑй ÑÐ°Ð·Ð¼ÐµÑ [0,1]*[0,1]). ÐÑа ÑÑнкÑÐ¸Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð¿Ð¾Ð¼ÐµÑÑиÑÑ Ð³ÑаÑик в пÑоизволÑнÑÑ Ð¾Ð±Ð»Ð°ÑÑÑ ÑиÑÑнка. ÐÑли паÑамеÑÑ @var{rel}=@code{true}, Ñо иÑполÑзÑеÑÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð¾ÑноÑиÑелÑно ÑекÑего SubPlot() (или InPlot() Ñ @var{rel}=@code{false}). ФÑнкÑÐ¸Ñ ÑбÑаÑÑÐ²Ð°ÐµÑ Ð¼Ð°ÑÑиÑÑ ÑÑанÑÑоÑмаÑии (повоÑоÑÑ Ð¸ ÑжаÑие гÑаÑика) и должна вÑзÑваÑÑÑÑ Ð¿ÐµÑвой Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ "подгÑаÑика".
@end deftypefn
- at deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} ColumnPlot (@code{int} num, @code{int} ind)
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} ColumnPlot (@code{int} num, @code{int} ind, @code{float} d=@code{0})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_columnplot (@code{HMGL} gr, @code{int} num, @code{int} ind)
-ÐомеÑÐ°ÐµÑ Ð¿Ð¾ÑледÑÑÑий вÑвод в @var{ind}-ÑÑ ÑÑÑÐ¾ÐºÑ ÑÑолбÑа из @var{num} ÑÑÑок. Ðоложение ÑÑолбÑа вÑбиÑаеÑÑÑ Ð¾ÑноÑиÑелÑно поÑледнего вÑзова SubPlot() (или InPlot() Ñ @var{rel}=@code{false}). @sref{ColumnPlot sample}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_columnplot (@code{HMGL} gr, @code{int} num, @code{int} ind, @code{float} d)
+ÐомеÑÐ°ÐµÑ Ð¿Ð¾ÑледÑÑÑий вÑвод в @var{ind}-ÑÑ ÑÑÑÐ¾ÐºÑ ÑÑолбÑа из @var{num} ÑÑÑок. Ðоложение ÑÑолбÑа вÑбиÑаеÑÑÑ Ð¾ÑноÑиÑелÑно поÑледнего вÑзова SubPlot() (или InPlot() Ñ @var{rel}=@code{false}). ÐаÑамеÑÑ @var{d} Ð·Ð°Ð´Ð°ÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑй Ð·Ð°Ð·Ð¾Ñ Ð¼ÐµÐ¶Ð´Ñ ÑÑÑок. @sref{ColumnPlot sample}
@end deftypefn
@deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} StickPlot (@code{int} num, @code{int} ind, @code{float} tet, @code{float} phi)
@@ -732,8 +742,14 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
СбÑаÑÑÐ²Ð°ÐµÑ Ð¼Ð°ÑÑиÑÑ ÑÑанÑÑоÑмаÑии. ÐквиваленÑно вÑÐ·Ð¾Ð²Ñ @code{InPlot(0,1,0,1,rel)}.
@end deftypefn
- at deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++)} @code{void} RestoreM ()
-ÐоÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¼Ð°ÑÑиÑÑ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ðº маÑÑиÑе поÑле поÑледнего @code{InPlot()}. Ðолезна Ð´Ð»Ñ Ð²Ð¾Ð·Ð²ÑаÑÐµÐ½Ð¸Ñ ÑоÑÑоÑÐ½Ð¸Ñ Ð¿Ð¾Ñле вÑзова ÑÑнкÑии @code{Identity()}.
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Push ()
+ at deftypefnx {C function} @code{void} mgl_mat_push (@code{HMGL} gr)
+ÐомеÑÐ°ÐµÑ Ð¼Ð°ÑÑиÑÑ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² ÑÑек. Ðозднее Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе воÑÑÑановиÑÑ ÑекÑÑее ÑоÑÑоÑние Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑÑнкÑии Pop(). СÑек Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð´Ð¾ 10 маÑÑиÑ.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} Pop ()
+ at deftypefnx {C function} @code{void} mgl_mat_pop (@code{HMGL} gr)
+ÐаменÑÐµÑ (воÑÑÑанавливаеÑ) маÑÑиÑÑ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð° поÑледнÑÑ Ð¿Ð¾Ð¼ÐµÑеннÑÑ Ð² ÑÑек маÑÑиÑÑ.
@end deftypefn
@@ -783,12 +799,12 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} WriteEPS (@code{const char *}fname, @code{const char *}descr=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_write_eps (@code{HMGL} gr, @code{const char *}fname, @code{const char *}descr)
-ÐкÑпоÑÑиÑÑÐµÑ ÑекÑÑий ÐºÐ°Ð´Ñ Ð² EPS Ñайл, иÑполÑзÑÑ Ð²ÐµÐºÑоÑное пÑедÑÑавление гÑаÑика (клаÑÑ mglGraphPS). ÐÑледÑÑвие Ñего не ÑекомендÑеÑÑÑ ÑоÑ
ÑанÑÑÑ Ð±Ð¾Ð»ÑÑие гÑаÑики (повеÑÑ
ноÑÑи, а оÑобенно повеÑÑ
ноÑÑи ÑÑовнÑ) в ÑоÑмаÑе EPS из-за болÑÑого ÑазмеÑа Ñайла. ХоÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ñ
внÑÑÑенниÑ
огÑаниÑений на ÑÐ°Ð·Ð¼ÐµÑ Ð²ÑÑ
одного Ñайла неÑ. ÐÐ»Ñ Ð½Ð¸Ñ
лÑÑÑе иÑполÑзоваÑÑ ÑаÑÑÑовÑй ÑоÑÐ¼Ð°Ñ (напÑимеÑ, PNG или JPEG). ÐаÑамеÑÑÑ ÑÑнкÑии ÑледÑÑÑие: @var{fname} -- Ð¸Ð¼Ñ Ñайла, @var{descr} -- опиÑание Ñайла.
+ÐкÑпоÑÑиÑÑÐµÑ ÑекÑÑий ÐºÐ°Ð´Ñ Ð² EPS Ñайл, иÑполÑзÑÑ Ð²ÐµÐºÑоÑное пÑедÑÑавление гÑаÑика (клаÑÑ mglGraphPS). ÐÑледÑÑвие Ñего не ÑекомендÑеÑÑÑ ÑоÑ
ÑанÑÑÑ Ð±Ð¾Ð»ÑÑие гÑаÑики (повеÑÑ
ноÑÑи, а оÑобенно повеÑÑ
ноÑÑи ÑÑовнÑ) в ÑоÑмаÑе EPS из-за болÑÑого ÑазмеÑа Ñайла. ХоÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ñ
внÑÑÑенниÑ
огÑаниÑений на ÑÐ°Ð·Ð¼ÐµÑ Ð²ÑÑ
одного Ñайла неÑ. ÐÐ»Ñ Ð½Ð¸Ñ
лÑÑÑе иÑполÑзоваÑÑ ÑаÑÑÑовÑй ÑоÑÐ¼Ð°Ñ (напÑимеÑ, PNG или JPEG). ÐаÑамеÑÑÑ ÑÑнкÑии ÑледÑÑÑие: @var{fname} -- Ð¸Ð¼Ñ Ñайла, @var{descr} -- опиÑание Ñайла. ÐÑли Ð¸Ð¼Ñ Ñайла оканÑиваеÑÑÑ Ð½Ð° @samp{z} (напÑимеÑ, @samp{fname.eps.gz}), Ñо Ñайл авÑомаÑиÑеÑки аÑÑ
ивиÑÑеÑÑÑ Ð² ÑоÑмаÑе gzip.
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} WriteSVG (@code{const char *}fname, @code{const char *}descr=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_write_svg (@code{HMGL} gr, @code{const char *}fname, @code{const char *}descr)
-ÐкÑпоÑÑиÑÑÐµÑ ÑекÑÑий ÐºÐ°Ð´Ñ Ð² SVG Ñайл, иÑполÑзÑÑ Ð²ÐµÐºÑоÑное пÑедÑÑавление гÑаÑика (клаÑÑ mglGraphPS). ÐÑледÑÑвие Ñего не ÑекомендÑеÑÑÑ ÑоÑ
ÑанÑÑÑ Ð±Ð¾Ð»ÑÑие гÑаÑики (повеÑÑ
ноÑÑи, а оÑобенно повеÑÑ
ноÑÑи ÑÑовнÑ) в ÑоÑмаÑе SVG из-за болÑÑого ÑазмеÑа Ñайла. ХоÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ñ
внÑÑÑенниÑ
огÑаниÑений на ÑÐ°Ð·Ð¼ÐµÑ Ð²ÑÑ
одного Ñайла неÑ. ÐÐ»Ñ Ð½Ð¸Ñ
лÑÑÑе иÑполÑзоваÑÑ ÑаÑÑÑовÑй ÑоÑÐ¼Ð°Ñ (напÑимеÑ, PNG или JPEG). ÐаÑамеÑÑÑ ÑÑнкÑии ÑледÑÑÑие: @var{fname} -- Ð¸Ð¼Ñ Ñайла, @var{descr} -- опиÑание Ñайла.
+ÐкÑпоÑÑиÑÑÐµÑ ÑекÑÑий ÐºÐ°Ð´Ñ Ð² SVG Ñайл, иÑполÑзÑÑ Ð²ÐµÐºÑоÑное пÑедÑÑавление гÑаÑика (клаÑÑ mglGraphPS). ÐÑледÑÑвие Ñего не ÑекомендÑеÑÑÑ ÑоÑ
ÑанÑÑÑ Ð±Ð¾Ð»ÑÑие гÑаÑики (повеÑÑ
ноÑÑи, а оÑобенно повеÑÑ
ноÑÑи ÑÑовнÑ) в ÑоÑмаÑе SVG из-за болÑÑого ÑазмеÑа Ñайла. ХоÑÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ñ
внÑÑÑенниÑ
огÑаниÑений на ÑÐ°Ð·Ð¼ÐµÑ Ð²ÑÑ
одного Ñайла неÑ. ÐÐ»Ñ Ð½Ð¸Ñ
лÑÑÑе иÑполÑзоваÑÑ ÑаÑÑÑовÑй ÑоÑÐ¼Ð°Ñ (напÑимеÑ, PNG или JPEG). ÐаÑамеÑÑÑ ÑÑнкÑии ÑледÑÑÑие: @var{fname} -- Ð¸Ð¼Ñ Ñайла, @var{descr} -- опиÑание Ñайла. ÐÑли Ð¸Ð¼Ñ Ñайла оканÑиваеÑÑÑ Ð½Ð° @samp{z} (напÑимеÑ, @samp{fname.svgz}), Ñо Ñайл авÑомаÑиÑеÑки аÑÑ
ивиÑÑеÑÑÑ Ð² ÑоÑмаÑе gzip.
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} WriteIDTF (@code{const char *}fname, @code{const char *}descr=@code{""})
@@ -877,7 +893,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_facex (@code{HMGL} gr, @code{float} x0, @code{float} y0, @code{float} z0, @code{float} wy, @code{float} wz, @code{const char *}stl, @code{float} d1, @code{float} d2)
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_facey (@code{HMGL} gr, @code{float} x0, @code{float} y0, @code{float} z0, @code{float} wx, @code{float} wz, @code{const char *}stl, @code{float} d1, @code{float} d2)
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_facez (@code{HMGL} gr, @code{float} x0, @code{float} y0, @code{float} z0, @code{float} wx, @code{float} wy, @code{const char *}stl, @code{float} d1, @code{float} d2)
-РиÑÑÐµÑ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð½Ñй пÑÑмоÑголÑник (гÑанÑ) пеÑпендикÑлÑÑно оÑи [x,y,z] в ÑоÑке @{@var{x0}, @var{y0}, @var{z0}@} ÑвеÑом @var{stl} и ÑиÑиной @var{wx}, @var{wy}, @var{wz} Ð²Ð´Ð¾Ð»Ñ ÑооÑвеÑÑÑвÑÑÑего напÑавлениÑ. ÐÑи ÑÑом ÑÐ²ÐµÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½ Ð´Ð»Ñ Ð²Ñей гÑани, или ÑазлиÑнÑм еÑли ÑÐºÐ°Ð·Ð°Ð½Ñ Ð²Ñе 4 ÑвеÑа. ÐаÑамеÑÑÑ @var{d1}!=0, @var{d2}!=0 задаÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑй Ñдвиг поÑледней ÑоÑки (Ñ.е. ÑиÑÑÑÑ ÑеÑÑÑеÑ
ÑголÑник).ÐÑÐ°Ð½Ñ Ð±ÑÐ´ÐµÑ Ð½Ð°ÑиÑована даже еÑли ÑаÑÑÑ ÐµÐµ Ð»ÐµÐ¶Ð¸Ñ Ð²Ð½Ðµ диапазона оÑей кооÑдинаÑ.
+РиÑÑÐµÑ Ð·Ð°ÐºÑаÑеннÑй пÑÑмоÑголÑник (гÑанÑ) пеÑпендикÑлÑÑно оÑи [x,y,z] в ÑоÑке @{@var{x0}, @var{y0}, @var{z0}@} ÑвеÑом @var{stl} и ÑиÑиной @var{wx}, @var{wy}, @var{wz} Ð²Ð´Ð¾Ð»Ñ ÑооÑвеÑÑÑвÑÑÑего напÑавлениÑ. ÐÑи ÑÑом ÑÐ²ÐµÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½ Ð´Ð»Ñ Ð²Ñей гÑани, или ÑазлиÑнÑм Ð´Ð»Ñ ÑазнÑÑ
веÑÑин еÑли ÑÐºÐ°Ð·Ð°Ð½Ñ Ð²Ñе 4 ÑвеÑа. ÐаÑамеÑÑÑ @var{d1}!=0, @var{d2}!=0 задаÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑй Ñдвиг поÑледней ÑоÑки (Ñ.е. ÑиÑÑÑÑ ÑеÑÑÑеÑ
ÑголÑник).ÐÑÐ°Ð½Ñ Ð±ÑÐ´ÐµÑ Ð½Ð°ÑиÑована даже еÑли ÑаÑÑÑ ÐµÐµ Ð»ÐµÐ¶Ð¸Ñ Ð²Ð½Ðµ диапазона оÑей кооÑдинаÑ.
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++)} @code{void} Sphere (@code{mglPoint} p, @code{float} r, @code{const char *}stl=@code{"r"})
@@ -917,9 +933,9 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@cindex Text
@cindex Title
-ФÑнкÑии Ð´Ð»Ñ Ð²Ñвода ÑекÑÑа позволÑÑÑ Ð²ÑвеÑÑи ÑÑÑÐ¾ÐºÑ ÑекÑÑа в пÑоизволÑном меÑÑе ÑиÑÑнка, в пÑоизволÑном напÑавлении и Ð²Ð´Ð¾Ð»Ñ Ð¿ÑоизволÑной кÑивой. ÐÐ»Ñ Ð½Ð¸Ð·ÐºÐ¾ÑÑовневого вÑвода и ÑазбоÑа ТеХ-иÑ
вÑÑажений иÑполÑзÑеÑÑÑ ÐºÐ»Ð°ÑÑ mglFont (@pxref{mglFont class}). Ðн позволÑÐµÑ Ð¸ÑполÑзоваÑÑ Ð¿ÑоизволÑное наÑеÑÑание ÑÑиÑÑа и многие ТеХ-ие ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ (деÑалÑнее @pxref{mglFont class}). ÐÑе ÑÑнкÑии вÑвода ÑекÑÑа имеÑÑ Ð²Ð°ÑианÑÑ Ð´Ð»Ñ 8-bit ÑÑÑок (@code{char *}) и Ð´Ð»Ñ Unicode ÑÑÑок (@code{wchar_t *}). РпеÑвом ÑлÑÑае иÑполÑзÑеÑÑÑ ÐºÐ¾Ð½Ð²ÐµÑÑÐ¸Ñ Ð¸Ð· ÑекÑÑей локали, Ñ.е. иногда вам ÑÑебÑеÑÑÑ Ñвно ÑказаÑÑ Ð»Ð¾ÐºÐ°Ð»Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑÑнкÑии @code{setlocale()}. ÐÑгÑÐ¼ÐµÐ½Ñ @var{size} опÑеделÑÐµÑ ÑÐ°Ð·Ð¼ÐµÑ ÑекÑÑа: ÑÐ°Ð·Ð¼ÐµÑ ÑÑиÑÑа еÑли положиÑелен или оÑноÑиÑелÑнÑй ÑÐ°Ð·Ð¼ÐµÑ (=- at var{size}*@var{FontSize}) еÑли оÑÑиÑаÑелен. ÐаÑеÑÑание ÑÑиÑÑа (STIX, arial, courier, times и дÑ) можно измениÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑÑнкÑий SetFont(), GetFont(). @xref{Font settings}.
+ФÑнкÑии Ð´Ð»Ñ Ð²Ñвода ÑекÑÑа позволÑÑÑ Ð²ÑвеÑÑи ÑÑÑÐ¾ÐºÑ ÑекÑÑа в пÑоизволÑном меÑÑе ÑиÑÑнка, в пÑоизволÑном напÑавлении и Ð²Ð´Ð¾Ð»Ñ Ð¿ÑоизволÑной кÑивой. ÐÐ»Ñ Ð½Ð¸Ð·ÐºÐ¾ÑÑовневого вÑвода и ÑазбоÑа ТеХ-иÑ
вÑÑажений иÑполÑзÑеÑÑÑ ÐºÐ»Ð°ÑÑ mglFont (@pxref{mglFont class}). Ðн позволÑÐµÑ Ð¸ÑполÑзоваÑÑ Ð¿ÑоизволÑное наÑеÑÑание ÑÑиÑÑа и многие ТеХ-ие ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ (деÑалÑнее @pxref{Font styles}). ÐÑе ÑÑнкÑии вÑвода ÑекÑÑа имеÑÑ Ð²Ð°ÑианÑÑ Ð´Ð»Ñ 8-bit ÑÑÑок (@code{char *}) и Ð´Ð»Ñ Unicode ÑÑÑок (@code{wchar_t *}). РпеÑвом ÑлÑÑае иÑполÑзÑеÑÑÑ ÐºÐ¾Ð½Ð²ÐµÑÑÐ¸Ñ Ð¸Ð· ÑекÑÑей локали, Ñ.е. иногда вам ÑÑебÑеÑÑÑ Ñвно ÑказаÑÑ Ð»Ð¾ÐºÐ°Ð»Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑÑнкÑии @code{setlocale()}. ÐÑгÑÐ¼ÐµÐ½Ñ @var{size} опÑеделÑÐµÑ ÑÐ°Ð·Ð¼ÐµÑ ÑекÑÑа: ÑÐ°Ð·Ð¼ÐµÑ ÑÑиÑÑа еÑли положиÑелен или оÑноÑиÑелÑнÑй ÑÐ°Ð·Ð¼ÐµÑ (=- at var{size}*@var{FontSize}) еÑли оÑÑиÑаÑелен. ÐаÑеÑÑание ÑÑиÑÑа (STIX, arial, courier, times и дÑ) можно измениÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑÑнкÑий SetFont(), GetFont(). @xref{Font settings}.
-ÐаÑамеÑÑÑ ÑÑиÑÑа задаÑÑÑÑ ÑÑÑокой, коÑоÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ ÑÑÐ¸Ð»Ñ (@samp{rbiwou}) и/или вÑÑÐ°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ (@samp{LRC}). Также ÑÑÑока Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ ÑвеÑа @samp{wkrgbcymhRGBCYMHW} (@pxref{mglColor class}) поÑле Ñимвола @samp{:}. СÑили ÑÑиÑÑа: @samp{r} -- пÑÑмой, @samp{i} -- кÑÑÑив, @samp{b} -- жиÑнÑй, @samp{w} -- конÑÑÑнÑй, @samp{o} -- надÑеÑкнÑÑÑй, @samp{u} -- подÑеÑкнÑÑÑй. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ÑполÑзÑеÑÑÑ Ð¿ÑÑмой ÑÑиÑÑ. Ð¢Ð¸Ð¿Ñ Ð²ÑÑавниваниÑ: @samp{L} -- по Ð»ÐµÐ²Ð¾Ð¼Ñ ÐºÑÐ°Ñ (по ÑмолÑаниÑ), @samp{C} -- по ÑенÑÑÑ, @samp{R} -- по пÑÐ°Ð²Ð¾Ð¼Ñ ÐºÑаÑ. ÐапÑимеÑ, ÑÑÑока @samp{iC:b} ÑооÑвеÑÑÑвÑÐµÑ ÐºÑÑÑÐ¸Ð²Ñ Ñинего ÑвеÑа Ñ Ð²ÑÑавниванием по ÑенÑÑÑ.
+ÐаÑамеÑÑÑ ÑÑиÑÑа задаÑÑÑÑ ÑÑÑокой, коÑоÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ ÑÑÐ¸Ð»Ñ (@samp{rbiwou}) и/или вÑÑÐ°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ (@samp{LRC}). Также ÑÑÑока Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ ÑвеÑа @samp{wkrgbcymhRGBCYMHW} (@pxref{Line styles}) поÑле Ñимвола @samp{:}. СÑили ÑÑиÑÑа: @samp{r} -- пÑÑмой, @samp{i} -- кÑÑÑив, @samp{b} -- жиÑнÑй, @samp{w} -- конÑÑÑнÑй, @samp{o} -- надÑеÑкнÑÑÑй, @samp{u} -- подÑеÑкнÑÑÑй. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ÑполÑзÑеÑÑÑ Ð¿ÑÑмой ÑÑиÑÑ. Ð¢Ð¸Ð¿Ñ Ð²ÑÑавниваниÑ: @samp{L} -- по Ð»ÐµÐ²Ð¾Ð¼Ñ ÐºÑÐ°Ñ (по ÑмолÑаниÑ), @samp{C} -- по ÑенÑÑÑ, @samp{R} -- по пÑÐ°Ð²Ð¾Ð¼Ñ ÐºÑаÑ. ÐапÑимеÑ, ÑÑÑока @samp{iC:b} ÑооÑвеÑÑÑвÑÐµÑ ÐºÑÑÑÐ¸Ð²Ñ Ñинего ÑвеÑа Ñ Ð²ÑÑавниванием по ÑенÑÑÑ.
ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ @samp{aA}, Ñо ÑекÑÑ Ð²ÑводиÑÑÑ Ð² абÑолÑÑнÑÑ
кооÑдинаÑаÑ
(полагаÑÑÑÑ Ð² диапазоне [0,1]). ÐÑи ÑÑом иÑполÑзÑÑÑÑÑ ÐºÐ¾Ð¾ÑдинаÑÑ Ð¾ÑноÑиÑелÑно ÑиÑÑнка (еÑли Ñказано @samp{A}) или оÑноÑиÑелÑно поÑледнего SubPlot()/InPlot() (еÑли Ñказано @samp{a}).
@@ -969,7 +985,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_text_y (@code{HMGL} gr, @code{const HMDT} y, @code{const char *}text, @code{const char *}font, float size)
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_text_xy (@code{const HMDT} x, @code{const HMDT} y, @code{const char *}text, @code{const char *}font, float size)
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_text_xyz (@code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}text, @code{const char *}font, float size)
-ÐÑÐ²Ð¾Ð´Ð¸Ñ ÑÑÑÐ¾ÐºÑ @var{text} Ð²Ð´Ð¾Ð»Ñ ÐºÑивой @{@var{x}[i], @var{y}[i], @var{z}[i]@} ÑÑиÑÑом @var{font}. СÑÑока @var{font} Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ ÑимволÑ: @samp{t} Ð´Ð»Ñ Ð²Ñвода ÑекÑÑа под кÑивой (по ÑмолÑаниÑ), или @samp{T} Ð´Ð»Ñ Ð²Ñвода ÑекÑÑа над кÑивой. РазмеÑÑ Ð¿Ð¾ 1-ой ÑазмеÑноÑÑи Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @var{x.nx=y.nx=z.nx}. ÐÑли маÑÑив @var{x} не Ñказан, Ñо иÑполÑзÑеÑÑÑ "авÑомаÑиÑеÑкий" маÑÑив Ñо знаÑениÑми в диапазоне [@var{Min}.x, @var{Max}.x] (@pxref{Ranges (bounding box)}). ÐÑли маÑÑив @var{z} не Ñказан, Ñо иÑполÑзÑеÑÑÑ @var{z}[i] = @var{zVal}. @sref{Text sample}
+ÐÑÐ²Ð¾Ð´Ð¸Ñ ÑÑÑÐ¾ÐºÑ @var{text} Ð²Ð´Ð¾Ð»Ñ ÐºÑивой @{@var{x}[i], @var{y}[i], @var{z}[i]@} ÑÑиÑÑом @var{font}. СÑÑока @var{font} Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ ÑимволÑ: @samp{t} Ð´Ð»Ñ Ð²Ñвода ÑекÑÑа под кÑивой (по ÑмолÑаниÑ), или @samp{T} Ð´Ð»Ñ Ð²Ñвода ÑекÑÑа над кÑивой. РазмеÑÑ Ð¿Ð¾ 1-ой ÑазмеÑноÑÑи Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @code{x.nx=y.nx=z.nx}. ÐÑли маÑÑив @var{x} не Ñказан, Ñо иÑполÑзÑеÑÑÑ "авÑомаÑиÑеÑкий" маÑÑив Ñо знаÑениÑми в диапазоне [@var{Min}.x, @var{Max}.x] (@pxref{Ranges (bounding box)}). ÐÑли маÑÑив @var{z} не Ñказан, Ñо иÑполÑзÑеÑÑÑ @var{z}[i] = @var{zVal}. @sref{Text sample}
@end deftypefn
@c ##################################################################
@@ -988,20 +1004,24 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
РиÑÑÐµÑ Ð¾Ñи кооÑÐ´Ð¸Ð½Ð°Ñ Ð¸ меÑки на ниÑ
(@pxref{Axis settings}) в напÑавлениÑÑ
, ÑказаннÑÑ
ÑÑÑокой @var{dir}. ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ Ñимвол @samp{_}, Ñо подпиÑи меÑок оÑобÑажаÑÑÑÑ Ð½Ðµ бÑдÑÑ. ШÑиÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñей опÑеделÑеÑÑÑ ÑÑнкÑией @code{SetFontDef()} (@pxref{Font settings}). ÐеÑки бÑдÑÑ "подогнанÑ" еÑли @var{adjust}=@code{true} (Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð²Ñзова ÑÑнкÑии @code{AdjustTicks()}).
@end deftypefn
- at deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Colorbar (@code{const char *}sch=@code{""}, @code{int} where=@code{0})
- at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_colorbar (@code{HMGL} gr, @code{const char *}sch, @code{int} where)
-РиÑÑÐµÑ Ð¿Ð¾Ð»Ð¾ÑÑ ÑооÑвеÑÑÑÐ²Ð¸Ñ ÑвеÑа и ÑиÑловÑÑ
знаÑений (colorbar) Ð´Ð»Ñ ÑвеÑовой ÑÑ
ÐµÐ¼Ñ @var{sch} (иÑполÑзÑеÑÑÑ ÑекÑÑÐ°Ñ Ð´Ð»Ñ @code{sch=""}) Ñ ÐºÑÐ°Ñ Ð¾Ñ Ð³ÑаÑика. ÐаÑамеÑÑ @var{where} Ð·Ð°Ð´Ð°ÐµÑ Ð¼ÐµÑÑоположение: @samp{0} - ÑпÑава (по ÑмолÑаниÑ), @samp{1} - Ñлева, @samp{2} - ÑвеÑÑ
Ñ, @samp{3} - ÑнизÑ. @sref{Dens sample}
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Colorbar (@code{const char *}sch=@code{""}, @code{int} pos=@code{0})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_colorbar (@code{HMGL} gr, @code{const char *}sch, @code{int} pos)
+РиÑÑÐµÑ Ð¿Ð¾Ð»Ð¾ÑÑ ÑооÑвеÑÑÑÐ²Ð¸Ñ ÑвеÑа и ÑиÑловÑÑ
знаÑений (colorbar) Ð´Ð»Ñ ÑвеÑовой ÑÑ
ÐµÐ¼Ñ @var{sch} (иÑполÑзÑеÑÑÑ ÑекÑÑÐ°Ñ Ð´Ð»Ñ @code{sch=""}) Ñ ÐºÑÐ°Ñ Ð¾Ñ Ð³ÑаÑика. ÐаÑамеÑÑ @var{pos} Ð·Ð°Ð´Ð°ÐµÑ Ð¼ÐµÑÑоположение: @samp{0} - ÑпÑава (по ÑмолÑаниÑ), @samp{1} - Ñлева, @samp{2} - ÑвеÑÑ
Ñ, @samp{3} - ÑнизÑ. ÐÑли ÑÑÑока @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{<>^_}, Ñо паÑамеÑÑ @var{pos} опÑеделÑеÑÑÑ ÐºÐ°Ðº: @code{pos=0} Ð´Ð»Ñ @samp{>} (ÑпÑава), @code{pos=1} Ð´Ð»Ñ @samp{<} (Ñлева), @code{pos=2} Ð´Ð»Ñ @samp{^} (ÑвеÑÑ
Ñ), @code{pos=3} Ð´Ð»Ñ @samp{_} (ÑнизÑ). ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ @samp{A}, Ñо иÑполÑзÑÑÑÑÑ Ð°Ð±ÑолÑÑнÑе кооÑдинаÑÑ (оÑноÑиÑелÑно ÑиÑÑнка). @sref{Dens sample}
+ at end deftypefn
+
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Colorbar (@code{const mglData &}v, @code{const char *}sch=@code{""}, @code{int} where=@code{0})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_colorbar_val (@code{HMGL} gr, @code{const HMDT} v, @code{const char *}sch, @code{int} where)
+ÐналогиÑно пÑедÑдÑÑемÑ, но Ð´Ð»Ñ ÑвеÑовой ÑÑ
ÐµÐ¼Ñ Ð±ÐµÐ· ÑÐ³Ð»Ð°Ð¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñми знаÑениÑми @var{v}. @sref{ContD sample}
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Colorbar (@code{const char *}sch, @code{int} where, @code{float} x, @code{float} y, @code{float} w, @code{float} h)
- at deftypefnx {ÐеÑод клаÑÑа @code{mglGraph} (C++)} @code{void} Colorbar (@code{int} where, @code{float} x, @code{float} y, @code{float} w, @code{float} h)
+ at deftypefnx {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Colorbar (@code{int} where, @code{float} x, @code{float} y, @code{float} w, @code{float} h)
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_colorbar_ext (@code{HMGL} gr, @code{const char *}sch, @code{int} where, @code{float} x, @code{float} y, @code{float} w, @code{float} h)
-РиÑÑÐµÑ Ð¿Ð¾Ð»Ð¾ÑÑ ÑооÑвеÑÑÑÐ²Ð¸Ñ ÑвеÑа и ÑиÑловÑÑ
знаÑений (colorbar) Ð´Ð»Ñ ÑвеÑовой ÑÑ
ÐµÐ¼Ñ @var{sch} (иÑполÑзÑеÑÑÑ ÑекÑÑÐ°Ñ Ð´Ð»Ñ @code{sch=""}) в пÑоизволÑном меÑÑе гÑаÑика @{@var{x}, @var{y}@} (полагаÑÑÑÑ Ð² диапазоне [0,1]). ÐаÑамеÑÑ @var{where} Ð·Ð°Ð´Ð°ÐµÑ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ меÑок: @samp{0} - Ñлева, @samp{1} - ÑпÑава, @samp{2} - ÑнизÑ, @samp{3} - ÑвеÑÑ
Ñ. ÐаÑамеÑÑÑ @var{w}, @var{h} задаÑÑ Ð¾ÑноÑиÑелÑнÑÑ ÑиÑÐ¸Ð½Ñ Ð¸ вÑÑоÑÑ colorbar.
+ÐналогиÑно пеÑвомÑ, но в пÑоизволÑном меÑÑе гÑаÑика @{@var{x}, @var{y}@} (полагаÑÑÑÑ Ð² диапазоне [0,1]). ÐаÑамеÑÑÑ @var{w}, @var{h} задаÑÑ Ð¾ÑноÑиÑелÑнÑÑ ÑиÑÐ¸Ð½Ñ Ð¸ вÑÑоÑÑ colorbar.
@end deftypefn
- at deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Colorbar (@code{const mglData &}v, @code{const char *}sch=@code{""}, @code{int} where=@code{0})
- at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_colorbar_val (@code{HMGL} gr, @code{const HMDT} v, @code{const char *}sch, @code{int} where)
-РиÑÑÐµÑ Ð¿Ð¾Ð»Ð¾ÑÑ ÑооÑвеÑÑÑÐ²Ð¸Ñ ÑвеÑа и ÑиÑловÑÑ
знаÑений (colorbar) Ð´Ð»Ñ ÑвеÑовой ÑÑ
ÐµÐ¼Ñ Ð±ÐµÐ· ÑÐ³Ð»Ð°Ð¶Ð¸Ð²Ð°Ð½Ð¸Ñ @var{sch} (иÑполÑзÑеÑÑÑ ÑекÑÑÐ°Ñ Ð´Ð»Ñ @code{sch=""}) Ð´Ð»Ñ Ð·Ð½Ð°Ñений @var{v} Ñ ÐºÑÐ°Ñ Ð¾Ñ Ð³ÑаÑика. ÐаÑамеÑÑ @var{where} Ð·Ð°Ð´Ð°ÐµÑ Ð¼ÐµÑÑоположение: @samp{0} - ÑпÑава (по ÑмолÑаниÑ), @samp{1} - Ñлева, @samp{2} - ÑвеÑÑ
Ñ, @samp{3} - ÑнизÑ. @sref{ContD sample}
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++)} @code{void} Colorbar (@code{const mglData &}v, @code{const char *}sch, @code{int} where, @code{float} x, @code{float} y, @code{float} w, @code{float} h)
+ÐналогиÑно пÑедÑдÑÑемÑ, но Ð´Ð»Ñ ÑвеÑовой ÑÑ
ÐµÐ¼Ñ Ð±ÐµÐ· ÑÐ³Ð»Ð°Ð¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñми знаÑениÑми @var{v}.
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Grid (@code{const char *}dir=@code{"xyz"}, @code{const char *}pen=@code{"B-"})
@@ -1017,8 +1037,8 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
РиÑÑÐµÑ Ð¾Ð³ÑаниÑиваÑÑий паÑаллелепипед ÑвеÑом @var{col}.
@end deftypefn
- at deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Label (@code{char} dir, @code{const char *}text, @code{float} pos=@code{+1}, @code{float} size=@code{-1.4}, @code{float} shift=@code{0})
- at deftypefnx {ÐеÑод клаÑÑа @code{mglGraph} (C++)} @code{void} Label (@code{char} dir, @code{const wchar_t *}text, @code{float} pos=@code{+1}, @code{float} size=@code{-1.4}, @code{float} shift=@code{0})
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Label (@code{char} dir, @code{const char *}text, @code{float} pos=@code{0}, @code{float} size=@code{-1.4}, @code{float} shift=@code{0})
+ at deftypefnx {ÐеÑод клаÑÑа @code{mglGraph} (C++)} @code{void} Label (@code{char} dir, @code{const wchar_t *}text, @code{float} pos=@code{0}, @code{float} size=@code{-1.4}, @code{float} shift=@code{0})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_label (@code{HMGL} gr, @code{char} dir, @code{const char *}text)
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_label_ext (@code{HMGL} gr, @code{char} dir, @code{const char *}text, @code{float} pos, @code{float} size, @code{float} shift)
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_labelw_ext (@code{HMGL} gr, @code{char} dir, @code{const wchar_t *}text, @code{float} pos, @code{float} size, @code{float} shift)
@@ -1031,12 +1051,14 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@cindex Legend
@cindex AddLegend
@cindex ClearLegend
+ at cindex SetLegendBox
+ at cindex SetLegendMarks
-ÐÑи ÑÑнкÑии обеÑпеÑиваÑÑ ÑиÑование Ð»ÐµÐ³ÐµÐ½Ð´Ñ Ð³ÑаÑика (полезно Ð´Ð»Ñ @ref{1D plotting}). ÐапиÑÑ Ð² легенде ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· двÑÑ
ÑÑÑок: одна Ð´Ð»Ñ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов, дÑÑÐ³Ð°Ñ Ñ ÑекÑÑом опиÑÐ°Ð½Ð¸Ñ (Ñ Ð²ÐºÐ»ÑÑеннÑм ÑазбоÑом TeX-иÑ
команд). Ðожно иÑполÑзоваÑÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвенно маÑÑÐ¸Ð²Ñ ÑÑÑок, или накопление во внÑÑÑенние маÑÑÐ¸Ð²Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑÑнкÑии AddLegend() Ñ Ð¿Ð¾ÑледÑÑÑим оÑобÑажением. Ðоложение Ð»ÐµÐ³ÐµÐ½Ð´Ñ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ Ð°Ð²ÑомаÑиÑеÑки или вÑÑÑнÑÑ. ÐаÑамеÑÑÑ @var{font} и @var{size} задаÑÑ ÑÑÐ¸Ð»Ñ Ð¸ ÑÐ°Ð·Ð¼ÐµÑ ÑÑиÑÑа (@pxref{Font settings}). ÐаÑамеÑÑ @var{llen} Ð·Ð°Ð´Ð°ÐµÑ Ð¾ÑноÑиÑелÑнÑÑ ÑиÑÐ¸Ð½Ñ Ð¿ÑимеÑа линии. Ðли ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ пÑÑÑой, Ñо ÑооÑвеÑÑÑвÑÑÑий ÑекÑÑ Ð¿ÐµÑаÑаеÑÑÑ Ð±ÐµÐ· оÑÑÑÑпа. @sref{Legend sample}
+ÐÑи ÑÑнкÑии обеÑпеÑиваÑÑ ÑиÑование Ð»ÐµÐ³ÐµÐ½Ð´Ñ Ð³ÑаÑика (полезно Ð´Ð»Ñ @ref{1D plotting}). ÐапиÑÑ Ð² легенде ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· двÑÑ
ÑÑÑок: одна Ð´Ð»Ñ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов, дÑÑÐ³Ð°Ñ Ñ ÑекÑÑом опиÑÐ°Ð½Ð¸Ñ (Ñ Ð²ÐºÐ»ÑÑеннÑм ÑазбоÑом TeX-иÑ
команд). Ðожно иÑполÑзоваÑÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвенно маÑÑÐ¸Ð²Ñ ÑÑÑок, или накопление во внÑÑÑенние маÑÑÐ¸Ð²Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑÑнкÑии AddLegend() Ñ Ð¿Ð¾ÑледÑÑÑим оÑобÑажением. Ðоложение Ð»ÐµÐ³ÐµÐ½Ð´Ñ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ Ð°Ð²ÑомаÑиÑеÑки или вÑÑÑнÑÑ. ÐаÑамеÑÑÑ @var{font} и @var{size} задаÑÑ ÑÑÐ¸Ð»Ñ Ð¸ ÑÐ°Ð·Ð¼ÐµÑ ÑÑиÑÑа (@pxref{Font settings}). ÐаÑамеÑÑ @var{llen} Ð·Ð°Ð´Ð°ÐµÑ Ð¾ÑноÑиÑелÑнÑÑ ÑиÑÐ¸Ð½Ñ Ð¿ÑимеÑа линии. Ðли ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ пÑÑÑой, Ñо ÑооÑвеÑÑÑвÑÑÑий ÑекÑÑ Ð¿ÐµÑаÑаеÑÑÑ Ð±ÐµÐ· оÑÑÑÑпа. ÐÑли ÑÑÑока @var{font} ÑодеÑÐ¶Ð¸Ñ Ñимвол @samp{A}, Ñо кооÑдинаÑÑ Ð»ÐµÐ³ÐµÐ½Ð´Ñ ÑÑиÑаÑÑÑÑ Ð¾ÑноÑиÑелÑно каÑÑинки (а не ÑекÑÑего subplot). @sref{Legend sample}
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Legend (@code{int} where=@code{0x3}, @code{const char *}font=@code{"rL"}, @code{float} size=@code{-0.8}, @code{float} llen=@code{0.1})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_legend (@code{HMGL} gr, @code{int} where, @code{const char *}font, @code{float} size, @code{float} llen)
-РиÑÑÐµÑ Ð»ÐµÐ³ÐµÐ½Ð´Ñ Ð¸Ð· накпленнÑÑ
запиÑей ÑÑиÑÑом @var{font} ÑазмеÑом @var{size}. ÐаÑамеÑÑ @var{where} Ð·Ð°Ð´Ð°ÐµÑ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ легендÑ: @samp{0} -- в нижнем левом ÑглÑ, @samp{1} -- нижнем пÑавом ÑглÑ, @samp{2} -- веÑÑ
нем левом ÑглÑ, @samp{3} -- веÑÑ
нем пÑавом ÑÐ³Ð»Ñ (по ÑмолÑаниÑ).
+РиÑÑÐµÑ Ð»ÐµÐ³ÐµÐ½Ð´Ñ Ð¸Ð· накопленнÑÑ
запиÑей ÑÑиÑÑом @var{font} ÑазмеÑом @var{size}. ÐаÑамеÑÑ @var{where} Ð·Ð°Ð´Ð°ÐµÑ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ легендÑ: @samp{0} -- в нижнем левом ÑглÑ, @samp{1} -- нижнем пÑавом ÑглÑ, @samp{2} -- веÑÑ
нем левом ÑглÑ, @samp{3} -- веÑÑ
нем пÑавом ÑÐ³Ð»Ñ (по ÑмолÑаниÑ).
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++)} @code{void} Legend (@code{int} n, @code{wchar_t **}text, @code{char **}style, @code{int} where=@code{0x3}, @code{const char *}font=@code{"rL"}, @code{float} size=@code{-0.8}, @code{float} llen=@code{0.1})
@@ -1045,7 +1067,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Legend (@code{float} x, @code{float} y, @code{const char *}font=@code{"rL"}, @code{float} size=@code{-0.8}, @code{float} llen=@code{0.1})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_legend_xy (@code{HMGL} gr, @code{float} x, @code{float} y, @code{const char *}font, @code{float} size, @code{float} llen)
-РиÑÑÐµÑ Ð»ÐµÐ³ÐµÐ½Ð´Ñ Ð¸Ð· накпленнÑÑ
запиÑей ÑÑиÑÑом @var{font} ÑазмеÑом @var{size}. Ðоложение Ð»ÐµÐ³ÐµÐ½Ð´Ñ Ð·Ð°Ð´Ð°ÐµÑÑÑ Ð¿Ð°ÑамеÑÑами @var{x}, @var{y}, коÑоÑÑе полагаÑÑÑÑ Ð½Ð¾ÑмиÑованнÑми в диапазоне [0,1].
+РиÑÑÐµÑ Ð»ÐµÐ³ÐµÐ½Ð´Ñ Ð¸Ð· накопленнÑÑ
запиÑей ÑÑиÑÑом @var{font} ÑазмеÑом @var{size}. Ðоложение Ð»ÐµÐ³ÐµÐ½Ð´Ñ Ð·Ð°Ð´Ð°ÐµÑÑÑ Ð¿Ð°ÑамеÑÑами @var{x}, @var{y}, коÑоÑÑе полагаÑÑÑÑ Ð½Ð¾ÑмиÑованнÑми в диапазоне [0,1].
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++)} @code{void} Legend (@code{int} n, @code{wchar_t **}text, @code{char **}style, @code{float} x, @code{float} y, @code{const char *}font=@code{"rL"}, @code{float} size=@code{-0.8}, @code{float} llen=@code{0.1})
@@ -1069,11 +1091,16 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
ÐклÑÑаеÑ/вÑклÑÑÐ°ÐµÑ ÑиÑование пÑÑмоÑголÑника вокÑÑг легендÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ (=@code{true}) пÑÑмоÑголÑник ÑиÑÑеÑÑÑ.
@end deftypefn
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} SetLegendMarks (@code{int} num)
+ at deftypefnx {C function} @code{void} mgl_set_legend_marks (@code{HMGL} gr, @code{int} num)
+ÐÐ°Ð´Ð°ÐµÑ ÑиÑло маÑкеÑов в легенде. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ÑполÑзÑеÑÑÑ 1 маÑкеÑ.
+ at end deftypefn
+
@c ##################################################################
@node 1D plotting, 2D plotting, Legend, MathGL core
@section 1D гÑаÑики
-ÐÑи ÑÑнкÑии ÑÑÑоÑÑ Ð³ÑаÑики Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð¼ÐµÑнÑÑ
(1D) маÑÑивов. ÐдномеÑнÑми ÑÑиÑаÑÑÑÑ Ð¼Ð°ÑÑивÑ, завиÑÑÑие ÑолÑко Ð¾Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ паÑамеÑÑа (индекÑа) подобно кÑивой в паÑамеÑÑиÑеÑкой ÑоÑме @{x(i),y(i),z(i)@}, i=1...n. ÐÑÑÑ 5 оÑновнÑÑ
Ñипов 1D гÑаÑиков: Ð»Ð¸Ð½Ð¸Ñ (Plot), Ð»Ð¸Ð½Ð¸Ñ Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÐµÐ¼ (Area), ÑÑÑпенÑки (Step), пÑÑмоÑголÑники (Bars, Barh) и веÑÑикалÑнÑе линии (Stem). ÐÑе ÑÑи ÑÐ¸Ð¿Ñ Ð³ÑаÑиков имеÑÑ Ð¿Ð¾Ñ
ожий инÑеÑÑейÑ. ÐÑÑÑ Ð²ÐµÑÑии Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² пÑоÑÑÑанÑÑве и на плоÑкоÑÑи. РпоÑледнем ÑлÑÑае имееÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑолÑко одного маÑÑива. СÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов ÑказÑваеÑÑÑ ÑÑÑоковой пеÑеменной. ÐÑли она Ñавна "", Ñо иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). ÐÑоме Ñого, еÑÑÑ ÐµÑе неÑколÑко Ñипов гÑаÑиков Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð¼ÐµÑнÑÑ
маÑÑивов, имеÑÑиÑ
дÑÑгой инÑеÑÑÐµÐ¹Ñ Ð¸ вид: повеÑÑ
ноÑÑÑ Ð²ÑаÑÐµÐ½Ð¸Ñ ÐºÑивой (Torus), диагÑамма (Chart), ÑÐ°Ð·Ð¼ÐµÑ Ð¾Ñибки (Error), маÑкеÑÑ Ð¿ÐµÑеменного ÑазмеÑа (Mark), ÑÑÑбками (Tube) и Ñ.д. @xref{Line styles}.
+ÐÑи ÑÑнкÑии ÑÑÑоÑÑ Ð³ÑаÑики Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð¼ÐµÑнÑÑ
(1D) маÑÑивов. ÐдномеÑнÑми ÑÑиÑаÑÑÑÑ Ð¼Ð°ÑÑивÑ, завиÑÑÑие ÑолÑко Ð¾Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ паÑамеÑÑа (индекÑа) подобно кÑивой в паÑамеÑÑиÑеÑкой ÑоÑме @{x(i),y(i),z(i)@}, i=1...n. ÐÑÑÑ 5 оÑновнÑÑ
Ñипов 1D гÑаÑиков: Ð»Ð¸Ð½Ð¸Ñ (Plot), Ð»Ð¸Ð½Ð¸Ñ Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÐµÐ¼ (Area), ÑÑÑпенÑки (Step), пÑÑмоÑголÑники (Bars, Barh) и веÑÑикалÑнÑе линии (Stem). ÐÑе ÑÑи ÑÐ¸Ð¿Ñ Ð³ÑаÑиков имеÑÑ Ð¿Ð¾Ñ
ожий инÑеÑÑейÑ. ÐÑÑÑ Ð²ÐµÑÑии Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² пÑоÑÑÑанÑÑве и на плоÑкоÑÑи. РпоÑледнем ÑлÑÑае имееÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑолÑко одного маÑÑива. СÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов ÑказÑваеÑÑÑ ÑÑÑоковой пеÑеменной. ÐÑли она Ñавна "", Ñо иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). ÐÑоме Ñого, еÑÑÑ ÐµÑе неÑколÑко Ñипов гÑаÑиков Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð¼ÐµÑнÑÑ
маÑÑивов, имеÑÑиÑ
дÑÑгой инÑеÑÑÐµÐ¹Ñ Ð¸ вид: повеÑÑ
ноÑÑÑ Ð²ÑаÑÐµÐ½Ð¸Ñ ÐºÑивой (Torus), диагÑамма (Chart), ÑÐ°Ð·Ð¼ÐµÑ Ð¾Ñибки (Error), маÑкеÑÑ Ð¿ÐµÑеменного ÑазмеÑа (Mark), ÑÑÑбками (Tube) и Ñ.д. @xref{Line styles}. @sref{1D plot sample}
@menu
* Plot::
@@ -1099,7 +1126,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@subsection Plot
@cindex Plot
-ФÑнкÑии ÑиÑÑÑÑ Ð»Ð¾Ð¼Ð°Ð½Ð½ÑÑ Ð»Ð¸Ð½Ð¸Ñ Ð¿Ð¾ ÑоÑкам. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @var{x.nx=y.nx=z.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) ÑиÑÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). См. Ñакже @ref{Area}, @ref{Step}, @ref{Stem}, @ref{Tube}, @ref{Mark}, @ref{Error}, @ref{Belt}, @ref{Tens}. @sref{Plot sample}
+ФÑнкÑии ÑиÑÑÑÑ Ð»Ð¾Ð¼Ð°Ð½Ð½ÑÑ Ð»Ð¸Ð½Ð¸Ñ Ð¿Ð¾ ÑоÑкам. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @code{x.nx=y.nx=z.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) ÑиÑÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). См. Ñакже @ref{Area}, @ref{Step}, @ref{Stem}, @ref{Tube}, @ref{Mark}, @ref{Error}, @ref{Belt}, @ref{Tens}. @sref{Plot sample}
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Plot (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_plot_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}pen)
@@ -1131,7 +1158,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@subsection Tens
@cindex Tens
-ФÑнкÑии ÑиÑÑÑÑ Ð»Ð¾Ð¼Ð°Ð½Ð½ÑÑ Ð»Ð¸Ð½Ð¸Ñ Ð¿Ð¾ ÑоÑкам Ñ ÑвеÑом, опÑеделÑемÑм маÑÑивом @var{c} (Ñипа гÑаÑика наÑÑжений). ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @var{x.nx=y.nx=z.nx=c.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
ÐµÐ¼Ñ (@pxref{Color scheme}) и ÑÑÐ¸Ð»Ñ Ð¸/или ÑолÑÐ¸Ð½Ñ Ð»Ð¸Ð½Ð¸Ð¸ (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑей ÑвеÑовой ÑÑ
емой. См. Ñакже @ref{Plot}, @ref{Mesh}, @ref{Fall}. @sref{Tens sample}
+ФÑнкÑии ÑиÑÑÑÑ Ð»Ð¾Ð¼Ð°Ð½Ð½ÑÑ Ð»Ð¸Ð½Ð¸Ñ Ð¿Ð¾ ÑоÑкам Ñ ÑвеÑом, опÑеделÑемÑм маÑÑивом @var{c} (Ñипа гÑаÑика наÑÑжений). ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @code{x.nx=y.nx=z.nx=c.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
ÐµÐ¼Ñ (@pxref{Color scheme}) и ÑÑÐ¸Ð»Ñ Ð¸/или ÑолÑÐ¸Ð½Ñ Ð»Ð¸Ð½Ð¸Ð¸ (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑей ÑвеÑовой ÑÑ
емой. См. Ñакже @ref{Plot}, @ref{Mesh}, @ref{Fall}. @sref{Tens sample}
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Tens (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}c, @code{const char *}pen=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_tens_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} c, @code{const char *}pen)
@@ -1153,17 +1180,16 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@subsection Area
@cindex Area
-ФÑнкÑии ÑиÑÑÑÑ Ð»Ð¾Ð¼Ð°Ð½Ð½ÑÑ Ð»Ð¸Ð½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñ ÑоÑками и закÑаÑÐ¸Ð²Ð°ÐµÑ ÐµÐµ вниз до плоÑкоÑÑи оÑей кооÑдинаÑ. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @var{x.nx=y.nx=z.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). См. Ñакже @ref{Plot}, @ref{Bars}, @ref{Stem}. @sref{Area sample}
+ФÑнкÑии ÑиÑÑÑÑ Ð»Ð¾Ð¼Ð°Ð½Ð½ÑÑ Ð»Ð¸Ð½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñ ÑоÑками и закÑаÑÐ¸Ð²Ð°ÐµÑ ÐµÐµ вниз до плоÑкоÑÑи оÑей кооÑдинаÑ. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @code{x.nx=y.nx=z.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). Также можно иÑполÑзоваÑÑ Ð³ÑадиенÑное закÑаÑивание еÑли ÑиÑло ÑказаннÑÑ
ÑвеÑов Ñавно ÑÐ´Ð²Ð¾ÐµÐ½Ð½Ð¾Ð¼Ñ ÑиÑÐ»Ñ ÐºÑивÑÑ
Ð´Ð»Ñ Ð¿Ð¾ÑÑÑоениÑ. ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ Ñимвол @samp{a}, Ñо линии ÑиÑÑÑÑÑÑ Ð¾Ð´Ð½Ð° повеÑÑ
дÑÑгой (Ñ ÑÑммиÑованием) -- Ñого же ÑÑÑекÑа можно доÑÑиÑÑ Ð²Ñзовом @code{y.CumSum("y");} пеÑед поÑÑÑоением гÑаÑика. См. Ñакже @ref{Plot}, @ref{Bars}, @ref{Stem}. @sref{Area sample}
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Area (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_area_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}pen)
РиÑÑÐµÑ Ð² пÑоÑÑÑанÑÑве Ð»Ð¸Ð½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñ ÑоÑками @{@var{x}[i], @var{y}[i], @var{z}[i]@} и закÑаÑÐ¸Ð²Ð°ÐµÑ ÐµÐµ вниз до плоÑкоÑÑи @var{z} = Org.z.
@end deftypefn
- at deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Area (@code{const mglData &}x, @code{const mglData &}y, @code{const char *}pen=@code{""}, @code{bool} sum=@code{false})
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Area (@code{const mglData &}x, @code{const mglData &}y, @code{const char *}pen=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_area_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const char *}pen)
- at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_area_xys (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const char *}pen)
-РиÑÑÐµÑ Ð»Ð¸Ð½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñ ÑоÑками @{@var{x}[i], @var{y}[i]@} в плоÑкоÑÑи @var{z}=@var{zVal} (по ÑмолÑÐ°Ð½Ð¸Ñ Ð² плоÑкоÑÑи @var{z}=@var{Min.z}) и закÑаÑÐ¸Ð²Ð°ÐµÑ ÐµÐµ до пÑÑмой @var{y} = Org.y. ÐаÑамеÑÑ @var{sum} Ð·Ð°Ð´Ð°ÐµÑ Ñежим ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð»Ð¸Ð½Ð¸Ð¹ одна повеÑÑ
дÑÑгой (Ñ ÑÑмиÑованием). ÐамеÑÑ, ÑÑо Ñого же ÑÑÑекÑа можно доÑÑиÑÑ Ð²Ñзовом @code{y.CumSum("y");} пеÑед поÑÑÑоением гÑаÑика.
+РиÑÑÐµÑ Ð»Ð¸Ð½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñ ÑоÑками @{@var{x}[i], @var{y}[i]@} в плоÑкоÑÑи @var{z}=@var{zVal} (по ÑмолÑÐ°Ð½Ð¸Ñ Ð² плоÑкоÑÑи @var{z}=@var{Min.z}) и закÑаÑÐ¸Ð²Ð°ÐµÑ ÐµÐµ до пÑÑмой @var{y} = Org.y.
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Area (@code{const mglData &}y, @code{const char *}pen=@code{""}, @code{bool} sum=@code{false})
@@ -1177,11 +1203,11 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@subsection Region
@cindex Region
-ФÑнÑкÑии закÑаÑиваÑÑ Ð¾Ð±Ð»Ð°ÑÑÑ Ð¼ÐµÐ¶Ð´Ñ 2 кÑивÑми. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @var{x.nx=y1.nx=y2.nx} и ÑазмеÑÑ Ð¼Ð°ÑÑивов @var{y1}, @var{y2} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ñакже одинаковÑ. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑекÑÑий ÑÐ²ÐµÑ Ð¸Ð· палиÑÑÑ (@pxref{Palette and colors}). См. Ñакже @ref{Area}, @ref{Bars}, @ref{Stem}. @sref{Region sample}
+ФÑнкÑии закÑаÑиваÑÑ Ð¾Ð±Ð»Ð°ÑÑÑ Ð¼ÐµÐ¶Ð´Ñ 2 кÑивÑми. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @code{x.nx=y1.nx=y2.nx} и ÑазмеÑÑ Ð¼Ð°ÑÑивов @var{y1}, @var{y2} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ñакже одинаковÑ. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑекÑÑий ÑÐ²ÐµÑ Ð¸Ð· палиÑÑÑ (@pxref{Palette and colors}). Также можно иÑполÑзоваÑÑ Ð³ÑадиенÑное закÑаÑивание еÑли ÑиÑло ÑказаннÑÑ
ÑвеÑов Ñавно ÑÐ´Ð²Ð¾ÐµÐ½Ð½Ð¾Ð¼Ñ ÑиÑÐ»Ñ ÐºÑивÑÑ
Ð´Ð»Ñ Ð¿Ð¾ÑÑÑоениÑ. См. Ñакже @ref{Area}, @ref{Bars}, @ref{Stem}. @sref{Region sample}
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Region (@code{const mglData &}x, @code{const mglData &}y1, @code{const mglData &}y2, @code{const char *}pen=@code{""}, @code{float} zVal=@code{NAN}, @code{bool} inside=@code{true})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_region_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y1, @code{const HMDT} y2, @code{const char *}pen, @code{int} inside)
-ÐакÑаÑÐ¸Ð²Ð°ÐµÑ Ð¾Ð±Ð»Ð°ÑÑÑ Ð¼ÐµÐ¶Ð´Ñ ÐºÑивÑми @{@var{x}[i], @var{y1}[i]@} и @{@var{x}[i], @var{y2}[i]@} пÑи z=@var{zVal}.
+ÐакÑаÑÐ¸Ð²Ð°ÐµÑ Ð¾Ð±Ð»Ð°ÑÑÑ Ð¼ÐµÐ¶Ð´Ñ ÐºÑивÑми @{@var{x}[i], @var{y1}[i]@} и @{@var{x}[i], @var{y2}[i]@} пÑи z=@var{zVal}. ÐÑи @code{inside=off} закÑаÑиваеÑÑÑ ÑолÑко облаÑÑÑ y1<y<y2, в пÑоÑивном ÑлÑÑае Ñакже бÑÐ´ÐµÑ Ð·Ð°ÐºÑаÑена облаÑÑÑ y2<y<y1.
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Region (@code{const mglData &}y1, @code{const mglData &}y2, @code{const char *}pen=@code{""}, @code{float} zVal=@code{NAN}, @code{bool} inside=@code{true})
@@ -1194,7 +1220,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@subsection Stem
@cindex Stem
-ФÑнкÑии ÑиÑÑÑÑ Ð²ÐµÑÑикалÑнÑе линии из ÑоÑек до плоÑкоÑÑи оÑей кооÑдинаÑ. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @var{x.nx=y.nx=z.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). См. Ñакже @ref{Area}, @ref{Bars}, @ref{Plot}. @sref{Stem sample}
+ФÑнкÑии ÑиÑÑÑÑ Ð²ÐµÑÑикалÑнÑе линии из ÑоÑек до плоÑкоÑÑи оÑей кооÑдинаÑ. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @code{x.nx=y.nx=z.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). См. Ñакже @ref{Area}, @ref{Bars}, @ref{Plot}, @ref{Mark}. @sref{Stem sample}
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Stem (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_stem_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}pen)
@@ -1216,7 +1242,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@subsection Bars
@cindex Bars
-ФÑнкÑии ÑиÑÑÑÑ Ð²ÐµÑÑикалÑнÑе полоÑÑ (пÑÑмоÑголÑники) из ÑоÑек до плоÑкоÑÑи оÑей кооÑдинаÑ. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @var{x.nx=y.nx=z.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). См. Ñакже @ref{Barh}, @ref{Area}, @ref{Stem}, @ref{Chart}, @ref{Default sizes}. @sref{Bars sample}
+ФÑнкÑии ÑиÑÑÑÑ Ð²ÐµÑÑикалÑнÑе полоÑÑ (пÑÑмоÑголÑники) из ÑоÑек до плоÑкоÑÑи оÑей кооÑдинаÑ. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @code{x.nx=y.nx=z.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ Ñимвол @samp{a}, Ñо линии ÑиÑÑÑÑÑÑ Ð¾Ð´Ð½Ð° повеÑÑ
дÑÑгой. ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ Ñимвол @samp{f}, Ñо ÑиÑÑеÑÑÑ Ð³ÑаÑик Ñипа waterfall Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÐºÑмÑлÑÑивного ÑÑÑекÑа поÑледоваÑелÑноÑÑи положиÑелÑнÑÑ
и оÑÑиÑаÑелÑнÑÑ
знаÑений. Ðожно иÑполÑзоваÑÑ ÑазнÑе ÑвеÑа Ð´Ð»Ñ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑнÑÑ
и оÑÑиÑаÑелÑнÑÑ
знаÑений еÑли ÑиÑло ÑказаннÑÑ
ÑвеÑов Ñавно ÑÐ´Ð²Ð¾ÐµÐ½Ð½Ð¾Ð¼Ñ ÑиÑÐ»Ñ ÐºÑивÑÑ
Ð´Ð»Ñ Ð¿Ð¾ÑÑÑоениÑ. См. Ñакже @ref{Barh}, @ref{Area}, @ref{Stem}, @ref{Chart}, @ref{Default sizes}. @sref{Bars sample}
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Bars (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_bars_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}pen)
@@ -1238,7 +1264,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@subsection Barh
@cindex Barh
-ФÑнкÑии ÑиÑÑÑÑ Ð³Ð¾ÑизонÑалÑнÑе полоÑÑ (пÑÑмоÑголÑники) из ÑоÑек до плоÑкоÑÑи оÑей кооÑдинаÑ. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @var{x.nx=y.nx=z.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). См. Ñакже @ref{Barh}, @ref{Default sizes}. @sref{Barh sample}
+ФÑнкÑии ÑиÑÑÑÑ Ð³Ð¾ÑизонÑалÑнÑе полоÑÑ (пÑÑмоÑголÑники) из ÑоÑек до плоÑкоÑÑи оÑей кооÑдинаÑ. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @code{x.nx=y.nx=z.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ Ñимвол @samp{a}, Ñо линии ÑиÑÑÑÑÑÑ Ð¾Ð´Ð½Ð° повеÑÑ
дÑÑгой. ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ Ñимвол @samp{f}, Ñо ÑиÑÑеÑÑÑ Ð³ÑаÑик Ñипа waterfall Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÐºÑмÑлÑÑивного ÑÑÑекÑа поÑледоваÑелÑноÑÑи положиÑелÑнÑÑ
и оÑÑиÑаÑелÑнÑÑ
знаÑений. Ðожно иÑполÑзоваÑÑ ÑазнÑе ÑвеÑа Ð´Ð»Ñ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑнÑÑ
и оÑÑиÑаÑелÑнÑÑ
знаÑений еÑли ÑиÑло ÑказаннÑÑ
ÑвеÑов Ñавно ÑÐ´Ð²Ð¾ÐµÐ½Ð½Ð¾Ð¼Ñ ÑиÑÐ»Ñ ÐºÑивÑÑ
Ð´Ð»Ñ Ð¿Ð¾ÑÑÑоениÑ. См. Ñакже @ref{Barh}, @ref{Default sizes}. @sref{Barh sample}
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Barh (@code{const mglData &}y, @code{const mglData &}v, @code{const char *}pen=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_barh_xy (@code{HMGL} gr, @code{const HMDT} y, @code{const HMDT} v, @code{const char *}pen)
@@ -1266,7 +1292,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@subsection Step
@cindex Step
-ФÑнкÑии ÑиÑÑÑÑ ÑÑÑпенÑки Ð´Ð»Ñ ÑоÑек маÑÑива. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @var{x.nx=y.nx=z.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). См. Ñакже @ref{Plot}, @ref{Stem}, @ref{Tile}, @ref{Boxs}. @sref{Step sample}
+ФÑнкÑии ÑиÑÑÑÑ ÑÑÑпенÑки Ð´Ð»Ñ ÑоÑек маÑÑива. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @code{x.nx=y.nx=z.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). См. Ñакже @ref{Plot}, @ref{Stem}, @ref{Tile}, @ref{Boxs}. @sref{Step sample}
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Step (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}pen=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_step_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}pen)
@@ -1304,7 +1330,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@subsection Tube
@cindex Tube
-ФÑнкÑии ÑиÑÑÑÑ ÑÑÑÐ±Ñ ÑадиÑÑа @var{r}[i] Ð²Ð´Ð¾Ð»Ñ ÐºÑивой Ð¼ÐµÐ¶Ð´Ñ ÑоÑками @{@var{x}[i], @var{y}[i], @var{z}[i]@}. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @var{x.nx=y.nx=z.nx=r.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). См. Ñакже @ref{Plot}. @sref{Tube sample}
+ФÑнкÑии ÑиÑÑÑÑ ÑÑÑÐ±Ñ ÑадиÑÑа @var{r}[i] Ð²Ð´Ð¾Ð»Ñ ÐºÑивой Ð¼ÐµÐ¶Ð´Ñ ÑоÑками @{@var{x}[i], @var{y}[i], @var{z}[i]@}. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @code{x.nx=y.nx=z.nx=r.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). См. Ñакже @ref{Plot}. @sref{Tube sample}
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Tube (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}r, @code{const char *}pen=@code{""})
@deftypefnx {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Tube (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{float} r, @code{const char *}pen=@code{""})
@@ -1332,7 +1358,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@subsection Mark
@cindex Mark
-ФÑнкÑии ÑиÑÑÑÑ Ð¼Ð°ÑкеÑÑ ÑазмеÑом @var{r}*@var{MarkSize} (@pxref{Default sizes}) в ÑоÑкаÑ
@{@var{x}[i], @var{y}[i], @var{z}[i]@}. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @var{x.nx=y.nx=z.nx=r.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). ÐÐ»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð°ÑкеÑов одинакового ÑазмеÑа можно иÑполÑзоваÑÑ ÑÑнкÑÐ¸Ñ @ref{Plot} Ñ Ð½ÐµÐ²Ð¸Ð´Ð¸Ð¼Ð¾Ð¹ линией (Ñо ÑÑилем ÑодеÑжаÑим @samp{ }). См. Ñакже @ref{Plot}, @ref{TextMark}, @ref{Stem}, @ref{Error}. @sref{Mark sample}
+ФÑнкÑии ÑиÑÑÑÑ Ð¼Ð°ÑкеÑÑ ÑазмеÑом @var{r}*@var{MarkSize} (@pxref{Default sizes}) в ÑоÑкаÑ
@{@var{x}[i], @var{y}[i], @var{z}[i]@}. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @code{x.nx=y.nx=z.nx=r.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). ÐÐ»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð°ÑкеÑов одинакового ÑазмеÑа можно иÑполÑзоваÑÑ ÑÑнкÑÐ¸Ñ @ref{Plot} Ñ Ð½ÐµÐ²Ð¸Ð´Ð¸Ð¼Ð¾Ð¹ линией (Ñо ÑÑилем ÑодеÑжаÑим @samp{ }). См. Ñакже @ref{Plot}, @ref{TextMark}, @ref{Stem}, @ref{Error}. @sref{Mark sample}
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Mark (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}r, @code{const char *}pen=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_mark_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} r, @code{const char *}pen)
@@ -1354,7 +1380,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@subsection TextMark
@cindex TextMark
-ФÑнкÑии ÑиÑÑÑÑ ÑекÑÑовÑе маÑкеÑÑ Ð¸Ð· ÑÑÑоки @var{text} Ñ ÑазмеÑом пÑопоÑÑионалÑнÑм @var{r}*@var{MarkSize} (@pxref{Default sizes}) в ÑоÑкаÑ
@{@var{x}[i], @var{y}[i], @var{z}[i]@}. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @var{x.nx=y.nx=z.nx=r.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). См. Ñакже @ref{Plot}, @ref{Mark}, @ref{Stem}. @sref{TextMark sample}
+ФÑнкÑии ÑиÑÑÑÑ ÑекÑÑ @var{text} как маÑÐºÐµÑ Ñ ÑазмеÑом пÑопоÑÑионалÑнÑм @var{r}*@var{MarkSize} (@pxref{Default sizes}) в ÑоÑкаÑ
@{@var{x}[i], @var{y}[i], @var{z}[i]@}. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @code{x.nx=y.nx=z.nx=r.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). См. Ñакже @ref{Plot}, @ref{Mark}, @ref{Stem}. @sref{TextMark sample}
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} TextMark (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}r, @code{const char *}text, @code{const char *}fnt=@code{""})
@deftypefnx {ÐеÑод клаÑÑа @code{mglGraph} (C++)} @code{void} TextMark (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}r, @code{const wchar_t *}text, @code{const char *}fnt=@code{""})
@@ -1389,7 +1415,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@subsection Error
@cindex Error
-ФÑнкÑии ÑиÑÑÑÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¾Ñибки в ÑоÑкаÑ
@{@var{x}[i], @var{y}[i]@} на плоÑкоÑÑи @var{z} = @var{zVal} (по ÑмолÑÐ°Ð½Ð¸Ñ @var{z}=@var{Min.z}). Такой гÑаÑик полезен Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¾Ñибки ÑкÑпеÑименÑа, вÑÑиÑлений и пÑ. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @var{x.nx=y.nx=z.nx=r.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). См. Ñакже @ref{Plot}. @sref{Error sample}
+ФÑнкÑии ÑиÑÑÑÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¾Ñибки в ÑоÑкаÑ
@{@var{x}[i], @var{y}[i]@} на плоÑкоÑÑи @var{z} = @var{zVal} (по ÑмолÑÐ°Ð½Ð¸Ñ @var{z}=@var{Min.z}). Такой гÑаÑик полезен Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¾Ñибки ÑкÑпеÑименÑа, вÑÑиÑлений и пÑ. ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @code{x.nx=y.nx=z.nx=r.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). См. Ñакже @ref{Plot}. @sref{Error sample}
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Error (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}ex, @code{const mglData &}ey, @code{const char *}pen=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_error_exy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} ex, @code{const HMDT} ey, @code{const char *}pen)
@@ -1411,7 +1437,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@subsection BoxPlot
@cindex BoxPlot
-ФÑнкÑии ÑиÑÑÑÑ boxplot (назÑваемÑй Ñакже как box-and-whisker diagram или как "ÑÑик Ñ ÑÑами") в ÑоÑкаÑ
@var{x}[i] на плоÑкоÑÑи @var{z} = @var{zVal} (по ÑмолÑÐ°Ð½Ð¸Ñ @var{z}=@var{Min.z}). ÐÑо гÑаÑик, компакÑно изобÑажаÑÑий ÑаÑпÑеделение веÑоÑÑноÑÑей @var{a}[i,j] (минимÑм, нижний кваÑÑÐ¸Ð»Ñ (Q1), медиана (Q2), веÑÑ
ний кваÑÑÐ¸Ð»Ñ (Q3) и макÑимÑм) Ð²Ð´Ð¾Ð»Ñ Ð²ÑоÑого (j-го) напÑавлениÑ. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @var{x.nx=a.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¹ (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). См. Ñакже @ref{Plot}, @ref{Error}, @ref{Bars}, @ref{Default sizes}. @sref{BoxPlot sample}
+ФÑнкÑии ÑиÑÑÑÑ boxplot (назÑваемÑй Ñакже как box-and-whisker diagram или как "ÑÑик Ñ ÑÑами") в ÑоÑкаÑ
@var{x}[i] на плоÑкоÑÑи @var{z} = @var{zVal} (по ÑмолÑÐ°Ð½Ð¸Ñ @var{z}=@var{Min.z}). ÐÑо гÑаÑик, компакÑно изобÑажаÑÑий ÑаÑпÑеделение веÑоÑÑноÑÑей @var{a}[i,j] (минимÑм, нижний кваÑÑÐ¸Ð»Ñ (Q1), медиана (Q2), веÑÑ
ний кваÑÑÐ¸Ð»Ñ (Q3) и макÑимÑм) Ð²Ð´Ð¾Ð»Ñ Ð²ÑоÑого (j-го) напÑавлениÑ. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @code{x.nx=a.nx}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¹ (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=""}) иÑполÑзÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ (@pxref{Palette and colors}). См. Ñакже @ref{Plot}, @ref{Error}, @ref{Bars}, @ref{Default sizes}. @sref{BoxPlot sample}
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} BoxPlot (@code{const mglData &}x, @code{const mglData &}a, @code{const char *}pen=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_boxplot_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} a, @code{const char *}pen)
@@ -1427,7 +1453,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@node 2D plotting, 3D plotting, 1D plotting, MathGL core
@section 2D гÑаÑики
-ÐÑи ÑÑнкÑии ÑÑÑоÑÑ Ð³ÑаÑики Ð´Ð»Ñ Ð´Ð²ÑмеÑнÑÑ
(2D) маÑÑивов. ÐвÑмеÑнÑми ÑÑиÑаÑÑÑÑ Ð¼Ð°ÑÑивÑ, завиÑÑÑие ÑолÑко Ð¾Ñ Ð´Ð²ÑÑ
паÑамеÑÑов (индекÑов) подобно маÑÑиÑе @math{f(x_i,y_j), i=1...n, j=1...m}. ÐÑÑÑ Ð½ÐµÑколÑко оÑновнÑÑ
Ñипов 2D гÑаÑиков: ÑплоÑÐ½Ð°Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ (Surf), ÑеÑÑаÑÐ°Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ (Mesh), повеÑÑ
ноÑÑÑ Ð¸Ð· ÑÑиков (Boxs), повеÑÑ
ноÑÑÑ Ð¸Ð· плиÑок (Tile), водопад (Fall), ленÑоÑки (Belt), гÑаÑик плоÑноÑÑи (Dens), линии ÑÑÐ¾Ð²Ð½Ñ (Cont), линии ÑÑÐ¾Ð²Ð½Ñ Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÐµÐ¼ (ContF) и ÑезÑлÑÑÐ°Ñ Ð¸Ñ
вÑаÑÐµÐ½Ð¸Ñ (Axial). Ð ÑÑнкÑиÑÑ
Cont(), ContF() и Axial() знаÑÐµÐ½Ð¸Ñ ÑÑовней можно задаваÑÑ Ð°Ð²ÑомаÑиÑеÑки и вÑÑÑнÑÑ. Ðожно Ñакже наÑиÑоваÑÑ ÑеÑÐºÑ (Grid) по маÑÑÐ¸Ð²Ñ Ð´Ð°Ð½Ð½ÑÑ
Ð´Ð»Ñ ÑлÑÑÑÐµÐ½Ð¸Ñ Ð²Ð¸Ð´Ð° гÑаÑика плоÑноÑÑи или линий ÑÑовнÑ. ÐаждÑй Ñип гÑаÑика Ð¸Ð¼ÐµÐµÑ Ð¿Ð¾Ñ
ожий инÑеÑÑейÑ. ÐÑÑÑ Ð²ÐµÑÑÐ¸Ñ Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ маÑÑива Ñ Ð°Ð²ÑомаÑиÑеÑкими кооÑдинаÑами и веÑÑÐ¸Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи. ÐаÑамеÑÑÑ ÑвеÑовой ÑÑ
ÐµÐ¼Ñ Ð·Ð°Ð´Ð°ÑÑÑÑ ÑÑÑокой @xref{Color scheme}.
+ÐÑи ÑÑнкÑии ÑÑÑоÑÑ Ð³ÑаÑики Ð´Ð»Ñ Ð´Ð²ÑмеÑнÑÑ
(2D) маÑÑивов. ÐвÑмеÑнÑми ÑÑиÑаÑÑÑÑ Ð¼Ð°ÑÑивÑ, завиÑÑÑие ÑолÑко Ð¾Ñ Ð´Ð²ÑÑ
паÑамеÑÑов (индекÑов) подобно маÑÑиÑе @math{f(x_i,y_j), i=1...n, j=1...m}. ÐÑÑÑ Ð½ÐµÑколÑко оÑновнÑÑ
Ñипов 2D гÑаÑиков: ÑплоÑÐ½Ð°Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ (Surf), ÑеÑÑаÑÐ°Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ (Mesh), повеÑÑ
ноÑÑÑ Ð¸Ð· ÑÑиков (Boxs), повеÑÑ
ноÑÑÑ Ð¸Ð· плиÑок (Tile), водопад (Fall), ленÑоÑки (Belt), гÑаÑик плоÑноÑÑи (Dens), линии ÑÑÐ¾Ð²Ð½Ñ (Cont), линии ÑÑÐ¾Ð²Ð½Ñ Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÐµÐ¼ (ContF) и ÑезÑлÑÑÐ°Ñ Ð¸Ñ
вÑаÑÐµÐ½Ð¸Ñ (Axial). Ð ÑÑнкÑиÑÑ
Cont(), ContF() и Axial() знаÑÐµÐ½Ð¸Ñ ÑÑовней можно задаваÑÑ Ð°Ð²ÑомаÑиÑеÑки и вÑÑÑнÑÑ. Ðожно Ñакже наÑиÑоваÑÑ ÑеÑÐºÑ (Grid) по маÑÑÐ¸Ð²Ñ Ð´Ð°Ð½Ð½ÑÑ
Ð´Ð»Ñ ÑлÑÑÑÐµÐ½Ð¸Ñ Ð²Ð¸Ð´Ð° гÑаÑика плоÑноÑÑи или линий ÑÑовнÑ. ÐаждÑй Ñип гÑаÑика Ð¸Ð¼ÐµÐµÑ Ð¿Ð¾Ñ
ожий инÑеÑÑейÑ. ÐÑÑÑ Ð²ÐµÑÑÐ¸Ñ Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ маÑÑива Ñ Ð°Ð²ÑомаÑиÑеÑкими кооÑдинаÑами и веÑÑÐ¸Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи. ÐаÑамеÑÑÑ ÑвеÑовой ÑÑ
ÐµÐ¼Ñ Ð·Ð°Ð´Ð°ÑÑÑÑ ÑÑÑокой @xref{Color scheme}. @sref{2D plot sample}
@menu
* Mesh::
@@ -1441,6 +1467,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
* ContF::
* ContD::
* Axial::
+* Grad::
* Grid::
@end menu
@@ -1451,7 +1478,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Mesh (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_mesh_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-РиÑÑÐµÑ ÑеÑÑаÑÑÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ, заданнÑÑ Ð¿Ð°ÑамеÑÑиÑеÑки @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @var{x.nx=z.nx && y.nx=z.ny} или @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Surf}, @ref{Fall}, NeshNum (@pxref{Other settings}), @ref{Cont}, @ref{Tens}. @sref{Mesh sample}
+РиÑÑÐµÑ ÑеÑÑаÑÑÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ, заданнÑÑ Ð¿Ð°ÑамеÑÑиÑеÑки @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @code{x.nx=z.nx && y.nx=z.ny} или @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Surf}, @ref{Fall}, MeshNum (@pxref{Other settings}), @ref{Cont}, @ref{Tens}. @sref{Mesh sample}
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Mesh (@code{const mglData &}z, @code{const char *}sch=@code{""})
@@ -1466,7 +1493,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Fall (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_fall_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-РиÑÑÐµÑ Ð²Ð¾Ð´Ð¾Ð¿Ð°Ð´ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. ÐÑаÑик Ñдобен Ð´Ð»Ñ Ð¿Ð¾ÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð½ÐµÑколÑкиÑ
кÑивÑÑ
, ÑдвинÑÑÑÑ
вглÑÐ±Ñ Ð´ÑÑг оÑноÑиÑелÑно дÑÑга. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{x}, Ñо линии ÑиÑÑÑÑÑÑ Ð²Ð´Ð¾Ð»Ñ x-оÑи (по ÑмолÑÐ°Ð½Ð¸Ñ Ð»Ð¸Ð½Ð¸Ð¸ ÑиÑÑÑÑÑÑ Ð²Ð´Ð¾Ð»Ñ y-оÑи). ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @var{x.nx=z.nx && y.nx=z.ny} или @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Belt}, @ref{Mesh}, @ref{Tens}, NeshNum (@pxref{Other settings}). @sref{Fall sample}
+РиÑÑÐµÑ Ð²Ð¾Ð´Ð¾Ð¿Ð°Ð´ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. ÐÑаÑик Ñдобен Ð´Ð»Ñ Ð¿Ð¾ÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð½ÐµÑколÑкиÑ
кÑивÑÑ
, ÑдвинÑÑÑÑ
вглÑÐ±Ñ Ð´ÑÑг оÑноÑиÑелÑно дÑÑга. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{x}, Ñо линии ÑиÑÑÑÑÑÑ Ð²Ð´Ð¾Ð»Ñ x-оÑи (по ÑмолÑÐ°Ð½Ð¸Ñ Ð»Ð¸Ð½Ð¸Ð¸ ÑиÑÑÑÑÑÑ Ð²Ð´Ð¾Ð»Ñ y-оÑи). ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @code{x.nx=z.nx && y.nx=z.ny} или @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Belt}, @ref{Mesh}, @ref{Tens}, MeshNum (@pxref{Other settings}). @sref{Fall sample}
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Fall (@code{const mglData &}z, @code{const char *}sch=@code{""})
@@ -1481,7 +1508,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Belt (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_belt_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-РиÑÑÐµÑ Ð»ÐµÐ½ÑоÑки Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. ÐÑаÑик Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ ÐºÐ°Ðº 3d обобÑение гÑаÑика Plot() (@pxref{Plot}). СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{x}, Ñо линии ÑиÑÑÑÑÑÑ Ð²Ð´Ð¾Ð»Ñ x-оÑи (по ÑмолÑÐ°Ð½Ð¸Ñ Ð»Ð¸Ð½Ð¸Ð¸ ÑиÑÑÑÑÑÑ Ð²Ð´Ð¾Ð»Ñ y-оÑи). ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @var{x.nx=z.nx && y.nx=z.ny} или @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Fall}, @ref{Surf}, @ref{Plot}, NeshNum (@pxref{Other settings}). @sref{Belt sample}
+РиÑÑÐµÑ Ð»ÐµÐ½ÑоÑки Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. ÐÑаÑик Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ ÐºÐ°Ðº 3d обобÑение гÑаÑика Plot() (@pxref{Plot}). СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{x}, Ñо линии ÑиÑÑÑÑÑÑ Ð²Ð´Ð¾Ð»Ñ x-оÑи (по ÑмолÑÐ°Ð½Ð¸Ñ Ð»Ð¸Ð½Ð¸Ð¸ ÑиÑÑÑÑÑÑ Ð²Ð´Ð¾Ð»Ñ y-оÑи). ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @code{x.nx=z.nx && y.nx=z.ny} или @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Fall}, @ref{Surf}, @ref{Plot}, MeshNum (@pxref{Other settings}). @sref{Belt sample}
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Belt (@code{const mglData &}z, @code{const char *}sch=@code{""})
@@ -1496,7 +1523,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Surf (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_surf_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-РиÑÑÐµÑ Ð¿Ð°ÑамеÑÑиÑеÑки заданнÑÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо на повеÑÑ
ноÑÑи ÑиÑÑеÑÑÑ ÑеÑка. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @var{x.nx=z.nx && y.nx=z.ny} или @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Mesh}, @ref{Dens}, @ref{Belt}, @ref{Tile}, @ref{Boxs}, @ref{SurfC}, @ref{SurfA}. @sref{Surf sample}
+РиÑÑÐµÑ Ð¿Ð°ÑамеÑÑиÑеÑки заданнÑÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо на повеÑÑ
ноÑÑи ÑиÑÑеÑÑÑ ÑеÑка. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @code{x.nx=z.nx && y.nx=z.ny} или @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Mesh}, @ref{Dens}, @ref{Belt}, @ref{Tile}, @ref{Boxs}, @ref{SurfC}, @ref{SurfA}. @sref{Surf sample}
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Surf (@code{const mglData &}z, @code{const char *}sch=@code{""})
@@ -1511,7 +1538,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Boxs (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_boxs_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-РиÑÑÐµÑ Ð²ÐµÑÑикалÑнÑе ÑÑики Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @var{x.nx=z.nx && y.nx=z.ny} или @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Surf}, @ref{Tile}, @ref{Step}. @sref{Boxs sample}
+РиÑÑÐµÑ Ð²ÐµÑÑикалÑнÑе ÑÑики Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @code{x.nx=z.nx && y.nx=z.ny} или @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Surf}, @ref{Dens}, @ref{Tile}, @ref{Step}. @sref{Boxs sample}
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Boxs (@code{const mglData &}z, @code{const char *}sch=@code{""})
@@ -1526,7 +1553,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Tile (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_tile_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-РиÑÑÐµÑ Ð¿Ð»Ð¸Ñки Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. ÐÑаÑик Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ ÐºÐ°Ðº 3d обобÑение Step() (@pxref{Step}). СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @var{x.nx=z.nx && y.nx=z.ny} или @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Surf}, @ref{Boxs}, @ref{Step}, @ref{TileS}. @sref{Tile sample}
+РиÑÑÐµÑ Ð¿Ð»Ð¸Ñки Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. ÐÑаÑик Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ ÐºÐ°Ðº 3d обобÑение Step() (@pxref{Step}). СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @code{x.nx=z.nx && y.nx=z.ny} или @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Surf}, @ref{Boxs}, @ref{Step}, @ref{TileS}. @sref{Tile sample}
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Tile (@code{const mglData &}z, @code{const char *}sch=@code{""})
@@ -1541,7 +1568,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Dens (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_dens_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
-РиÑÑÐµÑ Ð³ÑаÑик плоÑноÑÑи Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} пÑи @var{z} = @var{zVal}. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑка. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @var{x.nx=z.nx && y.nx=z.ny} или @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Surf}, @ref{Cont}, @ref{ContF}, @ref{DensXYZ}. @sref{Dens sample}
+РиÑÑÐµÑ Ð³ÑаÑик плоÑноÑÑи Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} пÑи @var{z} = @var{zVal}. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑка. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @code{x.nx=z.nx && y.nx=z.ny} или @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Surf}, @ref{Cont}, @ref{ContF}, @ref{Boxs}, @ref{Tile}, @ref{DensXYZ}. @sref{Dens sample}
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Dens (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@@ -1556,7 +1583,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Cont (@code{const mglData &}v, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_cont_xy_val (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
-РиÑÑÐµÑ Ð»Ð¸Ð½Ð¸Ð¸ ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} пÑи @var{z} = @var{zVal} (или пÑи @var{z=v}[k] еÑли @code{zVal==NAN}). Ðинии ÑÑÐ¾Ð²Ð½Ñ ÑиÑÑÑÑÑÑ Ð´Ð»Ñ @var{z}[i,j]=@var{v}[k]. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑка. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @var{x.nx=z.nx && y.nx=z.ny} или @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Dens}, @ref{ContF}, @ref{Axial}, @ref{ContXYZ}. @sref{Cont sample}
+РиÑÑÐµÑ Ð»Ð¸Ð½Ð¸Ð¸ ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} пÑи @var{z} = @var{zVal} (или пÑи @var{z=v}[k] еÑли @code{zVal==NAN}). Ðинии ÑÑÐ¾Ð²Ð½Ñ ÑиÑÑÑÑÑÑ Ð´Ð»Ñ @var{z}[i,j]=@var{v}[k]. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑка. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{t} или @samp{T}, Ñо знаÑÐµÐ½Ð¸Ñ @var{v}[k] бÑдÑÑ Ð²ÑÐ²ÐµÐ´ÐµÐ½Ñ Ð²Ð´Ð¾Ð»Ñ ÐºÐ¾Ð½ÑÑÑов над (или под) кÑивой. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @code{x.nx=z.nx && y.nx=z.ny} или @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Dens}, @ref{ContF}, @ref{ContD}, @ref{Axial}, @ref{ContXYZ}. @sref{Cont sample}
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Cont (@code{const mglData &}v, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@@ -1581,7 +1608,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} ContF (@code{const mglData &}v, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_contf_xy_val (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
-РиÑÑÐµÑ Ð·Ð°ÐºÑаÑеннÑе линии (конÑÑÑÑ) ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} пÑи @var{z} = @var{zVal} (или пÑи @var{z=v}[k] еÑли @code{zVal==NAN}). Ðинии ÑÑÐ¾Ð²Ð½Ñ ÑиÑÑÑÑÑÑ Ð´Ð»Ñ @var{z}[i,j]=@var{v}[k]. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑка. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @var{x.nx=z.nx && y.nx=z.ny} или @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Dens}, @ref{Cont}, @ref{Axial}, @ref{ContFXYZ}. @sref{ContF sample}
+РиÑÑÐµÑ Ð·Ð°ÐºÑаÑеннÑе линии (конÑÑÑÑ) ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} пÑи @var{z} = @var{zVal} (или пÑи @var{z=v}[k] еÑли @code{zVal==NAN}). Ðинии ÑÑÐ¾Ð²Ð½Ñ ÑиÑÑÑÑÑÑ Ð´Ð»Ñ @var{z}[i,j]=@var{v}[k]. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑка. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @code{x.nx=z.nx && y.nx=z.ny} или @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Dens}, @ref{Cont}, @ref{Axial}, @ref{ContFXYZ}. @sref{ContF sample}
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} ContF (@code{const mglData &}v, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@@ -1606,7 +1633,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} ContD (@code{const mglData &}v, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_contd_xy_val (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
-РиÑÑÐµÑ Ð·Ð°ÐºÑаÑеннÑе линии (конÑÑÑÑ) ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} пÑи @var{z} = @var{zVal} (или пÑи @var{z=v}[k] if @code{zVal==NAN}) ÑвеÑами заданнÑми Ñвно. Ðинии ÑÑÐ¾Ð²Ð½Ñ ÑиÑÑÑÑÑÑ Ð´Ð»Ñ @var{z}[i,j]=@var{v}[k] (должно бÑÑÑ @code{v.nx>2}). СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ ÐºÐ¾Ð½ÑÑÑов: ÑÐ²ÐµÑ k-го конÑÑÑа опÑеделÑеÑÑÑ Ñимволом @code{sch[k%strlen(sch)]}. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @var{x.nx=z.nx && y.nx=z.ny} или @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Dens}, @ref{Cont}, @ref{ContF}. @sref{ContD sample}
+РиÑÑÐµÑ Ð·Ð°ÐºÑаÑеннÑе линии (конÑÑÑÑ) ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} пÑи @var{z} = @var{zVal} (или пÑи @var{z=v}[k] еÑли @code{zVal==NAN}) ÑвеÑами заданнÑми Ñвно. Ðинии ÑÑÐ¾Ð²Ð½Ñ ÑиÑÑÑÑÑÑ Ð´Ð»Ñ @var{z}[i,j]=@var{v}[k] (должно бÑÑÑ @code{v.nx>2}). СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ ÐºÐ¾Ð½ÑÑÑов: ÑÐ²ÐµÑ k-го конÑÑÑа опÑеделÑеÑÑÑ Ñимволом @code{sch[k%strlen(sch)]}. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @code{x.nx=z.nx && y.nx=z.ny} или @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Dens}, @ref{Cont}, @ref{ContF}. @sref{ContD sample}
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} ContD (@code{const mglData &}v, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@@ -1625,13 +1652,13 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@end deftypefn
@c ==================================================================
- at node Axial, Grid, ContD, 2D plotting
+ at node Axial, Grad, ContD, 2D plotting
@subsection Axial
@cindex Axial
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Axial (@code{const mglData &}v, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_axial_xy_val (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
-РиÑÑÐµÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ Ð²ÑаÑÐµÐ½Ð¸Ñ Ð»Ð¸Ð½Ð¸Ð¸ ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. Ðинии ÑÑÐ¾Ð²Ð½Ñ ÑиÑÑÑÑÑÑ Ð´Ð»Ñ @var{z}[i,j]=@var{v}[k]. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑÑаÑÐ°Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ. ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ @samp{x}, @samp{y} или @samp{z}, Ñо оÑÑ Ð²ÑаÑÐµÐ½Ð¸Ñ (@pxref{Other settings}) ÑÑÑанавливаеÑÑÑ Ð² Ñказанное напÑавление. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @var{x.nx=z.nx && y.nx=z.ny} или @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Cont}, @ref{ContF}, @ref{Torus}, @ref{Surf3}. @sref{Axial sample}
+РиÑÑÐµÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ Ð²ÑаÑÐµÐ½Ð¸Ñ Ð»Ð¸Ð½Ð¸Ð¸ ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. Ðинии ÑÑÐ¾Ð²Ð½Ñ ÑиÑÑÑÑÑÑ Ð´Ð»Ñ @var{z}[i,j]=@var{v}[k]. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑÑаÑÐ°Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ. ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ @samp{x}, @samp{y} или @samp{z}, Ñо оÑÑ Ð²ÑаÑÐµÐ½Ð¸Ñ (@pxref{Other settings}) ÑÑÑанавливаеÑÑÑ Ð² Ñказанное напÑавление. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @code{x.nx=z.nx && y.nx=z.ny} или @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Cont}, @ref{ContF}, @ref{Torus}, @ref{Surf3}. @sref{Axial sample}
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Axial (@code{const mglData &}v, @code{const mglData &}z, @code{const char *}sch=@code{""})
@@ -1650,13 +1677,34 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@end deftypefn
@c ==================================================================
- at node Grid, , Axial, 2D plotting
+ at node Grad, Grid, Axial, 2D plotting
+ at subsection Grad
+ at cindex Grad
+
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Grad (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}phi, @code{const char *}sch=@code{""}, @code{int} num=@code{5})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_grad_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{int} num, @code{float} zVal)
+РиÑÑÐµÑ Ð»Ð¸Ð½Ð¸Ð¸ гÑадиенÑа ÑкалÑÑного Ð¿Ð¾Ð»Ñ @var{phi}[i,j,k] заданного паÑамеÑÑиÑеÑки @{@var{x}[i,j,k], @var{y}[i,j,k], @var{z}[i,j,k]@}. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ЧиÑло линий пÑопоÑÑионалÑно @var{num}. Ðинии ÑиÑÑÑÑÑÑ ÑолÑко Ñ Ð³ÑÐ°Ð½Ð¸Ñ Ð¸Ð½ÑеÑвала пÑи @var{num}<0. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z}, @var{phi} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @code{x.nx=phi.nx && y.nx=phi.ny && z.nx=phi.nz} или @code{x.nx=y.nx=z.nx=phi.nx && x.ny=y.ny=z.ny=phi.ny && x.nz=y.nz=z.nz=phi.nz}. ÐаÑÑÐ¸Ð²Ñ @var{x}, @var{y} и @var{z} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{phi}). См. Ñакже @ref{Dens3}, @ref{Cont3}, @ref{Flow}.
+ at end deftypefn
+
+
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Grad (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{int} num=@code{5}, @code{float} zVal=@code{NAN})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_grad_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{int} num, @code{float} zVal)
+РиÑÑÐµÑ Ð»Ð¸Ð½Ð¸Ð¸ гÑадиенÑа ÑкалÑÑного Ð¿Ð¾Ð»Ñ @var{phi}[i,j] заданного паÑамеÑÑиÑеÑки @{@var{x}[i,j], @var{y}[i,j]@} пÑи @var{z} = @var{zVal}. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ЧиÑло линий пÑопоÑÑионалÑно @var{num}. Ðинии ÑиÑÑÑÑÑÑ ÑолÑко Ñ Ð³ÑÐ°Ð½Ð¸Ñ Ð¸Ð½ÑеÑвала пÑи @var{num}<0. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{phi} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @code{x.nx=phi.nx && y.nx=phi.ny} или @code{x.nx=y.nx=phi.nx && x.ny=y.ny=phi.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{phi}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Dens}, @ref{Cont}, @ref{ContF}, @ref{Flow}. @sref{Grad sample}
+ at end deftypefn
+
+ at deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Grad (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{int} num=@code{5}, @code{float} zVal=@code{NAN})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_grad (@code{HMGL} gr, @code{const HMDT} z, @code{const char *}sch, @code{int} num, @code{float} zVal)
+Ðак пÑедÑдÑÑий Ñ @var{x}, @var{y} Ñавно ÑаÑпÑеделеннÑми в инÑеÑвале [@var{Min}, @var{Max}].
+ at end deftypefn
+
+ at c ==================================================================
+ at node Grid, , Grad, 2D plotting
@subsection Grid
@cindex Grid
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Grid (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_grid_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
-РиÑÑÐµÑ Ð¿Ð»Ð¾ÑкÑÑ ÑеÑÑ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} пÑи @var{z} = @var{zVal}. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @var{x.nx=z.nx && y.nx=z.ny} или @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Dens}, @ref{Cont}, @ref{ContF}.
+РиÑÑÐµÑ Ð¿Ð»Ð¾ÑкÑÑ ÑеÑÑ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} пÑи @var{z} = @var{zVal}. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @code{x.nx=z.nx && y.nx=z.ny} или @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Dens}, @ref{Cont}, @ref{ContF}.
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Grid (@code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@@ -1669,7 +1717,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@node 3D plotting, Dual plotting, 2D plotting, MathGL core
@section 3D гÑаÑики
-ÐÑи ÑÑнкÑии ÑÑÑоÑÑ Ð³ÑаÑики Ð´Ð»Ñ ÑÑеÑ
меÑнÑÑ
(3D) маÑÑивов. ТÑеÑ
меÑнÑми ÑÑиÑаÑÑÑÑ Ð¼Ð°ÑÑивÑ, завиÑÑÑие Ð¾Ñ ÑÑеÑ
паÑамеÑÑов (индекÑов) подобно маÑÑиÑе @math{f(x_i,y_j,z_k), i=1...n, j=1...m, k=1...l}. ÐÑÑÑ 5 оÑновнÑÑ
Ñипов 3D гÑаÑиков: повеÑÑ
ноÑÑÑ Ð¿Ð¾ÑÑоÑнного ÑÑÐ¾Ð²Ð½Ñ (Surf3), гÑаÑик плоÑноÑÑи на ÑÑезе (Dens3), линии ÑÑÐ¾Ð²Ð½Ñ Ð½Ð° ÑÑезе (Cont3), закÑаÑеннÑе конÑÑÑÑ ÑÑÐ¾Ð²Ð½Ñ Ð½Ð° ÑÑезе (ContF3) и гÑаÑик обÑемной пÑозÑаÑноÑÑи Ñипа облака (Cloud). Ð ÑÑнкÑиÑÑ
Cont3(), ContF3() и Surf3() знаÑÐµÐ½Ð¸Ñ ÑÑовней можно задаваÑÑ Ð°Ð²ÑомаÑиÑеÑки и вÑÑÑнÑÑ. Ðожно Ñакже наÑиÑоваÑÑ Ð½Ð° ÑÑезе ÑеÑÐºÑ (Grid3) по маÑÑÐ¸Ð²Ñ Ð´Ð°Ð½Ð½ÑÑ
Ð´Ð»Ñ ÑлÑÑÑÐµÐ½Ð¸Ñ Ð²Ð¸Ð´Ð° гÑаÑика плоÑноÑÑи или линий ÑÑовнÑ. ÐаждÑй Ñип гÑаÑика Ð¸Ð¼ÐµÐµÑ Ð¿Ð¾Ñ
ожий инÑеÑÑейÑ. ÐÑÑÑ Ð²ÐµÑÑÐ¸Ñ Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ маÑÑива Ñ Ð°Ð²ÑомаÑиÑеÑкими кооÑдинаÑами и веÑÑÐ¸Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданного маÑÑива. ÐаÑамеÑÑÑ ÑвеÑовой ÑÑ
ÐµÐ¼Ñ Ð·Ð°Ð´Ð°ÑÑÑÑ ÑÑÑокой @xref{Color scheme}.
+ÐÑи ÑÑнкÑии ÑÑÑоÑÑ Ð³ÑаÑики Ð´Ð»Ñ ÑÑеÑ
меÑнÑÑ
(3D) маÑÑивов. ТÑеÑ
меÑнÑми ÑÑиÑаÑÑÑÑ Ð¼Ð°ÑÑивÑ, завиÑÑÑие Ð¾Ñ ÑÑеÑ
паÑамеÑÑов (индекÑов) подобно маÑÑиÑе @math{f(x_i,y_j,z_k), i=1...n, j=1...m, k=1...l}. ÐÑÑÑ 5 оÑновнÑÑ
Ñипов 3D гÑаÑиков: повеÑÑ
ноÑÑÑ Ð¿Ð¾ÑÑоÑнного ÑÑÐ¾Ð²Ð½Ñ (Surf3), гÑаÑик плоÑноÑÑи на ÑÑезе (Dens3), линии ÑÑÐ¾Ð²Ð½Ñ Ð½Ð° ÑÑезе (Cont3), закÑаÑеннÑе конÑÑÑÑ ÑÑÐ¾Ð²Ð½Ñ Ð½Ð° ÑÑезе (ContF3) и гÑаÑик обÑемной пÑозÑаÑноÑÑи Ñипа облака (Cloud). Ð ÑÑнкÑиÑÑ
Cont3(), ContF3() и Surf3() знаÑÐµÐ½Ð¸Ñ ÑÑовней можно задаваÑÑ Ð°Ð²ÑомаÑиÑеÑки и вÑÑÑнÑÑ. Ðожно Ñакже наÑиÑоваÑÑ Ð½Ð° ÑÑезе ÑеÑÐºÑ (Grid3) по маÑÑÐ¸Ð²Ñ Ð´Ð°Ð½Ð½ÑÑ
Ð´Ð»Ñ ÑлÑÑÑÐµÐ½Ð¸Ñ Ð²Ð¸Ð´Ð° гÑаÑика плоÑноÑÑи или линий ÑÑовнÑ. ÐаждÑй Ñип гÑаÑика Ð¸Ð¼ÐµÐµÑ Ð¿Ð¾Ñ
ожий инÑеÑÑейÑ. ÐÑÑÑ Ð²ÐµÑÑÐ¸Ñ Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ маÑÑива Ñ Ð°Ð²ÑомаÑиÑеÑкими кооÑдинаÑами и веÑÑÐ¸Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданного маÑÑива. ÐаÑамеÑÑÑ ÑвеÑовой ÑÑ
ÐµÐ¼Ñ Ð·Ð°Ð´Ð°ÑÑÑÑ ÑÑÑокой @xref{Color scheme}. @sref{3D plot sample}
@menu
* Surf3::
@@ -1740,7 +1788,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Cont3 (@code{const mglData &}v, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}a, @code{char} dir, @code{int} sVal=@code{-1}, @code{const char *}stl=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_cont3_xyz_val (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} a, @code{char} dir, @code{int} sVal, @code{const char *}stl)
-РиÑÑÐµÑ Ð»Ð¸Ð½Ð¸Ð¸ ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ 3d маÑÑива, заданного паÑамеÑÑиÑеÑки @var{a}[i,j,k](@var{x}[i,j,k], @var{y}[i,j,k], @var{z}[i,j,k]). Ðинии ÑиÑÑÑÑÑÑ Ð´Ð»Ñ Ð·Ð½Ð°Ñений из маÑÑива @var{v} на ÑÑезе @var{sVal} в напÑавлении @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@}. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли @var{stl} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо на ÑÑезе ÑиÑÑеÑÑÑ ÑеÑка. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐаÑÑÐ¸Ð²Ñ @var{x}, @var{y}, @var{z} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не 3d маÑÑивами как @var{a}). См. Ñакже @ref{Dens3}, @ref{ContF3}, @ref{Cont}, @ref{Grid3}. @sref{Cont3 sample}
+РиÑÑÐµÑ Ð»Ð¸Ð½Ð¸Ð¸ ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ 3d маÑÑива, заданного паÑамеÑÑиÑеÑки @var{a}[i,j,k](@var{x}[i,j,k], @var{y}[i,j,k], @var{z}[i,j,k]). Ðинии ÑиÑÑÑÑÑÑ Ð´Ð»Ñ Ð·Ð½Ð°Ñений из маÑÑива @var{v} на ÑÑезе @var{sVal} в напÑавлении @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@}. СÑÑока @var{stl} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли @var{stl} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо на ÑÑезе ÑиÑÑеÑÑÑ ÑеÑка. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{t} или @samp{T}, Ñо знаÑÐµÐ½Ð¸Ñ @var{v}[k] бÑдÑÑ Ð²ÑÐ²ÐµÐ´ÐµÐ½Ñ Ð²Ð´Ð¾Ð»Ñ ÐºÐ¾Ð½ÑÑÑов над (или под) кÑивой. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐаÑÑÐ¸Ð²Ñ @var{x}, @var{y}, @var{z} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не 3d маÑÑивами как @var{a}). См. Ñакже @ref{Dens3}, @ref{ContF3}, @ref{Cont}, @ref{Grid3}. @sref{Cont3 sample}
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Cont3 (@code{const mglData &}v, @code{const mglData &}a, @code{char} dir, @code{int} sVal=@code{-1}, @code{const char *}sch=@code{""})
@@ -1864,7 +1912,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Beam (@code{float} val, @code{const mglData &}tr, @code{const mglData &}g1, @code{const mglData &}g2, @code{const mglData &}a, @code{float} r, @code{const char *}stl=@code{""}, @code{int} flag=@code{0})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_beam_val (@code{HMGL} gr, @code{float} val, @code{const HMDT} tr, @code{const HMDT} g1, @code{const HMDT} g2, @code{const HMDT} a, @code{float} r, @code{const char *}stl, @code{int} flag)
-РиÑÑÐµÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ 3d маÑÑива @var{a} пÑи поÑÑоÑнном знаÑении @var{a}=@var{val}. ÐÑо ÑпеÑиалÑнÑй Ñип гÑаÑика Ð´Ð»Ñ @var{a} заданнÑм в ÑопÑовождаÑÑей ÑиÑÑеме кооÑÐ´Ð¸Ð½Ð°Ñ Ð²Ð´Ð¾Ð»Ñ ÐºÑивой @var{tr} Ñ Ð¾ÑÑами @var{g1}, @var{g2} и Ñ Ð¿Ð¾Ð¿ÐµÑеÑнÑм ÑазмеÑом @var{r}. ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ @var{flag} -- биÑовÑй Ñлаг: @samp{0x1} - ÑиÑоваÑÑ Ð² ÑопÑовождаÑÑиÑ
(не лабоÑаÑоÑнÑÑ
) кооÑдинаÑаÑ
; @samp{0x2} - ÑиÑоваÑÑ Ð¿ÑоекÑÐ¸Ñ Ð½Ð° плоÑкоÑÑÑ @math{\rho-z}; @samp{0x4} - ÑиÑоваÑÑ Ð½Ð¾ÑмиÑованное в каждом ÑеÑении поле. РазмеÑÑ Ð¼Ð°ÑÑивов по 1-Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ @var{tr}, @var{g1}, @var{g2} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ nx>2. РазмеÑÑ Ð¼Ð°ÑÑивов по 2-Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ @var{tr}, @var{g1}, @var{g2} и ÑÐ°Ð·Ð¼ÐµÑ Ð¿Ð¾ 3-Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ Ð¼Ð°ÑÑива @var{a} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. @xref{Surf3}.
+РиÑÑÐµÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ 3d маÑÑива @var{a} пÑи поÑÑоÑнном знаÑении @var{a}=@var{val}. ÐÑо ÑпеÑиалÑнÑй Ñип гÑаÑика Ð´Ð»Ñ @var{a} заданного в ÑопÑовождаÑÑей ÑиÑÑеме кооÑÐ´Ð¸Ð½Ð°Ñ Ð²Ð´Ð¾Ð»Ñ ÐºÑивой @var{tr} Ñ Ð¾ÑÑами @var{g1}, @var{g2} и Ñ Ð¿Ð¾Ð¿ÐµÑеÑнÑм ÑазмеÑом @var{r}. ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ @var{flag} -- биÑовÑй Ñлаг: @samp{0x1} - ÑиÑоваÑÑ Ð² ÑопÑовождаÑÑиÑ
(не лабоÑаÑоÑнÑÑ
) кооÑдинаÑаÑ
; @samp{0x2} - ÑиÑоваÑÑ Ð¿ÑоекÑÐ¸Ñ Ð½Ð° плоÑкоÑÑÑ @math{\rho-z}; @samp{0x4} - ÑиÑоваÑÑ Ð½Ð¾ÑмиÑованное в каждом ÑеÑении поле. РазмеÑÑ Ð¼Ð°ÑÑивов по 1-Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ @var{tr}, @var{g1}, @var{g2} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ nx>2. РазмеÑÑ Ð¼Ð°ÑÑивов по 2-Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ @var{tr}, @var{g1}, @var{g2} и ÑÐ°Ð·Ð¼ÐµÑ Ð¿Ð¾ 3-Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ Ð¼Ð°ÑÑива @var{a} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. См. Ñакже @ref{Surf3}.
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Beam (@code{const mglData &}tr, @code{const mglData &}g1, @code{const mglData &}g2, @code{const mglData &}a, @code{float} r, @code{const char *}stl=@code{""}, @code{int} flag=@code{0}, @code{int} num=@code{3})
@@ -1897,7 +1945,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} SurfC (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_surfc_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} c, @code{const char *}sch)
-РиÑÑÐµÑ Ð¿Ð°ÑамеÑÑиÑеÑки заданнÑÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} Ñ ÑвеÑом, заданнÑм маÑÑивом @var{c}[i,j]. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо на повеÑÑ
ноÑÑи ÑиÑÑеÑÑÑ ÑеÑка. ÐÑе ÑазмеÑÑ Ð¼Ð°ÑÑивов @var{z} и @var{c} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @var{x.nx=z.nx && y.nx=z.ny} или @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Surf}, @ref{SurfA}, @ref{Surf3C}. @sref{SurfC sample}
+РиÑÑÐµÑ Ð¿Ð°ÑамеÑÑиÑеÑки заданнÑÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} Ñ ÑвеÑом, заданнÑм маÑÑивом @var{c}[i,j]. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо на повеÑÑ
ноÑÑи ÑиÑÑеÑÑÑ ÑеÑка. ÐÑе ÑазмеÑÑ Ð¼Ð°ÑÑивов @var{z} и @var{c} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @code{x.nx=z.nx && y.nx=z.ny} или @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Surf}, @ref{SurfA}, @ref{Surf3C}. @sref{SurfC sample}
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} SurfC (@code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""})
@@ -1939,7 +1987,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} SurfA (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_surfa_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} c, @code{const char *}sch)
-РиÑÑÐµÑ Ð¿Ð°ÑамеÑÑиÑеÑки заданнÑÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} Ñ Ð¿ÑозÑаÑноÑÑÑÑ, заданнÑм маÑÑивом @var{c}[i,j]. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо на повеÑÑ
ноÑÑи ÑиÑÑеÑÑÑ ÑеÑка. ÐÑе ÑазмеÑÑ Ð¼Ð°ÑÑивов @var{z} и @var{c} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @var{x.nx=z.nx && y.nx=z.ny} или @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Surf}, @ref{SurfC}, @ref{Surf3A}, @ref{TileS}. @sref{SurfA sample}
+РиÑÑÐµÑ Ð¿Ð°ÑамеÑÑиÑеÑки заданнÑÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@} Ñ Ð¿ÑозÑаÑноÑÑÑÑ, заданнÑм маÑÑивом @var{c}[i,j]. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо на повеÑÑ
ноÑÑи ÑиÑÑеÑÑÑ ÑеÑка. ÐÑе ÑазмеÑÑ Ð¼Ð°ÑÑивов @var{z} и @var{c} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @code{x.nx=z.nx && y.nx=z.ny} или @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{Surf}, @ref{SurfC}, @ref{Surf3A}, @ref{TileS}. @sref{SurfA sample}
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} SurfA (@code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""})
@@ -1980,7 +2028,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} TileS (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}r, @code{const char *}sch=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_tiles_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} r, @code{const char *}sch)
-РиÑÑÐµÑ Ð¿Ð»Ð¸Ñки Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. ÐналогиÑно Tile(), но ÑÐ°Ð·Ð¼ÐµÑ Ð¿Ð»Ð¸Ñок задаеÑÑÑ Ð¼Ð°ÑÑивов @var{r}. ÐÑо ÑÐ¾Ð·Ð´Ð°ÐµÑ ÑÑÑÐµÐºÑ "пÑозÑаÑноÑÑи" пÑи ÑкÑпоÑÑе в ÑÐ°Ð¹Ð»Ñ EPS. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @var{x.nx=z.nx && y.nx=z.ny} или @var{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{SurfA}, @ref{Tile}. @sref{TileS sample}
+РиÑÑÐµÑ Ð¿Ð»Ð¸Ñки Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{x}[i,j], @var{y}[i,j], @var{z}[i,j]@}. ÐналогиÑно Tile(), но ÑÐ°Ð·Ð¼ÐµÑ Ð¿Ð»Ð¸Ñок задаеÑÑÑ Ð¼Ð°ÑÑивов @var{r}. ÐÑо ÑÐ¾Ð·Ð´Ð°ÐµÑ ÑÑÑÐµÐºÑ "пÑозÑаÑноÑÑи" пÑи ÑкÑпоÑÑе в ÑÐ°Ð¹Ð»Ñ EPS. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @code{x.nx=z.nx && y.nx=z.ny} или @code{x.nx=y.nx=z.nx && x.ny=y.ny=z.ny}. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{z}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
. См. Ñакже @ref{SurfA}, @ref{Tile}. @sref{TileS sample}
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} TileS (@code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""})
@@ -2010,7 +2058,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} STFA (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}re, @code{const mglData &}im, @code{int} dn, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_stfa_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} re, @code{const HMDT} im, @code{int} dn, @code{const char *}sch, @code{float} zVal)
-РиÑÑÐµÑ ÑпекÑÑогÑÐ°Ð¼Ð¼Ñ ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑного маÑÑива @var{re}+i*@code{im} Ð´Ð»Ñ Ð¤ÑÑÑе ÑазмеÑом @var{dn} ÑоÑек в плоÑкоÑÑи @var{z=zVal}. ÐаÑамеÑÑ @var{dn} -- лÑбое ÑеÑное ÑиÑло. ÐапÑÐ¸Ð¼ÐµÑ Ð² 1D ÑлÑÑае, ÑезÑлÑÑаÑом бÑÐ´ÐµÑ Ð³ÑаÑик плоÑноÑÑи Ð¾Ñ Ð¼Ð°ÑÑива @math{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@}. ÐаÑÑÐ¸Ð²Ñ @var{re}, @var{im} паÑамеÑÑиÑеÑки завиÑÑÑ Ð¾Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ @var{x}, @var{y}. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑе ÑазмеÑÑ Ð¼Ð°ÑÑивов @var{re} и @var{im} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{re} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{re}). @xref{Color scheme}.
+РиÑÑÐµÑ ÑпекÑÑогÑÐ°Ð¼Ð¼Ñ ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑного маÑÑива @var{re}+i*@code{im} Ð´Ð»Ñ Ð¤ÑÑÑе ÑазмеÑом @var{dn} ÑоÑек в плоÑкоÑÑи @var{z=zVal}. ÐаÑамеÑÑ @var{dn} -- лÑбое ÑеÑное ÑиÑло. ÐапÑÐ¸Ð¼ÐµÑ Ð² 1D ÑлÑÑае, ÑезÑлÑÑаÑом бÑÐ´ÐµÑ Ð³ÑаÑик плоÑноÑÑи Ð¾Ñ Ð¼Ð°ÑÑива @math{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@}. ÐаÑÑÐ¸Ð²Ñ @var{re}, @var{im} паÑамеÑÑиÑеÑки завиÑÑÑ Ð¾Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ @var{x}, @var{y}. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑе ÑазмеÑÑ Ð¼Ð°ÑÑивов @var{re} и @var{im} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y}, @var{re} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{re}). @sref{STFA sample}
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} STFA (@code{const mglData &}re, @code{const mglData &}im, @code{int} dn, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@@ -2021,9 +2069,9 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@c ##################################################################
@node Vector fields, Other plotting, Dual plotting, MathGL core
- at section ÐекÑоÑнÑе гÑаÑики
+ at section ÐекÑоÑнÑе полÑ
-ÐÑи ÑÑнкÑии ÑиÑÑÑÑ Ð³ÑаÑики Ð´Ð»Ñ 2D и 3D векÑоÑнÑÑ
полей. ÐÑÑÑ Ð½ÐµÑколÑко 5 Ñипов гÑаÑиков: пÑоÑÑо векÑоÑное поле (Vect), векÑоÑа Ð²Ð´Ð¾Ð»Ñ ÑÑаекÑоÑии (Traj), векÑоÑное поле каплÑми (Dew), ниÑи Ñока (Flow, FlowP), ÑÑÑбки Ñока (Pipe). ÐаждÑй Ñип гÑаÑика Ð¸Ð¼ÐµÐµÑ Ð¿Ð¾Ñ
ожий инÑеÑÑейÑ. ÐÑÑÑ Ð²ÐµÑÑÐ¸Ñ Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ маÑÑива Ñ Ð°Ð²ÑомаÑиÑеÑкими кооÑдинаÑами и веÑÑÐ¸Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданного маÑÑива. ÐаÑамеÑÑÑ ÑвеÑовой ÑÑ
ÐµÐ¼Ñ Ð·Ð°Ð´Ð°ÑÑÑÑ ÑÑÑокой @xref{Color scheme}.
+ÐÑи ÑÑнкÑии ÑиÑÑÑÑ Ð³ÑаÑики Ð´Ð»Ñ 2D и 3D векÑоÑнÑÑ
полей. ÐÑÑÑ Ð½ÐµÑколÑко Ñипов гÑаÑиков: пÑоÑÑо векÑоÑное поле (Vect), векÑоÑа Ð²Ð´Ð¾Ð»Ñ ÑÑаекÑоÑии (Traj), векÑоÑное поле каплÑми (Dew), ниÑи Ñока (Flow, FlowP), ÑÑÑбки Ñока (Pipe). ÐаждÑй Ñип гÑаÑика Ð¸Ð¼ÐµÐµÑ Ð¿Ð¾Ñ
ожий инÑеÑÑейÑ. ÐÑÑÑ Ð²ÐµÑÑÐ¸Ñ Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ маÑÑива Ñ Ð°Ð²ÑомаÑиÑеÑкими кооÑдинаÑами и веÑÑÐ¸Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданного маÑÑива. ÐаÑамеÑÑÑ ÑвеÑовой ÑÑ
ÐµÐ¼Ñ Ð·Ð°Ð´Ð°ÑÑÑÑ ÑÑÑокой @xref{Color scheme}.
@menu
* Traj::
@@ -2093,7 +2141,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Flow (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}ax, @code{const mglData &}ay, @code{const char *}sch=@code{""}, @code{int} num=@code{5}, @code{bool} central=@code{true}, @code{float} zVal=@code{NAN})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_flow_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} ax, @code{const HMDT} ay, @code{const char *}sch, @code{int} num, @code{int} central, @code{float} zVal)
-РиÑÑÐµÑ Ð½Ð¸Ñи Ñока Ð´Ð»Ñ Ð²ÐµÐºÑоÑного Ð¿Ð¾Ð»Ñ @{@var{ax}, @var{ay}@}, паÑамеÑÑиÑеÑки завиÑÑÑего Ð¾Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ @var{x}, @var{y} на плоÑкоÑÑи пÑи z = @var{zVal}. ЧиÑло ниÑей пÑопоÑÑионалÑно @var{num}. ÐаÑамеÑÑ @var{central} Ð·Ð°Ð´Ð°ÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑÑаÑÑа ниÑей изнÑÑÑи ÑеÑки (еÑли true) или ÑолÑко Ñ ÐºÑаев (еÑли false). Ð¦Ð²ÐµÑ Ð½Ð¸Ñей пÑопоÑÑионален @math{\sqrt@{ax^2+ay^2@}}. ТеплÑе ÑвеÑа ÑооÑвеÑÑÑвÑÑÑ Ð½Ð¾ÑмалÑÐ½Ð¾Ð¼Ñ ÑÐ¾ÐºÑ (Ñипа ÑÑока). ХолоднÑе ÑвеÑа ÑооÑвеÑÑÑвÑÑÑ Ð¾Ð±ÑаÑÐ½Ð¾Ð¼Ñ ÑÐ¾ÐºÑ (Ñипа иÑÑоÑника). СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑе ÑазмеÑÑ Ð¼Ð°ÑÑивов @var{ax} и @var{ay} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y} и @var{ax} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{ax}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза @var{ax}, @var{ay}. См. Ñакже @ref{Pipe}, @ref{Vect}. @sref{Flow sample}
+РиÑÑÐµÑ Ð½Ð¸Ñи Ñока Ð´Ð»Ñ Ð²ÐµÐºÑоÑного Ð¿Ð¾Ð»Ñ @{@var{ax}, @var{ay}@}, паÑамеÑÑиÑеÑки завиÑÑÑего Ð¾Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ @var{x}, @var{y} на плоÑкоÑÑи пÑи z = @var{zVal}. ЧиÑло ниÑей пÑопоÑÑионалÑно @var{num}. ÐаÑамеÑÑ @var{central} Ð·Ð°Ð´Ð°ÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑÑаÑÑа ниÑей изнÑÑÑи ÑеÑки (еÑли true) или ÑолÑко Ñ ÐºÑаев (еÑли false). С веÑÑии 1.11 он игноÑиÑÑеÑÑÑ Ð¸ вÑегда Ñавен (@var{num}>0). Ð¦Ð²ÐµÑ Ð½Ð¸Ñей пÑопоÑÑионален @math{\sqrt@{ax^2+ay^2@}}. ТеплÑе ÑвеÑа ÑооÑвеÑÑÑвÑÑÑ Ð½Ð¾ÑмалÑÐ½Ð¾Ð¼Ñ ÑÐ¾ÐºÑ (Ñипа ÑÑока). ХолоднÑе ÑвеÑа ÑооÑвеÑÑÑвÑÑÑ Ð¾Ð±ÑаÑÐ½Ð¾Ð¼Ñ ÑÐ¾ÐºÑ (Ñипа иÑÑоÑника). СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑе ÑазмеÑÑ Ð¼Ð°ÑÑивов @var{ax} и @var{ay} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y} и @var{ax} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{ax}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза @var{ax}, @var{ay}. См. Ñакже @ref{Pipe}, @ref{Vect}. @sref{Flow sample}
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Flow (@code{const mglData &}ax, @code{const mglData &}ay, @code{const char *}sch=@code{""}, @code{int} num=@code{5}, @code{bool} central=@code{true}, @code{float} zVal=@code{NAN})
@@ -2103,7 +2151,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Flow (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}ax, @code{const mglData &}ay, @code{const mglData &}az, @code{const char *}sch=@code{""}, @code{int} num=@code{3}, @code{bool} central=@code{true})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_flow_xyz (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} ax, @code{const HMDT} ay, @code{const HMDT} az, @code{const char *}sch, @code{int} num, @code{int} central)
-ÐÑо 3D веÑÑÐ¸Ñ Ð³ÑаÑика. ÐдеÑÑ Ð¼Ð°ÑÑÐ¸Ð²Ñ @var{ax}, @var{ay}, @var{az} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ 3d маÑÑивами, а ÑÐ²ÐµÑ Ð¿ÑопоÑÑионалÑÐ½Ñ @math{\sqrt@{ax^2+ay^2+az^2@}}. @sref{Flow 3D sample}
+ÐÑо 3D веÑÑÐ¸Ñ Ð³ÑаÑика. ÐдеÑÑ Ð¼Ð°ÑÑÐ¸Ð²Ñ @var{ax}, @var{ay}, @var{az} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ 3d маÑÑивами, а ÑÐ²ÐµÑ Ð¿ÑопоÑÑионален @math{\sqrt@{ax^2+ay^2+az^2@}}. @sref{Flow 3D sample}
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Flow (@code{const mglData &}ax, @code{const mglData &}ay, @code{const mglData &}az, @code{const char *}sch=@code{""}, @code{int} num=@code{3}, @code{bool} central=@code{true})
@@ -2148,7 +2196,7 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Pipe (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}ax, @code{const mglData &}ay, @code{const char *}sch=@code{""}, @code{float} r0=@code{0.05}, @code{int} num=@code{5}, @code{bool} central=@code{true}, @code{float} zVal=@code{NAN})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_pipe_xy (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} ax, @code{const HMDT} ay, @code{const char *}sch, @code{float} r0, @code{int} num, @code{int} central, @code{float} zVal)
-РиÑÑÐµÑ ÑÑÑбки Ñока Ð´Ð»Ñ Ð²ÐµÐºÑоÑного Ð¿Ð¾Ð»Ñ @{@var{ax}, @var{ay}@}, паÑамеÑÑиÑеÑки завиÑÑÑего Ð¾Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ @var{x}, @var{y} на плоÑкоÑÑи пÑи z = @var{zVal}. ЧиÑло ÑÑÑбок пÑопоÑÑионалÑно @var{num}. ÐаÑамеÑÑ @var{central} Ð·Ð°Ð´Ð°ÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑÑаÑÑа ÑÑÑбок изнÑÑÑи ÑеÑки (еÑли true) или ÑолÑко Ñ ÐºÑаев (еÑли false). Ð¦Ð²ÐµÑ Ð¸ ÑадиÑÑ ÑÑÑбок пÑопоÑÑионален @math{\sqrt@{ax^2+ay^2@}}. ТеплÑе ÑвеÑа ÑооÑвеÑÑÑвÑÑÑ Ð½Ð¾ÑмалÑÐ½Ð¾Ð¼Ñ ÑÐ¾ÐºÑ (Ñипа ÑÑока). ХолоднÑе ÑвеÑа ÑооÑвеÑÑÑвÑÑÑ Ð¾Ð±ÑаÑÐ½Ð¾Ð¼Ñ ÑÐ¾ÐºÑ (Ñипа иÑÑоÑника). СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐаÑамеÑÑ @var{r0} Ð·Ð°Ð´Ð°ÐµÑ ÑадиÑÑ ÑÑÑбок. ÐÑи @var{r0}<0 ÑадиÑÑ ÑÑÑбок обÑаÑно пÑопоÑÑионален иÑ
амплиÑÑде. ÐÑе ÑазмеÑÑ Ð¼Ð°ÑÑивов @var{ax} и @var{ay} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y} и @var{ax} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{ax}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза @var{ax}, @var{ay}. См. Ñакже @ref{Pipe}, @ref{Vect}. @sref{Pipe sample}
+РиÑÑÐµÑ ÑÑÑбки Ñока Ð´Ð»Ñ Ð²ÐµÐºÑоÑного Ð¿Ð¾Ð»Ñ @{@var{ax}, @var{ay}@}, паÑамеÑÑиÑеÑки завиÑÑÑего Ð¾Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ @var{x}, @var{y} на плоÑкоÑÑи пÑи z = @var{zVal}. ЧиÑло ÑÑÑбок пÑопоÑÑионалÑно @var{num}. ÐаÑамеÑÑ @var{central} Ð·Ð°Ð´Ð°ÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑÑаÑÑа ÑÑÑбок изнÑÑÑи ÑеÑки (еÑли true) или ÑолÑко Ñ ÐºÑаев (еÑли false). С веÑÑии 1.11 он игноÑиÑÑеÑÑÑ Ð¸ вÑегда Ñавен (@var{num}>0). Ð¦Ð²ÐµÑ Ð¸ ÑадиÑÑ ÑÑÑбок пÑопоÑÑионален @math{\sqrt@{ax^2+ay^2@}}. ТеплÑе ÑвеÑа ÑооÑвеÑÑÑвÑÑÑ Ð½Ð¾ÑмалÑÐ½Ð¾Ð¼Ñ ÑÐ¾ÐºÑ (Ñипа ÑÑока). ХолоднÑе ÑвеÑа ÑооÑвеÑÑÑвÑÑÑ Ð¾Ð±ÑаÑÐ½Ð¾Ð¼Ñ ÑÐ¾ÐºÑ (Ñипа иÑÑоÑника). СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐаÑамеÑÑ @var{r0} Ð·Ð°Ð´Ð°ÐµÑ ÑадиÑÑ ÑÑÑбок. ÐÑи @var{r0}<0 ÑадиÑÑ ÑÑÑбок обÑаÑно пÑопоÑÑионален иÑ
амплиÑÑде. ÐÑе ÑазмеÑÑ Ð¼Ð°ÑÑивов @var{ax} и @var{ay} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y} и @var{ax} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{ax}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза @var{ax}, @var{ay}. См. Ñакже @ref{Flow}, @ref{Vect}. @sref{Pipe sample}
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Pipe (@code{const mglData &}ax, @code{const mglData &}ay, @code{const char *}sch=@code{""}, @code{float} r0=@code{0.05}, @code{int} num=@code{5}, @code{bool} central=@code{true}, @code{float} zVal=@code{NAN})
@@ -2180,6 +2228,8 @@ Setsize: ÑазмеÑ(Ñ) ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ
* Dots::
* Crust::
* TriPlot::
+* TriCont::
+* QuadPlot::
* Plots by formula::
* SimplePlot::
@end menu
@@ -2322,7 +2372,7 @@ gr->ContZ(c.Sum("z"),0,-1);
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} Crust (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} er=@code{0})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_crust (@code{HMGL} gr, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{float} er)
-ФÑнкÑÐ¸Ñ ÑеконÑÑÑÑиÑÑÐµÑ Ð¸ ÑиÑÑÐµÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ Ð¿Ð¾ пÑоизволÑно ÑаÑположеннÑм ÑоÑкам @{@var{x}[i], @var{y}[i], @var{z}[i]@}. ÐаÑамеÑÑ @var{er} Ð·Ð°Ð´Ð°ÐµÑ ÑадиÑÑ Ð¾Ñибки (ÑвелиÑÑе Ð´Ð»Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð´ÑÑ). СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑÑаÑÐ°Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ. ÐаÑÑÐ¸Ð²Ñ @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸Ð¼ÐµÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñе ÑазмеÑÑ. См. Ñакже @ref{Dots}, @ref{TriPlot}. @sref{Crust sample}
+РеконÑÑÑÑиÑÑÐµÑ Ð¸ ÑиÑÑÐµÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ Ð¿Ð¾ пÑоизволÑно ÑаÑположеннÑм ÑоÑкам @{@var{x}[i], @var{y}[i], @var{z}[i]@}. ÐаÑамеÑÑ @var{er} Ð·Ð°Ð´Ð°ÐµÑ ÑадиÑÑ Ð¾Ñибки (ÑвелиÑÑе Ð´Ð»Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð´ÑÑ). СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑÑаÑÐ°Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ. ÐаÑÑÐ¸Ð²Ñ @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸Ð¼ÐµÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñе ÑазмеÑÑ. См. Ñакже @ref{Dots}, @ref{TriPlot}. @sref{Crust sample}
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++)} @code{void} Crust (@code{const mglData &}tr, @code{const char *}sch=@code{""}, @code{float} er=@code{0})
@@ -2331,7 +2381,7 @@ gr->ContZ(c.Sum("z"),0,-1);
@end deftypefn
@c ==================================================================
- at node TriPlot, Plots by formula, Crust, Other plotting
+ at node TriPlot, TriCont, Crust, Other plotting
@subsection TriPlot
@cindex TriPlot
@@ -2339,7 +2389,7 @@ gr->ContZ(c.Sum("z"),0,-1);
@deftypefnx {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} TriPlot (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_triplot_xyz (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
@deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_triplot_xyzc (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} c, @code{const char *}sch)
-РиÑÑÐµÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ Ð¸Ð· ÑÑеÑголÑников. ÐеÑÑÐ¸Ð½Ñ ÑÑеÑголÑников задаÑÑÑÑ Ð¸Ð½Ð´ÐµÐºÑами @var{id} в маÑÑиве ÑоÑек @{@var{x}[i], @var{y}[i], @var{z}[i]@}. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑÑаÑÐ°Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ Ð¼Ð°ÑÑива @var{id} должен бÑÑÑ 3 или болÑÑе. ÐаÑÑÐ¸Ð²Ñ @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸Ð¼ÐµÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñе ÑазмеÑÑ. ÐаÑÑив @var{c} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ ÑÑеÑголÑников (еÑли @var{id}.ny=@var{c}.nx) или ÑÐ²ÐµÑ Ð²ÐµÑÑин (еÑли @var{x}.nx=@var{c}.nx). См. Ñакже @ref{Dots}, @ref{Crust}.
+РиÑÑÐµÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ Ð¸Ð· ÑÑеÑголÑников. ÐеÑÑÐ¸Ð½Ñ ÑÑеÑголÑников задаÑÑÑÑ Ð¸Ð½Ð´ÐµÐºÑами @var{id} в маÑÑиве ÑоÑек @{@var{x}[i], @var{y}[i], @var{z}[i]@}. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑÑаÑÐ°Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ Ð¼Ð°ÑÑива @var{id} должен бÑÑÑ 3 или болÑÑе. ÐаÑÑÐ¸Ð²Ñ @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸Ð¼ÐµÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñе ÑазмеÑÑ. ÐаÑÑив @var{c} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ ÑÑеÑголÑников (еÑли @var{id}.ny=@var{c}.nx) или ÑÐ²ÐµÑ Ð²ÐµÑÑин (еÑли @var{x}.nx=@var{c}.nx). См. Ñакже @ref{Dots}, @ref{Crust}, @ref{QuadPlot}, @ref{TriCont}.
@end deftypefn
@deftypefn {ÐеÑод клаÑÑа @code{mglGraph} (C++, Python)} @code{void} TriPlot (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
@@ -2348,7 +2398,43 @@ gr->ContZ(c.Sum("z"),0,-1);
@end deftypefn
@c ==================================================================
- at node Plots by formula, SimplePlot, TriPlot, Other plotting
+ at node TriCont, QuadPlot, TriPlot, Other plotting
+ at subsection TriCont
+ at cindex TriCont
+
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} TriContV (@code{const mglData &}v, @code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
+ at deftypefnx {Method on @code{mglGraph} (C++, Python)} @code{void} TriContV (@code{const mglData &}v, @code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
+ at deftypefnx {C function} @code{void} mgl_tricont_xyzcv (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} c, @code{const char *}sch, @code{float} zVal)
+ at deftypefnx {C function} @code{void} mgl_tricont_xyzv (@code{HMGL} gr, @code{const HMDT} v, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{float} zVal)
+РиÑÑÐµÑ Ð»Ð¸Ð½Ð¸Ð¸ ÑÑÐ¾Ð²Ð½Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑи из ÑÑеÑголÑников пÑи @var{z} = @var{zVal} (или Ð´Ð»Ñ @var{z=v}[k] еÑли @code{zVal==NAN}). ÐеÑÑÐ¸Ð½Ñ ÑÑеÑголÑников задаÑÑÑÑ Ð¸Ð½Ð´ÐµÐºÑами @var{id} в маÑÑиве ÑоÑек @{@var{x}[i], @var{y}[i], @var{z}[i]@}. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ Ð¼Ð°ÑÑива @var{id} должен бÑÑÑ 3 или болÑÑе. ÐаÑÑÐ¸Ð²Ñ @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸Ð¼ÐµÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñе ÑазмеÑÑ. ÐаÑÑив @var{c} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ ÑÑеÑголÑников (еÑли @var{id}.ny=@var{c}.nx) или ÑÐ²ÐµÑ Ð²ÐµÑÑин (еÑли @var{x}.nx=@var{c}.nx). См. Ñакже @ref{TriPlot}, @ref{Cont}.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} TriCont (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""}, @code{num}=@code{7}, @code{float} zVal=@code{NAN})
+ at deftypefnx {Method on @code{mglGraph} (C++, Python)} @code{void} TriCont (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""}, @code{num}=@code{7}, @code{float} zVal=@code{NAN})
+ at deftypefnx {C function} @code{void} mgl_tricont_xyzc (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} c, @code{const char *}sch, @code{num}, @code{float} zVal)
+ at deftypefnx {C function} @code{void} mgl_tricont_xyz (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch, @code{num}, @code{float} zVal)
+ÐналогиÑно пÑедÑдÑÑÐµÐ¼Ñ Ñ Ð²ÐµÐºÑоÑом @var{v} из @var{num} ÑлеменÑов Ñавно ÑаÑпÑеделеннÑÑ
в инÑеÑвале [@var{Cmin}, @var{Cmax}].
+ at end deftypefn
+
+ at c ==================================================================
+ at node QuadPlot, Plots by formula, TriCont, Other plotting
+ at subsection QuadPlot
+ at cindex QuadPlot
+
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} QuadPlot (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const mglData &}c, @code{const char *}sch=@code{""})
+ at deftypefnx {Method on @code{mglGraph} (C++, Python)} @code{void} QuadPlot (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z, @code{const char *}sch=@code{""})
+ at deftypefnx {C function} @code{void} mgl_quadplot_xyz (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const char *}sch)
+ at deftypefnx {C function} @code{void} mgl_quadplot_xyzc (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z, @code{const HMDT} c, @code{const char *}sch)
+РиÑÑÐµÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ Ð¸Ð· ÑеÑÑÑеÑ
ÑголÑников. ÐеÑÑÐ¸Ð½Ñ ÑеÑÑÑеÑ
ÑголÑников задаÑÑÑÑ Ð¸Ð½Ð´ÐµÐºÑами @var{id} в маÑÑиве ÑоÑек @{@var{x}[i], @var{y}[i], @var{z}[i]@}. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑÑаÑÐ°Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ Ð¼Ð°ÑÑива @var{id} должен бÑÑÑ 4 или болÑÑе. ÐаÑÑÐ¸Ð²Ñ @var{x}, @var{y}, @var{z} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸Ð¼ÐµÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñе ÑазмеÑÑ. ÐаÑÑив @var{c} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ ÑеÑÑÑеÑ
ÑголÑников (еÑли @var{id}.ny=@var{c}.nx) или ÑÐ²ÐµÑ Ð²ÐµÑÑин (еÑли @var{x}.nx=@var{c}.nx). См. Ñакже @ref{TriPlot}.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglGraph} (C++, Python)} @code{void} QuadPlot (@code{const mglData &}id, @code{const mglData &}x, @code{const mglData &}y, @code{const char *}sch=@code{""}, @code{float} zVal=@code{NAN})
+ at deftypefnx {C function} @code{void} mgl_quadplot_xy (@code{HMGL} gr, @code{const HMDT} id, @code{const HMDT} x, @code{const HMDT} y, @code{const char *}sch, @code{float} zVal)
+Ðак пÑедÑдÑÑий Ñ @var{z}[i]=@var{zVal}.
+ at end deftypefn
+
+ at c ==================================================================
+ at node Plots by formula, SimplePlot, QuadPlot, Other plotting
@subsection ÐÑаÑики ÑÑнкÑий
@cindex Plot
@cindex Surf
@@ -2395,7 +2481,7 @@ gr->ContZ(c.Sum("z"),0,-1);
@cindex Fit2
@cindex Fit3
-ÐÑи ÑÑнкÑии подбиÑаÑÑ Ð¿Ð°ÑамеÑÑÑ ÑÑнкÑии Ð´Ð»Ñ Ð½Ð°Ð¸Ð»ÑÑÑей аппÑокÑимаÑии даннÑÑ
, Ñ.е. минимизиÑÑÑÑ ÑÑÐ¼Ð¼Ñ @math{\sum_i (f(x_i, y_i, z_i) - a_i)^2/s_i^2}. ÐÑи ÑÑом аппÑокÑимиÑÑÑÑÐ°Ñ ÑÑнкÑÐ¸Ñ @samp{f} Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð²Ð¸ÑеÑÑ Ð¾Ñ 1 аÑгÑменÑÑ @samp{x} (1D ÑлÑÑай), Ð¾Ñ Ð´Ð²ÑÑ
аÑгÑменÑов @samp{x,y} (2D ÑлÑÑай) или Ð¾Ñ ÑÑеÑ
аÑгÑменÑов @samp{x,y,z} (3D ÑлÑÑай). ФÑнкÑÐ¸Ñ @samp{f} Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð²Ð¸ÑеÑÑ Ð¾Ñ Ð¿Ð°ÑамеÑÑов. СпиÑок паÑамеÑÑов задаеÑÑÑ ÑÑÑокой @var{var} (напÑимеÑ, @samp{abcd}). ÐбÑÑно полÑзоваÑÐµÐ»Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ пÑедоÑÑавиÑÑ Ð½Ð°ÑалÑнÑе знаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов в пеÑеменной @var{ini}. Ðднако, пÑи его оÑÑÑÑÑÑвии иÑполÑзÑÑÑÑÑ Ð½ÑлевÑе знаÑениÑ. ÐаÑамеÑÑ @var{print}=@code{true} вклÑÑÐ°ÐµÑ Ð²Ñвод найденной ÑоÑмÑÐ»Ñ Ð² @var{Message} (@pxref{Error handling}).
+ÐÑи ÑÑнкÑии подбиÑаÑÑ Ð¿Ð°ÑамеÑÑÑ ÑÑнкÑии Ð´Ð»Ñ Ð½Ð°Ð¸Ð»ÑÑÑей аппÑокÑимаÑии даннÑÑ
, Ñ.е. минимизиÑÑÑÑ ÑÑÐ¼Ð¼Ñ @math{\sum_i (f(x_i, y_i, z_i) - a_i)^2/s_i^2}. ÐÑи ÑÑом аппÑокÑимиÑÑÑÑÐ°Ñ ÑÑнкÑÐ¸Ñ @samp{f} Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð²Ð¸ÑеÑÑ Ð¾Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ аÑгÑменÑа @samp{x} (1D ÑлÑÑай), Ð¾Ñ Ð´Ð²ÑÑ
аÑгÑменÑов @samp{x,y} (2D ÑлÑÑай) или Ð¾Ñ ÑÑеÑ
аÑгÑменÑов @samp{x,y,z} (3D ÑлÑÑай). ФÑнкÑÐ¸Ñ @samp{f} Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð²Ð¸ÑеÑÑ Ð¾Ñ Ð¿Ð°ÑамеÑÑов. СпиÑок паÑамеÑÑов задаеÑÑÑ ÑÑÑокой @var{var} (напÑимеÑ, @samp{abcd}). ÐбÑÑно полÑзоваÑÐµÐ»Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ пÑедоÑÑавиÑÑ Ð½Ð°ÑалÑнÑе знаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов в пеÑеменной @var{ini}. Ðднако, пÑи его оÑÑÑÑÑÑвии иÑполÑзÑÑÑÑÑ Ð½ÑлевÑе знаÑениÑ. ÐаÑамеÑÑ @var{print}=@code{true} вклÑÑÐ°ÐµÑ Ð²Ñвод найденной ÑоÑмÑÐ»Ñ Ð² @var{Message} (@pxref{Error handling}).
ФÑнкÑии Fit() и FitS() не ÑиÑÑÑÑ Ð¿Ð¾Ð»ÑÑеннÑе маÑÑивÑ. Ðни заполнÑÑÑ Ð¼Ð°ÑÑив @var{fit} по ÑоÑмÑле @samp{f} Ñ Ð½Ð°Ð¹Ð´ÐµÐ½Ð½Ñми коÑÑÑиÑиенÑами и возвÑаÑаÑÑ @math{\chi^2} оÑÐ¸Ð±ÐºÑ Ð°Ð¿Ð¿ÑокÑимаÑии. ÐÑи ÑÑом, кооÑдинаÑÑ @samp{x,y,z} ÑавноÑаÑпÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð² инÑеÑвале @var{Min}-- at var{Max}. ЧиÑло ÑоÑек в @var{fit} вÑбиÑаеÑÑÑ Ð¼Ð°ÐºÑималÑнÑм из ÑазмеÑа маÑÑива @var{fit} и знаÑÐµÐ½Ð¸Ñ Ð¿ÐµÑеменной @var{FitPnts}. ФÑнкÑии иÑполÑзÑÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾ÑÐµÐºÑ GSL. @sref{Fitting sample}
diff --git a/texinfo/data_en.texi b/texinfo/data_en.texi
index c1a1681..ffc8eeb 100644
--- a/texinfo/data_en.texi
+++ b/texinfo/data_en.texi
@@ -1,8 +1,7 @@
@c ------------------------------------------------------------------
- at node mglData class, Other classes, Widget classes, Top
@chapter mglData class
-Class for working with data array. This class is defined in @code{#include <mgl/mgl_data.h>}. The class has functions for easy and safe allocation, resizing, loading and saving, modifying of data arrays. Also it can numerically differentiate and integrate data, interpolate, fill data by formula and so on. Class supports data with dimensions up to 3 (like function of 3 variables - x,y,z). The internal representation of numbers is float. Float type was chosen because it has smaller size in memory and usually it has enough precision in plotting purposes.
+Class for working with data array. This class is defined in @code{#include <mgl/mgl_data.h>}. The class has functions for easy and safe allocation, resizing, loading and saving, modifying of data arrays. Also it can numerically differentiate and integrate data, interpolate, fill data by formula and so on. Class supports data with dimensions up to 3 (like function of 3 variables -- x,y,z). The internal representation of numbers is float. Float type was chosen because it has smaller size in memory and usually it has enough precision in plotting purposes.
@menu
* Public variables::
@@ -11,7 +10,7 @@ Class for working with data array. This class is defined in @code{#include <mgl/
* Rearrange::
* File I/O::
* Make another data::
-* Functions on direction::
+* Change data::
* Interpolation::
* Informational functions::
* Operators::
@@ -88,9 +87,9 @@ Allocates memory and copies the data from the @code{gsl_vector *} structure.
@deftypefnx {C function} @code{void} mgl_data_set_matrix (@code{HMDT} dat, @code{gsl_matrix *}m)
Allocates memory and copies the data from the @code{gsl_matrix *} structure.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{inline void} Set (@code{const mglData &}dat)
- at deftypefnx {C function} @code{void} mgl_data_set (@code{HMDT} dat, @code{const HMDT} d)
-Copies the data from mglData instance @var{dat}.
+ at deftypefn {Method on @code{mglData} (C++, Python)} @code{inline void} Set (@code{const mglData &}from)
+ at deftypefnx {C function} @code{void} mgl_data_set (@code{HMDT} dat, @code{const HMDT} from)
+Copies the data from mglData instance @var{from}.
@end deftypefn
@deftypefn {Method on @code{mglData} (C++)} @code{void} Set (@code{const std::vector<int> &}d)
@@ -122,14 +121,11 @@ Fills the value of array according to the formula in string @var{eq}. Formula is
@end deftypefn
@deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Modify (@code{const char *}eq, @code{int} dim=@code{0})
- at deftypefnx {C function} @code{void} mgl_data_modify (@code{HMDT} dat, @code{const char *}eq, @code{int} dim)
-Function fills the value of array according to the formula in string @var{eq}. Formula is an arbitrary expression depending on variables @samp{x}, @samp{y}, @samp{z}, @samp{u}. Coordinates @samp{x}, @samp{y}, @samp{z} are data indexes normalized in range [0,1]. Variable @samp{u} is the original value of the array. Modification will be fulfilled only for slices >=@var{dim}.
- at end deftypefn
-
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Modify (@code{const char *}eq, @code{const mglData &}v)
+ at deftypefnx {Method on @code{mglData} (C++, Python)} @code{void} Modify (@code{const char *}eq, @code{const mglData &}v)
@deftypefnx {Method on @code{mglData} (C++, Python)} @code{void} Modify (@code{const char *}eq, @code{const mglData &}v, @code{const mglData &}w)
+ at deftypefnx {C function} @code{void} mgl_data_modify (@code{HMDT} dat, @code{const char *}eq, @code{int} dim)
@deftypefnx {C function} @code{void} mgl_data_modify_vw (@code{HMDT} dat, @code{const char *}eq, @code{const HMDT} v, @code{const HMDT} w)
-Function fills the value of array according to the formula in string @var{eq}. Formula is an arbitrary expression depending on variables @samp{x}, @samp{y}, @samp{z}, @samp{u}, @samp{v}, @samp{w}. Coordinates @samp{x}, @samp{y}, @samp{z} are data indexes normalized in range [0,1]. Variable @samp{u} is the original value of the array. Variables @samp{v} and @samp{w} are values of @var{vdat}, @var{wdat}.
+Fills the value of array according to the formula in string @var{eq}. Formula is an arbitrary expression depending on variables @samp{x}, @samp{y}, @samp{z}, @samp{u}, @samp{v}, @samp{w}. Coordinates @samp{x}, @samp{y}, @samp{z} are supposed to be normalized in range [0,1] (in difference from @code{Fill} functions). Variable @samp{u} is the original value of the array. Variables @samp{v} and @samp{w} are values of @var{vdat}, @var{wdat} which can be @code{NULL} (i.e. can be omitted). If @var{dim}>0 is specified then modification will be fulfilled only for slices >=@var{dim}.
@end deftypefn
@deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Put (@code{float} val, @code{int} i=@code{-1}, @code{int} j=@code{-1}, @code{int} k=@code{-1})
@@ -202,7 +198,7 @@ Transposes (shift order of) dimensions of the data. New order of dimensions is s
@end deftypefn
@deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Squeeze (@code{int} rx, @code{int} ry=@code{1}, @code{int} rz=@code{1}, @code{bool} smooth=@code{false})
@deftypefnx {C function} @code{void} mgl_data_squeeze (@code{HMDT} dat, @code{int} rx, @code{int} ry, @code{int} rz, @code{int} smooth)
-Reduces the data size by excluding data elements which indexes are not divisible by @var{rx}, @var{ry}, @var{rz} correspondingly. Parameter @var{squeeze} set to use smoothing
+Reduces the data size by excluding data elements which indexes are not divisible by @var{rx}, @var{ry}, @var{rz} correspondingly. Parameter @var{smooth} set to use smoothing
@iftex
(i.e. @math{a_{out}[i]=\sum_{j=i,i+r}a[j]/r}) or not (i.e. @math{a_{out}[i]=a[j*r]}).
@end iftex
@@ -249,15 +245,6 @@ Delete @var{num} slices along @var{dir}-direction at position @var{pos}.
@node File I/O, Make another data, Rearrange, mglData class
@section File I/O
@cindex Read
- at cindex ReadMat
- at cindex ReadAll
- at cindex ReadRange
- at cindex ReadHDF
- at cindex Save
- at cindex SaveHDF
- at cindex Export
- at cindex Import
-
@deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Read (@code{const char *}fname)
@deftypefnx {C function} @code{void} mgl_data_read (@code{HMDT} dat, @code{const char *}fname)
Reads data from tab-separated text file with auto determining sizes of the data.
@@ -266,58 +253,55 @@ Reads data from tab-separated text file with auto determining sizes of the data.
@deftypefnx {C function} @code{void} mgl_data_read_dim (@code{HMDT} dat, @code{const char *}fname, @code{int} mx, @code{int} my, @code{int} mz)
Reads data from text file with specified data sizes. This function does nothing if one of parameters @var{mx}, @var{my} or @var{mz} is zero or negative.
@end deftypefn
+ at cindex ReadMat
@deftypefn {Method on @code{mglData} (C++, Python)} @code{void} ReadMat (@code{const char *}fname, @code{int} dim=@code{2})
@deftypefnx {C function} @code{void} mgl_data_read_mat (@code{HMDT} dat, @code{const char *}fname, @code{int} dim)
Read data from text file with size specified at beginning of the file by first @var{dim} numbers. At this, variable @var{dim} set data dimensions.
@end deftypefn
+ at cindex ReadRange
@deftypefn {Method on @code{mglData} (C++, Python)} @code{void} ReadRange (@code{const char *}templ, @code{float} from, @code{float} to, @code{float} step=@code{1.f}, @code{bool} as_slice=@code{false})
Join data arrays from several text files. The file names are determined by function call @code{sprintf(fname,templ,val);}, where @var{val} changes from @var{from} to @var{to} with step @var{step}. The data load one-by-one in the same slice if @var{as_slice}=@code{false} or as slice-by-slice if @var{as_slice}=@code{true}.
@end deftypefn
+ at cindex ReadAll
@deftypefn {Method on @code{mglData} (C++, Python)} @code{void} ReadAll (@code{const char *}templ, @code{bool} as_slice=@code{false})
Join data arrays from several text files which filenames satisfied the template @var{templ} (for example, @var{templ}=@code{"t_*.dat"}). The data load one-by-one in the same slice if @var{as_slice}=@code{false} or as slice-by-slice if @var{as_slice}=@code{true}.
@end deftypefn
+ at cindex Save
@deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Save (@code{const char *}fname, @code{int} ns=@code{-1}) @code{const}
@deftypefnx {C function} @code{void} mgl_data_save (@code{const HMDT} dat, @code{const char *}fname, @code{int} ns)
-Saves the whole data array (for @var{ns}=@code{-1}) or only ns-th slice to text file. If @var{ns}>0 then only @var{ns}-th slice (or column for 2D array) will be saved.
+Saves the whole data array (for @var{ns}=@code{-1}) or only @var{ns}-th slice to text file.
@end deftypefn
+ at cindex ReadHDF
@deftypefn {Method on @code{mglData} (C++, Python)} @code{void} ReadHDF (@code{const char *}fname, @code{const char *}dname)
-Reads data array named @var{dname} from HDF file. This function does nothing if NO_HDF5 was defined during library compilation.
+Reads data array named @var{dname} from HDF5 or HDF4 file. This function does nothing if NO_HDF5|NO_HDF4 was defined during library compilation.
@end deftypefn
+ at cindex SaveHDF
@deftypefn {Method on @code{mglData} (C++, Python)} @code{void} SaveHDF (@code{const char *}fname, @code{const char *}dname, @code{bool} rewrite=@code{false}) @code{const}
-Saves data array named @var{dname} from HDF file. This function does nothing if NO_HDF5 was defined during library compilation.
+Saves data array named @var{dname} from HDF5 or HDF4 file. This function does nothing if NO_HDF5|NO_HDF4 was defined during library compilation.
@end deftypefn
+ at cindex Import
@deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Import (@code{const char *}fname, @code{const char *}scheme, @code{float} v1=@code{0}, float v2=@code{1})
@deftypefnx {C function} @code{void} mgl_data_import (@code{HMDT} dat, @code{const char *}fname, @code{const char *}scheme, @code{float} v1, float v2)
Reads data from bitmap file (now support only PNG format). The RGB values of bitmap pixels are transformed to float values in range [@var{v1}, @var{v2}] using color scheme @var{scheme} (@pxref{Color scheme}).
@end deftypefn
+ at cindex Export
@deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Export (@code{const char *}fname, @code{const char *}scheme, @code{float} v1=@code{0}, float v2=@code{0}, @code{int} ns=@code{-1}) const
@deftypefnx {C function} @code{void} mgl_data_export (@code{HMDT} dat, @code{const char *}fname, @code{const char *}scheme, @code{float} v1, float v2, @code{int} ns) const
Saves data matrix (or @code{ns}-th slice for 3d data) to bitmap file (now support only PNG format). The data values are transformed from range [@var{v1}, @var{v2}] to RGB pixels of bitmap using color scheme @var{scheme} (@pxref{Color scheme}). If @var{v1}>=@var{v2} then the values of @var{v1}, @var{v2} are automatically determined as minimal and maximal value of the data array.
@end deftypefn
@c ------------------------------------------------------------------
- at node Make another data, Functions on direction, File I/O, mglData class
+ at node Make another data, Change data, File I/O, mglData class
@section Make another data
- at cindex SubData
- at cindex Column
- at cindex SetColumnId
- at cindex Hist
- at cindex Momentum
- at cindex Sum
- at cindex Max
- at cindex Min
- at cindex Combine
- at cindex Evaluate
- at cindex Resize
- at cindex Trace
+ at cindex SubData
@deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} SubData (@code{int} xx, @code{int} yy=@code{-1}, @code{int} zz=@code{-1}) @code{const}
@deftypefnx {C function} @code{HMDT} mgl_data_subdata (@code{const HMDT} dat, @code{int} xx, @code{int} yy, @code{int} zz)
-Extracts sub-array data from the original data array keeping fixed positive index. For example @code{SubData(-1,2)} extracts 3d row (indexes are zero based), @code{SubData(4,-1)} extracts 5th column, @code{SubData(-1,-1,3)} extracts 4th slice and so on. The most convenient way is to use this function as initialization of other @code{mglData} variable like @code{mglData a1(a.SubData(-1,-1,3))}.
+Extracts sub-array data from the original data array keeping fixed positive index. For example @code{SubData(-1,2)} extracts 3d row (indexes are zero based), @code{SubData(4,-1)} extracts 5th column, @code{SubData(-1,-1,3)} extracts 4th slice and so on.
@end deftypefn
@deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} SubData (@code{const mglData &}xx, @code{const mglData &}yy, @code{const mglData &}zz) @code{const}
@@ -325,19 +309,24 @@ Extracts sub-array data from the original data array keeping fixed positive inde
Extracts sub-array data from the original data array for indexes specified by arrays @var{xx}, @var{yy}, @var{zz} (indirect access). The resulting array have the same dimensions as input arrays for 2D and 3D arguments. This function work like previous one for 1D arguments (or numbers). The dimensions of all argument must be the same if they are 2D or 3D arrays.
@end deftypefn
+ at cindex Column
@deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} Column (@code{const char *}eq) @code{const}
@deftypefnx {C function} @code{HMDT} mgl_data_column (@code{const HMDT} dat, @code{const char *}eq)
Get column (or slice) of the data filled by formula @var{eq} of other named columns. For example, @code{Column("n*w^2/exp(t)");}. The column ids must be defined first by @code{SetColumnId()} function.
@end deftypefn
+
+ at cindex SetColumnId
@deftypefn {Method on @code{mglData} (C++, Python)} @code{void} SetColumnId (@code{const char *}ids)
@deftypefnx {C function} @code{void} mgl_data_set_id (@code{HMDT} dat, @code{const char *}ids)
Set the symbol id for data columns. The string must contain one symbol 'a'...'z' per column (without spaces).
@end deftypefn
+ at cindex Trace
@deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} Trace () @code{const}
Gets array of diagonal elements a[i,i] (for 2D case) or a[i,i,i] (for 3D case) where i=0...nx-1. Function return copy of itself for 1D case. Data array must have dimensions ny,nz >= nx or ny,nz = 1.
@end deftypefn
+ at cindex Hist
@deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} Hist (@code{int} n, @code{float} v1=@code{0}, @code{float} v2=@code{1}, @code{int} nsub=@code{0}) @code{const}
@deftypefnx {C function} @code{HMDT} mgl_data_hist (@code{const HMDT} dat, @code{int} n, @code{float} v1, @code{float} v2, @code{int} nsub)
Creates @var{n}-th points distribution of the data values in range [@var{v1}, @var{v2}]. Parameter @var{nsub} define the number of additional interpolated points (for smoothness of histogram).
@@ -346,6 +335,8 @@ Creates @var{n}-th points distribution of the data values in range [@var{v1}, @v
@deftypefnx {C function} @code{HMDT} mgl_data_hist_w (@code{const HMDT} dat, @code{const HMDT} w, @code{int} n, @code{float} v1, @code{float} v2, @code{int} nsub)
Creates @var{n}-th points distribution of the data values in range [@var{v1}, @var{v2}]. Array @var{w} specifies weights of the data elements. Parameter @var{nsub} define the number of additional interpolated points (for smoothness of histogram).
@end deftypefn
+
+ at cindex Momentum
@deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} Momentum (@code{char} dir, @code{const char *}how) @code{const}
@deftypefnx {C function} @code{HMDT} mgl_data_momentum (@code{const HMDT} dat, @code{char} dir, @code{const char *}how)
Get momentum (1D-array) of the data along direction @var{dir}. String @var{how} contain kind of momentum. The momentum is defined like as
@@ -358,33 +349,39 @@ res_k = \sum_ij how(x_i,y_j,z_k) a_ij/ \sum_ij a_ij
if @var{var}=@samp{z} and so on. Coordinates @samp{x}, @samp{y}, @samp{z} are data indexes normalized in range [0,1].
@end deftypefn
+ at cindex Sum
@deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} Sum (@code{const char *}dir) @code{const}
@deftypefnx {C function} @code{HMDT} mgl_data_sum (@code{const HMDT} dat, @code{const char *}dir)
Gets array which is the result of summation in given direction or direction(s).
@end deftypefn
+ at cindex Max
@deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} Max (@code{const char *}dir) @code{const}
@deftypefnx {C function} @code{HMDT} mgl_data_max_dir (@code{const HMDT} dat, @code{const char *}dir)
Gets array which is the maximal data values in given direction or direction(s).
@end deftypefn
+ at cindex Min
@deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} Min (@code{const char *}dir) @code{const}
@deftypefnx {C function} @code{HMDT} mgl_data_min_dir (@code{const HMDT} dat, @code{const char *}dir)
Gets array which is the maximal data values in given direction or direction(s).
@end deftypefn
+ at cindex Combine
@deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} Combine (@code{const mglData &}a) @code{const}
@deftypefnx {C function} @code{HMDT} mgl_data_combine (@code{const HMDT} dat, @code{const HMDT} a)
Return direct multiplication of arrays (like, res[i,j] = this[i]*a[j] and so on).
@end deftypefn
+ at cindex Evaluate
@deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} Evaluate (@code{const mglData &}idat, @code{bool} norm=@code{true}) @code{const}
@deftypefnx {Method on @code{mglData} (C++, Python)} @code{mglData} Evaluate (@code{const mglData &}idat, @code{const mglData &}jdat, @code{bool} norm=@code{true}) @code{const}
@deftypefnx {Method on @code{mglData} (C++, Python)} @code{mglData} Evaluate (@code{const mglData &}idat, @code{const mglData &}jdat, @code{const mglData &}kdat, @code{bool} norm=@code{true}) @code{const}
@deftypefnx {C function} @code{HMDT} mgl_data_evaluate_i (@code{const HMDT} dat, @code{const HMDT} idat, @code{int} norm)
@deftypefnx {C function} @code{HMDT} mgl_data_evaluate_ij (@code{const HMDT} dat, @code{const HMDT} idat, @code{const HMDT} jdat, @code{int} norm)
@deftypefnx {C function} @code{HMDT} mgl_data_evaluate_ijk (@code{const HMDT} dat, @code{const HMDT} idat, @code{const HMDT} jdat, @code{const HMDT} kdat, @code{int} norm)
-Get array which values is result of interpolation of original array for coordinates from other arrays. All dimensions must be the same for data @var{idat}, @var{jdat}, @var{kdat}. Coordinates from @var{idat}, @var{jdat}, @var{kdat} are supposed to be normalized in range [0,1] (if @var{norm}=@code{true}) or in range [0,nx], [0,ny], [0,nz] correspondingly.
+Get array which values is result of interpolation of original array for coordinates from other arrays. All dimensions must be the same for data @var{idat}, @var{jdat}, @var{kdat}. Coordinates from @var{idat}, @var{jdat}, @var{kdat} are supposed to be normalized in range [0,1] (if @var{norm}=@code{true}) or in ranges [0,nx], [0,ny], [0,nz] correspondingly.
@end deftypefn
+ at cindex Resize
@deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} Resize (@code{int} mx, @code{int} my=@code{1}, @code{int} mz=@code{1}, @code{float} x1=@code{0}, @code{float} x2=@code{1}, @code{float} y1=@code{0}, @code{float} y2=@code{1}, @code{float} z1=@code{0}, @code{float} z2=@code{1}) @code{const}
@deftypefnx {C function} @code{HMDT} mgl_data_resize (@code{const HMDT} dat, @code{int} mx, @code{int} my, @code{int} mz)
@deftypefnx {C function} @code{HMDT} mgl_data_resize_box (@code{const HMDT} dat, @code{int} mx, @code{int} my, @code{int} mz, @code{float} x1, @code{float} x2, @code{float} y1, @code{float} y2, @code{float} z1, @code{float} z2)
@@ -392,72 +389,108 @@ Resizes the data to new size @var{mx}, @var{my}, @var{mz} from box (part) [@var{
@end deftypefn
@c ------------------------------------------------------------------
- at node Functions on direction, Interpolation, Make another data, mglData class
- at section Functions on direction
- at cindex CumSum
- at cindex Integral
- at cindex Diff
- at cindex Diff2
- at cindex Swap
- at cindex Mirror
- at cindex Sew
- at cindex Smooth
- at cindex Envelop
- at cindex Norm
- at cindex NormSl
+ at node Change data, Interpolation, Make another data, mglData class
+ at section Change data
These functions change the data in some direction like differentiations, integrations and so on. The direction in which the change will applied is specified by the string parameter, which may contain @samp{x}, @samp{y} or @samp{z} characters for 1-st, 2-nd and 3-d dimension correspondengly.
+ at cindex CumSum
@deftypefn {Method on @code{mglData} (C++, Python)} @code{void} CumSum (@code{const char *}dir)
@deftypefnx {C function} @code{void} mgl_data_cumsum (@code{HMDT} dat, @code{const char *}dir)
-CCumulative summation of the data in given direction or directions.
+Cumulative summation of the data in given direction or directions.
@end deftypefn
+
+ at cindex Integral
@deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Integral (@code{const char *}dir)
@deftypefnx {C function} @code{void} mgl_data_integral (@code{HMDT} dat, @code{const char *}dir)
Integrates (like cumulative summation) the data in given direction or directions.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Diff (@code{const char *}dir)
- at deftypefnx {C function} @code{void} mgl_data_diff (@code{HMDT} dat, @code{const char *}dir)
+
+ at cindex Diff
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Diff (@code{const char *}dir)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_diff (@code{HMDT} dat, @code{const char *}dir)
Differentiates the data in given direction or directions.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Diff (@code{const mglData &}x, @code{const mglData &}y)
- at deftypefnx {Method on @code{mglData} (C++, Python)} @code{void} Diff (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z)
- at deftypefnx {C function} @code{void} mgl_data_diff_par (@code{HMDT} dat, @code{const HMDT} x, @code{const HMDT}y, @code{const HMDT}z)
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Diff (@code{const mglData &}x, @code{const mglData &}y)
+ at deftypefnx {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Diff (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_diff_par (@code{HMDT} dat, @code{const HMDT} x, @code{const HMDT}y, @code{const HMDT}z)
Differentiates the data specified parametrically in direction @var{x} with @var{y}, @var{z}=constant. Parametrical differentiation uses the formula (for 2D case): @math{da/dx = (a_j*y_i-a_i*y_j)/(x_j*y_i-x_i*y_j)} where @math{a_i=da/di, a_j=da/dj} denotes usual differentiation along 1st and 2nd dimensions. The similar formula is used for 3D case. Note, that you may change the order of arguments -- for example, if you have 2D data a(i,j) which depend on coordinates @{x(i,j), y(i,j)@} then usual derivative along @samp{x} will be @code{Diff(x,y);} and usual derivative along @samp{y} will be @code{Diff(y,x);}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Diff2 (@code{const char *}dir)
- at deftypefnx {C function} @code{void} mgl_data_diff2 (@code{const char *}dir)
+ at cindex Diff2
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Diff2 (@code{const char *}dir)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_diff2 (@code{const char *}dir)
Double-differentiates (like Laplace operator) the data in given direction.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Swap (@code{const char *}dir)
- at deftypefnx {C function} @code{void} mgl_data_swap (@code{HMDT} dat, @code{const char *}dir)
+
+ at cindex SinFFT
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} SinFFT (@code{const char *}dir)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_sinfft (@code{HMDT} dat, @code{const char *}dir)
+Do Sine transform of the data in given direction or directions. The Sine transform is @math{\sum a_i \sin(k i)}.
+ at end deftypefn
+
+ at cindex CosFFT
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} CosFFT (@code{const char *}dir)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_cosfft (@code{HMDT} dat, @code{const char *}dir)
+Do Cosine transform of the data in given direction or directions. The Cosine transform is @math{\sum a_i \cos(k i)}.
+ at end deftypefn
+
+ at cindex Hankel
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Hankel (@code{const char *}dir)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_hankel (@code{HMDT} dat, @code{const char *}dir)
+Do Hankel transform of the data in given direction or directions. The Hankel transform is @math{\sum a_i J_0(k i)}.
+ at end deftypefn
+
+
+ at cindex Swap
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Swap (@code{const char *}dir)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_swap (@code{HMDT} dat, @code{const char *}dir)
Swaps the left and right part of the data in given direction (useful for Fourier spectrum).
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Mirror (@code{const char *}dir)
- at deftypefnx {C function} @code{void} mgl_data_mirror (@code{HMDT} dat, @code{const char *}dir)
+
+ at cindex Roll
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Roll (@code{char} dir, @code{num})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_roll (@code{HMDT} dat, @code{char} dir, @code{num})
+Rolls the data along direction @var{dir}. Resulting array will be out[i] = ini[(i+num)%nx] if @code{dir='x'}.
+ at end deftypefn
+
+ at cindex Mirror
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Mirror (@code{const char *}dir)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_mirror (@code{HMDT} dat, @code{const char *}dir)
Mirror the left-to-right part of the data in given direction. Looks like change the value index @var{i}->@var{n-i}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Sew (@code{const char *}dir, @code{float} da=@code{2*M_PI})
- at deftypefnx {C function} @code{void} mgl_data_sew (@code{HMDT} dat, @code{const char *}dir, @code{float} da)
+
+ at cindex Sew
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Sew (@code{const char *}dir, @code{float} da=@code{2*M_PI})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_sew (@code{HMDT} dat, @code{const char *}dir, @code{float} da)
Remove value steps (like phase jumps after inverse trigonometric functions) with period @var{da} in given direction.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Smooth (@code{int} Type, @code{const char *}dir, @code{float} delta=@code{0})
- at deftypefnx {C function} @code{void} mgl_data_smooth (@code{HMDT} dat, @code{int} Type, @code{float} delt, @code{const char *}dirs)
+
+ at cindex Smooth
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Smooth (@code{int} Type, @code{const char *}dir, @code{float} delta=@code{0})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_smooth (@code{HMDT} dat, @code{int} Type, @code{float} delt, @code{const char *}dirs)
Smooths the data on specified direction or directions by method @var{Type}. Now 4 methods are supported: @code{SMOOTH_NONE} does nothing for @var{delta}=0 or approaches data to zero with the step @var{delta}, @code{SMOOTH_LINE_3} linear averaging by 3 points, @code{SMOOTH_LINE_5} linear averaging by 5 points, @code{SMOOTH_QUAD_5} quadratic averaging by 5 points. Parameter @var{delta} forbids to change values of array more than @var{delta} from the original ones. String @var{dirs} specifies the dimensions which will be smoothed. It may contain characters: 'x' for 1st dimension, 'y' for 2nd dimension, 'z' for 3d dimension.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Smooth (@code{const char *}dir)
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Smooth (@code{const char *}dir)
Smooths the data on specified direction(s). This is the same as @code{Smooth()} but argument @var{Type} is specified in string as @samp{0} for @code{SMOOTH_NONE}, @samp{3} for @code{SMOOTH_LINE_3}, @samp{5} for @code{SMOOTH_LINE_5}. If string @var{dir} don't contain digits @samp{035} then @var{Type}=@code{SMOOTH_QUAD_5} is used.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Envelop (@code{char} dir=@code{'x'})
- at deftypefnx {C function} @code{void} mgl_data_envelop (@code{HMDT} dat, @code{char} dir)
+
+ at cindex Envelop
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Envelop (@code{char} dir=@code{'x'})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_envelop (@code{HMDT} dat, @code{char} dir)
Find envelop for data values along direction @var{dir}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} NormSl (@code{float} v1=@code{0}, @code{float} v2=@code{1}, @code{char} dir=@code{'z'}, @code{bool} keep_en=@code{true}, @code{bool} sym=@code{false})
- at deftypefnx {C function} @code{void} mgl_data_norm_slice (@code{HMDT} dat, @code{float} v1, @code{float} v2, @code{char} dir, @code{int} keep_en, @code{int} sym)
+ at cindex Norm
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Norm (@code{float} v1=@code{0}, @code{float} v2=@code{1}, @code{bool} sym=@code{false}, @code{int} dim=@code{0})
+Normalizes the data to range [@var{v1}, at var{v2}]. If flag @var{sym}=@code{true} then symmetrical interval [-max(|v1|,|v2|), max(|v1|,|v2|)] is used. Modification will be applied only for slices >=@var{dim}.
+ at end deftypefn
+
+ at cindex NormSl
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} NormSl (@code{float} v1=@code{0}, @code{float} v2=@code{1}, @code{char} dir=@code{'z'}, @code{bool} keep_en=@code{true}, @code{bool} sym=@code{false})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_norm_slice (@code{HMDT} dat, @code{float} v1, @code{float} v2, @code{char} dir, @code{int} keep_en, @code{int} sym)
Normalizes data slice-by-slice along direction @var{dir} the data in slices to range [@var{v1}, at var{v2}]. If flag @var{sym}=@code{true} then symmetrical interval [-max(|v1|,|v2|), max(|v1|,|v2|)] is used. If @var{keep_en} is set then maximal value of k-th slice will be limited by
@iftex
@math{\sqrt{\sum a_{ij}(k)/\sum a_{ij}(0)}}.
@@ -466,40 +499,36 @@ Normalizes data slice-by-slice along direction @var{dir} the data in slices to r
@math{\sqrt@{\sum a_ij(k)/\sum a_ij(0)@}}.
@end ifnottex
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Norm (@code{float} v1=@code{0}, @code{float} v2=@code{1}, @code{bool} sym=@code{false}, @code{int} dim=@code{0})
-Normalizes the data to range [@var{v1}, at var{v2}]. If flag @var{sym}=@code{true} then symmetrical interval [-max(|v1|,|v2|), max(|v1|,|v2|)] is used. Modification will be applied only for slices >=@var{dim}.
- at end deftypefn
@c ------------------------------------------------------------------
- at node Interpolation, Informational functions, Functions on direction, mglData class
+ at node Interpolation, Informational functions, Change data, mglData class
@section Interpolation
@cindex Spline
- at cindex Spline1
- at cindex Linear
- at cindex Linear1
- at cindex Spline5
- at cindex v
-
@deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Spline (@code{float} x, @code{float} y=@code{0}, @code{float} z=@code{0}) @code{const}
@deftypefnx {C function} @code{float} mgl_data_spline (@code{const HMDT} dat, @code{float} x, @code{float} y, @code{float} z)
Interpolates data by cubic spline to the given point @var{x} in [0...nx-1], @var{y} in [0...ny-1], @var{z} in [0...nz-1].
@end deftypefn
+ at cindex Spline1
@deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Spline1 (@code{float} x, @code{float} y=@code{0}, @code{float} z=@code{0}) @code{const}
@deftypefnx {C function} @code{float} mgl_data_spline1 (@code{const HMDT} dat, @code{float} x, @code{float} y, @code{float} z)
Interpolates data by cubic spline to the given point @var{x}, @var{y}, @var{z} which assumed to be normalized in range [0, 1].
@end deftypefn
+ at cindex Linear
@deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Linear (@code{float} x, @code{float} y=@code{0}, @code{float} z=@code{0}) @code{const}
@deftypefnx {C function} @code{float} mgl_data_linear (@code{const HMDT} dat, @code{float} x, @code{float} y, @code{float} z)
Interpolates data by linear function to the given point @var{x} in [0...nx-1], @var{y} in [0...ny-1], @var{z} in [0...nz-1].
@end deftypefn
+ at cindex Linear1
@deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Linear1 (@code{float} x, @code{float} y=@code{0}, @code{float} z=@code{0}) @code{const}
@deftypefnx {C function} @code{float} mgl_data_linear1 (@code{const HMDT} dat, @code{float} x, @code{float} y, @code{float} z)
Interpolates data by linear function to the given point @var{x}, @var{y}, @var{z} which assumed to be normalized in range [0, 1].
@end deftypefn
+ at cindex v
@deftypefn {Method on @code{mglData} (C++, Python)} @code{float} v (@code{int} i, @code{int} j=@code{0}, @code{int} k=@code{0}) @code{const}
@deftypefnx {C function} @code{float} mgl_data_get_value (@code{const HMDT} dat, @code{int} i, @code{int} j, @code{int} k)
Gets the value in specified cell of the data with border checking.
@end deftypefn
+ at cindex Spline5
@deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Spline5 (@code{float} x, @code{float} y, @code{float} z, @code{float} &dx, @code{float} &dy, @code{float} &dz) @code{const}
Interpolate by 5-th order splain the data to given point @var{x}, @var{y}, @var{z} which normalized in range [0, 1] and evaluate its derivatives.
@end deftypefn
@@ -515,68 +544,67 @@ Gets the pointer to internal data array.
@node Informational functions, Operators, Interpolation, mglData class
@section Informational functions
@cindex PrintInfo
- at cindex Maximal
- at cindex Minimal
- at cindex Momentum
- at cindex Find
- at cindex Last
- at cindex FindAny
-
- at deftypefn {Method on @code{mglData} (C++)} @code{void} PrintInfo (@code{char *}buf, @code{bool} all=@code{false}) @code{const}
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++)} @code{void} PrintInfo (@code{char *}buf, @code{bool} all=@code{false}) @code{const}
Print information about the data (sizes and momentum) to string @var{buf}. Parameter @var{all} set to print most of information (if @code{true}) or just basic one like dimensions, maximal an minimal values.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++)} @code{void} PrintInfo (@code{FILE *}fp) @code{const}
-Print information about the data (sizes and momentum) to FILE (for example, stdout)
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++)} @code{void} PrintInfo (@code{FILE *}fp) @code{const}
+Print information about the data (sizes and momentum) to FILE (for example, stdout).
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Maximal () @code{const}
- at deftypefnx {C function} @code{float} mgl_data_max (@code{const HMDT} dat)
+ at cindex Maximal
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{float} Maximal () @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_max (@code{const HMDT} dat)
Gets maximal value of the data.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Minimal () @code{const}
- at deftypefnx {C function} @code{float} mgl_data_min (@code{HMDT} dat) @code{const}
+ at cindex Minimal
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{float} Minimal () @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_min (@code{HMDT} dat) @code{const}
Gets minimal value of the data.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Maximal (@code{int} &i, @code{int} &j, @code{int} &k) @code{const}
- at deftypefnx {C function} @code{float} mgl_data_max_int (@code{const HMDT} dat, @code{int} *i, @code{int} *j, @code{int} *k)
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{float} Maximal (@code{int} &i, @code{int} &j, @code{int} &k) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_max_int (@code{const HMDT} dat, @code{int} *i, @code{int} *j, @code{int} *k)
Gets maximal value of the data and its position in the array to variables @var{i}, @var{j}, @var{k}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Minimal (@code{int} &i, @code{int} &j, @code{int} &k) @code{const}
- at deftypefnx {C function} @code{float} mgl_data_min_int (@code{const HMDT} dat, @code{int} *i, @code{int} *j, @code{int} *k)
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{float} Minimal (@code{int} &i, @code{int} &j, @code{int} &k) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_min_int (@code{const HMDT} dat, @code{int} *i, @code{int} *j, @code{int} *k)
Gets minimal value of the data and its position in the array to variables @var{i}, @var{j}, @var{k}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Maximal (@code{float} &i, @code{float} &j, @code{float} &k) @code{const}
- at deftypefnx {C function} @code{float} mgl_data_max_real (@code{const HMDT} dat, @code{float} *x, @code{float} *y, @code{float} *z)
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{float} Maximal (@code{float} &i, @code{float} &j, @code{float} &k) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_max_real (@code{const HMDT} dat, @code{float} *x, @code{float} *y, @code{float} *z)
Gets maximal value of the data and its approximated (interpolated) position to variables @var{i}, @var{j}, @var{k}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Minimal (@code{float} &i, @code{float} &j, @code{float} &k) @code{const}
- at deftypefnx {C function} @code{float} mgl_data_min_real (@code{const HMDT} dat, @code{float} *x, @code{float} *y, @code{float} *z)
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{float} Minimal (@code{float} &i, @code{float} &j, @code{float} &k) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_min_real (@code{const HMDT} dat, @code{float} *x, @code{float} *y, @code{float} *z)
Gets minimal value of the data and its approximated (interpolated) position to variables @var{i}, @var{j}, @var{k}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Momentum (@code{char} dir, @code{float} &m, @code{float} &w) @code{const}
- at deftypefnx {C function} @code{float} mgl_data_momentum_mw (@code{const HMDT} dat, @code{char} dir, @code{float} *m, @code{float} *w)
+ at cindex Momentum
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{float} Momentum (@code{char} dir, @code{float} &m, @code{float} &w) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_momentum_mw (@code{const HMDT} dat, @code{char} dir, @code{float} *m, @code{float} *w)
Gets zero-momentum (energy, @math{I=\sum a_i}) and write first momentum (median, @math{m = \sum \xi_i a_i/I}) and second momentum (width, @math{w^2 = \sum (\xi_i-m)^2 a_i/I}) to variables. Here @math{\xi} is corresponding coordinate if @var{dir} is @samp{'x'}, @samp{'y'} or @samp{'z'}. Otherwise median is @math{m = \sum a_i/N}, width is @math{w^2 = \sum (a_i-m)^2/N}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++)} @code{float} Momentum (@code{char} dir, @code{float} &m, @code{float} &w, @code{float} &s, @code{float} &k) @code{const}
-Gets zero-momentum (energy, @math{I=\sum a_i}) and write first momentum (median, @math{m = \sum \xi_i a_i/I}), second momentum (width, @math{w^2 = \sum (\xi_i-m)^2 a_i/I}, third momentum (skewness, @math{s = \sum (\xi_i-m)^3 a_i/ I w^3}) and fourth momentum (kurtosis, @math{k = \sum (\xi_i-m)^4 a_i / 3 I w^4})) to variables. Here @math{\xi} is corresponding coordinate if @var{dir} is @samp{'x'}, @samp{'y'} or @samp{'z'}. Otherwise median is @math{m = \sum a_i/N}, width is @math{w^2 = \sum (a_i-m)^2/N} and so on.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++)} @code{float} Momentum (@code{char} dir, @code{float} &m, @code{float} &w, @code{float} &s, @code{float} &k) @code{const}
+Gets zero-momentum (energy, @math{I=\sum a_i}) and write first momentum (median, @math{m = \sum \xi_i a_i/I}), second momentum (width, @math{w^2 = \sum (\xi_i-m)^2 a_i/I}), third momentum (skewness, @math{s = \sum (\xi_i-m)^3 a_i/ I w^3}) and fourth momentum (kurtosis, @math{k = \sum (\xi_i-m)^4 a_i / 3 I w^4}) to variables. Here @math{\xi} is corresponding coordinate if @var{dir} is @samp{'x'}, @samp{'y'} or @samp{'z'}. Otherwise median is @math{m = \sum a_i/N}, width is @math{w^2 = \sum (a_i-m)^2/N} and so on.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Find (@code{const char *}cond, @code{int} &i, @code{int} &j, @code{int} &k) @code{const}
- at deftypefnx {C function} @code{float} mgl_data_first (@code{const HMDT} dat, @code{const char *}cond, @code{int} *i, @code{int} *j, @code{int} *k)
+ at cindex Find
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{float} Find (@code{const char *}cond, @code{int} &i, @code{int} &j, @code{int} &k) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_first (@code{const HMDT} dat, @code{const char *}cond, @code{int} *i, @code{int} *j, @code{int} *k)
Find position (after specified in @var{i}, @var{j}, @var{k}) of first nonzero value of formula @var{cond}. Function return the data value at found position.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Last (@code{const char *}cond, @code{int} &i, @code{int} &j, @code{int} &k) @code{const}
- at deftypefnx {C function} @code{float} mgl_data_last (@code{const HMDT} dat, @code{const char *}cond, @code{int} *i, @code{int} *j, @code{int} *k)
+ at cindex Last
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{float} Last (@code{const char *}cond, @code{int} &i, @code{int} &j, @code{int} &k) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_last (@code{const HMDT} dat, @code{const char *}cond, @code{int} *i, @code{int} *j, @code{int} *k)
Find position (before specified in @var{i}, @var{j}, @var{k}) of last nonzero value of formula @var{cond}. Function return the data value at found position.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{int} Find (@code{const char *}cond, @code{char} dir, @code{int} i=@code{0}, @code{int} j=@code{0}, @code{int} k=@code{0}) @code{const}
- at deftypefnx {C function} @code{float} mgl_data_find (@code{const HMDT} dat, @code{const char *}cond, @code{int} i, @code{int} j, @code{int} k)
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{int} Find (@code{const char *}cond, @code{char} dir, @code{int} i=@code{0}, @code{int} j=@code{0}, @code{int} k=@code{0}) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_find (@code{const HMDT} dat, @code{const char *}cond, @code{int} i, @code{int} j, @code{int} k)
Return position of first in direction @var{dir} nonzero value of formula @var{cond}. The search is started from point @{i,j,k@}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{bool} FindAny (@code{const char *}cond) @code{const}
- at deftypefnx {C function} @code{float} mgl_data_find_any (@code{const HMDT} dat, @code{const char *}cond)
+ at cindex FindAny
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{bool} FindAny (@code{const char *}cond) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_find_any (@code{const HMDT} dat, @code{const char *}cond)
Determines if any nonzero value of formula in the data array.
@end deftypefn
@@ -666,32 +694,32 @@ These functions are not methods of @code{mglData} class. However it have additio
@deftypefn {Global function} @code{mglData} mglTransform (@code{const mglData &}real, @code{const mglData &}imag, @code{const char *}type)
@deftypefnx {C function} @code{HMDT} mgl_transform (@code{const HMDT} real, @code{const HMDT} imag, @code{const char *}type)
-Do integral transformation of complex data @var{real}, @var{imag} on specified direction. Now only Fourier transformation is supported. The order of transformations is specified in string @var{type}: first character for x-dimension, second one for y-dimension, third one for z-dimension. The possible character are: @samp{f} is forward Fourier transformation, @samp{i} is inverse Fourier transformation, @samp{n} or @samp{ } is no transformation.
+Do integral transformation of complex data @var{real}, @var{imag} on specified direction. The order of transformations is specified in string @var{type}: first character for x-dimension, second one for y-dimension, third one for z-dimension. The possible character are: @samp{f} is forward Fourier transformation, @samp{i} is inverse Fourier transformation, @samp{s} is Sine transform, @samp{c} is Cosine transform, @samp{h} is Hankel transform, @samp{n} or @samp{ } is no transformation.
@end deftypefn
@deftypefn {Global function} @code{mglData} mglTransformA @code{const mglData &}ampl, @code{const mglData &}phase, @code{const char *}type)
@deftypefnx {C function} @code{HMDT} mgl_transform_a @code{const HMDT} ampl, @code{const HMDT} phase, @code{const char *}type)
-Do integral transformation of complex data @var{ampl}, @var{phase} on specified direction. Now only Fourier transformation is supported. The order of transformations is specified in string @var{type}: first character for x-dimension, second one for y-dimension, third one for z-dimension. The possible character are: @samp{f} is forward Fourier transformation, @samp{i} is inverse Fourier transformation, @samp{n} or @samp{ } is no transformation.
+The same as previous but with specified amplitude @var{ampl} and phase @var{phase} of complex numbers.
@end deftypefn
@deftypefn {Global function} @code{mglData} mglSTFA (@code{const mglData &}real, @code{const mglData &}imag, @code{int} dn, @code{char} dir=@code{'x'})
@deftypefnx {C function} @code{HMDT} mgl_data_stfa (@code{const HMDT} real, @code{const HMDT} imag, @code{int} dn, at code{char} dir)
-Short time Fourier analysis for real and imaginary parts. Output is amplitude of partial Fourier of length @var{dn}. For example if @var{dir}=@samp{x}, result will have size @{int(nx/dn), dn, ny@} and it will contain @math{res[i,j,k]=|\sum_d^dn exp(I*j*d)*(real[i*dn+d,k]+I*imag[i*dn+d,k])|/dn}.
+Short time Fourier transformation for real and imaginary parts. Output is amplitude of partial Fourier of length @var{dn}. For example if @var{dir}=@samp{x}, result will have size @{int(nx/dn), dn, ny@} and it will contain @math{res[i,j,k]=|\sum_d^dn exp(I*j*d)*(real[i*dn+d,k]+I*imag[i*dn+d,k])|/dn}.
@end deftypefn
@deftypefn {Global function} @code{mglData} mglPDE (@code{const char *}ham, @code{const mglData &}ini_re, @code{const mglData &}ini_im, @code{mglPoint} Min, @code{mglPoint} Max, @code{float} dz=@code{0.1}, @code{float} k0=@code{100})
@deftypefnx {C function} @code{HMDT} mgl_pde_solve (@code{HMGL} gr, @code{const char *}ham, @code{const HMDT} ini_re, @code{const HMDT} ini_im, @code{float} dz, @code{float} k0)
-Solves equation du/dz = i*k0*@var{ham}(p,q,x,y,z,|u|)[u], where p=-i/k0*d/dx, q=-i/k0*d/dy are pseudo-differential operators. Parameters @var{ini_re}, @var{ini_im} specify real and imaginary part of initial field distribution. Parameters @var{Min}, @var{Max} set the bounding box for the solution. Note, that really this ranges are increased by factor 3/2 for purpose of reducing reflection from boundaries. Parameter @var{dz} set the step along evolutionary coordinate z. At this moment, simplified form of function @var{ham} is supported -- all ``mixed'' terms (like @samp{x*p}->x*d/dx) are excluded. For example, in 2D case this function is effectively @math{ham = f(p,z) + g(x,z,u)}. However commutable combinations (like @samp{x*q}->x*d/dy) are allowed. Here variable @samp{u} is used for field amplitude |u|. This allow one solve nonlinear problems -- for example, for nonlinear Shrodinger equation you may set @code{ham="p^2 + q^2 - u^2"}. You may specify imaginary part for wave absorption, like @code{ham = "p^2 + i*x*(x>0)"}, but only if dependence on variable @samp{i} is linear (i.e. @math{ham = hre+i*him}). @sref{PDE sample}
+Solves equation du/dz = i*k0*@var{ham}(p,q,x,y,z,|u|)[u], where p=-i/k0*d/dx, q=-i/k0*d/dy are pseudo-differential operators. Parameters @var{ini_re}, @var{ini_im} specify real and imaginary part of initial field distribution. Parameters @var{Min}, @var{Max} set the bounding box for the solution. Note, that really this ranges are increased by factor 3/2 for purpose of reducing reflection from boundaries. Parameter @var{dz} set the step along evolutionary coordinate z. At this moment, simplified form of function @var{ham} is supported -- all ``mixed'' terms (like @samp{x*p}->x*d/dx) are excluded. For example, in 2D case this function is effectively @math{ham = f(p,z) + g(x,z,u)}. However commutable combinations (like @samp{x*q}->x*d/dy) are allowed. Here variable @samp{u} is used for field amplitude |u|. This allow one solve nonlinear problems -- for example, for nonlinear Shrodinger equation you may set @code{ham="p^2 + q^2 - u^2"}. You may specify imaginary part for wave absorption, like @code{ham = "p^2 + i*x*(x>0)"}, but only if dependence on variable @samp{i} is linear (i.e. @math{ham = hre+i*him}). @sref{PDE sample} @sref{PDE sample}
@end deftypefn
@deftypefn {Global function} @code{mglData} mglRay (@code{const char *}ham, @code{mglPoint} r0, @code{mglPoint} p0, @code{float} dt=@code{0.1}, @code{float} tmax=@code{10})
@deftypefnx {C function} @code{HMDT} mgl_ray_trace (@code{const char *}ham, @code{float} x0, @code{float} y0, @code{float} z0, @code{float} px, @code{float} py, @code{float} pz, @code{float} dt, @code{float} tmax)
-Solves GO ray equation like dr/dt = d @var{ham}/dp, dp/dt = -d @var{ham}/dr. This is Hamiltonian equations for particle trajectory in 3D case. Here @var{ham} is Hamiltonian which may depend on coordinates @samp{x}, @samp{y}, @samp{z}, momentums @samp{p}=px, @samp{q}=py, @samp{v}=pz and time @samp{t}: @math{ham = H(x,y,z,p,q,v,t)}. The starting point (at @code{t=0}) is defined by variables @var{r0}, @var{p0}. Parameters @var{dt} and @var{tmax} specify the integration step and maximal time for ray tracing. Result is array of @{x,y,z,p,q,v,t@} with dimensions @{7 * int(@var{tmax}/@var{dt}+1) @}.
+Solves GO ray equation like dr/dt = d @var{ham}/dp, dp/dt = -d @var{ham}/dr. This is Hamiltonian equations for particle trajectory in 3D case. Here @var{ham} is Hamiltonian which may depend on coordinates @samp{x}, @samp{y}, @samp{z}, momentums @samp{p}=px, @samp{q}=py, @samp{v}=pz and time @samp{t}: @math{ham = H(x,y,z,p,q,v,t)}. The starting point (at @code{t=0}) is defined by variables @var{r0}, @var{p0}. Parameters @var{dt} and @var{tmax} specify the integration step and maximal time for ray tracing. Result is array of @{x,y,z,p,q,v,t@} with dimensions @{7 * int(@var{tmax}/@var{dt}+1) @}. @sref{Beam tracing sample}
@end deftypefn
@deftypefn {Global function} @code{mglData} mglQO2d (@code{const char *}ham, @code{const mglData &}ini_re, @code{const mglData &}ini_im, @code{const mglData &}ray, @code{float} r=@code{1}, @code{float} k0=@code{100}, @code{mglData *}xx=@code{0}, @code{mglData *}yy=@code{0}, @code{bool} UseR=@code{true})
@deftypefnx {C function} @code{HMDT} mgl_qo2d_solve (@code{const char *}ham, @code{const HMDT} ini_re, @code{const HMDT} ini_im, @code{const HMDT} ray, @code{float} r, @code{float} k0, @code{HMDT} xx, @code{HMDT} yy)
-Solves equation du/dt = i*k0*@var{ham}(p,q,x,y,|u|)[u], where p=-i/k0*d/dx, q=-i/k0*d/dy are pseudo-differential operators (see @code{mglPDE()} for details). Parameters @var{ini_re}, @var{ini_im} specify real and imaginary part of initial field distribution. Parameters @var{ray} set the reference ray, i.e. the ray around which the accompanied coordinate system will be maked. You may use, for example, the array created by @code{mglRay()} function. Note, that the reference ray @strong{must be} smooth enough to make accompanied coodrinates unambiguity. Otherwise errors in the solution may appear. If @var{xx} and @var{yy} are non-zero then Cartesian coordinates for each point will be written into them. @sref{Beam tracing sample}
+Solves equation du/dt = i*k0*@var{ham}(p,q,x,y,|u|)[u], where p=-i/k0*d/dx, q=-i/k0*d/dy are pseudo-differential operators (see @code{mglPDE()} for details). Parameters @var{ini_re}, @var{ini_im} specify real and imaginary part of initial field distribution. Parameters @var{ray} set the reference ray, i.e. the ray around which the accompanied coordinate system will be maked. You may use, for example, the array created by @code{mglRay()} function. Note, that the reference ray @strong{must be} smooth enough to make accompanied coodrinates unambiguity. Otherwise errors in the solution may appear. If @var{xx} and @var{yy} are non-zero then Cartesian coordinates for each point will be written into them. See also @code{mglPDE()}. @sref{Beam tracing sample}
@end deftypefn
@deftypefn {Global function} @code{mglData} mglJacobian (@code{const mglData &}x, @code{const mglData &}y)
diff --git a/texinfo/data_ru.texi b/texinfo/data_ru.texi
index c1a1681..7d05004 100644
--- a/texinfo/data_ru.texi
+++ b/texinfo/data_ru.texi
@@ -1,8 +1,7 @@
@c ------------------------------------------------------------------
- at node mglData class, Other classes, Widget classes, Top
- at chapter mglData class
+ at chapter ÐлаÑÑ mglData
-Class for working with data array. This class is defined in @code{#include <mgl/mgl_data.h>}. The class has functions for easy and safe allocation, resizing, loading and saving, modifying of data arrays. Also it can numerically differentiate and integrate data, interpolate, fill data by formula and so on. Class supports data with dimensions up to 3 (like function of 3 variables - x,y,z). The internal representation of numbers is float. Float type was chosen because it has smaller size in memory and usually it has enough precision in plotting purposes.
+ÐÑо клаÑÑ Ð´Ð»Ñ ÑабоÑÑ Ñ Ð¼Ð°ÑÑивами даннÑÑ
, опÑеделеннÑй в @code{#include <mgl/mgl_data.h>}. Ðн ÑодеÑÐ¶Ð¸Ñ ÑÑнкÑии Ð´Ð»Ñ Ð²ÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼ÑÑи и Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑазмеÑа даннÑÑ
, ÑÑÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
из Ñайла, ÑиÑленного диÑÑеÑенÑиÑованиÑ/инÑегÑиÑованиÑ/инÑеÑполÑÑии и пÑ., Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑекÑÑовой ÑоÑмÑле и Ñ.д. ÐлаÑÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ ÑабоÑаÑÑ Ñ Ð´Ð°Ð½Ð½Ñми ÑазмеÑноÑÑи не более 3 (как ÑÑнкÑии Ð¾Ñ ÑÑеÑ
пеÑеменнÑÑ
-- x,y,z). Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð²Ð½ÑÑÑеннее пÑедÑÑавление даннÑÑ
-- float, вÑбÑаннÑй в ÑÐ¸Ð»Ñ Ð¼ÐµÐ½ÑÑего ÑазмеÑа занимаемой памÑÑи и доÑÑаÑоÑной Ð´Ð»Ñ Ð¿Ð¾ÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð³ÑаÑиков ÑоÑноÑÑи. ÐазовÑй Ñип можно ÑмениÑÑ Ð½Ð° ÑÑапе ÑÑÑановки (@pxref{Installation and using}) Ñказав опÑÐ¸Ñ @code{--enable-double}. Ðднако, в далÑнейÑем в докÑменÑаÑии бÑÐ´ÐµÑ Ð¸ÑполÑзован Ñип @code{float}.
@menu
* Public variables::
@@ -11,7 +10,7 @@ Class for working with data array. This class is defined in @code{#include <mgl/
* Rearrange::
* File I/O::
* Make another data::
-* Functions on direction::
+* Change data::
* Interpolation::
* Informational functions::
* Operators::
@@ -20,154 +19,151 @@ Class for working with data array. This class is defined in @code{#include <mgl/
@c ------------------------------------------------------------------
@node Public variables, Create and delete, , mglData class
- at section Public variables
+ at section ÐеÑеменнÑе
@deftypecv {Variable} mglData @code{float *} a
-Data array itself. The flat data representation is used. For example, matrix [nx x ny] is presented as flat (1d-) array with length nx*ny. The element with indexes @{i, j, k@} is a[i+nx*j+nx*ny*k] (indexes are zero based).
+УказаÑÐµÐ»Ñ Ð½Ð° маÑÑив даннÑÑ
. ÐÑо одномеÑнÑй маÑÑив. ÐапÑимеÑ, маÑÑиÑа [nx x ny x nz] пÑедÑÑавлÑеÑÑÑ Ð¾Ð´Ð½Ð¾Ð¼ÐµÑнÑм маÑÑивом длиной nx*ny*nz, где ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ñ Ð¸Ð½Ð´ÐµÐºÑами @{i, j, k@} наÑ
одиÑÑÑ ÐºÐ°Ðº a[i+nx*j+nx*ny*k] (индекÑÑ Ð¾ÑÑÑиÑÑваÑÑÑÑ Ð¾Ñ Ð½ÑлÑ).
@end deftypecv
@deftypecv {Variable} mglData @code{int} nx
-Number of points in 1st dimensions ('x' dimension).
+Ð Ð°Ð·Ð¼ÐµÑ Ð¼Ð°ÑÑива по 1-ой ÑазмеÑноÑÑи ('x' ÑазмеÑноÑÑи).
@end deftypecv
@deftypecv {Variable} mglData @code{int} ny
-Number of points in 2nd dimensions ('y' dimension).
+Ð Ð°Ð·Ð¼ÐµÑ Ð¼Ð°ÑÑива по 2-ой ÑазмеÑноÑÑи ('y' ÑазмеÑноÑÑи).
@end deftypecv
@deftypecv {Variable} mglData @code{int} nz
-Number of points in 3d dimensions ('z' dimension).
+Ð Ð°Ð·Ð¼ÐµÑ Ð¼Ð°ÑÑива по 3-ей ÑазмеÑноÑÑи ('z' ÑазмеÑноÑÑи).
@end deftypecv
@deftypecv {Variable} mglData @code{char *} id
-Column (or slice if nz>1) names -- one character per column.
+Ðмена колонки (или ÑÑеза пÑи nz>1) -- один Ñимвол на колонкÑ.
@end deftypecv
@c ------------------------------------------------------------------
@node Create and delete, Fill, Public variables, mglData class
- at section Create and delete
+ at section Создание и Ñдаление
@cindex mglData
@cindex Set
- at defop Constructor mglData @code{} mglData (@code{int} mx=@code{1}, @code{int} my=@code{1}, @code{int} mz=@code{1})
-Default constructor. Allocates the memory for data array and initializes it by zero.
+ at defop ÐонÑÑÑÑкÑÐ¾Ñ @code{mglData} @code{} mglData (@code{int} mx=@code{1}, @code{int} my=@code{1}, @code{int} mz=@code{1})
+ÐонÑÑÑÑкÑÐ¾Ñ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑделÑÐµÑ Ð¿Ð°Ð¼ÑÑÑ Ð´Ð»Ñ Ð¼Ð°ÑÑива даннÑÑ
и заполнÑÐµÑ ÐµÐµ нÑлÑми.
@end defop
- at defop Constructor mglData @code{} mglData (@code{const char *}fname)
-Initializes the data by reading from file.
+ at defop ÐонÑÑÑÑкÑÐ¾Ñ @code{mglData} @code{} mglData (@code{const char *}fname)
+ЧиÑÐ°ÐµÑ Ð´Ð°Ð½Ð½Ñе из Ñайла.
@end defop
- at defop Constructor mglData @code{} mglData (@code{const mglData} &dat)
-Initiates by other @code{mglData} instance.
+ at defop ÐонÑÑÑÑкÑÐ¾Ñ @code{mglData} @code{} mglData (@code{const mglData} &dat)
+ÐопиÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе из дÑÑгого ÑкземплÑÑа @code{mglData}.
@end defop
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Create (@code{int} mx, @code{int} my=@code{1}, @code{int} mz=@code{1})
- at deftypefnx {C function} @code{void} mgl_data_create (@code{HMDT} dat, @code{int} mx, @code{int} my, @code{int} mz)
-Creates or recreates the array with specified size and fills it by zero. This function does nothing if one of parameters @var{mx}, @var{my}, @var{mz} is zero or negative.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Create (@code{int} mx, @code{int} my=@code{1}, @code{int} mz=@code{1})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_create (@code{HMDT} dat, @code{int} mx, @code{int} my, @code{int} mz)
+СоздаеÑ/пеÑеÑÐ¾Ð·Ð´Ð°ÐµÑ Ð¼Ð°ÑÑив даннÑÑ
Ñказанного ÑазмеÑа и заполнÑÐµÑ ÐµÐ³Ð¾ нÑлÑми. ÐиÑего не Ð´ÐµÐ»Ð°ÐµÑ Ð¿Ñи @var{mx}, @var{my}, @var{mz} оÑÑиÑаÑелÑнÑÑ
или ÑавнÑÑ
нÑлÑ.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++)} @code{void} Set (@code{const float *}A, @code{int} NX, @code{int} NY=@code{1}, @code{int} NZ=@code{1})
- at deftypefnx {Method on @code{mglData} (C++)} @code{void} Set (@code{const double *}A, @code{int} NX, @code{int} NY=@code{1}, @code{int} NZ=@code{1})
- at deftypefnx {C function} @code{void} mgl_data_set_float (@code{HMDT} dat, @code{const float *}A, @code{int} NX, @code{int} NY, @code{int} NZ)
- at deftypefnx {C function} @code{void} mgl_data_set_double (@code{HMDT} dat, @code{const double *}A, @code{int} NX, @code{int} NY, @code{int} NZ)
-Allocates memory and copies the data from the @strong{flat} @code{float*} or @code{double*} array.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++)} @code{void} Set (@code{const float *}A, @code{int} NX, @code{int} NY=@code{1}, @code{int} NZ=@code{1})
+ at deftypefnx {ÐеÑод клаÑÑа @code{mglData} (C++)} @code{void} Set (@code{const double *}A, @code{int} NX, @code{int} NY=@code{1}, @code{int} NZ=@code{1})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_set_float (@code{HMDT} dat, @code{const float *}A, @code{int} NX, @code{int} NY, @code{int} NZ)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_set_double (@code{HMDT} dat, @code{const double *}A, @code{int} NX, @code{int} NY, @code{int} NZ)
+ÐÑделÑÐµÑ Ð¿Ð°Ð¼ÑÑÑ Ð¸ копиÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе из маÑÑивов Ñипа @code{float*} или @code{double*}, Ñ.е. из маÑÑивов опÑеделеннÑÑ
как @code{float a[NX*NY*NZ];}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++)} @code{void} Set (@code{const float **}A, @code{int} N1, @code{int} N2)
- at deftypefnx {Method on @code{mglData} (C++)} @code{void} Set (@code{const double **}A, @code{int} N1, @code{int} N2)
- at deftypefnx {C function} @code{void} mgl_data_set_float2 (@code{HMDT} dat, @code{const float **}A, @code{int} N1, @code{int} N2)
- at deftypefnx {C function} @code{void} mgl_data_set_double2 (@code{HMDT} dat, @code{const double **}A, @code{int} N1, @code{int} N2)
-Allocates memory and copies the data from the @code{float**} or @code{double**} array with dimensions @var{N1}, @var{N2}, i.e. from array defined as @code{float a[N1][N2];}.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++)} @code{void} Set (@code{const float **}A, @code{int} N1, @code{int} N2)
+ at deftypefnx {ÐеÑод клаÑÑа @code{mglData} (C++)} @code{void} Set (@code{const double **}A, @code{int} N1, @code{int} N2)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_set_float2 (@code{HMDT} dat, @code{const float **}A, @code{int} N1, @code{int} N2)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_set_double2 (@code{HMDT} dat, @code{const double **}A, @code{int} N1, @code{int} N2)
+ÐÑделÑÐµÑ Ð¿Ð°Ð¼ÑÑÑ Ð¸ копиÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе из маÑÑивов Ñипа @code{float**} или @code{double**} Ñ ÑазмеÑноÑÑÑми @var{N1}, @var{N2}, Ñ.е. из маÑÑивов опÑеделеннÑÑ
как @code{float a[N1][N2];}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++)} @code{void} Set (@code{const float ***}A, @code{int} N1, @code{int} N2)
- at deftypefnx {Method on @code{mglData} (C++)} @code{void} Set (@code{const double ***}A, @code{int} N1, @code{int} N2)
- at deftypefnx {C function} @code{void} mgl_data_set_float3 (@code{HMDT} dat, @code{const float ***}A, @code{int} N1, @code{int} N2)
- at deftypefnx {C function} @code{void} mgl_data_set_double3 (@code{HMDT} dat, @code{const double ***}A, @code{int} N1, @code{int} N2)
-Allocates memory and copies the data from the @code{float***} or @code{double***} array with dimensions @var{N1}, @var{N2}, @var{N3}, i.e. from array defined as @code{float a[N1][N2][N3];}.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++)} @code{void} Set (@code{const float ***}A, @code{int} N1, @code{int} N2)
+ at deftypefnx {ÐеÑод клаÑÑа @code{mglData} (C++)} @code{void} Set (@code{const double ***}A, @code{int} N1, @code{int} N2)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_set_float3 (@code{HMDT} dat, @code{const float ***}A, @code{int} N1, @code{int} N2)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_set_double3 (@code{HMDT} dat, @code{const double ***}A, @code{int} N1, @code{int} N2)
+ÐÑделÑÐµÑ Ð¿Ð°Ð¼ÑÑÑ Ð¸ копиÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе из маÑÑивов Ñипа @code{float***} или @code{double***} Ñ ÑазмеÑноÑÑÑми @var{N1}, @var{N2}, @var{N3}, Ñ.е. из маÑÑивов опÑеделеннÑÑ
как @code{float a[N1][N2][N3];}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++)} @code{void} Set (@code{gsl_vector *}v)
- at deftypefnx {C function} @code{void} mgl_data_set_vector (@code{HMDT} dat, @code{gsl_vector *}v)
-Allocates memory and copies the data from the @code{gsl_vector *} structure.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++)} @code{void} Set (@code{gsl_vector *}v)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_set_vector (@code{HMDT} dat, @code{gsl_vector *}v)
+ÐÑделÑÐµÑ Ð¿Ð°Ð¼ÑÑÑ Ð¸ копиÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе из ÑÑÑÑкÑÑÑÑ Ñипа @code{gsl_vector *}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++)} @code{void} Set (@code{gsl_matrix *}m)
- at deftypefnx {C function} @code{void} mgl_data_set_matrix (@code{HMDT} dat, @code{gsl_matrix *}m)
-Allocates memory and copies the data from the @code{gsl_matrix *} structure.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++)} @code{void} Set (@code{gsl_matrix *}m)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_set_matrix (@code{HMDT} dat, @code{gsl_matrix *}m)
+ÐÑделÑÐµÑ Ð¿Ð°Ð¼ÑÑÑ Ð¸ копиÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе из ÑÑÑÑкÑÑÑÑ Ñипа @code{gsl_matrix *}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{inline void} Set (@code{const mglData &}dat)
- at deftypefnx {C function} @code{void} mgl_data_set (@code{HMDT} dat, @code{const HMDT} d)
-Copies the data from mglData instance @var{dat}.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{inline void} Set (@code{const mglData &}from)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_set (@code{HMDT} dat, @code{const HMDT} from)
+ÐÑделÑÐµÑ Ð¿Ð°Ð¼ÑÑÑ Ð¸ копиÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе из дÑÑгого ÑкземплÑÑа @var{from}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++)} @code{void} Set (@code{const std::vector<int> &}d)
- at deftypefnx {Method on @code{mglData} (C++)} @code{void} Set (@code{const std::vector<float> &}d)
- at deftypefnx {Method on @code{mglData} (C++)} @code{void} Set (@code{const std::vector<double> &}d)
-Allocates memory and copies the data from the @code{std::vector<T>} array.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++)} @code{void} Set (@code{const std::vector<int> &}d)
+ at deftypefnx {ÐеÑод клаÑÑа @code{mglData} (C++)} @code{void} Set (@code{const std::vector<float> &}d)
+ at deftypefnx {ÐеÑод клаÑÑа @code{mglData} (C++)} @code{void} Set (@code{const std::vector<double> &}d)
+ÐÑделÑÐµÑ Ð¿Ð°Ð¼ÑÑÑ Ð¸ копиÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе из маÑÑива Ñипа @code{std::vector<T>}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C+, Python)} @code{void} Set (@code{const char *}str, @code{int} NX, @code{int} NY=@code{1}, @code{int} NZ=@code{1})
- at deftypefnx {C function} @code{void} mgl_data_set_values (@code{const char *}str, @code{int} NX, @code{int} NY, @code{int} NZ)
-Allocates memory and scanf the data from the string.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C+, Python)} @code{void} Set (@code{const char *}str, @code{int} NX, @code{int} NY=@code{1}, @code{int} NZ=@code{1})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_set_values (@code{const char *}str, @code{int} NX, @code{int} NY, @code{int} NZ)
+ÐÑделÑÐµÑ Ð¿Ð°Ð¼ÑÑÑ Ð¸ ÑканиÑÑÐµÑ (scanf) даннÑе из ÑÑÑоки.
@end deftypefn
@c ------------------------------------------------------------------
@node Fill, Rearrange, Create and delete, mglData class
- at section Fill
+ at section Ðаполнение даннÑÑ
@cindex Fill
@cindex Modify
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Fill (@code{float} x1, @code{float} x2, @code{char} dir=@code{'x'})
- at deftypefnx {C function} @code{void} mgl_data_fill (@code{HMDT} dat, @code{float} x1, @code{float} x2, @code{char} dir)
-Equidistantly fills the data values to range [@var{x1}, @var{x2}] in direction @var{dir}=@{@samp{x}, at samp{y}, at samp{z}@}.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Fill (@code{float} x1, @code{float} x2, @code{char} dir=@code{'x'})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_fill (@code{HMDT} dat, @code{float} x1, @code{float} x2, @code{char} dir)
+ÐаполнÑÐµÑ Ð·Ð½Ð°ÑениÑми Ñавно ÑаÑпÑеделеннÑми в диапазоне [@var{x1}, @var{x2}] в напÑавлении @var{dir}=@{@samp{x}, at samp{y}, at samp{z}@}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Fill (@code{const char *}eq, @code{mglPoint} Min, @code{mglPoint} Max, @code{const mglData *}vdat=0, @code{const mglData *}wdat=0)
- at deftypefnx {C function} @code{void} mgl_data_fill (@code{HMGL} gr, @code{HMDT} dat, @code{const char *}eq, @code{const HMDT *}vdat, @code{const HMDT *}wdat)
-Fills the value of array according to the formula in string @var{eq}. Formula is an arbitrary expression depending on variables @samp{x}, @samp{y}, @samp{z}, @samp{u}, @samp{v}, @samp{w}. Coordinates @samp{x}, @samp{y}, @samp{z} are supposed to be normalized in range @var{Min} x @var{Max} (in difference from @code{Modify} functions). Variable @samp{u} is the original value of the array. Variables @samp{v} and @samp{w} are values of @var{vdat}, @var{wdat} which can be @code{NULL} (i.e. can be omitted).
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Fill (@code{const char *}eq, @code{mglPoint} Min, @code{mglPoint} Max, @code{const mglData *}vdat=0, @code{const mglData *}wdat=0)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_fill (@code{HMGL} gr, @code{HMDT} dat, @code{const char *}eq, @code{const HMDT *}vdat, @code{const HMDT *}wdat)
+ÐаполнÑÐµÑ Ð·Ð½Ð°ÑениÑми вÑÑиÑленнÑми по ÑоÑмÑле @var{eq}. ФоÑмÑла пÑедÑÑавлÑÐµÑ Ñобой пÑоизволÑное вÑÑажение, завиÑÑÑее Ð¾Ñ Ð¿ÐµÑеменнÑÑ
@samp{x}, @samp{y}, @samp{z}, @samp{u}, @samp{v}, @samp{w}. ÐооÑдинаÑÑ @samp{x}, @samp{y}, @samp{z} полагаÑÑÑÑ Ð¼ÐµÐ½ÑÑÑимиÑÑ Ð² диапазоне @var{Min} x @var{Max} (в оÑлиÑие Ð¾Ñ ÑÑнкÑии @code{Modify}). ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ @samp{u} -- знаÑÐµÐ½Ð¸Ñ Ð¸ÑÑ
одного маÑÑива, пеÑеменнÑе @samp{v}, @samp{w} -- знаÑÐµÐ½Ð¸Ñ Ð¼Ð°ÑÑивов @var{vdat}, @var{wdat}. ÐоÑледние могÑÑ Ð±ÑÑÑ @code{NULL}, Ñ.е. опÑÑенÑ.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Modify (@code{const char *}eq, @code{int} dim=@code{0})
- at deftypefnx {C function} @code{void} mgl_data_modify (@code{HMDT} dat, @code{const char *}eq, @code{int} dim)
-Function fills the value of array according to the formula in string @var{eq}. Formula is an arbitrary expression depending on variables @samp{x}, @samp{y}, @samp{z}, @samp{u}. Coordinates @samp{x}, @samp{y}, @samp{z} are data indexes normalized in range [0,1]. Variable @samp{u} is the original value of the array. Modification will be fulfilled only for slices >=@var{dim}.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Modify (@code{const char *}eq, @code{int} dim=@code{0})
+ at deftypefnx {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Modify (@code{const char *}eq, @code{const mglData &}v)
+ at deftypefnx {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Modify (@code{const char *}eq, @code{const mglData &}v, @code{const mglData &}w)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_modify (@code{HMDT} dat, @code{const char *}eq, @code{int} dim)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_modify_vw (@code{HMDT} dat, @code{const char *}eq, @code{const HMDT} v, @code{const HMDT} w)
+ÐаполнÑÐµÑ Ð·Ð½Ð°ÑениÑми вÑÑиÑленнÑми по ÑоÑмÑле @var{eq}. ФоÑмÑла пÑедÑÑавлÑÐµÑ Ñобой пÑоизволÑное вÑÑажение, завиÑÑÑее Ð¾Ñ Ð¿ÐµÑеменнÑÑ
@samp{x}, @samp{y}, @samp{z}, @samp{u}, @samp{v}, @samp{w}. ÐооÑдинаÑÑ @samp{x}, @samp{y}, @samp{z} полагаÑÑÑÑ Ð¼ÐµÐ½ÑÑÑимиÑÑ Ð² диапазоне [0,1] (в оÑлиÑие Ð¾Ñ ÑÑнкÑии @code{Fill}). ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ @samp{u} -- знаÑÐµÐ½Ð¸Ñ Ð¸ÑÑ
одного маÑÑива, пеÑеменнÑе @samp{v}, @samp{w} -- знаÑÐµÐ½Ð¸Ñ Ð¼Ð°ÑÑивов @var{vdat}, @var{wdat}. ÐоÑледние могÑÑ Ð±ÑÑÑ @code{NULL}, Ñ.е. опÑÑенÑ. ÐÑли Ñказан @var{dim}>0, Ñо изменÑÑÑÑÑ ÑолÑко Ñлои >=@var{dim}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Modify (@code{const char *}eq, @code{const mglData &}v)
- at deftypefnx {Method on @code{mglData} (C++, Python)} @code{void} Modify (@code{const char *}eq, @code{const mglData &}v, @code{const mglData &}w)
- at deftypefnx {C function} @code{void} mgl_data_modify_vw (@code{HMDT} dat, @code{const char *}eq, @code{const HMDT} v, @code{const HMDT} w)
-Function fills the value of array according to the formula in string @var{eq}. Formula is an arbitrary expression depending on variables @samp{x}, @samp{y}, @samp{z}, @samp{u}, @samp{v}, @samp{w}. Coordinates @samp{x}, @samp{y}, @samp{z} are data indexes normalized in range [0,1]. Variable @samp{u} is the original value of the array. Variables @samp{v} and @samp{w} are values of @var{vdat}, @var{wdat}.
- at end deftypefn
-
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Put (@code{float} val, @code{int} i=@code{-1}, @code{int} j=@code{-1}, @code{int} k=@code{-1})
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Put (@code{float} val, @code{int} i=@code{-1}, @code{int} j=@code{-1}, @code{int} k=@code{-1})
@deftypefnx mglData @code{void} mgl_data_put_val (@code{HMDT} a, @code{float} val, @code{int} i, @code{int} j, @code{int} k)
-Function sets value(s) of array a[@var{i}, @var{j}, @var{k}] = @var{val}. Negative indexes @var{i}, @var{j}, @var{k}=-1 set the value @var{val} to whole range in corresponding direction(s). For example, @code{Put(val,-1,0,-1);} sets a[i,0,j]=@var{val} for i=0...(nx-1), j=0...(nz-1).
+ÐÑиÑÐ²Ð°Ð¸Ð²Ð°ÐµÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ (под-)маÑÑива @var{dat}[@var{i}, @var{j}, @var{k}] = @var{val}. ÐндекÑÑ @var{i}, @var{j}, @var{k} ÑавнÑе @samp{-1} задаÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ð¸Ñ @var{val} Ð´Ð»Ñ Ð²Ñего диапазона ÑооÑвеÑÑÑвÑÑÑего напÑавлениÑ(ий). ÐапÑимеÑ, @code{Put(val,-1,0,-1);} Ð·Ð°Ð´Ð°ÐµÑ a[i,0,j]=@var{val} Ð´Ð»Ñ i=0...(nx-1), j=0...(nz-1).
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Put (@code{const mglData &}v, @code{int} i=@code{-1}, @code{int} j=@code{-1}, @code{int} k=@code{-1})
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Put (@code{const mglData &}v, @code{int} i=@code{-1}, @code{int} j=@code{-1}, @code{int} k=@code{-1})
@deftypefnx mglData @code{void} mgl_data_put_dat (@code{HMDT} a, @code{const HMDT} v, @code{int} i, @code{int} j, @code{int} k)
-Function copies value(s) from array @var{v} to the range of original array. Negative indexes @var{i}, @var{j}, @var{k}=-1 set the range in corresponding direction(s). At this minor dimensions of array @var{v} should be large than corresponding dimensions of this array. For example, @code{Put(v,-1,0,-1);} sets a[i,0,j]=v.ny>nz ? v[i,j] : v[i], where i=0...(nx-1), j=0...(nz-1) and condition v.nx>=nx is true.
+ÐопиÑÑÐµÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¸Ð· маÑÑива @var{v} в диапазон знаÑений данного маÑÑива. ÐндекÑÑ @var{i}, @var{j}, @var{k} ÑавнÑе @samp{-1} задаÑÑ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñений в ÑооÑвеÑÑÑвÑÑÑиÑ
напÑавление(ÑÑ
). ÐладÑие ÑазмеÑноÑÑи маÑÑива @var{v} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð±Ð¾Ð»ÑÑе вÑбÑанного диапазона маÑÑива. ÐапÑимеÑ, @code{Put(v,-1,0,-1);} пÑиÑвоиÑa[i,0,j]=@var{v}.ny>nz ? @var{v}.a[i,j] : @var{v}.a[i], где i=0...(nx-1), j=0...(nz-1) и ÑÑловие v.nx>=nx вÑполнено.
@end deftypefn
- at deftypefn {C function} @code{void} mgl_data_set_value (@code{HMDT} dat, @code{float} v, @code{int} i, @code{int} j, @code{int} k)
-Sets the value in specified cell of the data with border checking.
+ at deftypefn {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_set_value (@code{HMDT} dat, @code{float} v, @code{int} i, @code{int} j, @code{int} k)
+ÐÑиÑÐ²Ð°Ð¸Ð²Ð°ÐµÑ Ð·Ð½Ð°Ñение вÑбÑанной ÑÑейке маÑÑива даннÑÑ
.
@end deftypefn
- at deftypefn {C function} @code{float} mgl_data_get_value (@code{HMDT} dat, @code{int} i, @code{int} j, @code{int} k)
-Gets the value in specified cell of the data with border checking.
+ at deftypefn {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_get_value (@code{HMDT} dat, @code{int} i, @code{int} j, @code{int} k)
+ÐозвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение вÑбÑанной ÑÑейки маÑÑива даннÑÑ
.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C+, Python)} @code{void} GetNx ()
- at deftypefnx {C function} @code{float} mgl_data_get_nx (@code{HMDT} dat)
-Gets the x-size of the data.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C+, Python)} @code{void} GetNx ()
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_get_nx (@code{HMDT} dat)
+ÐозвÑаÑÐ°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¿Ð¾ x-напÑавлениÑ.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C+, Python)} @code{void} GetNy ()
- at deftypefnx {C function} @code{float} mgl_data_get_ny (@code{HMDT} dat)
-Gets the y-size of the data.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C+, Python)} @code{void} GetNy ()
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_get_ny (@code{HMDT} dat)
+ÐозвÑаÑÐ°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¿Ð¾ y-напÑавлениÑ.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C+, Python)} @code{void} GetNz ()
- at deftypefnx {C function} @code{float} mgl_data_get_nz (@code{HMDT} dat)
-Gets the z-size of the data.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C+, Python)} @code{void} GetNz ()
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_get_nz (@code{HMDT} dat)
+ÐозвÑаÑÐ°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¿Ð¾ z-напÑавлениÑ.
@end deftypefn
@c ------------------------------------------------------------------
@node Rearrange, File I/O, Fill, mglData class
- at section Rearrange
+ at section Ðзменение ÑазмеÑов даннÑÑ
@cindex Rearrange
@cindex Extend
@cindex Transpose
@@ -182,72 +178,76 @@ Gets the z-size of the data.
@cindex Insert
@cindex Delete
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Rearrange (@code{int} mx, @code{int} my=@code{0}, @code{int} mz=@code{0})
- at deftypefnx {C function} @code{void} mgl_data_rearrange (@code{HMDT} dat, @code{int} mx, @code{int} my, @code{int} mz)
-Rearrange dimensions without changing data array so that resulting sizes should be @var{mx}*@var{my}*@var{mz} < nx*ny*nz. If some of parameter @var{my} or @var{mz} are zero then it will be selected to optimal fill of data array. For example, if @var{my}=0 then it will be change to @var{my}=nx*ny*nz/@var{mx} and @var{mz} will be 1.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Rearrange (@code{int} mx, @code{int} my=@code{0}, @code{int} mz=@code{0})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_rearrange (@code{HMDT} dat, @code{int} mx, @code{int} my, @code{int} mz)
+ÐзменÑÐµÑ ÑазмеÑноÑÑÑ Ð´Ð°Ð½Ð½ÑÑ
без Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñамого маÑÑива даннÑÑ
, Ñак ÑÑо ÑезÑлÑÑиÑÑÑÑий маÑÑив @var{mx}*@var{my}*@var{mz} < nx*ny*nz. ÐÑли один из паÑамеÑÑов @var{my} или @var{mz} нолÑ, Ñо он бÑÐ´ÐµÑ Ð²ÑбÑан опÑималÑнÑм обÑазом. ÐапÑимеÑ, еÑли @var{my}=0, Ñо бÑÐ´ÐµÑ @var{my}=nx*ny*nz/@var{mx} и @var{mz}=1.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Extend (@code{int} n1, @code{int} n2=@code{0})
- at deftypefnx {C function} @code{void} mgl_data_extend (@code{HMDT} dat, @code{int} n1, @code{int} n2)
-Increase the dimensions of the data by inserting new (|@var{n1}|+1)-th slices after (for @var{n1}>0) or before (for @var{n1}<0) of existed one. It is possible to insert 2 dimensions simultaneously for 1d data by using parameter @var{n2}. Data to new slices is copy from existed one. For example, for @var{n1}>0 new array will be
+
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Extend (@code{int} n1, @code{int} n2=@code{0})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_extend (@code{HMDT} dat, @code{int} n1, @code{int} n2)
+УвелиÑÐ¸Ð²Ð°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ Ð´Ð°Ð½Ð½ÑÑ
пÑÑем вÑÑавки (|@var{n1}|+1) новÑÑ
ÑÑезов поÑле (Ð´Ð»Ñ @var{n1}>0) или пеÑед (Ð´Ð»Ñ @var{n1}<0) ÑÑÑеÑÑвÑÑÑими даннÑми. Ðожно добавиÑÑ ÑÑÐ°Ð·Ñ 2 ÑазмеÑноÑÑи Ð´Ð»Ñ 1d маÑÑива, иÑполÑзÑÑ Ð²ÑоÑой паÑамеÑÑ @var{n2}. ÐаннÑе в новÑе ÑÑÐµÐ·Ñ Ð±ÑдÑÑ ÑкопиÑÐ¾Ð²Ð°Ð½Ñ Ð¸Ð· ÑÑÑеÑÑвÑÑÑиÑ
. ÐапÑимеÑ, Ð´Ð»Ñ @var{n1}>0 новÑй маÑÑив бÑдеÑ
@iftex
- at math{a_{ij}^{new} = a_i^{old}} where j=0... at var{n1}. Correspondingly, for @var{n1}<0 new array will be @math{a_{ij}^{new} = a_j^{old}} where i=0...|@var{n1}|.
+ at math{a_{ij}^{new} = a_i^{old}} where j=0... at var{n1}. СооÑвеÑÑÑвенно, Ð´Ð»Ñ @var{n1}<0 новÑй маÑÑив бÑÐ´ÐµÑ @math{a_{ij}^{new} = a_j^{old}}, где i=0...|@var{n1}|.
@end iftex
@ifnottex
-a_ij^new = a_i^old where j=0... at var{n1}. Correspondingly, for @var{n1}<0 new array will be a_ij^new = a_j^old where i=0...|@var{n1}|.
+a_ij^new = a_i^old where j=0... at var{n1}. СооÑвеÑÑÑвенно, Ð´Ð»Ñ @var{n1}<0 новÑй маÑÑив бÑÐ´ÐµÑ a_ij^new = a_j^old, где i=0...|@var{n1}|.
@end ifnottex
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Transpose (@code{const char *}dim=@code{"yx"})
- at deftypefnx {C function} @code{void} mgl_data_transpose (@code{const char *}dim)
-Transposes (shift order of) dimensions of the data. New order of dimensions is specified int string @var{dim}. This function may be useful also for the reading of one-dimensional data.
+
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Transpose (@code{const char *}dim=@code{"yx"})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_transpose (@code{const char *}dim)
+ТÑанÑпониÑÑÐµÑ (менÑÐµÑ Ð¿Ð¾ÑÑдок ÑазмеÑноÑÑей) маÑÑив даннÑÑ
. ÐовÑй поÑÑдок ÑазмеÑноÑÑей задаеÑÑÑ ÑÑÑокой @var{dim}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Squeeze (@code{int} rx, @code{int} ry=@code{1}, @code{int} rz=@code{1}, @code{bool} smooth=@code{false})
- at deftypefnx {C function} @code{void} mgl_data_squeeze (@code{HMDT} dat, @code{int} rx, @code{int} ry, @code{int} rz, @code{int} smooth)
-Reduces the data size by excluding data elements which indexes are not divisible by @var{rx}, @var{ry}, @var{rz} correspondingly. Parameter @var{squeeze} set to use smoothing
+
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Squeeze (@code{int} rx, @code{int} ry=@code{1}, @code{int} rz=@code{1}, @code{bool} smooth=@code{false})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_squeeze (@code{HMDT} dat, @code{int} rx, @code{int} ry, @code{int} rz, @code{int} smooth)
+УменÑÑÐ°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ Ð´Ð°Ð½Ð½ÑÑ
пÑÑем ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑлеменÑов Ñ Ð¸Ð½Ð´ÐµÐºÑами не кÑаÑнÑми @var{rx}, @var{ry}, @var{rz} ÑооÑвеÑÑÑвенно. ÐаÑамеÑÑ @var{smooth} Ð·Ð°Ð´Ð°ÐµÑ Ð¸ÑполÑзоваÑÑ ÑглаживаниÑ
@iftex
-(i.e. @math{a_{out}[i]=\sum_{j=i,i+r}a[j]/r}) or not (i.e. @math{a_{out}[i]=a[j*r]}).
+(Ñ.е. @math{a_{out}[i]=\sum_{j=i,i+r}a[j]/r}) или Ð½ÐµÑ (Ñ.е. @math{a_{out}[i]=a[j*r]}).
@end iftex
@ifnottex
-(i.e. out[i]=\sum_@{j=i,i+r@} a[j]/r) or not (i.e. out[i]=a[j*r]).
+(Ñ.е. out[i]=\sum_@{j=i,i+r@} a[j]/r) или Ð½ÐµÑ (Ñ.е. out[i]=a[j*r]).
@end ifnottex
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Crop (@code{int} n1, @code{int} n2, @code{char} dir=@code{'x'})
- at deftypefnx {C function} @code{void} mgl_data_crop (@code{HMDT} dat, @code{int} n1, @code{int} n2, @code{char} dir)
-Cuts off edges of the data @var{i}<@var{n1} and @var{i}>@var{n2} if @var{n2}>0 or @var{i}>@code{n[xyz]}- at var{n2} if @var{n2}<=0 along direction @var{dir}.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Crop (@code{int} n1, @code{int} n2, @code{char} dir=@code{'x'})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_crop (@code{HMDT} dat, @code{int} n1, @code{int} n2, @code{char} dir)
+ÐбÑÐµÐ·Ð°ÐµÑ Ð³ÑаниÑÑ Ð´Ð°Ð½Ð½ÑÑ
пÑи @var{i}<@var{n1} и @var{i}>@var{n2} (пÑи @var{n2}>0) или @var{i}>@code{n[xyz]}- at var{n2} (пÑи @var{n2}<=0) Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ @var{dir}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} InsertRows (@code{int} at, @code{int} num=@code{1}, @code{const char *}eq=@code{NULL})
-Insert @var{num} rows (slice along y-direction) at position @var{at} and fill it by formula @var{eq} (if @var{eq}!=0) or by zeros.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} InsertRows (@code{int} at, @code{int} num=@code{1}, @code{const char *}eq=@code{NULL})
+ÐÑÑавлÑÐµÑ @var{num} ÑÑезов Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ 'y' (ÑÑÑок) Ñ Ð¿Ð¾Ð·Ð¸Ñии @var{at} и заполнÑÐµÑ Ð¸Ñ
по ÑоÑмÑле @var{eq} (пÑи @var{eq}!=0) или нÑлÑми.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} InsertColumns (@code{int} at, @code{int} num=@code{1}, @code{const char *}eq=@code{NULL})
-Insert @var{num} columns (slice along x-direction) at position @var{at} and fill it by formula @var{eq} (if @var{eq}!=0) or by zeros.
+
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} InsertColumns (@code{int} at, @code{int} num=@code{1}, @code{const char *}eq=@code{NULL})
+ÐÑÑавлÑÐµÑ @var{num} ÑÑезов Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ 'x' (колонок) Ñ Ð¿Ð¾Ð·Ð¸Ñии @var{at} и заполнÑÐµÑ Ð¸Ñ
по ÑоÑмÑле @var{eq} (пÑи @var{eq}!=0) или нÑлÑми.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} InsertSlices (@code{int} at, @code{int} num=@code{1}, @code{const char *}eq=@code{NULL})
-Insert @var{num} slices (slice along z-direction) at position @var{at} and fill it by formula @var{eq} (if @var{eq}!=0) or by zeros.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} InsertSlices (@code{int} at, @code{int} num=@code{1}, @code{const char *}eq=@code{NULL})
+ÐÑÑавлÑÐµÑ @var{num} ÑÑезов Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ 'z' Ñ Ð¿Ð¾Ð·Ð¸Ñии @var{at} и заполнÑÐµÑ Ð¸Ñ
по ÑоÑмÑле @var{eq} (пÑи @var{eq}!=0) или нÑлÑми.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} DeleteRows (@code{int} at, @code{int} num=@code{1})
-Delete @var{num} rows (slice along y-direction) at position @var{at}.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} DeleteRows (@code{int} at, @code{int} num=@code{1})
+УдалÑÐµÑ @var{num} ÑÑезов Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ 'y' (ÑÑÑок) Ñ Ð¿Ð¾Ð·Ð¸Ñии @var{at}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} DeleteColumns (@code{int} at, @code{int} num=@code{1})
-Delete @var{num} columns (slice along x-direction) at position @var{at}.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} DeleteColumns (@code{int} at, @code{int} num=@code{1})
+УдалÑÐµÑ @var{num} ÑÑезов Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ 'x' (колонок) Ñ Ð¿Ð¾Ð·Ð¸Ñии @var{at}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} DeleteSlices (@code{int} at, @code{int} num=@code{1})
-Delete @var{num} slices (slice along z-direction) at position @var{at}.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} DeleteSlices (@code{int} at, @code{int} num=@code{1})
+УдалÑÐµÑ @var{num} ÑÑезов Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ 'z' Ñ Ð¿Ð¾Ð·Ð¸Ñии @var{at}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Insert (@code{char} dir, @code{int} pos=@code{0}, @code{int} num=@code{1})
- at deftypefnx {C function} @code{void} mgl_data_insert (@code{HMDT} dat, @code{char} dir, @code{int} pos, @code{char} num)
-Insert @var{num} slices along @var{dir}-direction at position @var{pos} and fill it by zeros.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Insert (@code{char} dir, @code{int} pos=@code{0}, @code{int} num=@code{1})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_insert (@code{HMDT} dat, @code{char} dir, @code{int} pos, @code{char} num)
+ÐÑÑавлÑÐµÑ @var{num} ÑÑезов Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ @var{dir} Ñ Ð¿Ð¾Ð·Ð¸Ñии @var{pos} и заполнÑÐµÑ Ð¸Ñ
нÑлÑми.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Delete (@code{char} dir, @code{int} pos=@code{0}, @code{int} num=@code{1})
- at deftypefnx {C function} @code{void} mgl_data_delete (@code{HMDT} dat, @code{char} dir, @code{int} pos, @code{char} num)
-Delete @var{num} slices along @var{dir}-direction at position @var{pos}.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Delete (@code{char} dir, @code{int} pos=@code{0}, @code{int} num=@code{1})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_delete (@code{HMDT} dat, @code{char} dir, @code{int} pos, @code{char} num)
+УдалÑÐµÑ @var{num} ÑÑезов Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ @var{dir} Ñ Ð¿Ð¾Ð·Ð¸Ñии @var{pos}.
@end deftypefn
@c ------------------------------------------------------------------
@node File I/O, Make another data, Rearrange, mglData class
- at section File I/O
+ at section ЧÑение/ÑоÑ
Ñанение даннÑÑ
@cindex Read
@cindex ReadMat
@cindex ReadAll
@@ -258,50 +258,54 @@ Delete @var{num} slices along @var{dir}-direction at position @var{pos}.
@cindex Export
@cindex Import
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Read (@code{const char *}fname)
- at deftypefnx {C function} @code{void} mgl_data_read (@code{HMDT} dat, @code{const char *}fname)
-Reads data from tab-separated text file with auto determining sizes of the data.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Read (@code{const char *}fname)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_read (@code{HMDT} dat, @code{const char *}fname)
+ЧиÑÐ°ÐµÑ Ð´Ð°Ð½Ð½Ñе из ÑекÑÑового Ñайла Ñ ÑазделиÑелÑми Ñимволом пÑобела/ÑабÑлÑÑии Ñ Ð°Ð²ÑомаÑиÑеÑким опÑеделением ÑазмеÑа маÑÑива. Ðвойной пеÑевод ÑÑÑоки наÑÐ¸Ð½Ð°ÐµÑ Ð½Ð¾Ð²Ñй ÑÑез даннÑÑ
(по напÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ z).
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Read (@code{const char *}fname, @code{int} mx, @code{int} my=@code{1}, @code{int} mz=@code{1})
- at deftypefnx {C function} @code{void} mgl_data_read_dim (@code{HMDT} dat, @code{const char *}fname, @code{int} mx, @code{int} my, @code{int} mz)
-Reads data from text file with specified data sizes. This function does nothing if one of parameters @var{mx}, @var{my} or @var{mz} is zero or negative.
+
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Read (@code{const char *}fname, @code{int} mx, @code{int} my=@code{1}, @code{int} mz=@code{1})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_read_dim (@code{HMDT} dat, @code{const char *}fname, @code{int} mx, @code{int} my, @code{int} mz)
+ЧиÑÐ°ÐµÑ Ð´Ð°Ð½Ð½Ñе из ÑекÑÑового Ñайла Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñми ÑазмеÑами. ÐиÑего не делаеÑÑÑ ÐµÑли паÑамеÑÑÑ @var{mx}, @var{my} или @var{mz} ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} ReadMat (@code{const char *}fname, @code{int} dim=@code{2})
- at deftypefnx {C function} @code{void} mgl_data_read_mat (@code{HMDT} dat, @code{const char *}fname, @code{int} dim)
-Read data from text file with size specified at beginning of the file by first @var{dim} numbers. At this, variable @var{dim} set data dimensions.
+
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} ReadMat (@code{const char *}fname, @code{int} dim=@code{2})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_read_mat (@code{HMDT} dat, @code{const char *}fname, @code{int} dim)
+ЧиÑÐ°ÐµÑ Ð´Ð°Ð½Ð½Ñе из ÑекÑÑового Ñайла Ñ ÑазмеÑами, ÑказаннÑми в пеÑвÑÑ
@var{dim} ÑиÑлаÑ
Ñайла. ÐÑи ÑÑом пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ @var{dim} Ð·Ð°Ð´Ð°ÐµÑ ÑазмеÑноÑÑÑ (1d, 2d, 3d) даннÑÑ
.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} ReadRange (@code{const char *}templ, @code{float} from, @code{float} to, @code{float} step=@code{1.f}, @code{bool} as_slice=@code{false})
-Join data arrays from several text files. The file names are determined by function call @code{sprintf(fname,templ,val);}, where @var{val} changes from @var{from} to @var{to} with step @var{step}. The data load one-by-one in the same slice if @var{as_slice}=@code{false} or as slice-by-slice if @var{as_slice}=@code{true}.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} ReadRange (@code{const char *}templ, @code{float} from, @code{float} to, @code{float} step=@code{1.f}, @code{bool} as_slice=@code{false})
+ÐбÑединÑÐµÑ Ð´Ð°Ð½Ð½Ñе из неÑколÑкиÑ
ÑекÑÑовÑÑ
Ñайлов. Ðмена Ñайлов опÑеделÑÑÑÑÑ Ð²Ñзовом ÑÑнкÑии @code{sprintf(fname,templ,val);}, где @var{val} менÑеÑÑÑ Ð¾Ñ @var{from} до @var{to} Ñ Ñагом @var{step}. ÐаннÑе загÑÑжаÑÑÑÑ Ð¾Ð´Ð¸Ð½ за дÑÑгим в один и ÑÐ¾Ñ Ð¶Ðµ ÑÑез даннÑÑ
(пÑи @var{as_slice}=@code{false}) или ÑÑез-за-ÑÑезом (пÑи @var{as_slice}=@code{true}).
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} ReadAll (@code{const char *}templ, @code{bool} as_slice=@code{false})
-Join data arrays from several text files which filenames satisfied the template @var{templ} (for example, @var{templ}=@code{"t_*.dat"}). The data load one-by-one in the same slice if @var{as_slice}=@code{false} or as slice-by-slice if @var{as_slice}=@code{true}.
+
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} ReadAll (@code{const char *}templ, @code{bool} as_slice=@code{false})
+ÐбÑединÑÐµÑ Ð´Ð°Ð½Ð½Ñе из неÑколÑкиÑ
ÑекÑÑовÑÑ
Ñайлов, ÑÑи имена ÑдовлеÑвоÑÑÑÑ ÑÐ°Ð±Ð»Ð¾Ð½Ñ @var{templ} (напÑимеÑ, @var{templ}=@code{"t_*.dat"}). ÐаннÑе загÑÑжаÑÑÑÑ Ð¾Ð´Ð¸Ð½ за дÑÑгим в один и ÑÐ¾Ñ Ð¶Ðµ ÑÑез даннÑÑ
(пÑи @var{as_slice}=@code{false}) или ÑÑез-за-ÑÑезом (пÑи @var{as_slice}=@code{true}).
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Save (@code{const char *}fname, @code{int} ns=@code{-1}) @code{const}
- at deftypefnx {C function} @code{void} mgl_data_save (@code{const HMDT} dat, @code{const char *}fname, @code{int} ns)
-Saves the whole data array (for @var{ns}=@code{-1}) or only ns-th slice to text file. If @var{ns}>0 then only @var{ns}-th slice (or column for 2D array) will be saved.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Save (@code{const char *}fname, @code{int} ns=@code{-1}) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_save (@code{const HMDT} dat, @code{const char *}fname, @code{int} ns)
+СоÑ
ÑанÑÐµÑ Ð²ÐµÑÑ Ð¼Ð°ÑÑив даннÑÑ
пÑи @var{ns}=@code{-1} или ÑолÑко @var{ns}-Ñй ÑÑез в ÑекÑÑовÑй Ñайл.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} ReadHDF (@code{const char *}fname, @code{const char *}dname)
-Reads data array named @var{dname} from HDF file. This function does nothing if NO_HDF5 was defined during library compilation.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} ReadHDF (@code{const char *}fname, @code{const char *}dname)
+ЧиÑÐ°ÐµÑ Ð¼Ð°ÑÑив Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ @var{dname} из HDF5 или HDF4 Ñайла @var{fname}. ФÑнкÑÐ¸Ñ Ð½Ð¸Ñего не Ð´ÐµÐ»Ð°ÐµÑ ÐµÑли библиоÑека бÑла ÑобÑана Ñ Ñлагами NO_HDF5|NO_HDF4.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} SaveHDF (@code{const char *}fname, @code{const char *}dname, @code{bool} rewrite=@code{false}) @code{const}
-Saves data array named @var{dname} from HDF file. This function does nothing if NO_HDF5 was defined during library compilation.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} SaveHDF (@code{const char *}fname, @code{const char *}dname, @code{bool} rewrite=@code{false}) @code{const}
+СоÑ
ÑанÑÐµÑ Ð¼Ð°ÑÑив под именем @var{dname} в HDF5 или HDF4 Ñайл @var{fname}. ФÑнкÑÐ¸Ñ Ð½Ð¸Ñего не Ð´ÐµÐ»Ð°ÐµÑ ÐµÑли библиоÑека бÑла ÑобÑана Ñ Ñлагами NO_HDF5|NO_HDF4.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Import (@code{const char *}fname, @code{const char *}scheme, @code{float} v1=@code{0}, float v2=@code{1})
- at deftypefnx {C function} @code{void} mgl_data_import (@code{HMDT} dat, @code{const char *}fname, @code{const char *}scheme, @code{float} v1, float v2)
-Reads data from bitmap file (now support only PNG format). The RGB values of bitmap pixels are transformed to float values in range [@var{v1}, @var{v2}] using color scheme @var{scheme} (@pxref{Color scheme}).
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Import (@code{const char *}fname, @code{const char *}scheme, @code{float} v1=@code{0}, float v2=@code{1})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_import (@code{HMDT} dat, @code{const char *}fname, @code{const char *}scheme, @code{float} v1, float v2)
+ЧиÑÐ°ÐµÑ Ð´Ð°Ð½Ð½Ñе из ÑаÑÑÑового Ñайла. RGB знаÑÐµÐ½Ð¸Ñ Ð¿Ð¸ÐºÑелов пÑеобÑазÑÑÑÑÑ Ð² ÑиÑло в диапазоне [@var{v1}, @var{v2}] иÑполÑзÑÑ ÑвеÑовÑÑ ÑÑ
ÐµÐ¼Ñ @var{sch} (@pxref{Color scheme}).
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Export (@code{const char *}fname, @code{const char *}scheme, @code{float} v1=@code{0}, float v2=@code{0}, @code{int} ns=@code{-1}) const
- at deftypefnx {C function} @code{void} mgl_data_export (@code{HMDT} dat, @code{const char *}fname, @code{const char *}scheme, @code{float} v1, float v2, @code{int} ns) const
-Saves data matrix (or @code{ns}-th slice for 3d data) to bitmap file (now support only PNG format). The data values are transformed from range [@var{v1}, @var{v2}] to RGB pixels of bitmap using color scheme @var{scheme} (@pxref{Color scheme}). If @var{v1}>=@var{v2} then the values of @var{v1}, @var{v2} are automatically determined as minimal and maximal value of the data array.
+
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Export (@code{const char *}fname, @code{const char *}scheme, @code{float} v1=@code{0}, float v2=@code{0}, @code{int} ns=@code{-1}) const
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_export (@code{HMDT} dat, @code{const char *}fname, @code{const char *}scheme, @code{float} v1, float v2, @code{int} ns) const
+СоÑ
ÑанÑÐµÑ Ð´Ð°Ð½Ð½Ñе в ÑаÑÑÑовÑй Ñайл. ЧиÑловÑе знаÑениÑ, ноÑмиÑованнÑе в диапазон [@var{v1}, @var{v2}], пÑеобÑазÑÑÑÑÑ Ð² RGB знаÑÐµÐ½Ð¸Ñ Ð¿Ð¸ÐºÑелов, иÑполÑзÑÑ ÑвеÑовÑÑ ÑÑ
ÐµÐ¼Ñ @var{sch} (@pxref{Color scheme}). ÐÑли @var{v1}>=@var{v2}, Ñо знаÑÐµÐ½Ð¸Ñ @var{v1}, @var{v2} опÑеделÑÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки как минималÑное и макÑималÑное знаÑение даннÑÑ
.
@end deftypefn
@c ------------------------------------------------------------------
- at node Make another data, Functions on direction, File I/O, mglData class
- at section Make another data
+ at node Make another data, Change data, File I/O, mglData class
+ at section Создание новÑÑ
даннÑÑ
@cindex SubData
@cindex Column
@cindex SetColumnId
@@ -315,150 +319,190 @@ Saves data matrix (or @code{ns}-th slice for 3d data) to bitmap file (now suppor
@cindex Resize
@cindex Trace
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} SubData (@code{int} xx, @code{int} yy=@code{-1}, @code{int} zz=@code{-1}) @code{const}
- at deftypefnx {C function} @code{HMDT} mgl_data_subdata (@code{const HMDT} dat, @code{int} xx, @code{int} yy, @code{int} zz)
-Extracts sub-array data from the original data array keeping fixed positive index. For example @code{SubData(-1,2)} extracts 3d row (indexes are zero based), @code{SubData(4,-1)} extracts 5th column, @code{SubData(-1,-1,3)} extracts 4th slice and so on. The most convenient way is to use this function as initialization of other @code{mglData} variable like @code{mglData a1(a.SubData(-1,-1,3))}.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{mglData} SubData (@code{int} xx, @code{int} yy=@code{-1}, @code{int} zz=@code{-1}) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_data_subdata (@code{const HMDT} dat, @code{int} xx, @code{int} yy, @code{int} zz)
+ÐозвÑаÑÐ°ÐµÑ Ð² @var{res} подмаÑÑив маÑÑива даннÑÑ
@var{dat} Ñ ÑикÑиÑованнÑми знаÑениÑми индекÑов Ñ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑнÑми знаÑениÑми. ÐапÑимеÑ, @code{SubData(-1,2)} вÑделÑÐµÑ ÑÑеÑÑÑ ÑÑÑÐ¾ÐºÑ (индекÑÑ Ð½Ð°ÑинаÑÑÑÑ Ñ Ð½ÑлÑ), @code{SubData(4,-1)} вÑделÑÐµÑ 5-ÑÑ ÐºÐ¾Ð»Ð¾Ð½ÐºÑ, @code{SubData(-1,-1,3)} вÑделÑÐµÑ 4-Ñй ÑÑез и Ñ.д.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} SubData (@code{const mglData &}xx, @code{const mglData &}yy, @code{const mglData &}zz) @code{const}
- at deftypefnx {C function} @code{HMDT} mgl_data_subdata_ext (@code{const HMDT} dat, @code{const HMDT} xx, @code{const HMDT} yy, @code{const HMDT} zz)
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{mglData} SubData (@code{const mglData &}xx, @code{const mglData &}yy, @code{const mglData &}zz) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_data_subdata_ext (@code{const HMDT} dat, @code{const HMDT} xx, @code{const HMDT} yy, @code{const HMDT} zz)
Extracts sub-array data from the original data array for indexes specified by arrays @var{xx}, @var{yy}, @var{zz} (indirect access). The resulting array have the same dimensions as input arrays for 2D and 3D arguments. This function work like previous one for 1D arguments (or numbers). The dimensions of all argument must be the same if they are 2D or 3D arrays.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} Column (@code{const char *}eq) @code{const}
- at deftypefnx {C function} @code{HMDT} mgl_data_column (@code{const HMDT} dat, @code{const char *}eq)
-Get column (or slice) of the data filled by formula @var{eq} of other named columns. For example, @code{Column("n*w^2/exp(t)");}. The column ids must be defined first by @code{SetColumnId()} function.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{mglData} Column (@code{const char *}eq) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_data_column (@code{const HMDT} dat, @code{const char *}eq)
+ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив даннÑÑ
заполненнÑй по ÑоÑмÑле @var{eq}, вÑÑиÑленной Ð´Ð»Ñ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½ÑÑ
колонок (или ÑÑезов). ÐапÑимеÑ, @code{Column("n*w^2/exp(t)");}. Ðмена колонок задаеÑÑÑ ÑÑнкÑией @code{SetColumnId()} или пÑи ÑÑении Ñайлов даннÑÑ
.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} SetColumnId (@code{const char *}ids)
- at deftypefnx {C function} @code{void} mgl_data_set_id (@code{HMDT} dat, @code{const char *}ids)
-Set the symbol id for data columns. The string must contain one symbol 'a'...'z' per column (without spaces).
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} SetColumnId (@code{const char *}ids)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_set_id (@code{HMDT} dat, @code{const char *}ids)
+УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÑимволÑнÑе обознаÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ¾Ð»Ð¾Ð½Ð¾Ðº даннÑÑ
. СÑÑока должна ÑодеÑжаÑÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ 'a'...'z' один на ÐºÐ¾Ð»Ð¾Ð½ÐºÑ (без пÑобелов).
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} Trace () @code{const}
-Gets array of diagonal elements a[i,i] (for 2D case) or a[i,i,i] (for 3D case) where i=0...nx-1. Function return copy of itself for 1D case. Data array must have dimensions ny,nz >= nx or ny,nz = 1.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{mglData} Trace () @code{const}
+ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив диагоналÑнÑÑ
ÑлеменÑов a[i,i] (Ð´Ð»Ñ 2D даннÑÑ
) или a[i,i,i] (Ð´Ð»Ñ 3D даннÑÑ
) где i=0...nx-1. Ð 1D ÑлÑÑае возвÑаÑаеÑÑÑ Ñам маÑÑив даннÑÑ
. РазмеÑÑ Ð¼Ð°ÑÑива даннÑÑ
должен бÑÑÑ ny,nz >= nx или ny,nz = 1.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} Hist (@code{int} n, @code{float} v1=@code{0}, @code{float} v2=@code{1}, @code{int} nsub=@code{0}) @code{const}
- at deftypefnx {C function} @code{HMDT} mgl_data_hist (@code{const HMDT} dat, @code{int} n, @code{float} v1, @code{float} v2, @code{int} nsub)
-Creates @var{n}-th points distribution of the data values in range [@var{v1}, @var{v2}]. Parameter @var{nsub} define the number of additional interpolated points (for smoothness of histogram).
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{mglData} Hist (@code{int} n, @code{float} v1=@code{0}, @code{float} v2=@code{1}, @code{int} nsub=@code{0}) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_data_hist (@code{const HMDT} dat, @code{int} n, @code{float} v1, @code{float} v2, @code{int} nsub)
+ÐозвÑаÑÐ°ÐµÑ ÑаÑпÑеделение (гиÑÑогÑаммÑ) из @var{n} ÑоÑек Ð¾Ñ Ð·Ð½Ð°Ñений маÑÑива в диапазоне [@var{v1}, @var{v2}]. ÐаÑамеÑÑ @var{nsub} Ð·Ð°Ð´Ð°ÐµÑ ÑиÑло дополниÑелÑнÑÑ
ÑоÑек инÑеÑполÑÑии (Ð´Ð»Ñ ÑÐ³Ð»Ð°Ð¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑÑивÑейÑÑ Ð³Ð¸ÑÑогÑаммÑ).
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} Hist (@code{const mglData &}w, @code{int} n, @code{float} v1=@code{0}, @code{float} v2=@code{1}, @code{int} nsub=@code{0}) @code{const}
- at deftypefnx {C function} @code{HMDT} mgl_data_hist_w (@code{const HMDT} dat, @code{const HMDT} w, @code{int} n, @code{float} v1, @code{float} v2, @code{int} nsub)
-Creates @var{n}-th points distribution of the data values in range [@var{v1}, @var{v2}]. Array @var{w} specifies weights of the data elements. Parameter @var{nsub} define the number of additional interpolated points (for smoothness of histogram).
+
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{mglData} Hist (@code{const mglData &}w, @code{int} n, @code{float} v1=@code{0}, @code{float} v2=@code{1}, @code{int} nsub=@code{0}) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_data_hist_w (@code{const HMDT} dat, @code{const HMDT} w, @code{int} n, @code{float} v1, @code{float} v2, @code{int} nsub)
+ÐозвÑаÑÐ°ÐµÑ ÑаÑпÑеделение (гиÑÑогÑаммÑ) из @var{n} ÑоÑек Ð¾Ñ Ð·Ð½Ð°Ñений маÑÑива в диапазоне [@var{v1}, @var{v2}]. ÐаÑÑив @var{w} Ð·Ð°Ð´Ð°ÐµÑ Ð²ÐµÑа ÑлеменÑов. ÐаÑамеÑÑ @var{nsub} Ð·Ð°Ð´Ð°ÐµÑ ÑиÑло дополниÑелÑнÑÑ
ÑоÑек инÑеÑполÑÑии (Ð´Ð»Ñ ÑÐ³Ð»Ð°Ð¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑÑивÑейÑÑ Ð³Ð¸ÑÑогÑаммÑ).
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} Momentum (@code{char} dir, @code{const char *}how) @code{const}
- at deftypefnx {C function} @code{HMDT} mgl_data_momentum (@code{const HMDT} dat, @code{char} dir, @code{const char *}how)
-Get momentum (1D-array) of the data along direction @var{dir}. String @var{how} contain kind of momentum. The momentum is defined like as
+
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{mglData} Momentum (@code{char} dir, @code{const char *}how) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_data_momentum (@code{const HMDT} dat, @code{char} dir, @code{const char *}how)
+ÐозвÑаÑÐ°ÐµÑ Ð¼Ð¾Ð¼ÐµÐ½Ñ (1d маÑÑив) даннÑÑ
Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ @var{dir}. СÑÑока @var{how} опÑеделÑÐµÑ Ñип моменÑа. ÐÐ¾Ð¼ÐµÐ½Ñ Ð¾Ð¿ÑеделÑеÑÑÑ ÐºÐ°Ðº
@iftex
@math{res_k = \sum_{ij} how(x_i,y_j,z_k) a_{ij}/\sum_{ij} a_{ij}}
@end iftex
@ifnottex
res_k = \sum_ij how(x_i,y_j,z_k) a_ij/ \sum_ij a_ij
@end ifnottex
-if @var{var}=@samp{z} and so on. Coordinates @samp{x}, @samp{y}, @samp{z} are data indexes normalized in range [0,1].
+еÑли @var{dir}=@samp{z} и Ñ.д. ÐооÑдинаÑÑ @samp{x}, @samp{y}, @samp{z} -- индекÑÑ Ð¼Ð°ÑÑива в диапазоне [0,1].
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} Sum (@code{const char *}dir) @code{const}
- at deftypefnx {C function} @code{HMDT} mgl_data_sum (@code{const HMDT} dat, @code{const char *}dir)
-Gets array which is the result of summation in given direction or direction(s).
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{mglData} Sum (@code{const char *}dir) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_data_sum (@code{const HMDT} dat, @code{const char *}dir)
+ÐозвÑаÑÐ°ÐµÑ ÑезÑлÑÑÐ°Ñ ÑÑммиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑавлениÑ(ий) @var{dir}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} Max (@code{const char *}dir) @code{const}
- at deftypefnx {C function} @code{HMDT} mgl_data_max_dir (@code{const HMDT} dat, @code{const char *}dir)
-Gets array which is the maximal data values in given direction or direction(s).
+
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{mglData} Max (@code{const char *}dir) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_data_max_dir (@code{const HMDT} dat, @code{const char *}dir)
+ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÐºÑималÑное знаÑение даннÑÑ
Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑавлениÑ(ий) @var{dir}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} Min (@code{const char *}dir) @code{const}
- at deftypefnx {C function} @code{HMDT} mgl_data_min_dir (@code{const HMDT} dat, @code{const char *}dir)
-Gets array which is the maximal data values in given direction or direction(s).
+
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{mglData} Min (@code{const char *}dir) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_data_min_dir (@code{const HMDT} dat, @code{const char *}dir)
+ÐозвÑаÑÐ°ÐµÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»Ñное знаÑение даннÑÑ
Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑавлениÑ(ий) @var{dir}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} Combine (@code{const mglData &}a) @code{const}
- at deftypefnx {C function} @code{HMDT} mgl_data_combine (@code{const HMDT} dat, @code{const HMDT} a)
-Return direct multiplication of arrays (like, res[i,j] = this[i]*a[j] and so on).
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{mglData} Combine (@code{const mglData &}a) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_data_combine (@code{const HMDT} dat, @code{const HMDT} a)
+ÐозвÑаÑÐ°ÐµÑ Ð¿ÑÑмое пÑоизведение маÑÑивов (наподобие, res[i,j] = adat[i]*bdat[j] и Ñ.д.).
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} Evaluate (@code{const mglData &}idat, @code{bool} norm=@code{true}) @code{const}
- at deftypefnx {Method on @code{mglData} (C++, Python)} @code{mglData} Evaluate (@code{const mglData &}idat, @code{const mglData &}jdat, @code{bool} norm=@code{true}) @code{const}
- at deftypefnx {Method on @code{mglData} (C++, Python)} @code{mglData} Evaluate (@code{const mglData &}idat, @code{const mglData &}jdat, @code{const mglData &}kdat, @code{bool} norm=@code{true}) @code{const}
- at deftypefnx {C function} @code{HMDT} mgl_data_evaluate_i (@code{const HMDT} dat, @code{const HMDT} idat, @code{int} norm)
- at deftypefnx {C function} @code{HMDT} mgl_data_evaluate_ij (@code{const HMDT} dat, @code{const HMDT} idat, @code{const HMDT} jdat, @code{int} norm)
- at deftypefnx {C function} @code{HMDT} mgl_data_evaluate_ijk (@code{const HMDT} dat, @code{const HMDT} idat, @code{const HMDT} jdat, @code{const HMDT} kdat, @code{int} norm)
-Get array which values is result of interpolation of original array for coordinates from other arrays. All dimensions must be the same for data @var{idat}, @var{jdat}, @var{kdat}. Coordinates from @var{idat}, @var{jdat}, @var{kdat} are supposed to be normalized in range [0,1] (if @var{norm}=@code{true}) or in range [0,nx], [0,ny], [0,nz] correspondingly.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{mglData} Evaluate (@code{const mglData &}idat, @code{bool} norm=@code{true}) @code{const}
+ at deftypefnx {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{mglData} Evaluate (@code{const mglData &}idat, @code{const mglData &}jdat, @code{bool} norm=@code{true}) @code{const}
+ at deftypefnx {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{mglData} Evaluate (@code{const mglData &}idat, @code{const mglData &}jdat, @code{const mglData &}kdat, @code{bool} norm=@code{true}) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_data_evaluate_i (@code{const HMDT} dat, @code{const HMDT} idat, @code{int} norm)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_data_evaluate_ij (@code{const HMDT} dat, @code{const HMDT} idat, @code{const HMDT} jdat, @code{int} norm)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_data_evaluate_ijk (@code{const HMDT} dat, @code{const HMDT} idat, @code{const HMDT} jdat, @code{const HMDT} kdat, @code{int} norm)
+ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив даннÑÑ
, полÑÑеннÑй в ÑезÑлÑÑаÑе инÑеÑполÑÑии иÑÑ
одного маÑÑива в ÑоÑкаÑ
дÑÑгиÑ
маÑÑивов (напÑимеÑ, res[i,j]=dat[idat[i,j],jdat[i,j]]). РазмеÑÑ Ð¼Ð°ÑÑивов @var{idat}, @var{jdat}, @var{kdat} Ð´Ð¾Ð»Ð¶Ð½Ñ ÑовпадаÑÑ. ÐооÑдинаÑÑ Ð² @var{idat}, @var{jdat}, @var{kdat} полагаÑÑÑÑ Ð½Ð¾ÑмиÑованнÑми в диапазон [0,1] (пÑи @var{norm}=@code{true}) или в Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ñ [0,nx], [0,ny], [0,nz] ÑооÑвеÑÑÑвенно.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{mglData} Resize (@code{int} mx, @code{int} my=@code{1}, @code{int} mz=@code{1}, @code{float} x1=@code{0}, @code{float} x2=@code{1}, @code{float} y1=@code{0}, @code{float} y2=@code{1}, @code{float} z1=@code{0}, @code{float} z2=@code{1}) @code{const}
- at deftypefnx {C function} @code{HMDT} mgl_data_resize (@code{const HMDT} dat, @code{int} mx, @code{int} my, @code{int} mz)
- at deftypefnx {C function} @code{HMDT} mgl_data_resize_box (@code{const HMDT} dat, @code{int} mx, @code{int} my, @code{int} mz, @code{float} x1, @code{float} x2, @code{float} y1, @code{float} y2, @code{float} z1, @code{float} z2)
-Resizes the data to new size @var{mx}, @var{my}, @var{mz} from box (part) [@var{x1}, at var{x2}] x [@var{y1}, at var{y2}] x [@var{z1}, at var{z2}] of original array. Initially x,y,z coordinates are supposed to be in [0,1].
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{mglData} Resize (@code{int} mx, @code{int} my=@code{1}, @code{int} mz=@code{1}, @code{float} x1=@code{0}, @code{float} x2=@code{1}, @code{float} y1=@code{0}, @code{float} y2=@code{1}, @code{float} z1=@code{0}, @code{float} z2=@code{1}) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_data_resize (@code{const HMDT} dat, @code{int} mx, @code{int} my, @code{int} mz)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_data_resize_box (@code{const HMDT} dat, @code{int} mx, @code{int} my, @code{int} mz, @code{float} x1, @code{float} x2, @code{float} y1, @code{float} y2, @code{float} z1, @code{float} z2)
+ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив даннÑÑ
ÑазмеÑом @var{mx}, @var{my}, @var{mz} Ñо знаÑениÑми полÑÑеннÑми инÑеÑполÑÑией знаÑений из ÑаÑÑи [@var{x1}, at var{x2}] x [@var{y1}, at var{y2}] x [@var{z1}, at var{z2}] иÑÑ
одного маÑÑива. ÐелиÑÐ¸Ð½Ñ x,y,z полагаÑÑÑÑ Ð½Ð¾ÑмиÑованнÑми в диапазоне [0,1].
@end deftypefn
@c ------------------------------------------------------------------
- at node Functions on direction, Interpolation, Make another data, mglData class
- at section Functions on direction
+ at node Change data, Interpolation, Make another data, mglData class
+ at section Ðзменение даннÑÑ
+
+ÐÑи ÑÑнкÑии изменÑÑÑ Ð´Ð°Ð½Ð½Ñе Ð²Ð´Ð¾Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ напÑавлениÑ(ий) Ñипа напÑÐ¸Ð¼ÐµÑ Ð´Ð¸ÑÑеÑенÑиÑованиÑ, инÑегÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ Ñ.д. ÐапÑавление ÑказÑваеÑÑÑ ÑÑÑокой @var{dir}, коÑоÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ @samp{x}, @samp{y} и/или @samp{z}, Ð²Ð´Ð¾Ð»Ñ ÐºÐ¾ÑоÑÑÑ
Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑдÑÑ Ð¿ÑимененÑ.
+
@cindex CumSum
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} CumSum (@code{const char *}dir)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_cumsum (@code{HMDT} dat, @code{const char *}dir)
+СÑммиÑÑÐµÑ Ñ Ð½Ð°ÐºÐ¾Ð¿Ð»ÐµÐ½Ð¸ÐµÐ¼ в вÑбÑанном напÑавлении(ÑÑ
).
+ at end deftypefn
+
@cindex Integral
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Integral (@code{const char *}dir)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_integral (@code{HMDT} dat, @code{const char *}dir)
+ÐÑполнÑÐµÑ Ð¸Ð½ÑегÑиÑование (подобно ÑÑммиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñ Ð½Ð°ÐºÐ¾Ð¿Ð»ÐµÐ½Ð¸ÐµÐ¼) в вÑбÑанном напÑавлении(ÑÑ
).
+ at end deftypefn
+
@cindex Diff
- at cindex Diff2
- at cindex Swap
- at cindex Mirror
- at cindex Sew
- at cindex Smooth
- at cindex Envelop
- at cindex Norm
- at cindex NormSl
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Diff (@code{const char *}dir)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_diff (@code{HMDT} dat, @code{const char *}dir)
+ÐÑполнÑÐµÑ Ð´Ð¸ÑÑеÑенÑиÑование в вÑбÑанном напÑавлении(ÑÑ
).
+ at end deftypefn
-These functions change the data in some direction like differentiations, integrations and so on. The direction in which the change will applied is specified by the string parameter, which may contain @samp{x}, @samp{y} or @samp{z} characters for 1-st, 2-nd and 3-d dimension correspondengly.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Diff (@code{const mglData &}x, @code{const mglData &}y)
+ at deftypefnx {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Diff (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_diff_par (@code{HMDT} dat, @code{const HMDT} x, @code{const HMDT}y, @code{const HMDT}z)
+ÐÑполнÑÐµÑ Ð´Ð¸ÑÑеÑенÑиÑование даннÑÑ
, паÑамеÑÑиÑеÑки завиÑÑÑиÑ
Ð¾Ñ ÐºÐ¾Ð¾ÑдинаÑ, в напÑавлении @var{x} Ñ @var{y}, @var{z}=constant. ÐаÑамеÑÑ @var{z} Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð¿ÑÑен, ÑÑо ÑооÑвеÑÑÑвÑÐµÑ 2D ÑлÑÑаÑ. ÐÑполÑзÑÑÑÑÑ ÑледÑÑÑие ÑоÑмÑÐ»Ñ (2D ÑлÑÑай): @math{da/dx = (a_j*y_i-a_i*y_j)/(x_j*y_i-x_i*y_j)}, где @math{a_i=da/di, a_j=da/dj} обознаÑÐ°ÐµÑ Ð´Ð¸ÑÑеÑенÑиÑование Ð²Ð´Ð¾Ð»Ñ 1-ой и 2-ой ÑазмеÑноÑÑи. ÐоÑ
ожие ÑоÑмÑÐ»Ñ Ð¸ÑполÑзÑÑÑÑÑ Ð¸ в 3D ÑлÑÑае. ÐоÑÑдок аÑгÑменÑов можно менÑÑÑ -- напÑимеÑ, еÑли даннÑе a(i,j) завиÑÑÑ Ð¾Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ @{x(i,j), y(i,j)@}, Ñо обÑÑÐ½Ð°Ñ Ð¿ÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ð½Ð°Ñ Ð¿Ð¾ @samp{x} бÑÐ´ÐµÑ Ñавна @code{Diff(x,y);}, а обÑÑÐ½Ð°Ñ Ð¿ÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ð½Ð°Ñ Ð¿Ð¾ @samp{y} бÑÐ´ÐµÑ Ñавна @code{Diff(y,x);}.
+ at end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} CumSum (@code{const char *}dir)
- at deftypefnx {C function} @code{void} mgl_data_cumsum (@code{HMDT} dat, @code{const char *}dir)
-CCumulative summation of the data in given direction or directions.
+
+ at cindex Diff2
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Diff2 (@code{const char *}dir)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_diff2 (@code{const char *}dir)
+ÐÑполнÑÐµÑ Ð´Ð²Ð¾Ð¹Ð½Ð¾Ðµ диÑÑеÑенÑиÑование (как в опеÑаÑоÑе ÐаплаÑа) в вÑбÑанном напÑавлении(ÑÑ
).
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Integral (@code{const char *}dir)
- at deftypefnx {C function} @code{void} mgl_data_integral (@code{HMDT} dat, @code{const char *}dir)
-Integrates (like cumulative summation) the data in given direction or directions.
+
+ at cindex SinFFT
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} SinFFT (@code{const char *}dir)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_sinfft (@code{HMDT} dat, @code{const char *}dir)
+ÐÑполнÑÐµÑ ÑинÑÑ Ð¿ÑеобÑазование в вÑбÑанном напÑавлении(ÑÑ
). СинÑÑ Ð¿ÑеобÑазование еÑÑÑ @math{\sum a_i \sin(k i)}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Diff (@code{const char *}dir)
- at deftypefnx {C function} @code{void} mgl_data_diff (@code{HMDT} dat, @code{const char *}dir)
-Differentiates the data in given direction or directions.
+
+ at cindex CosFFT
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} CosFFT (@code{const char *}dir)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_cosfft (@code{HMDT} dat, @code{const char *}dir)
+ÐÑполнÑÐµÑ ÐºÐ¾ÑинÑÑ Ð¿ÑеобÑазование в вÑбÑанном напÑавлении(ÑÑ
). СинÑÑ Ð¿ÑеобÑазование еÑÑÑ @math{\sum a_i \cos(k i)}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Diff (@code{const mglData &}x, @code{const mglData &}y)
- at deftypefnx {Method on @code{mglData} (C++, Python)} @code{void} Diff (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z)
- at deftypefnx {C function} @code{void} mgl_data_diff_par (@code{HMDT} dat, @code{const HMDT} x, @code{const HMDT}y, @code{const HMDT}z)
-Differentiates the data specified parametrically in direction @var{x} with @var{y}, @var{z}=constant. Parametrical differentiation uses the formula (for 2D case): @math{da/dx = (a_j*y_i-a_i*y_j)/(x_j*y_i-x_i*y_j)} where @math{a_i=da/di, a_j=da/dj} denotes usual differentiation along 1st and 2nd dimensions. The similar formula is used for 3D case. Note, that you may change the order of arguments -- for example, if you have 2D data a(i,j) which depend on coordinates @{x(i,j), y(i,j)@} then usual derivative along @samp{x} will be @code{Diff(x,y);} and usual derivative along @samp{y} will be @code{Diff(y,x);}.
+ at cindex Hankel
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Hankel (@code{const char *}dir)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_hankel (@code{HMDT} dat, @code{const char *}dir)
+ÐÑполнÑÐµÑ Ð¿ÑеобÑазование Ð¥Ð°Ð½ÐºÐµÐ»Ñ Ð² вÑбÑанном напÑавлении(ÑÑ
). ÐÑеобÑазование Ð¥Ð°Ð½ÐºÐµÐ»Ñ ÐµÑÑÑ @math{\sum a_i J_0(k i)}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Diff2 (@code{const char *}dir)
- at deftypefnx {C function} @code{void} mgl_data_diff2 (@code{const char *}dir)
-Double-differentiates (like Laplace operator) the data in given direction.
+ at cindex Swap
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Swap (@code{const char *}dir)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_swap (@code{HMDT} dat, @code{const char *}dir)
+ÐенÑÐµÑ Ð¼ÐµÑÑами левÑÑ Ð¸ пÑавÑÑ ÑаÑÑи даннÑÑ
в вÑбÑанном напÑавлении(ÑÑ
). Ðолезно Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑезÑлÑÑаÑа FFT.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Swap (@code{const char *}dir)
- at deftypefnx {C function} @code{void} mgl_data_swap (@code{HMDT} dat, @code{const char *}dir)
-Swaps the left and right part of the data in given direction (useful for Fourier spectrum).
+
+ at cindex Roll
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Roll (@code{char} dir, @code{num})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_roll (@code{HMDT} dat, @code{char} dir, @code{num})
+Ð¡Ð´Ð²Ð¸Ð³Ð°ÐµÑ Ð´Ð°Ð½Ð½Ñе на @var{num} ÑÑеек в вÑбÑанном напÑавлении(ÑÑ
). СооÑвеÑÑÑвÑÐµÑ Ð·Ð°Ð¼ÐµÐ½Ðµ индекÑа на @var{i}->(@var{i}+ at var{num})%@var{n}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Mirror (@code{const char *}dir)
- at deftypefnx {C function} @code{void} mgl_data_mirror (@code{HMDT} dat, @code{const char *}dir)
-Mirror the left-to-right part of the data in given direction. Looks like change the value index @var{i}->@var{n-i}.
+
+ at cindex Mirror
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Mirror (@code{const char *}dir)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_mirror (@code{HMDT} dat, @code{const char *}dir)
+ÐÑÑÐ°Ð¶Ð°ÐµÑ Ð´Ð°Ð½Ð½Ñе в вÑбÑанном напÑавлении(ÑÑ
). СооÑвеÑÑÑвÑÐµÑ Ð·Ð°Ð¼ÐµÐ½Ðµ индекÑа на @var{i}->@var{n}- at var{i}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Sew (@code{const char *}dir, @code{float} da=@code{2*M_PI})
- at deftypefnx {C function} @code{void} mgl_data_sew (@code{HMDT} dat, @code{const char *}dir, @code{float} da)
-Remove value steps (like phase jumps after inverse trigonometric functions) with period @var{da} in given direction.
+
+ at cindex Sew
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Sew (@code{const char *}dir, @code{float} da=@code{2*M_PI})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_sew (@code{HMDT} dat, @code{const char *}dir, @code{float} da)
+УдалÑÐµÑ ÑкаÑки даннÑÑ
(напÑимеÑ, ÑкаÑки ÑÐ°Ð·Ñ Ð¿Ð¾Ñле обÑаÑнÑÑ
ÑÑигономеÑÑиÑеÑкиÑ
ÑÑнкÑий) Ñ Ð¿ÐµÑиодом @var{da} в вÑбÑанном напÑавлении(ÑÑ
).
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Smooth (@code{int} Type, @code{const char *}dir, @code{float} delta=@code{0})
- at deftypefnx {C function} @code{void} mgl_data_smooth (@code{HMDT} dat, @code{int} Type, @code{float} delt, @code{const char *}dirs)
-Smooths the data on specified direction or directions by method @var{Type}. Now 4 methods are supported: @code{SMOOTH_NONE} does nothing for @var{delta}=0 or approaches data to zero with the step @var{delta}, @code{SMOOTH_LINE_3} linear averaging by 3 points, @code{SMOOTH_LINE_5} linear averaging by 5 points, @code{SMOOTH_QUAD_5} quadratic averaging by 5 points. Parameter @var{delta} forbids to change values of array more than @var{delta} from the original ones. String @var{dirs} specifies the dimensions which will be smoothed. It may contain characters: 'x' for 1st dimension, 'y' for 2nd dimension, 'z' for 3d dimension.
+
+ at cindex Smooth
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Smooth (@code{int} Type, @code{const char *}dir, @code{float} delta=@code{0})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_smooth (@code{HMDT} dat, @code{int} Type, @code{float} delt, @code{const char *}dirs)
+Ð¡Ð³Ð»Ð°Ð¶Ð¸Ð²Ð°ÐµÑ Ð´Ð°Ð½Ð½Ñе в вÑбÑанном напÑавлении(ÑÑ
) @var{dir} меÑодом @var{Type}. СейÑÐ°Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑÑÑ 4 меÑода: @code{SMOOTH_NONE=0} ниÑего не Ð´ÐµÐ»Ð°ÐµÑ Ð¿Ñи @var{delta}=0 или ÑÐ´Ð²Ð¸Ð³Ð°ÐµÑ Ð´Ð°Ð½Ð½Ñе к нÑÐ»Ñ Ð½Ð° Ñагом @var{delta}, @code{SMOOTH_LINE_3=1} линейное ÑÑÑеднение по 3 ÑоÑкам, @code{SMOOTH_LINE_5=2} линейное ÑÑÑеднение по 5 ÑоÑкам, @code{SMOOTH_QUAD_5=3} квадÑаÑиÑное ÑÑÑеднение по 5 ÑоÑкам. ÐаÑамеÑÑ @var{delta} запÑеÑÐ°ÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ знаÑений на велиÑÐ¸Ð½Ñ Ð±Ð¾Ð»ÑÑÑÑ @var{delta}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Smooth (@code{const char *}dir)
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Smooth (@code{const char *}dir)
Smooths the data on specified direction(s). This is the same as @code{Smooth()} but argument @var{Type} is specified in string as @samp{0} for @code{SMOOTH_NONE}, @samp{3} for @code{SMOOTH_LINE_3}, @samp{5} for @code{SMOOTH_LINE_5}. If string @var{dir} don't contain digits @samp{035} then @var{Type}=@code{SMOOTH_QUAD_5} is used.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Envelop (@code{char} dir=@code{'x'})
- at deftypefnx {C function} @code{void} mgl_data_envelop (@code{HMDT} dat, @code{char} dir)
-Find envelop for data values along direction @var{dir}.
+
+ at cindex Envelop
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Envelop (@code{char} dir=@code{'x'})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_envelop (@code{HMDT} dat, @code{char} dir)
+ÐаÑ
Ð¾Ð´Ð¸Ñ Ð¾Ð³Ð¸Ð±Ð°ÑÑÑÑ Ð´Ð°Ð½Ð½ÑÑ
в вÑбÑанном напÑавлении @var{dir}.
+ at end deftypefn
+
+ at cindex Norm
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} Norm (@code{float} v1=@code{0}, @code{float} v2=@code{1}, @code{bool} sym=@code{false}, @code{int} dim=@code{0})
+ÐоÑмиÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе в инÑеÑвал [@var{v1}, at var{v2}]. ÐÑли @var{sym}=@code{true}, Ñо иÑполÑзÑеÑÑÑ ÑиммеÑÑиÑнÑй инÑеÑвал [-max(|v1|,|v2|), max(|v1|,|v2|)]. ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿ÑименÑÑÑÑÑ ÑолÑко к ÑÑезам >=@var{dim}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} NormSl (@code{float} v1=@code{0}, @code{float} v2=@code{1}, @code{char} dir=@code{'z'}, @code{bool} keep_en=@code{true}, @code{bool} sym=@code{false})
- at deftypefnx {C function} @code{void} mgl_data_norm_slice (@code{HMDT} dat, @code{float} v1, @code{float} v2, @code{char} dir, @code{int} keep_en, @code{int} sym)
-Normalizes data slice-by-slice along direction @var{dir} the data in slices to range [@var{v1}, at var{v2}]. If flag @var{sym}=@code{true} then symmetrical interval [-max(|v1|,|v2|), max(|v1|,|v2|)] is used. If @var{keep_en} is set then maximal value of k-th slice will be limited by
+ at cindex NormSl
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} NormSl (@code{float} v1=@code{0}, @code{float} v2=@code{1}, @code{char} dir=@code{'z'}, @code{bool} keep_en=@code{true}, @code{bool} sym=@code{false})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_norm_slice (@code{HMDT} dat, @code{float} v1, @code{float} v2, @code{char} dir, @code{int} keep_en, @code{int} sym)
+ÐоÑмиÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе ÑÑез-за-ÑÑезом в вÑбÑанном напÑавлении @var{dir} в инÑеÑвал [@var{v1}, at var{v2}]. ÐÑли @var{sym}=@code{true}, Ñо иÑполÑзÑеÑÑÑ ÑиммеÑÑиÑнÑй инÑеÑвал [-max(|v1|,|v2|), max(|v1|,|v2|)]. ÐÑли @var{keep}=@code{true}, Ñо макÑималÑное знаÑение k-го ÑÑеза огÑаниÑено велиÑиной
@iftex
@math{\sqrt{\sum a_{ij}(k)/\sum a_{ij}(0)}}.
@end iftex
@@ -466,238 +510,228 @@ Normalizes data slice-by-slice along direction @var{dir} the data in slices to r
@math{\sqrt@{\sum a_ij(k)/\sum a_ij(0)@}}.
@end ifnottex
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} Norm (@code{float} v1=@code{0}, @code{float} v2=@code{1}, @code{bool} sym=@code{false}, @code{int} dim=@code{0})
-Normalizes the data to range [@var{v1}, at var{v2}]. If flag @var{sym}=@code{true} then symmetrical interval [-max(|v1|,|v2|), max(|v1|,|v2|)] is used. Modification will be applied only for slices >=@var{dim}.
- at end deftypefn
@c ------------------------------------------------------------------
- at node Interpolation, Informational functions, Functions on direction, mglData class
- at section Interpolation
+ at node Interpolation, Informational functions, Change data, mglData class
+ at section ÐнÑеÑполÑÑиÑ
@cindex Spline
- at cindex Spline1
- at cindex Linear
- at cindex Linear1
- at cindex Spline5
- at cindex v
-
@deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Spline (@code{float} x, @code{float} y=@code{0}, @code{float} z=@code{0}) @code{const}
@deftypefnx {C function} @code{float} mgl_data_spline (@code{const HMDT} dat, @code{float} x, @code{float} y, @code{float} z)
-Interpolates data by cubic spline to the given point @var{x} in [0...nx-1], @var{y} in [0...ny-1], @var{z} in [0...nz-1].
+ÐнÑеÑполиÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе кÑбиÑеÑким Ñплайном в ÑоÑке @var{x} в [0...nx-1], @var{y} в [0...ny-1], @var{z} в [0...nz-1].
@end deftypefn
+ at cindex Spline1
@deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Spline1 (@code{float} x, @code{float} y=@code{0}, @code{float} z=@code{0}) @code{const}
@deftypefnx {C function} @code{float} mgl_data_spline1 (@code{const HMDT} dat, @code{float} x, @code{float} y, @code{float} z)
-Interpolates data by cubic spline to the given point @var{x}, @var{y}, @var{z} which assumed to be normalized in range [0, 1].
+ÐнÑеÑполиÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе кÑбиÑеÑким Ñплайном в ÑоÑке @var{x}, @var{y}, @var{z}, где кооÑдинаÑÑ Ð¿Ð¾Ð»Ð°Ð³Ð°ÑÑÑÑ Ð² инÑеÑвале [0, 1].
@end deftypefn
+ at cindex Linear
@deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Linear (@code{float} x, @code{float} y=@code{0}, @code{float} z=@code{0}) @code{const}
@deftypefnx {C function} @code{float} mgl_data_linear (@code{const HMDT} dat, @code{float} x, @code{float} y, @code{float} z)
-Interpolates data by linear function to the given point @var{x} in [0...nx-1], @var{y} in [0...ny-1], @var{z} in [0...nz-1].
+ÐнÑеÑполиÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе линейной ÑÑнкÑией в ÑоÑке @var{x} в [0...nx-1], @var{y} в [0...ny-1], @var{z} в [0...nz-1].
@end deftypefn
+ at cindex Linear1
@deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Linear1 (@code{float} x, @code{float} y=@code{0}, @code{float} z=@code{0}) @code{const}
@deftypefnx {C function} @code{float} mgl_data_linear1 (@code{const HMDT} dat, @code{float} x, @code{float} y, @code{float} z)
-Interpolates data by linear function to the given point @var{x}, @var{y}, @var{z} which assumed to be normalized in range [0, 1].
+ÐнÑеÑполиÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе линейной ÑÑнкÑией в ÑоÑке @var{x}, @var{y}, @var{z}, где кооÑдинаÑÑ Ð¿Ð¾Ð»Ð°Ð³Ð°ÑÑÑÑ Ð² инÑеÑвале [0, 1].
@end deftypefn
+ at cindex v
@deftypefn {Method on @code{mglData} (C++, Python)} @code{float} v (@code{int} i, @code{int} j=@code{0}, @code{int} k=@code{0}) @code{const}
@deftypefnx {C function} @code{float} mgl_data_get_value (@code{const HMDT} dat, @code{int} i, @code{int} j, @code{int} k)
-Gets the value in specified cell of the data with border checking.
+ÐозвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение ÑÑейки Ñ Ð¿ÑовеÑкой на гÑаниÑÑ Ð¼Ð°ÑÑива даннÑÑ
.
@end deftypefn
+ at cindex Spline5
@deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Spline5 (@code{float} x, @code{float} y, @code{float} z, @code{float} &dx, @code{float} &dy, @code{float} &dz) @code{const}
-Interpolate by 5-th order splain the data to given point @var{x}, @var{y}, @var{z} which normalized in range [0, 1] and evaluate its derivatives.
+ÐнÑеÑполиÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе Ñплайном 5-го поÑÑдка в ÑоÑке @var{x}, @var{y}, @var{z}, где кооÑдинаÑÑ Ð¿Ð¾Ð»Ð°Ð³Ð°ÑÑÑÑ Ð² инÑеÑвале [0, 1].
@end deftypefn
@deftypefn {C function} @code{float *} mgl_data_value (@code{HMDT} dat, @code{int} i, @code{int} j, @code{int} k)
-Gets the pointer to data element.
+ÐозвÑаÑÐ°ÐµÑ ÑказаÑÐµÐ»Ñ Ð½Ð° ÑÑÐµÐ¹ÐºÑ Ð´Ð°Ð½Ð½ÑÑ
. ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ðµ дейÑÑвиÑелен поÑле вÑзова лÑбой ÑÑнкÑии изменÑÑÑей даннÑе.
@end deftypefn
@deftypefn {C function} @code{const float *} mgl_data_data (@code{const HMDT} dat)
-Gets the pointer to internal data array.
+ÐозвÑаÑÐ°ÐµÑ ÑказаÑÐµÐ»Ñ Ð½Ð° веÑÑ Ð¼Ð°ÑÑив даннÑÑ
. ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ðµ дейÑÑвиÑелен поÑле вÑзова лÑбой ÑÑнкÑии изменÑÑÑей даннÑе.
@end deftypefn
@c ------------------------------------------------------------------
@node Informational functions, Operators, Interpolation, mglData class
- at section Informational functions
+ at section ÐнÑоÑмаÑионнÑе ÑÑнкÑии
@cindex PrintInfo
- at cindex Maximal
- at cindex Minimal
- at cindex Momentum
- at cindex Find
- at cindex Last
- at cindex FindAny
-
- at deftypefn {Method on @code{mglData} (C++)} @code{void} PrintInfo (@code{char *}buf, @code{bool} all=@code{false}) @code{const}
-Print information about the data (sizes and momentum) to string @var{buf}. Parameter @var{all} set to print most of information (if @code{true}) or just basic one like dimensions, maximal an minimal values.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++)} @code{void} PrintInfo (@code{char *}buf, @code{bool} all=@code{false}) @code{const}
+ÐеÑаÑÐ°ÐµÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ даннÑÑ
(ÑазмеÑÑ, моменÑÑ Ð¸ пÑ.) в ÑÑÑÐ¾ÐºÑ @var{buf}. ÐаÑамеÑÑ @var{all} ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¿ÐµÑаÑаÑÑ Ð»Ð¸ подÑобнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ (еÑли @code{true}) или ÑолÑко базовÑÑ Ð¸Ð½ÑоÑмаÑиÑ.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++)} @code{void} PrintInfo (@code{FILE *}fp) @code{const}
-Print information about the data (sizes and momentum) to FILE (for example, stdout)
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++)} @code{void} PrintInfo (@code{FILE *}fp) @code{const}
+ÐналогиÑно, но вÑÐ²Ð¾Ð´Ð¸Ñ Ð² Ñайл (или, напÑимеÑ, в stdout).
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Maximal () @code{const}
- at deftypefnx {C function} @code{float} mgl_data_max (@code{const HMDT} dat)
-Gets maximal value of the data.
+ at cindex Maximal
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{float} Maximal () @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_max (@code{const HMDT} dat)
+ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÐºÑималÑное знаÑение маÑÑива даннÑÑ
.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Minimal () @code{const}
- at deftypefnx {C function} @code{float} mgl_data_min (@code{HMDT} dat) @code{const}
-Gets minimal value of the data.
+ at cindex Minimal
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{float} Minimal () @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_min (@code{HMDT} dat) @code{const}
+ÐозвÑаÑÐ°ÐµÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»Ñное знаÑение маÑÑива даннÑÑ
.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Maximal (@code{int} &i, @code{int} &j, @code{int} &k) @code{const}
- at deftypefnx {C function} @code{float} mgl_data_max_int (@code{const HMDT} dat, @code{int} *i, @code{int} *j, @code{int} *k)
-Gets maximal value of the data and its position in the array to variables @var{i}, @var{j}, @var{k}.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{float} Maximal (@code{int} &i, @code{int} &j, @code{int} &k) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_max_int (@code{const HMDT} dat, @code{int} *i, @code{int} *j, @code{int} *k)
+ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÐºÑималÑное знаÑение маÑÑива даннÑÑ
и его положение в пеÑеменнÑе @var{i}, @var{j}, @var{k}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Minimal (@code{int} &i, @code{int} &j, @code{int} &k) @code{const}
- at deftypefnx {C function} @code{float} mgl_data_min_int (@code{const HMDT} dat, @code{int} *i, @code{int} *j, @code{int} *k)
-Gets minimal value of the data and its position in the array to variables @var{i}, @var{j}, @var{k}.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{float} Minimal (@code{int} &i, @code{int} &j, @code{int} &k) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_min_int (@code{const HMDT} dat, @code{int} *i, @code{int} *j, @code{int} *k)
+ÐозвÑаÑÐ°ÐµÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»Ñное знаÑение маÑÑива даннÑÑ
и его положение в пеÑеменнÑе @var{i}, @var{j}, @var{k}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Maximal (@code{float} &i, @code{float} &j, @code{float} &k) @code{const}
- at deftypefnx {C function} @code{float} mgl_data_max_real (@code{const HMDT} dat, @code{float} *x, @code{float} *y, @code{float} *z)
-Gets maximal value of the data and its approximated (interpolated) position to variables @var{i}, @var{j}, @var{k}.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{float} Maximal (@code{float} &i, @code{float} &j, @code{float} &k) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_max_real (@code{const HMDT} dat, @code{float} *x, @code{float} *y, @code{float} *z)
+ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÐºÑималÑное знаÑение маÑÑива даннÑÑ
и его пÑиближенное (инÑеÑполиÑованное) положение в пеÑеменнÑе @var{i}, @var{j}, @var{k}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Minimal (@code{float} &i, @code{float} &j, @code{float} &k) @code{const}
- at deftypefnx {C function} @code{float} mgl_data_min_real (@code{const HMDT} dat, @code{float} *x, @code{float} *y, @code{float} *z)
-Gets minimal value of the data and its approximated (interpolated) position to variables @var{i}, @var{j}, @var{k}.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{float} Minimal (@code{float} &i, @code{float} &j, @code{float} &k) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_min_real (@code{const HMDT} dat, @code{float} *x, @code{float} *y, @code{float} *z)
+ÐозвÑаÑÐ°ÐµÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»Ñное знаÑение маÑÑива даннÑÑ
и его пÑиближенное (инÑеÑполиÑованное) положение в пеÑеменнÑе @var{i}, @var{j}, @var{k}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Momentum (@code{char} dir, @code{float} &m, @code{float} &w) @code{const}
- at deftypefnx {C function} @code{float} mgl_data_momentum_mw (@code{const HMDT} dat, @code{char} dir, @code{float} *m, @code{float} *w)
-Gets zero-momentum (energy, @math{I=\sum a_i}) and write first momentum (median, @math{m = \sum \xi_i a_i/I}) and second momentum (width, @math{w^2 = \sum (\xi_i-m)^2 a_i/I}) to variables. Here @math{\xi} is corresponding coordinate if @var{dir} is @samp{'x'}, @samp{'y'} or @samp{'z'}. Otherwise median is @math{m = \sum a_i/N}, width is @math{w^2 = \sum (a_i-m)^2/N}.
+ at cindex Momentum
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{float} Momentum (@code{char} dir, @code{float} &m, @code{float} &w) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_momentum_mw (@code{const HMDT} dat, @code{char} dir, @code{float} *m, @code{float} *w)
+ÐозвÑаÑÐ°ÐµÑ Ð½Ñлевой Ð¼Ð¾Ð¼ÐµÐ½Ñ (ÑнеÑгиÑ, @math{I=\sum a_i}) и запиÑÑÐ²Ð°ÐµÑ Ð¿ÐµÑвÑй (ÑÑеднее, @math{m = \sum \xi_i a_i/I}) и вÑоÑой Ð¼Ð¾Ð¼ÐµÐ½Ñ (ÑиÑинÑ, @math{w^2 = \sum (\xi_i-m)^2 a_i/I}). ÐдеÑÑ @math{\xi} -- ÑооÑвеÑÑÑвÑÑÑÐ°Ñ ÐºÐ¾ÑдинаÑа еÑли @var{dir} Ñавно @samp{'x'}, @samp{'y'}, @samp{'z'}. РпÑоÑивном ÑлÑÑае ÑÑеднее и ÑиÑина ÑÐ°Ð²Ð½Ñ @math{m = \sum a_i/N}, @math{w^2 = \sum (a_i-m)^2/N}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++)} @code{float} Momentum (@code{char} dir, @code{float} &m, @code{float} &w, @code{float} &s, @code{float} &k) @code{const}
-Gets zero-momentum (energy, @math{I=\sum a_i}) and write first momentum (median, @math{m = \sum \xi_i a_i/I}), second momentum (width, @math{w^2 = \sum (\xi_i-m)^2 a_i/I}, third momentum (skewness, @math{s = \sum (\xi_i-m)^3 a_i/ I w^3}) and fourth momentum (kurtosis, @math{k = \sum (\xi_i-m)^4 a_i / 3 I w^4})) to variables. Here @math{\xi} is corresponding coordinate if @var{dir} is @samp{'x'}, @samp{'y'} or @samp{'z'}. Otherwise median is @math{m = \sum a_i/N}, width is @math{w^2 = \sum (a_i-m)^2/N} and so on.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++)} @code{float} Momentum (@code{char} dir, @code{float} &m, @code{float} &w, @code{float} &s, @code{float} &k) @code{const}
+ÐозвÑаÑÐ°ÐµÑ Ð½Ñлевой Ð¼Ð¾Ð¼ÐµÐ½Ñ (ÑнеÑгиÑ, @math{I=\sum a_i}) и запиÑÑÐ²Ð°ÐµÑ Ð¿ÐµÑвÑй (ÑÑеднее, @math{m = \sum \xi_i a_i/I}), вÑоÑой (ÑиÑинÑ, @math{w^2 = \sum (\xi_i-m)^2 a_i/I}), ÑÑеÑий (аÑиммеÑÑиÑ, @math{s = \sum (\xi_i-m)^3 a_i/ I w^3}) и ÑеÑвеÑÑÑй моменÑÑ (ÑкÑÑеÑÑ, @math{k = \sum (\xi_i-m)^4 a_i / 3 I w^4})). ÐдеÑÑ @math{\xi} -- ÑооÑвеÑÑÑвÑÑÑÐ°Ñ ÐºÐ¾ÑдинаÑа еÑли @var{dir} Ñавно @samp{'x'}, @samp{'y'}, @samp{'z'}. РпÑоÑивном ÑлÑÑае ÑÑеднее, ÑиÑина, аÑиммеÑÑиÑ, ÑкÑÑеÑÑ ÑÐ°Ð²Ð½Ñ @math{m = \sum a_i/N}, @math{w^2 = \sum (a_i-m)^2/N} и Ñ.д.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Find (@code{const char *}cond, @code{int} &i, @code{int} &j, @code{int} &k) @code{const}
- at deftypefnx {C function} @code{float} mgl_data_first (@code{const HMDT} dat, @code{const char *}cond, @code{int} *i, @code{int} *j, @code{int} *k)
-Find position (after specified in @var{i}, @var{j}, @var{k}) of first nonzero value of formula @var{cond}. Function return the data value at found position.
+ at cindex Find
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{float} Find (@code{const char *}cond, @code{int} &i, @code{int} &j, @code{int} &k) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_first (@code{const HMDT} dat, @code{const char *}cond, @code{int} *i, @code{int} *j, @code{int} *k)
+ÐаÑ
Ð¾Ð´Ð¸Ñ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ (поÑле заданного в @var{i}, @var{j}, @var{k}) пеÑвого не нÑлевого знаÑÐµÐ½Ð¸Ñ ÑоÑмÑÐ»Ñ @var{cond}. ФÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ Ð½Ð°Ð¹Ð´ÐµÐ½Ð½Ð¾Ðµ знаÑение и запиÑÑÐ²Ð°ÐµÑ ÐµÐ³Ð¾ положение в @var{i}, @var{j}, @var{k}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{float} Last (@code{const char *}cond, @code{int} &i, @code{int} &j, @code{int} &k) @code{const}
- at deftypefnx {C function} @code{float} mgl_data_last (@code{const HMDT} dat, @code{const char *}cond, @code{int} *i, @code{int} *j, @code{int} *k)
-Find position (before specified in @var{i}, @var{j}, @var{k}) of last nonzero value of formula @var{cond}. Function return the data value at found position.
+ at cindex Last
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{float} Last (@code{const char *}cond, @code{int} &i, @code{int} &j, @code{int} &k) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_last (@code{const HMDT} dat, @code{const char *}cond, @code{int} *i, @code{int} *j, @code{int} *k)
+ÐаÑ
Ð¾Ð´Ð¸Ñ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ (пеÑед заданного в @var{i}, @var{j}, @var{k}) поÑледнего не нÑлевого знаÑÐµÐ½Ð¸Ñ ÑоÑмÑÐ»Ñ @var{cond}. ФÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ Ð½Ð°Ð¹Ð´ÐµÐ½Ð½Ð¾Ðµ знаÑение и запиÑÑÐ²Ð°ÐµÑ ÐµÐ³Ð¾ положение в @var{i}, @var{j}, @var{k}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{int} Find (@code{const char *}cond, @code{char} dir, @code{int} i=@code{0}, @code{int} j=@code{0}, @code{int} k=@code{0}) @code{const}
- at deftypefnx {C function} @code{float} mgl_data_find (@code{const HMDT} dat, @code{const char *}cond, @code{int} i, @code{int} j, @code{int} k)
-Return position of first in direction @var{dir} nonzero value of formula @var{cond}. The search is started from point @{i,j,k@}.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{int} Find (@code{const char *}cond, @code{char} dir, @code{int} i=@code{0}, @code{int} j=@code{0}, @code{int} k=@code{0}) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_find (@code{const HMDT} dat, @code{const char *}cond, @code{int} i, @code{int} j, @code{int} k)
+ÐозвÑаÑÐ°ÐµÑ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ пеÑвого в напÑавлении @var{dir} не нÑлевого знаÑÐµÐ½Ð¸Ñ ÑоÑмÑÐ»Ñ @var{cond}. ÐоиÑк наÑинаеÑÑÑ Ñ ÑоÑки @{i,j,k@}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{bool} FindAny (@code{const char *}cond) @code{const}
- at deftypefnx {C function} @code{float} mgl_data_find_any (@code{const HMDT} dat, @code{const char *}cond)
-Determines if any nonzero value of formula in the data array.
+ at cindex FindAny
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{bool} FindAny (@code{const char *}cond) @code{const}
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{float} mgl_data_find_any (@code{const HMDT} dat, @code{const char *}cond)
+ÐпÑеделÑÐµÑ ÐµÑÑÑ Ð»Ð¸ Ñ
оÑÑ Ð¾Ð´Ð½Ð¾ знаÑение маÑÑива, ÑдовлеÑвоÑÑÑÑее ÑÑÐ»Ð¾Ð²Ð¸Ñ @var{cond}.
@end deftypefn
@c ------------------------------------------------------------------
@node Operators, Global functions, Informational functions, mglData class
- at section Operators
+ at section ÐпеÑаÑоÑÑ
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} operator= (@code{const mglData &}d)
-Copies data from other variable.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} operator= (@code{const mglData &}d)
+ÐопиÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе из дÑÑгого ÑкземплÑÑа.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} operator*= (@code{const mglData &}d)
- at deftypefnx {C function} @code{void} mgl_data_mul_dat (@code{HMDT} dat, @code{const HMDT} d)
-Multiplies the data by the other one for each element.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} operator*= (@code{const mglData &}d)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_mul_dat (@code{HMDT} dat, @code{const HMDT} d)
+ÐоÑлеменÑно ÑÐ¼Ð½Ð¾Ð¶Ð°ÐµÑ Ð¼Ð°ÑÑив @var{d}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} operator/= (@code{const mglData &}d)
- at deftypefnx {C function} @code{void} mgl_data_div_dat (@code{HMDT} dat, @code{const HMDT} d)
-Divides the data by the other one for each element.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} operator/= (@code{const mglData &}d)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_div_dat (@code{HMDT} dat, @code{const HMDT} d)
+ÐоÑлеменÑно Ð´ÐµÐ»Ð¸Ñ Ð¼Ð°ÑÑив @var{d}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} operator+= (@code{const mglData &}d)
- at deftypefnx {C function} @code{void} mgl_data_add_dat (@code{HMDT} dat, @code{const HMDT} d)
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} operator+= (@code{const mglData &}d)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_add_dat (@code{HMDT} dat, @code{const HMDT} d)
+ÐоÑлеменÑно пÑибавлÑÐµÑ @var{d}.
Adds the other data.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} operator-= (@code{const mglData &}d)
- at deftypefnx {C function} @code{void} mgl_data_sub_dat (@code{HMDT} dat, @code{const HMDT} d)
-Subtracts the other data.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} operator-= (@code{const mglData &}d)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_sub_dat (@code{HMDT} dat, @code{const HMDT} d)
+ÐоÑлеменÑно вÑÑиÑÐ°ÐµÑ @var{d}.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} operator*= (@code{float} d)
- at deftypefnx {C function} @code{void} mgl_data_mul_num (@code{HMDT} dat, @code{float} d)
-Multiplies each element by the number.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} operator*= (@code{float} d)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_mul_num (@code{HMDT} dat, @code{float} d)
+Ð£Ð¼Ð½Ð¾Ð¶Ð°ÐµÑ ÐºÐ°Ð¶Ð´Ñй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð½Ð° ÑиÑло.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} operator/= (@code{float} d)
- at deftypefnx {C function} @code{void} mgl_data_div_num (@code{HMDT} dat, @code{float} d)
-Divides each element by the number.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} operator/= (@code{float} d)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_div_num (@code{HMDT} dat, @code{float} d)
+ÐÐµÐ»Ð¸Ñ ÐºÐ°Ð¶Ð´Ñй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð½Ð° ÑиÑло.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} operator+= (@code{float} d)
- at deftypefnx {C function} @code{void} mgl_data_add_num (@code{HMDT} dat, @code{float} d)
-Adds the number to each element.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} operator+= (@code{float} d)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_add_num (@code{HMDT} dat, @code{float} d)
+ÐÑибавлÑÐµÑ ÑиÑло к ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ ÑлеменÑÑ.
@end deftypefn
- at deftypefn {Method on @code{mglData} (C++, Python)} @code{void} operator-= (@code{float} d)
- at deftypefnx {C function} @code{void} mgl_data_sub_num (@code{HMDT} dat, @code{float} d)
-Subtracts the number to each element.
+ at deftypefn {ÐеÑод клаÑÑа @code{mglData} (C++, Python)} @code{void} operator-= (@code{float} d)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{void} mgl_data_sub_num (@code{HMDT} dat, @code{float} d)
+ÐÑÑиÑÐ°ÐµÑ ÑиÑло из каждого ÑлеменÑа.
@end deftypefn
- at deftypefn {Library Function} mglData operator+ (@code{const mglData &}a, @code{const mglData &}b)
-Adds the other data.
- at end deftypefn
- at deftypefn {Library Function} mglData operator+ (@code{float} a, @code{const mglData &}b)
-Adds the number.
+ at deftypefn {ФÑнкÑÐ¸Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки} mglData operator+ (@code{const mglData &}a, @code{const mglData &}b)
+ÐозвÑаÑÐ°ÐµÑ Ð¿Ð¾ÑлеменÑнÑÑ ÑÑÐ¼Ð¼Ñ Ð´Ð°Ð½Ð½ÑÑ
.
@end deftypefn
- at deftypefn {Library Function} mglData operator+ (@code{const mglData &}a, @code{float} b)
-Adds the number.
+ at deftypefn {ФÑнкÑÐ¸Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки} mglData operator+ (@code{float} a, @code{const mglData &}b)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки} mglData operator+ (@code{const mglData &}a, @code{float} b)
+ÐозвÑаÑÐ°ÐµÑ Ð¿Ð¾ÑлеменÑнÑÑ ÑÑÐ¼Ð¼Ñ Ð´Ð°Ð½Ð½ÑÑ
и ÑиÑла.
@end deftypefn
- at deftypefn {Library Function} mglData operator- (@code{const mglData &}a, @code{const mglData &}b)
-Subtracts the other data.
+ at deftypefn {ФÑнкÑÐ¸Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки} mglData operator- (@code{const mglData &}a, @code{const mglData &}b)
+ÐозвÑаÑÐ°ÐµÑ Ð¿Ð¾ÑлеменÑнÑÑ ÑазноÑÑÑ Ð´Ð°Ð½Ð½ÑÑ
.
@end deftypefn
- at deftypefn {Library Function} mglData operator- (@code{float} a, @code{const mglData &}b)
-Subtracts from the number.
- at end deftypefn
- at deftypefn {Library Function} mglData operator- (@code{const mglData &}a, @code{float} b)
-Subtracts the number.
+ at deftypefn {ФÑнкÑÐ¸Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки} mglData operator- (@code{float} a, @code{const mglData &}b)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки} mglData operator- (@code{const mglData &}a, @code{float} b)
+ÐозвÑаÑÐ°ÐµÑ Ð¿Ð¾ÑлеменÑнÑÑ ÑазноÑÑÑ ÑиÑла и даннÑÑ
.
@end deftypefn
- at deftypefn {Library Function} mglData operator* (@code{const mglData &}a, @code{const mglData &}b)
-Multiplies by the other data.
- at end deftypefn
- at deftypefn {Library Function} mglData operator* (@code{float} a, @code{const mglData &}b)
-Multiplies by the number.
+ at deftypefn {ФÑнкÑÐ¸Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки} mglData operator* (@code{const mglData &}a, @code{const mglData &}b)
+ÐозвÑаÑÐ°ÐµÑ Ð¿Ð¾ÑлеменÑное пÑоизведение даннÑÑ
.
@end deftypefn
- at deftypefn {Library Function} mglData operator* (@code{const mglData &}a, @code{float} b)
-Multiplies by the number.
+ at deftypefn {ФÑнкÑÐ¸Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки} mglData operator* (@code{float} a, @code{const mglData &}b)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки} mglData operator* (@code{const mglData &}a, @code{float} b)
+ÐозвÑаÑÐ°ÐµÑ Ð¿Ð¾ÑлеменÑное пÑоизведение даннÑÑ
на ÑиÑло.
@end deftypefn
- at deftypefn {Library Function} mglData operator/ (@code{const mglData &}a, @code{const mglData &}b)
-Divides by the other data.
+ at deftypefn {ФÑнкÑÐ¸Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки} mglData operator/ (@code{const mglData &}a, @code{const mglData &}b)
+ÐозвÑаÑÐ°ÐµÑ Ð¿Ð¾ÑлеменÑное деление даннÑÑ
.
@end deftypefn
- at deftypefn {Library Function} mglData operator/ (@code{const mglData &}a, @code{float} b)
-Divides by the number.
+ at deftypefn {ФÑнкÑÐ¸Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки} mglData operator/ (@code{const mglData &}a, @code{float} b)
+ÐозвÑаÑÐ°ÐµÑ Ð¿Ð¾ÑлеменÑное деление даннÑÑ
на ÑиÑло.
@end deftypefn
@c ------------------------------------------------------------------
@node Global functions, , Operators, mglData class
- at section Global functions
+ at section ÐлобалÑнÑе ÑÑнкÑии
-These functions are not methods of @code{mglData} class. However it have additional functionality to handle data. So I put it in this chapter.
+ÐÑи ÑÑнкÑии не меÑÐ¾Ð´Ñ ÐºÐ»Ð°ÑÑа @code{mglData}, но они даÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе возможноÑÑи по обÑабоÑке даннÑÑ
. ÐоÑÑÐ¾Ð¼Ñ Ñ Ð¿Ð¾Ð¼ÐµÑÑил иÑ
в ÑÑÑ Ð³Ð»Ð°Ð²Ñ.
- at deftypefn {Global function} @code{mglData} mglTransform (@code{const mglData &}real, @code{const mglData &}imag, @code{const char *}type)
- at deftypefnx {C function} @code{HMDT} mgl_transform (@code{const HMDT} real, @code{const HMDT} imag, @code{const char *}type)
-Do integral transformation of complex data @var{real}, @var{imag} on specified direction. Now only Fourier transformation is supported. The order of transformations is specified in string @var{type}: first character for x-dimension, second one for y-dimension, third one for z-dimension. The possible character are: @samp{f} is forward Fourier transformation, @samp{i} is inverse Fourier transformation, @samp{n} or @samp{ } is no transformation.
+ at deftypefn {ФÑнкÑÐ¸Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки} @code{mglData} mglTransform (@code{const mglData &}real, @code{const mglData &}imag, @code{const char *}type)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_transform (@code{const HMDT} real, @code{const HMDT} imag, @code{const char *}type)
+ÐÑполнÑÐµÑ Ð¸Ð½ÑегÑалÑное пÑеобÑазование комплекÑнÑÑ
даннÑÑ
@var{real}, @var{imag} в вÑбÑанном напÑавлении и возвÑаÑÐ°ÐµÑ Ð¼Ð¾Ð´ÑÐ»Ñ ÑезÑлÑÑаÑа. ÐоÑÑдок и Ñип пÑеобÑазований задаеÑÑÑ ÑÑÑокой @var{type}: пеÑвÑй Ñимвол Ð´Ð»Ñ x-напÑавлениÑ, вÑоÑой Ð´Ð»Ñ y-напÑавлениÑ, ÑÑеÑий Ð´Ð»Ñ z-напÑавлениÑ. ÐозможнÑе ÑимволÑ: @samp{f} -- пÑÑмое пÑеобÑазование ФÑÑÑе, @samp{i} -- обÑаÑное пÑеобÑазование ФÑÑÑе, @samp{s} -- ÑинÑÑ Ð¿ÑеобÑазование, @samp{c} -- коÑинÑÑ Ð¿ÑеобÑазование, @samp{h} -- пÑеобÑазование ХанкелÑ, @samp{n} или @samp{ } -- Ð½ÐµÑ Ð¿ÑеобÑазованиÑ.
@end deftypefn
- at deftypefn {Global function} @code{mglData} mglTransformA @code{const mglData &}ampl, @code{const mglData &}phase, @code{const char *}type)
- at deftypefnx {C function} @code{HMDT} mgl_transform_a @code{const HMDT} ampl, @code{const HMDT} phase, @code{const char *}type)
-Do integral transformation of complex data @var{ampl}, @var{phase} on specified direction. Now only Fourier transformation is supported. The order of transformations is specified in string @var{type}: first character for x-dimension, second one for y-dimension, third one for z-dimension. The possible character are: @samp{f} is forward Fourier transformation, @samp{i} is inverse Fourier transformation, @samp{n} or @samp{ } is no transformation.
+ at deftypefn {ФÑнкÑÐ¸Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки} @code{mglData} mglTransformA @code{const mglData &}ampl, @code{const mglData &}phase, @code{const char *}type)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_transform_a @code{const HMDT} ampl, @code{const HMDT} phase, @code{const char *}type)
+ÐналогиÑно пÑедÑдÑÑÐµÐ¼Ñ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñми амплиÑÑдой @var{ampl} и Ñазой @var{phase} комплекÑнÑÑ
ÑиÑел.
@end deftypefn
- at deftypefn {Global function} @code{mglData} mglSTFA (@code{const mglData &}real, @code{const mglData &}imag, @code{int} dn, @code{char} dir=@code{'x'})
- at deftypefnx {C function} @code{HMDT} mgl_data_stfa (@code{const HMDT} real, @code{const HMDT} imag, @code{int} dn, at code{char} dir)
-Short time Fourier analysis for real and imaginary parts. Output is amplitude of partial Fourier of length @var{dn}. For example if @var{dir}=@samp{x}, result will have size @{int(nx/dn), dn, ny@} and it will contain @math{res[i,j,k]=|\sum_d^dn exp(I*j*d)*(real[i*dn+d,k]+I*imag[i*dn+d,k])|/dn}.
+ at deftypefn {ФÑнкÑÐ¸Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки} @code{mglData} mglSTFA (@code{const mglData &}real, @code{const mglData &}imag, @code{int} dn, @code{char} dir=@code{'x'})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_data_stfa (@code{const HMDT} real, @code{const HMDT} imag, @code{int} dn, at code{char} dir)
+ÐÑполнÑÐµÑ Ð¾ÐºÐ¾Ð½Ð½Ð¾Ðµ пÑеобÑазование ФÑÑÑе длиной @var{dn} Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑнÑÑ
даннÑÑ
@var{real}, @var{imag} и возвÑаÑÐ°ÐµÑ Ð¼Ð¾Ð´ÑÐ»Ñ ÑезÑлÑÑаÑа. ÐапÑимеÑ, Ð´Ð»Ñ @var{dir}=@samp{x} ÑезÑлÑÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð¸Ð¼ÐµÑÑ ÑÐ°Ð·Ð¼ÐµÑ @{int(nx/dn), dn, ny@} и бÑÐ´ÐµÑ Ñавен @math{res[i,j,k]=|\sum_d^dn exp(I*j*d)*(real[i*dn+d,k]+I*imag[i*dn+d,k])|/dn}.
@end deftypefn
- at deftypefn {Global function} @code{mglData} mglPDE (@code{const char *}ham, @code{const mglData &}ini_re, @code{const mglData &}ini_im, @code{mglPoint} Min, @code{mglPoint} Max, @code{float} dz=@code{0.1}, @code{float} k0=@code{100})
- at deftypefnx {C function} @code{HMDT} mgl_pde_solve (@code{HMGL} gr, @code{const char *}ham, @code{const HMDT} ini_re, @code{const HMDT} ini_im, @code{float} dz, @code{float} k0)
-Solves equation du/dz = i*k0*@var{ham}(p,q,x,y,z,|u|)[u], where p=-i/k0*d/dx, q=-i/k0*d/dy are pseudo-differential operators. Parameters @var{ini_re}, @var{ini_im} specify real and imaginary part of initial field distribution. Parameters @var{Min}, @var{Max} set the bounding box for the solution. Note, that really this ranges are increased by factor 3/2 for purpose of reducing reflection from boundaries. Parameter @var{dz} set the step along evolutionary coordinate z. At this moment, simplified form of function @var{ham} is supported -- all ``mixed'' terms (like @samp{x*p}->x*d/dx) are excluded. For example, in 2D case this function is effectively @math{ham = f(p,z) + g(x,z,u)}. However commutable combinations (like @samp{x*q}->x*d/dy) are allowed. Here variable @samp{u} is used for field amplitude |u|. This allow one solve nonlinear problems -- for example, for nonlinear Shrodinger equation you may set @code{ham="p^2 + q^2 - u^2"}. You may specify imaginary part for wave absorption, like @code{ham = "p^2 + i*x*(x>0)"}, but only if dependence on variable @samp{i} is linear (i.e. @math{ham = hre+i*him}). @sref{PDE sample}
+ at deftypefn {ФÑнкÑÐ¸Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки} @code{mglData} mglPDE (@code{const char *}ham, @code{const mglData &}ini_re, @code{const mglData &}ini_im, @code{mglPoint} Min, @code{mglPoint} Max, @code{float} dz=@code{0.1}, @code{float} k0=@code{100})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_pde_solve (@code{HMGL} gr, @code{const char *}ham, @code{const HMDT} ini_re, @code{const HMDT} ini_im, @code{float} dz, @code{float} k0)
+РеÑÐ°ÐµÑ ÑÑавнение в ÑаÑÑнÑÑ
пÑоизводнÑÑ
du/dz = i*k0*@var{ham}(p,q,x,y,z,|u|)[u], где p=-i/k0*d/dx, q=-i/k0*d/dy -- пÑевдо-диÑÑеÑенÑиалÑнÑе опеÑаÑоÑÑ. ÐаÑамеÑÑÑ @var{ini_re}, @var{ini_im} задаÑÑ Ð½Ð°ÑалÑное ÑаÑпÑеделение полÑ. ÐооÑдинаÑÑ Ð² ÑÑавнении и в ÑеÑении полагаÑÑÑÑ Ð² диапазоне оÑей кооÑдинаÑ. ÐамеÑÑ, ÑÑо внÑÑÑи ÑÑÐ¾Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ ÑвелиÑиваеÑÑÑ Ð² 3/2 Ñаза Ð´Ð»Ñ ÑменÑÑÐµÐ½Ð¸Ñ Ð¾ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¾Ñ Ð³ÑÐ°Ð½Ð¸Ñ ÑаÑÑеÑного инÑеÑвала. ÐаÑамеÑÑ @var{dz} Ð·Ð°Ð´Ð°ÐµÑ Ñаг по ÑволÑÑионной кооÑдинаÑе z. РданнÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¸ÑполÑзован ÑпÑоÑеннÑй алгоÑиÑм, когда вÑе ``ÑмеÑаннÑе'' Ñлена (Ñипа @samp{x*p}->x*d/dx) иÑклÑÑаÑÑÑÑ. ÐапÑимеÑ, в 2D ÑлÑÑае ÑÑо ÑÑнкÑии Ñипа @math{ham = f(p,z) + g(x,z,u)}. ÐÑи ÑÑом допÑÑкаÑÑÑÑ ÐºÐ¾Ð¼Ð¼ÑÑиÑÑÑÑие комбинаÑии (Ñипа @samp{x*q}->x*d/dy). ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ @samp{u} иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¾Ð±Ð¾Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð°Ð¼Ð¿Ð»Ð¸ÑÑÐ´Ñ Ð¿Ð¾Ð»Ñ |u|. ÐÑо позволÑÐµÑ ÑеÑаÑÑ Ð½ÐµÐ»Ð¸Ð½ÐµÐ¹Ð½Ñе задаÑи -- напÑимеÑ, нелинейное ÑÑавнение ШÑедингеÑа @code{ham='p^2+q^2-u^2'}. Также можно ÑказаÑÑ Ð¼Ð½Ð¸Ð¼ÑÑ ÑаÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð³Ð»Ð¾ÑÐµÐ½Ð¸Ñ (Ñипа @code{ham = 'p^2+i*x*(x>0)'}), но ÑолÑко еÑли завиÑимоÑÑÑ Ð¾Ñ @samp{i} линейнаÑ, Ñ.е. @math{ham = hre+i*him}. @sref{PDE sample}
@end deftypefn
- at deftypefn {Global function} @code{mglData} mglRay (@code{const char *}ham, @code{mglPoint} r0, @code{mglPoint} p0, @code{float} dt=@code{0.1}, @code{float} tmax=@code{10})
- at deftypefnx {C function} @code{HMDT} mgl_ray_trace (@code{const char *}ham, @code{float} x0, @code{float} y0, @code{float} z0, @code{float} px, @code{float} py, @code{float} pz, @code{float} dt, @code{float} tmax)
-Solves GO ray equation like dr/dt = d @var{ham}/dp, dp/dt = -d @var{ham}/dr. This is Hamiltonian equations for particle trajectory in 3D case. Here @var{ham} is Hamiltonian which may depend on coordinates @samp{x}, @samp{y}, @samp{z}, momentums @samp{p}=px, @samp{q}=py, @samp{v}=pz and time @samp{t}: @math{ham = H(x,y,z,p,q,v,t)}. The starting point (at @code{t=0}) is defined by variables @var{r0}, @var{p0}. Parameters @var{dt} and @var{tmax} specify the integration step and maximal time for ray tracing. Result is array of @{x,y,z,p,q,v,t@} with dimensions @{7 * int(@var{tmax}/@var{dt}+1) @}.
+ at deftypefn {ФÑнкÑÐ¸Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки} @code{mglData} mglRay (@code{const char *}ham, @code{mglPoint} r0, @code{mglPoint} p0, @code{float} dt=@code{0.1}, @code{float} tmax=@code{10})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_ray_trace (@code{const char *}ham, @code{float} x0, @code{float} y0, @code{float} z0, @code{float} px, @code{float} py, @code{float} pz, @code{float} dt, @code{float} tmax)
+РеÑÐ°ÐµÑ ÑиÑÑÐµÐ¼Ñ Ð³ÐµÐ¾Ð¼ÐµÑÑоопÑиÑеÑкиÑ
ÑÑавнений d at emph{r}/dt = d @var{ham}/d at emph{p}, d at emph{p}/dt = -d @var{ham}/d at emph{r}. ÐÑо гамилÑÑÐ¾Ð½Ð¾Ð²Ñ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑÑаекÑоÑии ÑаÑÑиÑÑ Ð² 3D ÑлÑÑае. ÐамилÑÑониан @var{ham} Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð²Ð¸ÑеÑÑ Ð¾Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ @samp{x}, @samp{y}, @samp{z}, импÑлÑÑов @samp{p}=px, @samp{q}=py, @samp{v}=pz и вÑемени @samp{t}: @math{ham = H(x,y,z,p,q,v,t)}. ÐаÑалÑÐ½Ð°Ñ ÑоÑка (пÑи @code{t=0}) задаеÑÑÑ Ð¿ÐµÑеменнÑми @{@var{x0}, @var{y0}, @var{z0}, @var{p0}, @var{q0}, @var{v0}@}. ÐаÑамеÑÑÑ @var{dt} и @var{tmax} задаÑÑ Ñаг и макÑималÑное вÑÐµÐ¼Ñ Ð¸Ð½ÑегÑиÑованиÑ. РезÑлÑÑÐ°Ñ -- маÑÑив @{x,y,z,p,q,v,t@} Ñ ÑазмеÑом @{7 * int(@var{tmax}/@var{dt}+1) @}. @sref{Beam tracing sample}
@end deftypefn
- at deftypefn {Global function} @code{mglData} mglQO2d (@code{const char *}ham, @code{const mglData &}ini_re, @code{const mglData &}ini_im, @code{const mglData &}ray, @code{float} r=@code{1}, @code{float} k0=@code{100}, @code{mglData *}xx=@code{0}, @code{mglData *}yy=@code{0}, @code{bool} UseR=@code{true})
- at deftypefnx {C function} @code{HMDT} mgl_qo2d_solve (@code{const char *}ham, @code{const HMDT} ini_re, @code{const HMDT} ini_im, @code{const HMDT} ray, @code{float} r, @code{float} k0, @code{HMDT} xx, @code{HMDT} yy)
-Solves equation du/dt = i*k0*@var{ham}(p,q,x,y,|u|)[u], where p=-i/k0*d/dx, q=-i/k0*d/dy are pseudo-differential operators (see @code{mglPDE()} for details). Parameters @var{ini_re}, @var{ini_im} specify real and imaginary part of initial field distribution. Parameters @var{ray} set the reference ray, i.e. the ray around which the accompanied coordinate system will be maked. You may use, for example, the array created by @code{mglRay()} function. Note, that the reference ray @strong{must be} smooth enough to make accompanied coodrinates unambiguity. Otherwise errors in the solution may appear. If @var{xx} and @var{yy} are non-zero then Cartesian coordinates for each point will be written into them. @sref{Beam tracing sample}
+ at deftypefn {ФÑнкÑÐ¸Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки} @code{mglData} mglQO2d (@code{const char *}ham, @code{const mglData &}ini_re, @code{const mglData &}ini_im, @code{const mglData &}ray, @code{float} r=@code{1}, @code{float} k0=@code{100}, @code{mglData *}xx=@code{0}, @code{mglData *}yy=@code{0}, @code{bool} UseR=@code{true})
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_qo2d_solve (@code{const char *}ham, @code{const HMDT} ini_re, @code{const HMDT} ini_im, @code{const HMDT} ray, @code{float} r, @code{float} k0, @code{HMDT} xx, @code{HMDT} yy)
+РеÑÐ°ÐµÑ ÑÑавнение в ÑаÑÑнÑÑ
пÑоизводнÑÑ
du/dt = i*k0*@var{ham}(p,q,x,y,|u|)[u] в ÑопÑовождаÑÑей ÑиÑÑеме кооÑдинаÑ, где p=-i/k0*d/dx, q=-i/k0*d/dy -- пÑевдо-диÑÑеÑенÑиалÑнÑе опеÑаÑоÑÑ. ÐаÑамеÑÑÑ @var{ini_re}, @var{ini_im} задаÑÑ Ð½Ð°ÑалÑное ÑаÑпÑеделение полÑ. ÐаÑамеÑÑ @var{ray} Ð·Ð°Ð´Ð°ÐµÑ Ð¾Ð¿Ð¾ÑнÑй лÑÑ Ð´Ð»Ñ ÑопÑовождаÑÑей ÑиÑÑÐµÐ¼Ñ ÐºÐ¾Ð¾ÑдинаÑ. Ðожно иÑполÑзоваÑÑ Ð»ÑÑ Ð½Ð°Ð¹Ð´ÐµÐ½Ð½Ñй Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ @code{mglRay()}. ÐпоÑнÑй лÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ Ð´Ð¾ÑÑаÑоÑно гладкий, ÑÑÐ¾Ð±Ñ ÑиÑÑема кооÑÐ´Ð¸Ð½Ð°Ñ Ð±Ñла однознаÑной и Ð´Ð»Ñ Ð¸ÑклÑÑÐµÐ½Ð¸Ñ Ð¾Ñибок инÑегÑиÑованиÑ. ÐÑли маÑÑÐ¸Ð²Ñ @var{xx} и @var{yy} ÑказанÑ, Ñо в ниÑ
запиÑÑваÑÑÑÑ Ð´ÐµÐºÐ°ÑÑÐ¾Ð²Ñ ÐºÐ¾Ð¾ÑдинаÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑоÑки найденного ÑеÑениÑ. См. Ñакже @code{mglPDE()}. @sref{Beam tracing sample}
@end deftypefn
- at deftypefn {Global function} @code{mglData} mglJacobian (@code{const mglData &}x, @code{const mglData &}y)
- at deftypefnx {Global function} @code{mglData} mglJacobian (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z)
- at deftypefnx {C function} @code{HMDT} mgl_jacobian_2d (@code{const HMDT} x, @code{const HMDT} y)
- at deftypefnx {C function} @code{HMDT} mgl_jacobian_3d (@code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z)
-Computates the Jacobian for transformation @{i,j,k@} to @{@var{x}, at var{y}, at var{z}@} where initial coordinates @{i,j,k@} are data indexes normalized in range [0,1]. The Jacobian is determined by formula det||@math{dr_\alpha/d\xi_\beta}|| where @math{r}=@{@var{x}, at var{y}, at var{z}@} and @math{\xi}=@{i,j,k@}. All dimensions must be the same for all data arrays. Data must be 3D if all 3 arrays @{@var{x}, at var{y}, at var{z}@} are specified or 2D if only 2 arrays @{@var{x}, at var{y}@} are specified.
+ at deftypefn {ФÑнкÑÐ¸Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки} @code{mglData} mglJacobian (@code{const mglData &}x, @code{const mglData &}y)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки} @code{mglData} mglJacobian (@code{const mglData &}x, @code{const mglData &}y, @code{const mglData &}z)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_jacobian_2d (@code{const HMDT} x, @code{const HMDT} y)
+ at deftypefnx {ФÑнкÑÐ¸Ñ Ð¡} @code{HMDT} mgl_jacobian_3d (@code{const HMDT} x, @code{const HMDT} y, @code{const HMDT} z)
+ÐÑÑиÑлÑÐµÑ Ñкобиан пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ @{i,j,k@} в @{@var{x}, at var{y}, at var{z}@}, где кооÑдинаÑÑ @{i,j,k@} полагаÑÑÑÑ Ð½Ð¾ÑмиÑованнÑми в инÑеÑвал [0,1]. Якобиан наÑ
одиÑÑÑ Ð¿Ð¾ ÑоÑмÑле det||@math{dr_\alpha/d\xi_\beta}||, где @math{r}=@{@var{x}, at var{y}, at var{z}@} и @math{\xi}=@{i,j,k@}. ÐÑе ÑазмеÑноÑÑи вÑеÑ
маÑÑивов Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐаннÑе Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑÑеÑ
меÑнÑми еÑли ÑÐºÐ°Ð·Ð°Ð½Ñ Ð²Ñе 3 маÑÑива @{@var{x}, at var{y}, at var{z}@} или двÑмеÑнÑми еÑли ÑолÑко 2 маÑÑива @{@var{x}, at var{y}@}.
@end deftypefn
diff --git a/texinfo/ex_mgl_en.texi b/texinfo/ex_mgl_en.texi
new file mode 100644
index 0000000..5dab290
--- /dev/null
+++ b/texinfo/ex_mgl_en.texi
@@ -0,0 +1,774 @@
+ at c ------------------------------------------------------------------
+ at chapter 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 @ref{General concepts}. Sample code for some of these examples can be found in @uref{http://mathgl.sf.net/pictures.html} and in @ref{Samples}.
+
+ at menu
+* Basic usage::
+* Advanced usage::
+* Data handling::
+* Data plotting::
+* Hints::
+ at end menu
+
+ at c ------------------------------------------------------------------
+ at node Basic usage, Advanced usage, , Examples
+ at section Basic usage
+
+MGL script can be used by several manners. Each has positive and negative sides:
+ at itemize @bullet
+ at item
+ at emph{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.
+
+ at item
+ at emph{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: @code{mgl2png}, @code{mgl2gif}, @code{mgl2eps}, @code{mgl2svg} or @code{mglview} for viewing.
+ at end itemize
+
+The simplest script is
+ at verbatim
+box # draw bounding box
+axis # draw axis
+fplot 'x^3' # draw some function
+ at end verbatim
+
+Just type it in UDAV and press F5. Also you can save it in text file @samp{test.mgl} and type in the console @code{mgl2png test.mgl} what produce file @samp{test.mgl.png} with resulting picture.
+
+ at c ------------------------------------------------------------------
+ at node Advanced usage, Data handling, Basic usage, Examples
+ at section 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.
+
+ at menu
+* Subplots::
+* Axis and grids::
+* Curvilinear coordinates::
+* Text printing example::
+ at end menu
+
+ at c ------------------------------------------------------------------
+ at node Subplots, Axis and grids, , Advanced usage
+ at subsection Subplots
+
+Let me demonstrate possibilities of axes transformation. MathGL has the following functions: @code{SubPlot}, @code{InPlot}, @code{Aspect} and @code{Rotate}, @pxref{Transformation matrix}). The order of their calling is strictly determined. First, one changes the position of axes in image area, functions @code{SubPlot} and @code{InPlot}). After that one may rotate the plot, function @code{Rotate}). Finally, one may change aspects of axes, function @code{Aspect}). The following code illustrates the aforesaid it:
+ at verbatim
+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'
+ at end verbatim
+Here I used function @code{text} for printing the text in arbitrary position of picture, @pxref{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 @xref{Text printing example}.
+
+Note that several commands can be placed in a string if they are separated by @samp{:} symbol.
+
+ at float
+ at image{../png/sample1, 7cm}
+ at caption{Example of several subplots on the single picture.}
+ at end float
+
+ at c ------------------------------------------------------------------
+ at node Axis and grids, Curvilinear coordinates, Subplots, Advanced usage
+ at subsection 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 @code{axis}. Also you can use @code{xrange, yrange, zrange} functions (@pxref{Axis settings}). Ticks on axis are specified by functions @code{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 @code{Axis} draws axes. Its textual string shows in which directions the axis or axes will be drawn (by default @code{'xyz'}, function draws axes in all directions). Function @code{Grid} draws grid perpendicularly to specified directions. Example of axes and grid drawing is:
+ at verbatim
+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'
+ at end verbatim
+
+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 @code{Label} function. It draws label for axis in specified direction. The text position on axis is specified by third argument of @code{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.
+
+ at float
+ at image{../png/sample2, 7cm}
+ at caption{Example of setting up axis range and axis ticks.}
+ at end float
+
+ at c ------------------------------------------------------------------
+ at node Curvilinear coordinates, Text printing example, Axis and grids, Advanced usage
+ at subsection 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 @var{y}=0, @var{z}=0 in Cartesian, polar, parabolic and spiral coordinates:
+ at verbatim
+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'
+ at end verbatim
+
+ at float
+ at image{../png/sample3, 7cm}
+ at caption{Example of curvilinear coordinates}
+ at end float
+
+
+ at c ------------------------------------------------------------------
+ at node Text printing example, , Curvilinear coordinates, Advanced usage
+ at subsection Text printing example
+
+MathGL prints text by vector font. There are functions for manual specifying of text position (like @code{Puts}) and for its automatic selection (like @code{Label}, @code{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 @var{fontsize}. However, the actual size of output string depends on position of axes (depends on functions @code{SubPlot}, @code{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 @pxref{Font styles}). Example of MathGL font drawing is:
+ at verbatim
+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'
+ at end verbatim
+
+ at float
+ at image{../png/sample4, 7cm}
+ at caption{Example of text printing with different font effects}
+ at end float
+
+Another example demonstrate the features of TeX formula parsing.
+ at verbatim
+text 0 0 '\sqrt{\frac{\alpha^{\gamma^2}+\overset 1{\big\infty}}{\sqrt3{2+b}}}', 0, -4
+ at end verbatim
+
+ at float
+ at image{../png/samplee, 7cm}
+ at caption{Example of TeX formula parsing}
+ at end float
+
+
+ at c ------------------------------------------------------------------
+ at node Data handling, Data plotting, Advanced usage, Examples
+ at section Data handling
+
+ at c Class @code{mglData} contains all functions for the data handling in MathGL (@pxref{mglData class}). There are several matters why I use class @code{mglData} but not a single array: it does not depend on type of data (float or double), sizes of data arrays are kept with data, memory working is simpler and safer.
+
+ at menu
+* Array creation::
+* Data changing::
+ at end menu
+
+ at c ------------------------------------------------------------------
+ at node Array creation, Data changing, , Data handling
+ at subsection Array creation
+
+One can put numbers into the data instance by several ways. Let us do it for sinus function:
+ at itemize @bullet
+ at item
+one can create array by @code{list} command
+ at verbatim
+list a 0 0.04 0.16 0.36 0.64 1
+ at end verbatim
+
+ at item
+another way is to copy from ``inline'' array
+ at verbatim
+copy a [0,0.04,0.16,0.36,0.64,1]
+ at end verbatim
+
+ at item
+next way is to fill the data by textual formula with the help of @code{modify} function
+ at verbatim
+new a 6
+modify a 'x^2'
+ at end verbatim
+
+ at item
+or one may fill the array in some interval and modify it later
+ at verbatim
+new a 6
+fill a 0 1
+modify a 'u^2'
+ at end verbatim
+
+ at item
+or fill the array using current axis range
+ at verbatim
+new a 6
+fill a '(x+1)^2/4'
+ at end verbatim
+
+ at item
+finally it can be loaded from file
+ at verbatim
+new s 6: modify s 'x^2'
+save s 'sqr.dat' # create file first
+read a 'sqr.dat' # load it
+ at end verbatim
+
+ at item
+at this one can read only part of data
+ at verbatim
+new s 6: modify s 'x^2'
+save s 'sqr.dat' # create file first
+read a 'sqr.dat' 5 # load it
+ at end verbatim
+ at end itemize
+
+Creation of 2d- and 3d-arrays is mostly the same. One can use direct data filling by @code{list} command
+ at verbatim
+list a 11 12 13 | 21 22 23 | 31 32 33
+ at end verbatim
+or by inline arrays
+ at verbatim
+copy a [[11,12,13],[21,22,23],[31,32,33]]
+ at end verbatim
+Also data can be filled by formula
+ at verbatim
+new z 30 40
+fill z 'sin(pi*x)*cos(pi*y)'
+ at end verbatim
+or loaded from file.
+
+The only non-obvious thing here is using multidimensional arrays in C/C++, i.e. arrays defined like @code{float dat[40][30];}. Since, formaly this arrays element @code{dat[i]} can address the memory in arbitrary place you should use the proper function to convert such arrays to @code{mglData} object. For C++ this is functions like @code{mglData::Set(float **dat, int N1, int N2}. For C this is functions like @code{mgl_data_set_float2(HMDT d, const float **dat, int N1, int N2}. At this, you should keep in mind that @code{nx=N2} and @code{ny=N1} after conversion.
+
+ at c ------------------------------------------------------------------
+ at node Data changing, , Array creation, Data handling
+ at subsection 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 @samp{x}, @samp{y} or @samp{z}. For example, the call of @code{diff a 'x'} will differentiate data along @samp{x} direction; the call of @code{integrate a 'xy'} perform the double integration of data along @samp{x} and @samp{y} directions; the call of @code{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:
+ at verbatim
+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'
+ at end verbatim
+
+ at float
+ at image{../png/sample6, 7cm}
+ at caption{Example of data differentiation and integration}
+ at end float
+
+Data smoothing (function @code{Smooth}) is more interesting and important. This function has 2 main arguments: type of smoothing and its direction. Now 4 methods are supported: @code{0} does nothing for delta=0 or approaches data to zero with the step delta, @code{1} linear averaging by 3 points, @code{2} linear averaging by 5 points, @code{3} quadratic averaging by 5 points. Let me demonstrate it for 1d case:
+ at verbatim
+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
+ at end verbatim
+
+ at float
+ at image{../png/sample7, 7cm}
+ at caption{Example of data smoothing}
+ at end float
+
+Finally one can create new data arrays on base of the existing one: extract slice, row or column of data (@code{SubData}), summarize along some of direction(s) (@code{Sum}), find distribution of data elements (@code{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.
+
+ at c ------------------------------------------------------------------
+ at node Data plotting, Hints, Data handling, Examples
+ at section 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 @var{Min}*@var{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 @strong{before} plotting functions.
+
+ at menu
+* Plots for 1D data::
+* Plots for 2D data::
+* Plots for 3D data::
+* Surface transparency::
+ at end menu
+
+ at c ------------------------------------------------------------------
+ at node Plots for 1D data, Plots for 2D data, , Data plotting
+ at subsection 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 (@pxref{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 (@pxref{Line styles}) are specified by the string argument. If the string parameter is @code{NULL} then solid line with color from palette is used.
+
+Below I shall show the features of 1D plotting on base of @code{plot} function (@pxref{1D plotting}). Let us start from sinus plot:
+ at verbatim
+new y0 50: modify y0 'sin(pi*(2*x-1))'
+subplot 2 2 0
+plot y0: box
+ at end verbatim
+Style of line is not specified in @code{plot} function. So MathGL uses the solid line with first color of palette (this is blue). Next subplot shows array @var{y1} with 2 rows:
+ at verbatim
+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
+ at end verbatim
+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 @math{x=cos(\pi t), y=sin(\pi t)}. I will set the color of the circle (dark yellow, @samp{Y}) and put marks @samp{+} at point position:
+ at verbatim
+new x 50: modify x 'cos(pi*2*x-pi)'
+plot x y0 'Y+'
+ at end verbatim
+Note that solid line is used because I did not specify the type of line. The same picture can be achieved by @code{Plot2} function. Let us draw ellipse by orange dash line:
+ at verbatim
+plot y1(:,0) y(:,1) 'q|'
+ at end verbatim
+
+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):
+ at verbatim
+subplot 2 2 2:rotate 60 40
+new z 50: modify z '2*x-1'
+plot x y0 z:box
+ at end verbatim
+Function @code{Plot3} does 3D curve plot but for single array. Use it to put circle marks on the previous plot:
+ at verbatim
+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 '
+ at end verbatim
+Note that line style is empty @samp{ } here. Usage of other 1D plotting functions looks similar:
+ at verbatim
+subplot 2 2 3:rotate 60 40
+bars x y0 z 'r':box
+ at end verbatim
+
+ at float
+ at image{../png/sample8, 7cm}
+ at caption{Example of 1D data plot}
+ at end float
+
+ at c ------------------------------------------------------------------
+ at node Plots for 2D data, Plots for 3D data, Plots for 1D data, Data plotting
+ at subsection Plots for 2D data
+
+Surfaces @code{Surf} and other 2D plots (@pxref{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 (@pxref{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 @samp{kw}) or from white to black (string @samp{wk}). Another scheme is useful for accentuation of negative (by blue color) and positive (by red color) regions on plot (string @samp{'BbwrR'}). Last one is the popular ``jet'' scheme (string @samp{'BbcyrR'}).
+
+Now I shall show the example of a surface drawing. At first let us switch lightning on
+ at verbatim
+light on: light 0 0 0 1
+ at end verbatim
+and draw the surface, considering coordinates x,y to be uniformly distributed in interval @var{Min}*@var{Max}
+ at verbatim
+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
+ at end verbatim
+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:
+ at verbatim
+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
+ at end verbatim
+I set color scheme to @code{'BbwrR'} that corresponds to red top and blue bottom of the sphere.
+
+Surfaces will be plotted for each of slice of the data if @var{nz}>1. Next example draws surfaces for data arrays with @var{nz}=3:
+ at verbatim
+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
+ at end verbatim
+Note, that it may entail a confusion. However, if one will use density plot then the picture will look better:
+ at verbatim
+subplot 2 2 3: rotate 60 40
+dens a1: box
+ at end verbatim
+Note, that the previous color scheme is used in last plots because there are no direct specification of the one.
+
+ at float
+ at image{../png/sample9, 7cm}
+ at caption{Example of surface plot for 2D data}
+ at end float
+
+Drawing of other 2D plots is analogous. The only peculiarity is the usage of flag @samp{#}. By default this flag switches on the drawing of a grid on plot (@code{grid} or @code{mesh} for plots in plain or in volume). However, for isosurfaces (including surfaces of rotation @code{axial}) this flag switches the face drawing off. Figure becomes wired. The following code gives example of flag @samp{#} using (compare with normal function drawing as in its description):
+ at verbatim
+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
+ at end verbatim
+
+ at float
+ at image{../png/samplea, 7cm}
+ at caption{Example of 2D data plot with color scheme contained @samp{#} symbol}
+ at end float
+
+ at c ------------------------------------------------------------------
+ at node Plots for 3D data, Surface transparency, Plots for 2D data, Data plotting
+ at subsection 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 (@pxref{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 @code{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 @code{surf3a}). As example of 3D data plots let us draw the Gaussian beam diffraction in space. Beam propagates along @var{x} axis:
+ at verbatim
+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
+ at end verbatim
+
+ at float
+ at image{../png/sampleb, 7cm}
+ at caption{Example of Gaussian beam diffraction (3D data)}
+ at end float
+
+
+ at c ------------------------------------------------------------------
+ at node Surface transparency, , Plots for 3D data, Data plotting
+ at subsection 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 @code{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 @code{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 @code{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 @code{transparent on}.
+
+Third feature is the changing of the way how the light goes through overlapped surfaces. The variable @code{transptype} defines it. By default the usual transparency is used (@code{transptype 0}) -- surfaces below is less visible than the upper ones. A ``glass-like'' transparency (@code{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 (@code{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 @ref{Plots for 2D data} (grid drawing is disabled) for different types of transparency.
+ at float
+ at image{../png/type0, 7cm}
+ at caption{Example of @code{TranspType=0}.}
+ at end float
+ at float
+ at image{../png/type1, 7cm}
+ at caption{Example of @code{TranspType=1}.}
+ at end float
+ at float
+ at image{../png/type2, 7cm}
+ at caption{Example of @code{TranspType=2}.}
+ at end float
+
+
+
+ at c ------------------------------------------------------------------
+ at node Hints, , Data plotting, Examples
+ at section 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 @uref{http://mathgl.sf.net/} or in section @ref{Samples}.
+
+ at 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::
+ at end menu
+
+ at c ------------------------------------------------------------------
+ at node ``Compound'' graphics, Two axes in one plot, , Hints
+ at subsection ``Compound'' graphics
+
+As I noted above, MathGL functions (except the special one, like @code{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 @code{surfc} can be emulated in MathGL by 2 calls:
+ at verbatim
+surf a
+cont a 0 7 -1 # draw contours at z = -1
+ at end verbatim
+Here @var{a} is 2-dimensional data for the plotting, @code{-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:
+ at verbatim
+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
+ at end verbatim
+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:
+ at verbatim
+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
+ at end verbatim
+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.
+
+ at c ------------------------------------------------------------------
+ at node Two axes in one plot, Titles for the plot, ``Compound'' graphics, Hints
+ at subsection 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 (@pxref{2-axes sample}):
+ at verbatim
+# 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
+ at end verbatim
+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.
+
+ at c ------------------------------------------------------------------
+ at node Titles for the plot, Changing of the color range, Two axes in one plot, Hints
+ at subsection 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 @code{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 @code{subplot} calls). Alternatively you can use function @code{title} for plotting title for the picture at any time.
+
+ at c ------------------------------------------------------------------
+ at node Changing of the color range, Management of a point cutting, Titles for the plot, Hints
+ at subsection 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:
+ at verbatim
+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
+ at end verbatim
+
+ at c ------------------------------------------------------------------
+ at node Management of a point cutting, Vector field visualization, Changing of the color range, Hints
+ at subsection 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 @code{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:
+ at verbatim
+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
+ at end verbatim
+It is an interesting result, is not it?
+
+ at c ------------------------------------------------------------------
+ at node Vector field visualization, Several light sources, Management of a point cutting, Hints
+ at subsection Vector field visualization
+
+Vector field visualization (especially in 3d case @code{vect3} or @code{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 @code{meshnum} for decreasing the number of hachures. The second way is to use the flow thread chart @code{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.
+
+ at c ------------------------------------------------------------------
+ at node Several light sources, CutMin and CutMax features, Vector field visualization, Hints
+ at subsection 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 (@pxref{Several light sample}).
+
+ at c ------------------------------------------------------------------
+ at node CutMin and CutMax features, Mapping visualization, Several light sources, Hints
+ at subsection CutMin and CutMax features
+
+MathGL library has a feature for cutting of points in some region @var{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 @code{isocaps} plot in Matlab). For example, let us use the standard 3D data array and show its interior (@pxref{CutMinMax sample}).
+
+ at verbatim
+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'
+ at end verbatim
+
+One can also exclude points from arbitrary area in space. This area defined by textual formula @code{cut} (@pxref{Cutting}). The algorithm is the same as shown for ``rectangular cutting''.
+
+ at c ------------------------------------------------------------------
+ at node Mapping visualization, Log-scaled plot, CutMin and CutMax features, Hints
+ at subsection 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 @code{surfc}, @code{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 @code{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 :).
+
+ at c ------------------------------------------------------------------
+ at node Log-scaled plot, Nonlinear fitting hints, Mapping visualization, Hints
+ at subsection Log-scaled plot
+
+Log-scaled plot can be drawn by 2 steps. First, one should change the scale of axis by call @code{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: @code{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 @pxref{Log-log sample}.
+
+ at c ------------------------------------------------------------------
+ at node Nonlinear fitting hints, PDE solving hints, Log-scaled plot, Hints
+ at subsection 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 (@pxref{Fitting sample}). First, let us use sin function with some random noise:
+ at verbatim
+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)'
+ at end verbatim
+and plot it to see that data we will fit
+ at verbatim
+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
+ at end verbatim
+
+The next step is the fitting itself. For that let me specify an initial values @var{ini} for coefficients @samp{abc} and do the fitting for approximation formula @samp{a+b*sin(c*x)}
+ at verbatim
+new res # The data for found formula
+fit res rnd 'a+b*sin(c*x)' 'abc' [1, 1, 3]
+ at end verbatim
+Now display it
+ at verbatim
+plot res 'r'
+text -1 -1.3 'fitted:' 'L:r' -1
+putsfit 0 -1.8 'y = ' 'C:r' -1
+ at end verbatim
+
+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 @code{ini = [0, 0, 0]} in the code above.
+
+ at c ------------------------------------------------------------------
+ at node PDE solving hints, Stereo image, Nonlinear fitting hints, Hints
+ at subsection 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 @code{ray} for ray tracing, @code{pde} for PDE solving, @code{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 @code{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 @samp{x}, @samp{y}, @samp{z}, time @samp{t} (for particle dynamics) and momentums @samp{p}=@math{p_x}, @samp{q}=@math{p_y}, @samp{v}=@math{p_z}. Next, you have to define the initial conditions for coordinates and momentums at @samp{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.
+ at verbatim
+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)
+ at end verbatim
+This example calculate the reflection from linear layer (media with Hamiltonian @samp{p^2+q^2-x-1}=@math{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 @math{\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 @samp{x}, @samp{y}, @samp{z} (but not time!), momentums @samp{p}=@math{(d/dx)/i k_0}, @samp{q}=@math{(d/dy)/i k_0} and field amplitude @samp{u}=@math{|u|}. The evolutionary coordinate is @samp{z} in all cases. So that, the equation look like @math{du/dz = ik_0 H(x,y,\hat p, \hat q, |u|)[u]}. Dependence on field amplitude @samp{u}=@math{|u|} allows one to solve nonlinear problems too. For example, for nonlinear Shrodinger equation you may set @code{ham='p^2 + q^2 - u^2'}. Also you may specify imaginary part for wave absorption, like @code{ham = 'p^2 + i*x*(x>0)'}, but only if dependence on variable @samp{i} is linear (i.e. @math{H = Hre+i*Him}).
+
+Next step is specifing the initial conditions at @samp{z}=@code{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=@math{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 @math{H}. At this moment, simplified form of operator @math{H} is supported -- all ``mixed'' terms (like @samp{x*p}->x*d/dx) are excluded. For example, in 2D case this operator is effectively @math{H = f(p,z) + g(x,z,u)}. However commutable combinations (like @samp{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 @samp{'p^2+q^2-x-1+i*0.5*(z+x)*(z>-x)'} that correspond to equation @math{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 @math{exp(-48*(x+0.7)^2)}. The corresponding code looks like this (@pxref{PDE sample}):
+ at verbatim
+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'
+ at end verbatim
+
+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 @var{w} in direction transverse the ray. So, you don't need to specify the range of coordinates. @strong{BUT} there is limitation. The accompanied coordinates are well defined only for smooth enough rays, i.e. then the ray curvature @math{K} (which is defined as @math{1/K^2 = (|\ddot r|^2 |\dot r|^2 - (\ddot r, \dot r)^2)/|\dot r|^6}) is much large then the grid width: @math{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:
+ at verbatim
+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'
+ at end verbatim
+
+
+ at c ------------------------------------------------------------------
+ at node Stereo image, , PDE solving hints, Hints
+ at subsection 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 (@pxref{Stereo image sample}):
+ at verbatim
+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
+ at end verbatim
+
diff --git a/texinfo/ex_mgl_ru.texi b/texinfo/ex_mgl_ru.texi
new file mode 100644
index 0000000..3e77faf
--- /dev/null
+++ b/texinfo/ex_mgl_ru.texi
@@ -0,0 +1,775 @@
+ at c ------------------------------------------------------------------
+ at chapter 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 @ref{General concepts}. Sample code for some of these examples can be found in @uref{http://mathgl.sf.net/pictures.html} and in @ref{Samples}.
+
+ at menu
+* Basic usage::
+* Advanced usage::
+* Data handling::
+* Data plotting::
+* Hints::
+ at end menu
+
+ at c ------------------------------------------------------------------
+ at node Basic usage, Advanced usage, , Examples
+ at section Basic usage
+
+MGL script can be used by several manners. Each has positive and negative sides:
+ at itemize @bullet
+ at item
+ at emph{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.
+
+ at item
+ at emph{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: @code{mgl2png}, @code{mgl2gif}, @code{mgl2eps}, @code{mgl2svg} or @code{mglview} for viewing.
+ at end itemize
+
+The simplest script is
+ at verbatim
+box # draw bounding box
+axis # draw axis
+fplot 'x^3' # draw some function
+ at end verbatim
+
+Just type it in UDAV and press F5. Also you can save it in text file @samp{test.mgl} and type in the console @code{mgl2png test.mgl} what produce file @samp{test.mgl.png} with resulting picture.
+
+ at c ------------------------------------------------------------------
+ at node Advanced usage, Data handling, Basic usage, Examples
+ at section 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.
+
+ at menu
+* Subplots::
+* Axis and grids::
+* Curvilinear coordinates::
+* Text printing example::
+ at end menu
+
+ at c ------------------------------------------------------------------
+ at node Subplots, Axis and grids, , Advanced usage
+ at subsection Subplots
+
+Let me demonstrate possibilities of axes transformation. MathGL has the following functions: @code{SubPlot}, @code{InPlot}, @code{Aspect} and @code{Rotate}, @pxref{Transformation matrix}). The order of their calling is strictly determined. First, one changes the position of axes in image area, functions @code{SubPlot} and @code{InPlot}). After that one may rotate the plot, function @code{Rotate}). Finally, one may change aspects of axes, function @code{Aspect}). The following code illustrates the aforesaid it:
+ at verbatim
+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'
+ at end verbatim
+Here I used function @code{text} for printing the text in arbitrary position of picture, @pxref{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 @xref{Text printing example}.
+
+Note that several commands can be placed in a string if they are separated by @samp{:} symbol.
+
+ at float
+ at image{../png/sample1, 7cm}
+ at caption{Example of several subplots on the single picture.}
+ at end float
+
+ at c ------------------------------------------------------------------
+ at node Axis and grids, Curvilinear coordinates, Subplots, Advanced usage
+ at subsection 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 @code{axis}. Also you can use @code{xrange, yrange, zrange} functions (@pxref{Axis settings}). Ticks on axis are specified by functions @code{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 @code{Axis} draws axes. Its textual string shows in which directions the axis or axes will be drawn (by default @code{'xyz'}, function draws axes in all directions). Function @code{Grid} draws grid perpendicularly to specified directions. Example of axes and grid drawing is:
+ at verbatim
+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'
+ at end verbatim
+
+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 @code{Label} function. It draws label for axis in specified direction. The text position on axis is specified by third argument of @code{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.
+
+ at float
+ at image{../png/sample2, 7cm}
+ at caption{Example of setting up axis range and axis ticks.}
+ at end float
+
+ at c ------------------------------------------------------------------
+ at node Curvilinear coordinates, Text printing example, Axis and grids, Advanced usage
+ at subsection 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 @var{y}=0, @var{z}=0 in Cartesian, polar, parabolic and spiral coordinates:
+ at verbatim
+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'
+ at end verbatim
+
+ at float
+ at image{../png/sample3, 7cm}
+ at caption{Example of curvilinear coordinates}
+ at end float
+
+
+ at c ------------------------------------------------------------------
+ at node Text printing example, , Curvilinear coordinates, Advanced usage
+ at subsection Text printing example
+
+MathGL prints text by vector font. There are functions for manual specifying of text position (like @code{Puts}) and for its automatic selection (like @code{Label}, @code{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 @var{fontsize}. However, the actual size of output string depends on position of axes (depends on functions @code{SubPlot}, @code{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 @pxref{Font styles}). Example of MathGL font drawing is:
+ at verbatim
+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'
+ at end verbatim
+
+ at float
+ at image{../png/sample4, 7cm}
+ at caption{Example of text printing with different font effects}
+ at end float
+
+Another example demonstrate the features of TeX formula parsing.
+ at verbatim
+text 0 0 '\sqrt{\frac{\alpha^{\gamma^2}+\overset 1{\big\infty}}{\sqrt3{2+b}}}', 0, -4
+ at end verbatim
+
+ at float
+ at image{../png/samplee, 7cm}
+ at caption{Example of TeX formula parsing}
+ at end float
+
+
+ at c ------------------------------------------------------------------
+ at node Data handling, Data plotting, Advanced usage, Examples
+ at section Data handling
+
+ at c Class @code{mglData} contains all functions for the data handling in MathGL (@pxref{mglData class}). There are several matters why I use class @code{mglData} but not a single array: it does not depend on type of data (float or double), sizes of data arrays are kept with data, memory working is simpler and safer.
+
+ at menu
+* Array creation::
+* Data changing::
+ at end menu
+
+ at c ------------------------------------------------------------------
+ at node Array creation, Data changing, , Data handling
+ at subsection Array creation
+
+One can put numbers into the data instance by several ways. Let us do it for sinus function:
+ at itemize @bullet
+ at item
+one can create array by @code{list} command
+ at verbatim
+list a 0 0.04 0.16 0.36 0.64 1
+ at end verbatim
+
+ at item
+another way is to copy from ``inline'' array
+ at verbatim
+copy a [0,0.04,0.16,0.36,0.64,1]
+ at end verbatim
+
+ at item
+next way is to fill the data by textual formula with the help of @code{modify} function
+ at verbatim
+new a 6
+modify a 'x^2'
+ at end verbatim
+
+ at item
+or one may fill the array in some interval and modify it later
+ at verbatim
+new a 6
+fill a 0 1
+modify a 'u^2'
+ at end verbatim
+
+ at item
+or fill the array using current axis range
+ at verbatim
+new a 6
+fill a '(x+1)^2/4'
+ at end verbatim
+
+ at item
+finally it can be loaded from file
+ at verbatim
+new s 6: modify s 'x^2'
+save s 'sqr.dat' # create file first
+read a 'sqr.dat' # load it
+ at end verbatim
+
+ at item
+at this one can read only part of data
+ at verbatim
+new s 6: modify s 'x^2'
+save s 'sqr.dat' # create file first
+read a 'sqr.dat' 5 # load it
+ at end verbatim
+ at end itemize
+
+Creation of 2d- and 3d-arrays is mostly the same. One can use direct data filling by @code{list} command
+ at verbatim
+list a 11 12 13 | 21 22 23 | 31 32 33
+ at end verbatim
+or by inline arrays
+ at verbatim
+copy a [[11,12,13],[21,22,23],[31,32,33]]
+ at end verbatim
+Also data can be filled by formula
+ at verbatim
+new z 30 40
+fill z 'sin(pi*x)*cos(pi*y)'
+ at end verbatim
+or loaded from file.
+
+The only non-obvious thing here is using multidimensional arrays in C/C++, i.e. arrays defined like @code{float dat[40][30];}. Since, formaly this arrays element @code{dat[i]} can address the memory in arbitrary place you should use the proper function to convert such arrays to @code{mglData} object. For C++ this is functions like @code{mglData::Set(float **dat, int N1, int N2}. For C this is functions like @code{mgl_data_set_float2(HMDT d, const float **dat, int N1, int N2}. At this, you should keep in mind that @code{nx=N2} and @code{ny=N1} after conversion.
+
+ at c ------------------------------------------------------------------
+ at node Data changing, , Array creation, Data handling
+ at subsection 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 @samp{x}, @samp{y} or @samp{z}. For example, the call of @code{diff a 'x'} will differentiate data along @samp{x} direction; the call of @code{integrate a 'xy'} perform the double integration of data along @samp{x} and @samp{y} directions; the call of @code{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:
+ at verbatim
+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'
+ at end verbatim
+
+ at float
+ at image{../png/sample6, 7cm}
+ at caption{Example of data differentiation and integration}
+ at end float
+
+Data smoothing (function @code{Smooth}) is more interesting and important. This function has 2 main arguments: type of smoothing and its direction. Now 4 methods are supported: @code{0} does nothing for delta=0 or approaches data to zero with the step delta, @code{1} linear averaging by 3 points, @code{2} linear averaging by 5 points, @code{3} quadratic averaging by 5 points. Let me demonstrate it for 1d case:
+ at verbatim
+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
+ at end verbatim
+
+ at float
+ at image{../png/sample7, 7cm}
+ at caption{Example of data smoothing}
+ at end float
+
+Finally one can create new data arrays on base of the existing one: extract slice, row or column of data (@code{SubData}), summarize along some of direction(s) (@code{Sum}), find distribution of data elements (@code{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.
+
+ at c ------------------------------------------------------------------
+ at node Data plotting, Hints, Data handling, Examples
+ at section 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 @var{Min}*@var{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 @strong{before} plotting functions.
+
+ at menu
+* Plots for 1D data::
+* Plots for 2D data::
+* Plots for 3D data::
+* Surface transparency::
+ at end menu
+
+ at c ------------------------------------------------------------------
+ at node Plots for 1D data, Plots for 2D data, , Data plotting
+ at subsection 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 (@pxref{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 (@pxref{Line styles}) are specified by the string argument. If the string parameter is @code{NULL} then solid line with color from palette is used.
+
+Below I shall show the features of 1D plotting on base of @code{plot} function (@pxref{1D plotting}). Let us start from sinus plot:
+ at verbatim
+new y0 50: modify y0 'sin(pi*(2*x-1))'
+subplot 2 2 0
+plot y0: box
+ at end verbatim
+Style of line is not specified in @code{plot} function. So MathGL uses the solid line with first color of palette (this is blue). Next subplot shows array @var{y1} with 2 rows:
+ at verbatim
+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
+ at end verbatim
+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 @math{x=cos(\pi t), y=sin(\pi t)}. I will set the color of the circle (dark yellow, @samp{Y}) and put marks @samp{+} at point position:
+ at verbatim
+new x 50: modify x 'cos(pi*2*x-pi)'
+plot x y0 'Y+'
+ at end verbatim
+Note that solid line is used because I did not specify the type of line. The same picture can be achieved by @code{Plot2} function. Let us draw ellipse by orange dash line:
+ at verbatim
+plot y1(:,0) y(:,1) 'q|'
+ at end verbatim
+
+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):
+ at verbatim
+subplot 2 2 2:rotate 60 40
+new z 50: modify z '2*x-1'
+plot x y0 z 'g':box
+ at end verbatim
+Function @code{Plot3} does 3D curve plot but for single array. Use it to put circle marks on the previous plot:
+ at verbatim
+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 '
+ at end verbatim
+Note that line style is empty @samp{ } here. Usage of other 1D plotting functions looks similar:
+ at verbatim
+subplot 2 2 3:rotate 60 40
+bars x y0 z 'r':box
+ at end verbatim
+
+ at float
+ at image{../png/sample8, 7cm}
+ at caption{Example of 1D data plot}
+ at end float
+
+ at c ------------------------------------------------------------------
+ at node Plots for 2D data, Plots for 3D data, Plots for 1D data, Data plotting
+ at subsection Plots for 2D data
+
+Surfaces @code{Surf} and other 2D plots (@pxref{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 (@pxref{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 @samp{kw}) or from white to black (string @samp{wk}). Another scheme is useful for accentuation of negative (by blue color) and positive (by red color) regions on plot (string @samp{'BbwrR'}). Last one is the popular ``jet'' scheme (string @samp{'BbcyrR'}).
+
+Now I shall show the example of a surface drawing. At first let us switch lightning on
+ at verbatim
+light on
+ at end verbatim
+and draw the surface, considering coordinates x,y to be uniformly distributed in interval @var{Min}*@var{Max}
+ at verbatim
+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
+ at end verbatim
+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:
+ at verbatim
+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
+ at end verbatim
+I set color scheme to @code{'BbwrR'} that corresponds to red top and blue bottom of the sphere.
+
+Surfaces will be plotted for each of slice of the data if @var{nz}>1. Next example draws surfaces for data arrays with @var{nz}=3:
+ at verbatim
+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
+ at end verbatim
+Note, that it may entail a confusion. However, if one will use density plot then the picture will look better:
+ at verbatim
+subplot 2 2 3: rotate 60 40
+dens a1: box
+ at end verbatim
+Note, that the previous color scheme is used in last plots because there are no direct specification of the one.
+
+ at float
+ at image{../png/sample9, 7cm}
+ at caption{Example of surface plot for 2D data}
+ at end float
+
+Drawing of other 2D plots is analogous. The only peculiarity is the usage of flag @samp{#}. By default this flag switches on the drawing of a grid on plot (@code{grid} or @code{mesh} for plots in plain or in volume). However, for isosurfaces (including surfaces of rotation @code{axial}) this flag switches the face drawing off. Figure becomes wired. The following code gives example of flag @samp{#} using (compare with normal function drawing as in its description):
+ at verbatim
+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
+ at end verbatim
+
+ at float
+ at image{../png/samplea, 7cm}
+ at caption{Example of 2D data plot with color scheme contained @samp{#} symbol}
+ at end float
+
+ at c ------------------------------------------------------------------
+ at node Plots for 3D data, Surface transparency, Plots for 2D data, Data plotting
+ at subsection 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 (@pxref{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 @code{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 @code{surf3a}). As example of 3D data plots let us draw the Gaussian beam diffraction in space. Beam propagates along @var{x} axis:
+ at verbatim
+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
+ at end verbatim
+
+ at float
+ at image{../png/sampleb, 7cm}
+ at caption{Example of Gaussian beam diffraction (3D data)}
+ at end float
+
+
+ at c ------------------------------------------------------------------
+ at node Surface transparency, , Plots for 3D data, Data plotting
+ at subsection 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 @code{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 @code{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 @code{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 @code{transparent on}.
+
+Third feature is the changing of the way how the light goes through overlapped surfaces. The variable @code{transptype} defines it. By default the usual transparency is used (@code{transptype 0}) -- surfaces below is less visible than the upper ones. A ``glass-like'' transparency (@code{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 (@code{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 @ref{Plots for 2D data} (grid drawing is disabled) for different types of transparency.
+ at float
+ at image{../png/type0, 7cm}
+ at caption{Example of @code{TranspType=0}.}
+ at end float
+ at float
+ at image{../png/type1, 7cm}
+ at caption{Example of @code{TranspType=1}.}
+ at end float
+ at float
+ at image{../png/type2, 7cm}
+ at caption{Example of @code{TranspType=2}.}
+ at end float
+
+
+
+ at c ------------------------------------------------------------------
+ at node Hints, , Data plotting, Examples
+ at section 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 @uref{http://mathgl.sf.net/} or in section @ref{Samples}.
+
+ at 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::
+ at end menu
+
+ at c ------------------------------------------------------------------
+ at node ``Compound'' graphics, Two axes in one plot, , Hints
+ at subsection ``Compound'' graphics
+
+As I noted above, MathGL functions (except the special one, like @code{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 @code{surfc} can be emulated in MathGL by 2 calls:
+ at verbatim
+surf a
+cont a 0 7 -1 # draw contours at z = -1
+ at end verbatim
+Here @var{a} is 2-dimensional data for the plotting, @code{-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:
+ at verbatim
+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
+ at end verbatim
+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:
+ at verbatim
+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
+ at end verbatim
+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.
+
+ at c ------------------------------------------------------------------
+ at node Two axes in one plot, Titles for the plot, ``Compound'' graphics, Hints
+ at subsection 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 (@pxref{2-axes sample}):
+ at verbatim
+# 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
+ at end verbatim
+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.
+
+ at c ------------------------------------------------------------------
+ at node Titles for the plot, Changing of the color range, Two axes in one plot, Hints
+ at subsection 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 @code{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 @code{subplot} calls). Alternatively you can use function @code{title} for plotting title for the picture at any time.
+
+ at c ------------------------------------------------------------------
+ at node Changing of the color range, Management of a point cutting, Titles for the plot, Hints
+ at subsection 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:
+ at verbatim
+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
+ at end verbatim
+
+ at c ------------------------------------------------------------------
+ at node Management of a point cutting, Vector field visualization, Changing of the color range, Hints
+ at subsection 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 @code{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:
+ at verbatim
+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
+ at end verbatim
+It is an interesting result, is not it?
+
+ at c ------------------------------------------------------------------
+ at node Vector field visualization, Several light sources, Management of a point cutting, Hints
+ at subsection Vector field visualization
+
+Vector field visualization (especially in 3d case @code{vect3} or @code{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 @code{meshnum} for decreasing the number of hachures. The second way is to use the flow thread chart @code{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.
+
+ at c ------------------------------------------------------------------
+ at node Several light sources, CutMin and CutMax features, Vector field visualization, Hints
+ at subsection 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 (@pxref{Several light sample}).
+
+ at c ------------------------------------------------------------------
+ at node CutMin and CutMax features, Mapping visualization, Several light sources, Hints
+ at subsection CutMin and CutMax features
+
+MathGL library has a feature for cutting of points in some region @var{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 @code{isocaps} plot in Matlab). For example, let us use the standard 3D data array and show its interior (@pxref{CutMinMax sample}).
+
+ at verbatim
+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'
+ at end verbatim
+
+One can also exclude points from arbitrary area in space. This area defined by textual formula @code{cut} (@pxref{Cutting}). The algorithm is the same as shown for ``rectangular cutting''.
+
+ at c ------------------------------------------------------------------
+ at node Mapping visualization, Log-scaled plot, CutMin and CutMax features, Hints
+ at subsection 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 @code{surfc}, @code{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 @code{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 :).
+
+ at c ------------------------------------------------------------------
+ at node Log-scaled plot, Nonlinear fitting hints, Mapping visualization, Hints
+ at subsection Log-scaled plot
+
+Log-scaled plot can be drawn by 2 steps. First, one should change the scale of axis by call @code{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: @code{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 @pxref{Log-log sample}.
+
+ at c ------------------------------------------------------------------
+ at node Nonlinear fitting hints, PDE solving hints, Log-scaled plot, Hints
+ at subsection 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 (@pxref{Fitting sample}). First, let us use sin function with some random noise:
+ at verbatim
+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)'
+ at end verbatim
+and plot it to see that data we will fit
+ at verbatim
+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
+ at end verbatim
+
+The next step is the fitting itself. For that let me specify an initial values @var{ini} for coefficients @samp{abc} and do the fitting for approximation formula @samp{a+b*sin(c*x)}
+ at verbatim
+new res # The data for found formula
+fit res rnd 'a+b*sin(c*x)' 'abc' [1, 1, 3]
+ at end verbatim
+Now display it
+ at verbatim
+plot res 'r'
+text -1 -1.3 'fitted:' 'L:r' -1
+putsfit 0 -1.8 'y = ' 'C:r' -1
+ at end verbatim
+
+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 @code{ini = [0, 0, 0]} in the code above.
+
+ at c ------------------------------------------------------------------
+ at node PDE solving hints, Stereo image, Nonlinear fitting hints, Hints
+ at subsection 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 @code{ray} for ray tracing, @code{pde} for PDE solving, @code{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 @code{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 @samp{x}, @samp{y}, @samp{z}, time @samp{t} (for particle dynamics) and momentums @samp{p}=@math{p_x}, @samp{q}=@math{p_y}, @samp{v}=@math{p_z}. Next, you have to define the initial conditions for coordinates and momentums at @samp{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.
+ at verbatim
+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)
+ at end verbatim
+This example calculate the reflection from linear layer (media with Hamiltonian @samp{p^2+q^2-x-1}=@math{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 @math{\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 @samp{x}, @samp{y}, @samp{z} (but not time!), momentums @samp{p}=@math{(d/dx)/i k_0}, @samp{q}=@math{(d/dy)/i k_0} and field amplitude @samp{u}=@math{|u|}. The evolutionary coordinate is @samp{z} in all cases. So that, the equation look like @math{du/dz = ik_0 H(x,y,\hat p, \hat q, |u|)[u]}. Dependence on field amplitude @samp{u}=@math{|u|} allows one to solve nonlinear problems too. For example, for nonlinear Shrodinger equation you may set @code{ham='p^2 + q^2 - u^2'}. Also you may specify imaginary part for wave absorption, like @code{ham = 'p^2 + i*x*(x>0)'}, but only if dependence on variable @samp{i} is linear (i.e. @math{H = Hre+i*Him}).
+
+Next step is specifing the initial conditions at @samp{z}=@code{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=@math{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 @math{H}. At this moment, simplified form of operator @math{H} is supported -- all ``mixed'' terms (like @samp{x*p}->x*d/dx) are excluded. For example, in 2D case this operator is effectively @math{H = f(p,z) + g(x,z,u)}. However commutable combinations (like @samp{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 @samp{'p^2+q^2-x-1+i*0.5*(z+x)*(z>-x)'} that correspond to equation @math{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 @math{exp(-48*(x+0.7)^2)}. The corresponding code looks like this (@pxref{PDE sample}):
+ at verbatim
+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'
+ at end verbatim
+
+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 @var{w} in direction transverse the ray. So, you don't need to specify the range of coordinates. @strong{BUT} there is limitation. The accompanied coordinates are well defined only for smooth enough rays, i.e. then the ray curvature @math{K} (which is defined as @math{1/K^2 = (|\ddot r|^2 |\dot r|^2 - (\ddot r, \dot r)^2)/|\dot r|^6}) is much large then the grid width: @math{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:
+ at verbatim
+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'
+ at end verbatim
+
+
+ at c ------------------------------------------------------------------
+ at node Stereo image, , PDE solving hints, Hints
+ at subsection 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 (@pxref{Stereo image sample}):
+ at verbatim
+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
+ at end verbatim
+
diff --git a/texinfo/example_en.texi b/texinfo/example_en.texi
index 210e189..f5886bd 100644
--- a/texinfo/example_en.texi
+++ b/texinfo/example_en.texi
@@ -1,5 +1,4 @@
@c ------------------------------------------------------------------
- at node Examples, MathGL core, Overview, Top
@chapter 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 @ref{General concepts} and @ref{FAQ}. Sample code for some of these examples can be found in @uref{http://mathgl.sf.net/pictures.html} and in @ref{Samples}.
@@ -46,11 +45,11 @@ Let me consider the aforesaid in more detail.
@c ------------------------------------------------------------------
@node Using FLTK/GLUT window, Drawing to file, , Basic usage
- at subsection Using FLTK/GLUT window
+ at subsection Using FLTK/Qt/GLUT window
@cindex window
@cindex widgets
-The ``interactive'' way of drawing in MathGL consists in window creation with help of class @code{mglGraphGLUT} or @code{mglGraphGLUT} (@pxref{Widget classes}) and the following drawing in this window. There is a corresponding code:
+The ``interactive'' way of drawing in MathGL consists in window creation with help of class @code{mglGraphFLTK}, @code{mglGraphQT} or @code{mglGraphGLUT} (@pxref{Widget classes}) and the following drawing in this window. There is a corresponding code:
@verbatim
int sample(mglGraph *gr, void *)
{
@@ -91,7 +90,7 @@ Alternatively you can create yours own class inherited from class @code{mglDraw}
}
@end verbatim
-The similar code can be written for @code{mglGraphGLUT} or for @code{mglGraphQT} window (function @code{sample()} is the same):
+The similar code can be written for @code{mglGraphQT} or for @code{mglGraphGLUT} window (function @code{sample()} is the same):
@verbatim
int main(int argc,char **argv)
{
@@ -177,7 +176,47 @@ The last way of MathGL using is the drawing in memory. Class @code{mglGraphZB} a
dc.DrawBitmap(wxBitmap(img),0,y);
}
@end verbatim
-The drawing in other libraries is most the same. Moreover, I excluded the support of TIFF and JPEG files from MathGL by default for compatibility with wxWidgets library.
+The drawing in other libraries is most the same.
+ at c Moreover, I excluded the support of TIFF and JPEG files from MathGL by default for compatibility with wxWidgets library.
+
+For example, FLTK code will look like
+ at verbatim
+ void Fl_MyWidget::draw()
+ {
+ mglGraphZB gr(w(),h());
+ gr.Alpha(true); // draws something using MathGL
+ gr.Light(true); gr.Light(0,mglPoint(1,0,-1));
+ sample(&gr,NULL);
+ fl_draw_image(gr.GetBits(), x(), y(), gr.GetWidth(), gr.GetHeight(), 3);
+ }
+ at end verbatim
+Qt code will look like
+ at verbatim
+ void MyWidget::paintEvent(QPaintEvent *)
+ {
+ mglGraphZB gr(w(),h());
+ gr.Alpha(true); // draws something using MathGL
+ gr.Light(true); gr.Light(0,mglPoint(1,0,-1));
+ sample(&gr,NULL);
+
+ // Qt don't support RGB format as is. So, let convert it to BGRN.
+ const uchar *bb = gr.GetBits();
+ register long i, w=gr.GetWidth(), h=gr.GetHeight();
+ *buf = new uchar[4*w*h];
+ for(i=0;i<w*h;i++)
+ {
+ (*buf)[4*i] = bb[3*i+2];
+ (*buf)[4*i+1] = bb[3*i+1];
+ (*buf)[4*i+2] = bb[3*i];
+ (*buf)[4*i+3] = 255;
+ }
+ QPixmap pic = QPixmap::fromImage(QImage(*buf, w, h, QImage::Format_RGB32));
+
+ QPainter paint;
+ paint.begin(this); paint.drawPixmap(0,0,pic); paint.end();
+ delete []buf;
+ }
+ at end verbatim
@c ------------------------------------------------------------------
@node Using QMathGL, , Drawing in memory, Basic usage
@@ -266,7 +305,7 @@ Let me demonstrate possibilities of axes transformation. MathGL has the followin
Here I used function @code{Puts} for printing the text in arbitrary position of picture (@pxref{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 @xref{Text printing example}.
@float
- at image{png/sample1, 7cm}
+ at image{../png/sample1, 7cm}
@caption{Example of several subplots on the single picture.}
@end float
@@ -325,7 +364,7 @@ Function @code{Axis} draws axes. Its textual string shows in which directions th
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 @code{Label} function. It draws label for axis in specified direction. The text position on axis is specified by third argument of @code{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.
@float
- at image{png/sample2, 7cm}
+ at image{../png/sample2, 7cm}
@caption{Example of setting up axis range and axis ticks.}
@end float
@@ -376,7 +415,7 @@ Now let use curvilinear coordinates. In difference from other systems of plot cr
@end verbatim
@float
- at image{png/sample3, 7cm}
+ at image{../png/sample3, 7cm}
@caption{Example of curvilinear coordinates}
@end float
@@ -385,7 +424,7 @@ Now let use curvilinear coordinates. In difference from other systems of plot cr
@node Text printing example, Animation, Curvilinear coordinates, Advanced usage
@subsection Text printing example
-MathGL prints text by vector font. There are functions for manual specifying of text position (like @code{Puts}) and for its automatic selection (like @code{Label}, @code{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 variables @var{FontSize} (@pxref{Font settings}). However, the actual size of output string depends on position of axes (depends on functions @code{SubPlot}, @code{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 @pxref{mglFont class}). Example of MathGL font drawing is:
+MathGL prints text by vector font. There are functions for manual specifying of text position (like @code{Puts}) and for its automatic selection (like @code{Label}, @code{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 variables @var{FontSize} (@pxref{Font settings}). However, the actual size of output string depends on position of axes (depends on functions @code{SubPlot}, @code{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 @pxref{Font styles}). Example of MathGL font drawing is:
@verbatim
int sample(mglGraph *gr, void *)
{
@@ -406,7 +445,7 @@ MathGL prints text by vector font. There are functions for manual specifying of
@end verbatim
@float
- at image{png/sample4, 7cm}
+ at image{../png/sample4, 7cm}
@caption{Example of text printing with different font effects}
@end float
@@ -421,7 +460,7 @@ Another example demonstrate the features of TeX formula parsing.
@end verbatim
@float
- at image{png/samplee, 7cm}
+ at image{../png/samplee, 7cm}
@caption{Example of TeX formula parsing}
@end float
@@ -444,7 +483,7 @@ Finally you can change font during execution (this work well for mglGraphZB clas
@end verbatim
@float
- at image{png/fonts, 7cm}
+ at image{../png/fonts, 7cm}
@caption{Example of font face changing.}
@end float
@@ -611,7 +650,7 @@ MathGL has functions for data processing: differentiating, integrating, smoothin
@end verbatim
@float
- at image{png/sample6, 7cm}
+ at image{../png/sample6, 7cm}
@caption{Example of data differentiation and integration}
@end float
@@ -636,7 +675,7 @@ Data smoothing (function @code{Smooth()}) is more interesting and important. Thi
@end verbatim
@float
- at image{png/sample7, 7cm}
+ at image{../png/sample7, 7cm}
@caption{Example of data smoothing}
@end float
@@ -665,9 +704,9 @@ Below I shall show the features of 1D plotting on base of @code{Plot()} function
@verbatim
int sample(mglGraph *gr, void *)
{
- mglData y0(50); y0.Modify("sin(pi*(2*x-1))");
+ mglData y0(50); y0.Modify("sin(pi*(2*x-1))");
gr->SubPlot(2,2,0);
- gr->Plot(y0); gr->Box();
+ gr->Plot(y0); gr->Box();
@end verbatim
Style of line is not specified in @code{Plot()} function. So MathGL uses the solid line with first color of palette (this is blue). Next subplot shows array @var{y1} with 2 rows:
@verbatim
@@ -675,11 +714,11 @@ Style of line is not specified in @code{Plot()} function. So MathGL uses the sol
mglData y1(50,2);
y1.Modify("sin(pi*2*x-pi)");
y1.Modify("cos(pi*2*x-pi)/2",1);
- gr->Plot(y1); gr->Box();
+ gr->Plot(y1); gr->Box();
@end verbatim
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 @math{x=cos(\pi t), y=sin(\pi t)}. I will set the color of the circle (dark yellow, @samp{Y}) and put marks @samp{+} at point position:
@verbatim
- mglData x(50); x.Modify("cos(pi*2*x-pi)");
+ mglData x(50); x.Modify("cos(pi*2*x-pi)");
gr->Plot(x,y0,"Y+");
@end verbatim
Note that solid line is used because I did not specify the type of line. The same picture can be achieved by @code{Plot2()} function. Let us draw ellipse by orange dash line:
@@ -690,7 +729,7 @@ Note that solid line is used because I did not specify the type of line. The sam
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):
@verbatim
gr->SubPlot(2,2,2); gr->Rotate(60,40);
- mglData z(50); z.Modify("2*x-1");
+ mglData z(50); z.Modify("2*x-1");
gr->Plot(x,y0,z); gr->Box();
@end verbatim
Function @code{Plot3()} does 3D curve plot but for single array. Use it to put circle marks on the previous plot:
@@ -708,7 +747,7 @@ Note that line style is empty @samp{ } here. Usage of other 1D plotting function
@end verbatim
@float
- at image{png/sample8, 7cm}
+ at image{../png/sample8, 7cm}
@caption{Example of 1D data plot}
@end float
@@ -762,7 +801,7 @@ Note, that it may entail a confusion. However, if one will use density plot then
Note, that the previous color scheme is used in last plots because there are no direct specification of the one.
@float
- at image{png/sample9, 7cm}
+ at image{../png/sample9, 7cm}
@caption{Example of surface plot for 2D data}
@end float
@@ -787,7 +826,7 @@ Drawing of other 2D plots is analogous. The only peculiarity is the usage of fla
@end verbatim
@float
- at image{png/samplea, 7cm}
+ at image{../png/samplea, 7cm}
@caption{Example of 2D data plot with color scheme contained @samp{#} symbol}
@end float
@@ -819,7 +858,7 @@ Drawing procedures for 3D plot looks similarly to 1D and 2D plots described abov
@end verbatim
@float
- at image{png/sampleb, 7cm}
+ at image{../png/sampleb, 7cm}
@caption{Example of Gaussian beam diffraction (3D data)}
@end float
@@ -840,15 +879,15 @@ A ``neon-like'' transparency (@code{TranspType=2}) has more interesting look. In
As example I shall show the variant of plot from @ref{Plots for 2D data} (grid drawing is disabled) for different types of transparency.
@float
- at image{png/type0, 7cm}
+ at image{../png/type0, 7cm}
@caption{Example of @code{TranspType=0}.}
@end float
@float
- at image{png/type1, 7cm}
+ at image{../png/type1, 7cm}
@caption{Example of @code{TranspType=1}.}
@end float
@float
- at image{png/type2, 7cm}
+ at image{../png/type2, 7cm}
@caption{Example of @code{TranspType=2}.}
@end float
@@ -1010,8 +1049,8 @@ In this section I have included some small hints and advices for the improving o
* ``Compound'' graphics::
* Two axes in one plot::
* Titles for the plot::
-* Changing of the color range::
-* Management of the point cutting::
+* Changing of the color range::
+* Management of a point cutting::
* Vector field visualization::
* Several light sources::
* CutMin and CutMax features::
@@ -1021,6 +1060,7 @@ In this section I have included some small hints and advices for the improving o
* Nonlinear fitting hints::
* PDE solving hints::
* MGL parser using::
+* Stereo image::
@end menu
@c ------------------------------------------------------------------
@@ -1078,7 +1118,7 @@ Note, that the first and the second axes look better if being placed in differen
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 @code{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 @code{SubPlot()} calls). Alternatively you can use function @code{Title()} for plotting title for the picture at any time.
@c ------------------------------------------------------------------
- at node Changing of the color range, Management of the point cutting, Titles for the plot, Hints
+ at node Changing of the color range, Management of a point cutting, Titles for the plot, Hints
@subsection 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.
@@ -1086,7 +1126,6 @@ By default (for the user comfort), the color range is set equal to z-range of th
For example, compare 2 surfaces:
@verbatim
SubPlot(2,1,0)
- Axis(mglPoint(-1,-1,-1),mglPoint(1,1,1),mglPoint(-1,-1,-1));
Surf(a); // usual coloring range
SubPlot(2,1,1)
CAxis(0,1);
@@ -1094,15 +1133,15 @@ For example, compare 2 surfaces:
@end verbatim
@c ------------------------------------------------------------------
- at node Management of the point cutting, Vector field visualization, Changing of the color range, Hints
- at subsection Management of the point cutting
+ at node Management of a point cutting, Vector field visualization, Changing of the color range, Hints
+ at subsection 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 @code{Cut=false}. 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:
@verbatim
mglData a(20,30); // create some data
- a.a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
+ a.Modify("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(mglPoint(-1,-1,0),mglPoint(1,1,1));
Cut = false; // set off cutting flag
@@ -1111,7 +1150,7 @@ Such method is good not only for outstanding points but also for the case when o
It is an interesting result, is not it?
@c ------------------------------------------------------------------
- at node Vector field visualization, Several light sources, Management of the point cutting, Hints
+ at node Vector field visualization, Several light sources, Management of a point cutting, Hints
@subsection Vector field visualization
Vector field visualization (especially in 3d case @code{Vect3} or @code{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 @code{MeshNum} for decreasing the number of hachures. The second way is to use the flow thread chart @code{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.
@@ -1263,7 +1302,7 @@ You may use following code for obtaining the same solution as in previous exampl
@c ------------------------------------------------------------------
- at node MGL parser using, , PDE solving hints, Hints
+ at node MGL parser using, Stereo image, PDE solving hints, Hints
@subsection MGL parser using
Sometimes you may prefer to use MGL scripts in yours code. It is simpler (especially in comparison with C/Fortran interfaces) and fast way to plot the data with annotations, labels and so on. Class @code{mglParse} (@pxref{mglParse class} parse MGL scripts in C++. It have also the corresponding interface for C/Fortran.
@@ -1303,3 +1342,19 @@ The code in C/Fortran looks practically the same:
mgl_parse_text(gr, parser, "for $0 -1 1 0.1\nline 0 0 -1 $0 'r'\nnext");
mgl_write_png(gr, "test.png", ""); // don't forgot to save picture
@end verbatim
+
+ at c ------------------------------------------------------------------
+ at node Stereo image, , MGL parser using, Hints
+ at subsection 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 (@pxref{Stereo image sample}):
+ at verbatim
+ gr->SubPlot(2,1,0); // left image
+ gr->Rotate(40,60+3);
+ // draw something here
+
+ gr->SubPlot(2,1,1); // right image
+ gr->Rotate(40,60-3);
+ // draw the same here
+ at end verbatim
+
diff --git a/texinfo/example_ru.texi b/texinfo/example_ru.texi
index 210e189..f5886bd 100644
--- a/texinfo/example_ru.texi
+++ b/texinfo/example_ru.texi
@@ -1,5 +1,4 @@
@c ------------------------------------------------------------------
- at node Examples, MathGL core, Overview, Top
@chapter 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 @ref{General concepts} and @ref{FAQ}. Sample code for some of these examples can be found in @uref{http://mathgl.sf.net/pictures.html} and in @ref{Samples}.
@@ -46,11 +45,11 @@ Let me consider the aforesaid in more detail.
@c ------------------------------------------------------------------
@node Using FLTK/GLUT window, Drawing to file, , Basic usage
- at subsection Using FLTK/GLUT window
+ at subsection Using FLTK/Qt/GLUT window
@cindex window
@cindex widgets
-The ``interactive'' way of drawing in MathGL consists in window creation with help of class @code{mglGraphGLUT} or @code{mglGraphGLUT} (@pxref{Widget classes}) and the following drawing in this window. There is a corresponding code:
+The ``interactive'' way of drawing in MathGL consists in window creation with help of class @code{mglGraphFLTK}, @code{mglGraphQT} or @code{mglGraphGLUT} (@pxref{Widget classes}) and the following drawing in this window. There is a corresponding code:
@verbatim
int sample(mglGraph *gr, void *)
{
@@ -91,7 +90,7 @@ Alternatively you can create yours own class inherited from class @code{mglDraw}
}
@end verbatim
-The similar code can be written for @code{mglGraphGLUT} or for @code{mglGraphQT} window (function @code{sample()} is the same):
+The similar code can be written for @code{mglGraphQT} or for @code{mglGraphGLUT} window (function @code{sample()} is the same):
@verbatim
int main(int argc,char **argv)
{
@@ -177,7 +176,47 @@ The last way of MathGL using is the drawing in memory. Class @code{mglGraphZB} a
dc.DrawBitmap(wxBitmap(img),0,y);
}
@end verbatim
-The drawing in other libraries is most the same. Moreover, I excluded the support of TIFF and JPEG files from MathGL by default for compatibility with wxWidgets library.
+The drawing in other libraries is most the same.
+ at c Moreover, I excluded the support of TIFF and JPEG files from MathGL by default for compatibility with wxWidgets library.
+
+For example, FLTK code will look like
+ at verbatim
+ void Fl_MyWidget::draw()
+ {
+ mglGraphZB gr(w(),h());
+ gr.Alpha(true); // draws something using MathGL
+ gr.Light(true); gr.Light(0,mglPoint(1,0,-1));
+ sample(&gr,NULL);
+ fl_draw_image(gr.GetBits(), x(), y(), gr.GetWidth(), gr.GetHeight(), 3);
+ }
+ at end verbatim
+Qt code will look like
+ at verbatim
+ void MyWidget::paintEvent(QPaintEvent *)
+ {
+ mglGraphZB gr(w(),h());
+ gr.Alpha(true); // draws something using MathGL
+ gr.Light(true); gr.Light(0,mglPoint(1,0,-1));
+ sample(&gr,NULL);
+
+ // Qt don't support RGB format as is. So, let convert it to BGRN.
+ const uchar *bb = gr.GetBits();
+ register long i, w=gr.GetWidth(), h=gr.GetHeight();
+ *buf = new uchar[4*w*h];
+ for(i=0;i<w*h;i++)
+ {
+ (*buf)[4*i] = bb[3*i+2];
+ (*buf)[4*i+1] = bb[3*i+1];
+ (*buf)[4*i+2] = bb[3*i];
+ (*buf)[4*i+3] = 255;
+ }
+ QPixmap pic = QPixmap::fromImage(QImage(*buf, w, h, QImage::Format_RGB32));
+
+ QPainter paint;
+ paint.begin(this); paint.drawPixmap(0,0,pic); paint.end();
+ delete []buf;
+ }
+ at end verbatim
@c ------------------------------------------------------------------
@node Using QMathGL, , Drawing in memory, Basic usage
@@ -266,7 +305,7 @@ Let me demonstrate possibilities of axes transformation. MathGL has the followin
Here I used function @code{Puts} for printing the text in arbitrary position of picture (@pxref{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 @xref{Text printing example}.
@float
- at image{png/sample1, 7cm}
+ at image{../png/sample1, 7cm}
@caption{Example of several subplots on the single picture.}
@end float
@@ -325,7 +364,7 @@ Function @code{Axis} draws axes. Its textual string shows in which directions th
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 @code{Label} function. It draws label for axis in specified direction. The text position on axis is specified by third argument of @code{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.
@float
- at image{png/sample2, 7cm}
+ at image{../png/sample2, 7cm}
@caption{Example of setting up axis range and axis ticks.}
@end float
@@ -376,7 +415,7 @@ Now let use curvilinear coordinates. In difference from other systems of plot cr
@end verbatim
@float
- at image{png/sample3, 7cm}
+ at image{../png/sample3, 7cm}
@caption{Example of curvilinear coordinates}
@end float
@@ -385,7 +424,7 @@ Now let use curvilinear coordinates. In difference from other systems of plot cr
@node Text printing example, Animation, Curvilinear coordinates, Advanced usage
@subsection Text printing example
-MathGL prints text by vector font. There are functions for manual specifying of text position (like @code{Puts}) and for its automatic selection (like @code{Label}, @code{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 variables @var{FontSize} (@pxref{Font settings}). However, the actual size of output string depends on position of axes (depends on functions @code{SubPlot}, @code{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 @pxref{mglFont class}). Example of MathGL font drawing is:
+MathGL prints text by vector font. There are functions for manual specifying of text position (like @code{Puts}) and for its automatic selection (like @code{Label}, @code{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 variables @var{FontSize} (@pxref{Font settings}). However, the actual size of output string depends on position of axes (depends on functions @code{SubPlot}, @code{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 @pxref{Font styles}). Example of MathGL font drawing is:
@verbatim
int sample(mglGraph *gr, void *)
{
@@ -406,7 +445,7 @@ MathGL prints text by vector font. There are functions for manual specifying of
@end verbatim
@float
- at image{png/sample4, 7cm}
+ at image{../png/sample4, 7cm}
@caption{Example of text printing with different font effects}
@end float
@@ -421,7 +460,7 @@ Another example demonstrate the features of TeX formula parsing.
@end verbatim
@float
- at image{png/samplee, 7cm}
+ at image{../png/samplee, 7cm}
@caption{Example of TeX formula parsing}
@end float
@@ -444,7 +483,7 @@ Finally you can change font during execution (this work well for mglGraphZB clas
@end verbatim
@float
- at image{png/fonts, 7cm}
+ at image{../png/fonts, 7cm}
@caption{Example of font face changing.}
@end float
@@ -611,7 +650,7 @@ MathGL has functions for data processing: differentiating, integrating, smoothin
@end verbatim
@float
- at image{png/sample6, 7cm}
+ at image{../png/sample6, 7cm}
@caption{Example of data differentiation and integration}
@end float
@@ -636,7 +675,7 @@ Data smoothing (function @code{Smooth()}) is more interesting and important. Thi
@end verbatim
@float
- at image{png/sample7, 7cm}
+ at image{../png/sample7, 7cm}
@caption{Example of data smoothing}
@end float
@@ -665,9 +704,9 @@ Below I shall show the features of 1D plotting on base of @code{Plot()} function
@verbatim
int sample(mglGraph *gr, void *)
{
- mglData y0(50); y0.Modify("sin(pi*(2*x-1))");
+ mglData y0(50); y0.Modify("sin(pi*(2*x-1))");
gr->SubPlot(2,2,0);
- gr->Plot(y0); gr->Box();
+ gr->Plot(y0); gr->Box();
@end verbatim
Style of line is not specified in @code{Plot()} function. So MathGL uses the solid line with first color of palette (this is blue). Next subplot shows array @var{y1} with 2 rows:
@verbatim
@@ -675,11 +714,11 @@ Style of line is not specified in @code{Plot()} function. So MathGL uses the sol
mglData y1(50,2);
y1.Modify("sin(pi*2*x-pi)");
y1.Modify("cos(pi*2*x-pi)/2",1);
- gr->Plot(y1); gr->Box();
+ gr->Plot(y1); gr->Box();
@end verbatim
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 @math{x=cos(\pi t), y=sin(\pi t)}. I will set the color of the circle (dark yellow, @samp{Y}) and put marks @samp{+} at point position:
@verbatim
- mglData x(50); x.Modify("cos(pi*2*x-pi)");
+ mglData x(50); x.Modify("cos(pi*2*x-pi)");
gr->Plot(x,y0,"Y+");
@end verbatim
Note that solid line is used because I did not specify the type of line. The same picture can be achieved by @code{Plot2()} function. Let us draw ellipse by orange dash line:
@@ -690,7 +729,7 @@ Note that solid line is used because I did not specify the type of line. The sam
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):
@verbatim
gr->SubPlot(2,2,2); gr->Rotate(60,40);
- mglData z(50); z.Modify("2*x-1");
+ mglData z(50); z.Modify("2*x-1");
gr->Plot(x,y0,z); gr->Box();
@end verbatim
Function @code{Plot3()} does 3D curve plot but for single array. Use it to put circle marks on the previous plot:
@@ -708,7 +747,7 @@ Note that line style is empty @samp{ } here. Usage of other 1D plotting function
@end verbatim
@float
- at image{png/sample8, 7cm}
+ at image{../png/sample8, 7cm}
@caption{Example of 1D data plot}
@end float
@@ -762,7 +801,7 @@ Note, that it may entail a confusion. However, if one will use density plot then
Note, that the previous color scheme is used in last plots because there are no direct specification of the one.
@float
- at image{png/sample9, 7cm}
+ at image{../png/sample9, 7cm}
@caption{Example of surface plot for 2D data}
@end float
@@ -787,7 +826,7 @@ Drawing of other 2D plots is analogous. The only peculiarity is the usage of fla
@end verbatim
@float
- at image{png/samplea, 7cm}
+ at image{../png/samplea, 7cm}
@caption{Example of 2D data plot with color scheme contained @samp{#} symbol}
@end float
@@ -819,7 +858,7 @@ Drawing procedures for 3D plot looks similarly to 1D and 2D plots described abov
@end verbatim
@float
- at image{png/sampleb, 7cm}
+ at image{../png/sampleb, 7cm}
@caption{Example of Gaussian beam diffraction (3D data)}
@end float
@@ -840,15 +879,15 @@ A ``neon-like'' transparency (@code{TranspType=2}) has more interesting look. In
As example I shall show the variant of plot from @ref{Plots for 2D data} (grid drawing is disabled) for different types of transparency.
@float
- at image{png/type0, 7cm}
+ at image{../png/type0, 7cm}
@caption{Example of @code{TranspType=0}.}
@end float
@float
- at image{png/type1, 7cm}
+ at image{../png/type1, 7cm}
@caption{Example of @code{TranspType=1}.}
@end float
@float
- at image{png/type2, 7cm}
+ at image{../png/type2, 7cm}
@caption{Example of @code{TranspType=2}.}
@end float
@@ -1010,8 +1049,8 @@ In this section I have included some small hints and advices for the improving o
* ``Compound'' graphics::
* Two axes in one plot::
* Titles for the plot::
-* Changing of the color range::
-* Management of the point cutting::
+* Changing of the color range::
+* Management of a point cutting::
* Vector field visualization::
* Several light sources::
* CutMin and CutMax features::
@@ -1021,6 +1060,7 @@ In this section I have included some small hints and advices for the improving o
* Nonlinear fitting hints::
* PDE solving hints::
* MGL parser using::
+* Stereo image::
@end menu
@c ------------------------------------------------------------------
@@ -1078,7 +1118,7 @@ Note, that the first and the second axes look better if being placed in differen
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 @code{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 @code{SubPlot()} calls). Alternatively you can use function @code{Title()} for plotting title for the picture at any time.
@c ------------------------------------------------------------------
- at node Changing of the color range, Management of the point cutting, Titles for the plot, Hints
+ at node Changing of the color range, Management of a point cutting, Titles for the plot, Hints
@subsection 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.
@@ -1086,7 +1126,6 @@ By default (for the user comfort), the color range is set equal to z-range of th
For example, compare 2 surfaces:
@verbatim
SubPlot(2,1,0)
- Axis(mglPoint(-1,-1,-1),mglPoint(1,1,1),mglPoint(-1,-1,-1));
Surf(a); // usual coloring range
SubPlot(2,1,1)
CAxis(0,1);
@@ -1094,15 +1133,15 @@ For example, compare 2 surfaces:
@end verbatim
@c ------------------------------------------------------------------
- at node Management of the point cutting, Vector field visualization, Changing of the color range, Hints
- at subsection Management of the point cutting
+ at node Management of a point cutting, Vector field visualization, Changing of the color range, Hints
+ at subsection 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 @code{Cut=false}. 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:
@verbatim
mglData a(20,30); // create some data
- a.a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
+ a.Modify("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(mglPoint(-1,-1,0),mglPoint(1,1,1));
Cut = false; // set off cutting flag
@@ -1111,7 +1150,7 @@ Such method is good not only for outstanding points but also for the case when o
It is an interesting result, is not it?
@c ------------------------------------------------------------------
- at node Vector field visualization, Several light sources, Management of the point cutting, Hints
+ at node Vector field visualization, Several light sources, Management of a point cutting, Hints
@subsection Vector field visualization
Vector field visualization (especially in 3d case @code{Vect3} or @code{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 @code{MeshNum} for decreasing the number of hachures. The second way is to use the flow thread chart @code{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.
@@ -1263,7 +1302,7 @@ You may use following code for obtaining the same solution as in previous exampl
@c ------------------------------------------------------------------
- at node MGL parser using, , PDE solving hints, Hints
+ at node MGL parser using, Stereo image, PDE solving hints, Hints
@subsection MGL parser using
Sometimes you may prefer to use MGL scripts in yours code. It is simpler (especially in comparison with C/Fortran interfaces) and fast way to plot the data with annotations, labels and so on. Class @code{mglParse} (@pxref{mglParse class} parse MGL scripts in C++. It have also the corresponding interface for C/Fortran.
@@ -1303,3 +1342,19 @@ The code in C/Fortran looks practically the same:
mgl_parse_text(gr, parser, "for $0 -1 1 0.1\nline 0 0 -1 $0 'r'\nnext");
mgl_write_png(gr, "test.png", ""); // don't forgot to save picture
@end verbatim
+
+ at c ------------------------------------------------------------------
+ at node Stereo image, , MGL parser using, Hints
+ at subsection 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 (@pxref{Stereo image sample}):
+ at verbatim
+ gr->SubPlot(2,1,0); // left image
+ gr->Rotate(40,60+3);
+ // draw something here
+
+ gr->SubPlot(2,1,1); // right image
+ gr->Rotate(40,60-3);
+ // draw the same here
+ at end verbatim
+
diff --git a/texinfo/filter.py b/texinfo/filter.py
new file mode 100755
index 0000000..ad255fc
--- /dev/null
+++ b/texinfo/filter.py
@@ -0,0 +1,23 @@
+#!/usr/bin/python
+
+import os,string,re,glob
+
+print 'Tuning resulting html files for Qt\n'
+
+beginskip=0
+for filename in glob.glob('./*ru.html/*html'):
+ fpin=open(filename,'r')
+ fpout=open(filename+'.tmp','w')
+ for line in fpin.readlines():
+ if re.search('<html>',line):
+ beginskip=1
+ fpout.write(line)
+ continue
+ if re.search('<head>',line): beginskip=0
+ if re.search('<meta name=\"distribution\" content=\"global\">',line): continue
+ if re.search('<meta name=\"Generator\" content=\"texi2html',line): continue
+ if beginskip==0 : fpout.write(line)
+ fpin.close()
+ fpout.close()
+ os.remove(filename)
+ os.rename(filename+'.tmp', filename)
diff --git a/texinfo/mathgl.texi b/texinfo/mathgl.texi
deleted file mode 100644
index e69de29..0000000
diff --git a/texinfo/mathgl_en.texi b/texinfo/mathgl_en.texi
index 70a6ec0..dce0911 100644
--- a/texinfo/mathgl_en.texi
+++ b/texinfo/mathgl_en.texi
@@ -1,6 +1,6 @@
\input texinfo
@setfilename mathgl_en.info
- at set VERSION 1.10.1
+ at set VERSION 1.11
@settitle MathGL @value{VERSION}
@syncodeindex pg cp
@comment %**end of header
@@ -86,13 +86,36 @@ supports it in developing GNU and promoting software freedom.''
@macro tdref{nam}
@uref{http://mathgl.sourceforge.net/pdf_u3d/\nam\.pdf, 3D pdf}
@end macro
+ at macro MGL
+(MGL)
+ at end macro
+
+ at node Overview, Examples, , Top
@include overview_en.texi
+
+ at node Examples, MathGL core, Overview, Top
@include example_en.texi
+
+ at node MathGL core, Plotter classes, Examples, Top
@include core_en.texi
+
+ at node Plotter classes, Widget classes, MathGL core, Top
@include class_en.texi
- at include mgl_en.texi
+ at node Widget classes, mglData class, Plotter classes, Top
+ at include widget_en.texi
+
+ at node mglData class, Other classes, Widget classes, Top
+ at include data_en.texi
+
+ at node Other classes, MGL interface, mglData class, Top
+ at include other_en.texi
+
+ at node MGL interface, Samples, Other classes, Top
+ at include mgl_cmd_en.texi
+
+ at node Samples, TeX-like symbols, MGL interface, Top
@include samples_en.texi
@node TeX-like symbols, Copying This Manual, Samples, Top
diff --git a/texinfo/mathgl_ru.texi b/texinfo/mathgl_ru.texi
index aa458f7..ea267fb 100644
--- a/texinfo/mathgl_ru.texi
+++ b/texinfo/mathgl_ru.texi
@@ -2,7 +2,7 @@
@setfilename mathgl_ru.info
@c @documentlanguage ru
@documentencoding UTF-8
- at set VERSION 1.10.1
+ at set VERSION 1.11
@settitle MathGL @value{VERSION}
@syncodeindex pg cp
@comment %**end of header
@@ -77,9 +77,9 @@ supports it in developing GNU and promoting software freedom.''
* Other classes::
* MGL interface::
* Samples::
-* Ð¡Ð¸Ð¼Ð²Ð¾Ð»Ñ TeX::
+* TeX-like symbols::
* Copying This Manual::
-* ÐндекÑ::
+* Index::
@end menu
@rmacro sref {arg}
@@ -88,24 +88,46 @@ supports it in developing GNU and promoting software freedom.''
@macro tdref{nam}
@uref{http://mathgl.sourceforge.net/pdf_u3d/\nam\.pdf, 3D pdf}
@end macro
+ at macro MGL
+(MGL)
+ at end macro
+ at node Overview, Examples, , Top
@include overview_ru.texi
+
+ at node Examples, MathGL core, Overview, Top
@include example_ru.texi
+
+ at node MathGL core, Plotter classes, Examples, Top
@include core_ru.texi
+
+ at node Plotter classes, Widget classes, MathGL core, Top
@include class_ru.texi
- at include mgl_ru.texi
+ at node Widget classes, mglData class, Plotter classes, Top
+ at include widget_ru.texi
+
+ at node mglData class, Other classes, Widget classes, Top
+ at include data_ru.texi
+
+ at node Other classes, MGL interface, mglData class, Top
+ at include other_ru.texi
+
+ at node MGL interface, Samples, Other classes, Top
+ at include mgl_cmd_ru.texi
+
+ at node Samples, TeX-like symbols, MGL interface, Top
@include samples_ru.texi
- at node Ð¡Ð¸Ð¼Ð²Ð¾Ð»Ñ TeX, Copying This Manual, Samples, Top
+ at node TeX-like symbols, Copying This Manual, Samples, Top
@appendix Ð¡Ð¸Ð¼Ð²Ð¾Ð»Ñ TeX
@include appendix_ru.texi
- at node Copying This Manual, ÐндекÑ, Ð¡Ð¸Ð¼Ð²Ð¾Ð»Ñ TeX, Top
+ at node Copying This Manual, Index, TeX-like symbols, Top
@appendix GNU Free Documentation License
@include fdl.texi
- at node ÐндекÑ, , Copying This Manual, Top
+ at node Index, , Copying This Manual, Top
@unnumbered ÐндекÑ
@printindex cp
diff --git a/texinfo/mgl_en.texi b/texinfo/mgl_cmd_en.texi
similarity index 63%
copy from texinfo/mgl_en.texi
copy to texinfo/mgl_cmd_en.texi
index 5a7d32a..398241a 100644
--- a/texinfo/mgl_en.texi
+++ b/texinfo/mgl_cmd_en.texi
@@ -1,12 +1,11 @@
@c ------------------------------------------------------------------
- at node MGL interface, Samples, Other classes, Top
- at chapter MGL interface
+ at chapter MGL language
-MathGL library supports (from version 1.3) the simplest scripts for data handling and plotting. These scripts can be used independently (with the help of mgl2png, mgl2eps, mgl2svg programs and others) or in the frame of the library using.
+MathGL library supports the simplest scripts for data handling and plotting. These scripts can be used independently (with the help of UDAV, mgl2png, mgl2eps, mgl2svg programs and others, @pxref{Utilities}) or in the frame of the library using.
-MGL script language is rather simple. Each string is a command. First word of string is the name of command. Other words are command arguments. Command may have up to 1000 arguments (at least for now). Words are separated from each other by space or tabulation symbol. The upper or lower case of words is sufficient, i.e. variables a and A are different variables. Symbol @samp{#} starts the comment (all characters after # will be ignored). The exception is situation when # is a part of some string. Also options can be specified at the end of string (after symbol @samp{;}, @pxref{Command options (MGL)}). Symbol @samp{:} starts new command (like new line character) if it is not placed inside a string or inside brackets.
+MGL script language is rather simple. Each string is a command. First word of string is the name of command. Other words are command arguments. Command may have up to 1000 arguments (at least for now). Words are separated from each other by space or tabulation symbol. The upper or lower case of words is sufficient, i.e. variables @var{a} and @var{A} are different variables. Symbol @samp{#} starts the comment (all characters after # will be ignored). The exception is situation when @samp{#} is a part of some string. Also options can be specified after symbol @samp{;} (@pxref{Command options @MGL{}}). Symbol @samp{:} starts new command (like new line character) if it is not placed inside a string or inside brackets.
-If string contain references to external parameters (substrings @samp{$0}, @samp{$1} ... @samp{$9}) then before execution the values of parameter will be substituted instead of reference. It allows to use the same MGL script for different parameters (filenames, paths, condition and so on).
+If string contain references to external parameters (substrings @samp{$0}, @samp{$1} ... @samp{$9}) or definitions (substrings @samp{$a}, @samp{$b} ... @samp{$z}) then before execution the values of parameter/definition will be substituted instead of reference. It allows to use the same MGL script for different parameters (filenames, paths, condition and so on).
Argument can be a string, a variable name or a number.
@itemize @bullet
@@ -14,98 +13,153 @@ Argument can be a string, a variable name or a number.
The string is any symbols between ordinary marks @samp{'}.
@item
-Variable name is arbitrary combination of symbols (except spaces and @samp{'}) started from a letter and with length less than 64. It is possible to use sub-arrays (like in @code{subdata} command) as command argument. For example, @code{a(1)} or @code{a(1,:)} or @code{a(1,:,:)} is second row, @code{a(:,2)} or @code{a(:,2,:)} is third column, @code{a(:,:,0)} is first slice and so on. Also you can extract a part of array from m-th to n-th element by code @code{a(m:n,:,:)} or just @code{a(m:n)}.
+Usually variable have a name which is arbitrary combination of symbols (except spaces and @samp{'}) started from a letter and with length less than 64. A temporary array can be used as variable:
+ at itemize @bullet
+ at item
+sub-arrays (like in @ref{subdata} command) as command argument. For example, @code{a(1)} or @code{a(1,:)} or @code{a(1,:,:)} is second row, @code{a(:,2)} or @code{a(:,2,:)} is third column, @code{a(:,:,0)} is first slice and so on. Also you can extract a part of array from m-th to n-th element by code @code{a(m:n,:,:)} or just @code{a(m:n)}.
-If names for data columns was specified (by set_id command or in the file at string started with @code{##}) then it is possible to use any column combinations defined by formulas, like @code{a('n*w^2/exp(t)')}.
+ at item
+any column combinations defined by formulas, like @code{a('n*w^2/exp(t)')} if names for data columns was specified (by @ref{idset} command or in the file at string started with @code{##}).
-Also, any expression (without spaces) of existed variables produce temporary variable. For example, @samp{sqrt(dat(:,5)+1)} will produce temporary variable with data values equal to @code{tmp[i,j] = sqrt(dat[i,5,j]+1)}. Such variables can not be used as 1st argument for commands which create (return) the data (like @samp{new}, @samp{read}, @samp{hist} and so on).
+ at item
+any expression (without spaces) of existed variables produce temporary variable. For example, @samp{sqrt(dat(:,5)+1)} will produce temporary variable with data values equal to @code{tmp[i,j] = sqrt(dat[i,5,j]+1)}.
-Finally, you can put code for making new data inside @{@}. For example, @samp{@{sum dat 'x'@}} produce temporary variable which contain result of summation of @var{dat} along direction 'x'. This is the same array @var{tmp} as produced by command @samp{sum tmp dat 'x'}. You can use nested constructions, like @samp{@{sum @{max dat 'z'@} 'x'@}}.
+ at item
+temporary variable of higher dimensions by help of []. For example, @samp{[1,2,3]} will produce a temporary vector of 3 elements @{1, 2, 3@}; @samp{[[11,12],[21,22]]} will produce matrix 2*2 and so on. Here you can join even an arrays of the same dimensions by construction like @samp{[v1,v2,...,vn]}.
@item
-Special names @code{nan=#QNAN, pi=3.1415926..., on=1, off=0, :=-1} are treated as number if they were not redefined by user. Variables with suffixes are treated as numbers (@pxref{Suffixes}). Names defined by @code{define} command are treated as number. Also results of formulas with sizes 1x1x1 are treated as number (for example, @samp{pi/dat.nx}).
+result of code for making new data (@pxref{Make another data @MGL{}}) inside @{@}. For example, @samp{@{sum dat 'x'@}} produce temporary variable which contain result of summation of @var{dat} along direction 'x'. This is the same array @var{tmp} as produced by command @samp{sum tmp dat 'x'}. You can use nested constructions, like @samp{@{sum @{max dat 'z'@} 'x'@}}.
@end itemize
-Before the first using all variables must be defined with the help of commands, like, @code{new, var, list, copy} or @code{read}.
+Temporary variables can not be used as 1st argument for commands which create (return) the data (like @samp{new}, @samp{read}, @samp{hist} and so on).
+
+ at item
+Special names @code{nan=#QNAN, pi=3.1415926..., on=1, off=0, :=-1} are treated as number if they were not redefined by user. Variables with suffixes are treated as numbers (@pxref{Suffixes}). Names defined by @ref{define} command are treated as number. Also results of formulas with sizes 1x1x1 are treated as number (for example, @samp{pi/dat.nx}).
+ at end itemize
+Before the first using all variables must be defined with the help of commands, like, @ref{new}, @ref{var}, @ref{list}, @ref{copy}, @ref{read}, @ref{hist}, @ref{sum} and so on (@pxref{Data create @MGL{}} and @ref{Make another data @MGL{}}).
+
+Command may have several set of possible arguments (for example, @code{plot ydat} and @code{plot xdat ydat}). All command arguments for a selected set must be specified. However, some arguments can have default values. These argument are printed in [], like @code{plot ydat ['stl'='' zval=nan]}. At this, the record @code{[arg1 arg2 arg3 ...]} means @code{[arg1 [arg2 [arg3 ...]]]}, i.e. you can omit only tailing arguments if you agree with its default values. For example, @code{plot ydat '' 1} or @code{plot ydat ''} is correct, but @code{plot ydat 1} is incorrect (argument @code{'stl'} is missed).
-All MGL commands can be divided on several groups. I will use the following notation for a command description: command names are bold, strings are denoted by commas, variable names are italic, numbers are typewriter. Optional arguments are placed in square brackets and default values for them are shown. Detailed description of color, line styles, color schemes, font types, TeX-like symbols and formulas can be found in corresponding section.
+All MGL commands can be divided on several groups. I will use the following notation for a command description: command names are bold, strings are denoted by commas, variable names are italic, numbers are typewriter. Optional arguments are placed in square brackets and default values for them are shown. Detailed description of color, line styles (@pxref{Line styles}), color schemes (@pxref{Color scheme}), font types, TeX-like symbols (@pxref{Font styles}) and formulas (@pxref{Textual formulas}) can be found in corresponding section.
@menu
-* Graphics setup (MGL)::
-* Axis settings (MGL)::
-* Transformation matrix (MGL)::
-* Export to file (MGL)::
-* Primitives drawing (MGL)::
-* Text printing (MGL)::
-* Axis and Colorbar (MGL)::
-* Legend (MGL)::
-* 1D plotting (MGL)::
-* 2D plotting (MGL)::
-* 3D plotting (MGL)::
-* Dual plotting (MGL)::
-* Vector fields (MGL)::
-* Other plotting (MGL)::
-* Nonlinear fitting (MGL)::
-* Data create (MGL)::
-* Data filling (MGL)::
-* Rearrange data (MGL)::
-* File I/O (MGL)::
-* Make another data (MGL)::
-* Commands on direction (MGL)::
-* Operators (MGL)::
-* Program flow (MGL)::
-* Command options (MGL)::
+ at ifset UDAV
+* General concepts::
+ at end ifset
+* Graphics setup @MGL{}::
+* Axis settings @MGL{}::
+* Transformation matrix @MGL{}::
+* Export to file @MGL{}::
+* Primitives drawing @MGL{}::
+* Text printing @MGL{}::
+* Axis and Colorbar @MGL{}::
+* Legend @MGL{}::
+* 1D plotting @MGL{}::
+* 2D plotting @MGL{}::
+* 3D plotting @MGL{}::
+* Dual plotting @MGL{}::
+* Vector fields @MGL{}::
+* Other plotting @MGL{}::
+* Nonlinear fitting @MGL{}::
+* Data create @MGL{}::
+* Data filling @MGL{}::
+* Rearrange data @MGL{}::
+* File I/O @MGL{}::
+* Make another data @MGL{}::
+* Change data @MGL{}::
+* Operators @MGL{}::
+* Program flow @MGL{}::
+* Command options @MGL{}::
* Suffixes::
* Utilities::
@end menu
+ at c ##################################################################
+ at ifset UDAV
+ at node General concepts, , Utilities, MGL interface
+ at section General concepts
+
+The set of MathGL features is rather rich -- just the number of basic graphics types is larger than 40. Also there are functions for data handling, plot setup and so on. In spite of it I tried to keep a similar style in command names and in the order of arguments. Mostly it is used for different drawing functions.
+
+There are 4 most general (base) concepts:
+ at enumerate
+ at item
+ at strong{Every plot settings (style of lines, font, color scheme) are specified by a string.} It provides convenience for user/programmer -- short string with parameters is more comprehensible than a large set of parameters. Also it provides portability -- the strings are the same in any OS so that it is not necessary to think about argument types.
+ at item
+ at strong{All commands have ``simplified'' and ``advanced'' forms.} It is done for user</samp>’s convenience. One needs to specify only one data array in the ``simplified'' form in order to see the result. But one may set parametric dependence of coordinates and produce rather complex curves and surfaces in the ``advanced'' form. In both cases the order of function arguments is the same: first data arrays, second the string with plot parameters, and later optional arguments for plot tuning.
+ at item
+ at strong{All plots are vector plots.} The MathGL library is intended for handling scientific data which have vector nature (lines, faces, matrices and so on). As a result, vector representation is used in all cases! In addition, the vector representation allows one to scale the plot easily -- change the canvas size by a factor of 2, and the picture will be proportionally scaled.
+ at item
+ at strong{New drawing never clears things drawn already.} This, in some sense, unexpected, idea allows to create a lot of ``combined'' graphics. For example, to make a surface with contour lines one needs to call the function for surface plotting and the function for contour lines plotting (in any order). Thus the special functions for making this ``combined'' plots (as it is done in Matlab and some other plotting systems) are superfluous. Many more examples of such plots can be found in section @ref{Hints} and in home site (@uref{http://mathgl.sf.net/index.html}).
+ at end enumerate
+
+In addition to the general concepts I want to comment on some non-trivial or less commonly used general ideas -- plot positioning, axis specification and curvilinear coordinates, styles for lines, text and color scheme.
+
+ at menu
+* Coordinate axes::
+* Line styles::
+* Color scheme::
+* Font styles::
+* Textual formulas::
+ at end menu
+
+ at include concept_en.texi
+
+ at node Graphics setup @MGL{}, Axis settings @MGL{}, General concepts, MGL interface
+ at end ifset
+ at ifclear UDAV
@c ##################################################################
- at node Graphics setup (MGL), Axis settings (MGL), , MGL interface
- at section Graphics setup (MGL)
+ at node Graphics setup @MGL{}, Axis settings @MGL{}, , MGL interface
+ at end ifclear
+ at section Graphics setup @MGL{}
Coomands in this group influences on overall graphics appearance. So all of them should be placed @emph{before} any actual plotting commands.
@menu
-* Transparency (MGL)::
-* Lighting (MGL)::
-* Fog (MGL)::
-* Default sizes (MGL)::
-* Zooming (MGL)::
-* Cutting (MGL)::
-* Other settings (MGL)::
+* Transparency @MGL{}::
+* Lighting @MGL{}::
+* Fog @MGL{}::
+* Default sizes @MGL{}::
+* Zooming @MGL{}::
+* Cutting @MGL{}::
+* Other settings @MGL{}::
@end menu
@c ==================================================================
- at node Transparency (MGL), Lighting (MGL), , Graphics setup (MGL)
- at subsection Transparency (MGL)
- at cindex alpha
- at cindex alphadef
- at cindex transparent
- at cindex transptype
+ at node Transparency @MGL{}, Lighting @MGL{}, , Graphics setup @MGL{}
+ at subsection Transparency @MGL{}
-There are several commands for setup transparency. The general command is @code{alpha} which switch on/off the transparency for overall plot. It influence only for graphics which created after @code{alpha} call (with one exeption, mglGraphGL). Command @code{alphadef} specify the default value of alpha-channel. You may switch off transparency of selected plot by command @code{transparent}. Finally, command @code{transptype} set the kind of transparency. @sref{Transparent surface sample}
+There are several commands for setup transparency. The general command is @ref{alpha} which switch on/off the transparency for overall plot. It influence only for graphics which created after @ref{alpha} call. Command @ref{alphadef} specify the default value of alpha-channel. You may switch off transparency of selected plot by command @ref{transparent}. Finally, command @ref{transptype} set the kind of transparency. @sref{Transparent surface sample}
+ at cindex alpha
+ at anchor{alpha}
@deffn {MGL command} alpha @code{[val=on]}
Sets the transparency on/off. It is recommended to call this command before any plotting command. Default value is @code{off}. Use @code{transparent off} in particular plot to disable its transparency.
@end deffn
+ at cindex alphadef
+ at anchor{alphadef}
@deffn {MGL command} alphadef @code{val}
Default value of alpha channel (transparency) for all plotting commands. Initial value is 0.5.
@end deffn
+ at cindex transparent
+ at anchor{transparent}
@deffn {MGL command} transparent @code{val}
Temporary switches transparency on/off for the plot.
@end deffn
+ at cindex transptype
+ at anchor{transptype}
@deffn {MGL command} transptype @code{val}
-This command set the transparency type. Normal transparency (@samp{0}) -- below things is less visible than upper ones. It does not look well in OpenGL mode (mglGraphGL) for several surfaces. Glass-like transparency (@samp{1}) -- below and upper things are commutable and just decrease intensity of light by RGB channel. Lamp-like transparency (@samp{2}) -- below and upper things are commutable and are the source of some additional light. I recommend to set @code{alphadef 0.3} or less for lamp-like transparency.
+This command set the transparency type. Normal transparency (@samp{0}) -- below things is less visible than upper ones. Glass-like transparency (@samp{1}) -- below and upper things are commutable and just decrease intensity of light by RGB channel. Lamp-like transparency (@samp{2}) -- below and upper things are commutable and are the source of some additional light. I recommend to set @code{alphadef 0.3} or less for lamp-like transparency. @xref{Normal transparency}, @ref{Glass-like transparency}, @ref{Lamp-like transparency}.
@end deffn
@c ==================================================================
- at node Lighting (MGL), Fog (MGL), Transparency (MGL), Graphics setup (MGL)
- at subsection Lighting (MGL)
- at cindex light
- at cindex ambient
+ at node Lighting @MGL{}, Fog @MGL{}, Transparency @MGL{}, Graphics setup @MGL{}
+ at subsection Lighting @MGL{}
-There are several commands for setup lighting. The general command is @code{light} which switch on/off the lighting for overall plot. It influence only for graphics which created after @code{light} call (with one exeption, mglGraphGL). Generally MathGL support up to 10 independent light sources. But in OpenGL mode only 8 of light sources is used due to OpenGL limitations. The position, color, brightness of each light source can be set separately. By default only one light source is active. It is source number @code{0} with white color, located at top of the plot.
+There are several commands for setup lighting. The general command is @ref{light} which switch on/off the lighting for overall plot. Generally MathGL support up to 10 independent light sources. The position, color, brightness of each light source can be set separately. By default only one light source is active. It is source number @code{0} with white color, located at top of the plot.
+ at cindex light
+ at anchor{light}
@deffn {MGL command} light @code{[val=on]}
Sets the using of light on/off for overall plot. It is recommended to call this command before any plotting command. Default value is lightning off.
@end deffn
@@ -117,79 +171,92 @@ Switch on/off @var{num}-th light source separately.
The command adds a light source with identification @var{num} at position @{@var{xpos}, @var{ypos}, @var{zpos}@}. The color of light is @var{col} (white by default). The brightness of light is @var{br} which must be in range [0,1].
@end deffn
+ at cindex ambient
+ at anchor{ambient}
@deffn {MGL command} ambient @code{val}
Sets the brightness of ambient light. The value should be in range [0,1]. Initial value is 0.5.
@end deffn
@c ==================================================================
- at node Fog (MGL), Default sizes (MGL), Lighting (MGL), Graphics setup (MGL)
- at subsection Fog (MGL)
- at cindex fog
+ at node Fog @MGL{}, Default sizes @MGL{}, Lighting @MGL{}, Graphics setup @MGL{}
+ at subsection Fog @MGL{}
+ at cindex fog
+ at anchor{fog}
@deffn {MGL command} fog @code{val [dz=0.25]}
-Command imitate a fog in the plot. Fog start from relative distance @var{dz} from view point and its density growths exponentially in depth. So that the fog influence is determined by law ~ 1-exp(- at emph{val*z}). Here @emph{z} is normalized to 1 depth of the plot. If value @var{val}=@code{0} then the fog is absent. @sref{Surface in fog sample}
+Command imitate a fog in the plot. Fog start from relative distance @var{dz} from view point and its density growths exponentially in depth. So that the fog influence is determined by law ~@math{1-exp(-d*z)}. Here @emph{z} is normalized to 1 depth of the plot. If value @var{val}=@code{0} then the fog is absent. @sref{Surface in fog sample}
@end deffn
@c ==================================================================
- at node Default sizes (MGL), Zooming (MGL), Fog (MGL), Graphics setup (MGL)
- at subsection Default sizes (MGL)
- at cindex marksize
- at cindex arrowsize
- at cindex linewidth
- at cindex ticklen
- at cindex tickstl
+ at node Default sizes @MGL{}, Zooming @MGL{}, Fog @MGL{}, Graphics setup @MGL{}
+ at subsection Default sizes @MGL{}
These commands control the default (initial) values for most graphics parameters including sizes of markers, arrows, linewidth and so on. As any other settings these ones will influence only on plots created after the settings change.
+ at cindex barwidth
+ at anchor{barwidth}
@deffn {MGL command} barwidth @code{val}
Sets relative width of rectangles in @code{bars, barh, boxplot}. Default value is @code{0.7}.
@end deffn
+ at cindex marksize
+ at anchor{marksize}
@deffn {MGL command} marksize @code{val}
The size of marks. Default value is @code{1}.
@end deffn
+ at cindex arrowsize
+ at anchor{arrowsize}
@deffn {MGL command} arrowsize @code{val}
The size of arrows for lines and curves. Default value is @code{1}.
@end deffn
+ at cindex linewidth
+ at anchor{linewidth}
@deffn {MGL command} linewidth @code{val}
The variable define the base width for all lines. The value <1 is ignored. Increase of this variables is actual for large bitmap pictures. Default value is @code{1}.
@end deffn
+ at cindex ticklen
+ at anchor{ticklen}
@deffn {MGL command} ticklen @code{val} [@code{stt=1}]
The relative length of axis ticks. Default value is @code{0.1}. Parameter @var{stt}>0 set relative length of subticks which is in @code{sqrt(1+stt)} times smaller.
@end deffn
+ at cindex tickstl
+ at anchor{tickstl}
@deffn {MGL command} tickstl 'stl' ['sub'='']
The line style of axis ticks (@var{stl}) and subticks (@var{sub}). If @var{stl}='' then default style is used (@samp{k} or @samp{w} depending on transparency type). If @var{sub}='' then ticks style is used (i.e. @var{stl}).
@end deffn
@c ==================================================================
- at node Zooming (MGL), Cutting (MGL), Default sizes (MGL), Graphics setup (MGL)
- at subsection Zooming (MGL)
- at cindex plotfactor
- at cindex zoom
+ at node Zooming @MGL{}, Cutting @MGL{}, Default sizes @MGL{}, Graphics setup @MGL{}
+ at subsection Zooming @MGL{}
These commands control the overall zooming of the picture or the sub-picture. Normally you can use these variables and commands for removing ``white'' spaces around a plot.
+ at cindex plotfactor
+ at anchor{plotfactor}
@deffn {MGL command} plotfactor @code{val}
-The factor of plot size. It is not recommended to set it lower then 1.6. This is some analogue of command @code{zoom} but applied not to overall image but for each @code{inplot}. Use negative value to enable automatic @code{plotfactor} selection.
+The factor of plot size. It is not recommended to set it lower then 1.6. This is some analogue of command @ref{zoom} but applied not to overall image but for each @ref{inplot}. Use negative value to enable automatic @ref{plotfactor} selection.
@end deffn
+ at cindex zoom
+ at anchor{zoom}
@deffn {MGL command} zoom @code{x1 y1 x2 y2}
The command changes the scale of graphics that correspond to zoom in/out of the picture. After command call the current plot will be cleared and further the picture will contain plotting from its part [x1,x2]*[y1,y2]. Here picture coordinates @var{x1}, @var{x2}, @var{y1}, @var{y2} changes from 0 to 1. Use @code{zoom 0 0 1 1} to return default view.
@end deffn
@c ==================================================================
- at node Cutting (MGL), Other settings (MGL), Zooming (MGL), Graphics setup (MGL)
- at subsection Cutting (MGL)
- at cindex cut
+ at node Cutting @MGL{}, Other settings @MGL{}, Zooming @MGL{}, Graphics setup @MGL{}
+ at subsection Cutting @MGL{}
-These commands set the condition when the points are excluded (cutted) from the drawing.
+These commands set the condition when the points are excluded (cutted) from the drawing. Note, that a point with @code{nan} value(s) of coordinate or amplitude will be automatically excluded from the drawing.
+ at cindex cut
+ at anchor{cut}
@deffn {MGL command} cut @code{val}
-Determines how points outside bounding box are drawn. If it is @code{true} then points are excluded from plot (it is default) otherwise the points are projected to edges of bounding box.
+Determines how points outside bounding box are drawn. If it is @code{on} then points are excluded from plot (it is default) otherwise the points are projected to edges of bounding box.
@end deffn
@deffn {MGL command} cut @code{x1 y1 z1 x2 y2 z2}
@@ -201,81 +268,92 @@ Command set the cutting off condition by formula @var{cond}. This condition dete
@end deffn
@c ==================================================================
- at node Other settings (MGL), , Cutting (MGL), Graphics setup (MGL)
- at subsection Other settings (MGL)
- at cindex font
- at cindex rotatetext
- at cindex palette
- at cindex meshnum
- at cindex axialdir
+ at node Other settings @MGL{}, , Cutting @MGL{}, Graphics setup @MGL{}
+ at subsection Other settings @MGL{}
+ at cindex font
+ at anchor{font}
@deffn {MGL command} font 'fnt' [@code{val=6}]
-Font style for text and labels (see text). Initial style is 'fnt'='rC' give Roman font with centering. Parameter @code{val} sets the size of font for tick and axis labels. Default font size of axis labels is 1.4 times large than for tick labels. For more detail, @pxref{Font style}.
+Font style for text and labels (see text). Initial style is 'fnt'='rC' give Roman font with centering. Parameter @code{val} sets the size of font for tick and axis labels. Default font size of axis labels is 1.4 times large than for tick labels. For more detail, @pxref{Font styles}.
@end deffn
+ at cindex rotatetext
+ at anchor{rotatetext}
@deffn {MGL command} rotatetext @code{val}
Set to use or not text rotation along axis. Initial value is @code{on}.
@end deffn
+ at cindex palette
+ at anchor{palette}
@deffn {MGL command} palette 'colors'
Set the palette as selected colors. Default value is @code{'Hbgrcmyhlnqeup'}. The palette is used mostly in 1D plots for curves which styles are not specified.
@end deffn
+ at cindex meshnum
+ at anchor{meshnum}
@deffn {MGL command} meshnum @code{num}
-Sets approximate number of lines in @code{mesh, fall, grid} and also the number of hachures in @code{vect, vectc, dew} and the number of cells in @code{cloud}. By default (=0) it draws all lines/hachures/cells.
+Sets approximate number of lines in @ref{mesh}, @ref{fall}, @ref{grid} and also the number of hachures in @ref{vect}, @ref{vectc}, @ref{dew} and the number of cells in @ref{cloud}. By default (=0) it draws all lines/hachures/cells.
@end deffn
+ at cindex axialdir
+ at anchor{axialdir}
@deffn {MGL command} axialdir 'dir'
-Set direction around which curve rotated in @code{axial, torus}. Default value is 'z'.
+Set direction around which curve rotated in @ref{axial}, @ref{torus}. Default value is 'z'.
@end deffn
@c ==================================================================
- at node Axis settings (MGL), Transformation matrix (MGL), Graphics setup (MGL), MGL interface
- at section Axis settings (MGL)
- at cindex axis
- at cindex caxis
- at cindex xrange
- at cindex yrange
- at cindex zrange
- at cindex crange
- at cindex xtick
- at cindex ytick
- at cindex ztick
- at cindex ctick
- at cindex origin
- at cindex adjust
+ at node Axis settings @MGL{}, Transformation matrix @MGL{}, Graphics setup @MGL{}, MGL interface
+ at section Axis settings @MGL{}
-These large set of commands control how the axis and ticks will be drawn. Note that there is 3-step transformation of data coordinates are performed. Firstly, coordinates are projected and cutting is applied (@pxref{Cutting (MGL)}), after it transformation formulas are applied, and finally the data was normalized in bounding box.
+These large set of commands control how the axis and ticks will be drawn. Note that there is 3-step transformation of data coordinates are performed. Firstly, coordinates are projected and cutting is applied (@pxref{Cutting @MGL{}}), after it transformation formulas are applied, and finally the data was normalized in bounding box.
+ at cindex axis
+ at anchor{axis}
@deffn {MGL command} axis @code{x1 y1 x2 y2}
@deffnx {MGL command} axis @code{x1 y1 z1 x2 y2 z2}
+ at cindex ranges
+ at anchor{ranges}
@deffnx {MGL command} ranges @code{x1 x2 y1 y2 [z1=0 z2=0]}
Sets the ranges of coordinates changing. Also it sets the range for coloring (analogous to @code{caxis z1 z2}). Initial ranges are [-1, 1].
@end deffn
@deffn {MGL command} axis 'fx' 'fy' ['fz'='' 'fa'='']
-Sets the transformation formulas for curvilinear coordinates. Each string should contain mathematical expression for real coordinate depending on internal coordinates 'x', 'y', 'z' and 'a' or 'c' for colorbar. For example, the cylindrical coordinates are introduced as @code{axis 'x*cos(y)' 'x*sin(y)' 'z'}. For removing of formulas the corresponding parameter should be @code{''}. The using of transformation formulas will slightly slowing the program, i.e. @code{axis '' '' ''} is faster than @code{axis '1*x' '1*y' '1*z'}. Initially all formulas are absent (Cartesian coordinates are used). For more details about functions and formulas, @pxref{mglFormula class}.
+Sets the transformation formulas for curvilinear coordinates. Each string should contain mathematical expression for real coordinate depending on internal coordinates @samp{x}, @samp{y}, @samp{z} and @samp{a} or @samp{c} for colorbar. For example, the cylindrical coordinates are introduced as @code{axis 'x*cos(y)' 'x*sin(y)' 'z'}. For removing of formulas the corresponding parameter should be @code{''}. The using of transformation formulas will slightly slowing the program, i.e. @code{axis '' '' ''} is faster than @code{axis '1*x' '1*y' '1*z'}. Initially all formulas are absent (Cartesian coordinates are used). For more details about functions and formulas, @pxref{Textual formulas}.
@end deffn
@deffn {MGL command} axis @code{how}
-Sets one of the predefined transformation formulas for curvilinear coordinate. Paramater @var{how} define the coordinates: @code{0} -- Cartesian coordinates (no transformation); @code{1} -- Polar coordiantes @math{x_n=x*cos(y),y_n=x*sin(y), z_n=z}; @code{2} -- Spherical coordinates @math{x_n=x*sin(y)*cos(z), y_n=x*sin(y)*sin(z), z_n=x*cos(y)}; @code{3} -- Parabolic coordinates @math{x_n=x*y, y_n=(x*x-y*y)/2, z_n=z}; @code{4} -- Paraboloidal coordinates @math{x_n=(x*x-y*y)*cos(z)/2, y_n=(x*x-y*y)*sin(z)/2, z_n=x*y}; @code{5} -- Oblate coordinates @math{x_n=cosh(x)*cos(y)*cos(z), y_n=cosh(x)*cos(y)*sin(z), z_n=sinh(x)*sin(y)}; @code{6} -- Prolate coordinates @math{x_n=sinh(x)*sin(y)*cos(z), y_n=sinh(x)*sin(y)*sin(z), z_n=cosh(x)*cos(y)}; @code{7} -- Elliptic coordinates @math{x_n=cosh(x)*cos(y), y_n=sinh(x)*sin(y), z_n=z}; @code{8} -- Toroidal coordinates @math{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))}; @code{9} -- Bispherical coordinates @math{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))}; @code{10} -- Bipolar coordinates @math{x_n=sinh(x)/(cosh(x)-cos(y)), y_n=sin(y)/(cosh(x)-cos(y)), z_n=z}.
+Sets one of the predefined transformation formulas for curvilinear coordinate. Paramater @var{how} define the coordinates: @samp{0} -- Cartesian coordinates (no transformation); @samp{1} -- Polar coordiantes @math{x_n=x*cos(y),y_n=x*sin(y), z_n=z}; @samp{2} -- Spherical coordinates @math{x_n=x*sin(y)*cos(z), y_n=x*sin(y)*sin(z), z_n=x*cos(y)}; @samp{3} -- Parabolic coordinates @math{x_n=x*y, y_n=(x*x-y*y)/2, z_n=z}; @samp{4} -- Paraboloidal coordinates @math{x_n=(x*x-y*y)*cos(z)/2, y_n=(x*x-y*y)*sin(z)/2, z_n=x*y}; @samp{5} -- Oblate coordinates @math{x_n=cosh(x)*cos(y)*cos(z), y_n=cosh(x)*cos(y)*sin(z), z_n=sinh(x)*sin(y)}; @samp{6} -- Prolate coordinates @math{x_n=sinh(x)*sin(y)*cos(z), y_n=sinh(x)*sin(y)*sin(z), z_n=cosh(x)*cos(y)}; @samp{7} -- Elliptic coordinates @math{x_n=cosh(x)*cos(y), y_n=sinh(x)*sin(y), z_n=z}; @samp{8} -- Toroidal coordinates @math{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))}; @samp{9} -- Bispherical coordinates @math{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))}; @samp{10} -- Bipolar coordinates @math{x_n=sinh(x)/(cosh(x)-cos(y)), y_n=sin(y)/(cosh(x)-cos(y)), z_n=z}.
@end deffn
+ at cindex caxis
+ at anchor{caxis}
@deffn {MGL command} caxis @code{z1 z2}
Sets the range for surface coloring. Initial range is [-1, 1].
@end deffn
+ at cindex origin
+ at anchor{origin}
@deffn {MGL command} origin @code{x0 y0 [z0=nan]}
Center of axis cross section. If one of values is @code{nan} then MathGL library try to select optimal axis position.
@end deffn
+ at cindex ternary
+ at anchor{ternary}
@deffn {MGL command} ternary @code{val}
The command sets to draws Ternary plot. This special plot is for 3 dependent coordinates (components) @var{a}, @var{b}, @var{c} so that @var{a}+ at var{b}+ at var{c}=1. MathGL uses only 2 independent coordinates @var{a}=x and @var{b}=y since it is enough to plot everything. At this third coordinate z act as another parameter to produce contour lines, surfaces and so on. @sref{Ternary plot sample}
@end deffn
+ at cindex xrange
+ at anchor{xrange}
@deffn {MGL command} xrange dat [@code{add=off fact=0}]
+ at cindex yrange
+ at anchor{yrange}
@deffnx {MGL command} yrange dat [@code{add=off fact=0}]
+ at cindex zrange
+ at anchor{zrange}
@deffnx {MGL command} zrange dat [@code{add=off fact=0}]
+ at cindex crange
+ at anchor{crange}
@deffnx {MGL command} crange dat [@code{add=off fact=0}]
Sets the range for x-,y-,z- coordinate or coloring as minimal and maximal values of data @var{dat}. Parameter @code{add=on} shows that the new range will be joined to existed one (nut will not replace it). Parameter @var{fact} add additional range increase on value (@var{Max}- at var{Min})*@var{fact}.
@end deffn
@@ -284,14 +362,22 @@ Sets the range for x-,y-,z- coordinate or coloring as minimal and maximal values
@deffnx {MGL command} yrange @code{x1 x2}
@deffnx {MGL command} zrange @code{x1 x2}
@deffnx {MGL command} crange @code{x1 x2}
-Sets the range for x-,y-,z- coordinate or coloring. See also axis.
+Sets the range for x-,y-,z- coordinate or coloring. See also @ref{axis}.
@end deffn
+ at cindex xtick
+ at anchor{xtick}
@deffn {MGL command} xtick @code{val [sub=0 org=nan]}
+ at cindex ytick
+ at anchor{ytick}
@deffnx {MGL command} ytick @code{val [sub=0 org=nan]}
+ at cindex ztick
+ at anchor{ztick}
@deffnx {MGL command} ztick @code{val [sub=0 org=nan]}
+ at cindex ctick
+ at anchor{ctick}
@deffnx {MGL command} ctick @code{val}
-Sets step for x-, y-, z-axis ticks or colorbar ticks (if @var{val}>0) or it's number (if @var{val}<0) in corresponding direction. Zero value @var{val}=0 sets logarithmic ticks. Parameter @var{sub} sets the number of sub-ticks. Parameter @var{org} set the starting points for ticks. If not @code{org=nan} then the value from @code{origin} is used.
+Sets step for x-, y-, z-axis ticks or colorbar ticks (if @var{val}>0) or it's number (if @var{val}<0) in corresponding direction. Zero value @var{val}=0 sets logarithmic ticks. Parameter @var{sub} sets the number of sub-ticks. Parameter @var{org} set the starting points for ticks. If not @code{org=nan} then the value from @ref{origin} is used.
@end deffn
@deffn {MGL command} xtick 'templ'
@@ -307,39 +393,49 @@ Sets the template for x-, y-, z-axis ticks or colorbar ticks. It may contain TeX
Sets manual positions @var{val1}, at var{val2},... and labels @var{lbl1}, at var{lbl2},... for ticks along x-, y-, z-axis. Labels may contain TeX symbols also.
@end deffn
+ at cindex adjust
+ at anchor{adjust}
@deffn {MGL command} adjust ['dir'='xyzc']
Set the ticks step, number of sub-ticks and initial ticks position to be the most human readable for the axis along direction(s) @var{dir}.
@end deffn
@c ##################################################################
- at node Transformation matrix (MGL), Export to file (MGL), Axis settings (MGL), MGL interface
- at section Transformation matrix (MGL)
- at cindex aspect
- at cindex rotate
- at cindex subplot
- at cindex inplot
- at cindex identity
- at cindex perspective
+ at node Transformation matrix @MGL{}, Export to file @MGL{}, Axis settings @MGL{}, MGL interface
+ at section Transformation matrix @MGL{}
-These commands control how and where further plotting will be placed. There is a curtain order of calling of these commands for the better plot view. First one should be @code{subplot} or @code{inplot} for specifying the place. After it a @code{rotate} and @code{aspect}. And finally any other plotting commands may be called. Alternatevely you can use @code{columnplot} for position plots in the column one by another without gap between plot axis (bounding boxes).
+These commands control how and where further plotting will be placed. There is a curtain order of calling of these commands for the better plot view. First one should be @ref{subplot} or @ref{inplot} for specifying the place. After it a @ref{rotate} and @ref{aspect}. And finally any other plotting commands may be called. Alternatevely you can use @ref{columnplot} for position plots in the column one by another without gap between plot axis (bounding boxes).
+ at cindex subplot
+ at anchor{subplot}
@deffn {MGL command} subplot @code{nx ny m [dx=0 dy=0]}
Puts further plotting in a @var{m}-th cell of @var{nx}*@var{ny} grid of the whole frame area. This command set off any aspects or rotations. So it should be used first for creating the subplot. From the aesthetical point of view it is not recommended to use this command with different matrices in the same frame. The position of the cell can be shifted from its default position by relative size @var{dx}, @var{dy}.
@end deffn
+ at deffn {MGL command} subplot @code{nx ny m} 'style'
+The same as previous but space reserved for axis/colorbar is saved only if @var{style} contain: @samp{L} or @samp{<} -- at left side, @samp{R} or @samp{>} -- at right side, @samp{A} or @samp{^} -- at top side, @samp{U} or @samp{_} -- at bottom side.
+ at end deffn
+
+ at cindex inplot
+ at anchor{inplot}
@deffn {MGL command} inplot @code{x1 x2 y1 y2 [rel=off]}
-Puts further plotting in some region of the whole frame surface. This command allows one to create a plot in arbitrary place of the screen. The position is defined by rectangular coordinates [@var{x1}, @var{x2}]*[@var{y1}, @var{y2}]. The coordinates @var{x1}, @var{x2}, @var{y1}, @var{y2} are normalized to interval [0, 1]. If parameter @var{rel}=@code{on} then the relative position to current @code{subplot} is used. This command set off any aspects or rotations. So it should be used first for creating subplot.
+Puts further plotting in some region of the whole frame surface. This command allows one to create a plot in arbitrary place of the screen. The position is defined by rectangular coordinates [@var{x1}, @var{x2}]*[@var{y1}, @var{y2}]. The coordinates @var{x1}, @var{x2}, @var{y1}, @var{y2} are normalized to interval [0, 1]. If parameter @var{rel}=@code{on} then the relative position to current @ref{subplot} is used. This command set off any aspects or rotations. So it should be used first for creating subplot.
@end deffn
- at deffn {MGL command} columnplot @code{num ind}
-Puts further plotting in @var{ind}-th cell of column with @var{num} cells. The position is relative to previous @code{subplot} call (or @code{inplot} with @code{rel=off}).
+ at cindex columnplot
+ at anchor{columnplot}
+ at deffn {MGL command} columnplot @code{num ind [d=0]}
+Puts further plotting in @var{ind}-th cell of column with @var{num} cells. The position is relative to previous @ref{subplot} call (or @ref{inplot} with @code{rel=off}). Parameter @var{d} set extra gap between cells.
@end deffn
+ at cindex stickplot
+ at anchor{stickplot}
@deffn {MGL command} stickplot @code{num ind tet phi}
-Puts further plotting in @var{ind}-th cell of stick with @var{num} cells. At this, stick is rotated on angles @var{tet}, @var{phi}. The position is relative to previous @code{subplot} call (or @code{inplot} with @code{rel=off}).
+Puts further plotting in @var{ind}-th cell of stick with @var{num} cells. At this, stick is rotated on angles @var{tet}, @var{phi}. The position is relative to previous @ref{subplot} call (or @ref{inplot} with @code{rel=off}).
@end deffn
+ at cindex rotate
+ at anchor{rotate}
@deffn {MGL command} rotate @code{tetz tetx [tety=0]}
Rotates a further plotting relative to each axis (x, z, y) consecutively on angles @var{tetx}, @var{tetz}, @var{tety}.
@end deffn
@@ -348,98 +444,115 @@ Rotates a further plotting relative to each axis (x, z, y) consecutively on angl
Rotates a further plotting around vector @{x,y,z@} on angle @var{tet}.
@end deffn
+ at cindex aspect
+ at anchor{aspect}
@deffn {MGL command} aspect @code{ax ay [az=1]}
-Defines aspect ratio for the plot. The viewable axes will be related one to another as the ratio @var{ax:ay:az}. For the best effect it should be used after @code{rotate} command.
+Defines aspect ratio for the plot. The viewable axes will be related one to another as the ratio @var{ax:ay:az}. For the best effect it should be used after @ref{rotate} command.
@end deffn
+ at cindex perspective
+ at anchor{perspective}
@deffn {MGL command} perspective @code{val}
Add (switch on) the perspective to plot. The parameter @math{val ~ 1/z_@{eff@} \in [0,1)}. By default (@code{val=0}) the perspective is off.
@end deffn
@c ##################################################################
- at node Export to file (MGL), Primitives drawing (MGL), Transformation matrix (MGL), MGL interface
- at section Export to file (MGL)
- at cindex write
- at cindex setsize
+ at node Export to file @MGL{}, Primitives drawing @MGL{}, Transformation matrix @MGL{}, MGL interface
+ at section Export to file @MGL{}
+ at cindex write
+ at anchor{write}
@deffn {MGL command} write 'fname' [@code{solid=off}]
Exports current picture/frame to file 'fname' (file type is determined by extension). Solid (usually white) background will be used if @code{solid=on}. If 'fname'='' then the file @samp{frameNNNN.jpg} is used, where @samp{NNNN} is current frame id.
@end deffn
+ at cindex setsize
+ at anchor{setsize}
@deffn {MGL command} setsize @code{w h}
Sets size of picture in pixels. This function call @strong{must be} placed before any plotting command because it completely remove picture content. In some program the call of this function is forbidden.
@end deffn
@c ##################################################################
- at node Primitives drawing (MGL), Text printing (MGL), Export to file (MGL), MGL interface
+ at node Primitives drawing @MGL{}, Text printing @MGL{}, Export to file @MGL{}, MGL interface
@section Primitives drawing
- at cindex ball
- at cindex clf
- at cindex line
- at cindex curve
- at cindex facex
- at cindex facey
- at cindex facez
- at cindex cone
- at cindex drop
- at cindex sphere
These commands draw some simple objects like line, point, sphere, drop, cone and so on.
+ at cindex clf
+ at anchor{clf}
@deffn {MGL command} clf
Clear the picture by removes all drawing from it. Does not change transformation matrix.
@end deffn
+ at cindex ball
+ at anchor{ball}
@deffn {MGL command} ball @code{x y} ['col'='r']
@deffnx {MGL command} ball @code{x y z} ['col'='r']
Draws a point (ball) at position @{@var{x}, @var{y}, @var{z}@} with color defined by string @var{col}.
@end deffn
+ at cindex line
+ at anchor{line}
@deffn {MGL command} line @code{x1 y1 x2 y2} ['stl'='']
@deffnx {MGL command} line @code{x1 y1 z1 x2 y2 z2} ['stl'='']
Draws a geodesic line (straight line in Cartesian coordinates) from point @{@var{x1}, at var{y1}, at var{z1}@} to @{@var{x2}, at var{y2}, at var{z2}@} using line style @var{stl}.
@end deffn
+ at cindex curve
+ at anchor{curve}
@deffn {MGL command} curve @code{x1 y1 dx1 dy1 x2 y2 dx2 dy2} ['stl'='']
@deffnx {MGL command} curve @code{x1 y1 z1 dx1 dy1 dz1 x2 y2 z2 dx2 dy2 dz2} ['stl'='']
Draws Bezier-like curve from point @{@var{x1}, at var{y1}, at var{z1}@} to @{@var{x2}, at var{y2}, at var{z2}@} using line style @var{stl}. At this tangent is co-directed with @{@var{dx1}, at var{dy1}, at var{dz1}@}, @{@var{dx2}, at var{dy2}, at var{dz2}@} and proportional to its amplitude.
@end deffn
+ at cindex facex
+ at anchor{facex}
@deffn {MGL command} facex @code{x0 y0 z0 wy wz} ['stl'='' @code{d1=0 d2=0}]
+ at cindex facey
+ at anchor{facey}
@deffnx {MGL command} facey @code{x0 y0 z0 wx wz} ['stl'='' @code{d1=0 d2=0}]
+ at cindex facez
+ at anchor{facez}
@deffnx {MGL command} facez @code{x0 y0 z0 wx wy} ['stl'='' @code{d1=0 d2=0}]
Draws the solid rectangle (face) perpendicular to [x,y,z]-axis correspondingly at position @{@var{x0}, @var{y0}, @var{z0}@} with color @var{stl} and with widths @var{wx}, @var{wy}, @var{wz} along corresponding directions. At this colors can be the same for all vertexes or different if all 4 colors are specified for each vertex. Parameters @var{d1}!=0, @var{d2}!=0 set additional shift of the last vertex (i.e. to draw quadrangle).
@end deffn
+ at cindex sphere
+ at anchor{sphere}
@deffn {MGL command} sphere @code{x0 y0 r} ['col'='r']
@deffnx {MGL command} sphere @code{x0 y0 z0 r} ['col'='r']
Draw the sphere with radius @var{r} and center at point @{@var{x0}, @var{y0}, @var{z0}@} and color @var{stl}.
@end deffn
+ at cindex drop
+ at anchor{drop}
@deffn {MGL command} drop @code{x0 y0 dx dy r} ['col'='b' @code{sh=1 asp=1}]
@deffnx {MGL command} drop @code{x0 y0 z0 dx dy dz r} ['col'='b' @code{sh=1 asp=1}]
Draw the drop with radius @var{r} at point @{@var{x0}, at var{y0}, at var{z0}@} elongated in direction @{@var{dx}, at var{dy}, at var{dz}@} and with color @var{col}. Parameter @var{sh} set the degree of drop oblongness: @samp{0} is sphere, @samp{1} is maximally oblongness drop. Parameter @var{asp} set relative width of the drop (this is analogue of ``ellipticity'' for the sphere). @sref{Drops sample}
@end deffn
- at deffn {MGL command} cone @code{x1 y1 z1 x2 y2 z2 r1} [@code{r2=-1} 'st'='' @code{edge=off}]
+ at cindex cone
+ at anchor{cone}
+ at deffn {MGL command} cone @code{x1 y1 z1 x2 y2 z2 r1} [@code{r2=-1} 'stl'='' @code{edge=off}]
Draw tube (or truncated cone if @var{edge}=@code{off}) between points @{@var{x1}, at var{y1}, at var{z1}@}, @{@var{x2}, at var{y2}, at var{z2}@} with radiuses at the edges @var{r1}, @var{r2}. If @var{r2}<0 then it is supposed that @var{r2}=@var{r1}. The cone color is defined by string @var{stl}.
@end deffn
+ at cindex rect
+ at anchor{rect}
@deffn {MGL command} rect @code{x1 y1 x2 y2} ['st'='']
@deffnx {MGL command} rect @code{x1 y1 z1 x2 y2 z2} ['st'='']
Draw rectangle from point @{@var{x1}, at var{y1}, at var{z1}@} to point @{@var{x2}, at var{y2}, at var{z2}@} using colors @var{stl}. If @var{stl} have 4 or more colors then it defines colors for each rectangle vertex (useful for making gradients, like @samp{wwrr}) else first color is used for whole rectangle.
@end deffn
@c ##################################################################
- at node Text printing (MGL), Axis and Colorbar (MGL), Primitives drawing (MGL), MGL interface
- at section Text printing (MGL)
- at cindex fgets
- at cindex text
- at cindex title
+ at node Text printing @MGL{}, Axis and Colorbar @MGL{}, Primitives drawing @MGL{}, MGL interface
+ at section Text printing @MGL{}
-These commands draw the text. There are commands for drawing text in arbitrary place, in arbitrary direction and along arbitrary curve. It is possible to use arbitrary font-faces and parse many TeX commands. The Unicode text is supported. So sometimes you need to specify locale. The @code{size} argument control the size of text: if positive it give the value, if negative it give the value relative to defined by @code{font} command. @xref{Font style}.
+These commands draw the text. There are commands for drawing text in arbitrary place, in arbitrary direction and along arbitrary curve. It is possible to use arbitrary font-faces and parse many TeX commands. The Unicode text is supported. So sometimes you need to specify locale. The @code{size} argument control the size of text: if positive it give the value, if negative it give the value relative to defined by @code{font} command. @xref{Font styles}.
+ at cindex text
+ at anchor{text}
@deffn {MGL command} text @code{x y} 'text' ['fnt'='' @code{size=-1.4}]
@deffnx {MGL command} text @code{x y z} 'text' ['fnt'='' @code{size=-1.4}]
Draws unrotated text string @var{text} at position @{@var{x}, at var{y}, at var{z}@} with specified style @var{fnt} and @var{size}. By default parameters from @code{font} command are used.
@@ -450,275 +563,315 @@ Draws unrotated text string @var{text} at position @{@var{x}, at var{y}, at var{z}@} w
The command plots the string @var{text} at position @{@var{x}, at var{y}, at var{z}@} along direction @{@var{dx}, at var{dy}, at var{dz}@} with specified style @var{fnt} and @var{size}. By default parameters from @code{font} command are used.
@end deffn
+ at deffn {MGL command} text ydat 'text' ['fnt'='' @code{size=-1 zval=nan}]
+ at deffnx {MGL command} text xdat ydat 'text' ['fnt'='' @code{size=-1 zval=nan}]
+ at deffnx {MGL command} text xdat ydat zdat 'text' ['fnt'='' @code{size=-1}]
+The command draws @var{text} along the curve between points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} by font style @var{fnt} and with size @var{size}. The string @var{fnt} may contain symbols @samp{t} for printing the text under the curve (default), or @samp{T} for printing the text above the curve. The sizes of 1st dimension must be equal for all arrays @var{xdat.nx=ydat.nx=zdat.nx}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{z}[i] = @var{zval} is used. @sref{Text sample}
+ at end deffn
+
+ at cindex title
+ at anchor{title}
@deffn {MGL command} title 'text' ['fnt'='' @code{size=-2}]
-Print string @var{text} as title of the picture (at the top of the picture). Can be used at any place (even inside @code{subplot}).
+Print string @var{text} as title of the picture (at the top of the picture). Can be used at any place (even inside @ref{subplot}).
@end deffn
+ at cindex fgets
+ at anchor{fgets}
@deffn {MGL command} fgets @code{x y} 'fname' [@code{n=0} 'fnt'='' @code{size=-1.4}]
@deffnx {MGL command} fgets @code{x y z} 'fname' [@code{n=0} 'fnt'='' @code{size=-1.4}]
-Draws unrotated @var{n}-th line of file @var{fname} at position @{@var{x}, at var{y}, at var{z}@} with specified @var{size}. By default parameters from @code{font} command are used.
+Draws unrotated @var{n}-th line of file @var{fname} at position @{@var{x}, at var{y}, at var{z}@} with specified @var{size}. By default parameters from @ref{font} command are used.
@end deffn
- at deffn {MGL command} text xdat 'text' ['fnt'='' @code{size=-1 zval=nan}]
- at deffnx {MGL command} text xdat ydat 'text' ['fnt'='' @code{size=-1 zval=nan}]
- at deffnx {MGL command} text xdat ydat zdat 'text' ['fnt'='' @code{size=-1}]
-The command draws @var{text} along the curve between points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} by font style @var{fnt} and with size @var{size}. The string @var{fnt} may contain symbols @samp{t} for printing the text under the curve (default), or @samp{T} for printing the text above the curve. The sizes of 1st dimension must be equal for all arrays @var{xdat.nx=ydat.nx=zdat.nx}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{z}[i] = @var{zval} is used. @sref{Text sample}
- at end deffn
-
@c ##################################################################
- at node Axis and Colorbar (MGL), Legend (MGL), Text printing (MGL), MGL interface
- at section Axis and Colorbar (MGL)
- at cindex axis
- at cindex box
- at cindex grid
- at cindex colorbar
- at cindex xlabel
- at cindex ylabel
- at cindex zlabel
- at cindex tlabel
+ at node Axis and Colorbar @MGL{}, Legend @MGL{}, Text printing @MGL{}, MGL interface
+ at section Axis and Colorbar @MGL{}
-These commands draw the ``things for measuring'', like axis with ticks, colorbar with ticks, grid along axis, bounding box and labels for axis. For more information @pxref{Axis settings (MGL)}.
+These commands draw the ``things for measuring'', like axis with ticks, colorbar with ticks, grid along axis, bounding box and labels for axis. For more information @pxref{Axis settings @MGL{}}.
+ at cindex axis
+ at c @anchor{}
@deffn {MGL command} axis ['dir'='xyz' @code{adjust=off}]
-Draws axes with ticks (@pxref{Axis settings (MGL)}) in directions determined by string parameter @var{dir}.If string contain the symbol @samp{_} then tick labels are not printed. Font for ticks labels is determined by command @code{font}. Ticks will be automatically adjusted if @var{adjust}=@code{on} (by call of @code{adjust 'dir'}).
+Draws axes with ticks (@pxref{Axis settings @MGL{}}) in directions determined by string parameter @var{dir}.If string contain the symbol @samp{_} then tick labels are not printed. Font for ticks labels is determined by command @ref{font}. Ticks will be automatically adjusted if @var{adjust}=@code{on} (by call of @code{adjust 'dir'}).
@end deffn
+ at cindex colorbar
+ at anchor{colorbar}
@deffn {MGL command} colorbar ['sch'='' @code{pos=0}]
-Draws colorbar with color scheme @var{sch} (current scheme if @code{sch=''}) at edge of plot. Parameter @var{pos} specifies the position of colorbar: @samp{0} - at right (default), @samp{1} - at left, @samp{2} - at top, @samp{3} - at bottom. @sref{Dens sample}
+Draws colorbar with color scheme @var{sch} (current scheme if @code{sch=''}) at edge of plot. Parameter @var{pos} specifies the position of colorbar: @samp{0} - at right (default), @samp{1} - at left, @samp{2} - at top, @samp{3} - at bottom. If string @var{sch} contains @samp{<>^_} then the parameter @var{pos} is defined as: @code{pos=0} for @samp{>} (right), @code{pos=1} for @samp{<} (left), @code{pos=2} for @samp{^} (top), @code{pos=3} for @samp{_} (bottom). If string have @samp{A} then absolute (relative to picture) coordinates is used. @sref{Dens sample}
@end deffn
- at deffn {MGL command} colorbar 'sch' @code{pos x y w h}
-Draws colorbar with color scheme @var{sch} (current scheme if not specified) at arbitrary position of subplot @{@var{x}, @var{y}@} (supposed to be in range [0,1]). Parameter @var{pos} specifies the position of colorbar labels: @samp{0} - at left, @samp{1} - at right, @samp{2} - at bottom, @samp{3} - at top. Parameters @var{w}, @var{h} set the relative width and height of the colorbar.
+ at deffn {MGL command} colorbar vdat ['sch'='' @code{pos=0}]
+The same as previous but with sharp colors @var{sch} (current palette if @code{sch=""}) for values @var{v}. @sref{ContD sample}
@end deffn
- at deffn {MGL command} colorbar vdat ['sch'='' @code{pos=0}]
-Draws colorbar with sharp colors @var{sch} (current palette if @code{sch=NULL}) for values @var{vdat} at edge of plot. Parameter @var{pos} specifies the position of colorbar: @samp{0} - at right (default), @samp{1} - at left, @samp{2} - at top, @samp{3} - at bottom. @sref{Dens sample}
+ at deffn {MGL command} colorbar 'sch' @code{pos x y w h}
+The same as first one but at arbitrary position of subplot @{@var{x}, @var{y}@} (supposed to be in range [0,1]). Parameters @var{w}, @var{h} set the relative width and height of the colorbar.
@end deffn
+ at cindex grid
+ at anchor{grid}
@deffn {MGL command} grid ['dir'='xyz' 'pen'='B']
Draws grid lines perpendicular to direction determined by string parameter @var{dir}. The step of grid lines is the same as tick step for an @code{axis}. The style of lines is determined by @var{pen} parameter.
@end deffn
+ at cindex box
+ at anchor{box}
@deffn {MGL command} box ['stl'='k' @code{ticks=on}]
-Draws bounding box outside the plotting volume with line style 'stl'.
+Draws bounding box outside the plotting volume with line style 'stl'. If @code{ticks=on} then ticks are drawn with current axis setting.
@end deffn
- at deffn {MGL command} xlabel 'text' [@code{pos=1 size=-1.4 shift=0}]
- at deffnx {MGL command} ylabel 'text' [@code{pos=1 size=-1.4 shift=0}]
- at deffnx {MGL command} zlabel 'text' [@code{pos=1 size=-1.4 shift=0}]
- at deffnx {MGL command} tlabel 'text' [@code{pos=1 size=-1.4 shift=0}]
-Prints the label @var{text} for x-,y-,z-,t-axis (here @samp{t} is ``ternary'' axis @math{t=1-x-y}). The position of label is determined by @var{pos} parameter. If @var{pos}=0 then label is printed at the center of axis. If @var{pos}>0 then label is printed at the maximum of axis (default). If @var{pos}<0 then label is printed at the minimum of axis. The font size is 1.4 times larger than the one for ticks @code{font}. Parameter @code{shift} specify additional shifting of the label. @xref{Text printing (MGL)}.
+ at cindex xlabel
+ at anchor{xlabel}
+ at deffn {MGL command} xlabel 'text' [@code{pos=0 size=-1.4 shift=0}]
+ at cindex ylabel
+ at anchor{ylabel}
+ at deffnx {MGL command} ylabel 'text' [@code{pos=0 size=-1.4 shift=0}]
+ at cindex zlabel
+ at anchor{zlabel}
+ at deffnx {MGL command} zlabel 'text' [@code{pos=0 size=-1.4 shift=0}]
+ at cindex tlabel
+ at anchor{tlabel}
+ at deffnx {MGL command} tlabel 'text' [@code{pos=0 size=-1.4 shift=0}]
+Prints the label @var{text} for x-,y-,z-,t-axis (here @samp{t} is ``ternary'' axis @math{t=1-x-y}). The position of label is determined by @var{pos} parameter. If @var{pos}=0 then label is printed at the center of axis. If @var{pos}>0 then label is printed at the maximum of axis (default). If @var{pos}<0 then label is printed at the minimum of axis. The font size is 1.4 times larger than the one for ticks @code{font}. Parameter @code{shift} specify additional shifting of the label. @xref{Text printing @MGL{}}.
@end deffn
@c ##################################################################
- at node Legend (MGL), 1D plotting (MGL), Axis and Colorbar (MGL), MGL interface
- at section Legend (MGL)
- at cindex legend
- at cindex addlegend
- at cindex clearlegend
+ at node Legend @MGL{}, 1D plotting @MGL{}, Axis and Colorbar @MGL{}, MGL interface
+ at section Legend @MGL{}
-These commands draw legend to the graph (useful for @ref{1D plotting (MGL)}). Legend entry is a pair of strings: one for style of the line, another one with description text (with included LaTeX parsing). The array of string are accumulated first to the internal arrays (by command @code{addlegend}) and are plotted later. The position of the legend can be selected automatic or manually. Parameters @var{fnt} and @var{size} specify the font style and size. Parameter @var{llen} set the relative width of the line sample and the text indent (default value is 0.1). If line style string for entry is empty then the corresponding text is printed without indent. @sref{Legend sample}
+These commands draw legend to the graph (useful for @ref{1D plotting @MGL{}}). Legend entry is a pair of strings: one for style of the line, another one with description text (with included LaTeX parsing). The array of string are accumulated first to the internal arrays (by command @ref{addlegend}) and are plotted later. The position of the legend can be selected automatic or manually. Parameters @var{fnt} and @var{size} specify the font style and size. Parameter @var{llen} set the relative width of the line sample and the text indent (default value is 0.1). If line style string for entry is empty then the corresponding text is printed without indent. If string contains @samp{A} then legend coordinates set position in the picture. @sref{Legend sample}
+ at cindex legend
+ at anchor{legend}
@deffn {MGL command} legend [@code{pos=3} 'fnt'='rL' @code{size=-1 llen=0.1}]
Draws legend of accumulated legend entries by font @var{fnt} with specified @var{size}. Parameter @var{pos} sets the position of the legend: @samp{0} is bottom left corner, @samp{1} is bottom right corner, @samp{2} is top left corner, @samp{3} is top right corner (is default).
@end deffn
@deffn {MGL command} legend @code{x y} ['fnt'='rL' @code{size=-1 llen=0.1}]
-Draws legend of accumulated legend entries by font @var{fnt} with @var{size}. Position of legend is determined by parameter @var{x}, @var{y} which supposed to be normalized to interval [0,1].
+Draws legend of accumulated legend entries by font @var{fnt} with @var{size}. Position of legend in the current subplot is determined by parameter @var{x}, @var{y} which supposed to be normalized to interval [0,1].
@end deffn
+ at cindex addlegend
+ at anchor{addlegend}
@deffn {MGL command} addlegend 'text' 'stl'
Adds string @var{text} to internal legend accumulator. The style of described line and mark is specified in string @var{stl} (@pxref{Line styles}). Maximal number of entries is 100.
@end deffn
+ at cindex clearlegend
+ at anchor{clearlegend}
@deffn {MGL command} clearlegend
Clears saved legend strings.
@end deffn
+ at cindex legendbox
+ at anchor{legendbox}
@deffn {MGL command} legendbox @code{val}
Switches on/off the drawing of a box near legend. By default, the box is drawn.
@end deffn
-
+ at cindex legendmarks
+ at anchor{legendmarks}
+ at deffn {MGL command} legendmarks @code{val}
+Set the number of marks in the legend. By default 1 mark is used.
+ at end deffn
@c ##################################################################
- at node 1D plotting (MGL), 2D plotting (MGL), Legend (MGL), MGL interface
- at section 1D plotting (MGL)
- at cindex plot
- at cindex tens
- at cindex area
- at cindex bars
- at cindex barh
- at cindex stem
- at cindex step
- at cindex torus
- at cindex chart
- at cindex mark
- at cindex textmark
- at cindex error
- at cindex tube
- at cindex region
+ at node 1D plotting @MGL{}, 2D plotting @MGL{}, Legend @MGL{}, MGL interface
+ at section 1D plotting @MGL{}
-These commands perform plotting of 1D data. 1D means that data depended from only 1 parameter like parametric curve @{x(i),y(i),z(i)@}, i=1...n. Most of plotting type has similar interface. There are 3D version and two 2D versions. One of last requires single array. The parameters of line and marks are specified by the string argument. If the string parameter is NULL then solid line with color from palette Pal is used (@pxref{Palette and colors}). Also there are some special 1d plots having slightly different interface: surface of curve rotation (Torus), chart (Chart) and error boxes (Error), marks with variable size (Mark), tubes (Tube) and so on. @xref{Line styles}.
+These commands perform plotting of 1D data. 1D means that data depended from only 1 parameter like parametric curve @{x(i),y(i),z(i)@}, i=1...n. There are 5 generally different types of data representations: simple line plot (@ref{plot}), line plot with filling under it (@ref{area}), stairs plot (@ref{step}), bar plot (@ref{bars}, @ref{barh}) and vertical lines (@ref{stem}). Each type of plotting has similar interface. Most of plotting type has similar interface. There are 3D version and two 2D versions. One of last requires single array. The parameters of line and marks are specified by the string argument. If the string parameter is NULL then solid line with color from palette is used (@pxref{Line styles}). Also there are some special 1d plots having slightly different interface: surface of curve rotation (@ref{torus}), chart (@ref{chart}) and error boxes (@ref{error}), marks with variable size (@ref{mark}), tubes (@ref{tube}) and so on. @sref{1D plot sample}
-The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @var{x.nx=y.nx=z.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=NULL}) solid line with color from palette is used (@pxref{Palette and colors}).
+The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @var{xdat.nx=ydat.nx=zdat.nx}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). String @var{stl} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{stl=''}) solid line with color from palette is used (@pxref{Line styles}).
+ at cindex plot
+ at anchor{plot}
@deffn {MGL command} plot ydat ['stl'='' @code{zval=nan}]
@deffnx {MGL command} plot xdat ydat ['stl'='' @code{zval=nan}]
@deffnx {MGL command} plot xdat ydat zdat ['stl'='']
-Draws continuous lines between points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). See also @code{tens, radar, area, step, stem, tube, mark, error, belt}. @sref{Plot sample}
+Draws continuous lines between points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. See also @ref{area}, @ref{step}, @ref{stem}, @ref{tube}, @ref{mark}, @ref{error}, @ref{belt}, @ref{tens}. @sref{Plot sample}
@end deffn
+ at cindex radar
+ at anchor{radar}
@deffn {MGL command} radar adat ['stl'='' @code{r=-1}]
-Draws radar chart which is continuous lines between points located on an radial lines (like plot in Polar coordinates). The plots are drawn for each row if one of the data is the matrix. Parameter @var{r} set the additional shift of data (i.e. the data @var{adat}+ at var{r} is used instead of @var{adat}). If @code{r<0} then @code{r=max(0, -min(adat)}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). If @var{pen} containt @samp{#} symbol then "grid" (radial lines and circle for @var{r}) is drawn See also @code{plot}. @sref{Radar sample}
+Draws radar chart which is continuous lines between points located on an radial lines (like plot in Polar coordinates). The plots are drawn for each row if one of the data is the matrix. Parameter @var{r} set the additional shift of data (i.e. the data @var{adat}+ at var{r} is used instead of @var{adat}). If @code{r<0} then @code{r=max(0, -min(adat)}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{stl=""}) solid line with color from palette is used (@pxref{Line styles}). If @var{pen} containt @samp{#} symbol then "grid" (radial lines and circle for @var{r}) is drawn See also @ref{plot}. @sref{Radar sample}
@end deffn
+ at cindex tens
+ at anchor{tens}
@deffn {MGL command} tens ydat cdat ['stl'='' @code{zval=nan}]
@deffnx {MGL command} tens xdat ydat cdat ['stl'='' @code{zval=nan}]
@deffnx {MGL command} tens xdat ydat zdat cdat ['stl'='']
-Draws continuous lines between points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} with color defined by @var{cdat}[i] (look like tension plot). If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). See also @code{plot, mesh, fall}. @sref{Tens sample}
+Draws continuous lines between points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} with color defined by @var{cdat}[i] (look like tension plot). See also @ref{plot}, @ref{mesh}, @ref{fall}. @sref{Tens sample}
@end deffn
+ at cindex area
+ at anchor{area}
@deffn {MGL command} area ydat ['stl'='' @code{zval=nan}]
@deffnx {MGL command} area xdat ydat ['stl'='' @code{zval=nan}]
@deffnx {MGL command} area xdat ydat zdat ['stl'='']
-Draws continuous lines between points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} and fills it down to axis (to axis plane in 3D). If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). See also @code{plot, bars, stem, region}. @sref{Area sample}
+Draws continuous lines between points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} and fills it down to axis (to axis plane in 3D). You can use gradient filling if number of specified colors is equal to 2*number of curves. If string contain symbol @samp{a} then lines are drawn one above another (like summation). See also @ref{plot}, @ref{bars}, @ref{stem}, @ref{region}. @sref{Area sample}
@end deffn
+ at cindex region
+ at anchor{region}
@deffn {MGL command} region fdat gdat ['stl'='' @code{inside=off}]
@deffnx {MGL command} region xdat fdat gdat ['stl'='' @code{inside=off}]
-Fills area between curves @{@var{xdat}[i], @var{fdat}[i]@} and @{@var{xdat}[i], @var{gdat}[i]@}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. Parameter @code{inside=off} set to fill are with y1<y<y2 else the area with y2<y<y1 will be also filled.
- at c If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box).
-See also @code{area, bars, stem}. @sref{Region sample}
+Fills area between curves @{@var{xdat}[i], @var{fdat}[i]@} and @{@var{xdat}[i], @var{gdat}[i]@}. Parameter @code{inside=off} set to fill are with y1<y<y2 else the area with y2<y<y1 will be also filled. You can use gradient filling if number of specified colors is equal to 2*number of curves. See also @ref{area}, @ref{bars}, @ref{stem}. @sref{Region sample}
@end deffn
- at deffn {MGL command} bars ydat ['stl'='' @code{zval=nan above=off}]
- at deffnx {MGL command} bars xdat ydat ['stl'='' @code{zval=nan above=off}]
- at deffnx {MGL command} bars xdat ydat zdat ['stl'='' @code{above=off}]
-Draws vertical bars from points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} to axis (to axis plane in 3D). If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). Bars are drawn side-by-side (if @code{above = off}) or one above another (if @code{above = on}). Marks at data points are not drawn. See also @code{area, barh, stem, chart}. @sref{Bars sample}
+ at cindex stem
+ at anchor{stem}
+ at deffn {MGL command} stem ydat ['stl'='' @code{zval=nan}]
+ at deffnx {MGL command} stem xdat ydat ['stl'='' @code{zval=nan}]
+ at deffnx {MGL command} stem xdat ydat zdat ['stl'='']
+Draws vertical lines from points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} to axis (to axis plane in 3D). See also @ref{area}, @ref{bars}, @ref{plot}, @ref{mark}. @sref{Stem sample}
@end deffn
- at deffn {MGL command} barh vdat ['stl'='' @code{zval=nan above=off}]
- at deffnx {MGL command} bars ydat vdat ['stl'='' @code{zval=nan above=off}]
-Draws horizontal bars from points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} to y-axis. If array @var{ydat} is not specified then its an automatic array is used with values equidistantly distributed along y. Bars are drawn side-by-side (if @code{above = off}) or one above another (if @code{above = on}). Marks at data points are not drawn.
- at c If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box).
-See also @code{bars}. @sref{Barh sample}
+ at cindex bars
+ at anchor{bars}
+ at deffn {MGL command} bars ydat ['stl'='' @code{zval=nan}]
+ at deffnx {MGL command} bars xdat ydat ['stl'='' @code{zval=nan}]
+ at deffnx {MGL command} bars xdat ydat zdat ['stl'='']
+Draws vertical bars from points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} to axis (to axis plane in 3D). If style contain symbol @samp{a} then lines are drawn one above another. If string contain symbol @samp{f} then waterfall chart is drawn for determining the cumulative effect of sequentially introduced positive or negative values. You can different colors for positive and negative values if number of specified colors is equal to 2*number of curves. See also @ref{barh}, @ref{area}, @ref{stem}, @ref{chart}. @sref{Bars sample}
@end deffn
- at deffn {MGL command} stem ydat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} stem xdat ydat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} stem xdat ydat zdat ['stl'='']
-Draws vertical lines from points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} to axis (to axis plane in 3D). If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). See also @code{area, bars, plot, mark}. @sref{Stem sample}
+ at cindex barh
+ at anchor{barh}
+ at deffn {MGL command} barh vdat ['stl'='' @code{zval=nan}]
+ at deffnx {MGL command} barh ydat vdat ['stl'='' @code{zval=nan}]
+Draws horizontal bars from points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} to y-axis. If array @var{ydat} is not specified then its an automatic array is used with values equidistantly distributed along y. Marks at data points are not drawn. If style contain symbol @samp{a} then lines are drawn one above another. If string contain symbol @samp{f} then waterfall chart is drawn for determining the cumulative effect of sequentially introduced positive or negative values. You can different colors for positive and negative values if number of specified colors is equal to 2*number of curves.
+See also @ref{bars}. @sref{Barh sample}
+ at end deffn
+
+ at cindex chart
+ at anchor{chart}
+ at deffn {MGL command} chart adat ['col'='']
+The command draws colored stripes (boxes) for data in array @var{adat}. The number of stripes is equal to the number of rows in @var{adat} (equal to @var{a.ny}). The color of each next stripe is cyclically changed from colors specified in string @var{col} or in palette. Spaces in colors denote transparent ``color'', i.e. if @var{col} contain space(s) then corresponding stripe(s) are not drawn. The stripe width is proportional to value of element in @var{a}. Chart is plotted only for data with non-negative elements. If string @var{col} have symbol @samp{#} then black border lines are drawn. The most nice form the chart have in 3d (after rotation of coordinates) or in cylindrical coordinates (becomes so called Pie chart). @sref{Chart sample}
@end deffn
+ at cindex step
+ at anchor{step}
@deffn {MGL command} step ydat ['stl'='' @code{zval=nan}]
@deffnx {MGL command} step xdat ydat ['stl'='' @code{zval=nan}]
@deffnx {MGL command} step xdat ydat zdat ['stl'='']
-Draws continuous stairs for points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). See also @code{plot, stem, tile, boxs}. @sref{Step sample}
+Draws continuous stairs for points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. See also @ref{plot}, @ref{stem}, @ref{tile}, @ref{boxs}. @sref{Step sample}
@end deffn
+ at cindex torus
+ at anchor{torus}
@deffn {MGL command} torus zdat ['stl'='']
@deffnx {MGL command} torus rdat zdat ['stl'='']
-Draws surface which is result of curve @{@var{rdat}[i], @var{zdat}[i], @var{zdat}[i]@} rotation around @code{axialdir} axis. If array @var{rdat} is not specified then its an automatic array is used with values equidistantly distributed along x. See also @code{plot, axial}. @sref{Torus sample}
+Draws surface which is result of curve @{@var{rdat}[i], @var{zdat}[i], @var{zdat}[i]@} rotation around @ref{axialdir} axis. If array @var{rdat} is not specified then its an automatic array is used with values equidistantly distributed along x. See also @ref{plot}, @ref{axial}. @sref{Torus sample}
@end deffn
- at deffn {MGL command} chart adat ['col'='']
-The command draws colored stripes (boxes) for data in array @var{adat}. The number of stripes is equal to the number of rows in @var{adat} (equal to @var{a.ny}). The color of each next stripe is cyclically changed from colors specified in string @var{col} or in palette. Spaces in colors denote transparent ``color'', i.e. if @var{col} contain space(s) then corresponding stripe(s) are not drawn. The stripe width is proportional to value of element in @var{a}. Chart is plotted only for data with non-negative elements. If string @var{col} have symbol @samp{#} then black border lines are drawn. The most nice form the chart have in 3d (after rotation of coordinates) or in cylindrical coordinates (becomes so called Pie chart). @sref{Chart sample}
+ at cindex tube
+ at anchor{tube}
+ at deffn {MGL command} tube ydat rdat ['stl'='' @code{zval=nan}]
+ at deffnx {MGL command} tube ydat @code{rval} ['stl'='' @code{zval=nan}]
+ at deffnx {MGL command} tube xdat ydat rdat ['stl'='' @code{zval=nan}]
+ at deffnx {MGL command} tube xdat ydat @code{rval} ['stl'='' @code{zval=nan}]
+ at deffnx {MGL command} tube xdat ydat zdat rdat ['stl'='']
+ at deffnx {MGL command} tube xdat ydat zdat @code{rval} ['stl'='']
+Draws tube with variable radius @var{rdat}[i] (or @var{rval}) at points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. See also @ref{plot}. @sref{Tube sample}
@end deffn
+ at cindex mark
+ at anchor{mark}
@deffn {MGL command} mark ydat rdat ['stl'='' @code{zval=nan}]
@deffnx {MGL command} mark xdat ydat rdat ['stl'='' @code{zval=nan}]
@deffnx {MGL command} mark xdat ydat zdat rdat ['stl'='']
-Draws marks with size @var{rdat}[i]*@code{marksize} at points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). See also @code{plot, textmark, stem, error}. @sref{Mark sample}
+Draws marks with size @var{rdat}[i]*@code{marksize} at points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. See also @ref{plot}, @ref{textmark}, @ref{stem}, @ref{error}. @sref{Mark sample}
@end deffn
+ at cindex textmark
+ at anchor{textmark}
@deffn {MGL command} textmark ydat 'txt' ['stl'='' @code{zval=nan}]
@deffnx {MGL command} textmark ydat rdat 'txt' ['stl'='' @code{zval=nan}]
@deffnx {MGL command} textmark xdat ydat rdat 'txt' ['stl'='' @code{zval=nan}]
@deffnx {MGL command} textmark xdat ydat zdat rdat 'txt' ['stl'='']
-Draws string @var{txt} as marks with size @var{rdat}[i]*@code{marksize} at points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). If array @var{rdat} is not specified then @var{rdat}[i] = 1. See also @code{plot, mark, stem}. @sref{TextMark sample}
+Draws string @var{txt} as marks with size @var{rdat}[i]*@code{marksize} at points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If array @var{rdat} is not specified then @var{rdat}[i] = 1. See also @ref{plot}, @ref{mark}, @ref{stem}. @sref{Error sample}
@end deffn
+ at cindex error
+ at anchor{error}
@deffn {MGL command} error ydat yerr ['stl'='' @code{zval=nan}]
@deffnx {MGL command} error xdat ydat yerr ['stl'='' @code{zval=nan}]
@deffnx {MGL command} error xdat ydat xerr yerr ['stl'='' @code{zval=nan}]
-Draws error boxes @{@var{xerr}[i], @var{yerr}[i]@} at points @{@var{xdat}[i], @var{ydat}[i], @var{zval}@}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. See also @code{plot}. @sref{TextMark sample}
- at end deffn
-
- at deffn {MGL command} tube ydat rdat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} tube ydat @code{rval} ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} tube xdat ydat rdat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} tube xdat ydat @code{rval} ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} tube xdat ydat zdat rdat ['stl'='']
- at deffnx {MGL command} tube xdat ydat zdat @code{rval} ['stl'='']
-Draws tube with variable radius @var{rdat}[i] (or @var{rval}) at points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). See also @code{plot}. @sref{TextMark sample}
+Draws error boxes @{@var{xerr}[i], @var{yerr}[i]@} at points @{@var{xdat}[i], @var{ydat}[i], @var{zval}@}. See also @ref{plot}. @sref{TextMark sample}
@end deffn
+ at cindex boxplot
+ at anchor{boxplot}
@deffn {MGL command} boxplot adat ['stl'='' @code{zval=nan}]
@deffnx {MGL command} boxplot xdat adat ['stl'='' @code{zval=nan}]
-Draws boxplot (also known as a box-and-whisker diagram) at points @var{xdat} in plane z=@code{zval} (by default is at the bottom of the bounding box). This is five-number summaries of data <em>adat</em> (minimum, lower quartile (Q1), median (Q2), upper quartile (Q3) and maximum) along second (j-th) direction.
+Draws boxplot (also known as a box-and-whisker diagram) at points @var{xdat} in plane z=@code{zval} (by default is at the bottom of the bounding box). This is five-number summaries of data <em>adat</em> (minimum, lower quartile (Q1), median (Q2), upper quartile (Q3) and maximum) along second (j-th) direction. See also @ref{plot}, @ref{error}, @ref{bars}. @sref{BoxPlot sample}
@end deffn
@c ##################################################################
- at node 2D plotting (MGL), 3D plotting (MGL), 1D plotting (MGL), MGL interface
- at section 2D plotting (MGL)
- at cindex mesh
- at cindex fall
- at cindex belt
- at cindex surf
- at cindex boxs
- at cindex tile
- at cindex dens
- at cindex cont
- at cindex contf
- at cindex contd
- at cindex axial
- at cindex grid
+ at node 2D plotting @MGL{}, 3D plotting @MGL{}, 1D plotting @MGL{}, MGL interface
+ at section 2D plotting @MGL{}
+
+These commands perform plotting of 2D data. 2D means that data depend from 2 independent parameters like matrix @math{f(x_i,y_j), i=1...n, j=1...m}. There are 6 generally different types of data representations: simple mesh lines plot (@ref{mesh}), surface plot (@ref{surf}), surface plot by boxes (@ref{boxs}), surface plot by tiles (@ref{tile}), waterfall-like plot (@ref{fall}), belt plot (@ref{belt}), density plot (@ref{dens}), contour lines plot (@ref{cont}), solid contours plot (@ref{contf}) and its rotational figure (@ref{axial}). Commands @ref{cont}, @ref{contf} and @ref{axial} have variants for automatic and manual selection of level values for contours. Also there are commands for plotting data grid lines according to the data format (@ref{grid}) for enhancing density or contour plots. Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. @sref{2D plot sample}
-These commands perform plotting of 2D data. 2D means that data depend from 2 independent parameters like matrix @math{f(x_i,y_j), i=1...n, j=1...m}. There are 6 generally different types of data representations: simple mesh lines plot (Mesh), surface plot (Surf), surface plot by boxes (Boxs), surface plot by tiles (Tile), waterfall-like plot (Fall), belt plot (Belt), density plot (Dens), contour lines plot (Cont), solid contours plot (ContF) and its rotational figure (Axial). Cont, ContF and Axial commands have variants for automatic and manual selection of level values for contours. Also there are commands for plotting data grid lines according to the data format (Grid) for enhancing density or contour plots. Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. Parameters of color scheme are specified by the string argument.
+String parameter @var{sch} sets the color scheme (@pxref{Color scheme}). Previous color scheme is used by default. The minor dimensions of arrays @var{xdat}, @var{ydat}, @var{zdat} should be equal @code{xdat.nx=zdat.nx && ydat.nx=zdat.ny} or @code{xdat.nx=ydat.nx=zdat.nx && xdat.ny=ydat.ny=zdat.ny}. Arrays @var{xdat} and @var{ydat} can be vectors (not matrices as @var{zdat}). If array @var{xdat}, @var{ydat} is not specified then its an automatic arrays are used with values equidistantly distributed along x, y. Graphics are plotted for each z-slice of the data.
-String parameter @var{sch} sets the color scheme (@pxref{Color scheme}). Previous color scheme is used by default. The minor dimensions of arrays @var{xdat}, @var{ydat}, @var{zdat} should be equal @var{xdat.nx=zdat.nx && ydat.nx=zdat.ny} or @var{xdat.nx=ydat.nx=zdat.nx && xdat.ny=ydat.ny=zdat.ny}. Arrays @var{xdat} and @var{ydat} can be vectors (not matrices as @var{zdat}). If array @var{xdat}, @var{ydat} is not specified then its an automatic arrays are used with values equidistantly distributed along x, y. Graphics are plotted for each z-slice of the data.
+ at cindex surf
+ at anchor{surf}
+ at deffn {MGL command} surf zdat ['sch'='']
+ at deffnx {MGL command} surf xdat ydat zdat ['sch'='']
+Draws surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. See also @ref{mesh}, @ref{dens}, @ref{belt}, @ref{tile}, @ref{boxs}, @ref{surfc}, @ref{surfa}. @sref{Surf sample}
+ at end deffn
+ at cindex mesh
+ at anchor{mesh}
@deffn {MGL command} mesh zdat ['sch'='']
@deffnx {MGL command} mesh xdat ydat zdat ['sch'='']
-Draws mesh lines for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. See also @code{surf, fall, meshnum, cont, tens}. @sref{Mesh sample}
+Draws mesh lines for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. See also @ref{surf}, @ref{fall}, @ref{meshnum}, @ref{cont}, @ref{tens}. @sref{Mesh sample}
@end deffn
+ at cindex fall
+ at anchor{fall}
@deffn {MGL command} fall zdat ['sch'='']
@deffnx {MGL command} fall xdat ydat zdat ['sch'='']
-Draws fall lines for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. If @var{sch} contain @samp{x} then lines are drawn along x-direction else (by default) lines are drawn along y-direction. See also @code{belt, mesh, meshnum, tens}. @sref{Fall sample}
+Draws fall lines for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. If @var{sch} contain @samp{x} then lines are drawn along x-direction else (by default) lines are drawn along y-direction. See also @ref{belt}, @ref{mesh}, @ref{tens}, @ref{meshnum}. @sref{Fall sample}
@end deffn
+ at cindex belt
+ at anchor{belt}
@deffn {MGL command} belt zdat ['sch'='']
@deffnx {MGL command} belt xdat ydat zdat ['sch'='']
-Draws belts for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. If @var{sch} contain @samp{x} then belts are drawn along x-direction else (by default) lines are drawn along y-direction. See also @code{fall, surf, plot, meshnum}. @sref{Belt sample}
- at end deffn
-
- at deffn {MGL command} surf zdat ['sch'='']
- at deffnx {MGL command} surf xdat ydat zdat ['sch'='']
-Draws surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. See also @code{mesh, dens, belt, tile, boxs, surfc, surfa}. @sref{Surf sample}
+Draws belts for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. If @var{sch} contain @samp{x} then belts are drawn along x-direction else (by default) lines are drawn along y-direction. See also @ref{fall}, @ref{surf}, @ref{plot}, @ref{meshnum}. @sref{Belt sample}
@end deffn
+ at cindex boxs
+ at anchor{boxs}
@deffn {MGL command} boxs zdat ['sch'='']
@deffnx {MGL command} boxs xdat ydat zdat ['sch'='']
-Draws vertical boxes for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. See also @code{surf, dens, tile, step}. @sref{Boxs sample}
+Draws vertical boxes for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. See also @ref{surf}, @ref{dens}, @ref{tile}, @ref{step}. @sref{Boxs sample}
@end deffn
+ at cindex tile
+ at anchor{tile}
@deffn {MGL command} tile zdat ['sch'='']
@deffnx {MGL command} tile xdat ydat zdat ['sch'='']
-Draws horizontal tiles for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. See also @code{surf, dens, boxs, tile, step}. @sref{Tile sample}
+Draws horizontal tiles for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. Such plot can be used as 3d generalization of @ref{step}. See also @ref{surf}, @ref{boxs}, @ref{step}, @ref{tiles}. @sref{Tile sample}
@end deffn
+ at cindex dens
+ at anchor{dens}
@deffn {MGL command} dens zdat ['sch'='' @code{zval=nan}]
@deffnx {MGL command} dens xdat ydat zdat ['sch'='' @code{zval=nan}]
-Draws density plot for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} at @var{z} = @var{zVal}. See also @code{surf, cont, contf, boxs, tile, dens[xyz]}. @sref{Dens sample}
+Draws density plot for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} at @var{z} = @var{zVal}. See also @ref{surf}, @ref{cont}, @ref{contf}, @ref{boxs}, @ref{tile}, @code{dens[xyz]}. @sref{Dens sample}
@end deffn
+ at cindex cont
+ at anchor{cont}
@deffn {MGL command} cont vdat zdat ['sch'='' @code{zval=nan}]
@deffnx {MGL command} cont vdat xdat ydat zdat ['sch'='' @code{zval=nan}]
-Draws contour lines for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} at @var{z} = @var{zVal} (or for @var{z}=@var{vdat}[k] if @code{zval=nan}). Contours are plotted for @var{zdat}[i,j]=@var{vdat}[k] for all k. If string @var{stl} contain 't' (or 'T') symbol then contour labels will be drawn below (or above) the contours. See also @code{dens, contf, axial, cont[xyz]}. @sref{Cont sample}
+Draws contour lines for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} at @var{z} = @var{zVal} (or for @var{z}=@var{vdat}[k] if @code{zval=nan}). Contours are plotted for @var{zdat}[i,j]=@var{vdat}[k] for all k. If string @var{stl} contain 't' (or 'T') symbol then contour labels will be drawn below (or above) the contours. See also @ref{dens}, @ref{contf}, @ref{contd}, @ref{axial}, @code{cont[xyz]}. @sref{Cont sample}
@end deffn
@deffn {MGL command} cont zdat ['sch'='' @code{num=7 zval=nan}]
@@ -726,9 +879,11 @@ Draws contour lines for surface specified parametrically @{@var{xdat}[i,j], @var
The same as previous one with vector @var{vdat} of @var{num}-th elements equidistantly distributed in color range (see, @code{caxis}).
@end deffn
+ at cindex contf
+ at anchor{contf}
@deffn {MGL command} contf vdat zdat ['sch'='' @code{zval=nan}]
@deffnx {MGL command} contf vdat xdat ydat zdat ['sch'='' @code{zval=nan}]
-Draws solid (or filled) contours for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} at @var{z} = @var{zVal} (or for @var{z}=@var{vdat}[k] if @code{zval=nan}). Contours are plotted for @var{zdat}[i,j]=@var{vdat}[k] for all k (must be @code{vdat.nx>2}). See also @code{dens, cont, contd, axial, contf[xyz]}. @sref{ContF sample}
+Draws solid (or filled) contours for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} at @var{z} = @var{zVal} (or for @var{z}=@var{vdat}[k] if @code{zval=nan}). Contours are plotted for @var{zdat}[i,j]=@var{vdat}[k] for all k (must be @code{vdat.nx>2}). See also @ref{dens}, @ref{cont}, @ref{contd}, @code{contf[xyz]}. @sref{ContF sample}
@end deffn
@deffn {MGL command} contf zdat ['sch'='' @code{num=7 zval=nan}]
@@ -736,9 +891,11 @@ Draws solid (or filled) contours for surface specified parametrically @{@var{xda
The same as previous one with vector @var{vdat} of @var{num}-th elements equidistantly distributed in color range (see, @code{caxis}).
@end deffn
+ at cindex contd
+ at anchor{contd}
@deffn {MGL command} contd vdat zdat ['sch'='' @code{zval=nan}]
@deffnx {MGL command} contd vdat xdat ydat zdat ['sch'='' @code{zval=nan}]
-Draws solid (or filled) contours for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} at @var{z} = @var{zVal} (or for @var{z}=@var{vdat}[k] if @code{zval=nan}) with manual colors. Contours are plotted for @var{zdat}[i,j]=@var{vdat}[k] for all k (must be @code{vdat.nx>2}). The color of k-th contour is @code{sch[k%strlen(sch)]}. See also @code{dens, cont, contf}. @sref{ContD sample}
+Draws solid (or filled) contours for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} at @var{z} = @var{zVal} (or for @var{z}=@var{vdat}[k] if @code{zval=nan}) with manual colors. Contours are plotted for @var{zdat}[i,j]=@var{vdat}[k] for all k (must be @code{vdat.nx>2}). The color of k-th contour is @code{sch[k%strlen(sch)]}. See also @ref{dens}, @ref{cont}, @ref{contf}. @sref{ContD sample}
@end deffn
@deffn {MGL command} contd zdat ['sch'='' @code{num=7 zval=nan}]
@@ -746,9 +903,11 @@ Draws solid (or filled) contours for surface specified parametrically @{@var{xda
The same as previous one with vector @var{vdat} of @var{num}-th elements equidistantly distributed in color range (see, @code{caxis}).
@end deffn
+ at cindex axial
+ at anchor{axial}
@deffn {MGL command} axial vdat zdat ['sch'='']
@deffnx {MGL command} axial vdat xdat ydat zdat ['sch'='']
-Draws surface which is result of contour plot rotation surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. Contours are plotted for @var{zdat}[i,j]=@var{vdat}[k] for all k. If string @var{sch} have symbol @samp{#} then wire plot is produced. If string @var{sch} contain symbols @samp{x}, @samp{y} or @samp{z} then rotation axis @code{axialdir} will be set to specified direction. If string @var{sch} have symbol @samp{#} then wire plot is produced. See also @code{cont, contf, torus, surf3}. @sref{Axial sample}
+Draws surface which is result of contour plot rotation surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. Contours are plotted for @var{zdat}[i,j]=@var{vdat}[k] for all k. If string @var{sch} have symbol @samp{#} then wire plot is produced. If string @var{sch} contain symbols @samp{x}, @samp{y} or @samp{z} then rotation axis @code{axialdir} will be set to specified direction. If string @var{sch} have symbol @samp{#} then wire plot is produced. See also @ref{cont}, @ref{contf}, @ref{torus}, @ref{surf3}. @sref{Axial sample}
@end deffn
@deffn {MGL command} axial zdat ['sch'='' @code{num=3}]
@@ -756,55 +915,63 @@ Draws surface which is result of contour plot rotation surface specified paramet
The same as previous one with vector @var{vdat} of @var{num}-th elements equidistantly distributed in color range (see, @code{caxis}).
@end deffn
- at deffn {MGL command} grid zdat ['sch'='' @code{zval=nan}]
- at deffnx {MGL command} grid xdat ydat zdat ['sch'='' @code{zval=nan}]
-Draws grid lines for density plot of surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} at @var{z} = @var{zVal}. See also @code{dens, cont, contf}.
+ at cindex grad
+ at anchor{grad}
+ at deffn {MGL command} grad pdat ['sch'='' @code{num=5 zval=nan}]
+ at deffnx {MGL command} grad xdat ydat pdat ['sch'='' @code{num=5 zval=nan}]
+ at deffnx {MGL command} grad xdat ydat zdat pdat ['sch'='' @code{num=5}]
+Draws gradient lines for scalar field @var{pdat} specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j]@} or @{@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]@}. String @var{sch} sets the color scheme. Previous color scheme is used by default. Number of lines is proportional to @var{num}. If @var{num}<0 then lines start from borders only. See also @ref{dens}, @ref{cont}, @ref{dens3}, @ref{cont3}, @ref{flow}. @sref{Grad sample}
+ at end deffn
+
+
+ at cindex grid2
+ at anchor{grid2}
+ at deffn {MGL command} grid2 zdat ['sch'='' @code{zval=nan}]
+ at deffnx {MGL command} grid2 xdat ydat zdat ['sch'='' @code{zval=nan}]
+Draws grid lines for density plot of surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} at @var{z} = @var{zVal}. See also @ref{dens}, @ref{cont}, @ref{contf}.
@end deffn
@c ##################################################################
- at node 3D plotting (MGL), Dual plotting (MGL), 2D plotting (MGL), MGL interface
- at section 3D plotting (MGL)
- at cindex surf3
- at cindex dens3
- at cindex cont3
- at cindex conta
- at cindex densa
- at cindex grid3
- at cindex grida
- at cindex cloud
- at cindex contf3
- at cindex contfa
- at cindex beam
+ at node 3D plotting @MGL{}, Dual plotting @MGL{}, 2D plotting @MGL{}, MGL interface
+ at section 3D plotting @MGL{}
-These commands perform plotting of 3D data. 3D means that data depend from 3 independent parameters like matrix @math{f(x_i,y_j,z_k), i=1...n, j=1...m, k=1...l}. There are 4 generally different types of data representations: isosurface or surface of constant value (Surf3), density plot at slices (Dens3), contour lines plot at slices (Cont3), solid contours plot at slices (ContF3) and cloud-like plot (Cloud). Surf3, Cont3 and ContF3 commands have variants for automatic and manual selection of level values for surfaces/contours. Also there are commands for plotting data grid lines according to the data format (Grid3) for enhancing density or contour plots. Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. Parameters of color scheme are specified by the string argument.
+These commands perform plotting of 3D data. 3D means that data depend from 3 independent parameters like matrix @math{f(x_i,y_j,z_k), i=1...n, j=1...m, k=1...l}. There are 4 generally different types of data representations: isosurface or surface of constant value (@ref{surf3}), density plot at slices (Dens3), contour lines plot at slices (@ref{cont3}), solid contours plot at slices (@ref{contf3}) and cloud-like plot (@ref{cloud}). Commands @ref{surf3}, @ref{cont3} and @ref{contf3} have variants for automatic and manual selection of level values for surfaces/contours. Also there are commands for plotting data grid lines according to the data format (@ref{grid3}) for enhancing density or contour plots. Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. @sref{3D plot sample}
String paramter @var{sch} sets the color scheme (@pxref{Color scheme}). Previous color scheme is used by default. Arrays @var{x}, @var{y}, @var{z} can be vectors (not 3d arrays as @var{a}). If array @var{xdat}, @var{ydat}, @var{zdat} is not specified then its an automatic arrays are used with values equidistantly distributed along x, y, z.
+ at cindex surf3
+ at anchor{surf3}
@deffn {MGL command} surf3 adat @code{val} ['sch'='']
@deffnx {MGL command} surf3 xdat ydat zdat adat @code{val} ['sch'='']
-Draws isosurface plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]) at @var{a}(x,y,z)=@var{val}. If string contain @samp{#} then wire plot is produced. See also @code{cloud, dens3, surf3c, surf3a, axial}. @sref{Surf3 sample}
+Draws isosurface plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]) at @var{a}(x,y,z)=@var{val}. If string contain @samp{#} then wire plot is produced. See also @ref{cloud}, @ref{dens3}, @ref{surf3c}, @ref{surf3a}, @ref{axial}. @sref{Surf3 sample}
@end deffn
@deffn {MGL command} surf3 adat ['sch'='' @code{num=5}]
@deffnx {MGL command} surf3 xdat ydat zdat adat ['sch'='' @code{num=5}]
-Draws @var{num}-th uniformly distributed in color range (see @code{caxis}) isosurfaces for 3d data specified parametrically.
+Draws @var{num}-th uniformly distributed in color range (see @ref{caxis}) isosurfaces for 3d data specified parametrically.
@end deffn
+ at cindex dens3
+ at anchor{dens3}
@deffn {MGL command} dens3 adat 'dir' [@code{sval=-1} 'sch'='']
@deffnx {MGL command} dens3 xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='']
-Draws density plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). Density is plotted at slice @var{sval} in @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@} direction. If string @var{stl} have symbol @samp{#} then grid lines are drawn. See also @code{cont3, contf3, dens, grid3}. @sref{Dens3 sample}
+Draws density plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). Density is plotted at slice @var{sval} in @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@} direction. If string @var{stl} have symbol @samp{#} then grid lines are drawn. See also @ref{cont3}, @ref{contf3}, @ref{dens}, @ref{grid3}. @sref{Dens3 sample}
@end deffn
+ at cindex densa
+ at anchor{densa}
@deffn {MGL command} densa adat ['sch'='']
@deffnx {MGL command} densa xdat ydat zdat adat ['sch'='']
Draws density plots at all central slices of the 3d data specified parametrically.
@end deffn
+ at cindex cont3
+ at anchor{cont3}
@deffn {MGL command} cont3 vdat adat 'dir' [@code{sval=-1} 'sch'='']
@deffnx {MGL command} cont3 vdat xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='']
-Draws contour plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). Contours are plotted for values specified in array @var{vdat} at slice @var{sval} in @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@} direction. If string @var{stl} have symbol @samp{#} then grid lines are drawn. If string @var{stl} contain 't' (or 'T') symbol then contour labels will be drawn below (or above) the contours. See also @code{dens3, contf3, cont, grid3}. @sref{Cont3 sample}
+Draws contour plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). Contours are plotted for values specified in array @var{vdat} at slice @var{sval} in @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@} direction. If string @var{stl} have symbol @samp{#} then grid lines are drawn. If string @var{stl} contain 't' (or 'T') symbol then contour labels will be drawn below (or above) the contours. See also @ref{dens3}, @ref{contf3}, @ref{cont}, @ref{grid3}. @sref{Cont3 sample}
@end deffn
@deffn {MGL command} cont3 adat 'dir' [@code{sval=-1} 'sch'='' @code{num=7}]
@@ -812,69 +979,80 @@ Draws contour plot for 3d array specified parametrically @var{adat}[i,j,k](@var{
The same as previous one with vector @var{vdat} of @var{num}-th elements equidistantly distributed in color range (see @code{caxis}).
@end deffn
+ at cindex conta
+ at anchor{conta}
@deffn {MGL command} conta adat ['sch'='' @code{num=7}]
@deffnx {MGL command} conta xdat ydat zdat adat ['sch'='' @code{num=7}]
Draws contour plots at all central slices of the 3d data specified parametrically.
@end deffn
+ at cindex contf3
+ at anchor{contf3}
@deffn {MGL command} contf3 vdat adat 'dir' [@code{sval=-1} 'sch'='']
@deffnx {MGL command} contf3 vdat xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='']
-Draws solid contour plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). Contours are plotted for values specified in array @var{vdat} at slice @var{sval} in @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@} direction. If string @var{stl} have symbol @samp{#} then grid lines are drawn. See also @code{dens3, cont3, contf, grid3}. @sref{ContF3 sample}
+Draws solid contour plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). Contours are plotted for values specified in array @var{vdat} at slice @var{sval} in @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@} direction. If string @var{stl} have symbol @samp{#} then grid lines are drawn. See also @ref{dens3}, @ref{cont3}, @ref{contf}, @ref{grid3}. @sref{ContF3 sample}
@end deffn
@deffn {MGL command} contf3 adat 'dir' [@code{sval=-1} 'sch'='' @code{num=7}]
@deffnx {MGL command} contf3 xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='' @code{num=7}]
-The same as previous one with vector @var{vdat} of @var{num}-th elements equidistantly distributed in color range (see @code{caxis}).
+The same as previous one with vector @var{vdat} of @var{num}-th elements equidistantly distributed in color range (see @ref{caxis}).
@end deffn
+ at cindex contfa
+ at anchor{contfa}
@deffn {MGL command} contfa adat ['sch'='' @code{num=7}]
@deffnx {MGL command} contfa xdat ydat zdat adat ['sch'='' @code{num=7}]
Draws solid contour plots at all central slices of the 3d data specified parametrically.
@end deffn
+ at cindex grid3
+ at anchor{grid3}
@deffn {MGL command} grid3 adat 'dir' [@code{sval=-1} 'sch'='']
@deffnx {MGL command} grid3 xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='']
-Draws grid for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). Grid is plotted at slice @var{sval} in @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@} direction. See also @code{cont3, contf3, dens, grid3}. @sref{Dens3 sample}
+Draws grid for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). Grid is plotted at slice @var{sval} in @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@} direction. See also @ref{cont3}, @ref{contf3}, @ref{dens3}, @ref{grid2}. @sref{Dens3 sample}
@end deffn
+ at cindex grida
+ at anchor{grida}
@deffn {MGL command} grida adat ['sch'='']
@deffnx {MGL command} grida xdat ydat zdat adat ['sch'='']
Draws grids at all central slices of the 3d data specified parametrically.
@end deffn
+ at cindex cloud
+ at anchor{cloud}
@deffn {MGL command} cloud adat ['sch'='']
@deffnx {MGL command} cloud xdat ydat zdat adat ['sch'='']
-Draws cloud for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). This plot is a set of cubes with color and transparency proportional to value of @var{adat}. The resulting plot is like cloud -- low value is transparent but higher ones are not. The number of plotting cells depend on @code{meshnum}. Command @var{alpha} changes the overall transparency of plot. See also @code{surf3}. @sref{Cloud sample}
+Draws cloud for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). This plot is a set of cubes with color and transparency proportional to value of @var{adat}. The resulting plot is like cloud -- low value is transparent but higher ones are not. The number of plotting cells depend on @ref{meshnum}. Paramater @var{alpha} changes the overall transparency of plot. See also @ref{surf3}. @sref{Cloud sample}
@end deffn
+ at cindex beam
+ at anchor{beam}
@deffn {MGL command} beam tr g1 g2 adat @code{rval} ['sch'='' @code{flag=0 num=3}]
-Draws @var{num}-th uniformly distributed in color range (see @code{caxis}) isosurfaces for 3d array @var{adat}. This is special kind of plot for @var{adat} specified in accompanied coordinates along curve @var{tr} with orts @var{g1}, @var{g2} and with transverse scale @var{rval}. Variable @var{flag} is bitwise: @samp{0x1} - draw in accompanied (not laboratory) coordinates; @samp{0x2} - draw projection to @math{\rho-z} plane; @samp{0x4} - draw normalized in each slice field. The x-size of data arrays @var{tr}, @var{g1}, @var{g2} must be nx>2. The y-size of data arrays @var{tr}, @var{g1}, @var{g2} and z-size of the data array @var{a} must be equal. @xref{Surf3}.
+Draws @var{num}-th uniformly distributed in color range (see @code{caxis}) isosurfaces for 3d array @var{adat}. This is special kind of plot for @var{adat} specified in accompanied coordinates along curve @var{tr} with orts @var{g1}, @var{g2} and with transverse scale @var{rval}. Variable @var{flag} is bitwise: @samp{0x1} - draw in accompanied (not laboratory) coordinates; @samp{0x2} - draw projection to @math{\rho-z} plane; @samp{0x4} - draw normalized in each slice field. The x-size of data arrays @var{tr}, @var{g1}, @var{g2} must be nx>2. The y-size of data arrays @var{tr}, @var{g1}, @var{g2} and z-size of the data array @var{a} must be equal. See also @ref{surf3}.
@end deffn
@c ##################################################################
- at node Dual plotting (MGL), Vector fields (MGL), 3D plotting (MGL), MGL interface
- at section Dual plotting (MGL)
- at cindex surfc
- at cindex surf3c
- at cindex surfa
- at cindex surf3a
- at cindex map
- at cindex tile
- at cindex stfa
+ at node Dual plotting @MGL{}, Vector fields @MGL{}, 3D plotting @MGL{}, MGL interface
+ at section Dual plotting @MGL{}
-These plotting commands draw @emph{two matrix} simultaneously. There are 5 generally different types of data representations: surface or isosurface colored by other data (SurfC, Surf3C), surface or isosurface transpared by other data (SurfA, Surf3A), tiles with variable size (TileS), mapping diagram (Map), STFA diagram (STFA). Surf3A and Surf3C have variants for automatic and manual selection of level values for isosurfaces. Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. Parameters of color scheme are specified by the string argument.
+These plotting commands draw @emph{two matrix} simultaneously. There are 5 generally different types of data representations: surface or isosurface colored by other data (@ref{surfc}, @ref{surf3c}), surface or isosurface transpared by other data (@ref{surfa}, @ref{surf3a}), tiles with variable size (@ref{tiles}), mapping diagram (@ref{map}), STFA diagram (@ref{stfa}). Commands @ref{surf3a} and @ref{surf3c} have variants for automatic and manual selection of level values for isosurfaces. Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array.
String paramter @var{sch} sets the color scheme (@pxref{Color scheme}). Previous color scheme is used by default. Arrays @var{x}, @var{y}, @var{z} can be vectors (not 3d arrays as @var{a}). If array @var{xdat}, @var{ydat}, @var{zdat} is not specified then its an automatic arrays are used with values equidistantly distributed along x, y, z.
+ at cindex surfc
+ at anchor{surfc}
@deffn {MGL command} surfc zdat cdat ['sch'='']
@deffnx {MGL command} surfc xdat ydat zdat cdat ['sch'='']
-Draws surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} and color it by matrix @var{cdat}[i,j]. See also @code{surf, surfa, surf3c}. @sref{SurfC sample}
+Draws surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} and color it by matrix @var{cdat}[i,j]. See also @ref{surf}, @ref{surfa}, @ref{surf3c}. @sref{SurfC sample}
@end deffn
+ at cindex surf3c
+ at anchor{surf3c}
@deffn {MGL command} surf3c adat cdat @code{val} ['sch'='']
@deffnx {MGL command} surf3c xdat ydat zdat adat cdat @code{val} ['sch'='']
-Draws isosurface plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]) at @var{a}(x,y,z)=@var{val}. It is mostly the same as @code{surf3} command but the color of isosurface depends on values of array @var{cdat}. If string contain @samp{#} then wire plot is produced. See also @code{surf3, sur3a, surfc}. @sref{Surf3C sample}
+Draws isosurface plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]) at @var{a}(x,y,z)=@var{val}. It is mostly the same as @ref{surf3} command but the color of isosurface depends on values of array @var{cdat}. If string contain @samp{#} then wire plot is produced. See also @ref{surf3}, @ref{surfc}, @ref{surf3a}. @sref{Surf3C sample}
@end deffn
@deffn {MGL command} surf3c adat cdat ['sch'='' @code{num=5}]
@@ -882,14 +1060,18 @@ Draws isosurface plot for 3d array specified parametrically @var{adat}[i,j,k](@v
Draws @var{num}-th uniformly distributed in color range (see @code{caxis}) isosurfaces for 3d data specified parametrically.
@end deffn
+ at cindex surfa
+ at anchor{surfa}
@deffn {MGL command} surfa zdat cdat ['sch'='']
@deffnx {MGL command} surfa xdat ydat zdat cdat ['sch'='']
-Draws surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} and transparent it by matrix @var{cdat}[i,j]. See also @code{surf, surfc, surf3a, tile}. @sref{SurfA sample}
+Draws surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} and transparent it by matrix @var{cdat}[i,j]. See also @ref{surf}, @ref{surfc}, @ref{surf3a}, @ref{tiles}. @sref{SurfA sample}
@end deffn
+ at cindex surf3a
+ at anchor{surf3a}
@deffn {MGL command} surf3a adat cdat @code{val} ['sch'='']
@deffnx {MGL command} surf3a xdat ydat zdat adat cdat @code{val} ['sch'='']
-Draws isosurface plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]) at @var{a}(x,y,z)=@var{val}. It is mostly the same as @code{surf3} command but the transparency of isosurface depends on values of array @var{cdat}. If string contain @samp{#} then wire plot is produced. See also @code{surf3, sur3c, surfa}. @sref{Surf3A sample}
+Draws isosurface plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]) at @var{a}(x,y,z)=@var{val}. It is mostly the same as @ref{surf3} command but the transparency of isosurface depends on values of array @var{cdat}. If string contain @samp{#} then wire plot is produced. See also @ref{surf3}, @ref{surfa}, @ref{surf3c}. @sref{Surf3A sample}
@end deffn
@deffn {MGL command} surf3a adat cdat ['sch'='' @code{num=5}]
@@ -897,48 +1079,52 @@ Draws isosurface plot for 3d array specified parametrically @var{adat}[i,j,k](@v
Draws @var{num}-th uniformly distributed in color range (see @code{caxis}) isosurfaces for 3d data specified parametrically.
@end deffn
- at deffn {MGL command} tile zdat rdat ['sch'='']
- at deffnx {MGL command} tile xdat ydat zdat rdat ['sch'='']
-Draws horizontal tiles for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. It is mostly the same as @code{tile} but the size of tiles is determined by @var{rdat} array. See also @code{surfa, tile}. @sref{TileS sample}
+ at cindex tiles
+ at anchor{tiles}
+ at deffn {MGL command} tiles zdat rdat ['sch'='']
+ at deffnx {MGL command} tiles xdat ydat zdat rdat ['sch'='']
+Draws horizontal tiles for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. It is mostly the same as @ref{tile} but the size of tiles is determined by @var{rdat} array. See also @ref{surfa}, @ref{tile}. @sref{TileS sample}
@end deffn
+ at cindex map
+ at anchor{map}
@deffn {MGL command} map udat vdat ['sch'='' @code{pnts=on}]
@deffnx {MGL command} map xdat ydat udat vdat ['sch'='' @code{pnts=on}]
Draws mapping plot for matrixes @{@var{udat}, @var{vdat} @} which parametrically depend on coordinates @var{xdat}, @var{ydat}. The previous position of the cell (point) is marked by color. Height is proportional to Jacobian(udat,vdat). This plot is like Arnold diagram ???. If @code{pnts=off} then face is drawn otherwise the color ball at matrix knots are drawn. The size of @var{udat} and @var{vdat} must be the same. @sref{Map sample}
@end deffn
+ at cindex stfa
+ at anchor{stfa}
@deffn {MGL command} stfa re im @code{dn} ['sch'='' @code{pnts=on}]
@deffnx {MGL command} stfa xdat ydat re im @code{dn} ['sch'='' @code{pnts=on}]
-Draws spectrogram of complex array @var{re}+i*@code{im} for Fourier size of @var{dn} points at plane @var{z=zVal}. Parameter @var{dn} is arbitrary even integer. For example in 1D case, result is density plot of data @math{res[i,j]=|\sum_d^dn exp(I*j*d)*(re[i*dn+d]+I*im[i*dn+d])|/dn} with size @{int(nx/dn), dn, ny@}.
+Draws spectrogram of complex array @var{re}+i*@code{im} for Fourier size of @var{dn} points at plane @var{z=zVal}. Parameter @var{dn} is arbitrary even integer. For example in 1D case, result is density plot of data @math{res[i,j]=|\sum_d^dn exp(I*j*d)*(re[i*dn+d]+I*im[i*dn+d])|/dn} with size @{int(nx/dn), dn, ny@}. @sref{STFA sample}
@end deffn
@c ##################################################################
- at node Vector fields (MGL), Other plotting (MGL), Dual plotting (MGL), MGL interface
- at section Vector fields (MGL)
- at cindex vectc
- at cindex vect
- at cindex flow
- at cindex pipe
- at cindex traj
- at cindex dew
+ at node Vector fields @MGL{}, Other plotting @MGL{}, Dual plotting @MGL{}, MGL interface
+ at section Vector fields @MGL{}
-These commands perform plotting of 2D and 3D vector fields. There are 6 generally different types of vector fields representations: simple vector field (Vect), vector field with coloring (VectC), vector field by dew-drops (Dew), flow threads (Flow), flow pipes (Pipe), vectors along a curve (Traj). Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. Parameters of color scheme are specified by the string argument. @xref{Color scheme}.
+These commands perform plotting of 2D and 3D vector fields. There are 6 generally different types of vector fields representations: simple vector field (@ref{vect}), vector field by dew-drops (@ref{dew}), flow threads (@ref{flow}), flow pipes (@ref{pipe}), vectors along a curve (@ref{traj}). Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. Parameters of color scheme are specified by the string argument. @xref{Color scheme}.
-The color is specified by the string argument @var{sch}. Previous color scheme is used by default. Parameter @var{flag} setup the hachures (arrows). It is compination of vlaues: @code{MGL_VEC_COL=1} for drawing bi-color arrow, @code{MGL_VEC_LEN=2} for drawing fixed length arrows, @code{MGL_VEC_DOT=16} for drawing hachures with dots instead of arrows, @code{MGL_VEC_END=4} for drawing arrows to the cell point, @code{MGL_VEC_MID=8} for drawing arrows with center at cell point.
+The color is specified by the string argument @var{sch}. Previous color scheme is used by default. Parameter @var{flag} setup the hachures (arrows). It is combination of values: @code{1} for drawing bi-color arrow, @code{2} for drawing fixed length arrows, @code{4} for drawing arrows to the cell point, @code{8} for drawing arrows with center at cell point, @code{16} for drawing hachures with dots instead of arrows.
The size of @var{udat}, @var{vdat} and @var{wdat} must be equal. The minor dimensions of arrays @var{xdat}, @var{ydat}, @var{zdat} and @var{udat} must be equal too. Arrays @var{xdat}, @var{ydat} and @var{zdat} can be vectors (not matrices as @var{udat}). The graphics is plotted for each z slice of @var{udat}, @var{vdat} for 2D case.
+ at cindex traj
+ at anchor{traj}
@deffn {MGL command} traj xdat ydat udat vdat ['sch'='' @code{zval=nan len=0}]
@deffnx {MGL command} traj xdat ydat zdat udat vdat wdat ['sch'='' @code{len=0}]
Draws vectors @{@var{udat}, @var{vdat}, @var{wdat}@} along a curve @var{xdat}, @var{ydat}, @var{zdat}. The length and color of arrows are proportional to @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. See also @code{vect}. @sref{Traj sample}
@end deffn
+ at cindex vect
+ at anchor{vect}
@deffn {MGL command} vect udat vdat ['sch'='' @code{zval=nan flag=0}]
@deffnx {MGL command} vect xdat ydat udat vdat ['sch'='' @code{zval=nan flag=0}]
-Draws plane vector field plot for the field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} at level @var{z=zVal}. The length and color of arrows are proportional to @math{\sqrt@{udat^2+vdat^2@}}. The number of hachures depend on @var{meshnum}. See also @code{vectc, flow, pipe, dew}. @sref{Vect sample}
+Draws plane vector field plot for the field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} at level @var{z=zval}. The length and color of arrows are proportional to @math{\sqrt@{udat^2+vdat^2@}}. The number of arrows depend on @ref{meshnum}. See also @ref{flow}, @ref{dew}, @ref{vectc}. @sref{Vect sample}
@end deffn
@deffn {MGL command} vect udat vdat wdat ['sch'='' @code{flag=0}]
@@ -946,6 +1132,8 @@ Draws plane vector field plot for the field @{@var{udat}, @var{vdat}@} depending
This is 3D version of the previous command. Here arrays @var{udat}, @var{vdat}, @var{wdat} must be 3-ranged tensors with equal sizes and the length and color of arrows are proportional to @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{Vect 3D sample}
@end deffn
+ at cindex vectc
+ at anchor{vectc}
@deffn {MGL command} vectc udat vdat ['sch'='' @code{zval=nan}]
@deffnx {MGL command} vectc xdat ydat udat vdat ['sch'='' @code{zval=nan}]
Draws plane vector field plot for the field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} at level @var{z=zVal}. The color of hachures is proportional to @math{\sqrt@{udat^2+vdat^2@}}. The number of hachures depend on @var{meshnum}. See also @code{vect, flow, pipe, dew}. @sref{VectC sample}
@@ -956,6 +1144,8 @@ Draws plane vector field plot for the field @{@var{udat}, @var{vdat}@} depending
This is 3D version of the previous command. Here arrays @var{udat}, @var{vdat}, @var{wdat} must be 3-ranged tensors with equal sizes and the color of hachures is proportional to @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{VectC 3D sample}
@end deffn
+ at cindex vectl
+ at anchor{vectl}
@deffn {MGL command} vectl udat vdat ['sch'='' @code{zval=nan}]
@deffnx {MGL command} vectl xdat ydat udat vdat ['sch'='' @code{zval=nan}]
Draws plane vector field plot for the field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} at level @var{z=zVal}. The length of hachures is proportional to @math{\sqrt@{udat^2+vdat^2@}}. The number of hachures depend on @var{meshnum}. See also @code{vectc, flow, pipe, dew}. @sref{Vect sample}
@@ -963,14 +1153,18 @@ Draws plane vector field plot for the field @{@var{udat}, @var{vdat}@} depending
@deffn {MGL command} vectl udat vdat wdat ['sch'='']
@deffnx {MGL command} vectl xdat ydat zdat udat vdat wdat ['sch'='']
-This is 3D version of the previous command. Here arrays @var{udat}, @var{vdat}, @var{wdat} must be 3-ranged tensors with equal sizes and the length of hachures is proportional to @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{Vect 3D sample}
+This is 3D version of the previous command. Here arrays @var{udat}, @var{vdat}, @var{wdat} must be 3-ranged tensors with equal sizes and the length of hachures is proportional to @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{VectL 3D sample}
@end deffn
+ at cindex dew
+ at anchor{dew}
@deffn {MGL command} dew udat vdat ['sch'='' @code{zval=nan}]
@deffnx {MGL command} dew xdat ydat udat vdat ['sch'='' @code{zval=nan}]
-Draws dew-drops for plane vector field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} at level @var{z=zVal}. The color of drops is proportional to @math{\sqrt@{udat^2+vdat^2@}}. The number of drops depend on @var{meshnum}. Note that this is very expensive plot in memory usage and creation time! See also @code{vectc}. @sref{Dew sample}
+Draws dew-drops for plane vector field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} at level @var{z=zval}. The color of drops is proportional to @math{\sqrt@{udat^2+vdat^2@}}. The number of drops depend on @ref{meshnum}. Note that this is very expensive plot in memory usage and creation time! See also @ref{vect}. @sref{Dew sample}
@end deffn
+ at cindex flow
+ at anchor{flow}
@deffn {MGL command} flow udat vdat ['sch'='' @code{num=5 zval=nan}]
@deffnx {MGL command} flow xdat ydat udat vdat ['sch'='' @code{num=5 zval=nan}]
Draws plane flow threads for the vector field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} at level @var{z=zVal}. Number of threads is proportional to @var{num}. The color of lines is proportional to @math{\sqrt@{udat^2+vdat^2@}}. Warm color corresponds to normal flow (like attractor). Cold one corresponds to inverse flow (like source). See also @code{vect, vectc, pipe}. @sref{Flow sample}
@@ -992,96 +1186,126 @@ Draws flow thread from point @{@var{x0}, @var{y0}, @var{z0}@}. Arrays @var{udat}
@end deffn
+ at cindex pipe
+ at anchor{pipe}
@deffn {MGL command} pipe udat vdat ['sch'='' @code{r0=0.05 num=5 zval=nan}]
@deffnx {MGL command} pipe xdat ydat udat vdat ['sch'='' @code{r0=0.05 num=5 zval=nan}]
-Draws plane flow pipes for the vector field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} at level @var{z=zVal}. Number of pipes is proportional to @var{num}. The color of pipes is proportional to @math{\sqrt@{udat^2+vdat^2@}}. Warm color corresponds to normal flow (like attractor). Cold one corresponds to inverse flow (like source). Parameter @var{r0} set the base pipe radius. If @var{r0}<0 then pipe radius is inverse proportional to amplitude. The size of @var{ax} and @var{ay} must be equal. See also @code{vect, vectc, pipe}. @sref{Flow sample}
+Draws plane flow pipes for the vector field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} at level @var{z=zVal}. Number of pipes is proportional to @var{num}. The color of pipes is proportional to @math{\sqrt@{udat^2+vdat^2@}}. Warm color corresponds to normal flow (like attractor). Cold one corresponds to inverse flow (like source). Parameter @var{r0} set the base pipe radius. If @var{r0}<0 then pipe radius is inverse proportional to amplitude. The size of @var{ax} and @var{ay} must be equal. See also @code{vect, vectc, pipe}. @sref{Pipe sample}
@end deffn
@deffn {MGL command} pipe udat vdat wdat ['sch'='' @code{r0=0.05 num=3}]
@deffnx {MGL command} pipe xdat ydat zdat udat vdat wdat ['sch'='' @code{r0=0.05 num=3}]
-This is 3D version of the previous command. Here arrays @var{udat}, @var{vdat}, @var{wdat} must be 3-ranged tensors with equal sizes and the color is proportional to @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{Flow 3D sample}
+This is 3D version of the previous command. Here arrays @var{udat}, @var{vdat}, @var{wdat} must be 3-ranged tensors with equal sizes and the color is proportional to @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{Pipe 3D sample}
@end deffn
@c ##################################################################
- at node Other plotting (MGL), Nonlinear fitting (MGL), Vector fields (MGL), MGL interface
- at section Other plotting (MGL)
- at cindex cont[xyz]
- at cindex dens[xyz]
- at cindex contf[xyz]
- at cindex dots
- at cindex crust
- at cindex triplot
- at cindex fplot
- at cindex fsurf
+ at node Other plotting @MGL{}, Nonlinear fitting @MGL{}, Vector fields @MGL{}, MGL interface
+ at section Other plotting @MGL{}
+These commands perform miscelaneous plotting. There is unstructured data points plots (Dots), surface reconstruction (Crust), surfaces on the triangular mesh (TriPlot) or quadrangular mesh (QuadPlot), textual formula plotting (Plots by formula), data plots at edges (Dens[XYZ], Cont[XYZ], ContF[XYZ]), simple plot (SimplePlot). Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. Parameters of color scheme are specified by the string argument. @xref{Color scheme}.
-These commands perform miscelaneous plotting. There is unstructured data points plots (Dots), surface reconstruction (Crust), surfaces on the triangular mesh (TriPlot), textual formula plotting (Plots by formula), data plots at edges (Dens[XYZ], Cont[XYZ], ContF[XYZ]), simple plot (SimplePlot). Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. Parameters of color scheme are specified by the string argument. @xref{Color scheme}.
-
+ at cindex densx
+ at cindex densy
+ at cindex densz
+ at anchor{densz} @anchor{densy} @anchor{densx}
@deffn {MGL command} densx dat ['sch'='' @code{val=nan}]
@deffnx {MGL command} densy dat ['sch'='' @code{val=nan}]
@deffnx {MGL command} densz dat ['sch'='' @code{val=nan}]
-These plotting commands draw density plot in x, y or z plain. If @var{dat} is a tensor (3-dimensional data) then interpolation to a given @var{val} is performed. These commands are useful for creating projections of the 3D data array to the bounding box. See also @code{cont[xyz], contf[xyz], dens}. @sref{Dens projection sample}
+These plotting commands draw density plot in x, y or z plain. If @var{dat} is a tensor (3-dimensional data) then interpolation to a given @var{val} is performed. These commands are useful for creating projections of the 3D data array to the bounding box. See also @code{cont[xyz], contf[xyz]}, @ref{dens}. @sref{Dens projection sample}
@end deffn
+ at cindex contx
+ at cindex conty
+ at cindex contz
+ at anchor{contz} @anchor{conty} @anchor{contx}
@deffn {MGL command} contx dat ['sch'='' @code{val=nan num=7}]
@deffnx {MGL command} conty dat ['sch'='' @code{val=nan num=7}]
@deffnx {MGL command} contz dat ['sch'='' @code{val=nan num=7}]
-These plotting commands draw contour lines in x, y or z plain. If @var{dat} is a tensor (3-dimensional data) then interpolation to a given @var{val} is performed. These commands are useful for creating projections of the 3D data array to the bounding box. See also @code{dens[xyz], contf[xyz], cont}. @sref{Cont projection sample}
+These plotting commands draw contour lines in x, y or z plain. If @var{dat} is a tensor (3-dimensional data) then interpolation to a given @var{val} is performed. These commands are useful for creating projections of the 3D data array to the bounding box. See also @code{dens[xyz], contf[xyz]}, @ref{cont}. @sref{Cont projection sample}
@end deffn
+ at cindex contfx
+ at cindex contfy
+ at cindex contfz
+ at anchor{contfz} @anchor{contfy} @anchor{contfx}
@deffn {MGL command} contfx dat ['sch'='' @code{val=nan num=7}]
@deffnx {MGL command} contfy dat ['sch'='' @code{val=nan num=7}]
@deffnx {MGL command} contfz dat ['sch'='' @code{val=nan num=7}]
-These plotting commands draw solid contours in x, y or z plain. If @var{dat} is a tensor (3-dimensional data) then interpolation to a given @var{val} is performed. These commands are useful for creating projections of the 3D data array to the bounding box. See also @code{dens[xyz], cont[xyz], contf}.
+These plotting commands draw solid contours in x, y or z plain. If @var{dat} is a tensor (3-dimensional data) then interpolation to a given @var{val} is performed. These commands are useful for creating projections of the 3D data array to the bounding box. See also @code{dens[xyz], cont[xyz]}, @ref{contf}.
@end deffn
+ at cindex dots
+ at anchor{dots}
@deffn {MGL command} dots xdat ydat zdat ['sch'='']
@deffnx {MGL command} dots xdat ydat zdat adat ['sch'='']
-Draws the arbitrary placed points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. Variable @var{adat}[i] set transparency for dots. See also @code{crust, mark, plot}. @sref{Dots sample}
+Draws the arbitrary placed points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. Variable @var{adat}[i] set transparency for dots. See also @ref{crust}, @ref{mark}, @ref{plot}. @sref{Dots sample}
@end deffn
+ at cindex crust
+ at anchor{crust}
@deffn {MGL command} crust xdat ydat zdat ['sch'='']
-Reconstructs and draws the surface for arbitrary placed points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If string contain @samp{#} then wire plot is produced. See also @code{dots, triplot}. @sref{Crust sample}
+Reconstructs and draws the surface for arbitrary placed points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If string contain @samp{#} then wire plot is produced. See also @ref{dots}, @ref{triplot}. @sref{Crust sample}
@end deffn
+ at cindex triplot
+ at anchor{triplot}
@deffn {MGL command} triplot idat xdat ydat ['sch'='' @code{zval=nan}]
@deffnx {MGL command} triplot idat xdat ydat zdat ['sch'='']
@deffnx {MGL command} triplot idat xdat ydat zdat cdat ['sch'='']
-Draws the surface of triangles. Triangle vertexes are set by indexes @var{idat} of data points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If string contain @samp{#} then wire plot is produced. First dimensions of @var{idat} must be 3 or greater. See also @code{dots, crust}. Parameter @var{cdat} set the colors of triangles (if @var{idat}.ny=@var{cdat}.nx) or colors of vertexes (if @var{xdat}.nx=@var{cdat}.nx).
+Draws the surface of triangles. Triangle vertexes are set by indexes @var{idat} of data points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If string contain @samp{#} then wire plot is produced. First dimensions of @var{idat} must be 3 or greater. See also @code{dots, crust, quadplot}. Parameter @var{cdat} set the colors of triangles (if @var{idat}.ny=@var{cdat}.nx) or colors of vertexes (if @var{xdat}.nx=@var{cdat}.nx). See also @ref{dots}, @ref{crust}, @ref{quadplot}, @ref{tricont}.
+ at end deffn
+
+ at cindex tricont
+ at anchor{tricont}
+ at deffn {MGL command} tricont vdat idat xdat ydat zdat cdat ['sch'='' @code{zval=nan}]
+ at deffnx {MGL command} tricont vdat idat xdat ydat zdat ['sch'='' @code{zval=nan}]
+ at deffnx {MGL command} tricont idat xdat ydat zdat ['sch'='' @code{num=7 zval=nan}]
+Draws contour lines for surface of triangles at @var{z} = @var{zVal} (or for @var{z}=@var{vdat}[k] if @code{zval=nan}). Triangle vertexes are set by indexes @var{idat} of data points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. Contours are plotted for @var{zdat}[i,j]=@var{vdat}[k] for all k (or @var{num} contours equidistantly distributed in range [@var{Cmin}, @var{Cmax}].). See also @ref{triplot}, @ref{cont}.
@end deffn
+ at cindex quadplot
+ at anchor{quadplot}
+ at deffn {MGL command} quadplot idat xdat ydat ['sch'='' @code{zval=nan}]
+ at deffnx {MGL command} quadplot idat xdat ydat zdat ['sch'='']
+ at deffnx {MGL command} quadplot idat xdat ydat zdat cdat ['sch'='']
+Draws the surface of quadrangles. Quadrangle vertexes are set by indexes @var{idat} of data points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If string contain @samp{#} then wire plot is produced. First dimensions of @var{idat} must be 4 or greater. See also @code{triplot, dots, crust}. Parameter @var{cdat} set the colors of triangles (if @var{idat}.ny=@var{cdat}.nx) or colors of vertexes (if @var{xdat}.nx=@var{cdat}.nx). See also @ref{triplot}.
+ at end deffn
+
+ at cindex fplot
+ at anchor{fplot}
@deffn {MGL command} fplot 'y(x)' ['pen'='' @code{zval=nan num=100}]
-Draws command function @samp{y(x)} at plane z=@var{zval} where @samp{x} variable is changed in @code{xrange}. You do not need to create the data arrays to plot it. The parameter @var{num} set the minimal number of points along coordinate(s) for plots. See also @code{plot}.
+Draws command function @samp{y(x)} at plane z=@var{zval} where @samp{x} variable is changed in @code{xrange}. You do not need to create the data arrays to plot it. The parameter @var{num} set the minimal number of points along coordinate(s) for plots. See also @ref{plot}.
@end deffn
@deffn {MGL command} fplot 'x(t)' 'y(t)' 'z(t)' ['pen'='' @code{num=100}]
-Draws command parametrical curve @{@samp{x(t)}, @samp{y(t)}, @samp{z(t)}@} where @samp{t} variable is changed in range [0, 1]. You do not need to create the data arrays to plot it. The parameter @var{num} set the minimal number of points along coordinate(s) for plots. See also @code{plot}.
+Draws command parametrical curve @{@samp{x(t)}, @samp{y(t)}, @samp{z(t)}@} where @samp{t} variable is changed in range [0, 1]. You do not need to create the data arrays to plot it. The parameter @var{num} set the minimal number of points along coordinate(s) for plots. See also @ref{plot}.
@end deffn
+ at cindex fsurf
+ at anchor{fsurf}
@deffn {MGL command} fsurf 'z(x,y)' ['sch'='' @code{num=100}]
-Draws command surface for function @samp{z(x,y)} where @samp{x}, @samp{y} variable are changed in @code{xrange, yrange}. You do not need to create the data arrays to plot it. The parameter @var{num} set the minimal number of points along coordinate(s) for plots. See also @code{surf}.
+Draws command surface for function @samp{z(x,y)} where @samp{x}, @samp{y} variable are changed in @code{xrange, yrange}. You do not need to create the data arrays to plot it. The parameter @var{num} set the minimal number of points along coordinate(s) for plots. See also @ref{surf}.
@end deffn
@deffn {MGL command} fsurf 'x(u,v)' 'y(u,v)' 'z(u,v)' ['sch'='' @code{num=100}]
-Draws command parametrical surface @{@samp{x(u,v)}, @samp{y(u,v)}, @samp{z(u,v)}@} where @samp{u}, @samp{v} variable are changed in range [0, 1]. You do not need to create the data arrays to plot it. The parameter @var{num} set the minimal number of points along coordinate(s) for plots. See also @code{surf}.
+Draws command parametrical surface @{@samp{x(u,v)}, @samp{y(u,v)}, @samp{z(u,v)}@} where @samp{u}, @samp{v} variable are changed in range [0, 1]. You do not need to create the data arrays to plot it. The parameter @var{num} set the minimal number of points along coordinate(s) for plots. See also @ref{surf}.
@end deffn
@c ##################################################################
- at node Nonlinear fitting (MGL), Data create (MGL), Other plotting (MGL), MGL interface
- at section Nonlinear fitting (MGL)
- at cindex fit
- at cindex fits
- at cindex putsfit
+ at node Nonlinear fitting @MGL{}, Data create @MGL{}, Other plotting @MGL{}, MGL interface
+ at section Nonlinear fitting @MGL{}
-These commands fit data to formula. Fitting goal is to find formula parameters for the best fit the data points, i.e. to minimize the sum @math{\sum_i (f(x_i, y_i, z_i) - a_i)^2/s_i^2}. At this, approximation command @samp{f} can depend only on one argument @samp{x} (1D case), on two arguments @samp{x,y} (2D case) and on three arguments @samp{x,y,z} (3D case). The command @samp{f} also may depend on parameters. Normally the list of fitted parameters is specified by @var{var} string (like, @samp{abcd}). Usually user should supply initial values for fitted parameters by @var{ini} variable. But if he/she don't supply it then the zeros are used.
+These commands fit data to formula. Fitting goal is to find formula parameters for the best fit the data points, i.e. to minimize the sum @math{\sum_i (f(x_i, y_i, z_i) - a_i)^2/s_i^2}. At this, approximation function @samp{f} can depend only on one argument @samp{x} (1D case), on two arguments @samp{x,y} (2D case) and on three arguments @samp{x,y,z} (3D case). The command @samp{f} also may depend on parameters. Normally the list of fitted parameters is specified by @var{var} string (like, @samp{abcd}). Usually user should supply initial values for fitted parameters by @var{ini} variable. But if he/she don't supply it then the zeros are used.
-Commands @code{fit} and @code{fits} do not draw the obtained data themselves. They fill the data @var{out} by formula @samp{f} with found coefficients. At this, the @samp{x,y,z} coordinates are equidistantly distributed in the bounding box. Number of points in @var{out} is selected as maximal value of @var{out} size or 100. Also you may print the last formula with found coefficients by @code{putsfit} command. @sref{Fitting sample}
+Commands @ref{fit} and @ref{fits} do not draw the obtained data themselves. They fill the data @var{out} by formula @samp{f} with found coefficients. At this, the @samp{x,y,z} coordinates are equidistantly distributed in the bounding box. Number of points in @var{out} is selected as maximal value of @var{out} size or 100. Also you may print the last formula with found coefficients by @code{putsfit} command. @sref{Fitting sample}
The dimensions of arrays must be at least the same as the number of specified arrays @var{xdat}, @var{ydat}, @var{zdat}. Also the fitting only along specified directions will be performed (for example, along x and y if only @var{xdat} and @var{ydat} are specified). If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x.
+ at cindex fits
+ at anchor{fits}
@deffn {MGL command} fits adat sdat 'func' 'var' [ini=0]
@deffnx {MGL command} fits xdat adat sdat 'func' 'var' [ini=0]
@deffnx {MGL command} fits xdat ydat adat sdat 'func' 'var' [ini=0]
@@ -1089,6 +1313,8 @@ The dimensions of arrays must be at least the same as the number of specified ar
Fit data along x-, y- and z-directions for 1d-,2d- or 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]) with weight factor @var{sdat}[i,j,k].
@end deffn
+ at cindex fit
+ at anchor{fit}
@deffn {MGL command} fit adat 'func' 'var' [ini=0]
@deffnx {MGL command} fit xdat adat 'func' 'var' [ini=0]
@deffnx {MGL command} fit xdat ydat adat 'func' 'var' [ini=0]
@@ -1096,51 +1322,54 @@ Fit data along x-, y- and z-directions for 1d-,2d- or 3d array specified paramet
Fit data along x-, y- and z-directions for 1d-,2d- or 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]) with weight factor =1.
@end deffn
+ at cindex putsfit
+ at anchor{putsfit}
@deffn {MGL command} putsfit @code{x y} ['pre'='' 'fnt'='' @code{size=-1}]
-Print last fitted formula with found coefficients (as numbers) at position @{@var{x}, @var{y}@}. The string @var{pre} will be printed before formula. All other parameters are the same as in @ref{Text printing (MGL)}.
+Print last fitted formula with found coefficients (as numbers) at position @{@var{x}, @var{y}@}. The string @var{pre} will be printed before formula. All other parameters are the same as in @ref{Text printing @MGL{}}.
@end deffn
@c ##################################################################
- at node Data create (MGL), Data filling (MGL), Nonlinear fitting (MGL), MGL interface
- at section Data create (MGL)
- at cindex new
- at cindex var
- at cindex list
- at cindex delete
- at cindex copy
- at cindex column
- at cindex set_id
+ at node Data create @MGL{}, Data filling @MGL{}, Nonlinear fitting @MGL{}, MGL interface
+ at section Data create @MGL{}
+ at cindex new
+ at anchor{new}
@deffn {MGL command} new dat [@code{nx=1 ny=1 nz=1}]
Creates or recreates the array @var{dat} with specified size and fills it by zero. This command does nothing if one of parameters @var{nx}, @var{ny}, @var{nz} is zero or negative.
@end deffn
+ at cindex var
+ at anchor{var}
@deffn {MGL command} var dat @code{num v1 [v2=nan]}
-Creates new variable with name dat for one-dimensional array of size num. Array elements are equidistantly distributed in range [@var{v1}, @var{v2}]. If @var{v2}=@code{nan} then @var{v2=v1} is used.
+Creates new variable with name @var{dat} for one-dimensional array of size @var{num}. Array elements are equidistantly distributed in range [@var{v1}, @var{v2}]. If @var{v2}=@code{nan} then @var{v2=v1} is used.
@end deffn
+ at cindex list
+ at anchor{list}
@deffn {MGL command} list dat @code{v1 ...}
-Creates new variable with name @var{dat} and fills it by numeric values of command arguments @code{v1 ...}. Command can create one-dimensional and two-dimensional arrays with arbitrary values. For creating 2d array the user should use delimiter - which means that the following values lie in next row. Array sizes are [maximal of row sizes * number of rows]. For example, command @code{list 1 | 2 3} creates the array [1 0; 2 3]. Note, that the maximal number of arguments is 1000.
+Creates new variable with name @var{dat} and fills it by numeric values of command arguments @code{v1 ...}. Command can create one-dimensional and two-dimensional arrays with arbitrary values. For creating 2d array the user should use delimiter @samp{|} which means that the following values lie in next row. Array sizes are [maximal of row sizes * number of rows]. For example, command @code{list 1 | 2 3} creates the array [1 0; 2 3]. Note, that the maximal number of arguments is 1000.
@end deffn
@deffn {MGL command} list dat d1 ...
Creates new variable with name @var{dat} and fills it by data values of arrays of command arguments @var{d1 ...}. Command can create two-dimensional or three-dimensional (if arrays in arguments are 2d arrays) arrays with arbitrary values. Minor dimensions of all arrays in arguments should be equal to dimensions of first array d1. In the opposite case the argument will be ignored. Note, that the maximal number of arguments is 1000.
@end deffn
+ at cindex copy
+ at anchor{copy}
@deffn {MGL command} copy dat1 dat2 ['eq'='' @code{on_axis=on}]
@deffnx {MGL command} copy dat1 @code{val}
-Creates new variable with name @var{dat1} and fills it by data values of array @var{dat2}. At this, if parameter @var{eq} is specified then the data will be modified by corresponding formula by the same way as in @code{fill} command (for @code{on_axis=on}) or in @code{modify} command (for @code{on_axis=off}).
- at end deffn
-
- at deffn {MGL command} delete dat
-Deletes variable @var{dat} and makes its memory free. Can be useful for huge data arrays.
+Creates new variable with name @var{dat1} and fills it by data values of array @var{dat2}. At this, if parameter @var{eq} is specified then the data will be modified by corresponding formula by the same way as in @ref{fill} command (for @code{on_axis=on}) or in @ref{modify} command (for @code{on_axis=off}).
@end deffn
- at deffn {MGL command} set_id dat 'ids'
+ at cindex idset
+ at anchor{idset}
+ at deffn {MGL command} idset dat 'ids'
Set the symbol id for data columns. The string must contain one symbol 'a'...'z' per column (without spaces).
@end deffn
+ at cindex info
+ at anchor{info}
@deffn {MGL command} info dat [@code{detail=off}]
Display information (sizes, maximum/minimum, momentums and so on) about the data dat. Show brief information by default (if @code{detail=off}).
@end deffn
@@ -1150,51 +1379,56 @@ Display @var{text} as information (warning).
@end deffn
@c ------------------------------------------------------------------
- at node Data filling (MGL), Rearrange data (MGL), Data create (MGL), MGL interface
- at section Data filling (MGL)
+ at node Data filling @MGL{}, Rearrange data @MGL{}, Data create @MGL{}, MGL interface
+ at section Data filling @MGL{}
@cindex fill
@cindex modify
+ at cindex fill
+ at anchor{fill}
@deffn {MGL command} fill dat v1 v2 ['dir'='x']
Equidistantly fills the data values to range [@var{x1}, @var{x2}] in direction @var{dir}=@{@samp{x}, at samp{y}, at samp{z}@}.
@end deffn
- at deffn {MGL command} fill dat 'eq' [vdat=0 wdat=0]
+ at deffn {MGL command} fill dat 'eq'
+ at deffnx {MGL command} fill dat 'eq' vdat
+ at deffnx {MGL command} fill dat 'eq' vdat wdat
Command fills the value of array according to the formula in string @var{eq}. Formula is an arbitrary expression depending on variables @samp{x}, @samp{y}, @samp{z}, @samp{u}, @samp{v}, @samp{w}. Coordinates @samp{x}, @samp{y}, @samp{z} are supposed to be normalized in @emph{bounding box} (in difference from @code{modify} commands). Variable @samp{u} is the original value of the array. Variables @samp{v} and @samp{w} are values of @var{vdat}, @var{wdat}.
@end deffn
+ at cindex modify
+ at anchor{modify}
@deffn {MGL command} modify dat 'eq' [@code{dim=0}]
-Command fills the value of array according to the formula in string @var{eq}. Formula is an arbitrary expression depending on variables @samp{x}, @samp{y}, @samp{z}, @samp{u}. Coordinates @samp{x}, @samp{y}, @samp{z} are data indexes normalized in range [0,1]. Variable @samp{u} is the original value of the array. Modification will be fulfilled only for slices >=@var{dim}.
- at end deffn
-
- at deffn {MGL command} modify dat 'eq' vdat [wdat=0]
-Command fills the value of array according to the formula in string @var{eq}. Formula is an arbitrary expression depending on variables @samp{x}, @samp{y}, @samp{z}, @samp{u}, @samp{v}, @samp{w}. Coordinates @samp{x}, @samp{y}, @samp{z} are data indexes normalized in range [0,1]. Variable @samp{u} is the original value of the array. Variables @samp{v} and @samp{w} are values of @var{vdat}, @var{wdat}. If optional data @var{vdat}, @var{wdat} (must be the same size as @var{dat}) are specified then variables @samp{v} and @samp{w} denote its values else they are zero.
+ at deffnx {MGL command} modify dat 'eq' vdat
+ at deffnx {MGL command} modify dat 'eq' vdat wdat
+Command fills the value of array according to the formula in string @var{eq}. Formula is an arbitrary expression depending on variables @samp{x}, @samp{y}, @samp{z}, @samp{u}. Coordinates @samp{x}, @samp{y}, @samp{z} are data indexes normalized in range [0,1]. Variable @samp{u} is the original value of the array. If @var{dim}>0 is specified then modification will be fulfilled only for slices >=@var{dim}.
@end deffn
- at deffn {MGL command} put a @code{val [i=: j=: k=:]}
-Function sets value(s) of array a[@var{i}, @var{j}, @var{k}] = @var{val}. Negative indexes @var{i}, @var{j}, @var{k}=@samp{:} set the value @var{val} to whole range in corresponding direction(s). For example, @code{put a val : 0 :} sets a[i,0,j]=@var{val} for i=0...(a.nx-1), j=0...(a.nz-1).
+ at cindex put
+ at anchor{put}
+ at deffn {MGL command} put dat @code{val [i=: j=: k=:]}
+Function sets value(s) of array @var{dat}[@var{i}, @var{j}, @var{k}] = @var{val}. Negative indexes @var{i}, @var{j}, @var{k}=@samp{:} set the value @var{val} to whole range in corresponding direction(s). For example, @code{put dat val : 0 :} sets @var{dat}[i,0,j]=@var{val} for i=0...(@var{dat}.nx-1), j=0...(@var{dat}.nz-1).
@end deffn
- at deffn {MGL command} put a v [@code{i=: j=: k=:}]
-Function copies value(s) from array @var{v} to the range of array @var{a}. Negative indexes @var{i}, @var{j}, @var{k}=@samp{:} set the range in corresponding direction(s). At this minor dimensions of array @var{v} should be large than corresponding dimensions of array @var{a}. For example, @code{put a v : 0 :} sets a[i,0,j]=v.ny>nz ? v[i,j] : v[i], where i=0...(a.nx-1), j=0...(a.nz-1) and condition v.nx>=a.nx is true.
+ at deffn {MGL command} put dat vdat [@code{i=: j=: k=:}]
+Function copies value(s) from array @var{vdat} to the range of array @var{dat}. Negative indexes @var{i}, @var{j}, @var{k}=@samp{:} set the range in corresponding direction(s). At this minor dimensions of array @var{vdat} should be large than corresponding dimensions of array @var{dat}. For example, @code{put dat v : 0 :} sets @var{dat}[i,0,j]=@var{vdat}.ny>@var{dat}.nz ? @var{vdat}[i,j] : @var{vdat}[i], where i=0...(@var{dat}.nx-1), j=0...(@var{dat}.nz-1) and condition vdat.nx>=dat.nx is true.
@end deffn
@c ------------------------------------------------------------------
- at node Rearrange data (MGL), File I/O (MGL), Data filling (MGL), MGL interface
- at section Rearrange data (MGL)
- at cindex rearrange
- at cindex extend
- at cindex transpose
- at cindex squeeze
- at cindex crop
+ at node Rearrange data @MGL{}, File I/O @MGL{}, Data filling @MGL{}, MGL interface
+ at section Rearrange data @MGL{}
+ at cindex rearrange
+ at anchor{rearrange}
@deffn {MGL command} rearrange dat @code{mx [my=0 mz=0]}
Rearrange dimensions without changing data array so that resulting sizes should be @var{mx}*@var{my}*@var{mz} < nx*ny*nz. If some of parameter @var{my} or @var{mz} are zero then it will be selected to optimal fill of data array. For example, if @var{my}=0 then it will be change to @var{my}=nx*ny*nz/@var{mx} and @var{mz} will be 1.
@end deffn
+ at cindex extend
+ at anchor{extend}
@deffn {MGL command} extend dat @code{n1 [n2=0]}
Increase the dimensions of the data by inserting new (|@var{n1}|+1)-th slices after (for @var{n1}>0) or before (for @var{n1}<0) of existed one. It is possible to insert 2 dimensions simultaneously for 1d data by using parameter @var{n2}. Data to new slices is copy from existed one. For example, for @var{n1}>0 new array will be
@iftex
@@ -1205,10 +1439,14 @@ a_ij^new = a_i^old where j=0... at var{n1}. Correspondingly, for @var{n1}<0 new arr
@end ifnottex
@end deffn
+ at cindex transpose
+ at anchor{transpose}
@deffn {MGL command} transpose dat ['dim'='yxz']
Transposes (shift order of) dimensions of the data. New order of dimensions is specified int string @var{dim}. This command may be useful also for the reading of one-dimensional data.
@end deffn
+ at cindex squeeze
+ at anchor{squeeze}
@deffn {MGL command} squeeze dat @code{rx [ry=1 rz=1 sm=off]}
Reduces the data size by excluding data elements which indexes are not divisible by @var{rx}, @var{ry}, @var{rz} correspondingly. Parameter @var{sm} set to use smoothing
@iftex
@@ -1219,22 +1457,34 @@ Reduces the data size by excluding data elements which indexes are not divisible
@end ifnottex
@end deffn
+ at cindex crop
+ at anchor{crop}
@deffn {MGL command} crop dat @code{n1 n2} 'dir'
Cuts off edges of the data @var{i}<@var{n1} and @var{i}>@var{n2} if @var{n2}>0 or @var{i}>@code{n[xyz]}- at var{n2} if @var{n2}<=0 along direction @var{dir}.
@end deffn
+ at cindex delete
+ at anchor{delete}
+ at deffn {MGL command} delete dat
+Deletes variable @var{dat} and makes its memory free. Can be useful for huge data arrays.
+ at end deffn
+
+ at deffn {MGL command} delete dat 'dir' @code{[pos=off num=0]}
+Delete @var{num} slices along @var{dir}-direction at position @var{pos}.
+ at end deffn
+
+ at cindex insert
+ at anchor{insert}
+ at deffn {MGL command} insert dat 'dir' @code{[pos=off num=0]}
+Insert @var{num} slices along @var{dir}-direction at position @var{pos}.
+ at end deffn
+
@c ------------------------------------------------------------------
- at node File I/O (MGL), Make another data (MGL), Rearrange data (MGL), MGL interface
- at section File I/O (MGL)
- at cindex read
- at cindex readhdf
- at cindex readmat
- at cindex readall
- at cindex save
- at cindex savehdf
- at cindex export
- at cindex import
+ at node File I/O @MGL{}, Make another data @MGL{}, Rearrange data @MGL{}, MGL interface
+ at section File I/O @MGL{}
+ at cindex read
+ at anchor{read}
@deffn {MGL command} read dat 'fname'
Reads data from tab-separated text file with auto determining sizes of the data.
@end deffn
@@ -1243,10 +1493,14 @@ Reads data from tab-separated text file with auto determining sizes of the data.
Reads data from text file with specified data sizes. This command does nothing if one of parameters @var{mx}, @var{my} or @var{mz} is zero or negative.
@end deffn
+ at cindex readmat
+ at anchor{readmat}
@deffn {MGL command} readmat dat 'fname' [@code{dim=2}]
Read data from text file with size specified at beginning of the file by first @var{dim} numbers. At this, variable @var{dim} set data dimensions.
@end deffn
+ at cindex readall
+ at anchor{readall}
@deffn {MGL command} readall dat 'templ' @code{v1 v2 [dv=1 slice=off]}
Join data arrays from several text files. The file names are determined by function call @code{sprintf(fname,templ,val);}, where @var{val} changes from @var{v1} to @var{v2} with step @var{dv}. The data load one-by-one in the same slice if @var{slice}=@code{off} or as slice-by-slice if @var{slice}=@code{on}.
@end deffn
@@ -1255,48 +1509,56 @@ Join data arrays from several text files. The file names are determined by funct
Join data arrays from several text files which filenames satisfied the template @var{templ} (for example, @var{templ}=@code{"t_*.dat"}). The data load one-by-one in the same slice if @var{slice}=@code{off} or as slice-by-slice if @var{slice}=@code{on}.
@end deffn
+ at cindex save
+ at anchor{save}
@deffn {MGL command} save dat 'fname'
Saves the whole data array to tab-separated text file.
@end deffn
+ at cindex readhdf
+ at anchor{readhdf}
@deffn {MGL command} readhdf dat 'fname' 'dname'
-Reads data array named @var{dname} from HDF file @var{fname}.
+Reads data array named @var{dname} from HDF5 or HDF4 file @var{fname}.
@end deffn
+
+ at cindex savehdf
+ at anchor{savehdf}
@deffn {MGL command} savehdf dat 'fname' 'dname'
-Saves data array named @var{dname} from HDF file @var{fname}.
+Saves data array named @var{dname} from HDF5 or HDF4 file @var{fname}.
@end deffn
+ at cindex import
+ at anchor{import}
@deffn {MGL command} import dat 'fname' 'sch' [@code{v1=0 v2=1}]
Reads data from bitmap file. The RGB values of bitmap pixels are transformed to float values in range [@var{v1}, @var{v2}] using color scheme @var{sch} (@pxref{Color scheme}).
@end deffn
+ at cindex export
+ at anchor{export}
@deffn {MGL command} export dat 'fname' 'sch' [@code{v1=0 v2=0}]
Saves data matrix to bitmap file. The data values are transformed from range [@var{v1}, @var{v2}] to RGB pixels of bitmap using color scheme @var{sch} (@pxref{Color scheme}). If @var{v1}>=@var{v2} then the values of @var{v1}, @var{v2} are automatically determined as minimal and maximal value of the data array.
@end deffn
@c ------------------------------------------------------------------
- at node Make another data (MGL), Commands on direction (MGL), File I/O (MGL), MGL interface
- at section Make another data (MGL)
- at cindex subdata
- at cindex hist
- at cindex momentum
- at cindex sum
- at cindex max
- at cindex min
- at cindex combine
- at cindex evaluate
- at cindex resize
+ at node Make another data @MGL{}, Change data @MGL{}, File I/O @MGL{}, MGL interface
+ at section Make another data @MGL{}
+ at cindex combine
+ at anchor{combine}
@deffn {MGL command} combine res adat bdat
Returns direct multiplication of arrays (like, res[i,j] = adat[i]*bdat[j] and so on).
@end deffn
+ at cindex evaluate
+ at anchor{evaluate}
@deffn {MGL command} evaluate res dat idat [@code{norm=on}]
@deffnx {MGL command} evaluate res dat idat jdat [@code{norm=on}]
@deffnx {MGL command} evaluate res dat idat jdat kdat [@code{norm=on}]
-Get array which values is result of interpolation of original array for coordinates from other arrays. All dimensions must be the same for data @var{idat}, @var{jdat}, @var{kdat}. Coordinates from @var{idat}, @var{jdat}, @var{kdat} are supposed to be normalized in range [0,1] (if @var{norm}=@code{true}) or in range [0,nx], [0,ny], [0,nz] correspondingly.
+Get array which values is result of interpolation of original array for coordinates from other arrays (for example, res[i,j]=dat[idat[i,j],jdat[i,j]]). All dimensions must be the same for data @var{idat}, @var{jdat}, @var{kdat}. Coordinates from @var{idat}, @var{jdat}, @var{kdat} are supposed to be normalized in range [0,1] (if @var{norm}=@code{true}) or in ranges [0,nx], [0,ny], [0,nz] correspondingly.
@end deffn
+ at cindex hist
+ at anchor{hist}
@deffn {MGL command} hist res dat @code{num v1 v2 [nsub=0]}
@deffnx {MGL command} hist res dat wdat @code{num v1 v2 [nsub=0]}
Creates @var{num}-th points distribution @var{res} of the data values of @var{dat} in range [@var{v1}, @var{v2}]. Array @var{wdat} specifies weights of the data elements (all weight is 1 if @var{wdat} is not specified). Parameter @var{nsub} define the number of additional interpolated points (for smoothness of histogram).
@@ -1309,8 +1571,8 @@ Creates distribution @var{res} of the data values of @var{adat} in axis range [M
@end deffn
-
-
+ at cindex momentum
+ at anchor{momentum}
@deffn {MGL command} momentum res dat 'how' ['dir'='z']
Get momentum (1D-array) of the data along direction @var{dir}. String @var{how} contain kind of momentum. The momentum is defined like as
@iftex
@@ -1322,81 +1584,102 @@ res_k = \sum_ij how(x_i,y_j,z_k) a_ij/ \sum_ij a_ij
if @var{var}=@samp{z} and so on. Coordinates @samp{x}, @samp{y}, @samp{z} are data indexes normalized in range [0,1].
@end deffn
+ at cindex sum
+ at anchor{sum}
@deffn {MGL command} sum res dat 'dir'
Gets array which is the result of summation in given direction or direction(s).
@end deffn
+ at cindex max
+ at anchor{max}
@deffn {MGL command} max res dat 'dir'
Gets array which is the maximal data values in given direction or direction(s).
@end deffn
+ at cindex min
+ at anchor{min}
@deffn {MGL command} min res dat 'dir'
Gets array which is the minimal data values in given direction or direction(s).
@end deffn
+ at cindex resize
+ at anchor{resize}
@deffn {MGL command} resize res dat @code{mx [my=1 mz=1]}
Makes array @var{res} of sizes @var{mx}, @var{my}, @var{mz} with interpolated data of array @var{dat}.
@end deffn
+ at cindex subdata
+ at anchor{subdata}
@deffn {MGL command} subdata res dat @code{xx [yy=: zz=:]}
Extracts sub-array data @var{res} from the original data @var{dat} array keeping fixed positive index. For example @code{subdata a b : 2} extracts 3d row (indexes are zero based), @code{subdata a b 4 :} extracts 5th column, @code{subdata a b : : 3} extracts 4th slice and so on. Note that symbol @samp{:} is defined @samp{:}=@code{-1} in MGL.
@end deffn
+ at cindex trace
+ at anchor{trace}
@deffn {MGL command} trace res dat
-Gets array of diagonal elements dat[i,i] (for 2D case) or dat[i,i,i] (for 3D case) where i=0...nx-1. Function return copy of itself for 1D case. Data array must have dimensions ny,nz >= nx or ny,nz = 1.
+Gets array of diagonal elements @var{dat}[i,i] (for 2D case) or @var{dat}[i,i,i] (for 3D case) where i=0...nx-1. Function return copy of @var{dat} for 1D case. Data array must have dimensions @var{dat}.ny, @var{dat}.nz >= @var{dat}.nx or @var{dat}.ny, @var{dat}.nz = 1.
@end deffn
+ at cindex transform
+ at anchor{transform}
@deffn {MGL command} transform dat 'type' real imag
-Do integral transformation of complex data @var{real}, @var{imag} on specified direction. Now only Fourier transformation is supported. The order of transformations is specified in string @var{type}: first character for x-dimension, second one for y-dimension, third one for z-dimension. The possible character are: @samp{f} is forward Fourier transformation, @samp{i} is inverse Fourier transformation, @samp{n} or @samp{ } is no transformation.
+Do integral transformation of complex data @var{real}, @var{imag} on specified direction. The order of transformations is specified in string @var{type}: first character for x-dimension, second one for y-dimension, third one for z-dimension. The possible character are: @samp{f} is forward Fourier transformation, @samp{i} is inverse Fourier transformation, @samp{s} is Sine transform, @samp{c} is Cosine transform, @samp{h} is Hankel transform, @samp{n} or @samp{ } is no transformation.
@end deffn
+ at cindex transforma
+ at anchor{transforma}
@deffn {MGL command} transforma dat 'type' ampl phase
-Do integral transformation of complex data @var{ampl}, @var{phase} on specified direction. Now only Fourier transformation is supported. The order of transformations is specified in string @var{type}: first character for x-dimension, second one for y-dimension, third one for z-dimension. The possible character are: @samp{f} is forward Fourier transformation, @samp{i} is inverse Fourier transformation, @samp{n} or @samp{ } is no transformation.
+The same as previous but with specified amplitude @var{ampl} and phase @var{phase} of complex numbers.
@end deffn
+ at cindex stfad
+ at anchor{stfad}
@deffn {MGL command} stfad res real imag @code{dn} ['dir'='x']
-Short time Fourier analysis for real and imaginary parts. Output is amplitude of partial Fourier of length @var{dn}. For example if @var{dir}=@samp{x}, result will have size @{int(nx/dn), dn, ny@} and it will contain @math{res[i,j,k]=|\sum_d^dn exp(I*j*d)*(real[i*dn+d,k]+I*imag[i*dn+d,k])|/dn}.
+Short time Fourier transformation for real and imaginary parts. Output is amplitude of partial Fourier of length @var{dn}. For example if @var{dir}=@samp{x}, result will have size @{int(nx/dn), dn, ny@} and it will contain @math{res[i,j,k]=|\sum_d^dn exp(I*j*d)*(real[i*dn+d,k]+I*imag[i*dn+d,k])|/dn}.
@end deffn
+ at cindex pde
+ at anchor{pde}
@deffn {MGL command} pde res 'ham' ini_re ini_im [@code{dz=0.1 k0=100}]
-Solves equation du/dz = i*k0*@var{ham}(p,q,x,y,z,|u|)[u], where p=-i/k0*d/dx, q=-i/k0*d/dy are pseudo-differential operators. Parameters @var{ini_re}, @var{ini_im} specify real and imaginary part of initial field distribution. Coordinates of the equation (and the solution) are supposed to be in the bounding box. Note, that really this ranges are increased by factor 3/2 for purpose of reducing reflection from boundaries. Parameter @var{dz} set the step along evolutionary coordinate z. At this moment, simplified form of function @var{ham} is supported -- all ``mixed'' terms (like @samp{x*p}->x*d/dx) are excluded. For example, in 2D case this function is effectively @math{ham = f(p,z) + g(x,z,u)}. However commutable combinations (like @samp{x*q}->x*d/dy) are allowed. Here variable @samp{u} is used for field amplitude |u|. This allow one solve nonlinear problems -- for example, for nonlinear Shrodinger equation you may set @code{ham='p^2+q^2-u^2'}. You may specify imaginary part for wave absorption, like @code{ham = 'p^2+i*x*(x>0)'}, but only if dependence on variable @samp{i} is linear (i.e. @math{ham = hre+i*him}).
+Solves equation du/dz = i*k0*@var{ham}(p,q,x,y,z,|u|)[u], where p=-i/k0*d/dx, q=-i/k0*d/dy are pseudo-differential operators. Parameters @var{ini_re}, @var{ini_im} specify real and imaginary part of initial field distribution. Coordinates of the equation (and the solution) are supposed to be in the bounding box. Note, that really this ranges are increased by factor 3/2 for purpose of reducing reflection from boundaries. Parameter @var{dz} set the step along evolutionary coordinate z. At this moment, simplified form of function @var{ham} is supported -- all ``mixed'' terms (like @samp{x*p}->x*d/dx) are excluded. For example, in 2D case this function is effectively @math{ham = f(p,z) + g(x,z,u)}. However commutable combinations (like @samp{x*q}->x*d/dy) are allowed. Here variable @samp{u} is used for field amplitude |u|. This allow one solve nonlinear problems -- for example, for non-linear Shrodinger equation you may set @code{ham='p^2+q^2-u^2'}. You may specify imaginary part for wave absorption, like @code{ham = 'p^2+i*x*(x>0)'}, but only if dependence on variable @samp{i} is linear (i.e. @math{ham = hre+i*him}). @sref{PDE sample}
@end deffn
+ at cindex ray
+ at anchor{ray}
@deffn {MGL command} ray res 'ham' @code{x0 y0 z0 p0 q0 v0 [dt=0.1 tmax=10]}
-Solves GO ray equation like d at emph{r}/dt = d @var{ham}/d at emph{p}, d at emph{p}/dt = -d @var{ham}/d at emph{r}. This is Hamiltonian equations for particle trajectory in 3D case. Here @var{ham} is Hamiltonian which may depend on coordiantes @samp{x}, @samp{y}, @samp{z}, momentums @samp{p}=px, @samp{q}=py, @samp{v}=pz and time @samp{t}: @math{ham = H(x,y,z,p,q,v,t)}. The starting point (at @code{t=0}) is defined by variables @{@var{x0}, @var{y0}, @var{z0}, @var{p0}, @var{q0}, @var{v0}@}. Parameters @var{dt} and @var{tmax} specify the integration step and maximal time for ray tracing. Result is array of @{x,y,z,p,q,v,t@} with dimensions @{7 * int(@var{tmax}/@var{dt}+1) @}.
+Solves GO ray equation like d at emph{r}/dt = d @var{ham}/d at emph{p}, d at emph{p}/dt = -d @var{ham}/d at emph{r}. This is Hamiltonian equations for particle trajectory in 3D case. Here @var{ham} is Hamiltonian which may depend on coordiantes @samp{x}, @samp{y}, @samp{z}, momentums @samp{p}=px, @samp{q}=py, @samp{v}=pz and time @samp{t}: @math{ham = H(x,y,z,p,q,v,t)}. The starting point (at @code{t=0}) is defined by variables @{@var{x0}, @var{y0}, @var{z0}, @var{p0}, @var{q0}, @var{v0}@}. Parameters @var{dt} and @var{tmax} specify the integration step and maximal time for ray tracing. Result is array of @{x,y,z,p,q,v,t@} with dimensions @{7 * int(@var{tmax}/@var{dt}+1) @}. See also @ref{pde}. @sref{Beam tracing sample}
@end deffn
+ at cindex qo2d
+ at anchor{qo2d}
@deffn {MGL command} qo2d res 'ham' ini_re ini_im ray [@code{r=1 k0=100} xx=0 yy=0]
-Solves equation du/dt = i*k0*@var{ham}(p,q,x,y,|u|)[u], where p=-i/k0*d/dx, q=-i/k0*d/dy are pseudo-differential operators (see @code{mglPDE()} for details). Parameters @var{ini_re}, @var{ini_im} specify real and imaginary part of initial field distribution. Parameters @var{ray} set the reference ray, i.e. the ray around which the accompanied coordinate system will be maked. You may use, for example, the array created by @code{mglRay()} function. Note, that the reference ray @strong{must be} smooth enough to make accompanied coodrinates unambiguity. Otherwise errors in the solution may appear. If @var{xx} and @var{yy} are non-zero then Cartesian coordinates for each point will be written into them. @sref{Beam tracing sample}
+Solves equation du/dt = i*k0*@var{ham}(p,q,x,y,|u|)[u], where p=-i/k0*d/dx, q=-i/k0*d/dy are pseudo-differential operators. Parameters @var{ini_re}, @var{ini_im} specify real and imaginary part of initial field distribution. Parameters @var{ray} set the reference ray, i.e. the ray around which the accompanied coordinate system will be maked. You may use, for example, the array created by @ref{ray} function. Note, that the reference ray @strong{must be} smooth enough to make accompanied coodrinates unambiguity. Otherwise errors in the solution may appear. If @var{xx} and @var{yy} are non-zero then Cartesian coordinates for each point will be written into them. @sref{Beam tracing sample}
@end deffn
+ at cindex jacobian
+ at anchor{jacobian}
@deffn {MGL command} jacobian res xdat ydat [zdat=0]
-Computates the Jacobian for transformation @{i,j,k@} to @{@var{xdat}, at var{ydat}, at var{zdat}@} where initial coordinates @{i,j,k@} are data indexes normalized in range [0,1]. The Jacobian is determined by formula det||@math{dr_\alpha/d\xi_\beta}|| where @math{r}=@{@var{xdat}, at var{ydat}, at var{zdat}@} and @math{\xi}=@{i,j,k@}. All dimensions must be the same for all data arrays. Data must be 3D if all 3 arrays @{@var{xdat}, at var{ydat}, at var{zdat}@} are specified or 2D if only 2 arrays @{@var{xdat}, at var{ydat}@} are specified.
+Computates the Jacobian for transformation @{i,j,k@} to @{@var{xdat}, at var{ydat}, at var{zdat}@} where initial coordinates @{i,j,k@} are data indexes normalized in range [0,1]. The Jacobian is determined by formula det||@math{dr_\alpha/d\xi_\beta}|| where @math{r}=@{@var{xdat}, at var{ydat}, at var{zdat}@} and @math{\ xi}=@{i,j,k@}. All dimensions must be the same for all data arrays. Data must be 3D if all 3 arrays @{@var{xdat}, at var{ydat}, at var{zdat}@} are specified or 2D if only 2 arrays @{@var{xdat}, at var{ydat}@} are specified.
@end deffn
@c ------------------------------------------------------------------
- at node Commands on direction (MGL), Operators (MGL), Make another data (MGL), MGL interface
- at section Commands on direction (MGL)
- at cindex cumsum
- at cindex integral
- at cindex diff
- at cindex diff2
- at cindex swap
- at cindex mirror
- at cindex sew
- at cindex smooth
- at cindex envelop
- at cindex norm
- at cindex normsl
+ at node Change data @MGL{}, Operators @MGL{}, Make another data @MGL{}, MGL interface
+ at section Change data @MGL{}
These commands change the data in some direction like differentiations, integrations and so on. The direction in which the change will applied is specified by the string parameter, which may contain @samp{x}, @samp{y} or @samp{z} characters for 1-st, 2-nd and 3-d dimension correspondingly.
+ at cindex cumsum
+ at anchor{cumsum}
@deffn {MGL command} cumsum dat 'dir'
Cumulative summation of the data in given direction or directions.
@end deffn
+ at cindex integrate
+ at anchor{integrate}
@deffn {MGL command} integrate dat 'dir'
Integrates (like cumulative summation) the data in given direction or directions.
@end deffn
+ at cindex diff
+ at anchor{diff}
@deffn {MGL command} diff dat 'dir'
Differentiates the data in given direction or directions.
@end deffn
@@ -1404,27 +1687,65 @@ Differentiates the data in given direction or directions.
Differentiates the data @var{dat} specified parametrically in direction @var{xdat} with @var{ydat}, @var{zdat}=constant. Parameter @var{zdat} can be omitted that correspond to 2D case. Parametrical differentiation uses the formula (for 2D case): @math{da/dx = (a_j*y_i-a_i*y_j)/(x_j*y_i-x_i*y_j)} where @math{a_i=da/di, a_j=da/dj} denotes usual differentiation along 1st and 2nd dimensions. The similar formula is used for 3D case. Note, that you may change the order of arguments -- for example, if you have 2D data a(i,j) which depend on coordinates @{x(i,j), y(i,j)@} then usual derivative along @samp{x} will be @code{diff a x y} and usual derivative along @samp{y} will be @code{diff a y x}.
@end deffn
+ at cindex diff2
+ at anchor{diff2}
@deffn {MGL command} diff2 dat 'dir'
Double-differentiates (like Laplace operator) the data in given direction.
@end deffn
+
+ at cindex sinfft
+ at anchor{sinfft}
+ at deffn {MGL command} sinfft dat 'dir'
+Do Sine transform of the data in given direction or directions. The Sine transform is @math{\sum a_i \sin(k i)}.
+ at end deffn
+ at cindex cosfft
+ at anchor{cosfft}
+ at deffn {MGL command} cosfft dat 'dir'
+Do Cosine transform of the data in given direction or directions. The Cosine transform is @math{\sum a_i \cos(k i)}.
+ at end deffn
+ at cindex hankel
+ at anchor{hankel}
+ at deffn {MGL command} hankel dat 'dir'
+Do Hankel transform of the data in given direction or directions. The Hankel transform is @math{\sum a_i J_0(k i)}.
+ at end deffn
+
+
+ at cindex swap
+ at anchor{swap}
@deffn {MGL command} swap dat 'dir'
Swaps the left and right part of the data in given direction (useful for Fourier spectrum).
@end deffn
+ at cindex roll
+ at anchor{roll}
+ at deffn {MGL command} roll dat 'dir' num
+Rolls the data along direction 'dir'. Resulting array will be out[i] = ini[(i+num)%nx] if @code{dir='x'}.
+ at end deffn
+
+ at cindex mirror
+ at anchor{mirror}
@deffn {MGL command} mirror dat 'dir'
Mirror the left-to-right part of the data in given direction. Looks like change the value index @var{i}->@var{n-i}.
@end deffn
+ at cindex sew
+ at anchor{sew}
@deffn {MGL command} sew dat ['dir'='xyz' @code{da=2*pi}]
Remove value steps (like phase jumps after inverse trigonometric commands) with period @var{da} in given direction.
@end deffn
+ at cindex smooth
+ at anchor{smooth}
@deffn {MGL command} smooth data @code{type} ['dir'='xyz']
Smooths the data on specified direction or directions by method @var{Type}. Now 4 methods are supported: @samp{0} does nothing, @samp{1} linear averaging by 3 points, @samp{2} linear averaging by 5 points, @samp{3} quadratic averaging by 5 points.
@end deffn
+ at cindex envelop
+ at anchor{envelop}
@deffn {MGL command} envelop dat ['dir'='x']
Find envelop for data values along direction @var{dir}. Only one direction can be specified at once.
@end deffn
+ at cindex normsl
+ at anchor{normsl}
@deffn {MGL command} normsl dat @code{v1 v2} ['dir'='z' @code{keep=on sym=off}]
Normalizes data slice-by-slice along direction @var{dir} the data in slices to range [@var{v1}, at var{v2}]. If flag @var{sym}=@code{on} then symmetrical interval [-max(|v1|,|v2|), max(|v1|,|v2|)] is used. If @var{keep} is set then maximal value of k-th slice will be limited by
@iftex
@@ -1435,170 +1756,218 @@ Normalizes data slice-by-slice along direction @var{dir} the data in slices to r
@end ifnottex
@end deffn
+ at cindex norm
+ at anchor{norm}
@deffn {MGL command} norm dat @code{v1 v2 [sym=off dim=0]}
Normalizes the data to range [@var{v1}, at var{v2}]. If flag @var{sym}=@code{on} then symmetrical interval [-max(|v1|,|v2|), max(|v1|,|v2|)] is used. Modification will be applied only for slices >=@var{dim}.
@end deffn
-
@c ------------------------------------------------------------------
- at node Operators (MGL), Program flow (MGL), Commands on direction (MGL), MGL interface
- at section Operators (MGL)
- at cindex multo
- at cindex addto
- at cindex divto
- at cindex subto
+ at node Operators @MGL{}, Program flow @MGL{}, Change data @MGL{}, MGL interface
+ at section Operators @MGL{}
+ at cindex multo
+ at anchor{multo}
@deffn {MGL command} multo dat dat2
Multiplies the data by the other one for each element.
@end deffn
- at deffn {MGL command} divto dat dat2
-Divides the data by the other one for each element.
- at end deffn
- at deffn {MGL command} addto dat dat2
-Adds the other data.
- at end deffn
- at deffn {MGL command} subto dat dat2
-Subtracts the other data.
- at end deffn
@deffn {MGL command} multo dat @code{val}
Multiplies each element by the number.
@end deffn
+
+ at cindex divto
+ at anchor{divto}
+ at deffn {MGL command} divto dat dat2
+Divides the data by the other one for each element.
+ at end deffn
@deffn {MGL command} divto dat @code{val}
Divides each element by the number.
@end deffn
+
+ at cindex addto
+ at anchor{addto}
+ at deffn {MGL command} addto dat dat2
+Adds the other data.
+ at end deffn
@deffn {MGL command} addto dat @code{val}
Adds the number to each element.
@end deffn
+
+ at cindex subto
+ at anchor{subto}
+ at deffn {MGL command} subto dat dat2
+Subtracts the other data.
+ at end deffn
@deffn {MGL command} subto dat @code{val}
Subtracts the number to each element.
@end deffn
@c ------------------------------------------------------------------
- at node Program flow (MGL), Command options (MGL), Operators (MGL), MGL interface
- at section Program flow (MGL)
- at cindex call
- at cindex chdir
- at cindex define
- at cindex if
- at cindex elseif
- at cindex else
- at cindex endif
- at cindex for
- at cindex next
- at cindex once
- at cindex stop
+ at node Program flow @MGL{}, Command options @MGL{}, Operators @MGL{}, MGL interface
+ at section Program flow @MGL{}
These commands control program flow, like, conditions, cycles, define script arguments and so on.
- at deffn {MGL command} call 'fname'
-Executes script @var{fname}.
- at end deffn
+ at cindex chdir
+ at anchor{chdir}
@deffn {MGL command} chdir 'path'
Changes the current directory to @var{path}.
@end deffn
+
+ at cindex define
+ at anchor{define}
@deffn {MGL command} define $N smth
-Sets @var{N}-th script argument to @var{smth}. Note, that @var{smth} is used as is (with @samp{'} symbols if present).
+Sets @var{N}-th script argument to @var{smth}. Note, that @var{smth} is used as is (with @samp{'} symbols if present). Here @var{N} is digit (0...9) or alpha (a...z).
@end deffn
@deffn {MGL command} define name smth
-Create scalar variable @code{name} which have the numeric value of @code{smth}. Later you can use this variable as usual number.
+Create scalar variable @code{name} which have the numeric value of @code{smth}. Later you can use this variable as usual number. Here @var{N} is digit (0...9) or alpha (a...z).
@end deffn
+ at cindex defchr
+ at anchor{defchr}
+ at deffn {MGL command} defchr $N smth
+Sets @var{N}-th script argument to character with value evaluated from @var{smth}. Here @var{N} is digit (0...9) or alpha (a...z).
+ at end deffn
+ at cindex defnum
+ at anchor{defnum}
+ at deffn {MGL command} defnum $N smth
+Sets @var{N}-th script argument to number with value evaluated from @var{smth}. Here @var{N} is digit (0...9) or alpha (a...z).
+ at end deffn
+ at cindex defpal
+ at anchor{defpal}
+ at deffn {MGL command} defpal $N smth
+Sets @var{N}-th script argument to palette character at position evaluated from @var{smth}. Here @var{N} is digit (0...9) or alpha (a...z).
+ at end deffn
+
+ at cindex call
+ at anchor{call}
+ at deffn {MGL command} call 'fname' [ARG1 ARG2 ... ARG9]
+Executes function @var{fname} (or script if function is not found). Optional arguments will be passed to functions. See also @ref{func}.
+ at end deffn
+ at cindex func
+ at anchor{func}
+ at deffn {MGL command} func 'fname' [narg=0]
+Define the function @var{fname} and number of required arguments. The arguments will be placed in script parameters $1, $2, ... $9. Note, you should stop script execution before function definition(s) by command @ref{stop}. See also @ref{return}.
+ at end deffn
+ at cindex return
+ at anchor{return}
+ at deffn {MGL command} return
+Return from the function. See also @ref{func}.
+ at end deffn
+
+
+ at cindex if
+ at anchor{if}
@deffn {MGL command} if dat 'cond'
Starts block which will be executed if @var{dat} satisfy to @var{cond}.
@end deffn
@deffn {MGL command} if @code{val}
Starts block which will be executed if @code{val} is nonzero.
@end deffn
+ at cindex elseif
+ at anchor{elseif}
@deffn {MGL command} elseif dat 'cond'
Starts block which will be executed if previous @code{if} or @code{elseif} is false and @var{dat} satisfy to @var{cond}.
@end deffn
@deffn {MGL command} elseif @code{val}
Starts block which will be executed if previous @code{if} or @code{elseif} is false and @code{val} is nonzero.
@end deffn
+ at cindex else
+ at anchor{else}
@deffn {MGL command} else
Starts block which will be executed if previous @code{if} or @code{elseif} is false.
@end deffn
+ at cindex endif
+ at anchor{endif}
@deffn {MGL command} endif
Finishes @code{if/elseif/else} block.
@end deffn
+
+ at cindex for
+ at anchor{for}
@deffn {MGL command} for $N @code{v1 v2 [dv=1]}
-Starts cycle with @var{N}-th argument changing from @var{v1} to @var{v2} with the step @var{dv}.
+Starts cycle with $@var{N}-th argument changing from @var{v1} to @var{v2} with the step @var{dv}. Here @var{N} is digit (0...9) or alpha (a...z).
@end deffn
@deffn {MGL command} for $N dat
-Starts cycle with @var{N}-th argument changing for @var{dat} values.
+Starts cycle with $@var{N}-th argument changing for @var{dat} values. Here @var{N} is digit (0...9) or alpha (a...z).
@end deffn
+ at cindex next
+ at anchor{next}
@deffn {MGL command} next
Finishes @code{for} cycle.
@end deffn
+
+ at cindex once
+ at anchor{once}
@deffn {MGL command} once @code{val}
-The code between once on and once off will be executed only once. Useful for large data manipulation in programs like UDAV.
+The code between @code{once on} and @code{once off} will be executed only once. Useful for large data manipulation in programs like UDAV.
@end deffn
+ at cindex stop
+ at anchor{stop}
@deffn {MGL command} stop
Terminate execution.
@end deffn
@c ------------------------------------------------------------------
- at node Command options (MGL), Suffixes, Program flow (MGL), MGL interface
- at section Command options (MGL)
- at cindex alpha
- at cindex alphadef
- at cindex xrange
- at cindex yrange
- at cindex zrange
- at cindex crange
- at cindex cut
- at cindex ambient
- at cindex fontsize
- at cindex marksize
- at cindex meshnum
- at cindex legend
+ at node Command options @MGL{}, Suffixes, Program flow @MGL{}, MGL interface
+ at section Command options @MGL{}
Command options allow the easy setup of the plot by changing of global settings only for this plot. Options are specified at the end of string. Each option is separated from the previous text by symbol @samp{;}. Options work so that them remember the current settings, change settings as it being set in the option, execute command and return the original settings back. So, the options usage for data handling commands or for graphics setup commands is useless.
The most useful options are @code{xrange, yrange, zrange}. They sets the boundaries for data change. This boundaries are used for automatically filled variables. So, these options allow one to change the position of some plots. For example, in command @code{plot y; xrange 0.1 0.9} the x coordinate will be equidistantly distributed in range 0.1 ... 0.9.
The full list of options are:
- at deffn {MGL command} alpha @code{val}
-Sets alpha value (transparency) of the plot. The value should be in range [0, 1].
- at end deffn
- at deffn {MGL command} alphadef @code{val}
-Sets alpha value (transparency) of the plot. The value should be in range [0, 1].
+ at cindex alpha
+ at cindex alphadef
+ at deffn {MGL option} alpha @code{val}
+ at deffnx {MGL option} alphadef @code{val}
+Sets alpha value (transparency) of the plot. The value should be in range [0, 1]. See also @ref{alphadef}.
@end deffn
- at deffn {MGL command} ambient @code{val}
-Sets brightness of ambient light for the plot. The value should be in range [0, 1].
+ at cindex ambient
+ at deffn {MGL option} ambient @code{val}
+Sets brightness of ambient light for the plot. The value should be in range [0, 1]. See also @ref{ambient}.
@end deffn
- at deffn {MGL command} crange @code{val1 val2}
-Sets boundaries of color change for the plot.
+ at cindex crange
+ at deffn {MGL option} crange @code{val1 val2}
+Sets boundaries of color change for the plot. See also @ref{crange}.
@end deffn
- at deffn {MGL command} xrange @code{val1 val2}
-Sets boundaries of x coordinate change for the plot.
+ at cindex xrange
+ at deffn {MGL option} xrange @code{val1 val2}
+Sets boundaries of x coordinate change for the plot. See also @ref{xrange}.
@end deffn
- at deffn {MGL command} yrange @code{val1 val2}
-Sets boundaries of y coordinate change for the plot.
+ at cindex yrange
+ at deffn {MGL option} yrange @code{val1 val2}
+Sets boundaries of y coordinate change for the plot. See also @ref{yrange}.
@end deffn
- at deffn {MGL command} zrange @code{val1 val2}
-Sets boundaries of z coordinate change for the plot.
+ at cindex zrange
+ at deffn {MGL option} zrange @code{val1 val2}
+Sets boundaries of z coordinate change for the plot. See also @ref{zrange}.
@end deffn
- at deffn {MGL command} cut @code{val}
-Sets whether to cut or to project the plot points lying outside the bounding box.
+ at cindex cut
+ at deffn {MGL option} cut @code{val}
+Sets whether to cut or to project the plot points lying outside the bounding box. See also @ref{cut}.
@end deffn
- at deffn {MGL command} fontsize @code{val}
-Sets the size of text.
+ at cindex fontsize
+ at deffn {MGL option} fontsize @code{val}
+Sets the size of text. See also @ref{font}.
@end deffn
- at deffn {MGL command} marksize @code{val}
-Sets the size of marks.
+ at cindex marksize
+ at deffn {MGL option} marksize @code{val}
+Sets the size of marks. See also @ref{marksize}.
@end deffn
- at deffn {MGL command} meshnum @code{val}
-Work like @code{meshnum} command.
+ at cindex meshnum
+ at deffn {MGL option} meshnum @code{val}
+Work like @ref{meshnum} command.
@end deffn
- at deffn {MGL command} legend 'txt'
-Adds string 'txt' to internal legend accumulator. The style of described line and mark is taken from arguments of the plot command. The maximal number of entries is 100.
+ at cindex legend
+ at deffn {MGL option} legend 'txt'
+Adds string 'txt' to internal legend accumulator. The style of described line and mark is taken from arguments of the last @ref{1D plotting @MGL{}} command. See also @ref{legend}.
@end deffn
@c ------------------------------------------------------------------
- at node Suffixes, Utilities, Command options (MGL), MGL interface
+ at node Suffixes, Utilities, Command options @MGL{}, MGL interface
@section Suffixes for variable
-Suffixes can get some numerical value (like its size, maximal or minimal value, the sum of elements and so on) of the data array in variable and use it later as usual number in command arguments. The suffixes start from point @samp{.} right after (without spaces) variable name or its sub-array. For example, @code{a.nx} give the x-size of data a, @code{b(1).max} give maximal value of second row of variable b, @code{c(:,0).sum} give sum of element in first column of c and so on.
+Suffixes can get some numerical value (like its size, maximal or minimal value, the sum of elements and so on) of the data array in variable and use it later as usual number in command arguments. The suffixes start from point @samp{.} right after (without spaces) variable name or its sub-array. For example, @code{a.nx} give the x-size of data @var{a}, @code{b(1).max} give maximal value of second row of variable @var{b}, @code{(c(:,0)^2).sum} give the sum of squares of elements in the first column of @var{c} and so on.
The full list of suffixes are:
@table @strong
@@ -1608,6 +1977,14 @@ Give the data size in x-, y-, z-direction correspondingly.
Give maximal value of the data.
@item min
Give minimal value of the data.
+ at item sum
+Give sum of data values.
+ at item a
+Give first value of data array.
+ at item fst
+Give first nonzero value of data array.
+ at item lst
+Give last nonzero value of data array.
@item mx, my, mz
Give x-, y-, z-position of data maximum.
@item ax, ay, az, aa
@@ -1618,14 +1995,6 @@ Give width in x-, y-, z-direction or data dispersion value.
Give skewness in x-, y-, z-direction or data skewness value.
@item kx, ky, kz, ka
Give kurtosis in x-, y-, z-direction or data kurtosis value.
- at item sum
-Give sum of data values.
- at item a
-Give first value of data array.
- at item fst
-Give first nonzero value of data array.
- at item lst
-Give last nonzero value of data array.
@end table
@c ------------------------------------------------------------------
@@ -1636,4 +2005,5 @@ MathGL library provides several tools for parsing MGL scripts. There is tools sa
All of this tools have similar set of arguments. First argument is name of script file, next argument is optional output file name, last arguments are options. There are options for setting script parameters (it is @code{$0, $1, ... $9}) and locale settings. The script parameters have format @samp{-Nval}. Here N=0,1...9 is parameter ID and val is its value. For example, option @samp{-1test} set to substitute @samp{test} instead of @code{$1} in the script. Option -Lval set locale to val. For example, @samp{-Lutf8} will set UTF-8 locale for script.
-Additionally you can create animated GIF file or a set of JPEG files with names @samp{frameNNNN.jpg} (here @samp{NNNN} is frame index). You should use @code{mgl2gif} tool and specify the values of @code{$0} parameter for making animation. Values of the parameter @code{$0} can be specified inside the script by comment @code{##a val} for each value @code{val} (one comment for one value) or by option(s) @samp{-Aval}. Tool @code{mgl2gif} will execute script several times (once for each specified value of @code{$0}) and save result in animated GIF file. For saving each frame in JPEG just add command @code{write ''} at the end of the script.
+Additionally you can create animated GIF file or a set of JPEG files with names @samp{frameNNNN.jpg} (here @samp{NNNN} is frame index). You should use @code{mgl2gif} tool and specify the values of @code{$0} parameter for making animation. Values of the parameter @code{$0} can be specified inside the script by comment @code{##a val} for each value @code{val} (one comment for one value) or by option(s) @samp{-Aval}. Also you can specify a cycle for animation by comment @code{##c v1 v2 dv} or by option @code{-Cn1:n2}. Tool @code{mgl2gif} will execute script several times (once for each specified value of @code{$0}) and save result in animated GIF file. For saving each frame in JPEG just add command @code{write ''} at the end of the script.
+
diff --git a/texinfo/mgl_cmd_ru.texi b/texinfo/mgl_cmd_ru.texi
new file mode 100644
index 0000000..cb53add
--- /dev/null
+++ b/texinfo/mgl_cmd_ru.texi
@@ -0,0 +1,2011 @@
+ at c ------------------------------------------------------------------
+ at chapter ЯзÑк MGL
+
+MathGL Ð¸Ð¼ÐµÐµÑ Ð²ÑÑÑоеннÑй ÑкÑипÑовÑй ÑзÑк MGL Ð´Ð»Ñ Ð¾Ð±ÑабоÑки и оÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
. СкÑипÑÑ MGL можно иÑполÑзоваÑÑ ÐºÐ°Ðº незавиÑимо (пÑогÑаммами UDAV, mgl2png, mgl2eps, mgl2svg и пÑ., @pxref{Utilities}) Ñак и вÑзовами библиоÑеки.
+
+ЯзÑк MGL доÑÑаÑоÑно пÑоÑÑой. ÐÐ°Ð¶Ð´Ð°Ñ ÑÑÑока -- оÑделÑÐ½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°. ÐеÑвое Ñлово -- Ð¸Ð¼Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, а вÑе оÑÑалÑнÑе ее аÑгÑменÑÑ. Ðоманда Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð¼ÐµÑÑ Ð´Ð¾ 1000 аÑгÑменÑов (по кÑайней меÑе ÑейÑаÑ). Слова ÑазделÑÑÑÑÑ Ð¾Ð´Ð½Ð¾ Ð¾Ñ Ð´ÑÑгого пÑобелом или Ñимволом ÑабÑлÑÑии. РазлиÑий Ð¼ÐµÐ¶Ð´Ñ Ð²ÐµÑÑ
ним и нижним индекÑом неÑ, Ñ.е. пеÑеменнÑе @var{a} и @var{A} иденÑиÑнÑ. Символ @samp{#} наÑÐ¸Ð½Ð°ÐµÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑий -- вÑе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¿Ð¾Ñле него игноÑиÑÑÑÑÑÑ Ð´Ð¾ конÑа ÑÑÑоки. ÐÑклÑÑением ÑвлÑеÑÑÑ ÑлÑÑай, когда @samp{#} вÑ
Ð¾Ð´Ð¸Ñ Ð² ÑÑÑокÑ. ÐпÑии ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÑказÑваÑÑÑÑ Ð¿Ð¾Ñле Ñимвола @samp{;} (@pxref{Command options @MGL{}}). Символ @samp{:} наÑÐ¸Ð½Ð°ÐµÑ Ð½Ð¾Ð²ÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ (подобно пеÑÐµÐ²Ð¾Ð´Ñ ÑÑÑоки) еÑли он ÑаÑположен не внÑÑÑи Ñкобок или ÑÑÑоки.
+
+ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ ÑÑÑлки на внеÑние паÑамеÑÑÑ (@samp{$0}, @samp{$1} ... @samp{$9}) или макÑоопÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ (@samp{$a}, @samp{$b} ... @samp{$z}), Ñо ÑекÑÑие знаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов/макÑоопÑеделений подÑÑавлÑÑÑÑÑ Ð² ÑÑÑÐ¾ÐºÑ Ð²Ð¼ÐµÑÑо ÑÑÑлки до вÑполнением командÑ. ÐÑо позволÑÐµÑ Ð¸ÑполÑзоваÑÑ Ð¾Ð´Ð¸Ð½ и ÑÐ¾Ñ Ð¶Ðµ ÑкÑÐ¸Ð¿Ñ Ð¿Ñи ÑазлиÑнÑÑ
вÑ
однÑÑ
паÑамеÑÑаÑ
командной ÑÑÑоки или вводиÑÑ Ð¼Ð°ÐºÑоопÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ñ
Ð¾Ð´Ñ Ð¸ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ ÑкÑипÑа.
+
+ÐÑгÑменÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ ÑÑÑоками, пеÑеменнÑми или ÑиÑлами.
+ at itemize @bullet
+ at item
+СÑÑока -- пÑоизволÑнÑй Ð½Ð°Ð±Ð¾Ñ Ñимволов Ð¼ÐµÐ¶Ð´Ñ Ð¼ÐµÑками @samp{'}.
+
+ at item
+ÐбÑÑно пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¸Ð¼ÐµÐµÑ Ð¸Ð¼Ñ, ÑоÑÑоÑÑее из бÑкв и ÑиÑел (должно наÑинаÑÑÑÑ Ñ Ð±ÑÐºÐ²Ñ Ð¸ не бÑÑÑ Ð´Ð»Ð¸Ð½Ð½ÐµÐµ 64 Ñимволов). РкаÑеÑÑве пеÑеменной можно иÑполÑзоваÑÑ Ð²ÑеменнÑе маÑÑивÑ, вклÑÑаÑÑие в ÑебÑ:
+ at itemize @bullet
+ at item
+ÑÑÐµÐ·Ñ (``подмаÑÑивÑ'') маÑÑивов даннÑÑ
(подобно команде @ref{subdata}). ÐапÑимеÑ, @code{a(1)} или @code{a(1,:)} или @code{a(1,:,:)} -- вÑоÑÐ°Ñ ÑÑÑока маÑÑива @var{a}, @code{a(:,2)} или @code{a(:,2,:)} -- ÑÑеÑий ÑÑолбеÑ, @code{a(:,:,0)} -- пеÑвÑй ÑÑез и Ñ.д. Также можно вÑделиÑÑ ÑаÑÑÑ Ð¼Ð°ÑÑива Ñ m-го по n-Ñй ÑÐ»ÐµÐ¼ÐµÐ½Ñ @code{a(m:n,:,:)} или пÑоÑÑо @code{a(m:n)}.
+
+ at item
+пÑоизволÑнÑе комбинаÑии ÑÑолбÑов даннÑÑ
(напÑимеÑ, @code{a('n*w^2/exp(t)')}), еÑли ÑÑолбÑÑ Ð´Ð°Ð½Ð½ÑÑ
бÑли Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ @ref{idset} или в Ñайле даннÑÑ
(в ÑÑÑоке наÑинаÑÑейÑÑ Ñ @code{##}).
+
+ at item
+пÑоизволÑное вÑÑажение из ÑÑÑеÑÑвÑÑÑиÑ
пеÑеменнÑÑ
и конÑÑанÑ. ÐапÑимеÑ, @samp{sqrt(dat(:,5)+1)} даÑÑ Ð²ÑеменнÑй маÑÑив даннÑÑ
Ñ ÑлеменÑами ÑавнÑми @code{tmp[i,j] = sqrt(dat[i,5,j]+1)}.
+
+ at item
+маÑÑÐ¸Ð²Ñ Ñ ÑлеменÑами заданнÑми в квадÑаÑнÑÑ
ÑкобкаÑ
[], ÑазделеннÑе @samp{,}. ÐÑи ÑÑом внÑÑÑи вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ должно бÑÑÑ Ð¿Ñобелов! ÐапÑимеÑ, @samp{[1,2,3]} даÑÑ Ð²ÑеменнÑй маÑÑив из 3 ÑлеменÑов @{1, 2, 3@}; @samp{[[11,12],[21,22]]} даÑÑ Ð¼Ð°ÑÑиÑÑ 2*2 и Ñ.д. ÐлеменÑами Ñакой конÑÑÑÑкÑии могÑÑ Ð±ÑÑÑ Ð¸ маÑÑÐ¸Ð²Ñ ÐµÑли иÑ
ÑазмеÑноÑÑи одинаковÑе, напÑÐ¸Ð¼ÐµÑ @samp{[v1,v2,...,vn]}.
+
+ at item
+ÑезÑлÑÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ поÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð½Ð¾Ð²ÑÑ
даннÑÑ
(@pxref{Make another data}), еÑли они заклÑÑÐµÐ½Ñ Ð² ÑигÑÑнÑе Ñкобки @{@}. ÐапÑимеÑ, @samp{@{sum dat 'x'@}} даÑÑ Ð²ÑеменнÑй маÑÑив, коÑоÑÑй еÑÑÑ ÑезÑлÑÑÐ°Ñ ÑÑммиÑÐ¾Ð²Ð°Ð½Ð¸Ñ @var{dat} Ð²Ð´Ð¾Ð»Ñ 'x'. ÐÑо Ñакой же маÑÑив как и @var{tmp}, полÑÑеннÑй командой @samp{sum tmp dat 'x'}. ÐÑи ÑÑом можно иÑполÑзоваÑÑ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñе конÑÑÑÑкÑии, напÑÐ¸Ð¼ÐµÑ @samp{@{sum @{max dat 'z'@} 'x'@}}.
+ at end itemize
+ÐÑеменнÑе маÑÑÐ¸Ð²Ñ Ð½Ðµ могÑÑ ÑÑоÑÑÑ Ð² каÑеÑÑве пеÑвого аÑгÑменÑа команд, ÑоздаÑÑиÑ
маÑÑÐ¸Ð²Ñ (напÑимеÑ, @samp{new}, @samp{read}, @samp{hist} и Ñ.д.).
+
+ at item
+Ð ÑкалÑÑнÑм пеÑеменнÑм, кÑоме ÑобÑÑвенно ÑиÑел, оÑноÑÑÑÑÑ: ÑпеÑиалÑнÑе пеÑеменнÑе @code{nan=#QNAN, pi=3.1415926..., on=1, off=0, :=-1}, пеÑеменнÑе Ñ ÑÑÑÑикÑами (@pxref{Suffixes}), пеÑеменнÑе опÑеделеннÑе командой @ref{define}. Также маÑÑÐ¸Ð²Ñ ÑазмеÑом 1x1x1 ÑÑиÑаÑÑÑÑ ÑкалÑÑами (напÑимеÑ, @samp{pi/dat.nx}).
+ at end itemize
+ÐеÑед пеÑвÑм иÑполÑзованием вÑе пеÑеменнÑе Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´, ÑоздаÑÑиÑ
маÑÑÐ¸Ð²Ñ (@ref{new}, @ref{var}, @ref{list}, @ref{copy}, @ref{read}, @ref{hist}, @ref{sum} и дÑ., @pxref{Data create @MGL{}} и @ref{Make another data @MGL{}}).
+
+ÐÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¼Ð¾Ð³ÑÑ Ð¸Ð¼ÐµÑÑ Ð½ÐµÑколÑко набоÑов аÑгÑменÑов (напÑимеÑ, @code{plot ydat} и @code{plot xdat ydat}). ÐÑе аÑгÑменÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð´Ð»Ñ Ð²ÑбÑанного набоÑа Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑказанÑ, однако ÑаÑÑÑ Ð¸Ð· ниÑ
могÑÑ Ð¸Ð¼ÐµÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ. Такие аÑгÑменÑÑ Ð² опиÑании команд бÑдÑÑ Ð¿Ð¾Ð¼ÐµÑÐµÐ½Ñ Ð² квадÑаÑнÑе Ñкобки [], напÑÐ¸Ð¼ÐµÑ @code{plot ydat ['stl'='' zval=nan]}. ÐÑи ÑÑом запиÑÑ @code{[arg1 arg2 arg3 ...]} подÑазÑÐ¼ÐµÐ²Ð°ÐµÑ @code{[arg1 [arg2 [arg3 ...]]]}, Ñ.е. опÑÑкаÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑолÑко аÑгÑменÑÑ Ñ ÐºÐ¾Ð½Ñа, еÑли Ð²Ñ ÑоглаÑÐ½Ñ Ñ Ð¸Ñ
знаÑениÑми по ÑмолÑаниÑ. ÐапÑимеÑ, @code{plot ydat '' 1} или @code{plot ydat ''} пÑавилÑно, а @code{plot ydat 1} не пÑавилÑно (аÑгÑÐ¼ÐµÐ½Ñ @code{'stl'} пÑопÑÑен).
+
+ÐÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ MGL можно ÑазделиÑÑ Ð½Ð° неÑколÑко гÑÑпп. РдалÑнейÑем бÑÐ´ÐµÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ñ ÑледÑÑÑие обознаÑÐµÐ½Ð¸Ñ Ð¿Ñи опиÑании команд: Ð¸Ð¼Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð²Ñделено жиÑнÑм, ÑÑÑоки заклÑÑÐµÐ½Ñ Ð² одинаÑнÑе кавÑÑки '', пеÑеменнÑе вÑÐ´ÐµÐ»ÐµÐ½Ñ ÐºÑÑÑивом, ÑиÑла (ÑкалÑÑÑ) вÑÐ´ÐµÐ»ÐµÐ½Ñ Ð¼Ð¾Ð½Ð¾ÑиÑиннÑм ÑÑиÑÑом. ÐеобÑзаÑелÑнÑе аÑгÑменÑÑ Ð±ÑдÑÑ Ð¿Ð¾Ð¼ÐµÑÐµÐ½Ñ Ð² квадÑаÑнÑе Ñкобки [] и Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ Ð¸Ñ
знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ. ÐодÑобнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÑвеÑе и ÑÑиле линий (@pxref{Line styles}), ÑвеÑовÑÑ
ÑÑ
емаÑ
(@pxref{Color scheme}), ÑÑиле ÑекÑÑа и ÑимволаÑ
TeX (@pxref{Font styles}), ÑекÑÑовÑÑ
ÑоÑмÑлаÑ
(@pxref{Textual formulas}) можно найÑи в ÑооÑвеÑÑÑвÑÑÑиÑ
ÑазделаÑ
.
+
+ at menu
+ at ifset UDAV
+* General concepts::
+ at end ifset
+* Graphics setup @MGL{}::
+* Axis settings @MGL{}::
+* Transformation matrix @MGL{}::
+* Export to file @MGL{}::
+* Primitives drawing @MGL{}::
+* Text printing @MGL{}::
+* Axis and Colorbar @MGL{}::
+* Legend @MGL{}::
+* 1D plotting @MGL{}::
+* 2D plotting @MGL{}::
+* 3D plotting @MGL{}::
+* Dual plotting @MGL{}::
+* Vector fields @MGL{}::
+* Other plotting @MGL{}::
+* Nonlinear fitting @MGL{}::
+* Data create @MGL{}::
+* Data filling @MGL{}::
+* Rearrange data @MGL{}::
+* File I/O @MGL{}::
+* Make another data @MGL{}::
+* Change data @MGL{}::
+* Operators @MGL{}::
+* Program flow @MGL{}::
+* Command options @MGL{}::
+* Suffixes::
+* Utilities::
+ at end menu
+
+ at c ##################################################################
+ at ifset UDAV
+ at node General concepts, , Utilities, MGL interface
+ at section ÐÑновнÑе пÑинÑипÑ
+
+ÐозможноÑÑи библиоÑеки MathGL доволÑно богаÑÑ -- ÑиÑло ÑолÑко оÑновнÑÑ
Ñипов гÑаÑиков пÑевÑÑÐ°ÐµÑ 50 видов. ÐÑоме Ñого, еÑÑÑ ÑÑнкÑии Ð´Ð»Ñ Ð¾Ð±ÑабоÑки даннÑÑ
, наÑÑÑойки вида гÑаÑика и пÑ. и пÑ. Тем не менее, Ñ ÑÑаÑалÑÑ Ð¿ÑидеÑживаÑÑÑÑ ÐµÐ´Ð¸Ð½Ð¾Ð³Ð¾ ÑÑÐ¸Ð»Ñ Ð² поÑÑдке аÑгÑменÑов ÑÑнкÑий и ÑпоÑобе иÑ
``наÑÑÑойки''. РоÑновном вÑе ниже Ñказанное оÑноÑиÑÑÑ Ðº ÑÑнкÑиÑм ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑазлиÑнÑÑ
гÑаÑиков.
+
+ÐÑего оÑновнÑÑ
конÑепÑий (базиÑнÑÑ
идей) ÑеÑÑÑе:
+ at enumerate
+ at item
+ at strong{ÐÑе наÑÑÑойки гÑаÑиков (ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¹, ÑвеÑовÑе ÑÑ
ÐµÐ¼Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑей, ÑÑÐ¸Ð»Ñ Ð¸ ÑÐ²ÐµÑ ÑекÑÑа) задаÑÑÑÑ ÑÑÑоками.} ÐÑо обеÑпеÑиваеÑ: ÑдобÑÑво Ð´Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ -- коÑоÑкÑÑ ÑÑÑÐ¾ÐºÑ Ð»ÐµÐ³Ñе ÑиÑаÑÑ Ð¸ здеÑÑ ÑÑжелее оÑибиÑÑÑÑ, Ñем в болÑÑом ÑпиÑке паÑамеÑÑов; пеÑеноÑимоÑÑÑ -- ÑÑÑоки вÑглÑдÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð¾ на вÑеÑ
плаÑÑоÑмаÑ
и не надо забоÑиÑÑÑÑ Ð¾ Ñипе и ÑиÑле аÑгÑменÑов.
+ at item
+ at strong{ÐÑе ÑÑнкÑии имеÑÑ ``ÑпÑоÑеннÑй'' и ``пÑодвинÑÑÑй'' ваÑианÑÑ.} Сделано опÑÑÑ Ð¸Ð·-за ÑдобÑÑва. Ð ``ÑпÑоÑенном'' ваÑианÑе Ð´Ð»Ñ Ð¿Ð¾ÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð³ÑаÑика нÑÐ¶Ð½Ñ ÑолÑко один-два маÑÑив(а) даннÑÑ
, коÑоÑÑе авÑомаÑиÑеÑки ÑавноÑаÑпÑеделÑÑÑÑÑ Ð² заданном диапазоне оÑей кооÑдинаÑ. Ð ``пÑодвинÑÑой'' веÑÑии можно не ÑолÑко ÑказаÑÑ Ñвно диапазон поÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð³ÑаÑика, но и задаÑÑ ÐµÐ³Ð¾ паÑамеÑÑиÑеÑки. ÐоÑледнее позволÑÐµÑ Ð»ÐµÐ³ÐºÐ¾ ÑÑÑоиÑÑ Ð´Ð¾Ð²Ð¾Ð»Ñно ÑложнÑе кÑивÑе и повеÑÑ
ноÑÑи. РобоиÑ
ваÑианÑаÑ
ÑÑнкÑий поÑÑдок аÑгÑменÑов ÑÑандаÑÑен: ÑнаÑала идÑÑ Ð¼Ð°ÑÑÐ¸Ð²Ñ Ð´Ð°Ð½Ð½ÑÑ
, поÑом необÑзаÑелÑнÑй ÑÑÑоковÑй паÑамеÑÑ ÑÑÐ¸Ð»Ñ Ð³ÑаÑика, а далее -- вÑоÑоÑÑепеннÑе необÑзаÑелÑнÑе паÑамеÑÑÑ Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ ÑоÑной наÑÑÑойки гÑаÑика.
+ at item
+ at strong{ÐÑе ÑлеменÑÑ ÑиÑÑнков векÑоÑнÑе.} ÐзнаÑалÑно библиоÑека MathGL бÑла оÑиенÑиÑованна на ÑабоÑÑ Ñ Ð½Ð°ÑÑнÑми даннÑми, коÑоÑÑе по Ñвоей пÑиÑоде векÑоÑнÑе (линии, гÑани, маÑÑиÑÑ Ð¸ Ñ.д.). ÐоÑÑÐ¾Ð¼Ñ Ð²ÐµÐºÑоÑноÑÑÑ Ð¸ÑполÑзÑеÑÑÑ Ð²Ð¾ вÑеÑ
ÑиÑÑнкаÑ
! ÐÑиÑем иногда даже в ÑÑеÑб пÑоизводиÑелÑноÑÑи (напÑимеÑ, пÑи вÑводе ÑÑиÑÑов). Ðомимо вÑего пÑоÑего, векÑоÑноÑÑÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð»ÐµÐ³ÐºÐ¾ маÑÑÑабиÑоваÑÑ ÑиÑÑнок -- измениÑе ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ°ÑÑинки в 2 Ñаза, и ÑиÑÑнок пÑопоÑÑионалÑно ÑаÑÑÑнеÑÑÑ.
+ at item
+ at strong{ÐовÑе гÑаÑики не ÑдалÑÑÑ Ñже наÑиÑованное.} ÐÑоÑ, в Ñем-Ñо неожиданнÑй, подÑ
од позволÑÐµÑ ÑоздаваÑÑ Ð¾Ð³Ñомное колиÑеÑÑво ``комбиниÑованнÑÑ
'' гÑаÑиков. ÐапÑимеÑ, повеÑÑ
ноÑÑÑ Ñ Ð½Ð°Ð»Ð¾Ð¶ÐµÐ½Ð½Ñми линиÑми ÑÑÐ¾Ð²Ð½Ñ ÑÑÑоиÑÑÑ Ð´Ð²ÑÐ¼Ñ Ð¿Ð¾ÑледоваÑелÑнÑми вÑзовами ÑÑнкÑий ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑи и линий ÑÑÐ¾Ð²Ð½Ñ (в лÑбом поÑÑдке). Ð ÑовеÑÑенно не надо пиÑаÑÑ ÑпеÑиалÑнÑÑ ÑÑнкÑÐ¸Ñ (как в Matlab и некоÑоÑÑÑ
дÑÑгиÑ
пÑогÑаммаÑ
) Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÑого гÑаÑика. ÐÑимеÑов ÑакиÑ
гÑаÑиков можно пÑивеÑÑи множеÑÑво (Ñм. Ñаздел @ref{Hints} и ÑÐ°Ð¹Ñ Ð¿ÑогÑÐ°Ð¼Ð¼Ñ @uref{http://mathgl.sf.net/index.html}).
+ at end enumerate
+
+ÐÑоме оÑновнÑÑ
конÑепÑий Ñ Ñ
оÑел Ð±Ñ Ð¾ÑÑановиÑÑÑÑ Ð½Ð° неÑколÑкиÑ
, как оказалоÑÑ, неÑÑивиалÑнÑÑ
моменÑаÑ
-- ÑпоÑобе ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð³ÑаÑика, оÑей кооÑÐ´Ð¸Ð½Ð°Ñ Ð¸ ÑÑÑоковÑÑ
паÑамеÑÑов линий, повеÑÑ
ноÑÑей, ÑекÑÑа.
+
+ at menu
+* Coordinate axes::
+* Line styles::
+* Color scheme::
+* Font styles::
+* Textual formulas::
+ at end menu
+
+ at include concept_ru.texi
+
+ at node Graphics setup @MGL{}, Axis settings @MGL{}, General concepts, MGL interface
+ at end ifset
+ at ifclear UDAV
+
+ at c ##################################################################
+ at node Graphics setup @MGL{}, Axis settings @MGL{}, , MGL interface
+ at end ifclear
+ at section ÐаÑÑÑойка гÑаÑика @MGL{}
+
+ÐÐ¾Ð¼Ð°Ð½Ð´Ñ Ð² ÑÑой гÑÑппе влиÑÑÑ Ð½Ð° вид вÑего ÑиÑÑнка. СооÑвеÑÑÑвенно они Ð´Ð¾Ð»Ð¶Ð½Ñ ÑаÑполагаÑÑÑÑ @emph{пеÑед} вÑзовом ÑÑнкÑий непоÑÑедÑÑвенно ÑиÑÑÑÑиÑ
гÑаÑики.
+
+ at menu
+* Transparency @MGL{}::
+* Lighting @MGL{}::
+* Fog @MGL{}::
+* Default sizes @MGL{}::
+* Zooming @MGL{}::
+* Cutting @MGL{}::
+* Other settings @MGL{}::
+ at end menu
+
+ at c ==================================================================
+ at node Transparency @MGL{}, Lighting @MGL{}, , Graphics setup @MGL{}
+ at subsection ÐÑозÑаÑноÑÑÑ @MGL{}
+
+ÐÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð½Ð°ÑÑÑаиваÑÑ Ñип и ÑÑÐµÐ¿ÐµÐ½Ñ Ð¿ÑозÑаÑноÑÑи повеÑÑ
ноÑÑей. Ðлавной ÑвлÑеÑÑÑ ÑÑнкÑÐ¸Ñ @ref{alpha}, коÑоÑÐ°Ñ Ð²ÐºÐ»ÑÑаеÑ/вÑклÑÑÐ°ÐµÑ Ð¿ÑозÑаÑноÑÑÑ Ð´Ð»Ñ Ð²ÑеÑ
гÑаÑиков, ÑозданнÑÑ
поÑле вÑзова @ref{alpha}. ФÑнкÑÐ¸Ñ @ref{alphadef} ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð²ÐµÐ»Ð¸ÑÐ¸Ð½Ñ alpha-канала по ÑмолÑаниÑ. ÐÑозÑаÑноÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ вÑклÑÑиÑÑ Ð´Ð»Ñ Ð¾ÑделÑного гÑаÑика Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ @ref{transparent}. ÐаконеÑ, ÑÑнкÑÐ¸Ñ @ref{transptype} Ð·Ð°Ð´Ð°ÐµÑ Ñип пÑозÑаÑноÑÑи. @sref{Transparent surface sample}
+
+ at cindex alpha
+ at anchor{alpha}
+ at deffn {Ðоманда MGL} alpha @code{[val=on]}
+ÐклÑÑаеÑ/вÑклÑÑÐ°ÐµÑ Ð¿ÑозÑаÑноÑÑÑ Ð´Ð»Ñ @emph{вÑего} ÑиÑÑнка. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿ÑозÑаÑноÑÑÑ Ð²ÑклÑÑена. ÐÑполÑзÑйÑе @code{transparent off} Ð´Ð»Ñ ÐºÐ¾Ð½ÐºÑеÑного гÑаÑика Ð´Ð»Ñ Ð²ÑклÑÑÐµÐ½Ð¸Ñ Ð¿ÑозÑаÑноÑÑи.
+ at end deffn
+ at cindex alphadef
+ at anchor{alphadef}
+ at deffn {Ðоманда MGL} alphadef @code{val}
+ÐÐ°Ð´Ð°ÐµÑ Ð·Ð½Ð°Ñение пÑозÑаÑноÑÑи по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð²ÑеÑ
гÑаÑиков. ÐаÑалÑное знаÑение 0.5.
+ at end deffn
+ at cindex transparent
+ at anchor{transparent}
+ at deffn {Ðоманда MGL} transparent @code{val}
+ÐÑеменно вклÑÑаеÑ/возвÑаÑÐ°ÐµÑ Ð¿ÑозÑаÑноÑÑÑ Ð³ÑаÑиков.
+ at end deffn
+ at cindex transptype
+ at anchor{transptype}
+ at deffn {Ðоманда MGL} transptype @code{val}
+ÐÐ°Ð´Ð°ÐµÑ Ñип пÑозÑаÑноÑÑи. ÐбÑÑÐ½Ð°Ñ Ð¿ÑозÑаÑноÑÑÑ (@samp{0}) -- "закÑÑÑÑе" обÑекÑÑ Ð²Ð¸Ð´Ð½Ñ Ð¼ÐµÐ½ÑÑе Ñем закÑÑваÑÑие. "СÑеклÑннаÑ" пÑозÑаÑноÑÑÑ (@samp{1}) -- закÑÑÑÑе и закÑÑваÑÑие обÑекÑÑ ÐµÐ´Ð¸Ð½Ð¾Ð¾Ð±Ñазно оÑлаблÑÑÑ Ð¸Ð½ÑенÑивноÑÑÑ ÑвеÑа (по RGB каналам). "ÐамповаÑ" пÑозÑаÑноÑÑÑ (@samp{2}) -- закÑÑÑÑе и закÑÑваÑÑие обÑекÑÑ ÑвлÑÑÑÑÑ Ð¸ÑÑоÑниками дополниÑелÑного оÑвеÑÐµÐ½Ð¸Ñ (ÑекомендÑÑ ÑÑÑановиÑÑ @code{alphadef 0.3} или менÑÑе в ÑÑом ÑлÑÑае). @xref{Normal transparency}, @ref{Glass-like transparency}, @ref{Lamp-like transparency}.
+ at end deffn
+
+ at c ==================================================================
+ at node Lighting @MGL{}, Fog @MGL{}, Transparency @MGL{}, Graphics setup @MGL{}
+ at subsection ÐÑвеÑение @MGL{}
+
+ÐÑи ÑÑнкÑии наÑÑÑаиваÑÑ Ð¾ÑвеÑение гÑаÑика. ÐÐ»Ð°Ð²Ð½Ð°Ñ ÑÑнкÑÐ¸Ñ @ref{light} вклÑÑаеÑ/вÑклÑÑÐ°ÐµÑ Ð¾ÑвеÑение гÑаÑиков поÑÑÑоеннÑÑ
поÑле ее вÑзова. MathGL поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð´Ð¾ 10 незавиÑимÑÑ
иÑÑоÑников ÑвеÑа. Ðоложение, ÑвеÑ, ÑÑкоÑÑÑ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ иÑÑоÑника ÑвеÑа можно задаваÑÑ Ð¿Ð¾ оÑделÑноÑÑи. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÐºÐ»ÑÑен ÑолÑко пеÑвÑй (Ñ Ð¿Ð¾ÑÑдковÑм номеÑом @code{0}) иÑÑоÑник ÑвеÑа белого ÑвеÑа, ÑаÑположеннÑй ÑвеÑÑ
Ñ.
+
+ at cindex light
+ at anchor{light}
+ at deffn {Ðоманда MGL} light @code{[val=on]}
+ÐклÑÑаеÑ/вÑклÑÑÐ°ÐµÑ Ð¾ÑвеÑение гÑаÑика. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¾ÑвеÑение вÑклÑÑено.
+ at end deffn
+ at deffn {Ðоманда MGL} light @code{n val}
+ÐклÑÑаеÑ/вÑклÑÑÐ°ÐµÑ @var{n}-Ñй иÑÑоÑник ÑвеÑа.
+ at end deffn
+
+ at deffn {Ðоманда MGL} light @code{n xpos ypos zpos} ['col'='w' @code{br=0.5}]
+ÐобавлÑÐµÑ Ð¸ÑÑоÑник ÑвеÑа Ñ Ð½Ð¾Ð¼ÐµÑом @var{n} в положение @{@var{xpos}, @var{ypos}, @var{zpos}@} Ñ ÑвеÑом @var{col} и ÑÑкоÑÑÑÑ @var{br}, коÑоÑÐ°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° бÑÑÑ Ð² диапазоне [0,1].
+ at end deffn
+
+ at cindex ambient
+ at anchor{ambient}
+ at deffn {Ðоманда MGL} ambient @code{val}
+ÐÐ°Ð´Ð°ÐµÑ ÑÑкоÑÑÑ ÑаÑÑеÑнного оÑвеÑениÑ. ÐнаÑение должно бÑÑÑ Ð² диапазоне [0,1].
+ at end deffn
+
+ at c ==================================================================
+ at node Fog @MGL{}, Default sizes @MGL{}, Lighting @MGL{}, Graphics setup @MGL{}
+ at subsection ТÑман @MGL{}
+
+ at cindex fog
+ at anchor{fog}
+ at deffn {Ðоманда MGL} fog @code{val [dz=0.25]}
+ÐмиÑиÑÑÐµÑ ÑÑман на гÑаÑике. ТÑман наÑинаеÑÑÑ Ð½Ð° оÑноÑиÑелÑном ÑаÑÑÑоÑнии @var{dz} Ð¾Ñ ÑоÑки обзоÑа и его плоÑноÑÑÑ ÑаÑÑÐµÑ ÑкÑпоненÑиалÑно вглÑÐ±Ñ Ð¿Ð¾ Ð·Ð°ÐºÐ¾Ð½Ñ ~@math{1-exp(-d*z)}. ÐдеÑÑ @emph{z} -- ноÑÐ¼Ð°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð½Ð° 1 глÑбина гÑаÑика. ÐÑли @var{d}=@code{0} Ñо ÑÑман оÑÑÑÑÑÑвÑеÑ. @sref{Surface in fog sample}
+ at end deffn
+
+ at c ==================================================================
+ at node Default sizes @MGL{}, Zooming @MGL{}, Fog @MGL{}, Graphics setup @MGL{}
+ at subsection ÐазовÑе ÑазмеÑÑ @MGL{}
+
+ÐÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð·Ð°Ð´Ð°ÑÑ Ð²ÐµÐ»Ð¸ÑÐ¸Ð½Ñ Ð±Ð¾Ð»ÑÑинÑÑва паÑамеÑÑов гÑаÑика, вклÑÑÐ°Ñ ÑазмеÑÑ Ð¼Ð°ÑкеÑов, ÑÑÑелок, ÑолÑÐ¸Ð½Ñ Ð»Ð¸Ð½Ð¸Ð¹ и Ñ.д. Ðак и лÑбÑе дÑÑгие наÑÑÑойки, они подейÑÑвÑÑÑ ÑолÑко на гÑаÑики ÑозданнÑе поÑле Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ð°ÑÑÑоек.
+
+ at cindex barwidth
+ at anchor{barwidth}
+ at deffn {Ðоманда MGL} barwidth @code{val}
+ÐÑноÑиÑелÑнÑй ÑÐ°Ð·Ð¼ÐµÑ Ð¿ÑÑмоÑголÑников в @code{bars, barh, boxplot}. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ @code{0.7}.
+ at end deffn
+
+ at cindex marksize
+ at anchor{marksize}
+ at deffn {Ðоманда MGL} marksize @code{val}
+Ð Ð°Ð·Ð¼ÐµÑ Ð¼Ð°ÑкеÑов Ð´Ð»Ñ @ref{1D plotting}. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ @code{1}.
+ at end deffn
+
+ at cindex arrowsize
+ at anchor{arrowsize}
+ at deffn {Ðоманда MGL} arrowsize @code{val}
+Ð Ð°Ð·Ð¼ÐµÑ ÑÑÑелок Ð´Ð»Ñ @ref{1D plotting}, линий и кÑивÑÑ
(@pxref{Primitives drawing}). ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ @code{1}.
+ at end deffn
+
+ at cindex linewidth
+ at anchor{linewidth}
+ at deffn {Ðоманда MGL} linewidth @code{val}
+ÐÐ°Ð·Ð¾Ð²Ð°Ñ ÑолÑина линий. ÐнаÑÐµÐ½Ð¸Ñ <1 игноÑиÑÑÑÑÑÑ. ÐÐ»Ñ Ð·Ð½Ð°Ñений >1 ÑеалÑÐ½Ð°Ñ ÑолÑина полÑÑаеÑÑÑ Ð¿ÐµÑемножением Ñказанной ÑиÑÐ¸Ð½Ñ Ð»Ð¸Ð½Ð¸Ð¸ на данное знаÑение. УвелиÑение ÑиÑÐ¸Ð½Ñ Ð»Ð¸Ð½Ð¸Ð¸ акÑÑалÑно Ð´Ð»Ñ Ð±Ð¾Ð»ÑÑиÑ
ÑаÑÑÑовÑÑ
ÑиÑÑнков. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ @code{1}.
+ at end deffn
+
+ at cindex ticklen
+ at anchor{ticklen}
+ at deffn {Ðоманда MGL} ticklen @code{val} [@code{stt=1}]
+ÐÑноÑиÑелÑÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° меÑок оÑей кооÑдинаÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ @code{0.1}. ÐаÑамеÑÑ @var{stt}>0 Ð·Ð°Ð´Ð°ÐµÑ Ð¾ÑноÑиÑелÑнÑÑ Ð´Ð»Ð¸Ð½Ñ Ð¿Ð¾Ð´Ð¼ÐµÑок, коÑоÑÑе в @code{sqrt(1+stt)} Ñаз менÑÑе.
+ at end deffn
+
+ at cindex tickstl
+ at anchor{tickstl}
+ at deffn {Ðоманда MGL} tickstl 'stl' ['sub'='']
+СÑÐ¸Ð»Ñ Ð¼ÐµÑок (@var{stl}) и подмеÑок (@var{sub}) оÑей кооÑдинаÑ. ÐÑли @code{stl=''}, Ñо иÑполÑзÑеÑÑÑ ÑÑÐ¸Ð»Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ (@samp{k} или @samp{w} в завиÑимоÑÑи Ð¾Ñ Ñипа пÑозÑаÑноÑÑи). ÐÑли @code{sub=''}, Ñо иÑполÑзÑеÑÑÑ ÑÑÐ¸Ð»Ñ Ð¼ÐµÑок (Ñ.е. @var{stl}).
+ at end deffn
+
+ at c ==================================================================
+ at node Zooming @MGL{}, Cutting @MGL{}, Default sizes @MGL{}, Graphics setup @MGL{}
+ at subsection ÐаÑÑÑабиÑование @MGL{}
+
+ÐÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÑпÑавлÑÑÑ Ð¼Ð°ÑÑÑабиÑованием вÑего ÑиÑÑнка (@ref{zoom}) или оÑделÑной каÑÑинки (@ref{plotfactor}). ÐбÑÑно ÑÑи ÑÑнкÑии иÑполÑзÑÑÑÑÑ Ð´Ð»Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¿ÑÑÑого меÑÑа вокÑÑг гÑаÑиков.
+
+ at cindex plotfactor
+ at anchor{plotfactor}
+ at deffn {Ðоманда MGL} plotfactor @code{val}
+ÐаÑÑÑаб каÑÑинки (знаÑение должно бÑÑÑ Ð±Ð¾Ð»ÑÑе 1). Ðе ÑекомендÑеÑÑÑ ÑÑÑанавливаÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¼ÐµÐ½ÑÑе 1.5. ÐÑо аналог @ref{zoom}, но пÑименÑеÑÑÑ ÑолÑко к конкÑеÑной каÑÑинке, заданной @ref{inplot}. ÐÑполÑзÑйÑе Ð½Ð¾Ð»Ñ Ð´Ð»Ñ Ð²ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ð°Ð²ÑомаÑиÑеÑкого маÑÑÑабиÑованиÑ.
+ at end deffn
+
+ at cindex zoom
+ at anchor{zoom}
+ at deffn {Ðоманда MGL} zoom @code{x1 y1 x2 y2}
+ÐаÑÑÑабиÑÑÐµÑ Ð²ÐµÑÑ ÑиÑÑнок. ÐоÑле вÑзова ÑÑнкÑии ÑекÑÑий гÑаÑик бÑÐ´ÐµÑ Ð¾ÑиÑен и в далÑнейÑем ÑиÑÑнок бÑÐ´ÐµÑ ÑодеÑжаÑÑ ÑолÑко облаÑÑÑ [x1,x2]*[y1,y2] Ð¾Ñ Ð¸ÑÑ
одного ÑиÑÑнка. ÐооÑдинаÑÑ @var{x1}, @var{x2}, @var{y1}, @var{y2} менÑÑÑÑÑ Ð² диапазоне Ð¾Ñ 0 до 1. Ðнимание! ÑÑи наÑÑÑойки не могÑÑ Ð±ÑÑÑ Ð¿ÐµÑепиÑÐ°Ð½Ñ Ð½Ð¸ÐºÐ°ÐºÐ¸Ð¼Ð¸ дÑÑгими ÑÑнкÑиÑми. ÐÑполÑзÑйÑе @code{zoom 0 0 1 1} Ð´Ð»Ñ Ð¿ÐµÑеÑ
ода в маÑÑÑаб по ÑмолÑаниÑ.
+ at end deffn
+
+ at c ==================================================================
+ at node Cutting @MGL{}, Other settings @MGL{}, Zooming @MGL{}, Graphics setup @MGL{}
+ at subsection ÐбÑезание @MGL{}
+
+ÐÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð·Ð°Ð´Ð°ÑÑ ÑÑÐ»Ð¾Ð²Ð¸Ñ ÐºÐ¾Ð³Ð´Ð° ÑоÑка бÑÐ´ÐµÑ Ð¸ÑклÑÑена (вÑÑезана) из ÑиÑованиÑ. ÐамеÑÑ, ÑÑо вÑе ÑоÑки Ñо знаÑением(-Ñми) @code{nan} по одной из кооÑÐ´Ð¸Ð½Ð°Ñ Ð¸Ð»Ð¸ амплиÑÑде авÑомаÑиÑеÑки иÑклÑÑаÑÑÑÑ Ð¸Ð· ÑиÑованиÑ.
+
+ at cindex cut
+ at anchor{cut}
+ at deffn {Ðоманда MGL} cut @code{val}
+ÐÐ°Ð´Ð°ÐµÑ Ð¾Ð±Ñезание ÑоÑек за пÑеделами оÑей кооÑдинаÑ. ÐÑли @code{on} Ñо Ñакие ÑоÑки иÑклÑÑаÑÑÑÑ Ð¸Ð· ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ (ÑÑо по ÑмолÑаниÑ) инаÑе они пÑоеÑиÑÑÑÑÑÑ Ð½Ð° огÑаниÑиваÑÑий пÑÑмоÑголÑник.
+ at end deffn
+
+ at deffn {Ðоманда MGL} cut @code{x1 y1 z1 x2 y2 z2}
+ÐÐ°Ð´Ð°ÐµÑ Ð³ÑаниÑÑ Ð¿Ð°Ñаллелепипеда внÑÑÑи коÑоÑого ÑоÑки не ÑиÑÑÑÑÑÑ. ÐÑли гÑаниÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ (пеÑеменнÑе ÑавнÑ), Ñо паÑаллелепипеда ÑÑиÑаеÑÑÑ Ð¿ÑÑÑÑм. @sref{CutMinMax sample}
+ at end deffn
+
+ at deffn {Ðоманда MGL} cut 'cond'
+ÐÐ°Ð´Ð°ÐµÑ ÑÑловие обÑÐµÐ·Ð°Ð½Ð¸Ñ Ð¿Ð¾ ÑоÑмÑле @var{cond}. ÐÑо ÑÑловие иÑклÑÑÐ°ÐµÑ ÑоÑки из ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐµÑли ÑезÑлÑÑÐ°Ñ Ð²ÑÑиÑÐ»ÐµÐ½Ð¸Ñ ÑоÑмÑÐ»Ñ Ð½Ðµ Ñавен нÑлÑ. УÑÑановиÑе аÑгÑÐ¼ÐµÐ½Ñ @code{''} Ð´Ð»Ñ Ð²ÑклÑÑÐµÐ½Ð¸Ñ ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð¾Ð±ÑезаниÑ. @sref{CutOff sample}
+ at end deffn
+
+ at c ==================================================================
+ at node Other settings @MGL{}, , Cutting @MGL{}, Graphics setup @MGL{}
+ at subsection ÐÑоÑие наÑÑÑойки @MGL{}
+
+ at cindex font
+ at anchor{font}
+ at deffn {Ðоманда MGL} font 'fnt' [@code{val=6}]
+ÐÐ°Ð´Ð°ÐµÑ ÑÑÐ¸Ð»Ñ Ð¸ ÑÐ°Ð·Ð¼ÐµÑ ÑÑиÑÑа (@pxref{Text printing}). ÐнаÑале иÑполÑзÑеÑÑÑ @samp{rC} -- пÑÑмой ÑÑиÑÑ Ñ Ð²ÑÑавниванием по ÑенÑÑÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÐ°Ð·Ð¼ÐµÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñей оÑи кооÑÐ´Ð¸Ð½Ð°Ñ Ð² 1.4 Ñаза болÑÑе.
+ at end deffn
+
+ at cindex rotatetext
+ at anchor{rotatetext}
+ at deffn {Ðоманда MGL} rotatetext @code{val}
+ÐклÑÑаеÑ/вÑклÑÑÐ°ÐµÑ Ð²ÑаÑение меÑок и подпиÑей оÑей кооÑÐ´Ð¸Ð½Ð°Ñ Ð²Ð´Ð¾Ð»Ñ Ð¾Ñи. ÐаÑалÑное знаÑение @code{on}.
+ at end deffn
+
+ at cindex palette
+ at anchor{palette}
+ at deffn {Ðоманда MGL} palette 'colors'
+ÐÐ°Ð´Ð°ÐµÑ Ð¿Ð°Ð»Ð¸ÑÑÑ ÐºÐ°Ðº поÑледоваÑелÑноÑÑÑ ÑвеÑов. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ @code{"Hbgrcmyhlnqeup"}, ÑÑо ÑооÑвеÑÑÑвÑÐµÑ ÑвеÑам: Ñемно ÑеÑÑй @samp{H}, Ñиний @samp{b}, зеленÑй @samp{g}, кÑаÑнÑй @samp{r}, голÑбой @samp{c}, малиновÑй @samp{m}, желÑÑй @samp{y}, ÑеÑÑй @samp{h}, Ñине-зеленÑй @samp{l}, небеÑно-голÑбой @samp{n}, оÑанжевÑй @samp{q}, желÑо-зеленÑй @samp{e}, Ñине-ÑиолеÑовÑй @samp{u}, ÑиолеÑовÑй @samp{p}. ÐалиÑÑа в оÑновном иÑполÑзÑеÑÑÑ Ð² 1D гÑаÑикаÑ
(@pxref{1D plotting}) Ð´Ð»Ñ ÐºÑивÑÑ
Ñ Ð½ÐµÐ¾Ð¿ÑеделеннÑм ÑÑилем линии.
+ at end deffn
+
+ at cindex meshnum
+ at anchor{meshnum}
+ at deffn {Ðоманда MGL} meshnum @code{num}
+ÐÐ°Ð´Ð°ÐµÑ Ð¾ÑиенÑиÑовоÑное ÑиÑло линий в @ref{mesh}, @ref{fall}, @ref{grid}, ÑиÑло ÑÑÑелок (ÑÑÑиÑ
ов) в @ref{vect}, @ref{dew} и ÑиÑло ÑÑеек в @ref{cloud}. Ðо ÑмолÑÐ°Ð½Ð¸Ñ (=0) ÑиÑÑÑÑÑÑ Ð²Ñе линии, ÑÑÑелки, ÑÑейки.
+ at end deffn
+
+ at cindex axialdir
+ at anchor{axialdir}
+ at deffn {Ðоманда MGL} axialdir 'dir'
+ÐÐ°Ð´Ð°ÐµÑ Ð¾ÑÑ Ð²ÑаÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ @ref{axial}, @ref{torus}. Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÑÑо 'z'.
+ at end deffn
+
+ at c ==================================================================
+ at node Axis settings @MGL{}, Transformation matrix @MGL{}, Graphics setup @MGL{}, MGL interface
+ at section ÐаÑамеÑÑÑ Ð¾Ñей кооÑÐ´Ð¸Ð½Ð°Ñ @MGL{}
+
+ÐÑÐ¾Ñ Ð±Ð¾Ð»ÑÑой Ð½Ð°Ð±Ð¾Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ опÑеделÑÐµÑ Ð²Ð¸Ð´ оÑей и меÑок кооÑдинаÑ. ÐеÑед поÑÑÑоением Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑоÑки вÑполнÑÑÑÑÑ 3 пÑеобÑазованиÑ: ÑнаÑала опÑеделÑеÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑоÑки (@pxref{Cutting @MGL{}}), далее пÑименÑÑÑÑÑ ÑоÑмÑÐ»Ñ Ð¿ÐµÑеÑ
ода к кÑиволинейнÑм кооÑдинаÑам и Ð½Ð°ÐºÐ¾Ð½ÐµÑ ÑоÑка оÑобÑажаеÑÑÑ.
+
+ at cindex axis
+ at anchor{axis}
+ at deffn {Ðоманда MGL} axis @code{x1 y1 x2 y2}
+ at deffnx {Ðоманда MGL} axis @code{x1 y1 z1 x2 y2 z2}
+ at cindex ranges
+ at anchor{ranges}
+ at deffnx {Ðоманда MGL} ranges @code{x1 x2 y1 y2 [z1=0 z2=0]}
+ÐÐ°Ð´Ð°ÐµÑ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¾ÑдинаÑ. ÐÑли минималÑное и макÑималÑное знаÑение кооÑдинаÑÑ ÑавнÑ, Ñо они игноÑиÑÑÑÑÑÑ Ð¿Ð¾ Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ Ð½Ð°Ð¿ÑавлениÑ. Также ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ ÑвеÑовой ÑкалÑ, аналогиÑно команде @code{caxis z1 z2}. ÐаÑалÑнÑе Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ñ ÑÐ°Ð²Ð½Ñ [-1, 1].
+ at end deffn
+
+ at deffn {Ðоманда MGL} axis 'fx' 'fy' ['fz'='' 'fa'='']
+ÐÐ°Ð´Ð°ÐµÑ ÑоÑмÑÐ»Ñ Ð¿ÐµÑеÑ
ода к кÑиволинейнÑм кооÑдинаÑам. ÐÐ°Ð¶Ð´Ð°Ñ ÑÑÑока ÑвлÑеÑÑÑ Ð¼Ð°ÑемаÑиÑеÑким вÑÑажением, завиÑÑÑим Ð¾Ñ ÑÑаÑÑÑ
кооÑÐ´Ð¸Ð½Ð°Ñ @samp{x}, @samp{y}, @samp{z} и @samp{a} или @samp{c} Ð´Ð»Ñ ÑвеÑовой ÑкалÑ. ÐапÑимеÑ, Ð´Ð»Ñ ÑилиндÑиÑеÑкиÑ
кооÑÐ´Ð¸Ð½Ð°Ñ Ð±ÑÐ´ÐµÑ @code{axis 'x*cos(y)' 'x*sin(y)' 'z'}. ÐÐ»Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑоÑмÑл ÑооÑвеÑÑÑвÑÑÑий паÑамеÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ Ð¿ÑÑÑÑм @code{''}. ÐÑполÑзование ÑоÑмÑл пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñлегка замедлÑÐµÑ Ð¿ÑогÑаммÑ, Ñ.е.. @code{axis '' '' ''} бÑÑÑÑее Ñем @code{axis '1*x' '1*y' '1*z'}. ÐаÑамеÑÑ @var{fa} Ð·Ð°Ð´Ð°ÐµÑ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸ÑнÑÑ ÑоÑмÑÐ»Ñ Ð´Ð»Ñ ÑвеÑовой ÑкалÑ. @xref{Textual formulas}.
+ at end deffn
+
+ at deffn {Ðоманда MGL} axis @code{how}
+УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¾Ð´Ð½Ñ Ð¸Ð· пÑедопÑеделеннÑÑ
ÑиÑÑем кÑиволинейнÑÑ
кооÑÐ´Ð¸Ð½Ð°Ñ Ð² завиÑимоÑÑи Ð¾Ñ Ð¿Ð°ÑамеÑÑа @var{how}: @samp{0} -- декаÑÑова ÑиÑÑема (Ð½ÐµÑ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¾ÑдинаÑ, наиболее бÑÑÑÑаÑ); @samp{1} -- полÑÑнÑе кооÑдинаÑÑ @math{x_n=x*cos(y),y_n=x*sin(y), z_n=z}; @samp{2} -- ÑÑеÑиÑеÑкие кооÑдинаÑÑ @math{x_n=x*sin(y)*cos(z), y_n=x*sin(y)*sin(z), z_n=x*cos(y)}; @samp{3} -- паÑаболиÑеÑкие кооÑдинаÑÑ @math{x_n=x*y, y_n=(x*x-y*y)/2, z_n=z}; @samp{4} -- Paraboloidal coordinates @math{x_n=(x*x-y*y)*cos(z)/2, y_n=(x*x-y*y)*sin(z)/2, z_n=x*y}; @samp{5} -- Oblate coordinates @math{x_n=cosh(x)*cos(y)*cos(z), y_n=cosh(x)*cos(y)*sin(z), z_n=sinh(x)*sin(y)}; @samp{6} -- Prolate coordinates @math{x_n=sinh(x)*sin(y)*cos(z), y_n=sinh(x)*sin(y)*sin(z), z_n=cosh(x)*cos(y)}; @samp{7} -- ÑллипÑиÑеÑкие кооÑдинаÑÑ @math{x_n=cosh(x)*cos(y), y_n=sinh(x)*sin(y), z_n=z}; @samp{8} -- ÑоÑоидалÑнÑе кооÑдинаÑÑ @math{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))}; @samp{9} -- биÑÑеÑиÑеÑкие кооÑдинаÑÑ @math{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))}; @samp{10} -- биполÑÑнÑе кооÑдинаÑÑ @math{x_n=sinh(x)/(cosh(x)-cos(y)), y_n=sin(y)/(cosh(x)-cos(y)), z_n=z}.
+ at end deffn
+
+ at cindex caxis
+ at anchor{caxis}
+ at deffn {Ðоманда MGL} caxis @code{z1 z2}
+ÐÐ°Ð´Ð°ÐµÑ Ð¼Ð°ÑÑÑаб ÑвеÑовой ÑÐºÐ°Ð»Ñ (c-кооÑдинаÑÑ). ÐÑи знаÑÐµÐ½Ð¸Ñ Ð¸ÑполÑзÑÑÑÑÑ Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑвеÑа повеÑÑ
ноÑÑей и пÑоÑиÑ
2D и 3D гÑаÑиков. ÐаÑалÑнÑй диапазон Ñавен [-1, 1].
+ at end deffn
+
+ at cindex origin
+ at anchor{origin}
+ at deffn {Ðоманда MGL} origin @code{x0 y0 [z0=nan]}
+ÐÐ°Ð´Ð°ÐµÑ ÑенÑÑ Ð¿ÐµÑеÑеÑÐµÐ½Ð¸Ñ Ð¾Ñей кооÑдинаÑ. ÐÑли одно из знаÑений Ñавно @code{nan}, Ñо вÑбÑаеÑÑÑ Ð¾Ð¿ÑималÑное положение оÑей кооÑÐ´Ð¸Ð½Ð°Ñ Ð¿Ð¾ ÑÑÐ¾Ð¼Ñ Ð½Ð°Ð¿ÑавлениÑ.
+ at end deffn
+
+ at cindex ternary
+ at anchor{ternary}
+ at deffn {Ðоманда MGL} ternary @code{val}
+ÐÐ°Ð´Ð°ÐµÑ ÑиÑование ÑÑеÑголÑнÑÑ
(Ternary) оÑей кооÑдинаÑ. ÐÑо ÑпеÑиалÑнÑй Ñип гÑаÑика Ð´Ð»Ñ 3 завиÑимÑÑ
кооÑÐ´Ð¸Ð½Ð°Ñ (компоненÑ) @var{a}, @var{b}, @var{c} ÑакиÑ
, ÑÑо @var{a}+ at var{b}+ at var{c}=1. MathGL иÑполÑзÑÐµÑ ÑолÑко 2 незавиÑимÑе кооÑдинаÑÑ @var{a}=x и @var{b}=y поÑколÑÐºÑ Ð¸Ñ
доÑÑаÑоÑно Ð´Ð»Ñ Ð¿Ð¾ÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð²ÑеÑ
гÑаÑиков. ÐÑи ÑÑом ÑÑеÑÑÑ ÐºÐ¾Ð¾ÑдинаÑа z ÑвлÑеÑÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸ÑимÑм паÑамеÑÑом Ð´Ð»Ñ Ð¿Ð¾ÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð»Ð¸Ð½Ð¸Ð¹ ÑÑовнÑ, повеÑÑ
ноÑÑей и Ñ.д. @sref{Ternary plot sample}
+ at end deffn
+
+ at cindex xrange
+ at anchor{xrange}
+ at deffn {Ðоманда MGL} xrange dat [@code{add=off fact=0}]
+ at cindex yrange
+ at anchor{yrange}
+ at deffnx {Ðоманда MGL} yrange dat [@code{add=off fact=0}]
+ at cindex zrange
+ at anchor{zrange}
+ at deffnx {Ðоманда MGL} zrange dat [@code{add=off fact=0}]
+ at cindex crange
+ at anchor{crange}
+ at deffnx {Ðоманда MGL} crange dat [@code{add=off fact=0}]
+ÐÐ°Ð´Ð°ÐµÑ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ x-,y-,z-,c- кооÑÐ´Ð¸Ð½Ð°Ñ ÐºÐ°Ðº минималÑное и макÑималÑное знаÑение маÑÑива @var{dat}. ÐаÑамеÑÑ @var{add} ÑказÑÐ²Ð°ÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑ Ð½Ð¾Ð²Ñй диапазон к ÑÑÑеÑÑвÑÑÑÐµÐ¼Ñ Ð¸Ð»Ð¸ заменÑÑÑ ÐµÐ³Ð¾. ÐаÑамеÑÑ @var{fact} дополниÑелÑно ÑаÑÑиÑÑÐµÑ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ на велиÑÐ¸Ð½Ñ (@var{Max}- at var{Min})*@var{fact}.
+ at end deffn
+
+ at deffn {Ðоманда MGL} xrange @code{x1 x2}
+ at deffnx {Ðоманда MGL} yrange @code{x1 x2}
+ at deffnx {Ðоманда MGL} zrange @code{x1 x2}
+ at deffnx {Ðоманда MGL} crange @code{x1 x2}
+ÐÐ°Ð´Ð°ÐµÑ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ x-,y-,z-,c- кооÑдинаÑ. См. Ñакже @ref{axis}.
+ at end deffn
+
+ at cindex xtick
+ at anchor{xtick}
+ at deffn {Ðоманда MGL} xtick @code{val [sub=0 org=nan]}
+ at cindex ytick
+ at anchor{ytick}
+ at deffnx {Ðоманда MGL} ytick @code{val [sub=0 org=nan]}
+ at cindex ztick
+ at anchor{ztick}
+ at deffnx {Ðоманда MGL} ztick @code{val [sub=0 org=nan]}
+ at cindex ctick
+ at anchor{ctick}
+ at deffnx {Ðоманда MGL} ctick @code{val}
+ÐÐ°Ð´Ð°ÐµÑ Ñаг меÑок оÑей @var{val}, ÑиÑло подмеÑок @var{ns} и наÑалÑное положение меÑок @var{org}. ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ @var{val} Ð·Ð°Ð´Ð°ÐµÑ Ñаг меÑок (еÑли положиÑелÑна) или иÑ
ÑиÑло на оÑи (еÑли оÑÑиÑаÑелÑна). ÐÑлевое знаÑение Ð·Ð°Ð´Ð°ÐµÑ Ð»Ð¾Ð³Ð°ÑиÑмиÑеÑкие меÑки. ÐÑли @var{org}=@code{NAN}, Ñо иÑполÑзÑеÑÑÑ Ð·Ð½Ð°Ñение из @ref{origin}.
+ at end deffn
+
+ at deffn {Ðоманда MGL} xtick 'templ'
+ at deffnx {Ðоманда MGL} ytick 'templ'
+ at deffnx {Ðоманда MGL} ztick 'templ'
+ at deffnx {Ðоманда MGL} ctick 'templ'
+ÐÐ°Ð´Ð°ÐµÑ ÑÐ°Ð±Ð»Ð¾Ð½Ñ Ð´Ð»Ñ Ð¼ÐµÑок Ð²Ð´Ð¾Ð»Ñ x-,y-,z-оÑи или colorbar. Шаблон Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð¸ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ TeX. ÐÑли @var{xtt}, @var{ytt}, @var{ztt}, @var{ctt}=@code{''}, Ñо иÑполÑзÑеÑÑÑ Ñаблон по ÑмолÑÐ°Ð½Ð¸Ñ (в пÑоÑÑейÑем ÑлÑÑае @samp{%.2g}). УÑÑановка Ñаблона вÑклÑÑÐ°ÐµÑ Ð°Ð²ÑомаÑиÑеÑкое ÑлÑÑÑение вида меÑок.
+ at end deffn
+
+ at deffn {Ðоманда MGL} xtick @code{val1} 'lbl1' [@code{val2} 'lbl2' ...]
+ at deffnx {Ðоманда MGL} ytick @code{val1} 'lbl1' [@code{val2} 'lbl2' ...]
+ at deffnx {Ðоманда MGL} ztick @code{val1} 'lbl1' [@code{val2} 'lbl2' ...]
+ÐÐ°Ð´Ð°ÐµÑ Ñвное положение @var{val} и подпиÑи @var{lbl} Ð´Ð»Ñ Ð¼ÐµÑок Ð²Ð´Ð¾Ð»Ñ Ð¾Ñи. ÐеÑки могÑÑ ÑодеÑжаÑÑ Ð¸ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ TeX.
+ at end deffn
+
+ at cindex adjust
+ at anchor{adjust}
+ at deffn {Ðоманда MGL} adjust ['dir'='xyzc']
+ÐвÑомаÑиÑеÑки Ð·Ð°Ð´Ð°ÐµÑ Ñаг меÑок оÑей, ÑиÑло подмеÑок и наÑалÑное положение меÑок Ð´Ð»Ñ Ð¾Ñей кооÑÐ´Ð¸Ð½Ð°Ñ @var{dir} в виде наиболее Ñдобном Ð´Ð»Ñ Ñеловека.
+ at end deffn
+
+
+ at c ##################################################################
+ at node Transformation matrix @MGL{}, Export to file @MGL{}, Axis settings @MGL{}, MGL interface
+ at section ÐаÑÑиÑа пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ @MGL{}
+
+ÐÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÐºÐ¾Ð½ÑÑолиÑÑÑÑ Ð³Ð´Ðµ и как гÑаÑик бÑÐ´ÐµÑ ÑаÑположен. СÑÑеÑÑвÑÐµÑ Ð¾Ð¿ÑеделеннÑй поÑÑдок вÑзова ÑÑиÑ
ÑÑнкÑий Ð´Ð»Ñ Ð»ÑÑÑего вида гÑаÑика. ÐнаÑале Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²ÑзÑваÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ @ref{subplot} или @ref{inplot} Ð´Ð»Ñ ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¼ÐµÑÑÐ¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð²Ñвода. ÐоÑле ниÑ
-- ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð²ÑаÑÐµÐ½Ð¸Ñ @ref{rotate} и ÑжаÑÐ¸Ñ @ref{aspect}. Ð Ð½Ð°ÐºÐ¾Ð½ÐµÑ Ð»ÑбÑе дÑÑгие ÑÑнкÑии Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð³ÑаÑика. ÐмеÑÑо вÑаÑÐµÐ½Ð¸Ñ Ð³ÑаÑика можно вÑзваÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ @ref{columnplot} Ð´Ð»Ñ ÑаÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð³ÑаÑиков в ÑÑÐ¾Ð»Ð±ÐµÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ над дÑÑгим или @ref{stickplot} Ð´Ð»Ñ ÑаÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² линейкÑ.
+
+ at cindex subplot
+ at anchor{subplot}
+ at deffn {Ðоманда MGL} subplot @code{nx ny m [dx=0 dy=0]}
+ÐомеÑÐ°ÐµÑ Ð¿Ð¾ÑледÑÑÑий вÑвод в @var{m}-ÑÑ ÑÑÐµÐ¹ÐºÑ ÑеÑки ÑазмеÑом @var{nx}*@var{ny} Ð¾Ñ Ð²Ñего ÑиÑÑнка. ФÑнкÑÐ¸Ñ ÑбÑаÑÑÐ²Ð°ÐµÑ Ð¼Ð°ÑÑиÑÑ ÑÑанÑÑоÑмаÑии (повоÑоÑÑ Ð¸ ÑжаÑие гÑаÑика) и должна вÑзÑваÑÑÑÑ Ð¿ÐµÑвой Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ "подгÑаÑика". С ÑÑÑеÑиÑеÑкой ÑоÑки зÑÐµÐ½Ð¸Ñ Ð½Ðµ ÑекомендÑеÑÑÑ Ð²ÑзÑваÑÑ ÑÑÑ ÑÑнкÑÐ¸Ñ Ñ ÑазлиÑнÑми (или не кÑаÑнÑми) ÑазмеÑами ÑеÑки. ЯÑейка Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑно ÑдвинÑÑа оÑноÑиÑелÑно Ñвоего обÑÑного Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° оÑноÑиÑелÑнÑй ÑÐ°Ð·Ð¼ÐµÑ @var{dx}, @var{dy}.
+ at end deffn
+
+ at deffn {Ðоманда MGL} subplot @code{nx ny m} 'style'
+ÐналогиÑно пÑедÑдÑÑемÑ, но меÑÑо Ð´Ð»Ñ Ð¾Ñей/colorbar ÑезеÑвиÑÑеÑÑÑ ÑолÑко еÑли ÑÑÑока @var{style} ÑодеÑжиÑ: @samp{L} или @samp{<} -- Ñ Ð»ÐµÐ²Ð¾Ð³Ð¾ кÑаÑ, @samp{R} или @samp{>} -- Ñ Ð¿Ñавого кÑаÑ, @samp{A} или @samp{^} -- Ñ Ð²ÐµÑÑ
него кÑаÑ, @samp{U} или @samp{_} -- Ñ Ð½Ð¸Ð¶Ð½ÐµÐ³Ð¾ кÑаÑ.
+ at end deffn
+
+ at cindex inplot
+ at anchor{inplot}
+ at deffn {Ðоманда MGL} inplot @code{x1 x2 y1 y2 [rel=off]}
+ÐомеÑÐ°ÐµÑ Ð¿Ð¾ÑледÑÑÑий вÑвод в пÑÑмоÑголÑнÑÑ Ð¾Ð±Ð»Ð°ÑÑÑ [@var{x1}, @var{x2}]*[@var{y1}, @var{y2}] (иÑÑ
однÑй ÑÐ°Ð·Ð¼ÐµÑ [0,1]*[0,1]). ÐÑа ÑÑнкÑÐ¸Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð¿Ð¾Ð¼ÐµÑÑиÑÑ Ð³ÑаÑик в пÑоизволÑнÑÑ Ð¾Ð±Ð»Ð°ÑÑÑ ÑиÑÑнка. ÐÑли паÑамеÑÑ @var{rel}=@code{on}, Ñо иÑполÑзÑеÑÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð¾ÑноÑиÑелÑно ÑекÑего @ref{subplot} (или @ref{inplot} Ñ @var{rel}=@code{off}). ФÑнкÑÐ¸Ñ ÑбÑаÑÑÐ²Ð°ÐµÑ Ð¼Ð°ÑÑиÑÑ ÑÑанÑÑоÑмаÑии (повоÑоÑÑ Ð¸ ÑжаÑие гÑаÑика) и должна вÑзÑваÑÑÑÑ Ð¿ÐµÑвой Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ "подгÑаÑика".
+ at end deffn
+
+ at cindex columnplot
+ at anchor{columnplot}
+ at deffn {Ðоманда MGL} columnplot @code{num ind [d=0]}
+ÐомеÑÐ°ÐµÑ Ð¿Ð¾ÑледÑÑÑий вÑвод в @var{ind}-ÑÑ ÑÑÑÐ¾ÐºÑ ÑÑолбÑа из @var{num} ÑÑÑок. Ðоложение ÑÑолбÑа вÑбиÑаеÑÑÑ Ð¾ÑноÑиÑелÑно поÑледнего вÑзова @ref{subplot} (или @ref{inplot} Ñ @var{rel}=@code{off}). ÐаÑамеÑÑ @var{d} Ð·Ð°Ð´Ð°ÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑй Ð·Ð°Ð·Ð¾Ñ Ð¼ÐµÐ¶Ð´Ñ ÑÑÑок. @sref{ColumnPlot sample}
+ at end deffn
+
+ at cindex stickplot
+ at anchor{stickplot}
+ at deffn {Ðоманда MGL} stickplot @code{num ind tet phi}
+ÐомеÑÐ°ÐµÑ Ð¿Ð¾ÑледÑÑÑий вÑвод в @var{ind}-ÑÑ ÑÑÐµÐ¹ÐºÑ "бÑÑÑка" из @var{num} ÑÑеек. ÐÑи ÑÑом Ñам бÑÑÑок повеÑнÑÑ Ð½Ð° ÑÐ³Ð»Ñ @var{tet}, @var{phi}. Ðоложение вÑбиÑаеÑÑÑ Ð¾ÑноÑиÑелÑно поÑледнего вÑзова @ref{subplot} (или @ref{inplot} Ñ @var{rel}=@code{off}). @sref{StickPlot sample}
+ at end deffn
+
+ at cindex rotate
+ at anchor{rotate}
+ at deffn {Ðоманда MGL} rotate @code{tetz tetx [tety=0]}
+ÐÑаÑÐ°ÐµÑ ÑиÑÑÐµÐ¼Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ Ð¾ÑноÑиÑелÑно оÑей @{x, z, y@} поÑледоваÑелÑно на ÑÐ³Ð»Ñ @var{tetx}, @var{tetz}, @var{tety}.
+ at end deffn
+
+ at deffn {Ðоманда MGL} rotate @code{tet x y z}
+ÐÑаÑÐ°ÐµÑ ÑиÑÑÐµÐ¼Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ Ð¾ÑноÑиÑелÑно векÑоÑа @{@var{x}, @var{y}, @var{z}@} на Ñгол @var{tet}.
+ at end deffn
+
+ at cindex aspect
+ at anchor{aspect}
+ at deffn {Ðоманда MGL} aspect @code{ax ay [az=1]}
+УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÑооÑноÑение ÑазмеÑов оÑей в оÑноÑении @var{ax:ay:az}. ÐÐ»Ñ Ð»ÑÑÑего вида ÑледÑÐµÑ Ð²ÑзÑваÑÑ Ð¿Ð¾Ñле ÑÑнкÑии @ref{rotate}.
+ at end deffn
+
+ at cindex perspective
+ at anchor{perspective}
+ at deffn {Ðоманда MGL} perspective @code{val}
+ÐобавлÑÐµÑ (вклÑÑаеÑ) пеÑÑпекÑÐ¸Ð²Ñ Ð´Ð»Ñ Ð³ÑаÑика. ÐаÑамеÑÑ @math{val ~ 1/z_@{eff@} \in [0,1)}. Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{val=0}) пеÑÑпекÑива оÑклÑÑена.
+ at end deffn
+
+ at c ##################################################################
+ at node Export to file @MGL{}, Primitives drawing @MGL{}, Transformation matrix @MGL{}, MGL interface
+ at section ÐкÑпоÑÑ Ð² Ñайл @MGL{}
+
+ at cindex write
+ at anchor{write}
+ at deffn {Ðоманда MGL} write 'fname' [@code{solid=off}]
+ÐкÑпоÑÑиÑÑÐµÑ ÑекÑÑий ÐºÐ°Ð´Ñ Ð² Ñайл 'fname' (Ñип опÑеделÑеÑÑÑ Ð¿Ð¾ ÑаÑÑиÑениÑ). ÐаÑамеÑÑ @var{solid} Ð·Ð°Ð´Ð°ÐµÑ Ð²Ñвод каÑÑинки на ÑекÑÑем Ñоне (обÑÑно белом) или полÑпÑозÑаÑной. ÐÑли 'fname'='', Ñо иÑполÑзÑеÑÑÑ Ð¸Ð¼Ñ @samp{frame####.jpg}, где @samp{####} -- ÑекÑÑий Ð½Ð¾Ð¼ÐµÑ ÐºÐ°Ð´Ñа.
+ at end deffn
+
+ at cindex setsize
+ at anchor{setsize}
+ at deffn {Ðоманда MGL} setsize @code{w h}
+ÐзменÑÐµÑ ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ°ÑÑинки в пикÑелÑÑ
. ФÑнкÑÐ¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° вÑзÑваÑÑÑÑ @strong{пеÑед} лÑбÑми ÑÑнкÑиÑми поÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑÐ¾Ð¼Ñ ÑÑо полноÑÑÑÑ Ð¾ÑиÑÐ°ÐµÑ ÑодеÑжимое ÑиÑÑнка. РнекоÑоÑÑÑ
пÑогÑаммаÑ
иÑполнение ÑÑой ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿ÑеÑено.
+ at end deffn
+
+
+ at c ##################################################################
+ at node Primitives drawing @MGL{}, Text printing @MGL{}, Export to file @MGL{}, MGL interface
+ at section РиÑование пÑимиÑивов
+
+ÐÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÑиÑÑÑÑ ÑиÑÑÑÑ Ð¿ÑоÑÑÑе обÑекÑÑ Ñипа линий, ÑоÑек, ÑÑеÑ, капелÑ, конÑÑов, и Ñ.д.
+
+ at cindex clf
+ at anchor{clf}
+ at deffn {Ðоманда MGL} clf
+ÐÑиÑÐ°ÐµÑ ÑиÑÑнок и заполнÑÐµÑ ÐµÐ³Ð¾ ÑвеÑом по ÑмолÑÐ°Ð½Ð¸Ñ (обÑÑно белÑм).
+ at end deffn
+
+ at cindex ball
+ at anchor{ball}
+ at deffn {Ðоманда MGL} ball @code{x y} ['col'='r']
+ at deffnx {Ðоманда MGL} ball @code{x y z} ['col'='r']
+РиÑÑÐµÑ ÑоÑÐºÑ (ÑаÑик) Ñ ÐºÐ¾Ð¾ÑдинаÑами @{@var{x}, @var{y}, @var{z}@} и ÑвеÑом @var{col}.
+ at end deffn
+
+ at cindex line
+ at anchor{line}
+ at deffn {Ðоманда MGL} line @code{x1 y1 x2 y2} ['stl'='']
+ at deffnx {Ðоманда MGL} line @code{x1 y1 z1 x2 y2 z2} ['stl'='']
+РиÑÑÐµÑ Ð³ÐµÐ¾Ð´ÐµÐ·Ð¸ÑеÑкÑÑ Ð»Ð¸Ð½Ð¸Ñ (декаÑÑовÑÑ
кооÑдинаÑаÑ
-- пÑÑмÑÑ) из ÑоÑки @{@var{x1}, at var{y1}, at var{z1}@} в @{@var{x2}, at var{y2}, at var{z2}@} иÑполÑзÑÑ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ @var{stl}. ÐÑÐ¸Ð²Ð°Ñ ÑиÑÑеÑÑÑ Ð´Ð°Ð¶Ðµ еÑли ÑаÑÑÑ ÐµÐµ Ð»ÐµÐ¶Ð¸Ñ Ð²Ð½Ðµ диапазона оÑей кооÑдинаÑ.
+ at end deffn
+
+ at cindex curve
+ at anchor{curve}
+ at deffn {Ðоманда MGL} curve @code{x1 y1 dx1 dy1 x2 y2 dx2 dy2} ['stl'='']
+ at deffnx {Ðоманда MGL} curve @code{x1 y1 z1 dx1 dy1 dz1 x2 y2 z2 dx2 dy2 dz2} ['stl'='']
+РиÑÑÐµÑ ÐºÑивÑÑ ÐезÑе из ÑоÑки @{@var{x1}, at var{y1}, at var{z1}@} в @{@var{x2}, at var{y2}, at var{z2}@} иÑполÑзÑÑ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ @var{stl}. ÐаÑаÑелÑнÑе в ÑоÑкаÑ
пÑопоÑÑионалÑÐ½Ñ @{@var{dx1}, at var{dy1}, at var{dz1}@}, @{@var{dx2}, at var{dy2}, at var{dz2}@}. ÐÑÐ¸Ð²Ð°Ñ ÑиÑÑеÑÑÑ Ð´Ð°Ð¶Ðµ еÑли ÑаÑÑÑ ÐµÐµ Ð»ÐµÐ¶Ð¸Ñ Ð²Ð½Ðµ диапазона оÑей кооÑдинаÑ.
+ at end deffn
+
+ at cindex facex
+ at anchor{facex}
+ at deffn {Ðоманда MGL} facex @code{x0 y0 z0 wy wz} ['stl'='' @code{d1=0 d2=0}]
+ at cindex facey
+ at anchor{facey}
+ at deffnx {Ðоманда MGL} facey @code{x0 y0 z0 wx wz} ['stl'='' @code{d1=0 d2=0}]
+ at cindex facez
+ at anchor{facez}
+ at deffnx {Ðоманда MGL} facez @code{x0 y0 z0 wx wy} ['stl'='' @code{d1=0 d2=0}]
+РиÑÑÐµÑ Ð·Ð°ÐºÑаÑеннÑй пÑÑмоÑголÑник (гÑанÑ) пеÑпендикÑлÑÑно оÑи [x,y,z] в ÑоÑке @{@var{x0}, @var{y0}, @var{z0}@} ÑвеÑом @var{stl} и ÑиÑиной @var{wx}, @var{wy}, @var{wz} Ð²Ð´Ð¾Ð»Ñ ÑооÑвеÑÑÑвÑÑÑего напÑавлениÑ. ÐÑи ÑÑом ÑÐ²ÐµÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½ Ð´Ð»Ñ Ð²Ñей гÑани, или ÑазлиÑнÑм Ð´Ð»Ñ ÑазнÑÑ
веÑÑин еÑли ÑÐºÐ°Ð·Ð°Ð½Ñ Ð²Ñе 4 ÑвеÑа (полезно Ð´Ð»Ñ Ð³ÑадиенÑа ÑвеÑа, напÑÐ¸Ð¼ÐµÑ @samp{wwrr}). ÐаÑамеÑÑÑ @var{d1}!=0, @var{d2}!=0 задаÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑй Ñдвиг поÑледней ÑоÑки (Ñ.е. ÑиÑÑÑÑ ÑеÑÑÑеÑ
ÑголÑник). ÐÑÐ°Ð½Ñ Ð±ÑÐ´ÐµÑ Ð½Ð°ÑиÑована даже еÑли ÑаÑÑÑ ÐµÐµ Ð»ÐµÐ¶Ð¸Ñ Ð²Ð½Ðµ диапазона оÑей кооÑдинаÑ.
+ at end deffn
+
+ at cindex sphere
+ at anchor{sphere}
+ at deffn {Ðоманда MGL} sphere @code{x0 y0 r} ['col'='r']
+ at deffnx {Ðоманда MGL} sphere @code{x0 y0 z0 r} ['col'='r']
+РиÑÑÐµÑ ÑÑеÑÑ ÑадиÑÑа @var{r} Ñ ÑенÑÑом в ÑоÑке @{@var{x}, @var{y}, @var{z}@} ÑвеÑом @var{stl}.
+ at end deffn
+
+ at cindex drop
+ at anchor{drop}
+ at deffn {Ðоманда MGL} drop @code{x0 y0 dx dy r} ['col'='b' @code{sh=1 asp=1}]
+ at deffnx {Ðоманда MGL} drop @code{x0 y0 z0 dx dy dz r} ['col'='b' @code{sh=1 asp=1}]
+РиÑÑÐµÑ ÐºÐ°Ð¿Ð»Ñ ÑадиÑÑа @var{r} в ÑоÑке @{@var{x0}, at var{y0}, at var{z0}@} вÑÑÑнÑÑÑÑ Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ @{@var{dx}, at var{dy}, at var{dz}@} ÑвеÑом @var{col}. ÐаÑамеÑÑ @var{sh} опÑеделÑÐµÑ ÑÑÐµÐ¿ÐµÐ½Ñ Ð²ÑÑÑнÑÑоÑÑи: @samp{0} -- ÑÑеÑа, @samp{1} -- клаÑÑиÑеÑÐºÐ°Ñ ÐºÐ°Ð¿Ð»Ñ. ÐаÑамеÑÑ @var{asp} опÑеделÑÐµÑ Ð¾ÑноÑиÑелÑнÑÑ ÑиÑÐ¸Ð½Ñ ÐºÐ°Ð¿Ð»Ð¸ (аналог "ÑллипÑиÑноÑÑи" Ð´Ð»Ñ ÑÑеÑÑ). @sref{Drops sample}
+ at end deffn
+
+ at cindex cone
+ at anchor{cone}
+ at deffn {Ðоманда MGL} cone @code{x1 y1 z1 x2 y2 z2 r1} [@code{r2=-1} 'stl'='' @code{edge=off}]
+РиÑÑÐµÑ ÑÑÑÐ±Ñ (или ÑÑеÑеннÑй конÑÑ ÐµÑли @var{edge}=@code{off}) Ð¼ÐµÐ¶Ð´Ñ ÑоÑками @{@var{x1}, at var{y1}, at var{z1}@}, @{@var{x2}, at var{y2}, at var{z2}@} Ñ ÑадиÑÑами на конÑаÑ
@var{r1}, @var{r2}. ÐÑли @var{r2}<0, Ñо полагаеÑÑÑ @var{r2}=@var{r1}. Ð¦Ð²ÐµÑ ÐºÐ¾Ð½ÑÑа задаеÑÑÑ ÑÑÑокой @var{stl}.
+ at end deffn
+
+ at cindex rect
+ at anchor{rect}
+ at deffn {Ðоманда MGL} rect @code{x1 y1 x2 y2} ['st'='']
+ at deffnx {Ðоманда MGL} rect @code{x1 y1 z1 x2 y2 z2} ['st'='']
+РиÑÑÐµÑ Ð·Ð°ÐºÑаÑеннÑй пÑÑмоÑголÑник (гÑанÑ) Ñ Ð¿ÑоÑивоположнÑми веÑÑинами в ÑоÑкаÑ
@{@var{x1}, at var{y1}, at var{z1}@}, @{@var{x2}, at var{y2}, at var{z2}@} ÑвеÑом @var{stl}. ÐÑи ÑÑом ÑÐ²ÐµÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½ Ð´Ð»Ñ Ð²Ñей гÑани, или ÑазлиÑнÑм Ð´Ð»Ñ ÑазнÑÑ
веÑÑин еÑли ÑÐºÐ°Ð·Ð°Ð½Ñ Ð²Ñе 4 ÑвеÑа (полезно Ð´Ð»Ñ Ð³ÑадиенÑа ÑвеÑа, напÑÐ¸Ð¼ÐµÑ @samp{wwrr}). ÐÑÐ°Ð½Ñ Ð±ÑÐ´ÐµÑ Ð½Ð°ÑиÑована даже еÑли ÑаÑÑÑ ÐµÐµ Ð»ÐµÐ¶Ð¸Ñ Ð²Ð½Ðµ диапазона оÑей кооÑдинаÑ.
+ at end deffn
+
+ at c ##################################################################
+ at node Text printing @MGL{}, Axis and Colorbar @MGL{}, Primitives drawing @MGL{}, MGL interface
+ at section ÐÑвод ÑекÑÑа @MGL{}
+
+ÐÐ¾Ð¼Ð°Ð½Ð´Ñ Ð´Ð»Ñ Ð²Ñвода ÑекÑÑа позволÑÑÑ Ð²ÑвеÑÑи ÑÑÑÐ¾ÐºÑ ÑекÑÑа в пÑоизволÑном меÑÑе ÑиÑÑнка, в пÑоизволÑном напÑавлении и Ð²Ð´Ð¾Ð»Ñ Ð¿ÑоизволÑной кÑивой. Ðожно иÑполÑзоваÑÑ Ð¿ÑоизволÑное наÑеÑÑание ÑÑиÑÑа и многие ТеХ-ие ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ (деÑалÑнее @pxref{Font styles}). ÐÑгÑÐ¼ÐµÐ½Ñ @var{size} опÑеделÑÐµÑ ÑÐ°Ð·Ð¼ÐµÑ ÑекÑÑа: ÑÐ°Ð·Ð¼ÐµÑ ÑÑиÑÑа еÑли положиÑелен или оÑноÑиÑелÑнÑй ÑÐ°Ð·Ð¼ÐµÑ (=- at var{size}*@var{fontsize}) еÑли оÑÑиÑаÑелен.
+
+ÐаÑамеÑÑÑ ÑÑиÑÑа задаÑÑÑÑ ÑÑÑокой, коÑоÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ ÑÑÐ¸Ð»Ñ (@samp{rbiwou}) и/или вÑÑÐ°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ (@samp{LRC}). Также ÑÑÑока Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ ÑвеÑа @samp{wkrgbcymhRGBCYMHW} (@pxref{Line styles}) поÑле Ñимвола @samp{:}. СÑили ÑÑиÑÑа: @samp{r} -- пÑÑмой, @samp{i} -- кÑÑÑив, @samp{b} -- жиÑнÑй, @samp{w} -- конÑÑÑнÑй, @samp{o} -- надÑеÑкнÑÑÑй, @samp{u} -- подÑеÑкнÑÑÑй. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ÑполÑзÑеÑÑÑ Ð¿ÑÑмой ÑÑиÑÑ. Ð¢Ð¸Ð¿Ñ Ð²ÑÑавниваниÑ: @samp{L} -- по Ð»ÐµÐ²Ð¾Ð¼Ñ ÐºÑÐ°Ñ (по ÑмолÑаниÑ), @samp{C} -- по ÑенÑÑÑ, @samp{R} -- по пÑÐ°Ð²Ð¾Ð¼Ñ ÐºÑаÑ. ÐапÑимеÑ, ÑÑÑока @samp{iC:b} ÑооÑвеÑÑÑвÑÐµÑ ÐºÑÑÑÐ¸Ð²Ñ Ñинего ÑвеÑа Ñ Ð²ÑÑавниванием по ÑенÑÑÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ÑполÑзÑÑÑÑÑ Ð¿Ð°ÑамеÑÑÑ, опÑеделеннÑе командой @ref{font}.
+
+ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ @samp{aA}, Ñо ÑекÑÑ Ð²ÑводиÑÑÑ Ð² абÑолÑÑнÑÑ
кооÑдинаÑаÑ
(полагаÑÑÑÑ Ð² диапазоне [0,1]). ÐÑи ÑÑом иÑполÑзÑÑÑÑÑ ÐºÐ¾Ð¾ÑдинаÑÑ Ð¾ÑноÑиÑелÑно ÑиÑÑнка (еÑли Ñказано @samp{A}) или оÑноÑиÑелÑно поÑледнего @ref{subplot}/@ref{inplot} (еÑли Ñказано @samp{a}).
+
+ at cindex text
+ at anchor{text}
+ at deffn {Ðоманда MGL} text @code{x y} 'text' ['fnt'='' @code{size=-1.4}]
+ at deffnx {Ðоманда MGL} text @code{x y z} 'text' ['fnt'='' @code{size=-1.4}]
+ÐÑÐ²Ð¾Ð´Ð¸Ñ ÑÑÑÐ¾ÐºÑ @var{text} Ð¾Ñ ÑоÑки @{@var{x}, at var{y}, at var{z}@} ÑÑиÑÑом @var{fnt} и ÑазмеÑом @var{size}.
+ at end deffn
+
+ at deffn {Ðоманда MGL} text @code{x y dx dy} 'text' [@code{size=-1.4}]
+ at deffnx {Ðоманда MGL} text @code{x y z dx dy dz} 'text' [@code{size=-1.4}]
+ÐÑÐ²Ð¾Ð´Ð¸Ñ ÑÑÑÐ¾ÐºÑ @var{text} Ð¾Ñ ÑоÑки @{@var{x}, at var{y}, at var{z}@} Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ @{@var{dx}, at var{dy}, at var{dz}@} ÑÑиÑÑом @var{fnt} и ÑазмеÑом @var{size}.
+ at end deffn
+
+ at deffn {Ðоманда MGL} text ydat 'text' ['fnt'='' @code{size=-1 zval=nan}]
+ at deffnx {Ðоманда MGL} text xdat ydat 'text' ['fnt'='' @code{size=-1 zval=nan}]
+ at deffnx {Ðоманда MGL} text xdat ydat zdat 'text' ['fnt'='' @code{size=-1}]
+ÐÑÐ²Ð¾Ð´Ð¸Ñ ÑÑÑÐ¾ÐºÑ @var{text} Ð²Ð´Ð¾Ð»Ñ ÐºÑивой @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} ÑÑиÑÑом @var{font}. СÑÑока @var{font} Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ ÑимволÑ: @samp{t} Ð´Ð»Ñ Ð²Ñвода ÑекÑÑа под кÑивой (по ÑмолÑаниÑ), или @samp{T} Ð´Ð»Ñ Ð²Ñвода ÑекÑÑа над кÑивой. ÐÑли маÑÑив @var{xdat} не Ñказан, Ñо иÑполÑзÑеÑÑÑ Ð¼Ð°ÑÑив Ñо знаÑениÑми Ñавно ÑаÑпÑеделеннÑми Ð²Ð´Ð¾Ð»Ñ Ð¾Ñи x. ÐÑли маÑÑив @var{zdat} не Ñказан, Ñо иÑполÑзÑеÑÑÑ @var{zdat}[i] = @var{zval}. @sref{Text sample}
+ at end deffn
+
+ at cindex title
+ at anchor{title}
+ at deffn {Ðоманда MGL} title 'text' ['fnt'='' @code{size=-2}]
+ÐÑÐ²Ð¾Ð´Ð¸Ñ ÑÑÑÐ¾ÐºÑ @var{text} как заголовок (ÑвеÑÑ
Ñ ÑиÑÑнка). ÐÐ¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð² лÑбом меÑÑе (даже внÑÑÑи @ref{subplot}).
+ at end deffn
+
+ at cindex fgets
+ at anchor{fgets}
+ at deffn {Ðоманда MGL} fgets @code{x y} 'fname' [@code{n=0} 'fnt'='' @code{size=-1.4}]
+ at deffnx {Ðоманда MGL} fgets @code{x y z} 'fname' [@code{n=0} 'fnt'='' @code{size=-1.4}]
+ÐÑÐ²Ð¾Ð´Ð¸Ñ @var{n}-ÑÑ ÑÑÑÐ¾ÐºÑ Ñайла @var{fname} Ð¾Ñ ÑоÑки @{@var{x}, at var{y}, at var{z}@} ÑÑиÑÑом @var{fnt} и ÑазмеÑом @var{size}.
+ at end deffn
+
+
+ at c ##################################################################
+ at node Axis and Colorbar @MGL{}, Legend @MGL{}, Text printing @MGL{}, MGL interface
+ at section ÐÑи и Colorbar @MGL{}
+
+ÐÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÑиÑÑÑÑ Ð¾Ð±ÑекÑÑ Ð´Ð»Ñ "измеÑениÑ" Ñипа оÑей кооÑдинаÑ, ÑвеÑовой ÑаблиÑÑ (colorbar), ÑеÑÐºÑ Ð¿Ð¾ оÑÑм, обÑамлÑÑÑий паÑаллелепипед и подпиÑи по оÑÑм кооÑдинаÑ. См. Ñакже @ref{Axis settings @MGL{}}.
+
+ at cindex axis
+ at c @anchor{}
+ at deffn {Ðоманда MGL} axis ['dir'='xyz' @code{adjust=off}]
+РиÑÑÐµÑ Ð¾Ñи кооÑÐ´Ð¸Ð½Ð°Ñ Ð¸ меÑки на ниÑ
(@pxref{Axis settings @MGL{}}) в напÑавлениÑÑ
, ÑказаннÑÑ
ÑÑÑокой @var{dir}. ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ Ñимвол @samp{_}, Ñо подпиÑи меÑок оÑобÑажаÑÑÑÑ Ð½Ðµ бÑдÑÑ. ШÑиÑÑ Ð¿Ð¾Ð´Ð¿Ð¸Ñей опÑеделÑеÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ @ref{font}. ÐеÑки бÑдÑÑ "подогнанÑ" еÑли @var{adjust}=@code{on} (Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð²Ñзова @code{adjust 'dir'}).
+ at end deffn
+
+ at cindex colorbar
+ at anchor{colorbar}
+ at deffn {Ðоманда MGL} colorbar ['sch'='' @code{pos=0}]
+РиÑÑÐµÑ Ð¿Ð¾Ð»Ð¾ÑÑ ÑооÑвеÑÑÑÐ²Ð¸Ñ ÑвеÑа и ÑиÑловÑÑ
знаÑений (colorbar) Ð´Ð»Ñ ÑвеÑовой ÑÑ
ÐµÐ¼Ñ @var{sch} (иÑполÑзÑеÑÑÑ ÑекÑÑÐ°Ñ Ð´Ð»Ñ @code{sch=''}) Ñ ÐºÑÐ°Ñ Ð¾Ñ Ð³ÑаÑика. ÐаÑамеÑÑ @var{pos} Ð·Ð°Ð´Ð°ÐµÑ Ð¼ÐµÑÑоположение: @samp{0} - ÑпÑава (по ÑмолÑаниÑ), @samp{1} - Ñлева, @samp{2} - ÑвеÑÑ
Ñ, @samp{3} - ÑнизÑ. ÐÑли ÑÑÑока @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{<>^_}, Ñо паÑамеÑÑ @var{pos} опÑеделÑеÑÑÑ ÐºÐ°Ðº: @code{pos=0} Ð´Ð»Ñ @samp{>} (ÑпÑава), @code{pos=1} Ð´Ð»Ñ @samp{<} (Ñлева), @code{pos=2} Ð´Ð»Ñ @samp{^} (ÑвеÑÑ
Ñ), @code{pos=3} Ð´Ð»Ñ @samp{_} (ÑнизÑ). ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ @samp{A}, Ñо иÑполÑзÑÑÑÑÑ Ð°Ð±ÑолÑÑнÑе кооÑдинаÑÑ (оÑноÑиÑелÑно ÑиÑÑнка). @sref{Dens sample}
+ at end deffn
+
+ at deffn {Ðоманда MGL} colorbar vdat ['sch'='' @code{pos=0}]
+ÐналогиÑно пÑедÑдÑÑемÑ, но Ð´Ð»Ñ ÑвеÑовой ÑÑ
ÐµÐ¼Ñ Ð±ÐµÐ· ÑÐ³Ð»Ð°Ð¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñми знаÑениÑми @var{vdat}. @sref{ContD sample}
+ at end deffn
+
+ at deffn {Ðоманда MGL} colorbar 'sch' @code{pos x y w h}
+ÐналогиÑно пеÑвомÑ, но в пÑоизволÑном меÑÑе гÑаÑика @{@var{x}, @var{y}@} (полагаÑÑÑÑ Ð² диапазоне [0,1]). ÐаÑамеÑÑÑ @var{w}, @var{h} задаÑÑ Ð¾ÑноÑиÑелÑнÑÑ ÑиÑÐ¸Ð½Ñ Ð¸ вÑÑоÑÑ colorbar.
+ at end deffn
+
+ at cindex grid
+ at anchor{grid}
+ at deffn {Ðоманда MGL} grid ['dir'='xyz' 'pen'='B']
+РиÑÑÐµÑ Ð»Ð¸Ð½Ð¸Ð¸ ÑеÑки в напÑавлениÑÑ
пеÑпендикÑлÑÑнÑм @var{dir}. Шаг ÑеÑки Ñакой же как Ñ Ð¼ÐµÑок оÑей кооÑдинаÑ. СÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¹ задаеÑÑÑ Ð¿Ð°ÑамеÑÑом @var{pen} (по ÑмолÑÐ°Ð½Ð¸Ñ -- ÑплоÑÐ½Ð°Ñ Ñемно ÑинÑÑ Ð»Ð¸Ð½Ð¸Ñ @samp{B-}).
+ at end deffn
+
+ at cindex box
+ at anchor{box}
+ at deffn {Ðоманда MGL} box ['stl'='k' @code{ticks=on}]
+РиÑÑÐµÑ Ð¾Ð³ÑаниÑиваÑÑий паÑаллелепипед ÑвеÑом 'stl'. ÐÑи @code{ticks=on} ÑиÑÑÑÑÑÑ Ð¼ÐµÑки в ÑооÑвеÑÑÑвии Ñ ÑекÑÑими наÑÑÑойками оÑей кооÑÐ´Ð¸Ð½Ð°Ñ @ref{axis}.
+ at end deffn
+
+ at cindex xlabel
+ at anchor{xlabel}
+ at deffn {Ðоманда MGL} xlabel 'text' [@code{pos=0 size=-1.4 shift=0}]
+ at cindex ylabel
+ at anchor{ylabel}
+ at deffnx {Ðоманда MGL} ylabel 'text' [@code{pos=0 size=-1.4 shift=0}]
+ at cindex zlabel
+ at anchor{zlabel}
+ at deffnx {Ðоманда MGL} zlabel 'text' [@code{pos=0 size=-1.4 shift=0}]
+ at cindex tlabel
+ at anchor{tlabel}
+ at deffnx {Ðоманда MGL} tlabel 'text' [@code{pos=0 size=-1.4 shift=0}]
+ÐÑÐ²Ð¾Ð´Ð¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑ @var{text} Ð´Ð»Ñ x-,y-,z-,t-оÑи (где @samp{t} -- ``ÑеÑнаÑнаÑ'' оÑÑ @math{t=1-x-y}). ÐаÑамеÑÑ @var{pos} Ð·Ð°Ð´Ð°ÐµÑ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ подпиÑи: пÑи @var{pos}=0 -- по ÑенÑÑÑ Ð¾Ñи, пÑи @var{pos}>0 -- около макÑималÑнÑÑ
знаÑений, пÑи @var{pos}<0 -- около минималÑнÑÑ
знаÑений. ÐаÑамеÑÑ @var{size} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ ÑÑиÑÑа (по ÑмолÑÐ°Ð½Ð¸Ñ Ð² 1.4 Ñаза болÑÑе Ñем Ñ Ð¼ÐµÑок). @xref{Text printing @MGL{}}.
+ at end deffn
+
+ at c ##################################################################
+ at node Legend @MGL{}, 1D plotting @MGL{}, Axis and Colorbar @MGL{}, MGL interface
+ at section Ðегенда @MGL{}
+
+ÐÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¾Ð±ÐµÑпеÑиваÑÑ ÑиÑование Ð»ÐµÐ³ÐµÐ½Ð´Ñ Ð³ÑаÑика (полезно Ð´Ð»Ñ @ref{1D plotting}). ÐапиÑÑ Ð² легенде ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· двÑÑ
ÑÑÑок: одна Ð´Ð»Ñ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов, дÑÑÐ³Ð°Ñ Ñ ÑекÑÑом опиÑÐ°Ð½Ð¸Ñ (Ñ Ð²ÐºÐ»ÑÑеннÑм ÑазбоÑом TeX-иÑ
команд), накапливаемÑе во внÑÑÑенние маÑÑÐ¸Ð²Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ @ref{addlegend} или опÑии @ref{legend}. Ðоложение Ð»ÐµÐ³ÐµÐ½Ð´Ñ Ð¼Ð¾Ð¶Ð½Ð¾ задаÑÑ Ð°Ð²ÑомаÑиÑеÑки или вÑÑÑнÑÑ. ÐаÑамеÑÑÑ @var{font} и @var{size} задаÑÑ ÑÑÐ¸Ð»Ñ Ð¸ ÑÐ°Ð·Ð¼ÐµÑ ÑÑиÑÑа. ÐаÑамеÑÑ @var{llen} Ð·Ð°Ð´Ð°ÐµÑ Ð¾ÑноÑиÑелÑнÑÑ ÑиÑÐ¸Ð½Ñ Ð¿ÑимеÑа линии. Ðли ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ пÑÑÑой, Ñо ÑооÑвеÑÑÑвÑÑÑий ÑекÑÑ Ð¿ÐµÑаÑаеÑÑÑ Ð±ÐµÐ· оÑÑÑÑпа. ÐÑли ÑÑÑока @var{font} ÑодеÑÐ¶Ð¸Ñ Ñимвол @samp{A}, Ñо кооÑдинаÑÑ Ð»ÐµÐ³ÐµÐ½Ð´Ñ ÑÑиÑаÑÑÑÑ Ð¾ÑноÑиÑелÑно каÑÑинки (а не ÑекÑÑего subplot). @sref{Legend sample}
+
+ at cindex legend
+ at anchor{legend}
+ at deffn {Ðоманда MGL} legend [@code{pos=3} 'fnt'='rL' @code{size=-1 llen=0.1}]
+РиÑÑÐµÑ Ð»ÐµÐ³ÐµÐ½Ð´Ñ Ð¸Ð· накопленнÑÑ
запиÑей ÑÑиÑÑом @var{fnt} ÑазмеÑом @var{size}. ÐаÑамеÑÑ @var{pos} Ð·Ð°Ð´Ð°ÐµÑ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ легендÑ: @samp{0} -- в нижнем левом ÑглÑ, @samp{1} -- нижнем пÑавом ÑглÑ, @samp{2} -- веÑÑ
нем левом ÑглÑ, @samp{3} -- веÑÑ
нем пÑавом ÑÐ³Ð»Ñ (по ÑмолÑаниÑ).
+ at end deffn
+
+ at deffn {Ðоманда MGL} legend @code{x y} ['fnt'='rL' @code{size=-1 llen=0.1}]
+РиÑÑÐµÑ Ð»ÐµÐ³ÐµÐ½Ð´Ñ Ð¸Ð· накопленнÑÑ
запиÑей ÑÑиÑÑом @var{font} ÑазмеÑом @var{size}. Ðоложение Ð»ÐµÐ³ÐµÐ½Ð´Ñ Ð·Ð°Ð´Ð°ÐµÑÑÑ Ð¿Ð°ÑамеÑÑами @var{x}, @var{y}, коÑоÑÑе полагаÑÑÑÑ Ð½Ð¾ÑмиÑованнÑми в диапазоне [0,1].
+ at end deffn
+
+ at cindex addlegend
+ at anchor{addlegend}
+ at deffn {Ðоманда MGL} addlegend 'text' 'stl'
+ÐобавлÑÐµÑ Ð¾Ð¿Ð¸Ñание @var{text} кÑивой Ñо ÑÑилем @var{stl} (@pxref{Line styles}) во внÑÑÑенний маÑÑив запиÑей легендÑ. ÐакÑималÑное ÑиÑло запиÑей 100.
+ at end deffn
+
+ at cindex clearlegend
+ at anchor{clearlegend}
+ at deffn {Ðоманда MGL} clearlegend
+ÐÑиÑÐ°ÐµÑ Ð²Ð½ÑÑÑенний маÑÑив запиÑей легендÑ.
+ at end deffn
+
+ at cindex legendbox
+ at anchor{legendbox}
+ at deffn {Ðоманда MGL} legendbox @code{val}
+ÐклÑÑаеÑ/вÑклÑÑÐ°ÐµÑ ÑиÑование пÑÑмоÑголÑника вокÑÑг легендÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ (=@code{on}) пÑÑмоÑголÑник ÑиÑÑеÑÑÑ.
+ at end deffn
+
+ at cindex legendmarks
+ at anchor{legendmarks}
+ at deffn {Ðоманда MGL} legendmarks @code{val}
+ÐÐ°Ð´Ð°ÐµÑ ÑиÑло маÑкеÑов в легенде. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ÑполÑзÑеÑÑÑ 1 маÑкеÑ.
+ at end deffn
+
+ at c ##################################################################
+ at node 1D plotting @MGL{}, 2D plotting @MGL{}, Legend @MGL{}, MGL interface
+ at section 1D гÑаÑики @MGL{}
+
+ÐÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÑÑÑоÑÑ Ð³ÑаÑики Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð¼ÐµÑнÑÑ
(1D) маÑÑивов. ÐдномеÑнÑми ÑÑиÑаÑÑÑÑ Ð¼Ð°ÑÑивÑ, завиÑÑÑие ÑолÑко Ð¾Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ паÑамеÑÑа (индекÑа) подобно кÑивой в паÑамеÑÑиÑеÑкой ÑоÑме @{x(i),y(i),z(i)@}, i=1...n. ÐÑÑÑ 5 оÑновнÑÑ
Ñипов 1D гÑаÑиков: Ð»Ð¸Ð½Ð¸Ñ (@ref{plot}), Ð»Ð¸Ð½Ð¸Ñ Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÐµÐ¼ (@ref{area}), ÑÑÑпенÑки (@ref{step}), пÑÑмоÑголÑники (@ref{bars}, @ref{barh}) и веÑÑикалÑнÑе линии (@ref{stem}). ÐÑе ÑÑи ÑÐ¸Ð¿Ñ Ð³ÑаÑиков имеÑÑ Ð¿Ð¾Ñ
ожий инÑеÑÑейÑ. ÐÑÑÑ Ð²ÐµÑÑии Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² пÑоÑÑÑанÑÑве и на плоÑкоÑÑи. РпоÑледнем ÑлÑÑае имееÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑолÑко одного маÑÑива. СÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов ÑказÑваеÑÑÑ ÑÑÑоковой пеÑеменной. ÐÑли она Ñавна @code{''}. ÐÑоме Ñого, еÑÑÑ ÐµÑе неÑколÑко Ñипов гÑаÑиков Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð¼ÐµÑнÑÑ
маÑÑивов, имеÑÑиÑ
дÑÑгой инÑеÑÑÐµÐ¹Ñ Ð¸ вид: повеÑÑ
ноÑÑÑ Ð²ÑаÑÐµÐ½Ð¸Ñ ÐºÑивой (@ref{torus}), диагÑамма (@ref{chart}), ÑÐ°Ð·Ð¼ÐµÑ Ð¾Ñибки (@ref{error}), маÑкеÑÑ Ð¿ÐµÑеменного ÑазмеÑа (@ref{mark}), ÑÑÑбками (@ref{tube}) и Ñ.д. @sref{1D plot sample}
+
+ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-ой кооÑдинаÑе @strong{должен бÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²} Ð´Ð»Ñ Ð²ÑеÑ
маÑÑивов @code{xdat.nx=ydat.nx=zdat.nx}. ÐÑли маÑÑив @var{xdat} не Ñказан, Ñо иÑполÑзÑеÑÑÑ Ð¼Ð°ÑÑив Ñо знаÑениÑми Ñавно ÑаÑпÑеделеннÑми Ð²Ð´Ð¾Ð»Ñ Ð¾Ñи x. ÐÑли маÑÑив @var{zdat} не Ñказан, Ñо иÑполÑзÑеÑÑÑ @var{zdat}[i] = @var{zval}. СÑÑока @var{stl} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ Ð¸ ÑÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑов (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{stl=''}) ÑиÑÑеÑÑÑ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑвеÑом из палиÑÑÑ.
+
+ at cindex plot
+ at anchor{plot}
+ at deffn {Ðоманда MGL} plot ydat ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} plot xdat ydat ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} plot xdat ydat zdat ['stl'='']
+РиÑÑÐµÑ Ð»Ð¾Ð¼Ð°Ð½Ð½ÑÑ Ð»Ð¸Ð½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñ ÑоÑками @{@var{x}[i], @var{y}[i], @var{z}[i]@}. См. Ñакже @ref{area}, @ref{step}, @ref{stem}, @ref{tube}, @ref{mark}, @ref{error}, @ref{belt}, @ref{tens}. @sref{Plot sample}
+ at end deffn
+
+
+ at cindex radar
+ at anchor{radar}
+ at deffn {Ðоманда MGL} radar adat ['stl'='' @code{r=-1}]
+РиÑÑÐµÑ radar chart, пÑедÑÑавлÑÑÑий Ñобой ломаннÑÑ Ñ Ð²ÐµÑÑинами на ÑадиалÑнÑÑ
линиÑÑ
(Ñипа ломанной в полÑÑнÑÑ
кооÑдинаÑаÑ
). ÐÑаÑик ÑиÑÑеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки еÑли один из маÑÑивов маÑÑиÑа. ÐаÑамеÑÑ @var{r} Ð·Ð°Ð´Ð°ÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑй Ñдвиг даннÑÑ
(Ñ.е. иÑполÑзÑеÑÑÑ @var{a}+ at var{r} вмеÑÑо @var{a}). ÐÑли @code{r<0}, Ñо @code{r=max(0, -min(a)}. ÐÑли @var{stl} ÑодеÑÐ¶Ð¸Ñ Ñимвол @samp{#}, Ñо Ñакже ÑиÑÑеÑÑÑ "ÑеÑка" (ÑадиалÑнÑе линии и кÑÑг Ð´Ð»Ñ @var{r}). См. Ñакже @ref{plot}. @sref{Radar sample}
+ at end deffn
+
+ at cindex tens
+ at anchor{tens}
+ at deffn {Ðоманда MGL} tens ydat cdat ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} tens xdat ydat cdat ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} tens xdat ydat zdat cdat ['stl'='']
+РиÑÑÐµÑ Ð»Ð¾Ð¼Ð°Ð½Ð½ÑÑ Ð»Ð¸Ð½Ð¸Ñ Ð¿Ð¾ ÑоÑкам @{@var{x}[i], @var{y}[i], @var{z}[i]@} Ñ ÑвеÑом, опÑеделÑемÑм маÑÑивом @var{c}[i] (Ñипа гÑаÑика наÑÑжений). См. Ñакже @ref{plot}, @ref{mesh}, @ref{fall}. @sref{Tens sample}
+ at end deffn
+
+ at cindex area
+ at anchor{area}
+ at deffn {Ðоманда MGL} area ydat ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} area xdat ydat ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} area xdat ydat zdat ['stl'='']
+РиÑÑÐµÑ Ð»Ð¾Ð¼Ð°Ð½Ð½ÑÑ Ð»Ð¸Ð½Ð¸Ñ Ð¿Ð¾ ÑоÑками @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} и закÑаÑÐ¸Ð²Ð°ÐµÑ ÐµÐµ вниз до плоÑкоÑÑи оÑей кооÑдинаÑ. Ðожно иÑполÑзоваÑÑ Ð³ÑадиенÑное закÑаÑивание еÑли ÑиÑло ÑказаннÑÑ
ÑвеÑов в @var{stl} Ñавно ÑÐ´Ð²Ð¾ÐµÐ½Ð½Ð¾Ð¼Ñ ÑиÑÐ»Ñ ÐºÑивÑÑ
Ð´Ð»Ñ Ð¿Ð¾ÑÑÑоениÑ. ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ Ñимвол @samp{a}, Ñо линии ÑиÑÑÑÑÑÑ Ð¾Ð´Ð½Ð° повеÑÑ
дÑÑгой (Ñ ÑÑммиÑованием) -- Ñого же ÑÑÑекÑа можно доÑÑиÑÑ Ð²Ñзовом @code{cumsum ydat 'y'} пеÑед поÑÑÑоением гÑаÑика. См. Ñакже @ref{plot}, @ref{bars}, @ref{stem}, @ref{region}. @sref{Area sample}
+ at end deffn
+
+ at cindex region
+ at anchor{region}
+ at deffn {Ðоманда MGL} region fdat gdat ['stl'='' @code{inside=off}]
+ at deffnx {Ðоманда MGL} region xdat fdat gdat ['stl'='' @code{inside=off}]
+ÐакÑаÑÐ¸Ð²Ð°ÐµÑ Ð¾Ð±Ð»Ð°ÑÑÑ Ð¼ÐµÐ¶Ð´Ñ 2 кÑивÑми @{@var{xdat}[i], @var{fdat}[i]@} и @{@var{xdat}[i], @var{gdat}[i]@}. ÐÑи @code{inside=off} закÑаÑиваеÑÑÑ ÑолÑко облаÑÑÑ y1<y<y2, в пÑоÑивном ÑлÑÑае Ñакже бÑÐ´ÐµÑ Ð·Ð°ÐºÑаÑена облаÑÑÑ y2<y<y1. Ðожно иÑполÑзоваÑÑ Ð³ÑадиенÑное закÑаÑивание еÑли ÑиÑло ÑказаннÑÑ
ÑвеÑов @var{stl} Ñавно ÑÐ´Ð²Ð¾ÐµÐ½Ð½Ð¾Ð¼Ñ ÑиÑÐ»Ñ ÐºÑивÑÑ
Ð´Ð»Ñ Ð¿Ð¾ÑÑÑоениÑ. См. Ñакже @ref{area}, @ref{bars}, @ref{stem}. @sref{Region sample}
+ at end deffn
+
+ at cindex stem
+ at anchor{stem}
+ at deffn {Ðоманда MGL} stem ydat ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} stem xdat ydat ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} stem xdat ydat zdat ['stl'='']
+РиÑÑÐµÑ Ð²ÐµÑÑикалÑнÑе линии из ÑоÑек @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} до плоÑкоÑÑи оÑей кооÑдинаÑ. См. Ñакже @ref{area}, @ref{bars}, @ref{plot}, @ref{mark}. @sref{Stem sample}
+ at end deffn
+
+ at cindex bars
+ at anchor{bars}
+ at deffn {Ðоманда MGL} bars ydat ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} bars xdat ydat ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} bars xdat ydat zdat ['stl'='']
+РиÑÑÐµÑ Ð²ÐµÑÑикалÑнÑе полоÑÑ (пÑÑмоÑголÑники) из ÑоÑек @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} до плоÑкоÑÑи оÑей кооÑдинаÑ. ÐÑли ÑÑÑока @var{stl} ÑодеÑÐ¶Ð¸Ñ Ñимвол @samp{a}, Ñо линии ÑиÑÑÑÑÑÑ Ð¾Ð´Ð½Ð° повеÑÑ
дÑÑгой. ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ Ñимвол @samp{f}, Ñо ÑиÑÑеÑÑÑ Ð³ÑаÑик Ñипа waterfall Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÐºÑмÑлÑÑивного ÑÑÑекÑа поÑледоваÑелÑноÑÑи положиÑелÑнÑÑ
и оÑÑиÑаÑелÑнÑÑ
знаÑений. Ðожно иÑполÑзоваÑÑ ÑазнÑе ÑвеÑа Ð´Ð»Ñ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑнÑÑ
и оÑÑиÑаÑелÑнÑÑ
знаÑений еÑли ÑиÑло ÑказаннÑÑ
ÑвеÑов Ñавно ÑÐ´Ð²Ð¾ÐµÐ½Ð½Ð¾Ð¼Ñ ÑиÑÐ»Ñ ÐºÑивÑÑ
Ð´Ð»Ñ Ð¿Ð¾ÑÑÑоениÑ. См. Ñакже @ref{barh}, @ref{area}, @ref{stem}, @ref{chart}. @sref{Bars sample}
+ at end deffn
+
+ at cindex barh
+ at anchor{barh}
+ at deffn {Ðоманда MGL} barh xdat ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} barh ydat xdat ['stl'='' @code{zval=nan}]
+РиÑÑÐµÑ Ð³Ð¾ÑизонÑалÑнÑе полоÑÑ (пÑÑмоÑголÑники) из ÑоÑек @{@var{xdat}[i], @var{ydat}[i]@} до плоÑкоÑÑи оÑи y. ÐÑли маÑÑив @var{ydat} не Ñказан, Ñо иÑполÑзÑеÑÑÑ Ð¼Ð°ÑÑив Ñо знаÑениÑми Ñавно ÑаÑпÑеделеннÑми Ð²Ð´Ð¾Ð»Ñ Ð¾Ñи y. ÐÑли ÑÑÑока @var{stl} ÑодеÑÐ¶Ð¸Ñ Ñимвол @samp{a}, Ñо линии ÑиÑÑÑÑÑÑ Ð¾Ð´Ð½Ð° повеÑÑ
дÑÑгой. ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ Ñимвол @samp{f}, Ñо ÑиÑÑеÑÑÑ Ð³ÑаÑик Ñипа waterfall Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÐºÑмÑлÑÑивного ÑÑÑекÑа поÑледоваÑелÑноÑÑи положиÑелÑнÑÑ
и оÑÑиÑаÑелÑнÑÑ
знаÑений. Ðожно иÑполÑзоваÑÑ ÑазнÑе ÑвеÑа Ð´Ð»Ñ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑнÑÑ
и оÑÑиÑаÑелÑнÑÑ
знаÑений еÑли ÑиÑло ÑказаннÑÑ
ÑвеÑов Ñавно ÑÐ´Ð²Ð¾ÐµÐ½Ð½Ð¾Ð¼Ñ ÑиÑÐ»Ñ ÐºÑивÑÑ
Ð´Ð»Ñ Ð¿Ð¾ÑÑÑоениÑ. См. Ñакже @ref{bars}. @sref{Barh sample}
+ at end deffn
+
+ at cindex chart
+ at anchor{chart}
+ at deffn {Ðоманда MGL} chart adat ['col'='']
+РиÑÑÐµÑ ÑвеÑнÑе полоÑÑ (поÑÑа) Ð´Ð»Ñ Ð¼Ð°ÑÑива даннÑÑ
@var{adat}. ЧиÑло Ð¿Ð¾Ð»Ð¾Ñ Ñавно ÑиÑÐ»Ñ ÑÑÑок @var{adat} (Ñавно @var{a.ny}). Ð¦Ð²ÐµÑ Ð¿Ð¾Ð»Ð¾Ñ Ð¿Ð¾Ð¾ÑеÑедно менÑеÑÑÑ Ð¸Ð· ÑвеÑов ÑказаннÑÑ
в @var{col} или в палиÑÑе (еÑли @code{col=''}). ÐÑобел в ÑвеÑаÑ
ÑооÑвеÑÑÑвÑÐµÑ Ð¿ÑозÑаÑÐ½Ð¾Ð¼Ñ "ÑвеÑÑ", Ñ.е. ÑооÑвеÑÑÑвÑÑÑÐ°Ñ Ð¿Ð¾Ð»Ð¾Ñа не ÑиÑÑеÑÑÑ. ШиÑина полоÑÑ Ð¿ÑопоÑÑионалÑна знаÑÐµÐ½Ð¸Ñ ÑлеменÑа в @var{adat}. ÐÑаÑик ÑÑÑоиÑÑÑ ÑолÑко Ð´Ð»Ñ Ð¼Ð°ÑÑивов не ÑодеÑжаÑиÑ
оÑÑиÑаÑелÑнÑÑ
знаÑений. ÐÑли ÑÑÑока @var{col} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ Ñакже ÑеÑÐ½Ð°Ñ Ð³ÑаниÑа полоÑ. ÐÑаÑик вÑглÑÐ´Ð¸Ñ Ð»ÑÑÑе в 3d (поÑле вÑаÑÐµÐ½Ð¸Ñ ÑиÑÑÐµÐ¼Ñ ÐºÐ¾Ð¾ÑдинаÑ) и/или в полÑÑной ÑиÑÑеме кооÑÐ´Ð¸Ð½Ð°Ñ (ÑÑановиÑÑÑ Pie chart). @sref{Chart sample}
+ at end deffn
+
+ at cindex step
+ at anchor{step}
+ at deffn {Ðоманда MGL} step ydat ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} step xdat ydat ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} step xdat ydat zdat ['stl'='']
+РиÑÑÐµÑ ÑÑÑпенÑки Ð´Ð»Ñ ÑоÑек маÑÑива @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. См. Ñакже @ref{plot}, @ref{stem}, @ref{tile}, @ref{boxs}. @sref{Step sample}
+ at end deffn
+
+ at cindex torus
+ at anchor{torus}
+ at deffn {Ðоманда MGL} torus zdat ['stl'='']
+ at deffnx {Ðоманда MGL} torus rdat zdat ['stl'='']
+РиÑÑÐµÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ Ð²ÑаÑÐµÐ½Ð¸Ñ ÐºÑивой @{@var{rdat}[i], @var{zdat}[i], @var{zdat}[i]@} оÑноÑиÑелÑно оÑи @ref{axialdir}. ÐÑли маÑÑив @var{rdat} не Ñказан, Ñо иÑполÑзÑеÑÑÑ Ð¼Ð°ÑÑив Ñо знаÑениÑми Ñавно ÑаÑпÑеделеннÑми Ð²Ð´Ð¾Ð»Ñ Ð¾Ñи x. См. Ñакже @ref{plot}, @ref{axial}. @sref{Torus sample}
+ at end deffn
+
+ at cindex tube
+ at anchor{tube}
+ at deffn {Ðоманда MGL} tube ydat rdat ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} tube ydat @code{rval} ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} tube xdat ydat rdat ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} tube xdat ydat @code{rval} ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} tube xdat ydat zdat rdat ['stl'='']
+ at deffnx {Ðоманда MGL} tube xdat ydat zdat @code{rval} ['stl'='']
+РиÑÑÐµÑ ÑÑÑÐ±Ñ ÑадиÑÑа @var{rdat}[i] (or @var{rval}) Ð²Ð´Ð¾Ð»Ñ ÐºÑивой Ð¼ÐµÐ¶Ð´Ñ ÑоÑками @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. См. Ñакже @ref{plot}. @sref{Tube sample}
+ at end deffn
+
+ at cindex mark
+ at anchor{mark}
+ at deffn {Ðоманда MGL} mark ydat rdat ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} mark xdat ydat rdat ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} mark xdat ydat zdat rdat ['stl'='']
+РиÑÑÐµÑ Ð¼Ð°ÑкеÑÑ ÑазмеÑом @var{rdat}[i]*@code{marksize} в ÑоÑкаÑ
@{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. ÐÐ»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð°ÑкеÑов одинакового ÑазмеÑа можно иÑполÑзоваÑÑ ÑÑнкÑÐ¸Ñ @code{plot} Ñ Ð½ÐµÐ²Ð¸Ð´Ð¸Ð¼Ð¾Ð¹ линией (Ñо ÑÑилем ÑодеÑжаÑим @samp{ }). См. Ñакже @ref{plot}, @ref{textmark}, @ref{stem}, @ref{error}. @sref{Mark sample}
+ at end deffn
+
+ at cindex textmark
+ at anchor{textmark}
+ at deffn {Ðоманда MGL} textmark ydat 'txt' ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} textmark ydat rdat 'txt' ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} textmark xdat ydat rdat 'txt' ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} textmark xdat ydat zdat rdat 'txt' ['stl'='']
+РиÑÑÐµÑ ÑекÑÑ @var{txt} как маÑÐºÐµÑ Ñ ÑазмеÑом пÑопоÑÑионалÑнÑм @var{rdat}[i]*@code{marksize} в ÑоÑкаÑ
@{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. ÐÑли маÑÑив @var{rdat} не Ñказан, Ñо полагаеÑÑÑ @var{rdat}[i] = 1. См. Ñакже @ref{plot}, @ref{mark}, @ref{stem}. @sref{TextMark sample}
+ at end deffn
+
+ at cindex error
+ at anchor{error}
+ at deffn {Ðоманда MGL} error ydat yerr ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} error xdat ydat yerr ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} error xdat ydat xerr yerr ['stl'='' @code{zval=nan}]
+РиÑÑÐµÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¾Ñибки @{@var{xerr}[i], @var{yerr}[i]@} в ÑоÑкаÑ
@{@var{xdat}[i], @var{ydat}[i]@} на плоÑкоÑÑи @var{z} = @var{zval}. Такой гÑаÑик полезен Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¾Ñибки ÑкÑпеÑименÑа, вÑÑиÑлений и пÑ. См. Ñакже @ref{plot}. @sref{Error sample}
+ at end deffn
+
+ at cindex boxplot
+ at anchor{boxplot}
+ at deffn {Ðоманда MGL} boxplot adat ['stl'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} boxplot xdat adat ['stl'='' @code{zval=nan}]
+РиÑÑÐµÑ boxplot (назÑваемÑй Ñакже как box-and-whisker diagram или как "ÑÑик Ñ ÑÑами") в ÑоÑкаÑ
@var{xdat}[i] на плоÑкоÑÑи @var{z} = @var{zval}. ÐÑо гÑаÑик, компакÑно изобÑажаÑÑий ÑаÑпÑеделение веÑоÑÑноÑÑей @var{adat}[i,j] (минимÑм, нижний кваÑÑÐ¸Ð»Ñ (Q1), медиана (Q2), веÑÑ
ний кваÑÑÐ¸Ð»Ñ (Q3) и макÑимÑм) Ð²Ð´Ð¾Ð»Ñ Ð²ÑоÑого (j-го) напÑавлениÑ. См. Ñакже @ref{plot}, @ref{error}, @ref{bars}. @sref{BoxPlot sample}
+ at end deffn
+
+ at c ##################################################################
+ at node 2D plotting @MGL{}, 3D plotting @MGL{}, 1D plotting @MGL{}, MGL interface
+ at section 2D гÑаÑики @MGL{}
+
+ÐÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÑÑÑоÑÑ Ð³ÑаÑики Ð´Ð»Ñ Ð´Ð²ÑмеÑнÑÑ
(2D) маÑÑивов. ÐвÑмеÑнÑми ÑÑиÑаÑÑÑÑ Ð¼Ð°ÑÑивÑ, завиÑÑÑие ÑолÑко Ð¾Ñ Ð´Ð²ÑÑ
паÑамеÑÑов (индекÑов) подобно маÑÑиÑе @math{f(x_i,y_j), i=1...n, j=1...m}. ÐÑÑÑ Ð½ÐµÑколÑко оÑновнÑÑ
Ñипов 2D гÑаÑиков: ÑплоÑÐ½Ð°Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ (@ref{surf}), ÑеÑÑаÑÐ°Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ (@ref{mesh}), повеÑÑ
ноÑÑÑ Ð¸Ð· ÑÑиков (@ref{boxs}), повеÑÑ
ноÑÑÑ Ð¸Ð· плиÑок (@ref{tile}), водопад (@ref{fall}), ленÑоÑки (@ref{belt}), гÑаÑик плоÑноÑÑи (@ref{dens}), линии ÑÑÐ¾Ð²Ð½Ñ (@ref{cont}), линии ÑÑÐ¾Ð²Ð½Ñ Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÐµÐ¼ (@ref{contf}) и ÑезÑлÑÑÐ°Ñ Ð¸Ñ
вÑаÑÐµÐ½Ð¸Ñ (@ref{axial}). Ð ÑÑнкÑиÑÑ
@ref{cont}, @ref{contf} и @ref{axial} знаÑÐµÐ½Ð¸Ñ ÑÑовней можно задаваÑÑ Ð°Ð²ÑомаÑиÑеÑки и вÑÑÑнÑÑ. Ðожно Ñакже наÑиÑоваÑÑ ÑеÑÐºÑ (@ref{grid}) по маÑÑÐ¸Ð²Ñ Ð´Ð°Ð½Ð½ÑÑ
Ð´Ð»Ñ ÑлÑÑÑÐµÐ½Ð¸Ñ Ð²Ð¸Ð´Ð° гÑаÑика плоÑноÑÑи или линий ÑÑовнÑ. ÐаждÑй Ñип гÑаÑика Ð¸Ð¼ÐµÐµÑ Ð¿Ð¾Ñ
ожий инÑеÑÑейÑ. ÐÑÑÑ Ð²ÐµÑÑÐ¸Ñ Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ маÑÑива Ñ Ð°Ð²ÑомаÑиÑеÑкими кооÑдинаÑами и веÑÑÐ¸Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи. @sref{1D plot sample}
+
+СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
ÐµÐ¼Ñ (@pxref{Color scheme}. ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{xdat}, @var{ydat}, @var{zdat} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ @code{xdat.nx=zdat.nx && ydat.nx=zdat.ny} или @code{xdat.nx=ydat.nx=zdat.nx && xdat.ny=ydat.ny=zdat.ny}. ÐаÑÑÐ¸Ð²Ñ @var{xdat} и @var{ydat} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{zdat}). ÐÑли маÑÑÐ¸Ð²Ñ @var{xdat}, @var{ydat} не ÑказанÑ, Ñо иÑполÑзÑÑÑÑÑ Ð¼Ð°ÑÑÐ¸Ð²Ñ Ñо знаÑениÑми Ñавно ÑаÑпÑеделеннÑми Ð²Ð´Ð¾Ð»Ñ Ð¾Ñей x, y. ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза даннÑÑ
.
+
+ at cindex surf
+ at anchor{surf}
+ at deffn {Ðоманда MGL} surf zdat ['sch'='']
+ at deffnx {Ðоманда MGL} surf xdat ydat zdat ['sch'='']
+РиÑÑÐµÑ Ð¿Ð°ÑамеÑÑиÑеÑки заданнÑÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо на повеÑÑ
ноÑÑи ÑиÑÑеÑÑÑ ÑеÑка. См. Ñакже @ref{mesh}, @ref{dens}, @ref{belt}, @ref{tile}, @ref{boxs}, @ref{surfc}, @ref{surfa}. @sref{Surf sample}
+ at end deffn
+
+ at cindex mesh
+ at anchor{mesh}
+ at deffn {Ðоманда MGL} mesh zdat ['sch'='']
+ at deffnx {Ðоманда MGL} mesh xdat ydat zdat ['sch'='']
+РиÑÑÐµÑ ÑеÑÑаÑÑÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ, заданнÑÑ Ð¿Ð°ÑамеÑÑиÑеÑки @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. См. Ñакже @ref{surf}, @ref{fall}, @ref{meshnum}, @ref{cont}, @ref{tens}. @sref{Mesh sample}
+ at end deffn
+
+ at cindex fall
+ at anchor{fall}
+ at deffn {Ðоманда MGL} fall zdat ['sch'='']
+ at deffnx {Ðоманда MGL} fall xdat ydat zdat ['sch'='']
+РиÑÑÐµÑ Ð²Ð¾Ð´Ð¾Ð¿Ð°Ð´ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. ÐÑаÑик Ñдобен Ð´Ð»Ñ Ð¿Ð¾ÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð½ÐµÑколÑкиÑ
кÑивÑÑ
, ÑдвинÑÑÑÑ
вглÑÐ±Ñ Ð´ÑÑг оÑноÑиÑелÑно дÑÑга. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{x}, Ñо линии ÑиÑÑÑÑÑÑ Ð²Ð´Ð¾Ð»Ñ x-оÑи (по ÑмолÑÐ°Ð½Ð¸Ñ Ð»Ð¸Ð½Ð¸Ð¸ ÑиÑÑÑÑÑÑ Ð²Ð´Ð¾Ð»Ñ y-оÑи). См. Ñакже @ref{belt}, @ref{mesh}, @ref{tens}, @ref{meshnum}. @sref{Fall sample}
+ at end deffn
+
+ at cindex belt
+ at anchor{belt}
+ at deffn {Ðоманда MGL} belt zdat ['sch'='']
+ at deffnx {Ðоманда MGL} belt xdat ydat zdat ['sch'='']
+РиÑÑÐµÑ Ð»ÐµÐ½ÑоÑки Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{x}, Ñо линии ÑиÑÑÑÑÑÑ Ð²Ð´Ð¾Ð»Ñ x-оÑи (по ÑмолÑÐ°Ð½Ð¸Ñ Ð»Ð¸Ð½Ð¸Ð¸ ÑиÑÑÑÑÑÑ Ð²Ð´Ð¾Ð»Ñ y-оÑи). См. Ñакже @ref{fall}, @ref{surf}, @ref{plot}, @ref{meshnum}. @sref{Belt sample}
+ at end deffn
+
+ at cindex boxs
+ at anchor{boxs}
+ at deffn {Ðоманда MGL} boxs zdat ['sch'='']
+ at deffnx {Ðоманда MGL} boxs xdat ydat zdat ['sch'='']
+РиÑÑÐµÑ Ð²ÐµÑÑикалÑнÑе ÑÑики Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. См. Ñакже @ref{surf}, @ref{dens}, @ref{tile}, @ref{step}. @sref{Boxs sample}
+ at end deffn
+
+ at cindex tile
+ at anchor{tile}
+ at deffn {Ðоманда MGL} tile zdat ['sch'='']
+ at deffnx {Ðоманда MGL} tile xdat ydat zdat ['sch'='']
+РиÑÑÐµÑ Ð¿Ð»Ð¸Ñки Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. ÐÑаÑик Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ ÐºÐ°Ðº 3d обобÑение @ref{step}. См. Ñакже @ref{surf}, @ref{boxs}, @ref{step}, @ref{tiles}. @sref{Tile sample}
+ at end deffn
+
+ at cindex dens
+ at anchor{dens}
+ at deffn {Ðоманда MGL} dens zdat ['sch'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} dens xdat ydat zdat ['sch'='' @code{zval=nan}]
+РиÑÑÐµÑ Ð³ÑаÑик плоÑноÑÑи Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} пÑи @var{z} = @var{zVal}. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑка. См. Ñакже @ref{surf}, @ref{cont}, @ref{contf}, @ref{boxs}, @ref{tile}, @code{dens[xyz]}. @sref{Dens sample}
+ at end deffn
+
+ at cindex cont
+ at anchor{cont}
+ at deffn {Ðоманда MGL} cont vdat zdat ['sch'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} cont vdat xdat ydat zdat ['sch'='' @code{zval=nan}]
+РиÑÑÐµÑ Ð»Ð¸Ð½Ð¸Ð¸ ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} пÑи @var{z} = @var{zval} (или пÑи @var{z=vdat}[k] еÑли @code{zval==nan}). Ðинии ÑÑÐ¾Ð²Ð½Ñ ÑиÑÑÑÑÑÑ Ð´Ð»Ñ @var{z}=@var{vdat}[k]. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑка. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{t} или @samp{T}, Ñо знаÑÐµÐ½Ð¸Ñ @var{vdat}[k] бÑдÑÑ Ð²ÑÐ²ÐµÐ´ÐµÐ½Ñ Ð²Ð´Ð¾Ð»Ñ ÐºÐ¾Ð½ÑÑÑов над (или под) кÑивой. См. Ñакже @ref{dens}, @ref{contf}, @ref{contd}, @ref{axial}, @code{cont[xyz]}. @sref{Cont sample}
+ at end deffn
+
+ at deffn {Ðоманда MGL} cont zdat ['sch'='' @code{num=7 zval=nan}]
+ at deffnx {Ðоманда MGL} cont xdat ydat zdat ['sch'='' @code{num=7 zval=nan}]
+Ðак пÑедÑдÑÑий Ñ Ð²ÐµÐºÑоÑом @var{v} из @var{num} ÑлеменÑов Ñавно ÑаÑпÑеделеннÑÑ
в инÑеÑвале ÑвеÑовой ÑÐºÐ°Ð»Ñ (Ñм., @ref{caxis}).
+ at end deffn
+
+ at cindex contf
+ at anchor{contf}
+ at deffn {Ðоманда MGL} contf vdat zdat ['sch'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} contf vdat xdat ydat zdat ['sch'='' @code{zval=nan}]
+РиÑÑÐµÑ Ð·Ð°ÐºÑаÑеннÑе линии (конÑÑÑÑ) ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} пÑи @var{z} = @var{zval} (или пÑи @var{z=v}[k] еÑли @code{zval=nan}). Ðинии ÑÑÐ¾Ð²Ð½Ñ ÑиÑÑÑÑÑÑ Ð´Ð»Ñ @var{z}=@var{vdat}[k]. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑка. См. Ñакже @ref{dens}, @ref{cont}, @ref{contd}, @code{contf[xyz]}. @sref{ContF sample}
+ at end deffn
+
+ at deffn {Ðоманда MGL} contf zdat ['sch'='' @code{num=7 zval=nan}]
+ at deffnx {Ðоманда MGL} contf xdat ydat zdat ['sch'='' @code{num=7 zval=nan}]
+Ðак пÑедÑдÑÑий Ñ Ð²ÐµÐºÑоÑом @var{v} из @var{num} ÑлеменÑов Ñавно ÑаÑпÑеделеннÑÑ
в инÑеÑвале ÑвеÑовой ÑÐºÐ°Ð»Ñ (Ñм., @ref{caxis}).
+ at end deffn
+
+ at cindex contd
+ at anchor{contd}
+ at deffn {Ðоманда MGL} contd vdat zdat ['sch'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} contd vdat xdat ydat zdat ['sch'='' @code{zval=nan}]
+РиÑÑÐµÑ Ð·Ð°ÐºÑаÑеннÑе линии (конÑÑÑÑ) ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} пÑи @var{z} = @var{zval} (или пÑи @var{z=v}[k] еÑли @code{zval==nan}) ÑвеÑами заданнÑми Ñвно. Ðинии ÑÑÐ¾Ð²Ð½Ñ ÑиÑÑÑÑÑÑ Ð´Ð»Ñ @var{z}=@var{vdat}[k]. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ ÐºÐ¾Ð½ÑÑÑов: ÑÐ²ÐµÑ k-го конÑÑÑа опÑеделÑеÑÑÑ Ñимволом @code{sch[k%strlen(sch)]}. См. Ñакже @ref{dens}, @ref{cont}, @ref{contf}, @code{cont[xyz]}. @sref{ContD sample}
+ at end deffn
+
+ at deffn {Ðоманда MGL} contd zdat ['sch'='' @code{num=7 zval=nan}]
+ at deffnx {Ðоманда MGL} contd xdat ydat zdat ['sch'='' @code{num=7 zval=nan}]
+Ðак пÑедÑдÑÑий Ñ Ð²ÐµÐºÑоÑом @var{v} из @var{num} ÑлеменÑов Ñавно ÑаÑпÑеделеннÑÑ
в инÑеÑвале ÑвеÑовой ÑÐºÐ°Ð»Ñ (Ñм., @ref{caxis}).
+ at end deffn
+
+ at cindex axial
+ at anchor{axial}
+ at deffn {Ðоманда MGL} axial vdat zdat ['sch'='']
+ at deffnx {Ðоманда MGL} axial vdat xdat ydat zdat ['sch'='']
+РиÑÑÐµÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ Ð²ÑаÑÐµÐ½Ð¸Ñ Ð»Ð¸Ð½Ð¸Ð¸ ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. Ðинии ÑÑÐ¾Ð²Ð½Ñ ÑиÑÑÑÑÑÑ Ð´Ð»Ñ @var{zdat}[i,j]=@var{vdat}[k]. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑÑаÑÐ°Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ. ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ @samp{x}, @samp{y} или @samp{z}, Ñо оÑÑ Ð²ÑаÑÐµÐ½Ð¸Ñ ÑÑÑанавливаеÑÑÑ Ð² Ñказанное напÑавление (по ÑмолÑÐ°Ð½Ð¸Ñ Ð²Ð´Ð¾Ð»Ñ Ð¾Ñи @ref{axialdir}). См. Ñакже @ref{cont}, @ref{contf}, @ref{torus}, @ref{surf3}. @sref{Axial sample}
+ at end deffn
+
+ at deffn {Ðоманда MGL} axial zdat ['sch'='' @code{num=3}]
+ at deffnx {Ðоманда MGL} axial xdat ydat zdat ['sch'='' @code{num=3}]
+Ðак пÑедÑдÑÑий Ñ Ð²ÐµÐºÑоÑом @var{v} из @var{num} ÑлеменÑов Ñавно ÑаÑпÑеделеннÑÑ
в инÑеÑвале ÑвеÑовой ÑÐºÐ°Ð»Ñ (Ñм., @ref{caxis}).
+ at end deffn
+
+ at cindex grad
+ at anchor{grad}
+ at deffn {Ðоманда MGL} grad pdat ['sch'='' @code{num=5 zval=nan}]
+ at deffnx {Ðоманда MGL} grad xdat ydat pdat ['sch'='' @code{num=5 zval=nan}]
+ at deffnx {Ðоманда MGL} grad xdat ydat zdat pdat ['sch'='' @code{num=5}]
+РиÑÑÐµÑ Ð»Ð¸Ð½Ð¸Ð¸ гÑадиенÑа ÑкалÑÑного Ð¿Ð¾Ð»Ñ @var{pdat} заданного паÑамеÑÑиÑеÑки @{@var{xdat}[i,j], @var{ydat}[i,j]@} или @{@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]@}. ЧиÑло линий пÑопоÑÑионалÑно @var{num}. Ðинии ÑиÑÑÑÑÑÑ ÑолÑко Ñ Ð³ÑÐ°Ð½Ð¸Ñ Ð¸Ð½ÑеÑвала пÑи @var{num}<0. См. Ñакже @ref{dens}, @ref{cont}, @ref{dens3}, @ref{cont3}, @ref{flow}. @sref{Grad sample}
+ at end deffn
+
+
+ at cindex grid2
+ at anchor{grid2}
+ at deffn {Ðоманда MGL} grid2 zdat ['sch'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} grid2 xdat ydat zdat ['sch'='' @code{zval=nan}]
+РиÑÑÐµÑ Ð¿Ð»Ð¾ÑкÑÑ ÑеÑÑ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} пÑи @var{z} = @var{zval}. См. Ñакже @ref{dens}, @ref{cont}, @ref{contf}.
+ at end deffn
+
+
+ at c ##################################################################
+ at node 3D plotting @MGL{}, Dual plotting @MGL{}, 2D plotting @MGL{}, MGL interface
+ at section 3D гÑаÑики @MGL{}
+
+ÐÑи ÑÑнкÑии ÑÑÑоÑÑ Ð³ÑаÑики Ð´Ð»Ñ ÑÑеÑ
меÑнÑÑ
(3D) маÑÑивов. ТÑеÑ
меÑнÑми ÑÑиÑаÑÑÑÑ Ð¼Ð°ÑÑивÑ, завиÑÑÑие Ð¾Ñ ÑÑеÑ
паÑамеÑÑов (индекÑов) подобно маÑÑиÑе @math{f(x_i,y_j,z_k), i=1...n, j=1...m, k=1...l}. ÐÑÑÑ 5 оÑновнÑÑ
Ñипов 3D гÑаÑиков: повеÑÑ
ноÑÑÑ Ð¿Ð¾ÑÑоÑнного ÑÑÐ¾Ð²Ð½Ñ (@ref{surf3}), гÑаÑик плоÑноÑÑи на ÑÑезе (@var{dens3}), линии ÑÑÐ¾Ð²Ð½Ñ Ð½Ð° ÑÑезе (@ref{cont3}), закÑаÑеннÑе конÑÑÑÑ ÑÑÐ¾Ð²Ð½Ñ Ð½Ð° ÑÑезе (@ref{contf3}) и гÑаÑик обÑемной пÑозÑаÑноÑÑи Ñипа облака (@ref{cloud}). Ð ÑÑнкÑиÑÑ
@ref{cont3}, @ref{contf3} и @ref{surf3} знаÑÐµÐ½Ð¸Ñ ÑÑовней можно задаваÑÑ Ð°Ð²ÑомаÑиÑеÑки и вÑÑÑнÑÑ. Ðожно Ñакже наÑиÑоваÑÑ Ð½Ð° ÑÑезе ÑеÑÐºÑ (@ref{grid3}) по маÑÑÐ¸Ð²Ñ Ð´Ð°Ð½Ð½ÑÑ
Ð´Ð»Ñ ÑлÑÑÑÐµÐ½Ð¸Ñ Ð²Ð¸Ð´Ð° гÑаÑика плоÑноÑÑи или линий ÑÑовнÑ. ÐаждÑй Ñип гÑаÑика Ð¸Ð¼ÐµÐµÑ Ð¿Ð¾Ñ
ожий инÑеÑÑейÑ. ÐÑÑÑ Ð²ÐµÑÑÐ¸Ñ Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ маÑÑива Ñ Ð°Ð²ÑомаÑиÑеÑкими кооÑдинаÑами и веÑÑÐ¸Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданного маÑÑива. @sref{3D plot sample}
+
+СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
ÐµÐ¼Ñ (@pxref{Color scheme}). ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐаÑÑÐ¸Ð²Ñ @var{x}, @var{y}, @var{z} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не 3d маÑÑивами как @var{a}). ÐÑли маÑÑÐ¸Ð²Ñ @var{xdat}, @var{ydat}, @var{zdat} не ÑказанÑ, Ñо иÑполÑзÑÑÑÑÑ Ð¼Ð°ÑÑÐ¸Ð²Ñ Ñо знаÑениÑми Ñавно ÑаÑпÑеделеннÑми Ð²Ð´Ð¾Ð»Ñ Ð¾Ñей x, y, z.
+
+
+ at cindex surf3
+ at anchor{surf3}
+ at deffn {Ðоманда MGL} surf3 adat @code{val} ['sch'='']
+ at deffnx {Ðоманда MGL} surf3 xdat ydat zdat adat @code{val} ['sch'='']
+РиÑÑÐµÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ 3d маÑÑива, заданного паÑамеÑÑиÑеÑки @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]) пÑи @var{adat}(x,y,z)=@var{val}. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑÑаÑÐ°Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ. См. Ñакже @ref{cloud}, @ref{dens3}, @ref{surf3c}, @ref{surf3a}, @ref{axial}. @sref{Surf3 sample}
+ at end deffn
+
+ at deffn {Ðоманда MGL} surf3 adat ['sch'='' @code{num=5}]
+ at deffnx {Ðоманда MGL} surf3 xdat ydat zdat adat ['sch'='' @code{num=5}]
+РиÑÑÐµÑ @var{num} повеÑÑ
ноÑÑей ÑÑÐ¾Ð²Ð½Ñ ÑавномеÑно ÑаÑпÑеделеннÑÑ
в инÑеÑвале ÑвеÑовой ÑÐºÐ°Ð»Ñ (Ñм. @ref{caxis}).
+ at end deffn
+
+ at cindex dens3
+ at anchor{dens3}
+ at deffn {Ðоманда MGL} dens3 adat 'dir' [@code{sval=-1} 'sch'='']
+ at deffnx {Ðоманда MGL} dens3 xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='']
+РиÑÑÐµÑ Ð³ÑаÑик плоÑноÑÑи Ð´Ð»Ñ 3d маÑÑива, заданного паÑамеÑÑиÑеÑки @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). ÐÑаÑик ÑиÑÑеÑÑÑ Ð½Ð° ÑÑезе @var{sval} в напÑавлении @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@}. ÐÑли @var{stl} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо на ÑÑезе ÑиÑÑеÑÑÑ ÑеÑка. См. Ñакже @ref{cont3}, @ref{contf3}, @ref{dens}, @ref{grid3}. @sref{Dens3 sample}
+ at end deffn
+
+ at cindex densa
+ at anchor{densa}
+ at deffn {Ðоманда MGL} densa adat ['sch'='']
+ at deffnx {Ðоманда MGL} densa xdat ydat zdat adat ['sch'='']
+РиÑÑÐµÑ Ð³ÑаÑики плоÑноÑÑи на вÑеÑ
ÑенÑÑалÑнÑÑ
ÑÑезаÑ
3d даннÑÑ
.
+ at end deffn
+
+ at cindex cont3
+ at anchor{cont3}
+ at deffn {Ðоманда MGL} cont3 vdat adat 'dir' [@code{sval=-1} 'sch'='']
+ at deffnx {Ðоманда MGL} cont3 vdat xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='']
+РиÑÑÐµÑ Ð»Ð¸Ð½Ð¸Ð¸ ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ 3d маÑÑива, заданного паÑамеÑÑиÑеÑки @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). Ðинии ÑиÑÑÑÑÑÑ Ð´Ð»Ñ Ð·Ð½Ð°Ñений из маÑÑива @var{v} на ÑÑезе @var{sval} в напÑавлении @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@}. ÐÑли @var{stl} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо на ÑÑезе ÑиÑÑеÑÑÑ ÑеÑка. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{t} или @samp{T}, Ñо знаÑÐµÐ½Ð¸Ñ @var{vdat}[k] бÑдÑÑ Ð²ÑÐ²ÐµÐ´ÐµÐ½Ñ Ð²Ð´Ð¾Ð»Ñ ÐºÐ¾Ð½ÑÑÑов над (или под) кÑивой. См. Ñакже @ref{dens3}, @ref{contf3}, @ref{cont}, @ref{grid3}. @sref{Cont3 sample}
+ at end deffn
+
+ at deffn {Ðоманда MGL} cont3 adat 'dir' [@code{sval=-1} 'sch'='' @code{num=7}]
+ at deffnx {Ðоманда MGL} cont3 xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='' @code{num=7}]
+Ðак пÑедÑдÑÑий Ñ Ð²ÐµÐºÑоÑом @var{v} из @var{num} ÑлеменÑов Ñавно ÑаÑпÑеделеннÑÑ
в инÑеÑвале ÑвеÑовой ÑÐºÐ°Ð»Ñ (Ñм., @ref{caxis}).
+ at end deffn
+
+ at cindex conta
+ at anchor{conta}
+ at deffn {Ðоманда MGL} conta adat ['sch'='' @code{num=7}]
+ at deffnx {Ðоманда MGL} conta xdat ydat zdat adat ['sch'='' @code{num=7}]
+РиÑÑÐµÑ Ð»Ð¸Ð½Ð¸Ð¸ ÑÑÐ¾Ð²Ð½Ñ Ð½Ð° вÑеÑ
ÑенÑÑалÑнÑÑ
ÑÑезаÑ
3d даннÑÑ
.
+ at end deffn
+
+ at cindex contf3
+ at anchor{contf3}
+ at deffn {Ðоманда MGL} contf3 vdat adat 'dir' [@code{sval=-1} 'sch'='']
+ at deffnx {Ðоманда MGL} contf3 vdat xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='']
+РиÑÑÐµÑ Ð·Ð°ÐºÑаÑеннÑе линии (конÑÑÑÑ) ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ 3d маÑÑива, заданного паÑамеÑÑиÑеÑки @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). Ðинии ÑиÑÑÑÑÑÑ Ð´Ð»Ñ Ð·Ð½Ð°Ñений из маÑÑива @var{v} на ÑÑезе @var{sval} в напÑавлении @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@}. ÐÑли @var{stl} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо на ÑÑезе ÑиÑÑеÑÑÑ ÑеÑка. См. Ñакже @ref{dens3}, @ref{cont3}, @ref{contf}, @ref{grid3}. @sref{ContF3 sample}
+ at end deffn
+
+ at deffn {Ðоманда MGL} contf3 adat 'dir' [@code{sval=-1} 'sch'='' @code{num=7}]
+ at deffnx {Ðоманда MGL} contf3 xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='' @code{num=7}]
+Ðак пÑедÑдÑÑий Ñ Ð²ÐµÐºÑоÑом @var{v} из @var{num} ÑлеменÑов Ñавно ÑаÑпÑеделеннÑÑ
в инÑеÑвале ÑвеÑовой ÑÐºÐ°Ð»Ñ (Ñм., @ref{caxis}).
+ at end deffn
+
+ at cindex contfa
+ at anchor{contfa}
+ at deffn {Ðоманда MGL} contfa adat ['sch'='' @code{num=7}]
+ at deffnx {Ðоманда MGL} contfa xdat ydat zdat adat ['sch'='' @code{num=7}]
+РиÑÑÐµÑ Ð·Ð°ÐºÑаÑеннÑе линии (конÑÑÑÑ) ÑÑÐ¾Ð²Ð½Ñ Ð½Ð° вÑеÑ
ÑенÑÑалÑнÑÑ
ÑÑезаÑ
3d даннÑÑ
.
+ at end deffn
+
+ at cindex grid3
+ at anchor{grid3}
+ at deffn {Ðоманда MGL} grid3 adat 'dir' [@code{sval=-1} 'sch'='']
+ at deffnx {Ðоманда MGL} grid3 xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='']
+РиÑÑÐµÑ ÑеÑÐºÑ Ð´Ð»Ñ 3d маÑÑива, заданного паÑамеÑÑиÑеÑки @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). ÐÑаÑик ÑиÑÑеÑÑÑ Ð½Ð° ÑÑезе @var{sval} в напÑавлении @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@}. См. Ñакже @ref{cont3}, @ref{contf3}, @ref{dens3}, @ref{grid2}.
+ at end deffn
+
+ at cindex grida
+ at anchor{grida}
+ at deffn {Ðоманда MGL} grida adat ['sch'='']
+ at deffnx {Ðоманда MGL} grida xdat ydat zdat adat ['sch'='']
+РиÑÑÐµÑ ÑеÑÐºÑ Ð½Ð° вÑеÑ
ÑенÑÑалÑнÑÑ
ÑÑезаÑ
3d даннÑÑ
.
+ at end deffn
+
+ at cindex cloud
+ at anchor{cloud}
+ at deffn {Ðоманда MGL} cloud adat ['sch'='']
+ at deffnx {Ðоманда MGL} cloud xdat ydat zdat adat ['sch'='']
+РиÑÑÐµÑ Ð¾Ð±Ð»Ð°ÑнÑй гÑаÑик Ð´Ð»Ñ 3d маÑÑива, заданного паÑамеÑÑиÑеÑки @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). ÐÑаÑик ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· кÑбиков Ñ ÑвеÑом и пÑозÑаÑноÑÑÑÑ Ð¿ÑопоÑÑионалÑной знаÑениÑм @var{adat}. РезÑлÑÑÐ°Ñ Ð¿Ð¾Ñ
ож на облако -- малÑе знаÑÐµÐ½Ð¸Ñ Ð¿ÑозÑаÑнÑ, а болÑÑие неÑ. ЧиÑло кÑбиков завиÑÐ¸Ñ Ð¾Ñ @ref{meshnum}. ÐаÑамеÑÑ @var{alpha} менÑÐµÑ Ð¾Ð±ÑÑÑ Ð¿ÑозÑаÑноÑÑÑ Ð³ÑаÑика. См. Ñакже @ref{surf3}. @sref{Cloud sample}
+ at end deffn
+
+ at cindex beam
+ at anchor{beam}
+ at deffn {Ðоманда MGL} beam tr g1 g2 adat @code{rval} ['sch'='' @code{flag=0 num=3}]
+РиÑÑÐµÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ 3d маÑÑива @var{adat} пÑи поÑÑоÑнном знаÑении @var{adat}=@var{val}. ÐÑо ÑпеÑиалÑнÑй Ñип гÑаÑика Ð´Ð»Ñ @var{adat} заданного в ÑопÑовождаÑÑей ÑиÑÑеме кооÑÐ´Ð¸Ð½Ð°Ñ Ð²Ð´Ð¾Ð»Ñ ÐºÑивой @var{tr} Ñ Ð¾ÑÑами @var{g1}, @var{g2} и Ñ Ð¿Ð¾Ð¿ÐµÑеÑнÑм ÑазмеÑом @var{rval}. ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ @var{flag} -- биÑовÑй Ñлаг: @samp{0x1} - ÑиÑоваÑÑ Ð² ÑопÑовождаÑÑиÑ
(не лабоÑаÑоÑнÑÑ
) кооÑдинаÑаÑ
; @samp{0x2} - ÑиÑоваÑÑ Ð¿ÑоекÑÐ¸Ñ Ð½Ð° плоÑкоÑÑÑ @math{\rho-z}; @samp{0x4} - ÑиÑоваÑÑ Ð½Ð¾ÑмиÑованное в каждом ÑеÑении поле. РазмеÑÑ Ð¼Ð°ÑÑивов по 1-Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ @var{tr}, @var{g1}, @var{g2} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ nx>2. РазмеÑÑ Ð¼Ð°ÑÑивов по 2-Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ @var{tr}, @var{g1}, @var{g2} и ÑÐ°Ð·Ð¼ÐµÑ Ð¿Ð¾ 3-Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ Ð¼Ð°ÑÑива @var{adat} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. См. Ñакже @ref{surf3}.
+ at end deffn
+
+
+ at c ##################################################################
+ at node Dual plotting @MGL{}, Vector fields @MGL{}, 3D plotting @MGL{}, MGL interface
+ at section ÐаÑнÑе гÑаÑики @MGL{}
+
+ÐÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÑÑÑоÑÑ Ð³ÑаÑики Ð´Ð»Ñ Ð´Ð²ÑÑ
ÑвÑзаннÑÑ
маÑÑивов. ÐÑÑÑ Ð½ÐµÑколÑко оÑновнÑÑ
Ñипов 3D гÑаÑиков: повеÑÑ
ноÑÑÑ Ð¸ повеÑÑ
ноÑÑÑ ÑÑÐ¾Ð²Ð½Ñ Ñ Ð¾ÐºÑаÑкой по вÑоÑÐ¾Ð¼Ñ Ð¼Ð°ÑÑÐ¸Ð²Ñ (@ref{surfc}, @ref{surf3c}), повеÑÑ
ноÑÑÑ Ð¸ повеÑÑ
ноÑÑÑ ÑÑÐ¾Ð²Ð½Ñ Ñ Ð¿ÑозÑаÑноÑÑÑÑ Ð¿Ð¾ вÑоÑÐ¾Ð¼Ñ Ð¼Ð°ÑÑÐ¸Ð²Ñ (@ref{surfa}, @ref{surf3a}), плиÑки пеÑеменного ÑазмеÑа (@ref{tiles}), диагÑамма ÑоÑеÑного оÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ (@ref{map}), STFA диагÑамма (@ref{stfa}). РкомандаÑ
@ref{surf3a} и @ref{surf3c} знаÑÐµÐ½Ð¸Ñ ÑÑовней можно задаваÑÑ Ð°Ð²ÑомаÑиÑеÑки и вÑÑÑнÑÑ. ÐаждÑй Ñип гÑаÑика Ð¸Ð¼ÐµÐµÑ Ð¿Ð¾Ñ
ожий инÑеÑÑейÑ. ÐÑÑÑ Ð²ÐµÑÑÐ¸Ñ Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ маÑÑива Ñ Ð°Ð²ÑомаÑиÑеÑкими кооÑдинаÑами и веÑÑÐ¸Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданного маÑÑива.
+
+СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
ÐµÐ¼Ñ (@pxref{Color scheme}). ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐаÑÑÐ¸Ð²Ñ @var{x}, @var{y}, @var{z} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не 3d маÑÑивами как @var{a}). ÐÑли маÑÑÐ¸Ð²Ñ @var{xdat}, @var{ydat}, @var{zdat} не ÑказанÑ, Ñо иÑполÑзÑÑÑÑÑ Ð¼Ð°ÑÑÐ¸Ð²Ñ Ñо знаÑениÑми Ñавно ÑаÑпÑеделеннÑми Ð²Ð´Ð¾Ð»Ñ Ð¾Ñей x, y, z.
+
+ at cindex surfc
+ at anchor{surfc}
+ at deffn {Ðоманда MGL} surfc zdat cdat ['sch'='']
+ at deffnx {Ðоманда MGL} surfc xdat ydat zdat cdat ['sch'='']
+РиÑÑÐµÑ Ð¿Ð°ÑамеÑÑиÑеÑки заданнÑÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} Ñ ÑвеÑом, заданнÑм маÑÑивом @var{cdat}[i,j]. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо на повеÑÑ
ноÑÑи ÑиÑÑеÑÑÑ ÑеÑка. См. Ñакже @ref{surf}, @ref{surfa}, @ref{surf3c}. @sref{SurfC sample}
+ at end deffn
+
+ at cindex surf3c
+ at anchor{surf3c}
+ at deffn {Ðоманда MGL} surf3c adat cdat @code{val} ['sch'='']
+ at deffnx {Ðоманда MGL} surf3c xdat ydat zdat adat cdat @code{val} ['sch'='']
+РиÑÑÐµÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ 3d маÑÑива, заданного паÑамеÑÑиÑеÑки @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]) пÑи @var{a}(x,y,z)=@var{val}. ÐналогиÑно @ref{surf3}, но ÑÐ²ÐµÑ Ð·Ð°Ð´Ð°ÐµÑÑÑ Ð¼Ð°ÑÑивом @var{cdat}. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑÑаÑÐ°Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ. См. Ñакже @ref{surf3}, @ref{surfc}, @ref{surf3a}. @sref{Surf3C sample}
+ at end deffn
+
+ at deffn {Ðоманда MGL} surf3c adat cdat ['sch'='' @code{num=5}]
+ at deffnx {Ðоманда MGL} surf3c xdat ydat zdat adat cdat ['sch'='' @code{num=5}]
+РиÑÑÐµÑ @var{num} повеÑÑ
ноÑÑей ÑÑÐ¾Ð²Ð½Ñ ÑавномеÑно ÑаÑпÑеделеннÑÑ
в инÑеÑвале ÑвеÑовой ÑÐºÐ°Ð»Ñ (Ñм. @ref{caxis}).
+ at end deffn
+
+ at cindex surfa
+ at anchor{surfa}
+ at deffn {Ðоманда MGL} surfa zdat cdat ['sch'='']
+ at deffnx {Ðоманда MGL} surfa xdat ydat zdat cdat ['sch'='']
+РиÑÑÐµÑ Ð¿Ð°ÑамеÑÑиÑеÑки заданнÑÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} Ñ Ð¿ÑозÑаÑноÑÑÑÑ, заданнÑм маÑÑивом @var{cdat}[i,j]. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо на повеÑÑ
ноÑÑи ÑиÑÑеÑÑÑ ÑеÑка. См. Ñакже @ref{surf}, @ref{surfc}, @ref{surf3a}. @sref{SurfA sample}
+ at end deffn
+
+ at cindex surf3a
+ at anchor{surf3a}
+ at deffn {Ðоманда MGL} surf3a adat cdat @code{val} ['sch'='']
+ at deffnx {Ðоманда MGL} surf3a xdat ydat zdat adat cdat @code{val} ['sch'='']
+РиÑÑÐµÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ ÑÑÐ¾Ð²Ð½Ñ Ð´Ð»Ñ 3d маÑÑива, заданного паÑамеÑÑиÑеÑки @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]) пÑи @var{a}(x,y,z)=@var{val}. ÐналогиÑно @ref{surf3}, но пÑозÑаÑноÑÑÑ Ð·Ð°Ð´Ð°ÐµÑÑÑ Ð¼Ð°ÑÑивом @var{cdat}. ÐÑли @var{sch} ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑÑаÑÐ°Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ. См. Ñакже @ref{surf3}, @ref{surfa}, @ref{surf3c}. @sref{Surf3A sample}
+ at end deffn
+
+ at deffn {Ðоманда MGL} surf3a adat cdat ['sch'='' @code{num=5}]
+ at deffnx {Ðоманда MGL} surf3a xdat ydat zdat adat cdat ['sch'='' @code{num=5}]
+РиÑÑÐµÑ @var{num} повеÑÑ
ноÑÑей ÑÑÐ¾Ð²Ð½Ñ ÑавномеÑно ÑаÑпÑеделеннÑÑ
в инÑеÑвале ÑвеÑовой ÑÐºÐ°Ð»Ñ (Ñм. @ref{caxis}).
+ at end deffn
+
+ at cindex tiles
+ at anchor{tiles}
+ at deffn {Ðоманда MGL} tiles zdat rdat ['sch'='']
+ at deffnx {Ðоманда MGL} tiles xdat ydat zdat rdat ['sch'='']
+РиÑÑÐµÑ Ð¿Ð»Ð¸Ñки Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданной повеÑÑ
ноÑÑи @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. ÐналогиÑно @ref{tile}, но ÑÐ°Ð·Ð¼ÐµÑ Ð¿Ð»Ð¸Ñок задаеÑÑÑ Ð¼Ð°ÑÑивов @var{rdat}. ÐÑо ÑÐ¾Ð·Ð´Ð°ÐµÑ ÑÑÑÐµÐºÑ "пÑозÑаÑноÑÑи" пÑи ÑкÑпоÑÑе в ÑÐ°Ð¹Ð»Ñ EPS. См. Ñакже @ref{surfa}, @ref{tile}. @sref{TileS sample}
+ at end deffn
+
+ at cindex map
+ at anchor{map}
+ at deffn {Ðоманда MGL} map udat vdat ['sch'='' @code{pnts=on}]
+ at deffnx {Ðоманда MGL} map xdat ydat udat vdat ['sch'='' @code{pnts=on}]
+ÐизÑализиÑÑÐµÑ ÑоÑеÑное оÑобÑажение Ð´Ð»Ñ Ð¼Ð°ÑÑÐ¸Ñ @{@var{udat}, @var{vdat} @} паÑамеÑÑиÑеÑки завиÑÑÑиÑ
Ð¾Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ @var{xdat}, @var{ydat}. ÐÑÑ
одное положение ÑÑейки Ð·Ð°Ð´Ð°ÐµÑ ÐµÐµ ÑвеÑ. ÐÑÑоÑа пÑопоÑÑионалÑна ÑÐºÐ¾Ð±Ð¸Ð°Ð½Ñ Jacobian(udat,vdat). ÐÑаÑик ÑвлÑеÑÑÑ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¾Ð¼ диагÑÐ°Ð¼Ð¼Ñ ÐÑнолÑда. ÐÑли @code{pnts=off}, Ñо ÑиÑÑÑÑÑÑ Ð³Ñани, инаÑе ÑвеÑнÑе ÑоÑки ÑиÑÑÑÑÑÑ Ð² ÑзлаÑ
маÑÑÐ¸Ñ (полезно Ð´Ð»Ñ "запÑÑанного" оÑобÑажениÑ). @sref{Map sample}
+ at end deffn
+
+ at cindex stfa
+ at anchor{stfa}
+ at deffn {Ðоманда MGL} stfa re im @code{dn} ['sch'='' @code{pnts=on}]
+ at deffnx {Ðоманда MGL} stfa xdat ydat re im @code{dn} ['sch'='' @code{pnts=on}]
+РиÑÑÐµÑ ÑпекÑÑогÑÐ°Ð¼Ð¼Ñ ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑного маÑÑива @var{re}+i*@code{im} Ð´Ð»Ñ Ð¤ÑÑÑе ÑазмеÑом @var{dn} ÑоÑек. ÐаÑамеÑÑ @var{dn} -- лÑбое ÑеÑное ÑиÑло. ÐапÑÐ¸Ð¼ÐµÑ Ð² 1D ÑлÑÑае, ÑезÑлÑÑаÑом бÑÐ´ÐµÑ Ð³ÑаÑик плоÑноÑÑи Ð¾Ñ Ð¼Ð°ÑÑива @math{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@}. ÐаÑÑÐ¸Ð²Ñ @var{re}, @var{im} паÑамеÑÑиÑеÑки завиÑÑÑ Ð¾Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ @var{xdat}, @var{ydat}. @sref{STFA sample}
+ at end deffn
+
+
+
+
+ at c ##################################################################
+ at node Vector fields @MGL{}, Other plotting @MGL{}, Dual plotting @MGL{}, MGL interface
+ at section ÐекÑоÑнÑе Ð¿Ð¾Ð»Ñ @MGL{}
+
+ÐÑи ÑÑнкÑии ÑиÑÑÑÑ Ð³ÑаÑики Ð´Ð»Ñ 2D и 3D векÑоÑнÑÑ
полей. ÐÑÑÑ Ð½ÐµÑколÑко Ñипов гÑаÑиков: пÑоÑÑо векÑоÑное поле (@ref{vect}), векÑоÑа Ð²Ð´Ð¾Ð»Ñ ÑÑаекÑоÑии (@ref{traj}), векÑоÑное поле каплÑми (@ref{dew}), ниÑи Ñока (@ref{flow}), ÑÑÑбки Ñока (@ref{pipe}). ÐаждÑй Ñип гÑаÑика Ð¸Ð¼ÐµÐµÑ Ð¿Ð¾Ñ
ожий инÑеÑÑейÑ. ÐÑÑÑ Ð²ÐµÑÑÐ¸Ñ Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ маÑÑива Ñ Ð°Ð²ÑомаÑиÑеÑкими кооÑдинаÑами и веÑÑÐ¸Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданного маÑÑива.
+
+СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
ÐµÐ¼Ñ (@pxref{Color scheme}). ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ. ÐÑе ÑазмеÑÑ Ð¼Ð°ÑÑивов @var{ax} и @var{ay} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐладÑие ÑазмеÑноÑÑи маÑÑивов @var{x}, @var{y} и @var{ax} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐаÑÑÐ¸Ð²Ñ @var{x} и @var{y} могÑÑ Ð±ÑÑÑ Ð²ÐµÐºÑоÑами (не маÑÑиÑами как @var{ax}). ÐÑаÑик ÑÑÑоиÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ z ÑÑеза @var{ax}, @var{ay} Ð´Ð»Ñ 2D ÑлÑÑаев.
+
+ at cindex traj
+ at anchor{traj}
+ at deffn {Ðоманда MGL} traj xdat ydat udat vdat ['sch'='' @code{zval=nan len=0}]
+ at deffnx {Ðоманда MGL} traj xdat ydat zdat udat vdat wdat ['sch'='' @code{len=0}]
+РиÑÑÐµÑ Ð²ÐµÐºÑоÑа @{@var{udat}, @var{vdat}, @var{wdat}@} Ð²Ð´Ð¾Ð»Ñ ÐºÑивой @{@var{xdat}, @var{ydat}, @var{zdat}@}. Ðлина векÑоÑов пÑопоÑÑионалÑна @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. СÑÑока @var{pen} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ (@pxref{Line styles}). Ðо ÑмолÑÐ°Ð½Ð¸Ñ (@code{pen=''}). ÐаÑамеÑÑ @var{len} Ð·Ð°Ð´Ð°ÐµÑ ÑакÑÐ¾Ñ Ð´Ð»Ð¸Ð½Ñ Ð²ÐµÐºÑоÑов (еÑли не нÑлÑ) или вÑбиÑаÑÑ Ð´Ð»Ð¸Ð½Ñ Ð¿ÑопоÑÑионалÑно ÑаÑÑÑоÑÐ½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñ ÑоÑками кÑивой (еÑли @var{len}=0). См. Ñакже @ref{vect}. @sref{Traj sample}
+ at end deffn
+
+ at cindex vect
+ at anchor{vect}
+ at deffn {Ðоманда MGL} vect udat vdat ['sch'='' @code{zval=nan flag=0}]
+ at deffnx {Ðоманда MGL} vect xdat ydat udat vdat ['sch'='' @code{zval=nan flag=0}]
+РиÑÑÐµÑ Ð²ÐµÐºÑоÑное поле @{@var{udat}, @var{vdat}@} паÑамеÑÑиÑеÑки завиÑÑÑее Ð¾Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ @var{xdat}, @var{ydat} на плоÑкоÑÑи пÑи @var{z}=@var{zval}. Ðлина и ÑÐ²ÐµÑ Ð²ÐµÐºÑоÑов пÑопоÑÑионалÑна @math{\sqrt@{ax^2+ay^2@}}. ЧиÑло ÑиÑÑемÑÑ
векÑоÑов завиÑÐ¸Ñ Ð¾Ñ @ref{meshnum}. ÐаÑамеÑÑ @var{flag} побиÑовÑй Ñлаг Ð´Ð»Ñ Ð½Ð°ÑÑÑойки вид векÑоÑов: @code{1} -- двÑÑвеÑнÑй векÑоÑ, @code{2} -- Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð°Ñ Ð´Ð»Ð¸Ð½Ð° векÑоÑов, @code{4} -- ÑиÑÑÐµÑ ÑÑÑÐµÐ»ÐºÑ Ð² ÑоÑÐºÑ ÑеÑки, @code{8} -- ÑиÑÑÐµÑ ÑÑÑÐµÐ»ÐºÑ Ñ ÑеÑединой в ÑоÑке ÑеÑки, @code{16} -- ÑиÑÑÐµÑ ÑÑÑиÑ
и вмеÑÑо ÑÑÑелок. См. Ñакже @ref{flow}, @ref{dew}, @ref{vectc}. @sref{Vect sample}
+ at end deffn
+
+ at deffn {Ðоманда MGL} vect udat vdat wdat ['sch'='' @code{flag=0}]
+ at deffnx {Ðоманда MGL} vect xdat ydat zdat udat vdat wdat ['sch'='' @code{flag=0}]
+ÐÑо 3D веÑÑÐ¸Ñ Ð³ÑаÑика. ÐдеÑÑ Ð¼Ð°ÑÑÐ¸Ð²Ñ @var{udat}, @var{vdat}, @var{wdat} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ 3d маÑÑивами, а длина и ÑÐ²ÐµÑ Ð¿ÑопоÑÑионалÑÐ½Ñ @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{Vect 3D sample}
+ at end deffn
+
+ at cindex vectc
+ at anchor{vectc}
+ at deffn {Ðоманда MGL} vectc udat vdat ['sch'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} vectc xdat ydat udat vdat ['sch'='' @code{zval=nan}]
+ÐналогиÑно @ref{vect} c @code{flag=2+16=18}. @sref{VectC sample}
+ at end deffn
+
+ at deffn {Ðоманда MGL} vectc udat vdat wdat ['sch'='']
+ at deffnx {Ðоманда MGL} vectc xdat ydat zdat udat vdat wdat ['sch'='']
+ÐÑо 3D веÑÑÐ¸Ñ Ð³ÑаÑика. ÐдеÑÑ Ð¼Ð°ÑÑÐ¸Ð²Ñ @var{udat}, @var{vdat}, @var{wdat} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ 3d маÑÑивами, а длина и ÑÐ²ÐµÑ Ð¿ÑопоÑÑионалÑÐ½Ñ @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{VectC 3D sample}
+ at end deffn
+
+ at cindex vectl
+ at anchor{vectl}
+ at deffn {Ðоманда MGL} vectl udat vdat ['sch'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} vectl xdat ydat udat vdat ['sch'='' @code{zval=nan}]
+ÐналогиÑно @ref{vect} c @code{flag=1+16=17}. @sref{VectL sample}
+ at end deffn
+
+ at deffn {Ðоманда MGL} vectl udat vdat wdat ['sch'='']
+ at deffnx {Ðоманда MGL} vectl xdat ydat zdat udat vdat wdat ['sch'='']
+ÐÑо 3D веÑÑÐ¸Ñ Ð³ÑаÑика. ÐдеÑÑ Ð¼Ð°ÑÑÐ¸Ð²Ñ @var{udat}, @var{vdat}, @var{wdat} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ 3d маÑÑивами, а длина и ÑÐ²ÐµÑ Ð¿ÑопоÑÑионалÑÐ½Ñ @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{VectL 3D sample}
+ at end deffn
+
+ at cindex dew
+ at anchor{dew}
+ at deffn {Ðоманда MGL} dew udat vdat ['sch'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} dew xdat ydat udat vdat ['sch'='' @code{zval=nan}]
+РиÑÑÐµÑ ÐºÐ°Ð¿Ð»Ð¸ Ð´Ð»Ñ Ð²ÐµÐºÑоÑного Ð¿Ð¾Ð»Ñ @{@var{udat}, @var{vdat}@}, паÑамеÑÑиÑеÑки завиÑÑÑего Ð¾Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ @var{xdat}, @var{ydat} пÑи @var{z=zval}. ÐамеÑÑ, ÑÑо гÑаÑик ÑÑебÑÐµÑ Ð¼Ð½Ð¾Ð³Ð¾ памÑÑи и пÑоÑеÑÑоÑного вÑемени Ð´Ð»Ñ Ñвоего ÑозданиÑ! Ð¦Ð²ÐµÑ ÐºÐ°Ð¿ÐµÐ»Ñ Ð¿ÑопоÑÑионален @math{\sqrt@{ax^2+ay^2@}}. ЧиÑло ÐºÐ°Ð¿ÐµÐ»Ñ Ð¾Ð¿ÑеделÑеÑÑÑ @ref{meshnum}. См. Ñакже @ref{vect}. @sref{Dew sample}
+ at end deffn
+
+ at cindex flow
+ at anchor{flow}
+ at deffn {Ðоманда MGL} flow udat vdat ['sch'='' @code{num=5 zval=nan}]
+ at deffnx {Ðоманда MGL} flow xdat ydat udat vdat ['sch'='' @code{num=5 zval=nan}]
+РиÑÑÐµÑ Ð½Ð¸Ñи Ñока Ð´Ð»Ñ Ð²ÐµÐºÑоÑного Ð¿Ð¾Ð»Ñ @{@var{udat}, @var{vdat}@}, паÑамеÑÑиÑеÑки завиÑÑÑего Ð¾Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ @var{xdat}, @var{ydat} на плоÑкоÑÑи пÑи z = @var{zval}. ЧиÑло ниÑей пÑопоÑÑионалÑно @var{num}. ÐÑи @var{num}>0 ниÑей могÑÑ ÑÑаÑÑоваÑÑ Ð¸ изнÑÑÑи ÑеÑки, в пÑоÑивном ÑлÑÑае ÑолÑко Ñ ÐºÑаев. Ð¦Ð²ÐµÑ Ð½Ð¸Ñей пÑопоÑÑионален @math{\sqrt@{udat^2+vdat^2@}}. ТеплÑе ÑвеÑа ÑооÑвеÑÑÑвÑÑÑ Ð½Ð¾ÑмалÑÐ½Ð¾Ð¼Ñ ÑÐ¾ÐºÑ (Ñипа ÑÑока). ХолоднÑе ÑвеÑа ÑооÑвеÑÑÑвÑÑÑ Ð¾Ð±ÑаÑÐ½Ð¾Ð¼Ñ ÑÐ¾ÐºÑ (Ñипа иÑÑоÑника). См. Ñакже @ref{pipe}, @ref{vect}. @sref{Flow sample}
+ at end deffn
+
+ at deffn {Ðоманда MGL} flow udat vdat wdat ['sch'='' @code{num=3}]
+ at deffnx {Ðоманда MGL} flow xdat ydat zdat udat vdat wdat ['sch'='' @code{num=3}]
+ÐÑо 3D веÑÑÐ¸Ñ Ð³ÑаÑика. ÐдеÑÑ Ð¼Ð°ÑÑÐ¸Ð²Ñ @var{udat}, @var{vdat}, @var{wdat} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ 3d маÑÑивами, а ÑÐ²ÐµÑ Ð¿ÑопоÑÑионален @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{Flow 3D sample}
+ at end deffn
+
+ at deffn {Ðоманда MGL} flow @code{x0 y0} udat vdat ['sch'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} flow @code{x0 y0} xdat ydat udat vdat ['sch'='' @code{zval=nan}]
+РиÑÑÐµÑ Ð½Ð¸ÑÑ Ñока из ÑоÑки @{@var{x0}, @var{y0}@} Ð´Ð»Ñ Ð²ÐµÐºÑоÑного Ð¿Ð¾Ð»Ñ @{@var{udat}, @var{vdat}@}, паÑамеÑÑиÑеÑки завиÑÑÑего Ð¾Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ @var{xdat}, @var{ydat} на плоÑкоÑÑи пÑи z = @var{zval}. Ð¦Ð²ÐµÑ Ð½Ð¸Ñи пÑопоÑÑионален @math{\sqrt@{udat^2+vdat^2@}}. ТеплÑе ÑвеÑа ÑооÑвеÑÑÑвÑÑÑ Ð½Ð¾ÑмалÑÐ½Ð¾Ð¼Ñ ÑÐ¾ÐºÑ (Ñипа ÑÑока). ХолоднÑе ÑвеÑа ÑооÑвеÑÑÑвÑÑÑ Ð¾Ð±ÑаÑÐ½Ð¾Ð¼Ñ ÑÐ¾ÐºÑ (Ñипа иÑÑоÑника).
+ at end deffn
+
+ at deffn {Ðоманда MGL} flow @code{x0 y0 z0} udat vdat wdat ['sch'='']
+ at deffnx {Ðоманда MGL} flow @code{x0 y0 z0} xdat ydat zdat udat vdat wdat ['sch'='']
+ÐÑо 3D веÑÑÐ¸Ñ Ð³ÑаÑика. ÐдеÑÑ Ð¼Ð°ÑÑÐ¸Ð²Ñ @var{udat}, @var{vdat}, @var{wdat} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ 3d маÑÑивами, а ÑÐ²ÐµÑ Ð¿ÑопоÑÑионален @math{\sqrt@{udat^2+vdat^2+wdat^2@}}.
+ at end deffn
+
+
+ at cindex pipe
+ at anchor{pipe}
+ at deffn {Ðоманда MGL} pipe udat vdat ['sch'='' @code{r0=0.05 num=5 zval=nan}]
+ at deffnx {Ðоманда MGL} pipe xdat ydat udat vdat ['sch'='' @code{r0=0.05 num=5 zval=nan}]
+РиÑÑÐµÑ ÑÑÑбки Ñока Ð´Ð»Ñ Ð²ÐµÐºÑоÑного Ð¿Ð¾Ð»Ñ @{@var{udat}, @var{vdat}@}, паÑамеÑÑиÑеÑки завиÑÑÑего Ð¾Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ @var{xdat}, @var{ydat} на плоÑкоÑÑи пÑи z = @var{zval}. ЧиÑло ÑÑÑбок пÑопоÑÑионалÑно @var{num}. ÐÑи @var{num}>0 ниÑей могÑÑ ÑÑаÑÑоваÑÑ Ð¸ изнÑÑÑи ÑеÑки, в пÑоÑивном ÑлÑÑае ÑолÑко Ñ ÐºÑаев. Ð¦Ð²ÐµÑ Ð¸ ÑадиÑÑ ÑÑÑбок пÑопоÑÑионален @math{\sqrt@{udat^2+vdat^2@}}. ТеплÑе ÑвеÑа ÑооÑвеÑÑÑвÑÑÑ Ð½Ð¾ÑмалÑÐ½Ð¾Ð¼Ñ ÑÐ¾ÐºÑ (Ñипа ÑÑока). ХолоднÑе ÑвеÑа ÑооÑвеÑÑÑвÑÑÑ Ð¾Ð±ÑаÑÐ½Ð¾Ð¼Ñ ÑÐ¾ÐºÑ (Ñипа иÑÑоÑника). ÐаÑамеÑÑ @var{r0} Ð·Ð°Ð´Ð°ÐµÑ ÑадиÑÑ ÑÑÑбок. ÐÑи @var{r0}<0 ÑадиÑÑ ÑÑÑбок обÑаÑно пÑопоÑÑионален иÑ
амплиÑÑде. См. Ñакже @ref{flow}, @ref{vect}. @sref{Pipe sample}
+ at end deffn
+
+ at deffn {Ðоманда MGL} pipe udat vdat wdat ['sch'='' @code{r0=0.05 num=3}]
+ at deffnx {Ðоманда MGL} pipe xdat ydat zdat udat vdat wdat ['sch'='' @code{r0=0.05 num=3}]
+ÐÑо 3D веÑÑÐ¸Ñ Ð³ÑаÑика. ÐдеÑÑ Ð¼Ð°ÑÑÐ¸Ð²Ñ @var{udat}, @var{vdat}, @var{wdat} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ 3d маÑÑивами, а ÑÐ²ÐµÑ Ð¿ÑопоÑÑионален @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{Pipe 3D sample}
+ at end deffn
+
+
+ at c ##################################################################
+ at node Other plotting @MGL{}, Nonlinear fitting @MGL{}, Vector fields @MGL{}, MGL interface
+ at section ÐÑоÑие гÑаÑики @MGL{}
+
+ÐÑо командÑ, не оÑноÑÑÑиеÑÑ Ðº какой-Ñо ÑпеÑиалÑной каÑегоÑии. СÑда вÑ
одÑÑ ÑÑнкÑии поÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð³ÑаÑиков по ÑекÑÑовÑм ÑоÑмÑлам (@ref{fplot}, @ref{fsurf}), ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑей из ÑÑеÑголÑников (@ref{triplot}), пÑоизволÑнÑÑ
ÑоÑек в пÑоÑÑÑанÑÑве (@ref{dots}) и ÑеконÑÑÑÑкÑии по ним повеÑÑ
ноÑÑи (@ref{crust}), гÑаÑики плоÑноÑÑи и линии ÑÑÐ¾Ð²Ð½Ñ Ð½Ð° плоÑкоÑÑÑÑ
, пеÑпендикÑлÑÑнÑÑ
оÑÑм x, y или z (dens[xyz], cont[xyz], contf[xyz]). ÐаждÑй Ñип гÑаÑика Ð¸Ð¼ÐµÐµÑ Ð¿Ð¾Ñ
ожий инÑеÑÑейÑ. ÐÑÑÑ Ð²ÐµÑÑÐ¸Ñ Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ маÑÑива Ñ Ð°Ð²ÑомаÑиÑеÑкими кооÑдинаÑами и веÑÑÐ¸Ñ Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑиÑеÑки заданного маÑÑива. СÑÑока @var{sch} Ð·Ð°Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
ÐµÐ¼Ñ (@pxref{Color scheme}). ÐÑедÑдÑÑÐ°Ñ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ.
+
+ at cindex densx
+ at cindex densy
+ at cindex densz
+ at anchor{densx} @anchor{densy} @anchor{densz}
+ at deffn {Ðоманда MGL} densx dat ['sch'='' @code{val=nan}]
+ at deffnx {Ðоманда MGL} densy dat ['sch'='' @code{val=nan}]
+ at deffnx {Ðоманда MGL} densz dat ['sch'='' @code{val=nan}]
+РиÑÑÑÑ Ð³ÑаÑик плоÑноÑÑи на x, y или z плоÑкоÑÑÑÑ
. ÐÑли @var{dat} -- 3d маÑÑив, Ñо вÑполнÑеÑÑÑ Ð¸Ð½ÑеÑполÑÑÐ¸Ñ Ðº Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ ÑÑÐµÐ·Ñ @var{val}. ФÑнкÑии Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿ÑоекÑий 3D маÑÑивов на оÑи кооÑдинаÑ. См. Ñакже @code{cont[xyz], contf[xyz]}, @ref{dens}. @sref{Dens projection sample}
+ at end deffn
+
+ at cindex contx
+ at cindex conty
+ at cindex contz
+ at anchor{contz} @anchor{conty} @anchor{contx}
+ at deffn {Ðоманда MGL} contx dat ['sch'='' @code{val=nan num=7}]
+ at deffnx {Ðоманда MGL} conty dat ['sch'='' @code{val=nan num=7}]
+ at deffnx {Ðоманда MGL} contz dat ['sch'='' @code{val=nan num=7}]
+РиÑÑÑÑ Ð»Ð¸Ð½Ð¸Ð¸ ÑÑÐ¾Ð²Ð½Ñ Ð½Ð° x, y или z плоÑкоÑÑÑÑ
. ÐÑли @var{dat} -- 3d маÑÑив, Ñо вÑполнÑеÑÑÑ Ð¸Ð½ÑеÑполÑÑÐ¸Ñ Ðº Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ ÑÑÐµÐ·Ñ @var{val}. ФÑнкÑии Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿ÑоекÑий 3D маÑÑивов на оÑи кооÑдинаÑ. См. Ñакже @code{dens[xyz], contf[xyz]}, @ref{cont}. @sref{Cont projection sample}
+ at end deffn
+
+ at cindex contfx
+ at cindex contfy
+ at cindex contfz
+ at anchor{contfz} @anchor{contfy} @anchor{contfx}
+ at deffn {Ðоманда MGL} contfx dat ['sch'='' @code{val=nan num=7}]
+ at deffnx {Ðоманда MGL} contfy dat ['sch'='' @code{val=nan num=7}]
+ at deffnx {Ðоманда MGL} contfz dat ['sch'='' @code{val=nan num=7}]
+РиÑÑÑÑ Ð·Ð°ÐºÑаÑеннÑе конÑÑÑÑ ÑÑÐ¾Ð²Ð½Ñ Ð½Ð° x, y или z плоÑкоÑÑÑÑ
. ÐÑли @var{dat} -- 3d маÑÑив, Ñо вÑполнÑеÑÑÑ Ð¸Ð½ÑеÑполÑÑÐ¸Ñ Ðº Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ ÑÑÐµÐ·Ñ @var{val}. ФÑнкÑии Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿ÑоекÑий 3D маÑÑивов на оÑи кооÑдинаÑ. См. Ñакже @code{dens[xyz], cont[xyz]}, @ref{contf}.
+ at end deffn
+
+ at cindex dots
+ at anchor{dots}
+ at deffn {Ðоманда MGL} dots xdat ydat zdat ['sch'='']
+ at deffnx {Ðоманда MGL} dots xdat ydat zdat adat ['sch'='']
+РиÑÑÐµÑ Ð¿ÑоизволÑно ÑаÑположеннÑе ÑоÑки @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. ÐÑли опÑеделен маÑÑив @var{adat}[i], Ñо он Ð·Ð°Ð´Ð°ÐµÑ Ð¿ÑозÑаÑноÑÑÑ ÑоÑек. См. Ñакже @ref{crust}, @ref{mark}, @ref{plot}. @sref{Dots sample}
+ at end deffn
+
+ at cindex crust
+ at anchor{crust}
+ at deffn {Ðоманда MGL} crust xdat ydat zdat ['sch'='']
+РеконÑÑÑÑиÑÑÐµÑ Ð¸ ÑиÑÑÐµÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ Ð¿Ð¾ пÑоизволÑно ÑаÑположеннÑм ÑоÑкам @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑÑаÑÐ°Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ. См. Ñакже @ref{dots}, @ref{triplot}. @sref{Crust sample}
+ at end deffn
+
+ at cindex triplot
+ at anchor{triplot}
+ at deffn {Ðоманда MGL} triplot idat xdat ydat ['sch'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} triplot idat xdat ydat zdat ['sch'='']
+ at deffnx {Ðоманда MGL} triplot idat xdat ydat zdat cdat ['sch'='']
+РиÑÑÐµÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ Ð¸Ð· ÑÑеÑголÑников. ÐеÑÑÐ¸Ð½Ñ ÑÑеÑголÑников задаÑÑÑÑ Ð¸Ð½Ð´ÐµÐºÑами @var{idat} в маÑÑиве ÑоÑек @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑÑаÑÐ°Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ Ð¼Ð°ÑÑива @var{idat} должен бÑÑÑ 3 или болÑÑе. ÐаÑÑÐ¸Ð²Ñ @var{xdat}, @var{ydat}, @var{zdat} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸Ð¼ÐµÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñе ÑазмеÑÑ. ÐаÑÑив @var{cdat} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ ÑÑеÑголÑников (еÑли @var{idat}.ny=@var{cdat}.nx) или ÑÐ²ÐµÑ Ð²ÐµÑÑин (еÑли @var{xdat}.nx=@var{cdat}.nx). См. Ñакже @ref{dots}, @ref{crust}, @ref{quadplot}, @ref{tricont}.
+ at end deffn
+
+ at cindex tricont
+ at anchor{tricont}
+ at deffn {Ðоманда MGL} tricont vdat idat xdat ydat zdat cdat ['sch'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} tricont vdat idat xdat ydat zdat ['sch'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} tricont idat xdat ydat zdat ['sch'='' @code{num=7 zval=nan}]
+РиÑÑÐµÑ Ð»Ð¸Ð½Ð¸Ð¸ ÑÑÐ¾Ð²Ð½Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑи из ÑÑеÑголÑников пÑи @var{z} = @var{zval} (или Ð´Ð»Ñ z=@var{vdat}[k] еÑли @code{zval==NAN}). ÐеÑÑÐ¸Ð½Ñ ÑÑеÑголÑников задаÑÑÑÑ Ð¸Ð½Ð´ÐµÐºÑами @var{idat} в маÑÑиве ÑоÑек @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ Ð¼Ð°ÑÑива @var{idat} должен бÑÑÑ 3 или болÑÑе. ÐаÑÑÐ¸Ð²Ñ @var{xdat}, @var{ydat}, @var{zdat} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸Ð¼ÐµÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñе ÑазмеÑÑ. ÐаÑÑив @var{cdat} (еÑли Ñказан) Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ ÑÑеÑголÑников (еÑли @var{idat}.ny=@var{cdat}.nx) или ÑÐ²ÐµÑ Ð²ÐµÑÑин (еÑли @var{xdat}.nx=@var{cdat}.nx). См. Ñакже @ref{triplot}, @ref{cont}.
+ at end deffn
+
+ at cindex quadplot
+ at anchor{quadplot}
+ at deffn {Ðоманда MGL} quadplot idat xdat ydat ['sch'='' @code{zval=nan}]
+ at deffnx {Ðоманда MGL} quadplot idat xdat ydat zdat ['sch'='']
+ at deffnx {Ðоманда MGL} quadplot idat xdat ydat zdat cdat ['sch'='']
+РиÑÑÐµÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ Ð¸Ð· ÑеÑÑÑеÑ
ÑголÑников. ÐеÑÑÐ¸Ð½Ñ ÑÑеÑголÑников задаÑÑÑÑ Ð¸Ð½Ð´ÐµÐºÑами @var{idat} в маÑÑиве ÑоÑек @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. ÐÑли ÑÑÑока ÑодеÑÐ¶Ð¸Ñ @samp{#}, Ñо ÑиÑÑеÑÑÑ ÑеÑÑаÑÐ°Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ. Ð Ð°Ð·Ð¼ÐµÑ Ð¿Ð¾ 1-Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ Ð¼Ð°ÑÑива @var{idat} должен бÑÑÑ 4 или болÑÑе. ÐаÑÑÐ¸Ð²Ñ @var{xdat}, @var{ydat}, @var{zdat} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸Ð¼ÐµÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñе ÑазмеÑÑ. ÐаÑÑив @var{cdat} Ð·Ð°Ð´Ð°ÐµÑ ÑÐ²ÐµÑ ÑеÑÑÑеÑ
ÑголÑников (еÑли @var{idat}.ny=@var{cdat}.nx) или ÑÐ²ÐµÑ Ð²ÐµÑÑин (еÑли @var{xdat}.nx=@var{cdat}.nx). См. Ñакже @ref{triplot}.
+ at end deffn
+
+ at cindex fplot
+ at anchor{fplot}
+ at deffn {Ðоманда MGL} fplot 'y(x)' ['pen'='' @code{zval=nan num=100}]
+РиÑÑÐµÑ ÑÑнкÑÐ¸Ñ @samp{y(x)} в плоÑкоÑÑи z=@var{zval} Ñ ÐºÐ¾Ð¾ÑдинаÑой @samp{x} в диапазоне x-оÑи кооÑдинаÑ. ÐаÑамеÑÑ @var{num} Ð·Ð°Ð´Ð°ÐµÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»Ñное ÑиÑло ÑоÑек по кооÑдинаÑе Ð´Ð»Ñ Ð³ÑаÑика. См. Ñакже @ref{plot}.
+ at end deffn
+
+ at deffn {Ðоманда MGL} fplot 'x(t)' 'y(t)' 'z(t)' ['pen'='' @code{num=100}]
+РиÑÑÐµÑ Ð¿Ð°ÑамеÑÑиÑеÑкÑÑ ÐºÑивÑÑ @{@samp{x(t)}, @samp{y(t)}, @samp{z(t)}@}, где кооÑдинаÑа @samp{t} менÑеÑÑÑ Ð² диапазоне [0, 1]. ÐаÑамеÑÑ @var{num} Ð·Ð°Ð´Ð°ÐµÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»Ñное ÑиÑло ÑоÑек по кооÑдинаÑе Ð´Ð»Ñ Ð³ÑаÑика. См. Ñакже @ref{plot}.
+ at end deffn
+
+ at cindex fsurf
+ at anchor{fsurf}
+ at deffn {Ðоманда MGL} fsurf 'z(x,y)' ['sch'='' @code{num=100}]
+РиÑÑÐµÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ @samp{z(x,y)} Ñ ÐºÐ¾Ð¾ÑдинаÑами @samp{x}, @samp{y} в диапазоне x-,y-оÑей кооÑдинаÑ. ÐаÑамеÑÑ @var{num} Ð·Ð°Ð´Ð°ÐµÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»Ñное ÑиÑло ÑоÑек по кооÑдинаÑам Ð´Ð»Ñ Ð³ÑаÑика. См. Ñакже @ref{surf}.
+ at end deffn
+
+ at deffn {Ðоманда MGL} fsurf 'x(u,v)' 'y(u,v)' 'z(u,v)' ['sch'='' @code{num=100}]
+РиÑÑÐµÑ Ð¿Ð°ÑамеÑÑиÑеÑкÑÑ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑÑ @{@samp{x(u,v)}, @samp{y(u,v)}, @samp{z(u,v)}@}, где кооÑдинаÑÑ @samp{u}, @samp{v} менÑÑÑÑÑ Ð² диапазоне [0, 1]. ÐаÑамеÑÑ @var{num} Ð·Ð°Ð´Ð°ÐµÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»Ñное ÑиÑло ÑоÑек по кооÑдинаÑам Ð´Ð»Ñ Ð³ÑаÑика. См. Ñакже @ref{surf}.
+ at end deffn
+
+
+ at c ##################################################################
+ at node Nonlinear fitting @MGL{}, Data create @MGL{}, Other plotting @MGL{}, MGL interface
+ at section Nonlinear fitting @MGL{}
+
+ÐÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¿Ð¾Ð´Ð±Ð¸ÑаÑÑ Ð¿Ð°ÑамеÑÑÑ ÑÑнкÑий Ð´Ð»Ñ Ð½Ð°Ð¸Ð»ÑÑÑей аппÑокÑимаÑии даннÑÑ
, Ñ.е. минимизиÑÑÑÑ ÑÑÐ¼Ð¼Ñ @math{\sum_i (f(x_i, y_i, z_i) - a_i)^2/s_i^2}. ÐÑи ÑÑом аппÑокÑимиÑÑÑÑÐ°Ñ ÑÑнкÑÐ¸Ñ @samp{f} Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð²Ð¸ÑеÑÑ Ð¾Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ аÑгÑменÑа @samp{x} (1D ÑлÑÑай), Ð¾Ñ Ð´Ð²ÑÑ
аÑгÑменÑов @samp{x,y} (2D ÑлÑÑай) или Ð¾Ñ ÑÑеÑ
аÑгÑменÑов @samp{x,y,z} (3D ÑлÑÑай). ФÑнкÑÐ¸Ñ @samp{f} Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð²Ð¸ÑеÑÑ Ð¾Ñ Ð¿Ð°ÑамеÑÑов. СпиÑок паÑамеÑÑов задаеÑÑÑ ÑÑÑокой @var{var} (напÑимеÑ, @samp{abcd}). ÐбÑÑно полÑзоваÑÐµÐ»Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ пÑедоÑÑавиÑÑ Ð½Ð°ÑалÑнÑе знаÑÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов в пеÑеменной @var{ini}. Ðднако, пÑи его оÑÑÑÑÑÑвии иÑполÑзÑÑÑÑÑ Ð½ÑлевÑе знаÑениÑ.
+
+ÐÐ¾Ð¼Ð°Ð½Ð´Ñ @ref{fit} и @ref{fits} не ÑиÑÑÑÑ Ð¿Ð¾Ð»ÑÑеннÑе маÑÑивÑ. Ðни заполнÑÑÑ Ð¼Ð°ÑÑив @var{fit} по ÑоÑмÑле @samp{f} Ñ Ð½Ð°Ð¹Ð´ÐµÐ½Ð½Ñми коÑÑÑиÑиенÑами. ÐÑи ÑÑом, кооÑдинаÑÑ @samp{x,y,z} Ñавно ÑаÑпÑÐµÐ´ÐµÐ»ÐµÐ½Ñ Ð² Ð²Ð´Ð¾Ð»Ñ Ð¾Ñей кооÑдинаÑ. ЧиÑло ÑоÑек в @var{fit} вÑбиÑаеÑÑÑ Ð¼Ð°ÐºÑималÑнÑм из ÑазмеÑа маÑÑива @var{fit} и 100. ФоÑмÑÐ»Ñ Ñ Ð½Ð°Ð¹Ð´ÐµÐ½Ð½Ñми коÑÑÑиÑиенÑами можно вÑвеÑÑи Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ @ref{putsfit}. @sref{Fitting sample}
+
+РазмеÑноÑÑÑ Ð¼Ð°ÑÑивов Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð½Ðµ менÑÑе, Ñем ÑиÑло ÑказаннÑÑ
маÑÑивов @var{xdat}, @var{ydat}, @var{zdat}. Также Ð¿Ð¾Ð´Ð±Ð¾Ñ ÐºÐ¾ÑÑÑиÑиенÑов бÑÐ´ÐµÑ Ð¾ÑÑÑеÑÑвлÑÑÑÑÑ ÑолÑко Ð²Ð´Ð¾Ð»Ñ ÑказаннÑÑ
напÑавлений (напÑимеÑ, Ð²Ð´Ð¾Ð»Ñ x и y еÑли ÑÐºÐ°Ð·Ð°Ð½Ñ ÑолÑко @var{xdat} и @var{ydat}). ÐÑли маÑÑив @var{xdat} не Ñказан, Ñо иÑполÑзÑеÑÑÑ Ð¼Ð°ÑÑив Ñо знаÑениÑми Ñавно ÑаÑпÑеделеннÑми Ð²Ð´Ð¾Ð»Ñ Ð¾Ñи x.
+
+ at cindex fits
+ at anchor{fits}
+ at deffn {Ðоманда MGL} fits adat sdat 'func' 'var' [ini=0]
+ at deffnx {Ðоманда MGL} fits xdat adat sdat 'func' 'var' [ini=0]
+ at deffnx {Ðоманда MGL} fits xdat ydat adat sdat 'func' 'var' [ini=0]
+ at deffnx {Ðоманда MGL} fits xdat ydat zdat adat sdat 'func' 'var' [ini=0]
+"ÐодгонÑÑÑ" ÑоÑмÑÐ»Ñ Ð²Ð´Ð¾Ð»Ñ x-, y- и z-напÑавлений Ð´Ð»Ñ Ð¼Ð°ÑÑива заданного паÑамеÑÑиÑеÑки @var{a}[i,j,k](@var{x}[i,j,k], @var{y}[i,j,k], @var{z}[i,j,k]) Ñ Ð²ÐµÑовÑми коÑÑÑиÑиенÑами @var{sdat}[i,j,k].
+ at end deffn
+
+ at cindex fit
+ at anchor{fit}
+ at deffn {Ðоманда MGL} fit adat 'func' 'var' [ini=0]
+ at deffnx {Ðоманда MGL} fit xdat adat 'func' 'var' [ini=0]
+ at deffnx {Ðоманда MGL} fit xdat ydat adat 'func' 'var' [ini=0]
+ at deffnx {Ðоманда MGL} fit xdat ydat zdat adat 'func' 'var' [ini=0]
+"ÐодгонÑÑÑ" ÑоÑмÑÐ»Ñ Ð²Ð´Ð¾Ð»Ñ x-, y- и z-напÑавлений Ð´Ð»Ñ Ð¼Ð°ÑÑива заданного паÑамеÑÑиÑеÑки @var{a}[i,j,k](@var{x}[i,j,k], @var{y}[i,j,k], @var{z}[i,j,k]) Ñ Ð²ÐµÑовÑми коÑÑÑиÑиенÑами ÑавнÑми 1.
+ at end deffn
+
+ at cindex putsfit
+ at anchor{putsfit}
+ at deffn {Ðоманда MGL} putsfit @code{x y} ['pre'='' 'fnt'='' @code{size=-1}]
+ÐеÑаÑÐ°ÐµÑ Ð¿Ð¾ÑледнÑÑ Ð¿Ð¾Ð´Ð¾Ð±ÑаннÑÑ ÑоÑмÑÐ»Ñ Ñ Ð½Ð°Ð¹Ð´ÐµÐ½Ð½Ñми коÑÑÑиÑиенÑами в ÑоÑке @{@var{x}, @var{y}@}. СÑÑока @var{pre} бÑÐ´ÐµÑ Ð½Ð°Ð¿ÐµÑаÑана пеÑед ÑоÑмÑлой. ÐÑе дÑÑгие паÑамеÑÑÑ Ñакие же как в @ref{Text printing @MGL{}}.
+ at end deffn
+
+
+ at c ##################################################################
+ at node Data create @MGL{}, Data filling @MGL{}, Nonlinear fitting @MGL{}, MGL interface
+ at section Создание даннÑÑ
@MGL{}
+
+ at cindex new
+ at anchor{new}
+ at deffn {Ðоманда MGL} new dat [@code{nx=1 ny=1 nz=1}]
+СоздаеÑ/пеÑеÑÐ¾Ð·Ð´Ð°ÐµÑ Ð¼Ð°ÑÑив Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ @var{dat} даннÑÑ
Ñказанного ÑазмеÑа и заполнÑÐµÑ ÐµÐ³Ð¾ нÑлÑми. ÐиÑего не Ð´ÐµÐ»Ð°ÐµÑ Ð¿Ñи @var{nx}, @var{ny}, @var{nz} оÑÑиÑаÑелÑнÑÑ
или ÑавнÑÑ
нÑлÑ.
+ at end deffn
+
+ at cindex var
+ at anchor{var}
+ at deffn {Ðоманда MGL} var dat @code{num v1 [v2=nan]}
+Ð¡Ð¾Ð·Ð´Ð°ÐµÑ Ð¾Ð´Ð½Ð¾Ð¼ÐµÑнÑй маÑÑив Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ @var{dat} ÑазмеÑом @code{num} и заполнÑÐµÑ ÐµÐ³Ð¾ ÑавномеÑно в диапазоне [@var{v1}, @var{v2}]. ÐÑли @var{v2}=@code{nan}, Ñо иÑполÑзÑеÑÑÑ @var{v2=v1}.
+ at end deffn
+
+ at cindex list
+ at anchor{list}
+ at deffn {Ðоманда MGL} list dat @code{v1 ...}
+Ð¡Ð¾Ð·Ð´Ð°ÐµÑ Ð¼Ð°ÑÑив Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ @var{dat} и заполнÑÐµÑ ÐµÐ³Ð¾ ÑиÑловÑми знаÑениÑми аÑгÑменÑов @code{v1 ...}. Ðоманда Ð¼Ð¾Ð¶ÐµÑ ÑоздаваÑÑ 1d- и 2d-маÑÑивÑ. ÐÐ»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ 2d-маÑÑивов ÑÑебÑеÑÑÑ ÑказаÑÑ ÑазделиÑÐµÐ»Ñ ÑÑÑок даннÑÑ
@samp{|}. Ð Ð°Ð·Ð¼ÐµÑ Ð¼Ð°ÑÑива бÑÐ´ÐµÑ [макÑималÑное ÑиÑло ÑиÑел в ÑÑÑоке * ÑиÑло ÑÑÑок]. ÐапÑимеÑ, команда @code{list 1 | 2 3} ÑоздаÑÑ Ð¼Ð°ÑÑив [1 0; 2 3]. ÐÑмеÑÑ, ÑÑо макÑималÑное ÑиÑло аÑгÑменÑов 1000.
+ at end deffn
+
+ at deffn {Ðоманда MGL} list dat d1 ...
+Ð¡Ð¾Ð·Ð´Ð°ÐµÑ Ð¼Ð°ÑÑив Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ @var{dat} и заполнÑÐµÑ ÐµÐ³Ð¾ ÑиÑлами из маÑÑивов @code{d1 ...}. Ðоманда Ð¼Ð¾Ð¶ÐµÑ ÑоздаваÑÑ 2d- и 3d-маÑÑÐ¸Ð²Ñ (еÑли аÑгÑменÑÑ 2d маÑÑивÑ). ÐладÑие ÑазмеÑноÑÑи вÑеÑ
маÑÑивов в аÑгÑменÑаÑ
Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑÐ°Ð²Ð½Ñ ÑазмеÑноÑÑи @var{d1}. ÐÑмеÑÑ, ÑÑо макÑималÑное ÑиÑло аÑгÑменÑов 1000.
+ at end deffn
+
+ at cindex copy
+ at anchor{copy}
+ at deffn {Ðоманда MGL} copy dat dat2 ['eq'='' @code{on_axis=on}]
+ at deffnx {Ðоманда MGL} copy dat @code{val}
+Ð¡Ð¾Ð·Ð´Ð°ÐµÑ Ð¼Ð°ÑÑив Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ @var{dat} и копиÑÑÐµÑ Ð² него даннÑе из маÑÑива @var{dat2}. ÐÑи ÑÑом, еÑли Ñказан паÑамеÑÑ @var{eq}, Ñо даннÑе бÑдÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ñ Ð¿Ð¾ ÑоÑмÑле аналогиÑно команде @ref{fill} (Ð´Ð»Ñ @code{on_axis=on}) или @ref{modify} (Ð´Ð»Ñ @code{on_axis=off}).
+ at end deffn
+
+ at cindex idset
+ at anchor{idset}
+ at deffn {Ðоманда MGL} idset dat 'ids'
+УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÑимволÑнÑе обознаÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ¾Ð»Ð¾Ð½Ð¾Ðº даннÑÑ
. СÑÑока должна ÑодеÑжаÑÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ 'a'...'z' один на ÐºÐ¾Ð»Ð¾Ð½ÐºÑ (без пÑобелов).
+ at end deffn
+
+ at cindex info
+ at anchor{info}
+ at deffn {Ðоманда MGL} info dat [@code{detail=off}]
+ÐÑÐ²Ð¾Ð´Ð¸Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ маÑÑиве (ÑазмеÑ, макÑималÑное/минималÑное знаÑение, моменÑÑ Ð¸ пÑ.). ÐÑи @code{detail=off} показÑваеÑÑÑ ÑолÑко кÑаÑÐºÐ°Ñ Ð¸Ð½ÑоÑмаÑиÑ.
+ at end deffn
+
+ at deffn {Ðоманда MGL} info 'text'
+ÐÑÐ²Ð¾Ð´Ð¸Ñ ÑекÑÑ @var{text} как инÑоÑмаÑÐ¸Ñ (пÑедÑпÑеждение).
+ at end deffn
+
+ at c ------------------------------------------------------------------
+ at node Data filling @MGL{}, Rearrange data @MGL{}, Data create @MGL{}, MGL interface
+ at section Ðаполнение даннÑÑ
@MGL{}
+ at cindex fill
+ at cindex modify
+
+ at cindex fill
+ at anchor{fill}
+ at deffn {Ðоманда MGL} fill dat v1 v2 ['dir'='x']
+ÐаполнÑÐµÑ Ð·Ð½Ð°ÑениÑми Ñавно ÑаÑпÑеделеннÑми в диапазоне [@var{v1}, @var{v2}] в напÑавлении @var{dir}=@{@samp{x}, at samp{y}, at samp{z}@}.
+ at end deffn
+
+ at deffn {Ðоманда MGL} fill dat 'eq' [vdat=0 wdat=0]
+ÐаполнÑÐµÑ Ð·Ð½Ð°ÑениÑми вÑÑиÑленнÑми по ÑоÑмÑле @var{eq}. ФоÑмÑла пÑедÑÑавлÑÐµÑ Ñобой пÑоизволÑное вÑÑажение, завиÑÑÑее Ð¾Ñ Ð¿ÐµÑеменнÑÑ
@samp{x}, @samp{y}, @samp{z}, @samp{u}, @samp{v}, @samp{w}. ÐооÑдинаÑÑ @samp{x}, @samp{y}, @samp{z} полагаÑÑÑÑ Ð¼ÐµÐ½ÑÑÑимиÑÑ Ð² диапазоне оÑей кооÑÐ´Ð¸Ð½Ð°Ñ (в оÑлиÑие Ð¾Ñ @ref{modify}). ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ @samp{u} -- знаÑÐµÐ½Ð¸Ñ Ð¸ÑÑ
одного маÑÑива, пеÑеменнÑе @samp{v}, @samp{w} -- знаÑÐµÐ½Ð¸Ñ Ð¼Ð°ÑÑивов @var{vdat}, @var{wdat}. ÐоÑледние могÑÑ Ð±ÑÑÑ Ð¾Ð¿ÑÑенÑ.
+ at end deffn
+
+ at cindex modify
+ at anchor{modify}
+ at deffn {Ðоманда MGL} modify dat 'eq' [@code{dim=0}]
+ at deffnx {Ðоманда MGL} modify dat 'eq' vdat [wdat=0]
+ÐаполнÑÐµÑ Ð·Ð½Ð°ÑениÑми вÑÑиÑленнÑми по ÑоÑмÑле @var{eq}. ФоÑмÑла пÑедÑÑавлÑÐµÑ Ñобой пÑоизволÑное вÑÑажение, завиÑÑÑее Ð¾Ñ Ð¿ÐµÑеменнÑÑ
@samp{x}, @samp{y}, @samp{z}, @samp{u}, @samp{v}, @samp{w}. ÐооÑдинаÑÑ @samp{x}, @samp{y}, @samp{z} полагаÑÑÑÑ Ð¼ÐµÐ½ÑÑÑимиÑÑ Ð² диапазоне [0,1] (в оÑлиÑие Ð¾Ñ @ref{fill}). ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ @samp{u} -- знаÑÐµÐ½Ð¸Ñ Ð¸ÑÑ
одного маÑÑива, пеÑеменнÑе @samp{v}, @samp{w} -- знаÑÐµÐ½Ð¸Ñ Ð¼Ð°ÑÑивов @var{vdat}, @var{wdat}. ÐоÑледние могÑÑ Ð±ÑÑÑ Ð¾Ð¿ÑÑенÑ. ÐÑли Ñказан @var{dim}>0, Ñо изменÑÑÑÑÑ ÑолÑко Ñлои >=@var{dim}.
+ at end deffn
+
+
+ at cindex put
+ at anchor{put}
+ at deffn {MGL command} put dat @code{val [i=: j=: k=:]}
+ÐÑиÑÐ²Ð°Ð¸Ð²Ð°ÐµÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ (под-)маÑÑива @var{dat}[@var{i}, @var{j}, @var{k}] = @var{val}. ÐндекÑÑ @var{i}, @var{j}, @var{k} ÑавнÑе @samp{:} задаÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ð¸Ñ @var{val} Ð´Ð»Ñ Ð²Ñего диапазона ÑооÑвеÑÑÑвÑÑÑего напÑавлениÑ(ий). ÐапÑимеÑ, @code{put dat val : 0 :} Ð·Ð°Ð´Ð°ÐµÑ @var{dat}[i,0,j]=@var{val} Ð´Ð»Ñ i=0...(@var{dat}.nx-1), j=0...(@var{dat}.nz-1).
+ at end deffn
+
+ at deffn {MGL command} put dat vdat [@code{i=: j=: k=:}]
+ÐопиÑÑÐµÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¸Ð· маÑÑива @var{vdat} в диапазон знаÑений маÑÑива @var{dat}. ÐндекÑÑ @var{i}, @var{j}, @var{k} ÑавнÑе @samp{:} задаÑÑ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñений в ÑооÑвеÑÑÑвÑÑÑиÑ
напÑавление(ÑÑ
). ÐладÑие ÑазмеÑноÑÑи маÑÑива @var{vdat} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð±Ð¾Ð»ÑÑе вÑбÑанного диапазона маÑÑива @var{dat}. ÐапÑимеÑ, @code{put dat v : 0 :} пÑиÑÐ²Ð¾Ð¸Ñ @var{dat}[i,0,j]=@var{vdat}.ny>@var{dat}.nz ? @var{vdat}[i,j] : @var{vdat}[i], где i=0...(@var{dat}.nx-1), j=0...(@var{dat}.nz-1) и ÑÑловие vdat.nx>=dat.nx вÑполнено.
+ at end deffn
+
+
+
+ at c ------------------------------------------------------------------
+ at node Rearrange data @MGL{}, File I/O @MGL{}, Data filling @MGL{}, MGL interface
+ at section Ðзменение ÑазмеÑов даннÑÑ
@MGL{}
+
+ at cindex rearrange
+ at anchor{rearrange}
+ at deffn {Ðоманда MGL} rearrange dat @code{mx [my=0 mz=0]}
+ÐзменÑÐµÑ ÑазмеÑноÑÑÑ Ð´Ð°Ð½Ð½ÑÑ
без Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñамого маÑÑива даннÑÑ
, Ñак ÑÑо ÑезÑлÑÑиÑÑÑÑий маÑÑив @var{mx}*@var{my}*@var{mz} < nx*ny*nz. ÐÑли один из паÑамеÑÑов @var{my} или @var{mz} нолÑ, Ñо он бÑÐ´ÐµÑ Ð²ÑбÑан опÑималÑнÑм обÑазом. ÐапÑимеÑ, еÑли @var{my}=0, Ñо бÑÐ´ÐµÑ @var{my}=nx*ny*nz/@var{mx} и @var{mz}=1.
+ at end deffn
+
+ at cindex extend
+ at anchor{extend}
+ at deffn {Ðоманда MGL} extend dat @code{n1 [n2=0]}
+УвелиÑÐ¸Ð²Ð°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ Ð´Ð°Ð½Ð½ÑÑ
пÑÑем вÑÑавки (|@var{n1}|+1) новÑÑ
ÑÑезов поÑле (Ð´Ð»Ñ @var{n1}>0) или пеÑед (Ð´Ð»Ñ @var{n1}<0) ÑÑÑеÑÑвÑÑÑими даннÑми. Ðожно добавиÑÑ ÑÑÐ°Ð·Ñ 2 ÑазмеÑноÑÑи Ð´Ð»Ñ 1d маÑÑива, иÑполÑзÑÑ Ð²ÑоÑой паÑамеÑÑ @var{n2}. ÐаннÑе в новÑе ÑÑÐµÐ·Ñ Ð±ÑдÑÑ ÑкопиÑÐ¾Ð²Ð°Ð½Ñ Ð¸Ð· ÑÑÑеÑÑвÑÑÑиÑ
. ÐапÑимеÑ, Ð´Ð»Ñ @var{n1}>0 новÑй маÑÑив бÑдеÑ
+ at iftex
+ at math{a_{ij}^{new} = a_i^{old}} where j=0... at var{n1}. СооÑвеÑÑÑвенно, Ð´Ð»Ñ @var{n1}<0 новÑй маÑÑив бÑÐ´ÐµÑ @math{a_{ij}^{new} = a_j^{old}}, где i=0...|@var{n1}|.
+ at end iftex
+ at ifnottex
+a_ij^new = a_i^old where j=0... at var{n1}. СооÑвеÑÑÑвенно, Ð´Ð»Ñ @var{n1}<0 новÑй маÑÑив бÑÐ´ÐµÑ a_ij^new = a_j^old, где i=0...|@var{n1}|.
+ at end ifnottex
+ at end deffn
+
+ at cindex transpose
+ at anchor{transpose}
+ at deffn {Ðоманда MGL} transpose dat ['dim'='yxz']
+ТÑанÑпониÑÑÐµÑ (менÑÐµÑ Ð¿Ð¾ÑÑдок ÑазмеÑноÑÑей) маÑÑив даннÑÑ
. ÐовÑй поÑÑдок ÑазмеÑноÑÑей задаеÑÑÑ ÑÑÑокой @var{dim}.
+ at end deffn
+
+ at cindex squeeze
+ at anchor{squeeze}
+ at deffn {Ðоманда MGL} squeeze dat @code{rx [ry=1 rz=1 sm=off]}
+УменÑÑÐ°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ Ð´Ð°Ð½Ð½ÑÑ
пÑÑем ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑлеменÑов Ñ Ð¸Ð½Ð´ÐµÐºÑами не кÑаÑнÑми @var{rx}, @var{ry}, @var{rz} ÑооÑвеÑÑÑвенно. ÐаÑамеÑÑ @var{smooth} Ð·Ð°Ð´Ð°ÐµÑ Ð¸ÑполÑзоваÑÑ ÑглаживаниÑ
+ at iftex
+(Ñ.е. @math{a_{out}[i]=\sum_{j=i,i+r}a[j]/r}) или Ð½ÐµÑ (Ñ.е. @math{a_{out}[i]=a[j*r]}).
+ at end iftex
+ at ifnottex
+(Ñ.е. out[i]=\sum_@{j=i,i+r@} a[j]/r) или Ð½ÐµÑ (Ñ.е. out[i]=a[j*r]).
+ at end ifnottex
+ at end deffn
+
+ at cindex crop
+ at anchor{crop}
+ at deffn {Ðоманда MGL} crop dat @code{n1 n2} 'dir'
+ÐбÑÐµÐ·Ð°ÐµÑ Ð³ÑаниÑÑ Ð´Ð°Ð½Ð½ÑÑ
пÑи @var{i}<@var{n1} и @var{i}>@var{n2} (пÑи @var{n2}>0) или @var{i}>@code{n[xyz]}- at var{n2} (пÑи @var{n2}<=0) Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ @var{dir}.
+ at end deffn
+
+ at cindex delete
+ at anchor{delete}
+ at deffn {Ðоманда MGL} delete dat
+УдалÑÐµÑ Ð¼Ð°ÑÑив @var{dat} и оÑÐ²Ð¾Ð±Ð¾Ð¶Ð´Ð°ÐµÑ Ð¸ÑполÑзованнÑÑ Ð¿Ð°Ð¼ÑÑÑ. ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ Ð´Ð»Ñ Ð±Ð¾Ð»ÑÑиÑ
неиÑполÑзÑемÑÑ
маÑÑивов.
+ at end deffn
+
+ at deffn {Ðоманда MGL} delete dat 'dir' @code{[pos=off num=0]}
+УдалÑÐµÑ @var{num} ÑÑезов Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ @var{dir} Ñ Ð¿Ð¾Ð·Ð¸Ñии @var{pos}.
+ at end deffn
+
+ at cindex insert
+ at anchor{insert}
+ at deffn {Ðоманда MGL} insert dat 'dir' @code{[pos=off num=0]}
+ÐÑÑавлÑÐµÑ @var{num} ÑÑезов Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ @var{dir} Ñ Ð¿Ð¾Ð·Ð¸Ñии @var{pos} и заполнÑÐµÑ Ð¸Ñ
нÑлÑми.
+ at end deffn
+
+ at c ------------------------------------------------------------------
+ at node File I/O @MGL{}, Make another data @MGL{}, Rearrange data @MGL{}, MGL interface
+ at section ЧÑение/ÑоÑ
Ñанение даннÑÑ
@MGL{}
+
+ at cindex read
+ at anchor{read}
+ at deffn {Ðоманда MGL} read dat 'fname'
+ЧиÑÐ°ÐµÑ Ð´Ð°Ð½Ð½Ñе из ÑекÑÑового Ñайла Ñ ÑазделиÑелÑми Ñимволом пÑобела/ÑабÑлÑÑии Ñ Ð°Ð²ÑомаÑиÑеÑким опÑеделением ÑазмеÑа маÑÑива. Ðвойной пеÑевод ÑÑÑоки наÑÐ¸Ð½Ð°ÐµÑ Ð½Ð¾Ð²Ñй ÑÑез даннÑÑ
(по напÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ z).
+ at end deffn
+
+ at deffn {Ðоманда MGL} read dat 'fname' @code{mx [my=1 mz=1]}
+ЧиÑÐ°ÐµÑ Ð´Ð°Ð½Ð½Ñе из ÑекÑÑового Ñайла Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñми ÑазмеÑами. ÐиÑего не делаеÑÑÑ ÐµÑли паÑамеÑÑÑ @var{mx}, @var{my} или @var{mz} ÑÐ°Ð²Ð½Ñ Ð½ÑÐ»Ñ Ð¸Ð»Ð¸ оÑÑиÑаÑелÑнÑ.
+ at end deffn
+
+ at cindex readmat
+ at anchor{readmat}
+ at deffn {Ðоманда MGL} readmat dat 'fname' [@code{dim=2}]
+ЧиÑÐ°ÐµÑ Ð´Ð°Ð½Ð½Ñе из ÑекÑÑового Ñайла Ñ ÑазмеÑами, ÑказаннÑми в пеÑвÑÑ
@var{dim} ÑиÑлаÑ
Ñайла. ÐÑи ÑÑом пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ @var{dim} Ð·Ð°Ð´Ð°ÐµÑ ÑазмеÑноÑÑÑ (1d, 2d, 3d) даннÑÑ
.
+ at end deffn
+
+ at cindex readall
+ at anchor{readall}
+ at deffn {Ðоманда MGL} readall dat 'templ' @code{v1 v2 [dv=1 slice=off]}
+ÐбÑединÑÐµÑ Ð´Ð°Ð½Ð½Ñе из неÑколÑкиÑ
ÑекÑÑовÑÑ
Ñайлов. Ðмена Ñайлов опÑеделÑÑÑÑÑ Ð²Ñзовом ÑÑнкÑии @code{sprintf(fname,templ,val);}, где @var{val} менÑеÑÑÑ Ð¾Ñ @var{v1} до @var{v2} Ñ Ñагом @var{dv}. ÐаннÑе загÑÑжаÑÑÑÑ Ð¾Ð´Ð¸Ð½ за дÑÑгим в один и ÑÐ¾Ñ Ð¶Ðµ ÑÑез даннÑÑ
(пÑи @var{slice}=@code{off}) или ÑÑез-за-ÑÑезом (пÑи @var{slice}=@code{on}).
+ at end deffn
+
+ at deffn {Ðоманда MGL} readall dat 'templ' @code{[slice=off]}
+ÐбÑединÑÐµÑ Ð´Ð°Ð½Ð½Ñе из неÑколÑкиÑ
ÑекÑÑовÑÑ
Ñайлов, ÑÑи имена ÑдовлеÑвоÑÑÑÑ ÑÐ°Ð±Ð»Ð¾Ð½Ñ @var{templ} (напÑимеÑ, @var{templ}=@code{"t_*.dat"}). ÐаннÑе загÑÑжаÑÑÑÑ Ð¾Ð´Ð¸Ð½ за дÑÑгим в один и ÑÐ¾Ñ Ð¶Ðµ ÑÑез даннÑÑ
(пÑи @var{slice}=@code{off}) или ÑÑез-за-ÑÑезом (пÑи @var{slice}=@code{on}).
+ at end deffn
+
+ at cindex save
+ at anchor{save}
+ at deffn {Ðоманда MGL} save dat 'fname'
+СоÑ
ÑанÑÐµÑ Ð¼Ð°ÑÑив даннÑÑ
в ÑекÑÑовÑй Ñайл.
+ at end deffn
+
+ at cindex readhdf
+ at anchor{readhdf}
+ at deffn {Ðоманда MGL} readhdf dat 'fname' 'dname'
+ЧиÑÐ°ÐµÑ Ð¼Ð°ÑÑив Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ @var{dname} из HDF5 или HDF4 Ñайла @var{fname}.
+ at end deffn
+
+ at cindex savehdf
+ at anchor{savehdf}
+ at deffn {Ðоманда MGL} savehdf dat 'fname' 'dname'
+СоÑ
ÑанÑÐµÑ Ð¼Ð°ÑÑив под именем @var{dname} в HDF5 или HDF4 Ñайл @var{fname}.
+ at end deffn
+
+ at cindex import
+ at anchor{import}
+ at deffn {Ðоманда MGL} import dat 'fname' 'sch' [@code{v1=0 v2=1}]
+ЧиÑÐ°ÐµÑ Ð´Ð°Ð½Ð½Ñе из ÑаÑÑÑового Ñайла. RGB знаÑÐµÐ½Ð¸Ñ Ð¿Ð¸ÐºÑелов пÑеобÑазÑÑÑÑÑ Ð² ÑиÑло в диапазоне [@var{v1}, @var{v2}] иÑполÑзÑÑ ÑвеÑовÑÑ ÑÑ
ÐµÐ¼Ñ @var{sch} (@pxref{Color scheme}).
+ at end deffn
+
+ at cindex export
+ at anchor{export}
+ at deffn {Ðоманда MGL} export dat 'fname' 'sch' [@code{v1=0 v2=0}]
+СоÑ
ÑанÑÐµÑ Ð´Ð°Ð½Ð½Ñе в ÑаÑÑÑовÑй Ñайл. ЧиÑловÑе знаÑениÑ, ноÑмиÑованнÑе в диапазон [@var{v1}, @var{v2}], пÑеобÑазÑÑÑÑÑ Ð² RGB знаÑÐµÐ½Ð¸Ñ Ð¿Ð¸ÐºÑелов, иÑполÑзÑÑ ÑвеÑовÑÑ ÑÑ
ÐµÐ¼Ñ @var{sch} (@pxref{Color scheme}). ÐÑли @var{v1}>=@var{v2}, Ñо знаÑÐµÐ½Ð¸Ñ @var{v1}, @var{v2} опÑеделÑÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки как минималÑное и макÑималÑное знаÑение даннÑÑ
.
+ at end deffn
+
+ at c ------------------------------------------------------------------
+ at node Make another data @MGL{}, Change data @MGL{}, File I/O @MGL{}, MGL interface
+ at section Создание новÑÑ
даннÑÑ
@MGL{}
+
+ at cindex combine
+ at anchor{combine}
+ at deffn {Ðоманда MGL} combine res adat bdat
+ÐозвÑаÑÐ°ÐµÑ Ð² маÑÑиве даннÑÑ
@var{res} пÑÑмое пÑоизведение маÑÑивов (наподобие, res[i,j] = adat[i]*bdat[j] и Ñ.д.).
+ at end deffn
+
+ at cindex evaluate
+ at anchor{evaluate}
+ at deffn {Ðоманда MGL} evaluate res dat idat [@code{norm=on}]
+ at deffnx {Ðоманда MGL} evaluate res dat idat jdat [@code{norm=on}]
+ at deffnx {Ðоманда MGL} evaluate res dat idat jdat kdat [@code{norm=on}]
+ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив даннÑÑ
@var{res}, полÑÑеннÑй в ÑезÑлÑÑаÑе инÑеÑполÑÑии иÑÑ
одного маÑÑива в ÑоÑкаÑ
дÑÑгиÑ
маÑÑивов (напÑимеÑ, res[i,j]=dat[idat[i,j],jdat[i,j]]). РазмеÑÑ Ð¼Ð°ÑÑивов @var{idat}, @var{jdat}, @var{kdat} Ð´Ð¾Ð»Ð¶Ð½Ñ ÑовпадаÑÑ. ÐооÑдинаÑÑ Ð² @var{idat}, @var{jdat}, @var{kdat} полагаÑÑÑÑ Ð½Ð¾ÑмиÑованнÑми в диапазон [0,1] (пÑи @var{norm}=@code{on}) или в Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ñ [0,nx], [0,ny], [0,nz] ÑооÑвеÑÑÑвенно.
+ at end deffn
+
+ at cindex hist
+ at anchor{hist}
+ at deffn {Ðоманда MGL} hist res dat @code{num v1 v2 [nsub=0]}
+ at deffnx {Ðоманда MGL} hist res dat wdat @code{num v1 v2 [nsub=0]}
+ÐозвÑаÑÐ°ÐµÑ ÑаÑпÑеделение (гиÑÑогÑаммÑ) @var{res} из @var{num} ÑоÑек Ð¾Ñ Ð·Ð½Ð°Ñений маÑÑива @var{dat} в диапазоне [@var{v1}, @var{v2}]. ÐаÑÑив @var{wdat} Ð·Ð°Ð´Ð°ÐµÑ Ð²ÐµÑа ÑлеменÑов (вÑе веÑа ÑÐ°Ð²Ð½Ñ 1 еÑли @var{wdat} не Ñказан). ÐаÑамеÑÑ @var{nsub} Ð·Ð°Ð´Ð°ÐµÑ ÑиÑло дополниÑелÑнÑÑ
ÑоÑек инÑеÑполÑÑии (Ð´Ð»Ñ ÑÐ³Ð»Ð°Ð¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑÑивÑейÑÑ Ð³Ð¸ÑÑогÑаммÑ).
+ at end deffn
+
+ at deffn {Ðоманда MGL} hist res xdat adat
+ at deffnx {Ðоманда MGL} hist res xdat ydat adat
+ at deffnx {Ðоманда MGL} hist res xdat ydat zdat adat
+ÐозвÑаÑÐ°ÐµÑ ÑаÑпÑеделение (гиÑÑогÑаммÑ) @var{res} Ð¾Ñ Ð·Ð½Ð°Ñений маÑÑива @var{adat}, паÑамеÑÑиÑеÑки завиÑÑÑего Ð¾Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ @{@var{xdat}, at var{ydat}, at var{zdat}@} в диапазоне оÑей кооÑдинаÑ. ÐаÑÑив @var{adat} игÑÐ°ÐµÑ ÑÐ¾Ð»Ñ Ð²ÐµÑа ÑоÑки. ЧиÑло ÑоÑек в ÑезÑлÑÑаÑе @var{res} -- макÑимÑм из ÑазмеÑа @var{res} и 100.
+ at end deffn
+
+
+ at cindex momentum
+ at anchor{momentum}
+ at deffn {Ðоманда MGL} momentum res dat 'how' ['dir'='z']
+ÐозвÑаÑÐ°ÐµÑ Ð² маÑÑиве даннÑÑ
@var{res} Ð¼Ð¾Ð¼ÐµÐ½Ñ (1d маÑÑив) даннÑÑ
@var{dat} Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ @var{dir}. СÑÑока @var{how} опÑеделÑÐµÑ Ñип моменÑа. ÐÐ¾Ð¼ÐµÐ½Ñ Ð¾Ð¿ÑеделÑеÑÑÑ ÐºÐ°Ðº
+ at iftex
+ at math{res_k = \sum_{ij} how(x_i,y_j,z_k) dat_{ij}/\sum_{ij} a_{ij}}
+ at end iftex
+ at ifnottex
+res_k = \sum_ij how(x_i,y_j,z_k) dat_ij/ \sum_ij a_ij
+ at end ifnottex
+еÑли @var{dir}=@samp{z} и Ñ.д. ÐооÑдинаÑÑ @samp{x}, @samp{y}, @samp{z} -- индекÑÑ Ð¼Ð°ÑÑива в диапазоне [0,1].
+ at end deffn
+
+ at cindex sum
+ at anchor{sum}
+ at deffn {Ðоманда MGL} sum res dat 'dir'
+ÐозвÑаÑÐ°ÐµÑ Ð² маÑÑиве даннÑÑ
@var{res} ÑезÑлÑÑÐ°Ñ ÑÑммиÑÐ¾Ð²Ð°Ð½Ð¸Ñ @var{dat} Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑавлениÑ(ий) @var{dir}.
+ at end deffn
+
+ at cindex max
+ at anchor{max}
+ at deffn {Ðоманда MGL} max res dat 'dir'
+ÐозвÑаÑÐ°ÐµÑ Ð² маÑÑиве даннÑÑ
@var{res} макÑималÑное знаÑение @var{dat} Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑавлениÑ(ий) @var{dir}.
+Gets array which is the maximal data values in given direction or direction(s).
+ at end deffn
+
+ at cindex min
+ at anchor{min}
+ at deffn {Ðоманда MGL} min res dat 'dir'
+ÐозвÑаÑÐ°ÐµÑ Ð² маÑÑиве даннÑÑ
@var{res} минималÑное знаÑение @var{dat} Ð²Ð´Ð¾Ð»Ñ Ð½Ð°Ð¿ÑавлениÑ(ий) @var{dir}.
+ at end deffn
+
+ at cindex resize
+ at anchor{resize}
+ at deffn {Ðоманда MGL} resize res dat @code{mx [my=1 mz=1]}
+ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив даннÑÑ
@var{res} ÑазмеÑом @var{mx}, @var{my}, @var{mz} Ñо знаÑениÑми полÑÑеннÑми инÑеÑполÑÑией знаÑений маÑÑива @var{dat}.
+ at end deffn
+
+ at cindex subdata
+ at anchor{subdata}
+ at deffn {Ðоманда MGL} subdata res dat @code{xx [yy=: zz=:]}
+ÐозвÑаÑÐ°ÐµÑ Ð² @var{res} подмаÑÑив маÑÑива даннÑÑ
@var{dat} Ñ ÑикÑиÑованнÑми знаÑениÑми индекÑов Ñ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸ÑелÑнÑми знаÑениÑми. ÐапÑимеÑ, @code{subdata a b : 2} вÑделÑÐµÑ ÑÑеÑÑÑ ÑÑÑÐ¾ÐºÑ (индекÑÑ Ð½Ð°ÑинаÑÑÑÑ Ñ Ð½ÑлÑ), @code{subdata a b 4 :} вÑделÑÐµÑ 5-ÑÑ ÐºÐ¾Ð»Ð¾Ð½ÐºÑ, @code{subdata a b : : 3} вÑделÑÐµÑ 4-Ñй ÑÑез и Ñ.д.
+ at end deffn
+
+ at cindex trace
+ at anchor{trace}
+ at deffn {Ðоманда MGL} trace res dat
+ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив @var{ref} диагоналÑнÑÑ
ÑлеменÑов @var{dat}[i,i] (Ð´Ð»Ñ 2D даннÑÑ
) или @var{dat}[i,i,i] (Ð´Ð»Ñ 3D даннÑÑ
) где i=0...nx-1. Ð 1D ÑлÑÑае возвÑаÑаеÑÑÑ Ñам маÑÑив даннÑÑ
@var{dat}. РазмеÑÑ Ð¼Ð°ÑÑива даннÑÑ
должен бÑÑÑ @var{dat}.ny, @var{dat}.nz >= @var{dat}.nx или @var{dat}.ny, @var{dat}.nz = 1.
+ at end deffn
+
+ at cindex transform
+ at anchor{transform}
+ at deffn {Ðоманда MGL} transform dat 'type' real imag
+ÐÑполнÑÐµÑ Ð¸Ð½ÑегÑалÑное пÑеобÑазование комплекÑнÑÑ
даннÑÑ
@var{real}, @var{imag} в вÑбÑанном напÑавлении и возвÑаÑÐ°ÐµÑ Ð¼Ð¾Ð´ÑÐ»Ñ ÑезÑлÑÑаÑа в @var{res}. ÐоÑÑдок и Ñип пÑеобÑазований задаеÑÑÑ ÑÑÑокой @var{type}: пеÑвÑй Ñимвол Ð´Ð»Ñ x-напÑавлениÑ, вÑоÑой Ð´Ð»Ñ y-напÑавлениÑ, ÑÑеÑий Ð´Ð»Ñ z-напÑавлениÑ. ÐозможнÑе ÑимволÑ: @samp{f} -- пÑÑмое пÑеобÑазование ФÑÑÑе, @samp{i} -- обÑаÑное пÑеобÑазование ФÑÑÑе, @samp{s} -- ÑинÑÑ Ð¿ÑеобÑазование, @samp{c} -- коÑинÑÑ Ð¿ÑеобÑазование, @samp{h} -- пÑеобÑазование ХанкелÑ, @samp{n} или @samp{ } -- Ð½ÐµÑ Ð¿ÑеобÑазованиÑ.
+ at end deffn
+
+ at cindex transforma
+ at anchor{transforma}
+ at deffn {Ðоманда MGL} transforma dat 'type' ampl phase
+ÐналогиÑно пÑедÑдÑÑÐµÐ¼Ñ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñми амплиÑÑдой @var{ampl} и Ñазой @var{phase} комплекÑнÑÑ
ÑиÑел.
+ at end deffn
+
+ at cindex stfad
+ at anchor{stfad}
+ at deffn {Ðоманда MGL} stfad res real imag @code{dn} ['dir'='x']
+ÐÑполнÑÐµÑ Ð¾ÐºÐ¾Ð½Ð½Ð¾Ðµ пÑеобÑазование ФÑÑÑе длиной @var{dn} Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑнÑÑ
даннÑÑ
@var{real}, @var{imag} и возвÑаÑÐ°ÐµÑ Ð¼Ð¾Ð´ÑÐ»Ñ ÑезÑлÑÑаÑа в @var{res}. ÐапÑимеÑ, Ð´Ð»Ñ @var{dir}=@samp{x} ÑезÑлÑÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð¸Ð¼ÐµÑÑ ÑÐ°Ð·Ð¼ÐµÑ @{int(nx/dn), dn, ny@} и бÑÐ´ÐµÑ Ñавен @math{res[i,j,k]=|\sum_d^dn exp(I*j*d)*(real[i*dn+d,k]+I*imag[i*dn+d,k])|/dn}.
+ at end deffn
+
+ at cindex pde
+ at anchor{pde}
+ at deffn {Ðоманда MGL} pde res 'ham' ini_re ini_im [@code{dz=0.1 k0=100}]
+РеÑÐ°ÐµÑ ÑÑавнение в ÑаÑÑнÑÑ
пÑоизводнÑÑ
du/dz = i*k0*@var{ham}(p,q,x,y,z,|u|)[u], где p=-i/k0*d/dx, q=-i/k0*d/dy -- пÑевдо-диÑÑеÑенÑиалÑнÑе опеÑаÑоÑÑ. ÐаÑамеÑÑÑ @var{ini_re}, @var{ini_im} задаÑÑ Ð½Ð°ÑалÑное ÑаÑпÑеделение полÑ. ÐооÑдинаÑÑ Ð² ÑÑавнении и в ÑеÑении полагаÑÑÑÑ Ð² диапазоне оÑей кооÑдинаÑ. ÐамеÑÑ, ÑÑо внÑÑÑи ÑÑÐ¾Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ ÑвелиÑиваеÑÑÑ Ð² 3/2 Ñаза Ð´Ð»Ñ ÑменÑÑÐµÐ½Ð¸Ñ Ð¾ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¾Ñ Ð³ÑÐ°Ð½Ð¸Ñ ÑаÑÑеÑного инÑеÑвала. ÐаÑамеÑÑ @var{dz} Ð·Ð°Ð´Ð°ÐµÑ Ñаг по ÑволÑÑионной кооÑдинаÑе z. РданнÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¸ÑполÑзован ÑпÑоÑеннÑй алгоÑиÑм, когда вÑе ``ÑмеÑаннÑе'' Ñлена (Ñипа @samp{x*p}->x*d/dx) иÑклÑÑаÑÑÑÑ. ÐапÑимеÑ, в 2D ÑлÑÑае ÑÑо ÑÑнкÑии Ñипа @math{ham = f(p,z) + g(x,z,u)}. ÐÑи ÑÑом допÑÑкаÑÑÑÑ ÐºÐ¾Ð¼Ð¼ÑÑиÑÑÑÑие комбинаÑии (Ñипа @samp{x*q}->x*d/dy). ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ @samp{u} иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¾Ð±Ð¾Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð°Ð¼Ð¿Ð»Ð¸ÑÑÐ´Ñ Ð¿Ð¾Ð»Ñ |u|. ÐÑо позволÑÐµÑ ÑеÑаÑÑ Ð½ÐµÐ»Ð¸Ð½ÐµÐ¹Ð½Ñе задаÑи -- напÑимеÑ, нелинейное ÑÑавнение ШÑедингеÑа @code{ham='p^2+q^2-u^2'}. Также можно ÑказаÑÑ Ð¼Ð½Ð¸Ð¼ÑÑ ÑаÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð³Ð»Ð¾ÑÐµÐ½Ð¸Ñ (Ñипа @code{ham = 'p^2+i*x*(x>0)'}), но ÑолÑко еÑли завиÑимоÑÑÑ Ð¾Ñ @samp{i} линейнаÑ, Ñ.е. @math{ham = hre+i*him}. @sref{PDE sample}
+ at end deffn
+
+ at cindex ray
+ at anchor{ray}
+ at deffn {Ðоманда MGL} ray res 'ham' @code{x0 y0 z0 p0 q0 v0 [dt=0.1 tmax=10]}
+РеÑÐ°ÐµÑ ÑиÑÑÐµÐ¼Ñ Ð³ÐµÐ¾Ð¼ÐµÑÑоопÑиÑеÑкиÑ
ÑÑавнений d at emph{r}/dt = d @var{ham}/d at emph{p}, d at emph{p}/dt = -d @var{ham}/d at emph{r}. ÐÑо гамилÑÑÐ¾Ð½Ð¾Ð²Ñ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑÑаекÑоÑии ÑаÑÑиÑÑ Ð² 3D ÑлÑÑае. ÐамилÑÑониан @var{ham} Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð²Ð¸ÑеÑÑ Ð¾Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ @samp{x}, @samp{y}, @samp{z}, импÑлÑÑов @samp{p}=px, @samp{q}=py, @samp{v}=pz и вÑемени @samp{t}: @math{ham = H(x,y,z,p,q,v,t)}. ÐаÑалÑÐ½Ð°Ñ ÑоÑка (пÑи @code{t=0}) задаеÑÑÑ Ð¿ÐµÑеменнÑми @{@var{x0}, @var{y0}, @var{z0}, @var{p0}, @var{q0}, @var{v0}@}. ÐаÑамеÑÑÑ @var{dt} и @var{tmax} задаÑÑ Ñаг и макÑималÑное вÑÐµÐ¼Ñ Ð¸Ð½ÑегÑиÑованиÑ. РезÑлÑÑÐ°Ñ @var{res} -- маÑÑив @{x,y,z,p,q,v,t@} Ñ ÑазмеÑом @{7 * int(@var{tmax}/@var{dt}+1) @}. @sref{Beam tracing sample}
+ at end deffn
+
+ at cindex qo2d
+ at anchor{qo2d}
+ at deffn {Ðоманда MGL} qo2d res 'ham' ini_re ini_im ray [@code{r=1 k0=100} xx=0 yy=0]
+РеÑÐ°ÐµÑ ÑÑавнение в ÑаÑÑнÑÑ
пÑоизводнÑÑ
du/dt = i*k0*@var{ham}(p,q,x,y,|u|)[u] в ÑопÑовождаÑÑей ÑиÑÑеме кооÑдинаÑ, где p=-i/k0*d/dx, q=-i/k0*d/dy -- пÑевдо-диÑÑеÑенÑиалÑнÑе опеÑаÑоÑÑ. ÐаÑамеÑÑÑ @var{ini_re}, @var{ini_im} задаÑÑ Ð½Ð°ÑалÑное ÑаÑпÑеделение полÑ. ÐаÑамеÑÑ @var{ray} Ð·Ð°Ð´Ð°ÐµÑ Ð¾Ð¿Ð¾ÑнÑй лÑÑ Ð´Ð»Ñ ÑопÑовождаÑÑей ÑиÑÑÐµÐ¼Ñ ÐºÐ¾Ð¾ÑдинаÑ. Ðожно иÑполÑзоваÑÑ Ð»ÑÑ Ð½Ð°Ð¹Ð´ÐµÐ½Ð½Ñй Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ @code{ray}. ÐпоÑнÑй лÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ Ð´Ð¾ÑÑаÑоÑно гладкий, ÑÑÐ¾Ð±Ñ ÑиÑÑема кооÑÐ´Ð¸Ð½Ð°Ñ Ð±Ñла однознаÑной и Ð´Ð»Ñ Ð¸ÑклÑÑÐµÐ½Ð¸Ñ Ð¾Ñибок инÑегÑиÑованиÑ. ÐÑли маÑÑÐ¸Ð²Ñ @var{xx} и @var{yy} ÑказанÑ, Ñо в ниÑ
запиÑÑваÑÑÑÑ Ð´ÐµÐºÐ°ÑÑÐ¾Ð²Ñ ÐºÐ¾Ð¾ÑдинаÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑоÑки найденного ÑеÑениÑ. См. Ñакже @ref{pde}. @sref{Beam tracing sample}
+ at end deffn
+
+ at cindex jacobian
+ at anchor{jacobian}
+ at deffn {Ðоманда MGL} jacobian res xdat ydat [zdat=0]
+ÐÑÑиÑлÑÐµÑ Ñкобиан пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ @{i,j,k@} в @{@var{xdat}, at var{ydat}, at var{zdat}@}, где кооÑдинаÑÑ @{i,j,k@} полагаÑÑÑÑ Ð½Ð¾ÑмиÑованнÑми в инÑеÑвал [0,1]. Якобиан наÑ
одиÑÑÑ Ð¿Ð¾ ÑоÑмÑле det||@math{dr_\alpha/d\xi_\beta}||, где @math{r}=@{@var{xdat}, at var{ydat}, at var{zdat}@} и @math{\xi}=@{i,j,k@}. ÐÑе ÑазмеÑноÑÑи вÑеÑ
маÑÑивов Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ. ÐаннÑе Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑÑеÑ
меÑнÑми еÑли ÑÐºÐ°Ð·Ð°Ð½Ñ Ð²Ñе 3 маÑÑива @{@var{xdat}, at var{ydat}, at var{zdat}@} или двÑмеÑнÑми еÑли ÑолÑко 2 маÑÑива @{@var{xdat}, at var{ydat}@}.
+ at end deffn
+
+
+
+ at c ------------------------------------------------------------------
+ at node Change data @MGL{}, Operators @MGL{}, Make another data @MGL{}, MGL interface
+ at section Ðзменение даннÑÑ
@MGL{}
+
+ÐÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¸Ð·Ð¼ÐµÐ½ÑÑÑ Ð´Ð°Ð½Ð½Ñе Ð²Ð´Ð¾Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ напÑавлениÑ(ий) Ñипа напÑÐ¸Ð¼ÐµÑ Ð´Ð¸ÑÑеÑенÑиÑованиÑ, инÑегÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ Ñ.д. ÐапÑавление ÑказÑваеÑÑÑ ÑÑÑокой @var{dir}, коÑоÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ @samp{x}, @samp{y} и/или @samp{z}, Ð²Ð´Ð¾Ð»Ñ ÐºÐ¾ÑоÑÑÑ
Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑдÑÑ Ð¿ÑимененÑ.
+
+ at cindex cumsum
+ at anchor{cumsum}
+ at deffn {Ðоманда MGL} cumsum dat 'dir'
+СÑммиÑÑÐµÑ Ñ Ð½Ð°ÐºÐ¾Ð¿Ð»ÐµÐ½Ð¸ÐµÐ¼ в вÑбÑанном напÑавлении(ÑÑ
).
+ at end deffn
+ at cindex integrate
+ at anchor{integrate}
+ at deffn {Ðоманда MGL} integrate dat 'dir'
+ÐÑполнÑÐµÑ Ð¸Ð½ÑегÑиÑование (подобно ÑÑммиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ñ Ð½Ð°ÐºÐ¾Ð¿Ð»ÐµÐ½Ð¸ÐµÐ¼) в вÑбÑанном напÑавлении(ÑÑ
).
+ at end deffn
+ at cindex diff
+ at anchor{diff}
+ at deffn {Ðоманда MGL} diff dat 'dir'
+ÐÑполнÑÐµÑ Ð´Ð¸ÑÑеÑенÑиÑование в вÑбÑанном напÑавлении(ÑÑ
).
+ at end deffn
+ at deffn {Ðоманда MGL} diff dat xdat ydat [zdat=0]
+ÐÑполнÑÐµÑ Ð´Ð¸ÑÑеÑенÑиÑование даннÑÑ
@var{dat}, паÑамеÑÑиÑеÑки завиÑÑÑиÑ
Ð¾Ñ ÐºÐ¾Ð¾ÑдинаÑ, в напÑавлении @var{xdat} Ñ @var{ydat}, @var{zdat}=constant. ÐаÑамеÑÑ @var{zdat} Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð¿ÑÑен, ÑÑо ÑооÑвеÑÑÑвÑÐµÑ 2D ÑлÑÑаÑ. ÐÑполÑзÑÑÑÑÑ ÑледÑÑÑие ÑоÑмÑÐ»Ñ (2D ÑлÑÑай): @math{da/dx = (a_j*y_i-a_i*y_j)/(x_j*y_i-x_i*y_j)}, где @math{a_i=da/di, a_j=da/dj} обознаÑÐ°ÐµÑ Ð´Ð¸ÑÑеÑенÑиÑование Ð²Ð´Ð¾Ð»Ñ 1-ой и 2-ой ÑазмеÑноÑÑи. ÐоÑ
ожие ÑоÑмÑÐ»Ñ Ð¸ÑполÑзÑÑÑÑÑ Ð¸ в 3D ÑлÑÑае. ÐоÑÑдок аÑгÑменÑов можно менÑÑÑ -- напÑимеÑ, еÑли даннÑе a(i,j) завиÑÑÑ Ð¾Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ @{x(i,j), y(i,j)@}, Ñо обÑÑÐ½Ð°Ñ Ð¿ÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ð½Ð°Ñ Ð¿Ð¾ @samp{x} бÑÐ´ÐµÑ Ñавна @code{diff a x y}, а обÑÑÐ½Ð°Ñ Ð¿ÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ð½Ð°Ñ Ð¿Ð¾ @samp{y} бÑÐ´ÐµÑ Ñавна @code{diff a y x}.
+ at end deffn
+
+ at cindex diff2
+ at anchor{diff2}
+ at deffn {Ðоманда MGL} diff2 dat 'dir'
+ÐÑполнÑÐµÑ Ð´Ð²Ð¾Ð¹Ð½Ð¾Ðµ диÑÑеÑенÑиÑование (как в опеÑаÑоÑе ÐаплаÑа) в вÑбÑанном напÑавлении(ÑÑ
).
+ at end deffn
+
+ at cindex sinfft
+ at anchor{sinfft}
+ at deffn {Ðоманда MGL} sinfft dat 'dir'
+ÐÑполнÑÐµÑ ÑинÑÑ Ð¿ÑеобÑазование в вÑбÑанном напÑавлении(ÑÑ
). СинÑÑ Ð¿ÑеобÑазование еÑÑÑ @math{\sum a_i \sin(k i)}.
+ at end deffn
+ at cindex cosfft
+ at anchor{cosfft}
+ at deffn {Ðоманда MGL} cosfft dat 'dir'
+ÐÑполнÑÐµÑ ÐºÐ¾ÑинÑÑ Ð¿ÑеобÑазование в вÑбÑанном напÑавлении(ÑÑ
). СинÑÑ Ð¿ÑеобÑазование еÑÑÑ @math{\sum a_i \cos(k i)}.
+ at end deffn
+ at cindex hankel
+ at anchor{hankel}
+ at deffn {Ðоманда MGL} hankel dat 'dir'
+ÐÑполнÑÐµÑ Ð¿ÑеобÑазование Ð¥Ð°Ð½ÐºÐµÐ»Ñ Ð² вÑбÑанном напÑавлении(ÑÑ
). ÐÑеобÑазование Ð¥Ð°Ð½ÐºÐµÐ»Ñ ÐµÑÑÑ @math{\sum a_i J_0(k i)}.
+ at end deffn
+
+
+ at cindex swap
+ at anchor{swap}
+ at deffn {Ðоманда MGL} swap dat 'dir'
+ÐенÑÐµÑ Ð¼ÐµÑÑами левÑÑ Ð¸ пÑавÑÑ ÑаÑÑи даннÑÑ
в вÑбÑанном напÑавлении(ÑÑ
). Ðолезно Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑезÑлÑÑаÑа FFT.
+ at end deffn
+ at cindex roll
+ at anchor{roll}
+ at deffn {Ðоманда MGL} roll dat 'dir' num
+Ð¡Ð´Ð²Ð¸Ð³Ð°ÐµÑ Ð´Ð°Ð½Ð½Ñе на @var{num} ÑÑеек в вÑбÑанном напÑавлении(ÑÑ
). СооÑвеÑÑÑвÑÐµÑ Ð·Ð°Ð¼ÐµÐ½Ðµ индекÑа на @var{i}->(@var{i}+ at var{num})%@var{n}.
+ at end deffn
+
+ at cindex mirror
+ at anchor{mirror}
+ at deffn {Ðоманда MGL} mirror dat 'dir'
+ÐÑÑÐ°Ð¶Ð°ÐµÑ Ð´Ð°Ð½Ð½Ñе в вÑбÑанном напÑавлении(ÑÑ
). СооÑвеÑÑÑвÑÐµÑ Ð·Ð°Ð¼ÐµÐ½Ðµ индекÑа на @var{i}->@var{n}- at var{i}.
+ at end deffn
+
+ at cindex sew
+ at anchor{sew}
+ at deffn {Ðоманда MGL} sew dat ['dir'='xyz' @code{da=2*pi}]
+УдалÑÐµÑ ÑкаÑки даннÑÑ
(напÑимеÑ, ÑкаÑки ÑÐ°Ð·Ñ Ð¿Ð¾Ñле обÑаÑнÑÑ
ÑÑигономеÑÑиÑеÑкиÑ
ÑÑнкÑий) Ñ Ð¿ÐµÑиодом @var{da} в вÑбÑанном напÑавлении(ÑÑ
).
+ at end deffn
+
+ at cindex smooth
+ at anchor{smooth}
+ at deffn {Ðоманда MGL} smooth data @code{type} ['dir'='xyz']
+Ð¡Ð³Ð»Ð°Ð¶Ð¸Ð²Ð°ÐµÑ Ð´Ð°Ð½Ð½Ñе в вÑбÑанном напÑавлении(ÑÑ
) меÑодом @var{type}. СейÑÐ°Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаÑÑÑÑ 4 меÑода: @code{0} ниÑего не делаеÑ, @code{1} линейное ÑÑÑеднение по 3 ÑоÑкам, @code{2} линейное ÑÑÑеднение по 5 ÑоÑкам, @code{3} квадÑаÑиÑное ÑÑÑеднение по 5 ÑоÑкам.
+ at end deffn
+
+ at cindex envelop
+ at anchor{envelop}
+ at deffn {Ðоманда MGL} envelop dat ['dir'='x']
+ÐаÑ
Ð¾Ð´Ð¸Ñ Ð¾Ð³Ð¸Ð±Ð°ÑÑÑÑ Ð´Ð°Ð½Ð½ÑÑ
в вÑбÑанном напÑавлении. ТолÑко одно напÑавление Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²ÑбÑано за Ñаз.
+ at end deffn
+
+ at cindex normsl
+ at anchor{normsl}
+ at deffn {Ðоманда MGL} normsl dat @code{v1 v2} ['dir'='z' @code{keep=on sym=off}]
+ÐоÑмиÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе ÑÑез-за-ÑÑезом в вÑбÑанном напÑавлении @var{dir} в инÑеÑвал [@var{v1}, at var{v2}]. ÐÑли @var{sym}=@code{on}, Ñо иÑполÑзÑеÑÑÑ ÑиммеÑÑиÑнÑй инÑеÑвал [-max(|v1|,|v2|), max(|v1|,|v2|)]. ÐÑли @var{keep}=@code{on}, Ñо макÑималÑное знаÑение k-го ÑÑеза огÑаниÑено велиÑиной
+ at iftex
+ at math{\sqrt{\sum a_{ij}(k)/\sum a_{ij}(0)}}.
+ at end iftex
+ at ifnottex
+ at math{\sqrt@{\sum a_ij(k)/\sum a_ij(0)@}}.
+ at end ifnottex
+ at end deffn
+
+ at cindex norm
+ at anchor{norm}
+ at deffn {Ðоманда MGL} norm dat @code{v1 v2 [sym=off dim=0]}
+ÐоÑмиÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе в инÑеÑвал [@var{v1}, at var{v2}]. ÐÑли @var{sym}=@code{on}, Ñо иÑполÑзÑеÑÑÑ ÑиммеÑÑиÑнÑй инÑеÑвал [-max(|v1|,|v2|), max(|v1|,|v2|)]. ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿ÑименÑÑÑÑÑ ÑолÑко к ÑÑезам >=@var{dim}.
+ at end deffn
+
+ at c ------------------------------------------------------------------
+ at node Operators @MGL{}, Program flow @MGL{}, Change data @MGL{}, MGL interface
+ at section ÐпеÑаÑоÑÑ @MGL{}
+
+ at cindex multo
+ at anchor{multo}
+ at deffn {Ðоманда MGL} multo dat dat2
+ÐоÑлеменÑно ÑÐ¼Ð½Ð¾Ð¶Ð°ÐµÑ Ð¼Ð°ÑÑив @var{dat} на @var{dat2}.
+ at end deffn
+ at deffn {Ðоманда MGL} multo dat @code{val}
+Ð£Ð¼Ð½Ð¾Ð¶Ð°ÐµÑ ÐºÐ°Ð¶Ð´Ñй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð½Ð° ÑиÑло.
+ at end deffn
+
+ at cindex divto
+ at anchor{divto}
+ at deffn {Ðоманда MGL} divto dat dat2
+ÐоÑлеменÑно Ð´ÐµÐ»Ð¸Ñ Ð¼Ð°ÑÑив @var{dat} на @var{dat2}.
+ at end deffn
+ at deffn {Ðоманда MGL} divto dat @code{val}
+ÐÐµÐ»Ð¸Ñ ÐºÐ°Ð¶Ð´Ñй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð½Ð° ÑиÑло.
+ at end deffn
+
+ at cindex addto
+ at anchor{addto}
+ at deffn {Ðоманда MGL} addto dat dat2
+ÐоÑлеменÑно пÑибавлÑÐµÑ @var{dat2} к маÑÑÐ¸Ð²Ñ @var{dat}.
+ at end deffn
+ at deffn {Ðоманда MGL} addto dat @code{val}
+ÐÑибавлÑÐµÑ ÑиÑло к ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ ÑлеменÑÑ.
+ at end deffn
+
+ at cindex subto
+ at anchor{subto}
+ at deffn {Ðоманда MGL} subto dat dat2
+ÐоÑлеменÑно вÑÑиÑÐ°ÐµÑ @var{dat2} из маÑÑива @var{dat}.
+ at end deffn
+ at deffn {Ðоманда MGL} subto dat @code{val}
+ÐÑÑиÑÐ°ÐµÑ ÑиÑло из каждого ÑлеменÑа.
+ at end deffn
+
+ at c ------------------------------------------------------------------
+ at node Program flow @MGL{}, Command options @MGL{}, Operators @MGL{}, MGL interface
+ at section ÐÑогÑаммиÑование @MGL{}
+
+ÐÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÑпÑавлÑÑÑ Ð¿Ð¾ÑÑдком вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð´ÑÑгиÑ
команд (ÑÑловиÑ, ÑиклÑ, подпÑогÑаммÑ), (пеÑе-)опÑеделÑÑÑ Ð°ÑгÑменÑÑ ÑкÑипÑа и пÑ.
+
+ at cindex chdir
+ at anchor{chdir}
+ at deffn {Ðоманда MGL} chdir 'path'
+ÐеÑеÑ
Ð¾Ð´Ð¸Ñ Ð² Ð¿Ð°Ð¿ÐºÑ @var{path}.
+ at end deffn
+
+ at cindex define
+ at anchor{define}
+ at deffn {Ðоманда MGL} define $N smth
+ÐÐ°Ð´Ð°ÐµÑ @var{N}-Ñй аÑгÑÐ¼ÐµÐ½Ñ ÑкÑипÑа ÑавнÑм @var{smth}. ÐÑмеÑÑ, ÑÑо @var{smth} иÑполÑзÑеÑÑÑ ÐºÐ°Ðº еÑÑÑ (Ñ Ñимволами @samp{'} еÑли пÑиÑÑÑÑÑвÑÑÑ). ÐÑполнÑеÑÑÑ ÑолÑко подÑÑановка дÑÑгиÑ
макÑоопÑеделений $0...$9, $a...$z. ÐдеÑÑ @var{N} ÑÑо ÑиÑÑа (0...9) или бÑква (a...z).
+ at end deffn
+ at deffn {Ðоманда MGL} define name smth
+ÐпÑеделÑÐµÑ ÐºÐ¾Ð½ÑÑанÑÑ (ÑкалÑÑ) Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ @code{name} и ÑиÑловÑм знаÑением @code{smth}. Ðозднее она Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзована как обÑÑное ÑиÑло.
+ at end deffn
+ at cindex defchr
+ at anchor{defchr}
+ at deffn {Ðоманда MGL} defchr $N smth
+ÐÐ°Ð´Ð°ÐµÑ @var{N}-Ñй аÑгÑÐ¼ÐµÐ½Ñ ÑкÑипÑа ÑавнÑм ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ñ UTF кодом @var{smth}. ÐдеÑÑ @var{N} ÑÑо ÑиÑÑа (0...9) или бÑква (a...z).
+ at end deffn
+ at cindex defnum
+ at anchor{defnum}
+ at deffn {Ðоманда MGL} defnum $N smth
+ÐÐ°Ð´Ð°ÐµÑ @var{N}-Ñй аÑгÑÐ¼ÐµÐ½Ñ ÑкÑипÑа ÑавнÑм ÑиÑÐ»Ð¾Ð²Ð¾Ð¼Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ @var{smth}. ÐдеÑÑ @var{N} ÑÑо ÑиÑÑа (0...9) или бÑква (a...z).
+ at end deffn
+ at cindex defpal
+ at anchor{defpal}
+ at deffn {Ðоманда MGL} defpal $N smth
+ÐÐ°Ð´Ð°ÐµÑ @var{N}-Ñй аÑгÑÐ¼ÐµÐ½Ñ ÑкÑипÑа ÑавнÑм ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¿Ð°Ð»Ð¸ÑÑÑ Ñ Ð¸Ð½Ð´ÐµÐºÑом, найденнÑм из @var{smth}. ÐдеÑÑ @var{N} ÑÑо ÑиÑÑа (0...9) или бÑква (a...z).
+ at end deffn
+
+ at cindex call
+ at anchor{call}
+ at deffn {Ðоманда MGL} call 'fname' [ARG1 ARG2 ... ARG9]
+ÐеÑеÑ
Ð¾Ð´Ð¸Ñ Ðº вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ (вÑзÑваеÑ) подпÑогÑÐ°Ð¼Ð¼Ñ @var{fname} (или внеÑнего ÑкÑипÑа, еÑли ÑÑнкÑÐ¸Ñ Ð½Ðµ бÑла найдена). ÐпÑионалÑнÑе аÑгÑменÑÑ Ð¿ÐµÑедаÑÑÑÑ Ð² подпÑогÑаммÑ. См. Ñакже @ref{func}.
+ at end deffn
+ at cindex func
+ at anchor{func}
+ at deffn {Ðоманда MGL} func 'fname' [narg=0]
+ÐпÑеделÑÐµÑ Ð¿Ð¾Ð´Ð¿ÑогÑÐ°Ð¼Ð¼Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ @var{fname} и Ð·Ð°Ð´Ð°ÐµÑ ÑиÑло ÑÑебÑемÑÑ
аÑгÑменÑов. ÐÑгÑменÑÑ Ð±ÑдÑÑ Ð¿Ð¾Ð¼ÐµÑÐµÐ½Ñ Ð² паÑамеÑÑÑ ÑкÑипÑа $1, $2, ... $9. ÐÑмеÑÑ, ÑÑо вÑполнение оÑновной пÑогÑÐ°Ð¼Ð¼Ñ Ð´Ð¾Ð»Ð¶Ð½Ð¾ бÑÑÑ Ð¾ÑÑановлено до наÑала опÑеделений подпÑогÑамм. См. Ñакже @ref{stop}, @ref{return}.
+ at end deffn
+ at cindex return
+ at anchor{return}
+ at deffn {Ðоманда MGL} return
+ÐозвÑаÑаеÑÑÑ Ð¸Ð· подпÑогÑаммÑ.
+ at end deffn
+
+
+ at cindex if
+ at anchor{if}
+ at deffn {Ðоманда MGL} if dat 'cond'
+ÐаÑÐ¸Ð½Ð°ÐµÑ Ð±Ð»Ð¾Ðº команд, вÑполнÑемÑй еÑли каждÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ @var{dat} ÑдовлеÑвоÑÑÐµÑ ÑÑÐ»Ð¾Ð²Ð¸Ñ @var{cond}.
+ at end deffn
+ at deffn {Ðоманда MGL} if @code{val}
+ÐаÑÐ¸Ð½Ð°ÐµÑ Ð±Ð»Ð¾Ðº команд, вÑполнÑемÑй еÑли @code{val} не нолÑ.
+ at end deffn
+ at cindex elseif
+ at anchor{elseif}
+ at deffn {Ðоманда MGL} elseif dat 'cond'
+ÐаÑÐ¸Ð½Ð°ÐµÑ Ð±Ð»Ð¾Ðº команд, вÑполнÑемÑй еÑли пÑедÑдÑÑий @code{if} или @code{elseif} не бÑл вÑполнен и каждÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ @var{dat} ÑдовлеÑвоÑÑÐµÑ ÑÑÐ»Ð¾Ð²Ð¸Ñ @var{cond}.
+ at end deffn
+ at deffn {Ðоманда MGL} elseif @code{val}
+ÐаÑÐ¸Ð½Ð°ÐµÑ Ð±Ð»Ð¾Ðº команд, вÑполнÑемÑй еÑли пÑедÑдÑÑий @code{if} или @code{elseif} не бÑл вÑполнен и @code{val} не нолÑ.
+ at end deffn
+ at cindex else
+ at anchor{else}
+ at deffn {Ðоманда MGL} else
+ÐаÑÐ¸Ð½Ð°ÐµÑ Ð±Ð»Ð¾Ðº команд, вÑполнÑемÑй еÑли пÑедÑдÑÑий @code{if} или @code{elseif} не бÑл вÑполнен.
+ at end deffn
+ at cindex endif
+ at anchor{endif}
+ at deffn {Ðоманда MGL} endif
+ÐаканÑÐ¸Ð²Ð°ÐµÑ Ð¾Ð¿Ñеделение блока @code{if/elseif/else}.
+ at end deffn
+
+ at cindex for
+ at anchor{for}
+ at deffn {Ðоманда MGL} for $N @code{v1 v2 [dv=1]}
+ÐаÑÐ¸Ð½Ð°ÐµÑ Ð±Ð»Ð¾Ðº команд, вÑполнÑемÑй в Ñикле Ñ $@var{N}-Ñм аÑгÑменÑом изменÑÑÑимÑÑ Ð¾Ñ @var{v1} до @var{v2} Ñ Ñагом @var{dv}. ÐдеÑÑ @var{N} ÑÑо ÑиÑÑа (0...9) или бÑква (a...z).
+ at end deffn
+ at deffn {Ðоманда MGL} for $N dat
+ÐаÑÐ¸Ð½Ð°ÐµÑ Ð±Ð»Ð¾Ðº команд, вÑполнÑемÑй в Ñикле Ñ $@var{N}-Ñм аÑгÑменÑом пÑобегаÑÑим знаÑÐµÐ½Ð¸Ñ Ð¼Ð°ÑÑива @var{dat}. ÐдеÑÑ @var{N} ÑÑо ÑиÑÑа (0...9) или бÑква (a...z).
+ at end deffn
+ at cindex next
+ at anchor{next}
+ at deffn {Ðоманда MGL} next
+ÐаканÑÐ¸Ð²Ð°ÐµÑ Ð±Ð»Ð¾Ðº Ñикла @code{for}.
+ at end deffn
+
+ at cindex once
+ at anchor{once}
+ at deffn {Ðоманда MGL} once @code{val}
+ÐпÑеделÑÐµÑ ÐºÐ¾Ð´ (Ð¼ÐµÐ¶Ð´Ñ @code{once on} и @code{once off}) коÑоÑÑй бÑÐ´ÐµÑ Ð²Ñполнен ÑолÑко один Ñаз. Ðолезно Ð´Ð»Ñ ÑабоÑÑ Ñ Ð±Ð¾Ð»ÑÑими даннÑми в пÑогÑаммаÑ
Ñипа UDAV.
+ at end deffn
+ at cindex stop
+ at anchor{stop}
+ at deffn {Ðоманда MGL} stop
+ÐÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð²Ñполнение ÑкÑипÑа.
+ at end deffn
+
+ at c ------------------------------------------------------------------
+ at node Command options @MGL{}, Suffixes, Program flow @MGL{}, MGL interface
+ at section ÐпÑии команд @MGL{}
+
+ÐпÑии команд позволÑÑÑ Ð»ÐµÐ³ÐºÐ¾ наÑÑÑоиÑÑ Ð²Ð¸Ð´ оÑделÑного гÑаÑика не менÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑнÑÑ
наÑÑÑоек Ð´Ð»Ñ Ð²Ñе ÑиÑÑнка. ÐпÑии ÑказÑваÑÑÑÑ Ð¿Ð¾Ñле командÑ. ÐÐ°Ð¶Ð´Ð°Ñ Ð¾Ð¿ÑÐ¸Ñ Ð¾ÑделÑеÑÑÑ Ð¾Ñ Ð¿ÑедÑдÑÑей Ñимволом @samp{;}. ÐпÑии ÑабоÑаÑÑ Ñак, ÑÑо запоминаÑÑ ÑекÑÑие наÑÑÑойки ÑиÑÑнка, пÑименÑÑÑ ÑобÑÑвеннÑе наÑÑÑойки, вÑполнÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¸ возвÑаÑаÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑнÑе наÑÑÑойки обÑаÑно. ÐоÑÑÐ¾Ð¼Ñ Ð¸ÑполÑзование опÑий Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ обÑабоÑки даннÑÑ
или наÑÑÑойки гÑаÑика беÑполезно.
+
+Ðаиболее ÑаÑÑо иÑполÑзÑемÑе опÑии -- @code{xrange, yrange, zrange}, ÑÑÑанавливаÑÑие гÑаниÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¾Ñей кооÑÐ´Ð¸Ð½Ð°Ñ (и Ñем ÑамÑм авÑомаÑиÑеÑкиÑ
маÑÑивов). ÐапÑимеÑ, команда @code{plot y; xrange 0.1 0.9} поÑÑÑÐ¾Ð¸Ñ ÐºÑивÑÑ Ñ x-кооÑдинаÑой Ñавно ÑаÑпÑеделенной в инÑеÑвале 0.1 ... 0.9, а не Ð²Ð´Ð¾Ð»Ñ ÑекÑÑей оÑи x.
+
+ÐолнÑй ÑпиÑок опÑий:
+ at cindex alpha
+ at cindex alphadef
+ at deffn {ÐпÑÐ¸Ñ MGL} alpha @code{val}
+ at deffnx {ÐпÑÐ¸Ñ MGL} alphadef @code{val}
+ÐÐ°Ð´Ð°ÐµÑ Ð²ÐµÐ»Ð¸ÑÐ¸Ð½Ñ Ð¿ÑозÑаÑноÑÑи повеÑÑ
ноÑÑи. ÐнаÑение должно бÑÑÑ Ð² диапазоне [0, 1]. См. Ñакже @ref{alphadef}
+ at end deffn
+ at cindex ambient
+ at deffn {ÐпÑÐ¸Ñ MGL} ambient @code{val}
+ÐÐ°Ð´Ð°ÐµÑ ÑÑкоÑÑÑ Ñонового оÑвеÑениÑ. ÐнаÑение должно бÑÑÑ Ð² диапазоне [0, 1]. См. Ñакже @ref{ambient}
+ at end deffn
+ at cindex crange
+ at deffn {ÐпÑÐ¸Ñ MGL} crange @code{val1 val2}
+ÐÐ°Ð´Ð°ÐµÑ Ð³ÑаниÑÑ ÑвеÑовой ÑкалÑ. См. Ñакже @ref{crange}
+ at end deffn
+ at cindex xrange
+ at deffn {ÐпÑÐ¸Ñ MGL} xrange @code{val1 val2}
+ÐÐ°Ð´Ð°ÐµÑ Ð³ÑаниÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¾ÑдинаÑÑ x. См. Ñакже @ref{xrange}
+ at end deffn
+ at cindex yrange
+ at deffn {ÐпÑÐ¸Ñ MGL} yrange @code{val1 val2}
+ÐÐ°Ð´Ð°ÐµÑ Ð³ÑаниÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¾ÑдинаÑÑ y. См. Ñакже @ref{yrange}
+ at end deffn
+ at cindex zrange
+ at deffn {ÐпÑÐ¸Ñ MGL} zrange @code{val1 val2}
+ÐÐ°Ð´Ð°ÐµÑ Ð³ÑаниÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¾ÑдинаÑÑ z. См. Ñакже @ref{zrange}
+ at end deffn
+ at cindex cut
+ at deffn {ÐпÑÐ¸Ñ MGL} cut @code{val}
+ÐÐ°Ð´Ð°ÐµÑ Ð¾Ð±Ñезание ÑоÑек за пÑеделами оÑей кооÑдинаÑ. См. Ñакже @ref{cut}
+ at end deffn
+ at cindex fontsize
+ at deffn {ÐпÑÐ¸Ñ MGL} fontsize @code{val}
+ÐÐ°Ð´Ð°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ ÑекÑÑа. См. Ñакже @ref{font}
+ at end deffn
+ at cindex marksize
+ at deffn {ÐпÑÐ¸Ñ MGL} marksize @code{val}
+ÐÐ°Ð´Ð°ÐµÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¼Ð°ÑкеÑов. См. Ñакже @ref{marksize}
+ at end deffn
+ at cindex meshnum
+ at deffn {ÐпÑÐ¸Ñ MGL} meshnum @code{val}
+ÐÐ°Ð´Ð°ÐµÑ Ð¾ÑиенÑиÑовоÑное ÑиÑло линий, ÑÑÑелок, ÑÑеек и пÑ. См. Ñакже @ref{meshnum}
+ at end deffn
+ at cindex legend
+ at deffn {ÐпÑÐ¸Ñ MGL} legend 'txt'
+ÐобавлÑÐµÑ ÑÑÑÐ¾ÐºÑ 'txt' во внÑÑÑенний маÑÑив запиÑей легендÑ. СÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ и маÑкеÑа аÑгÑменÑа поÑледней вÑзванной ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¿Ð¾ÑÑÑÐ¾ÐµÐ½Ð¸Ñ @ref{1D plotting @MGL{}}. См. Ñакже @ref{legend}
+ at end deffn
+
+ at c ------------------------------------------------------------------
+ at node Suffixes, Utilities, Command options @MGL{}, MGL interface
+ at section СÑÑÑикÑÑ Ð¿ÐµÑеменнÑÑ
+
+СÑÑÑикÑÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÑÑ Ð±ÑÑÑÑо полÑÑиÑÑ ÑиÑловÑÑ Ñ
аÑакÑеÑиÑÑÐ¸ÐºÑ (ÑазмеÑ, макÑималÑное или минималÑное знаÑение, ÑÑÐ¼Ð¼Ñ ÑлеменÑов и Ñ.д.) маÑÑива даннÑÑ
и иÑполÑзоваÑÑ ÐµÐµ как ÑиÑло (ÑкалÑÑ) в аÑгÑменÑаÑ
. СÑÑÑикÑÑ Ð½Ð°ÑинаÑÑÑÑ Ñ ÑоÑки @samp{.} ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле (без пÑобелов) имени пеÑеменной и вÑеменного маÑÑива. ÐапÑимеÑ, @code{a.nx} даÑÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¼Ð°ÑÑива @var{a} по оÑи Ñ
, @code{b(1).max} даÑÑ Ð¼Ð°ÐºÑималÑное знаÑение вÑоÑой ÑÑÑоки маÑÑива @var{b}, @code{(c(:,0)^2).sum} даÑÑ ÑÑÐ¼Ð¼Ñ ÐºÐ²Ð°Ð´ÑаÑов ÑлеменÑов пеÑвой колонки маÑÑива @var{c} и Ñ.д.
+
+ÐолнÑй ÑпиÑок ÑÑÑÑикÑов:
+ at table @strong
+ at item nx, ny, nz
+Ð Ð°Ð·Ð¼ÐµÑ Ð¼Ð°ÑÑива в напÑавлении x, y, z ÑооÑвеÑÑÑвенно.
+ at item max
+ÐакÑималÑное знаÑение маÑÑива.
+ at item min
+ÐинималÑное знаÑение маÑÑива.
+ at item sum
+СÑмма ÑлеменÑов маÑÑива.
+ at item a
+ÐеÑвÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¼Ð°ÑÑива (ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ñ Ð¸Ð½Ð´ÐµÐºÑами 0,0,0).
+ at item fst
+ÐеÑвое не нÑлевое знаÑение маÑÑива.
+ at item lst
+ÐоÑледнее не нÑлевое знаÑение маÑÑива.
+ at item mx, my, mz
+Ðоложение макÑимÑма в напÑавлении x, y, z ÑооÑвеÑÑÑвенно.
+ at item ax, ay, az, aa
+Ðоложение ÑенÑÑа маÑÑ Ð² напÑавлении x, y, z ÑооÑвеÑÑÑвенно или ÑÑеднее знаÑение маÑÑива.
+ at item wx, wy, wz, wa
+ШиÑина в напÑавлении x, y, z ÑооÑвеÑÑÑвенно или диÑпеÑÑÐ¸Ñ ÑлеменÑов маÑÑива.
+ at item sx, sy, sz, sa
+ÐÑиммеÑÑÐ¸Ñ Ð² напÑавлении x, y, z ÑооÑвеÑÑÑвенно или ÑлеменÑов маÑÑива.
+ at item kx, ky, kz, ka
+ÐкÑÑеÑÑ Ð² напÑавлении x, y, z ÑооÑвеÑÑÑвенно или ÑлеменÑов маÑÑива.
+ at end table
+
+ at c ------------------------------------------------------------------
+ at node Utilities, , Suffixes, MGL interface
+ at section УÑилиÑÑ Ð´Ð»Ñ MGL
+
+MathGL ÑодеÑÐ¶Ð¸Ñ Ð½ÐµÑколÑко пÑогÑамм Ð´Ð»Ñ ÑабоÑÑ Ñо ÑкÑипÑами MGL. ÐÑÑÑ ÑÑилиÑа Ð´Ð»Ñ ÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð² ÑаÑÑÑовое (@code{mgl2png}, @code{mgl2gif}) или векÑоÑное (@code{mgl2eps}, @code{mgl2svg}) изобÑажениÑ. ÐÑогÑамма @code{mglview} показÑÐ²Ð°ÐµÑ ÑезÑлÑÑÐ°Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑкÑипÑа MGL и позволÑÐµÑ Ð²ÑаÑаÑÑ Ð¸ наÑÑÑаиваÑÑ Ð³ÑаÑик. Также можно ÑÑанÑлиÑоваÑÑ MGL ÑкÑÐ¸Ð¿Ñ Ð² C++ Ñайл Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿ÑогÑÐ°Ð¼Ð¼Ñ @code{mgl2cpp}.
+
+ÐÑе ÑÑи пÑогÑÐ°Ð¼Ð¼Ñ Ð¸Ð¼ÐµÑÑ ÑÑ
ожий Ð½Ð°Ð±Ð¾Ñ Ð°ÑгÑменÑов. ÐеÑвÑм Ð¸Ð´ÐµÑ Ð¸Ð¼Ñ ÑкÑипÑа, а вÑоÑÑм Ð¸Ð´ÐµÑ Ð¸Ð¼Ñ Ð²ÑÑ
одного ÑÐ°Ð¹Ð»Ñ (Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð¿ÑÑено), поÑледние аÑгÑменÑÑ -- опÑии ÑкÑипÑа и пÑогÑаммÑ. РопÑиÑм оÑноÑÑÑÑÑ Ð¿Ð°ÑамеÑÑÑ ÑкÑипÑа (ÑÑо @code{$0, $1, ... $9}) и наÑÑÑойки локали. ÐаÑамеÑÑÑ ÑкÑипÑа имеÑÑ ÑоÑÐ¼Ð°Ñ @samp{-Nval}, где N=0,1...9 -- Ð½Ð¾Ð¼ÐµÑ Ð¿Ð°ÑамеÑÑа, val -- его знаÑние. ÐапÑимеÑ, опÑÐ¸Ñ @samp{-1test} Ð·Ð°Ð¼ÐµÐ½Ð¸Ñ @code{$1} на @samp{test} в ÑкÑипÑе. ÐпÑÐ¸Ñ -Lval ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð»Ð¾ÐºÐ°Ð»Ñ Ð² знаÑение val. ÐапÑимеÑ, @samp{-Lutf8} бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ UTF-8 в ÑкÑипÑе.
+
+Также можно ÑоздаваÑÑ Ð°Ð½Ð¸Ð¼Ð¸ÑованнÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ GIF или Ð½Ð°Ð±Ð¾Ñ JPEG Ñайлов Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸ @samp{frameNNNN.jpg} (где @samp{NNNN} -- Ð½Ð¾Ð¼ÐµÑ ÐºÐ°Ð´Ñа). ÐÐ»Ñ ÑÑого в ÑкÑипÑе надо ÑказаÑÑ Ð¿Ð°ÑамеÑÑÑ Ð°Ð½Ð¸Ð¼Ð°Ñии Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ кадÑа (ÑÑÑоками Ñ ÐºÐ¾Ð¼ÐµÐ½ÑаÑиÑми @code{##a val} или опÑиÑми @samp{-Aval}) или в Ñикле (ÑÑÑокой Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑием @code{##Ñ v1 v2 [dv]} или опÑÐ¸Ñ @samp{-Cn1:n2}), коÑоÑÑе бÑдÑÑ Ð¿Ð¾Ð´ÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð² каÑеÑÑве паÑамеÑÑа @code{$0} пÑи поÑледоваÑелÑном вÑзове ÑкÑипÑа. ÐÐ»Ñ ÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÐºÐ°Ð´Ñов в JPEG пÑоÑÑо добавÑÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ @code{write ''} в конÑе ÑкÑипÑа.
+
+
diff --git a/texinfo/mgl_en.texi b/texinfo/mgl_en.texi
index 5a7d32a..66c5f81 100644
--- a/texinfo/mgl_en.texi
+++ b/texinfo/mgl_en.texi
@@ -1,1639 +1,104 @@
- at c ------------------------------------------------------------------
- at node MGL interface, Samples, Other classes, Top
- at chapter MGL interface
+\input texinfo
+ at setfilename mgl_en.info
+ at set VERSION 1.11
+ at settitle MGL script language for version @value{VERSION}
+ at syncodeindex pg cp
+ at comment %**end of header
+
+ at copying
+This manual is for MathGL (version @value{VERSION}), a collection of classes and routines for scientific plotting. Please report any errors in this manual to @email{mathgl.abalakin@@gmail.org}.
+
+Copyright @copyright{} 2008 Alexey Balakin.
+
+ at quotation
+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.''
+ at end quotation
+ at 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 titlepage
+ at title MGL script language
+ at subtitle for version @value{VERSION}
+ at author A.A. Balakin (@uref{http://mathgl.sourceforge.net/})
+ at page
+ at vskip 0pt plus 1filll
+ at insertcopying
+ at end titlepage
+
+ at contents
-MathGL library supports (from version 1.3) the simplest scripts for data handling and plotting. These scripts can be used independently (with the help of mgl2png, mgl2eps, mgl2svg programs and others) or in the frame of the library using.
-
-MGL script language is rather simple. Each string is a command. First word of string is the name of command. Other words are command arguments. Command may have up to 1000 arguments (at least for now). Words are separated from each other by space or tabulation symbol. The upper or lower case of words is sufficient, i.e. variables a and A are different variables. Symbol @samp{#} starts the comment (all characters after # will be ignored). The exception is situation when # is a part of some string. Also options can be specified at the end of string (after symbol @samp{;}, @pxref{Command options (MGL)}). Symbol @samp{:} starts new command (like new line character) if it is not placed inside a string or inside brackets.
-
-If string contain references to external parameters (substrings @samp{$0}, @samp{$1} ... @samp{$9}) then before execution the values of parameter will be substituted instead of reference. It allows to use the same MGL script for different parameters (filenames, paths, condition and so on).
-
-Argument can be a string, a variable name or a number.
- at itemize @bullet
- at item
-The string is any symbols between ordinary marks @samp{'}.
-
- at item
-Variable name is arbitrary combination of symbols (except spaces and @samp{'}) started from a letter and with length less than 64. It is possible to use sub-arrays (like in @code{subdata} command) as command argument. For example, @code{a(1)} or @code{a(1,:)} or @code{a(1,:,:)} is second row, @code{a(:,2)} or @code{a(:,2,:)} is third column, @code{a(:,:,0)} is first slice and so on. Also you can extract a part of array from m-th to n-th element by code @code{a(m:n,:,:)} or just @code{a(m:n)}.
-
-If names for data columns was specified (by set_id command or in the file at string started with @code{##}) then it is possible to use any column combinations defined by formulas, like @code{a('n*w^2/exp(t)')}.
-
-Also, any expression (without spaces) of existed variables produce temporary variable. For example, @samp{sqrt(dat(:,5)+1)} will produce temporary variable with data values equal to @code{tmp[i,j] = sqrt(dat[i,5,j]+1)}. Such variables can not be used as 1st argument for commands which create (return) the data (like @samp{new}, @samp{read}, @samp{hist} and so on).
-
-Finally, you can put code for making new data inside @{@}. For example, @samp{@{sum dat 'x'@}} produce temporary variable which contain result of summation of @var{dat} along direction 'x'. This is the same array @var{tmp} as produced by command @samp{sum tmp dat 'x'}. You can use nested constructions, like @samp{@{sum @{max dat 'z'@} 'x'@}}.
-
- at item
-Special names @code{nan=#QNAN, pi=3.1415926..., on=1, off=0, :=-1} are treated as number if they were not redefined by user. Variables with suffixes are treated as numbers (@pxref{Suffixes}). Names defined by @code{define} command are treated as number. Also results of formulas with sizes 1x1x1 are treated as number (for example, @samp{pi/dat.nx}).
- at end itemize
-Before the first using all variables must be defined with the help of commands, like, @code{new, var, list, copy} or @code{read}.
-
-All MGL commands can be divided on several groups. I will use the following notation for a command description: command names are bold, strings are denoted by commas, variable names are italic, numbers are typewriter. Optional arguments are placed in square brackets and default values for them are shown. Detailed description of color, line styles, color schemes, font types, TeX-like symbols and formulas can be found in corresponding section.
-
- at menu
-* Graphics setup (MGL)::
-* Axis settings (MGL)::
-* Transformation matrix (MGL)::
-* Export to file (MGL)::
-* Primitives drawing (MGL)::
-* Text printing (MGL)::
-* Axis and Colorbar (MGL)::
-* Legend (MGL)::
-* 1D plotting (MGL)::
-* 2D plotting (MGL)::
-* 3D plotting (MGL)::
-* Dual plotting (MGL)::
-* Vector fields (MGL)::
-* Other plotting (MGL)::
-* Nonlinear fitting (MGL)::
-* Data create (MGL)::
-* Data filling (MGL)::
-* Rearrange data (MGL)::
-* File I/O (MGL)::
-* Make another data (MGL)::
-* Commands on direction (MGL)::
-* Operators (MGL)::
-* Program flow (MGL)::
-* Command options (MGL)::
-* Suffixes::
-* Utilities::
- at end menu
-
-
- at c ##################################################################
- at node Graphics setup (MGL), Axis settings (MGL), , MGL interface
- at section Graphics setup (MGL)
-
-Coomands in this group influences on overall graphics appearance. So all of them should be placed @emph{before} any actual plotting commands.
-
- at menu
-* Transparency (MGL)::
-* Lighting (MGL)::
-* Fog (MGL)::
-* Default sizes (MGL)::
-* Zooming (MGL)::
-* Cutting (MGL)::
-* Other settings (MGL)::
- at end menu
-
- at c ==================================================================
- at node Transparency (MGL), Lighting (MGL), , Graphics setup (MGL)
- at subsection Transparency (MGL)
- at cindex alpha
- at cindex alphadef
- at cindex transparent
- at cindex transptype
-
-There are several commands for setup transparency. The general command is @code{alpha} which switch on/off the transparency for overall plot. It influence only for graphics which created after @code{alpha} call (with one exeption, mglGraphGL). Command @code{alphadef} specify the default value of alpha-channel. You may switch off transparency of selected plot by command @code{transparent}. Finally, command @code{transptype} set the kind of transparency. @sref{Transparent surface sample}
-
- at deffn {MGL command} alpha @code{[val=on]}
-Sets the transparency on/off. It is recommended to call this command before any plotting command. Default value is @code{off}. Use @code{transparent off} in particular plot to disable its transparency.
- at end deffn
- at deffn {MGL command} alphadef @code{val}
-Default value of alpha channel (transparency) for all plotting commands. Initial value is 0.5.
- at end deffn
- at deffn {MGL command} transparent @code{val}
-Temporary switches transparency on/off for the plot.
- at end deffn
- at deffn {MGL command} transptype @code{val}
-This command set the transparency type. Normal transparency (@samp{0}) -- below things is less visible than upper ones. It does not look well in OpenGL mode (mglGraphGL) for several surfaces. Glass-like transparency (@samp{1}) -- below and upper things are commutable and just decrease intensity of light by RGB channel. Lamp-like transparency (@samp{2}) -- below and upper things are commutable and are the source of some additional light. I recommend to set @code{alphadef 0.3} or less for lamp-like transparency.
- at end deffn
-
- at c ==================================================================
- at node Lighting (MGL), Fog (MGL), Transparency (MGL), Graphics setup (MGL)
- at subsection Lighting (MGL)
- at cindex light
- at cindex ambient
-
-There are several commands for setup lighting. The general command is @code{light} which switch on/off the lighting for overall plot. It influence only for graphics which created after @code{light} call (with one exeption, mglGraphGL). Generally MathGL support up to 10 independent light sources. But in OpenGL mode only 8 of light sources is used due to OpenGL limitations. The position, color, brightness of each light source can be set separately. By default only one light source is active. It is source number @code{0} with white color, located at top of the plot.
-
- at deffn {MGL command} light @code{[val=on]}
-Sets the using of light on/off for overall plot. It is recommended to call this command before any plotting command. Default value is lightning off.
- at end deffn
- at deffn {MGL command} light @code{num val}
-Switch on/off @var{num}-th light source separately.
- at end deffn
-
- at deffn {MGL command} light @code{num xpos ypos zpos} ['col'='w' @code{br=0.5}]
-The command adds a light source with identification @var{num} at position @{@var{xpos}, @var{ypos}, @var{zpos}@}. The color of light is @var{col} (white by default). The brightness of light is @var{br} which must be in range [0,1].
- at end deffn
-
- at deffn {MGL command} ambient @code{val}
-Sets the brightness of ambient light. The value should be in range [0,1]. Initial value is 0.5.
- at end deffn
-
- at c ==================================================================
- at node Fog (MGL), Default sizes (MGL), Lighting (MGL), Graphics setup (MGL)
- at subsection Fog (MGL)
- at cindex fog
-
- at deffn {MGL command} fog @code{val [dz=0.25]}
-Command imitate a fog in the plot. Fog start from relative distance @var{dz} from view point and its density growths exponentially in depth. So that the fog influence is determined by law ~ 1-exp(- at emph{val*z}). Here @emph{z} is normalized to 1 depth of the plot. If value @var{val}=@code{0} then the fog is absent. @sref{Surface in fog sample}
- at end deffn
-
- at c ==================================================================
- at node Default sizes (MGL), Zooming (MGL), Fog (MGL), Graphics setup (MGL)
- at subsection Default sizes (MGL)
- at cindex marksize
- at cindex arrowsize
- at cindex linewidth
- at cindex ticklen
- at cindex tickstl
-
-These commands control the default (initial) values for most graphics parameters including sizes of markers, arrows, linewidth and so on. As any other settings these ones will influence only on plots created after the settings change.
-
- at deffn {MGL command} barwidth @code{val}
-Sets relative width of rectangles in @code{bars, barh, boxplot}. Default value is @code{0.7}.
- at end deffn
-
- at deffn {MGL command} marksize @code{val}
-The size of marks. Default value is @code{1}.
- at end deffn
-
- at deffn {MGL command} arrowsize @code{val}
-The size of arrows for lines and curves. Default value is @code{1}.
- at end deffn
-
- at deffn {MGL command} linewidth @code{val}
-The variable define the base width for all lines. The value <1 is ignored. Increase of this variables is actual for large bitmap pictures. Default value is @code{1}.
- at end deffn
-
- at deffn {MGL command} ticklen @code{val} [@code{stt=1}]
-The relative length of axis ticks. Default value is @code{0.1}. Parameter @var{stt}>0 set relative length of subticks which is in @code{sqrt(1+stt)} times smaller.
- at end deffn
-
- at deffn {MGL command} tickstl 'stl' ['sub'='']
-The line style of axis ticks (@var{stl}) and subticks (@var{sub}). If @var{stl}='' then default style is used (@samp{k} or @samp{w} depending on transparency type). If @var{sub}='' then ticks style is used (i.e. @var{stl}).
- at end deffn
-
- at c ==================================================================
- at node Zooming (MGL), Cutting (MGL), Default sizes (MGL), Graphics setup (MGL)
- at subsection Zooming (MGL)
- at cindex plotfactor
- at cindex zoom
-
-These commands control the overall zooming of the picture or the sub-picture. Normally you can use these variables and commands for removing ``white'' spaces around a plot.
-
- at deffn {MGL command} plotfactor @code{val}
-The factor of plot size. It is not recommended to set it lower then 1.6. This is some analogue of command @code{zoom} but applied not to overall image but for each @code{inplot}. Use negative value to enable automatic @code{plotfactor} selection.
- at end deffn
-
- at deffn {MGL command} zoom @code{x1 y1 x2 y2}
-The command changes the scale of graphics that correspond to zoom in/out of the picture. After command call the current plot will be cleared and further the picture will contain plotting from its part [x1,x2]*[y1,y2]. Here picture coordinates @var{x1}, @var{x2}, @var{y1}, @var{y2} changes from 0 to 1. Use @code{zoom 0 0 1 1} to return default view.
- at end deffn
-
- at c ==================================================================
- at node Cutting (MGL), Other settings (MGL), Zooming (MGL), Graphics setup (MGL)
- at subsection Cutting (MGL)
- at cindex cut
-
-These commands set the condition when the points are excluded (cutted) from the drawing.
-
- at deffn {MGL command} cut @code{val}
-Determines how points outside bounding box are drawn. If it is @code{true} then points are excluded from plot (it is default) otherwise the points are projected to edges of bounding box.
- at end deffn
-
- at deffn {MGL command} cut @code{x1 y1 z1 x2 y2 z2}
-Lower and upper edge of the box in which never points are drawn. If both edges are the same (the variables are equal) then the cutting box is empty. @sref{CutMinMax sample}
- at end deffn
-
- at deffn {MGL command} cut 'cond'
-Command set the cutting off condition by formula @var{cond}. This condition determine will point be plotted or not. If value of formula is nonzero then point is omitted, otherwise it plotted. Set argument as @code{''} to disable cutting off condition. @sref{CutOff sample}
- at end deffn
-
- at c ==================================================================
- at node Other settings (MGL), , Cutting (MGL), Graphics setup (MGL)
- at subsection Other settings (MGL)
- at cindex font
- at cindex rotatetext
- at cindex palette
- at cindex meshnum
- at cindex axialdir
-
- at deffn {MGL command} font 'fnt' [@code{val=6}]
-Font style for text and labels (see text). Initial style is 'fnt'='rC' give Roman font with centering. Parameter @code{val} sets the size of font for tick and axis labels. Default font size of axis labels is 1.4 times large than for tick labels. For more detail, @pxref{Font style}.
- at end deffn
-
- at deffn {MGL command} rotatetext @code{val}
-Set to use or not text rotation along axis. Initial value is @code{on}.
- at end deffn
-
- at deffn {MGL command} palette 'colors'
-Set the palette as selected colors. Default value is @code{'Hbgrcmyhlnqeup'}. The palette is used mostly in 1D plots for curves which styles are not specified.
- at end deffn
-
- at deffn {MGL command} meshnum @code{num}
-Sets approximate number of lines in @code{mesh, fall, grid} and also the number of hachures in @code{vect, vectc, dew} and the number of cells in @code{cloud}. By default (=0) it draws all lines/hachures/cells.
- at end deffn
-
- at deffn {MGL command} axialdir 'dir'
-Set direction around which curve rotated in @code{axial, torus}. Default value is 'z'.
- at end deffn
-
- at c ==================================================================
- at node Axis settings (MGL), Transformation matrix (MGL), Graphics setup (MGL), MGL interface
- at section Axis settings (MGL)
- at cindex axis
- at cindex caxis
- at cindex xrange
- at cindex yrange
- at cindex zrange
- at cindex crange
- at cindex xtick
- at cindex ytick
- at cindex ztick
- at cindex ctick
- at cindex origin
- at cindex adjust
-
-These large set of commands control how the axis and ticks will be drawn. Note that there is 3-step transformation of data coordinates are performed. Firstly, coordinates are projected and cutting is applied (@pxref{Cutting (MGL)}), after it transformation formulas are applied, and finally the data was normalized in bounding box.
-
- at deffn {MGL command} axis @code{x1 y1 x2 y2}
- at deffnx {MGL command} axis @code{x1 y1 z1 x2 y2 z2}
- at deffnx {MGL command} ranges @code{x1 x2 y1 y2 [z1=0 z2=0]}
-Sets the ranges of coordinates changing. Also it sets the range for coloring (analogous to @code{caxis z1 z2}). Initial ranges are [-1, 1].
- at end deffn
-
- at deffn {MGL command} axis 'fx' 'fy' ['fz'='' 'fa'='']
-Sets the transformation formulas for curvilinear coordinates. Each string should contain mathematical expression for real coordinate depending on internal coordinates 'x', 'y', 'z' and 'a' or 'c' for colorbar. For example, the cylindrical coordinates are introduced as @code{axis 'x*cos(y)' 'x*sin(y)' 'z'}. For removing of formulas the corresponding parameter should be @code{''}. The using of transformation formulas will slightly slowing the program, i.e. @code{axis '' '' ''} is faster than @code{axis '1*x' '1*y' '1*z'}. Initially all formulas are absent (Cartesian coordinates are used). For more details about functions and formulas, @pxref{mglFormula class}.
- at end deffn
-
- at deffn {MGL command} axis @code{how}
-Sets one of the predefined transformation formulas for curvilinear coordinate. Paramater @var{how} define the coordinates: @code{0} -- Cartesian coordinates (no transformation); @code{1} -- Polar coordiantes @math{x_n=x*cos(y),y_n=x*sin(y), z_n=z}; @code{2} -- Spherical coordinates @math{x_n=x*sin(y)*cos(z), y_n=x*sin(y)*sin(z), z_n=x*cos(y)}; @code{3} -- Parabolic coordinates @math{x_n=x*y, y_n=(x*x-y*y)/2, z_n=z}; @code{4} -- Paraboloidal coordinates @math{x_n=(x*x-y*y)*cos(z)/2, y_n=(x*x-y*y)*sin(z)/2, z_n=x*y}; @code{5} -- Oblate coordinates @math{x_n=cosh(x)*cos(y)*cos(z), y_n=cosh(x)*cos(y)*sin(z), z_n=sinh(x)*sin(y)}; @code{6} -- Prolate coordinates @math{x_n=sinh(x)*sin(y)*cos(z), y_n=sinh(x)*sin(y)*sin(z), z_n=cosh(x)*cos(y)}; @code{7} -- Elliptic coordinates @math{x_n=cosh(x)*cos(y), y_n=sinh(x)*sin(y), z_n=z}; @code{8} -- Toroidal coordinates @math{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))}; @code{9} -- Bispherical coordinates @math{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))}; @code{10} -- Bipolar coordinates @math{x_n=sinh(x)/(cosh(x)-cos(y)), y_n=sin(y)/(cosh(x)-cos(y)), z_n=z}.
- at end deffn
-
- at deffn {MGL command} caxis @code{z1 z2}
-Sets the range for surface coloring. Initial range is [-1, 1].
- at end deffn
-
- at deffn {MGL command} origin @code{x0 y0 [z0=nan]}
-Center of axis cross section. If one of values is @code{nan} then MathGL library try to select optimal axis position.
- at end deffn
-
- at deffn {MGL command} ternary @code{val}
-The command sets to draws Ternary plot. This special plot is for 3 dependent coordinates (components) @var{a}, @var{b}, @var{c} so that @var{a}+ at var{b}+ at var{c}=1. MathGL uses only 2 independent coordinates @var{a}=x and @var{b}=y since it is enough to plot everything. At this third coordinate z act as another parameter to produce contour lines, surfaces and so on. @sref{Ternary plot sample}
- at end deffn
-
- at deffn {MGL command} xrange dat [@code{add=off fact=0}]
- at deffnx {MGL command} yrange dat [@code{add=off fact=0}]
- at deffnx {MGL command} zrange dat [@code{add=off fact=0}]
- at deffnx {MGL command} crange dat [@code{add=off fact=0}]
-Sets the range for x-,y-,z- coordinate or coloring as minimal and maximal values of data @var{dat}. Parameter @code{add=on} shows that the new range will be joined to existed one (nut will not replace it). Parameter @var{fact} add additional range increase on value (@var{Max}- at var{Min})*@var{fact}.
- at end deffn
-
- at deffn {MGL command} xrange @code{x1 x2}
- at deffnx {MGL command} yrange @code{x1 x2}
- at deffnx {MGL command} zrange @code{x1 x2}
- at deffnx {MGL command} crange @code{x1 x2}
-Sets the range for x-,y-,z- coordinate or coloring. See also axis.
- at end deffn
-
- at deffn {MGL command} xtick @code{val [sub=0 org=nan]}
- at deffnx {MGL command} ytick @code{val [sub=0 org=nan]}
- at deffnx {MGL command} ztick @code{val [sub=0 org=nan]}
- at deffnx {MGL command} ctick @code{val}
-Sets step for x-, y-, z-axis ticks or colorbar ticks (if @var{val}>0) or it's number (if @var{val}<0) in corresponding direction. Zero value @var{val}=0 sets logarithmic ticks. Parameter @var{sub} sets the number of sub-ticks. Parameter @var{org} set the starting points for ticks. If not @code{org=nan} then the value from @code{origin} is used.
- at end deffn
-
- at deffn {MGL command} xtick 'templ'
- at deffnx {MGL command} ytick 'templ'
- at deffnx {MGL command} ztick 'templ'
- at deffnx {MGL command} ctick 'templ'
-Sets the template for x-, y-, z-axis ticks or colorbar ticks. It may contain TeX symbols also. If @var{templ}=@code{''} then default template is used (in simplest case it is @samp{%.2g}) with automatic detaching of common multiplier or common component.
- at end deffn
-
- at deffn {MGL command} xtick @code{val1} 'lbl1' [@code{val2} 'lbl2' ...]
- at deffnx {MGL command} ytick @code{val1} 'lbl1' [@code{val2} 'lbl2' ...]
- at deffnx {MGL command} ztick @code{val1} 'lbl1' [@code{val2} 'lbl2' ...]
-Sets manual positions @var{val1}, at var{val2},... and labels @var{lbl1}, at var{lbl2},... for ticks along x-, y-, z-axis. Labels may contain TeX symbols also.
- at end deffn
-
- at deffn {MGL command} adjust ['dir'='xyzc']
-Set the ticks step, number of sub-ticks and initial ticks position to be the most human readable for the axis along direction(s) @var{dir}.
- at end deffn
-
-
- at c ##################################################################
- at node Transformation matrix (MGL), Export to file (MGL), Axis settings (MGL), MGL interface
- at section Transformation matrix (MGL)
- at cindex aspect
- at cindex rotate
- at cindex subplot
- at cindex inplot
- at cindex identity
- at cindex perspective
-
-These commands control how and where further plotting will be placed. There is a curtain order of calling of these commands for the better plot view. First one should be @code{subplot} or @code{inplot} for specifying the place. After it a @code{rotate} and @code{aspect}. And finally any other plotting commands may be called. Alternatevely you can use @code{columnplot} for position plots in the column one by another without gap between plot axis (bounding boxes).
-
- at deffn {MGL command} subplot @code{nx ny m [dx=0 dy=0]}
-Puts further plotting in a @var{m}-th cell of @var{nx}*@var{ny} grid of the whole frame area. This command set off any aspects or rotations. So it should be used first for creating the subplot. From the aesthetical point of view it is not recommended to use this command with different matrices in the same frame. The position of the cell can be shifted from its default position by relative size @var{dx}, @var{dy}.
- at end deffn
-
- at deffn {MGL command} inplot @code{x1 x2 y1 y2 [rel=off]}
-Puts further plotting in some region of the whole frame surface. This command allows one to create a plot in arbitrary place of the screen. The position is defined by rectangular coordinates [@var{x1}, @var{x2}]*[@var{y1}, @var{y2}]. The coordinates @var{x1}, @var{x2}, @var{y1}, @var{y2} are normalized to interval [0, 1]. If parameter @var{rel}=@code{on} then the relative position to current @code{subplot} is used. This command set off any aspects or rotations. So it should be used first for creating subplot.
- at end deffn
-
- at deffn {MGL command} columnplot @code{num ind}
-Puts further plotting in @var{ind}-th cell of column with @var{num} cells. The position is relative to previous @code{subplot} call (or @code{inplot} with @code{rel=off}).
- at end deffn
-
- at deffn {MGL command} stickplot @code{num ind tet phi}
-Puts further plotting in @var{ind}-th cell of stick with @var{num} cells. At this, stick is rotated on angles @var{tet}, @var{phi}. The position is relative to previous @code{subplot} call (or @code{inplot} with @code{rel=off}).
- at end deffn
-
- at deffn {MGL command} rotate @code{tetz tetx [tety=0]}
-Rotates a further plotting relative to each axis (x, z, y) consecutively on angles @var{tetx}, @var{tetz}, @var{tety}.
- at end deffn
-
- at deffn {MGL command} rotate @code{tet x y z}
-Rotates a further plotting around vector @{x,y,z@} on angle @var{tet}.
- at end deffn
-
- at deffn {MGL command} aspect @code{ax ay [az=1]}
-Defines aspect ratio for the plot. The viewable axes will be related one to another as the ratio @var{ax:ay:az}. For the best effect it should be used after @code{rotate} command.
- at end deffn
-
- at deffn {MGL command} perspective @code{val}
-Add (switch on) the perspective to plot. The parameter @math{val ~ 1/z_@{eff@} \in [0,1)}. By default (@code{val=0}) the perspective is off.
- at end deffn
-
- at c ##################################################################
- at node Export to file (MGL), Primitives drawing (MGL), Transformation matrix (MGL), MGL interface
- at section Export to file (MGL)
- at cindex write
- at cindex setsize
-
- at deffn {MGL command} write 'fname' [@code{solid=off}]
-Exports current picture/frame to file 'fname' (file type is determined by extension). Solid (usually white) background will be used if @code{solid=on}. If 'fname'='' then the file @samp{frameNNNN.jpg} is used, where @samp{NNNN} is current frame id.
- at end deffn
-
- at deffn {MGL command} setsize @code{w h}
-Sets size of picture in pixels. This function call @strong{must be} placed before any plotting command because it completely remove picture content. In some program the call of this function is forbidden.
- at end deffn
-
-
- at c ##################################################################
- at node Primitives drawing (MGL), Text printing (MGL), Export to file (MGL), MGL interface
- at section Primitives drawing
- at cindex ball
- at cindex clf
- at cindex line
- at cindex curve
- at cindex facex
- at cindex facey
- at cindex facez
- at cindex cone
- at cindex drop
- at cindex sphere
-
-These commands draw some simple objects like line, point, sphere, drop, cone and so on.
-
- at deffn {MGL command} clf
-Clear the picture by removes all drawing from it. Does not change transformation matrix.
- at end deffn
-
- at deffn {MGL command} ball @code{x y} ['col'='r']
- at deffnx {MGL command} ball @code{x y z} ['col'='r']
-Draws a point (ball) at position @{@var{x}, @var{y}, @var{z}@} with color defined by string @var{col}.
- at end deffn
-
- at deffn {MGL command} line @code{x1 y1 x2 y2} ['stl'='']
- at deffnx {MGL command} line @code{x1 y1 z1 x2 y2 z2} ['stl'='']
-Draws a geodesic line (straight line in Cartesian coordinates) from point @{@var{x1}, at var{y1}, at var{z1}@} to @{@var{x2}, at var{y2}, at var{z2}@} using line style @var{stl}.
- at end deffn
-
- at deffn {MGL command} curve @code{x1 y1 dx1 dy1 x2 y2 dx2 dy2} ['stl'='']
- at deffnx {MGL command} curve @code{x1 y1 z1 dx1 dy1 dz1 x2 y2 z2 dx2 dy2 dz2} ['stl'='']
-Draws Bezier-like curve from point @{@var{x1}, at var{y1}, at var{z1}@} to @{@var{x2}, at var{y2}, at var{z2}@} using line style @var{stl}. At this tangent is co-directed with @{@var{dx1}, at var{dy1}, at var{dz1}@}, @{@var{dx2}, at var{dy2}, at var{dz2}@} and proportional to its amplitude.
- at end deffn
-
- at deffn {MGL command} facex @code{x0 y0 z0 wy wz} ['stl'='' @code{d1=0 d2=0}]
- at deffnx {MGL command} facey @code{x0 y0 z0 wx wz} ['stl'='' @code{d1=0 d2=0}]
- at deffnx {MGL command} facez @code{x0 y0 z0 wx wy} ['stl'='' @code{d1=0 d2=0}]
-Draws the solid rectangle (face) perpendicular to [x,y,z]-axis correspondingly at position @{@var{x0}, @var{y0}, @var{z0}@} with color @var{stl} and with widths @var{wx}, @var{wy}, @var{wz} along corresponding directions. At this colors can be the same for all vertexes or different if all 4 colors are specified for each vertex. Parameters @var{d1}!=0, @var{d2}!=0 set additional shift of the last vertex (i.e. to draw quadrangle).
- at end deffn
-
- at deffn {MGL command} sphere @code{x0 y0 r} ['col'='r']
- at deffnx {MGL command} sphere @code{x0 y0 z0 r} ['col'='r']
-Draw the sphere with radius @var{r} and center at point @{@var{x0}, @var{y0}, @var{z0}@} and color @var{stl}.
- at end deffn
-
- at deffn {MGL command} drop @code{x0 y0 dx dy r} ['col'='b' @code{sh=1 asp=1}]
- at deffnx {MGL command} drop @code{x0 y0 z0 dx dy dz r} ['col'='b' @code{sh=1 asp=1}]
-Draw the drop with radius @var{r} at point @{@var{x0}, at var{y0}, at var{z0}@} elongated in direction @{@var{dx}, at var{dy}, at var{dz}@} and with color @var{col}. Parameter @var{sh} set the degree of drop oblongness: @samp{0} is sphere, @samp{1} is maximally oblongness drop. Parameter @var{asp} set relative width of the drop (this is analogue of ``ellipticity'' for the sphere). @sref{Drops sample}
- at end deffn
-
- at deffn {MGL command} cone @code{x1 y1 z1 x2 y2 z2 r1} [@code{r2=-1} 'st'='' @code{edge=off}]
-Draw tube (or truncated cone if @var{edge}=@code{off}) between points @{@var{x1}, at var{y1}, at var{z1}@}, @{@var{x2}, at var{y2}, at var{z2}@} with radiuses at the edges @var{r1}, @var{r2}. If @var{r2}<0 then it is supposed that @var{r2}=@var{r1}. The cone color is defined by string @var{stl}.
- at end deffn
-
- at deffn {MGL command} rect @code{x1 y1 x2 y2} ['st'='']
- at deffnx {MGL command} rect @code{x1 y1 z1 x2 y2 z2} ['st'='']
-Draw rectangle from point @{@var{x1}, at var{y1}, at var{z1}@} to point @{@var{x2}, at var{y2}, at var{z2}@} using colors @var{stl}. If @var{stl} have 4 or more colors then it defines colors for each rectangle vertex (useful for making gradients, like @samp{wwrr}) else first color is used for whole rectangle.
- at end deffn
-
- at c ##################################################################
- at node Text printing (MGL), Axis and Colorbar (MGL), Primitives drawing (MGL), MGL interface
- at section Text printing (MGL)
- at cindex fgets
- at cindex text
- at cindex title
-
-These commands draw the text. There are commands for drawing text in arbitrary place, in arbitrary direction and along arbitrary curve. It is possible to use arbitrary font-faces and parse many TeX commands. The Unicode text is supported. So sometimes you need to specify locale. The @code{size} argument control the size of text: if positive it give the value, if negative it give the value relative to defined by @code{font} command. @xref{Font style}.
-
- at deffn {MGL command} text @code{x y} 'text' ['fnt'='' @code{size=-1.4}]
- at deffnx {MGL command} text @code{x y z} 'text' ['fnt'='' @code{size=-1.4}]
-Draws unrotated text string @var{text} at position @{@var{x}, at var{y}, at var{z}@} with specified style @var{fnt} and @var{size}. By default parameters from @code{font} command are used.
- at end deffn
-
- at deffn {MGL command} text @code{x y dx dy} 'text' [@code{size=-1.4}]
- at deffnx {MGL command} text @code{x y z dx dy dz} 'text' [@code{size=-1.4}]
-The command plots the string @var{text} at position @{@var{x}, at var{y}, at var{z}@} along direction @{@var{dx}, at var{dy}, at var{dz}@} with specified style @var{fnt} and @var{size}. By default parameters from @code{font} command are used.
- at end deffn
-
- at deffn {MGL command} title 'text' ['fnt'='' @code{size=-2}]
-Print string @var{text} as title of the picture (at the top of the picture). Can be used at any place (even inside @code{subplot}).
- at end deffn
-
- at deffn {MGL command} fgets @code{x y} 'fname' [@code{n=0} 'fnt'='' @code{size=-1.4}]
- at deffnx {MGL command} fgets @code{x y z} 'fname' [@code{n=0} 'fnt'='' @code{size=-1.4}]
-Draws unrotated @var{n}-th line of file @var{fname} at position @{@var{x}, at var{y}, at var{z}@} with specified @var{size}. By default parameters from @code{font} command are used.
- at end deffn
-
-
- at deffn {MGL command} text xdat 'text' ['fnt'='' @code{size=-1 zval=nan}]
- at deffnx {MGL command} text xdat ydat 'text' ['fnt'='' @code{size=-1 zval=nan}]
- at deffnx {MGL command} text xdat ydat zdat 'text' ['fnt'='' @code{size=-1}]
-The command draws @var{text} along the curve between points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} by font style @var{fnt} and with size @var{size}. The string @var{fnt} may contain symbols @samp{t} for printing the text under the curve (default), or @samp{T} for printing the text above the curve. The sizes of 1st dimension must be equal for all arrays @var{xdat.nx=ydat.nx=zdat.nx}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{z}[i] = @var{zval} is used. @sref{Text sample}
- at end deffn
-
- at c ##################################################################
- at node Axis and Colorbar (MGL), Legend (MGL), Text printing (MGL), MGL interface
- at section Axis and Colorbar (MGL)
- at cindex axis
- at cindex box
- at cindex grid
- at cindex colorbar
- at cindex xlabel
- at cindex ylabel
- at cindex zlabel
- at cindex tlabel
-
-These commands draw the ``things for measuring'', like axis with ticks, colorbar with ticks, grid along axis, bounding box and labels for axis. For more information @pxref{Axis settings (MGL)}.
-
- at deffn {MGL command} axis ['dir'='xyz' @code{adjust=off}]
-Draws axes with ticks (@pxref{Axis settings (MGL)}) in directions determined by string parameter @var{dir}.If string contain the symbol @samp{_} then tick labels are not printed. Font for ticks labels is determined by command @code{font}. Ticks will be automatically adjusted if @var{adjust}=@code{on} (by call of @code{adjust 'dir'}).
- at end deffn
-
- at deffn {MGL command} colorbar ['sch'='' @code{pos=0}]
-Draws colorbar with color scheme @var{sch} (current scheme if @code{sch=''}) at edge of plot. Parameter @var{pos} specifies the position of colorbar: @samp{0} - at right (default), @samp{1} - at left, @samp{2} - at top, @samp{3} - at bottom. @sref{Dens sample}
- at end deffn
-
- at deffn {MGL command} colorbar 'sch' @code{pos x y w h}
-Draws colorbar with color scheme @var{sch} (current scheme if not specified) at arbitrary position of subplot @{@var{x}, @var{y}@} (supposed to be in range [0,1]). Parameter @var{pos} specifies the position of colorbar labels: @samp{0} - at left, @samp{1} - at right, @samp{2} - at bottom, @samp{3} - at top. Parameters @var{w}, @var{h} set the relative width and height of the colorbar.
- at end deffn
-
- at deffn {MGL command} colorbar vdat ['sch'='' @code{pos=0}]
-Draws colorbar with sharp colors @var{sch} (current palette if @code{sch=NULL}) for values @var{vdat} at edge of plot. Parameter @var{pos} specifies the position of colorbar: @samp{0} - at right (default), @samp{1} - at left, @samp{2} - at top, @samp{3} - at bottom. @sref{Dens sample}
- at end deffn
-
- at deffn {MGL command} grid ['dir'='xyz' 'pen'='B']
-Draws grid lines perpendicular to direction determined by string parameter @var{dir}. The step of grid lines is the same as tick step for an @code{axis}. The style of lines is determined by @var{pen} parameter.
- at end deffn
-
- at deffn {MGL command} box ['stl'='k' @code{ticks=on}]
-Draws bounding box outside the plotting volume with line style 'stl'.
- at end deffn
-
- at deffn {MGL command} xlabel 'text' [@code{pos=1 size=-1.4 shift=0}]
- at deffnx {MGL command} ylabel 'text' [@code{pos=1 size=-1.4 shift=0}]
- at deffnx {MGL command} zlabel 'text' [@code{pos=1 size=-1.4 shift=0}]
- at deffnx {MGL command} tlabel 'text' [@code{pos=1 size=-1.4 shift=0}]
-Prints the label @var{text} for x-,y-,z-,t-axis (here @samp{t} is ``ternary'' axis @math{t=1-x-y}). The position of label is determined by @var{pos} parameter. If @var{pos}=0 then label is printed at the center of axis. If @var{pos}>0 then label is printed at the maximum of axis (default). If @var{pos}<0 then label is printed at the minimum of axis. The font size is 1.4 times larger than the one for ticks @code{font}. Parameter @code{shift} specify additional shifting of the label. @xref{Text printing (MGL)}.
- at end deffn
-
- at c ##################################################################
- at node Legend (MGL), 1D plotting (MGL), Axis and Colorbar (MGL), MGL interface
- at section Legend (MGL)
- at cindex legend
- at cindex addlegend
- at cindex clearlegend
-
-These commands draw legend to the graph (useful for @ref{1D plotting (MGL)}). Legend entry is a pair of strings: one for style of the line, another one with description text (with included LaTeX parsing). The array of string are accumulated first to the internal arrays (by command @code{addlegend}) and are plotted later. The position of the legend can be selected automatic or manually. Parameters @var{fnt} and @var{size} specify the font style and size. Parameter @var{llen} set the relative width of the line sample and the text indent (default value is 0.1). If line style string for entry is empty then the corresponding text is printed without indent. @sref{Legend sample}
-
- at deffn {MGL command} legend [@code{pos=3} 'fnt'='rL' @code{size=-1 llen=0.1}]
-Draws legend of accumulated legend entries by font @var{fnt} with specified @var{size}. Parameter @var{pos} sets the position of the legend: @samp{0} is bottom left corner, @samp{1} is bottom right corner, @samp{2} is top left corner, @samp{3} is top right corner (is default).
- at end deffn
-
- at deffn {MGL command} legend @code{x y} ['fnt'='rL' @code{size=-1 llen=0.1}]
-Draws legend of accumulated legend entries by font @var{fnt} with @var{size}. Position of legend is determined by parameter @var{x}, @var{y} which supposed to be normalized to interval [0,1].
- at end deffn
-
- at deffn {MGL command} addlegend 'text' 'stl'
-Adds string @var{text} to internal legend accumulator. The style of described line and mark is specified in string @var{stl} (@pxref{Line styles}). Maximal number of entries is 100.
- at end deffn
-
- at deffn {MGL command} clearlegend
-Clears saved legend strings.
- at end deffn
-
- at deffn {MGL command} legendbox @code{val}
-Switches on/off the drawing of a box near legend. By default, the box is drawn.
- at end deffn
-
-
-
- at c ##################################################################
- at node 1D plotting (MGL), 2D plotting (MGL), Legend (MGL), MGL interface
- at section 1D plotting (MGL)
- at cindex plot
- at cindex tens
- at cindex area
- at cindex bars
- at cindex barh
- at cindex stem
- at cindex step
- at cindex torus
- at cindex chart
- at cindex mark
- at cindex textmark
- at cindex error
- at cindex tube
- at cindex region
-
-These commands perform plotting of 1D data. 1D means that data depended from only 1 parameter like parametric curve @{x(i),y(i),z(i)@}, i=1...n. Most of plotting type has similar interface. There are 3D version and two 2D versions. One of last requires single array. The parameters of line and marks are specified by the string argument. If the string parameter is NULL then solid line with color from palette Pal is used (@pxref{Palette and colors}). Also there are some special 1d plots having slightly different interface: surface of curve rotation (Torus), chart (Chart) and error boxes (Error), marks with variable size (Mark), tubes (Tube) and so on. @xref{Line styles}.
-
-The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @var{x.nx=y.nx=z.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=NULL}) solid line with color from palette is used (@pxref{Palette and colors}).
-
- at deffn {MGL command} plot ydat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} plot xdat ydat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} plot xdat ydat zdat ['stl'='']
-Draws continuous lines between points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). See also @code{tens, radar, area, step, stem, tube, mark, error, belt}. @sref{Plot sample}
- at end deffn
-
-
- at deffn {MGL command} radar adat ['stl'='' @code{r=-1}]
-Draws radar chart which is continuous lines between points located on an radial lines (like plot in Polar coordinates). The plots are drawn for each row if one of the data is the matrix. Parameter @var{r} set the additional shift of data (i.e. the data @var{adat}+ at var{r} is used instead of @var{adat}). If @code{r<0} then @code{r=max(0, -min(adat)}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). If @var{pen} containt @samp{#} symbol then "grid" (radial lines and circle for @var{r}) is drawn See also @code{plot}. @sref{Radar sample}
- at end deffn
-
- at deffn {MGL command} tens ydat cdat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} tens xdat ydat cdat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} tens xdat ydat zdat cdat ['stl'='']
-Draws continuous lines between points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} with color defined by @var{cdat}[i] (look like tension plot). If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). See also @code{plot, mesh, fall}. @sref{Tens sample}
- at end deffn
-
- at deffn {MGL command} area ydat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} area xdat ydat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} area xdat ydat zdat ['stl'='']
-Draws continuous lines between points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} and fills it down to axis (to axis plane in 3D). If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). See also @code{plot, bars, stem, region}. @sref{Area sample}
- at end deffn
-
- at deffn {MGL command} region fdat gdat ['stl'='' @code{inside=off}]
- at deffnx {MGL command} region xdat fdat gdat ['stl'='' @code{inside=off}]
-Fills area between curves @{@var{xdat}[i], @var{fdat}[i]@} and @{@var{xdat}[i], @var{gdat}[i]@}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. Parameter @code{inside=off} set to fill are with y1<y<y2 else the area with y2<y<y1 will be also filled.
- at c If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box).
-See also @code{area, bars, stem}. @sref{Region sample}
- at end deffn
-
- at deffn {MGL command} bars ydat ['stl'='' @code{zval=nan above=off}]
- at deffnx {MGL command} bars xdat ydat ['stl'='' @code{zval=nan above=off}]
- at deffnx {MGL command} bars xdat ydat zdat ['stl'='' @code{above=off}]
-Draws vertical bars from points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} to axis (to axis plane in 3D). If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). Bars are drawn side-by-side (if @code{above = off}) or one above another (if @code{above = on}). Marks at data points are not drawn. See also @code{area, barh, stem, chart}. @sref{Bars sample}
- at end deffn
-
- at deffn {MGL command} barh vdat ['stl'='' @code{zval=nan above=off}]
- at deffnx {MGL command} bars ydat vdat ['stl'='' @code{zval=nan above=off}]
-Draws horizontal bars from points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} to y-axis. If array @var{ydat} is not specified then its an automatic array is used with values equidistantly distributed along y. Bars are drawn side-by-side (if @code{above = off}) or one above another (if @code{above = on}). Marks at data points are not drawn.
- at c If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box).
-See also @code{bars}. @sref{Barh sample}
- at end deffn
-
- at deffn {MGL command} stem ydat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} stem xdat ydat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} stem xdat ydat zdat ['stl'='']
-Draws vertical lines from points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} to axis (to axis plane in 3D). If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). See also @code{area, bars, plot, mark}. @sref{Stem sample}
- at end deffn
-
- at deffn {MGL command} step ydat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} step xdat ydat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} step xdat ydat zdat ['stl'='']
-Draws continuous stairs for points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). See also @code{plot, stem, tile, boxs}. @sref{Step sample}
- at end deffn
-
- at deffn {MGL command} torus zdat ['stl'='']
- at deffnx {MGL command} torus rdat zdat ['stl'='']
-Draws surface which is result of curve @{@var{rdat}[i], @var{zdat}[i], @var{zdat}[i]@} rotation around @code{axialdir} axis. If array @var{rdat} is not specified then its an automatic array is used with values equidistantly distributed along x. See also @code{plot, axial}. @sref{Torus sample}
- at end deffn
-
- at deffn {MGL command} chart adat ['col'='']
-The command draws colored stripes (boxes) for data in array @var{adat}. The number of stripes is equal to the number of rows in @var{adat} (equal to @var{a.ny}). The color of each next stripe is cyclically changed from colors specified in string @var{col} or in palette. Spaces in colors denote transparent ``color'', i.e. if @var{col} contain space(s) then corresponding stripe(s) are not drawn. The stripe width is proportional to value of element in @var{a}. Chart is plotted only for data with non-negative elements. If string @var{col} have symbol @samp{#} then black border lines are drawn. The most nice form the chart have in 3d (after rotation of coordinates) or in cylindrical coordinates (becomes so called Pie chart). @sref{Chart sample}
- at end deffn
-
- at deffn {MGL command} mark ydat rdat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} mark xdat ydat rdat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} mark xdat ydat zdat rdat ['stl'='']
-Draws marks with size @var{rdat}[i]*@code{marksize} at points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). See also @code{plot, textmark, stem, error}. @sref{Mark sample}
- at end deffn
-
- at deffn {MGL command} textmark ydat 'txt' ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} textmark ydat rdat 'txt' ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} textmark xdat ydat rdat 'txt' ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} textmark xdat ydat zdat rdat 'txt' ['stl'='']
-Draws string @var{txt} as marks with size @var{rdat}[i]*@code{marksize} at points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). If array @var{rdat} is not specified then @var{rdat}[i] = 1. See also @code{plot, mark, stem}. @sref{TextMark sample}
- at end deffn
-
- at deffn {MGL command} error ydat yerr ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} error xdat ydat yerr ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} error xdat ydat xerr yerr ['stl'='' @code{zval=nan}]
-Draws error boxes @{@var{xerr}[i], @var{yerr}[i]@} at points @{@var{xdat}[i], @var{ydat}[i], @var{zval}@}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. See also @code{plot}. @sref{TextMark sample}
- at end deffn
-
- at deffn {MGL command} tube ydat rdat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} tube ydat @code{rval} ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} tube xdat ydat rdat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} tube xdat ydat @code{rval} ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} tube xdat ydat zdat rdat ['stl'='']
- at deffnx {MGL command} tube xdat ydat zdat @code{rval} ['stl'='']
-Draws tube with variable radius @var{rdat}[i] (or @var{rval}) at points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). See also @code{plot}. @sref{TextMark sample}
- at end deffn
-
- at deffn {MGL command} boxplot adat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} boxplot xdat adat ['stl'='' @code{zval=nan}]
-Draws boxplot (also known as a box-and-whisker diagram) at points @var{xdat} in plane z=@code{zval} (by default is at the bottom of the bounding box). This is five-number summaries of data <em>adat</em> (minimum, lower quartile (Q1), median (Q2), upper quartile (Q3) and maximum) along second (j-th) direction.
- at end deffn
-
- at c ##################################################################
- at node 2D plotting (MGL), 3D plotting (MGL), 1D plotting (MGL), MGL interface
- at section 2D plotting (MGL)
- at cindex mesh
- at cindex fall
- at cindex belt
- at cindex surf
- at cindex boxs
- at cindex tile
- at cindex dens
- at cindex cont
- at cindex contf
- at cindex contd
- at cindex axial
- at cindex grid
-
-These commands perform plotting of 2D data. 2D means that data depend from 2 independent parameters like matrix @math{f(x_i,y_j), i=1...n, j=1...m}. There are 6 generally different types of data representations: simple mesh lines plot (Mesh), surface plot (Surf), surface plot by boxes (Boxs), surface plot by tiles (Tile), waterfall-like plot (Fall), belt plot (Belt), density plot (Dens), contour lines plot (Cont), solid contours plot (ContF) and its rotational figure (Axial). Cont, ContF and Axial commands have variants for automatic and manual selection of level values for contours. Also there are commands for plotting data grid lines according to the data format (Grid) for enhancing density or contour plots. Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. Parameters of color scheme are specified by the string argument.
-
-String parameter @var{sch} sets the color scheme (@pxref{Color scheme}). Previous color scheme is used by default. The minor dimensions of arrays @var{xdat}, @var{ydat}, @var{zdat} should be equal @var{xdat.nx=zdat.nx && ydat.nx=zdat.ny} or @var{xdat.nx=ydat.nx=zdat.nx && xdat.ny=ydat.ny=zdat.ny}. Arrays @var{xdat} and @var{ydat} can be vectors (not matrices as @var{zdat}). If array @var{xdat}, @var{ydat} is not specified then its an automatic arrays are used with values equidistantly distributed along x, y. Graphics are plotted for each z-slice of the data.
-
- at deffn {MGL command} mesh zdat ['sch'='']
- at deffnx {MGL command} mesh xdat ydat zdat ['sch'='']
-Draws mesh lines for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. See also @code{surf, fall, meshnum, cont, tens}. @sref{Mesh sample}
- at end deffn
-
- at deffn {MGL command} fall zdat ['sch'='']
- at deffnx {MGL command} fall xdat ydat zdat ['sch'='']
-Draws fall lines for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. If @var{sch} contain @samp{x} then lines are drawn along x-direction else (by default) lines are drawn along y-direction. See also @code{belt, mesh, meshnum, tens}. @sref{Fall sample}
- at end deffn
-
- at deffn {MGL command} belt zdat ['sch'='']
- at deffnx {MGL command} belt xdat ydat zdat ['sch'='']
-Draws belts for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. If @var{sch} contain @samp{x} then belts are drawn along x-direction else (by default) lines are drawn along y-direction. See also @code{fall, surf, plot, meshnum}. @sref{Belt sample}
- at end deffn
-
- at deffn {MGL command} surf zdat ['sch'='']
- at deffnx {MGL command} surf xdat ydat zdat ['sch'='']
-Draws surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. See also @code{mesh, dens, belt, tile, boxs, surfc, surfa}. @sref{Surf sample}
- at end deffn
-
- at deffn {MGL command} boxs zdat ['sch'='']
- at deffnx {MGL command} boxs xdat ydat zdat ['sch'='']
-Draws vertical boxes for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. See also @code{surf, dens, tile, step}. @sref{Boxs sample}
- at end deffn
-
- at deffn {MGL command} tile zdat ['sch'='']
- at deffnx {MGL command} tile xdat ydat zdat ['sch'='']
-Draws horizontal tiles for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. See also @code{surf, dens, boxs, tile, step}. @sref{Tile sample}
- at end deffn
-
- at deffn {MGL command} dens zdat ['sch'='' @code{zval=nan}]
- at deffnx {MGL command} dens xdat ydat zdat ['sch'='' @code{zval=nan}]
-Draws density plot for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} at @var{z} = @var{zVal}. See also @code{surf, cont, contf, boxs, tile, dens[xyz]}. @sref{Dens sample}
- at end deffn
-
- at deffn {MGL command} cont vdat zdat ['sch'='' @code{zval=nan}]
- at deffnx {MGL command} cont vdat xdat ydat zdat ['sch'='' @code{zval=nan}]
-Draws contour lines for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} at @var{z} = @var{zVal} (or for @var{z}=@var{vdat}[k] if @code{zval=nan}). Contours are plotted for @var{zdat}[i,j]=@var{vdat}[k] for all k. If string @var{stl} contain 't' (or 'T') symbol then contour labels will be drawn below (or above) the contours. See also @code{dens, contf, axial, cont[xyz]}. @sref{Cont sample}
- at end deffn
-
- at deffn {MGL command} cont zdat ['sch'='' @code{num=7 zval=nan}]
- at deffnx {MGL command} cont xdat ydat zdat ['sch'='' @code{num=7 zval=nan}]
-The same as previous one with vector @var{vdat} of @var{num}-th elements equidistantly distributed in color range (see, @code{caxis}).
- at end deffn
-
- at deffn {MGL command} contf vdat zdat ['sch'='' @code{zval=nan}]
- at deffnx {MGL command} contf vdat xdat ydat zdat ['sch'='' @code{zval=nan}]
-Draws solid (or filled) contours for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} at @var{z} = @var{zVal} (or for @var{z}=@var{vdat}[k] if @code{zval=nan}). Contours are plotted for @var{zdat}[i,j]=@var{vdat}[k] for all k (must be @code{vdat.nx>2}). See also @code{dens, cont, contd, axial, contf[xyz]}. @sref{ContF sample}
- at end deffn
-
- at deffn {MGL command} contf zdat ['sch'='' @code{num=7 zval=nan}]
- at deffnx {MGL command} contf xdat ydat zdat ['sch'='' @code{num=7 zval=nan}]
-The same as previous one with vector @var{vdat} of @var{num}-th elements equidistantly distributed in color range (see, @code{caxis}).
- at end deffn
-
- at deffn {MGL command} contd vdat zdat ['sch'='' @code{zval=nan}]
- at deffnx {MGL command} contd vdat xdat ydat zdat ['sch'='' @code{zval=nan}]
-Draws solid (or filled) contours for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} at @var{z} = @var{zVal} (or for @var{z}=@var{vdat}[k] if @code{zval=nan}) with manual colors. Contours are plotted for @var{zdat}[i,j]=@var{vdat}[k] for all k (must be @code{vdat.nx>2}). The color of k-th contour is @code{sch[k%strlen(sch)]}. See also @code{dens, cont, contf}. @sref{ContD sample}
- at end deffn
-
- at deffn {MGL command} contd zdat ['sch'='' @code{num=7 zval=nan}]
- at deffnx {MGL command} contd xdat ydat zdat ['sch'='' @code{num=7 zval=nan}]
-The same as previous one with vector @var{vdat} of @var{num}-th elements equidistantly distributed in color range (see, @code{caxis}).
- at end deffn
-
- at deffn {MGL command} axial vdat zdat ['sch'='']
- at deffnx {MGL command} axial vdat xdat ydat zdat ['sch'='']
-Draws surface which is result of contour plot rotation surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. Contours are plotted for @var{zdat}[i,j]=@var{vdat}[k] for all k. If string @var{sch} have symbol @samp{#} then wire plot is produced. If string @var{sch} contain symbols @samp{x}, @samp{y} or @samp{z} then rotation axis @code{axialdir} will be set to specified direction. If string @var{sch} have symbol @samp{#} then wire plot is produced. See also @code{cont, contf, torus, surf3}. @sref{Axial sample}
- at end deffn
-
- at deffn {MGL command} axial zdat ['sch'='' @code{num=3}]
- at deffnx {MGL command} axial xdat ydat zdat ['sch'='' @code{num=3}]
-The same as previous one with vector @var{vdat} of @var{num}-th elements equidistantly distributed in color range (see, @code{caxis}).
- at end deffn
-
- at deffn {MGL command} grid zdat ['sch'='' @code{zval=nan}]
- at deffnx {MGL command} grid xdat ydat zdat ['sch'='' @code{zval=nan}]
-Draws grid lines for density plot of surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} at @var{z} = @var{zVal}. See also @code{dens, cont, contf}.
- at end deffn
-
-
- at c ##################################################################
- at node 3D plotting (MGL), Dual plotting (MGL), 2D plotting (MGL), MGL interface
- at section 3D plotting (MGL)
- at cindex surf3
- at cindex dens3
- at cindex cont3
- at cindex conta
- at cindex densa
- at cindex grid3
- at cindex grida
- at cindex cloud
- at cindex contf3
- at cindex contfa
- at cindex beam
-
-These commands perform plotting of 3D data. 3D means that data depend from 3 independent parameters like matrix @math{f(x_i,y_j,z_k), i=1...n, j=1...m, k=1...l}. There are 4 generally different types of data representations: isosurface or surface of constant value (Surf3), density plot at slices (Dens3), contour lines plot at slices (Cont3), solid contours plot at slices (ContF3) and cloud-like plot (Cloud). Surf3, Cont3 and ContF3 commands have variants for automatic and manual selection of level values for surfaces/contours. Also there are commands for plotting data grid lines according to the data format (Grid3) for enhancing density or contour plots. Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. Parameters of color scheme are specified by the string argument.
-
-String paramter @var{sch} sets the color scheme (@pxref{Color scheme}). Previous color scheme is used by default. Arrays @var{x}, @var{y}, @var{z} can be vectors (not 3d arrays as @var{a}). If array @var{xdat}, @var{ydat}, @var{zdat} is not specified then its an automatic arrays are used with values equidistantly distributed along x, y, z.
-
-
- at deffn {MGL command} surf3 adat @code{val} ['sch'='']
- at deffnx {MGL command} surf3 xdat ydat zdat adat @code{val} ['sch'='']
-Draws isosurface plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]) at @var{a}(x,y,z)=@var{val}. If string contain @samp{#} then wire plot is produced. See also @code{cloud, dens3, surf3c, surf3a, axial}. @sref{Surf3 sample}
- at end deffn
-
- at deffn {MGL command} surf3 adat ['sch'='' @code{num=5}]
- at deffnx {MGL command} surf3 xdat ydat zdat adat ['sch'='' @code{num=5}]
-Draws @var{num}-th uniformly distributed in color range (see @code{caxis}) isosurfaces for 3d data specified parametrically.
- at end deffn
-
- at deffn {MGL command} dens3 adat 'dir' [@code{sval=-1} 'sch'='']
- at deffnx {MGL command} dens3 xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='']
-Draws density plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). Density is plotted at slice @var{sval} in @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@} direction. If string @var{stl} have symbol @samp{#} then grid lines are drawn. See also @code{cont3, contf3, dens, grid3}. @sref{Dens3 sample}
- at end deffn
-
- at deffn {MGL command} densa adat ['sch'='']
- at deffnx {MGL command} densa xdat ydat zdat adat ['sch'='']
-Draws density plots at all central slices of the 3d data specified parametrically.
- at end deffn
-
- at deffn {MGL command} cont3 vdat adat 'dir' [@code{sval=-1} 'sch'='']
- at deffnx {MGL command} cont3 vdat xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='']
-Draws contour plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). Contours are plotted for values specified in array @var{vdat} at slice @var{sval} in @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@} direction. If string @var{stl} have symbol @samp{#} then grid lines are drawn. If string @var{stl} contain 't' (or 'T') symbol then contour labels will be drawn below (or above) the contours. See also @code{dens3, contf3, cont, grid3}. @sref{Cont3 sample}
- at end deffn
-
- at deffn {MGL command} cont3 adat 'dir' [@code{sval=-1} 'sch'='' @code{num=7}]
- at deffnx {MGL command} cont3 xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='' @code{num=7}]
-The same as previous one with vector @var{vdat} of @var{num}-th elements equidistantly distributed in color range (see @code{caxis}).
- at end deffn
-
- at deffn {MGL command} conta adat ['sch'='' @code{num=7}]
- at deffnx {MGL command} conta xdat ydat zdat adat ['sch'='' @code{num=7}]
-Draws contour plots at all central slices of the 3d data specified parametrically.
- at end deffn
-
- at deffn {MGL command} contf3 vdat adat 'dir' [@code{sval=-1} 'sch'='']
- at deffnx {MGL command} contf3 vdat xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='']
-Draws solid contour plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). Contours are plotted for values specified in array @var{vdat} at slice @var{sval} in @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@} direction. If string @var{stl} have symbol @samp{#} then grid lines are drawn. See also @code{dens3, cont3, contf, grid3}. @sref{ContF3 sample}
- at end deffn
-
- at deffn {MGL command} contf3 adat 'dir' [@code{sval=-1} 'sch'='' @code{num=7}]
- at deffnx {MGL command} contf3 xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='' @code{num=7}]
-The same as previous one with vector @var{vdat} of @var{num}-th elements equidistantly distributed in color range (see @code{caxis}).
- at end deffn
-
- at deffn {MGL command} contfa adat ['sch'='' @code{num=7}]
- at deffnx {MGL command} contfa xdat ydat zdat adat ['sch'='' @code{num=7}]
-Draws solid contour plots at all central slices of the 3d data specified parametrically.
- at end deffn
-
- at deffn {MGL command} grid3 adat 'dir' [@code{sval=-1} 'sch'='']
- at deffnx {MGL command} grid3 xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='']
-Draws grid for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). Grid is plotted at slice @var{sval} in @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@} direction. See also @code{cont3, contf3, dens, grid3}. @sref{Dens3 sample}
- at end deffn
-
- at deffn {MGL command} grida adat ['sch'='']
- at deffnx {MGL command} grida xdat ydat zdat adat ['sch'='']
-Draws grids at all central slices of the 3d data specified parametrically.
- at end deffn
-
- at deffn {MGL command} cloud adat ['sch'='']
- at deffnx {MGL command} cloud xdat ydat zdat adat ['sch'='']
-Draws cloud for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). This plot is a set of cubes with color and transparency proportional to value of @var{adat}. The resulting plot is like cloud -- low value is transparent but higher ones are not. The number of plotting cells depend on @code{meshnum}. Command @var{alpha} changes the overall transparency of plot. See also @code{surf3}. @sref{Cloud sample}
- at end deffn
-
- at deffn {MGL command} beam tr g1 g2 adat @code{rval} ['sch'='' @code{flag=0 num=3}]
-Draws @var{num}-th uniformly distributed in color range (see @code{caxis}) isosurfaces for 3d array @var{adat}. This is special kind of plot for @var{adat} specified in accompanied coordinates along curve @var{tr} with orts @var{g1}, @var{g2} and with transverse scale @var{rval}. Variable @var{flag} is bitwise: @samp{0x1} - draw in accompanied (not laboratory) coordinates; @samp{0x2} - draw projection to @math{\rho-z} plane; @samp{0x4} - draw normalized in each slice field. The x-size of data arrays @var{tr}, @var{g1}, @var{g2} must be nx>2. The y-size of data arrays @var{tr}, @var{g1}, @var{g2} and z-size of the data array @var{a} must be equal. @xref{Surf3}.
- at end deffn
-
-
- at c ##################################################################
- at node Dual plotting (MGL), Vector fields (MGL), 3D plotting (MGL), MGL interface
- at section Dual plotting (MGL)
- at cindex surfc
- at cindex surf3c
- at cindex surfa
- at cindex surf3a
- at cindex map
- at cindex tile
- at cindex stfa
-
-These plotting commands draw @emph{two matrix} simultaneously. There are 5 generally different types of data representations: surface or isosurface colored by other data (SurfC, Surf3C), surface or isosurface transpared by other data (SurfA, Surf3A), tiles with variable size (TileS), mapping diagram (Map), STFA diagram (STFA). Surf3A and Surf3C have variants for automatic and manual selection of level values for isosurfaces. Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. Parameters of color scheme are specified by the string argument.
-
-String paramter @var{sch} sets the color scheme (@pxref{Color scheme}). Previous color scheme is used by default. Arrays @var{x}, @var{y}, @var{z} can be vectors (not 3d arrays as @var{a}). If array @var{xdat}, @var{ydat}, @var{zdat} is not specified then its an automatic arrays are used with values equidistantly distributed along x, y, z.
-
- at deffn {MGL command} surfc zdat cdat ['sch'='']
- at deffnx {MGL command} surfc xdat ydat zdat cdat ['sch'='']
-Draws surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} and color it by matrix @var{cdat}[i,j]. See also @code{surf, surfa, surf3c}. @sref{SurfC sample}
- at end deffn
-
- at deffn {MGL command} surf3c adat cdat @code{val} ['sch'='']
- at deffnx {MGL command} surf3c xdat ydat zdat adat cdat @code{val} ['sch'='']
-Draws isosurface plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]) at @var{a}(x,y,z)=@var{val}. It is mostly the same as @code{surf3} command but the color of isosurface depends on values of array @var{cdat}. If string contain @samp{#} then wire plot is produced. See also @code{surf3, sur3a, surfc}. @sref{Surf3C sample}
- at end deffn
-
- at deffn {MGL command} surf3c adat cdat ['sch'='' @code{num=5}]
- at deffnx {MGL command} surf3c xdat ydat zdat adat cdat ['sch'='' @code{num=5}]
-Draws @var{num}-th uniformly distributed in color range (see @code{caxis}) isosurfaces for 3d data specified parametrically.
- at end deffn
-
- at deffn {MGL command} surfa zdat cdat ['sch'='']
- at deffnx {MGL command} surfa xdat ydat zdat cdat ['sch'='']
-Draws surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} and transparent it by matrix @var{cdat}[i,j]. See also @code{surf, surfc, surf3a, tile}. @sref{SurfA sample}
- at end deffn
-
- at deffn {MGL command} surf3a adat cdat @code{val} ['sch'='']
- at deffnx {MGL command} surf3a xdat ydat zdat adat cdat @code{val} ['sch'='']
-Draws isosurface plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]) at @var{a}(x,y,z)=@var{val}. It is mostly the same as @code{surf3} command but the transparency of isosurface depends on values of array @var{cdat}. If string contain @samp{#} then wire plot is produced. See also @code{surf3, sur3c, surfa}. @sref{Surf3A sample}
- at end deffn
-
- at deffn {MGL command} surf3a adat cdat ['sch'='' @code{num=5}]
- at deffnx {MGL command} surf3a xdat ydat zdat adat cdat ['sch'='' @code{num=5}]
-Draws @var{num}-th uniformly distributed in color range (see @code{caxis}) isosurfaces for 3d data specified parametrically.
- at end deffn
-
- at deffn {MGL command} tile zdat rdat ['sch'='']
- at deffnx {MGL command} tile xdat ydat zdat rdat ['sch'='']
-Draws horizontal tiles for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. It is mostly the same as @code{tile} but the size of tiles is determined by @var{rdat} array. See also @code{surfa, tile}. @sref{TileS sample}
- at end deffn
-
- at deffn {MGL command} map udat vdat ['sch'='' @code{pnts=on}]
- at deffnx {MGL command} map xdat ydat udat vdat ['sch'='' @code{pnts=on}]
-Draws mapping plot for matrixes @{@var{udat}, @var{vdat} @} which parametrically depend on coordinates @var{xdat}, @var{ydat}. The previous position of the cell (point) is marked by color. Height is proportional to Jacobian(udat,vdat). This plot is like Arnold diagram ???. If @code{pnts=off} then face is drawn otherwise the color ball at matrix knots are drawn. The size of @var{udat} and @var{vdat} must be the same. @sref{Map sample}
- at end deffn
-
- at deffn {MGL command} stfa re im @code{dn} ['sch'='' @code{pnts=on}]
- at deffnx {MGL command} stfa xdat ydat re im @code{dn} ['sch'='' @code{pnts=on}]
-Draws spectrogram of complex array @var{re}+i*@code{im} for Fourier size of @var{dn} points at plane @var{z=zVal}. Parameter @var{dn} is arbitrary even integer. For example in 1D case, result is density plot of data @math{res[i,j]=|\sum_d^dn exp(I*j*d)*(re[i*dn+d]+I*im[i*dn+d])|/dn} with size @{int(nx/dn), dn, ny@}.
- at end deffn
-
-
-
-
- at c ##################################################################
- at node Vector fields (MGL), Other plotting (MGL), Dual plotting (MGL), MGL interface
- at section Vector fields (MGL)
- at cindex vectc
- at cindex vect
- at cindex flow
- at cindex pipe
- at cindex traj
- at cindex dew
-
-These commands perform plotting of 2D and 3D vector fields. There are 6 generally different types of vector fields representations: simple vector field (Vect), vector field with coloring (VectC), vector field by dew-drops (Dew), flow threads (Flow), flow pipes (Pipe), vectors along a curve (Traj). Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. Parameters of color scheme are specified by the string argument. @xref{Color scheme}.
-
-The color is specified by the string argument @var{sch}. Previous color scheme is used by default. Parameter @var{flag} setup the hachures (arrows). It is compination of vlaues: @code{MGL_VEC_COL=1} for drawing bi-color arrow, @code{MGL_VEC_LEN=2} for drawing fixed length arrows, @code{MGL_VEC_DOT=16} for drawing hachures with dots instead of arrows, @code{MGL_VEC_END=4} for drawing arrows to the cell point, @code{MGL_VEC_MID=8} for drawing arrows with center at cell point.
-
-The size of @var{udat}, @var{vdat} and @var{wdat} must be equal. The minor dimensions of arrays @var{xdat}, @var{ydat}, @var{zdat} and @var{udat} must be equal too. Arrays @var{xdat}, @var{ydat} and @var{zdat} can be vectors (not matrices as @var{udat}). The graphics is plotted for each z slice of @var{udat}, @var{vdat} for 2D case.
-
- at deffn {MGL command} traj xdat ydat udat vdat ['sch'='' @code{zval=nan len=0}]
- at deffnx {MGL command} traj xdat ydat zdat udat vdat wdat ['sch'='' @code{len=0}]
-Draws vectors @{@var{udat}, @var{vdat}, @var{wdat}@} along a curve @var{xdat}, @var{ydat}, @var{zdat}. The length and color of arrows are proportional to @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. See also @code{vect}. @sref{Traj sample}
- at end deffn
-
- at deffn {MGL command} vect udat vdat ['sch'='' @code{zval=nan flag=0}]
- at deffnx {MGL command} vect xdat ydat udat vdat ['sch'='' @code{zval=nan flag=0}]
-Draws plane vector field plot for the field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} at level @var{z=zVal}. The length and color of arrows are proportional to @math{\sqrt@{udat^2+vdat^2@}}. The number of hachures depend on @var{meshnum}. See also @code{vectc, flow, pipe, dew}. @sref{Vect sample}
- at end deffn
-
- at deffn {MGL command} vect udat vdat wdat ['sch'='' @code{flag=0}]
- at deffnx {MGL command} vect xdat ydat zdat udat vdat wdat ['sch'='' @code{flag=0}]
-This is 3D version of the previous command. Here arrays @var{udat}, @var{vdat}, @var{wdat} must be 3-ranged tensors with equal sizes and the length and color of arrows are proportional to @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{Vect 3D sample}
- at end deffn
-
- at deffn {MGL command} vectc udat vdat ['sch'='' @code{zval=nan}]
- at deffnx {MGL command} vectc xdat ydat udat vdat ['sch'='' @code{zval=nan}]
-Draws plane vector field plot for the field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} at level @var{z=zVal}. The color of hachures is proportional to @math{\sqrt@{udat^2+vdat^2@}}. The number of hachures depend on @var{meshnum}. See also @code{vect, flow, pipe, dew}. @sref{VectC sample}
- at end deffn
-
- at deffn {MGL command} vectc udat vdat wdat ['sch'='']
- at deffnx {MGL command} vectc xdat ydat zdat udat vdat wdat ['sch'='']
-This is 3D version of the previous command. Here arrays @var{udat}, @var{vdat}, @var{wdat} must be 3-ranged tensors with equal sizes and the color of hachures is proportional to @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{VectC 3D sample}
- at end deffn
-
- at deffn {MGL command} vectl udat vdat ['sch'='' @code{zval=nan}]
- at deffnx {MGL command} vectl xdat ydat udat vdat ['sch'='' @code{zval=nan}]
-Draws plane vector field plot for the field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} at level @var{z=zVal}. The length of hachures is proportional to @math{\sqrt@{udat^2+vdat^2@}}. The number of hachures depend on @var{meshnum}. See also @code{vectc, flow, pipe, dew}. @sref{Vect sample}
- at end deffn
-
- at deffn {MGL command} vectl udat vdat wdat ['sch'='']
- at deffnx {MGL command} vectl xdat ydat zdat udat vdat wdat ['sch'='']
-This is 3D version of the previous command. Here arrays @var{udat}, @var{vdat}, @var{wdat} must be 3-ranged tensors with equal sizes and the length of hachures is proportional to @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{Vect 3D sample}
- at end deffn
-
- at deffn {MGL command} dew udat vdat ['sch'='' @code{zval=nan}]
- at deffnx {MGL command} dew xdat ydat udat vdat ['sch'='' @code{zval=nan}]
-Draws dew-drops for plane vector field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} at level @var{z=zVal}. The color of drops is proportional to @math{\sqrt@{udat^2+vdat^2@}}. The number of drops depend on @var{meshnum}. Note that this is very expensive plot in memory usage and creation time! See also @code{vectc}. @sref{Dew sample}
- at end deffn
-
- at deffn {MGL command} flow udat vdat ['sch'='' @code{num=5 zval=nan}]
- at deffnx {MGL command} flow xdat ydat udat vdat ['sch'='' @code{num=5 zval=nan}]
-Draws plane flow threads for the vector field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} at level @var{z=zVal}. Number of threads is proportional to @var{num}. The color of lines is proportional to @math{\sqrt@{udat^2+vdat^2@}}. Warm color corresponds to normal flow (like attractor). Cold one corresponds to inverse flow (like source). See also @code{vect, vectc, pipe}. @sref{Flow sample}
- at end deffn
-
- at deffn {MGL command} flow udat vdat wdat ['sch'='' @code{num=3}]
- at deffnx {MGL command} flow xdat ydat zdat udat vdat wdat ['sch'='' @code{num=3}]
-This is 3D version of the previous command. Here arrays @var{udat}, @var{vdat}, @var{wdat} must be 3-ranged tensors with equal sizes and the color is proportional to @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{Flow 3D sample}
- at end deffn
-
- at deffn {MGL command} flow @code{x0 y0} udat vdat ['sch'='' @code{zval=nan}]
- at deffnx {MGL command} flow @code{x0 y0} xdat ydat udat vdat ['sch'='' @code{zval=nan}]
-Draws plane flow threads for the vector field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} from point @{@var{x0}, @var{y0}@} at level @var{z=zVal}. The color of lines is proportional to @math{\sqrt@{udat^2+vdat^2@}}. Warm color corresponds to normal flow (like attractor). Cold one corresponds to inverse flow (like source). See also @code{vect, vectc, pipe}. @sref{Flow sample}
- at end deffn
-
- at deffn {MGL command} flow @code{x0 y0 z0} udat vdat wdat ['sch'='']
- at deffnx {MGL command} flow @code{x0 y0 z0} xdat ydat zdat udat vdat wdat ['sch'='']
-Draws flow thread from point @{@var{x0}, @var{y0}, @var{z0}@}. Arrays @var{udat}, @var{vdat}, @var{wdat} must be 3-ranged tensors with equal sizes and the color is proportional to @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{Flow 3D sample}
- at end deffn
-
-
- at deffn {MGL command} pipe udat vdat ['sch'='' @code{r0=0.05 num=5 zval=nan}]
- at deffnx {MGL command} pipe xdat ydat udat vdat ['sch'='' @code{r0=0.05 num=5 zval=nan}]
-Draws plane flow pipes for the vector field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} at level @var{z=zVal}. Number of pipes is proportional to @var{num}. The color of pipes is proportional to @math{\sqrt@{udat^2+vdat^2@}}. Warm color corresponds to normal flow (like attractor). Cold one corresponds to inverse flow (like source). Parameter @var{r0} set the base pipe radius. If @var{r0}<0 then pipe radius is inverse proportional to amplitude. The size of @var{ax} and @var{ay} must be equal. See also @code{vect, vectc, pipe}. @sref{Flow sample}
- at end deffn
-
- at deffn {MGL command} pipe udat vdat wdat ['sch'='' @code{r0=0.05 num=3}]
- at deffnx {MGL command} pipe xdat ydat zdat udat vdat wdat ['sch'='' @code{r0=0.05 num=3}]
-This is 3D version of the previous command. Here arrays @var{udat}, @var{vdat}, @var{wdat} must be 3-ranged tensors with equal sizes and the color is proportional to @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{Flow 3D sample}
- at end deffn
-
-
- at c ##################################################################
- at node Other plotting (MGL), Nonlinear fitting (MGL), Vector fields (MGL), MGL interface
- at section Other plotting (MGL)
- at cindex cont[xyz]
- at cindex dens[xyz]
- at cindex contf[xyz]
- at cindex dots
- at cindex crust
- at cindex triplot
- at cindex fplot
- at cindex fsurf
-
-
-These commands perform miscelaneous plotting. There is unstructured data points plots (Dots), surface reconstruction (Crust), surfaces on the triangular mesh (TriPlot), textual formula plotting (Plots by formula), data plots at edges (Dens[XYZ], Cont[XYZ], ContF[XYZ]), simple plot (SimplePlot). Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. Parameters of color scheme are specified by the string argument. @xref{Color scheme}.
-
- at deffn {MGL command} densx dat ['sch'='' @code{val=nan}]
- at deffnx {MGL command} densy dat ['sch'='' @code{val=nan}]
- at deffnx {MGL command} densz dat ['sch'='' @code{val=nan}]
-These plotting commands draw density plot in x, y or z plain. If @var{dat} is a tensor (3-dimensional data) then interpolation to a given @var{val} is performed. These commands are useful for creating projections of the 3D data array to the bounding box. See also @code{cont[xyz], contf[xyz], dens}. @sref{Dens projection sample}
- at end deffn
-
- at deffn {MGL command} contx dat ['sch'='' @code{val=nan num=7}]
- at deffnx {MGL command} conty dat ['sch'='' @code{val=nan num=7}]
- at deffnx {MGL command} contz dat ['sch'='' @code{val=nan num=7}]
-These plotting commands draw contour lines in x, y or z plain. If @var{dat} is a tensor (3-dimensional data) then interpolation to a given @var{val} is performed. These commands are useful for creating projections of the 3D data array to the bounding box. See also @code{dens[xyz], contf[xyz], cont}. @sref{Cont projection sample}
- at end deffn
-
- at deffn {MGL command} contfx dat ['sch'='' @code{val=nan num=7}]
- at deffnx {MGL command} contfy dat ['sch'='' @code{val=nan num=7}]
- at deffnx {MGL command} contfz dat ['sch'='' @code{val=nan num=7}]
-These plotting commands draw solid contours in x, y or z plain. If @var{dat} is a tensor (3-dimensional data) then interpolation to a given @var{val} is performed. These commands are useful for creating projections of the 3D data array to the bounding box. See also @code{dens[xyz], cont[xyz], contf}.
- at end deffn
-
- at deffn {MGL command} dots xdat ydat zdat ['sch'='']
- at deffnx {MGL command} dots xdat ydat zdat adat ['sch'='']
-Draws the arbitrary placed points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. Variable @var{adat}[i] set transparency for dots. See also @code{crust, mark, plot}. @sref{Dots sample}
- at end deffn
-
- at deffn {MGL command} crust xdat ydat zdat ['sch'='']
-Reconstructs and draws the surface for arbitrary placed points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If string contain @samp{#} then wire plot is produced. See also @code{dots, triplot}. @sref{Crust sample}
- at end deffn
-
- at deffn {MGL command} triplot idat xdat ydat ['sch'='' @code{zval=nan}]
- at deffnx {MGL command} triplot idat xdat ydat zdat ['sch'='']
- at deffnx {MGL command} triplot idat xdat ydat zdat cdat ['sch'='']
-Draws the surface of triangles. Triangle vertexes are set by indexes @var{idat} of data points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If string contain @samp{#} then wire plot is produced. First dimensions of @var{idat} must be 3 or greater. See also @code{dots, crust}. Parameter @var{cdat} set the colors of triangles (if @var{idat}.ny=@var{cdat}.nx) or colors of vertexes (if @var{xdat}.nx=@var{cdat}.nx).
- at end deffn
-
- at deffn {MGL command} fplot 'y(x)' ['pen'='' @code{zval=nan num=100}]
-Draws command function @samp{y(x)} at plane z=@var{zval} where @samp{x} variable is changed in @code{xrange}. You do not need to create the data arrays to plot it. The parameter @var{num} set the minimal number of points along coordinate(s) for plots. See also @code{plot}.
- at end deffn
-
- at deffn {MGL command} fplot 'x(t)' 'y(t)' 'z(t)' ['pen'='' @code{num=100}]
-Draws command parametrical curve @{@samp{x(t)}, @samp{y(t)}, @samp{z(t)}@} where @samp{t} variable is changed in range [0, 1]. You do not need to create the data arrays to plot it. The parameter @var{num} set the minimal number of points along coordinate(s) for plots. See also @code{plot}.
- at end deffn
-
- at deffn {MGL command} fsurf 'z(x,y)' ['sch'='' @code{num=100}]
-Draws command surface for function @samp{z(x,y)} where @samp{x}, @samp{y} variable are changed in @code{xrange, yrange}. You do not need to create the data arrays to plot it. The parameter @var{num} set the minimal number of points along coordinate(s) for plots. See also @code{surf}.
- at end deffn
-
- at deffn {MGL command} fsurf 'x(u,v)' 'y(u,v)' 'z(u,v)' ['sch'='' @code{num=100}]
-Draws command parametrical surface @{@samp{x(u,v)}, @samp{y(u,v)}, @samp{z(u,v)}@} where @samp{u}, @samp{v} variable are changed in range [0, 1]. You do not need to create the data arrays to plot it. The parameter @var{num} set the minimal number of points along coordinate(s) for plots. See also @code{surf}.
- at end deffn
-
-
- at c ##################################################################
- at node Nonlinear fitting (MGL), Data create (MGL), Other plotting (MGL), MGL interface
- at section Nonlinear fitting (MGL)
- at cindex fit
- at cindex fits
- at cindex putsfit
-
-These commands fit data to formula. Fitting goal is to find formula parameters for the best fit the data points, i.e. to minimize the sum @math{\sum_i (f(x_i, y_i, z_i) - a_i)^2/s_i^2}. At this, approximation command @samp{f} can depend only on one argument @samp{x} (1D case), on two arguments @samp{x,y} (2D case) and on three arguments @samp{x,y,z} (3D case). The command @samp{f} also may depend on parameters. Normally the list of fitted parameters is specified by @var{var} string (like, @samp{abcd}). Usually user should supply initial values for fitted parameters by @var{ini} variable. But if he/she don't supply it then the zeros are used.
-
-Commands @code{fit} and @code{fits} do not draw the obtained data themselves. They fill the data @var{out} by formula @samp{f} with found coefficients. At this, the @samp{x,y,z} coordinates are equidistantly distributed in the bounding box. Number of points in @var{out} is selected as maximal value of @var{out} size or 100. Also you may print the last formula with found coefficients by @code{putsfit} command. @sref{Fitting sample}
-
-The dimensions of arrays must be at least the same as the number of specified arrays @var{xdat}, @var{ydat}, @var{zdat}. Also the fitting only along specified directions will be performed (for example, along x and y if only @var{xdat} and @var{ydat} are specified). If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x.
-
-
- at deffn {MGL command} fits adat sdat 'func' 'var' [ini=0]
- at deffnx {MGL command} fits xdat adat sdat 'func' 'var' [ini=0]
- at deffnx {MGL command} fits xdat ydat adat sdat 'func' 'var' [ini=0]
- at deffnx {MGL command} fits xdat ydat zdat adat sdat 'func' 'var' [ini=0]
-Fit data along x-, y- and z-directions for 1d-,2d- or 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]) with weight factor @var{sdat}[i,j,k].
- at end deffn
-
- at deffn {MGL command} fit adat 'func' 'var' [ini=0]
- at deffnx {MGL command} fit xdat adat 'func' 'var' [ini=0]
- at deffnx {MGL command} fit xdat ydat adat 'func' 'var' [ini=0]
- at deffnx {MGL command} fit xdat ydat zdat adat 'func' 'var' [ini=0]
-Fit data along x-, y- and z-directions for 1d-,2d- or 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]) with weight factor =1.
- at end deffn
-
- at deffn {MGL command} putsfit @code{x y} ['pre'='' 'fnt'='' @code{size=-1}]
-Print last fitted formula with found coefficients (as numbers) at position @{@var{x}, @var{y}@}. The string @var{pre} will be printed before formula. All other parameters are the same as in @ref{Text printing (MGL)}.
- at end deffn
-
-
- at c ##################################################################
- at node Data create (MGL), Data filling (MGL), Nonlinear fitting (MGL), MGL interface
- at section Data create (MGL)
- at cindex new
- at cindex var
- at cindex list
- at cindex delete
- at cindex copy
- at cindex column
- at cindex set_id
-
- at deffn {MGL command} new dat [@code{nx=1 ny=1 nz=1}]
-Creates or recreates the array @var{dat} with specified size and fills it by zero. This command does nothing if one of parameters @var{nx}, @var{ny}, @var{nz} is zero or negative.
- at end deffn
-
- at deffn {MGL command} var dat @code{num v1 [v2=nan]}
-Creates new variable with name dat for one-dimensional array of size num. Array elements are equidistantly distributed in range [@var{v1}, @var{v2}]. If @var{v2}=@code{nan} then @var{v2=v1} is used.
- at end deffn
-
- at deffn {MGL command} list dat @code{v1 ...}
-Creates new variable with name @var{dat} and fills it by numeric values of command arguments @code{v1 ...}. Command can create one-dimensional and two-dimensional arrays with arbitrary values. For creating 2d array the user should use delimiter - which means that the following values lie in next row. Array sizes are [maximal of row sizes * number of rows]. For example, command @code{list 1 | 2 3} creates the array [1 0; 2 3]. Note, that the maximal number of arguments is 1000.
- at end deffn
-
- at deffn {MGL command} list dat d1 ...
-Creates new variable with name @var{dat} and fills it by data values of arrays of command arguments @var{d1 ...}. Command can create two-dimensional or three-dimensional (if arrays in arguments are 2d arrays) arrays with arbitrary values. Minor dimensions of all arrays in arguments should be equal to dimensions of first array d1. In the opposite case the argument will be ignored. Note, that the maximal number of arguments is 1000.
- at end deffn
-
- at deffn {MGL command} copy dat1 dat2 ['eq'='' @code{on_axis=on}]
- at deffnx {MGL command} copy dat1 @code{val}
-Creates new variable with name @var{dat1} and fills it by data values of array @var{dat2}. At this, if parameter @var{eq} is specified then the data will be modified by corresponding formula by the same way as in @code{fill} command (for @code{on_axis=on}) or in @code{modify} command (for @code{on_axis=off}).
- at end deffn
-
- at deffn {MGL command} delete dat
-Deletes variable @var{dat} and makes its memory free. Can be useful for huge data arrays.
- at end deffn
-
- at deffn {MGL command} set_id dat 'ids'
-Set the symbol id for data columns. The string must contain one symbol 'a'...'z' per column (without spaces).
- at end deffn
-
- at deffn {MGL command} info dat [@code{detail=off}]
-Display information (sizes, maximum/minimum, momentums and so on) about the data dat. Show brief information by default (if @code{detail=off}).
- at end deffn
-
- at deffn {MGL command} info 'text'
-Display @var{text} as information (warning).
- at end deffn
-
- at c ------------------------------------------------------------------
- at node Data filling (MGL), Rearrange data (MGL), Data create (MGL), MGL interface
- at section Data filling (MGL)
- at cindex fill
- at cindex modify
-
- at deffn {MGL command} fill dat v1 v2 ['dir'='x']
-Equidistantly fills the data values to range [@var{x1}, @var{x2}] in direction @var{dir}=@{@samp{x}, at samp{y}, at samp{z}@}.
- at end deffn
-
- at deffn {MGL command} fill dat 'eq' [vdat=0 wdat=0]
-Command fills the value of array according to the formula in string @var{eq}. Formula is an arbitrary expression depending on variables @samp{x}, @samp{y}, @samp{z}, @samp{u}, @samp{v}, @samp{w}. Coordinates @samp{x}, @samp{y}, @samp{z} are supposed to be normalized in @emph{bounding box} (in difference from @code{modify} commands). Variable @samp{u} is the original value of the array. Variables @samp{v} and @samp{w} are values of @var{vdat}, @var{wdat}.
- at end deffn
-
- at deffn {MGL command} modify dat 'eq' [@code{dim=0}]
-Command fills the value of array according to the formula in string @var{eq}. Formula is an arbitrary expression depending on variables @samp{x}, @samp{y}, @samp{z}, @samp{u}. Coordinates @samp{x}, @samp{y}, @samp{z} are data indexes normalized in range [0,1]. Variable @samp{u} is the original value of the array. Modification will be fulfilled only for slices >=@var{dim}.
- at end deffn
-
- at deffn {MGL command} modify dat 'eq' vdat [wdat=0]
-Command fills the value of array according to the formula in string @var{eq}. Formula is an arbitrary expression depending on variables @samp{x}, @samp{y}, @samp{z}, @samp{u}, @samp{v}, @samp{w}. Coordinates @samp{x}, @samp{y}, @samp{z} are data indexes normalized in range [0,1]. Variable @samp{u} is the original value of the array. Variables @samp{v} and @samp{w} are values of @var{vdat}, @var{wdat}. If optional data @var{vdat}, @var{wdat} (must be the same size as @var{dat}) are specified then variables @samp{v} and @samp{w} denote its values else they are zero.
- at end deffn
-
-
- at deffn {MGL command} put a @code{val [i=: j=: k=:]}
-Function sets value(s) of array a[@var{i}, @var{j}, @var{k}] = @var{val}. Negative indexes @var{i}, @var{j}, @var{k}=@samp{:} set the value @var{val} to whole range in corresponding direction(s). For example, @code{put a val : 0 :} sets a[i,0,j]=@var{val} for i=0...(a.nx-1), j=0...(a.nz-1).
- at end deffn
-
- at deffn {MGL command} put a v [@code{i=: j=: k=:}]
-Function copies value(s) from array @var{v} to the range of array @var{a}. Negative indexes @var{i}, @var{j}, @var{k}=@samp{:} set the range in corresponding direction(s). At this minor dimensions of array @var{v} should be large than corresponding dimensions of array @var{a}. For example, @code{put a v : 0 :} sets a[i,0,j]=v.ny>nz ? v[i,j] : v[i], where i=0...(a.nx-1), j=0...(a.nz-1) and condition v.nx>=a.nx is true.
- at end deffn
-
-
-
- at c ------------------------------------------------------------------
- at node Rearrange data (MGL), File I/O (MGL), Data filling (MGL), MGL interface
- at section Rearrange data (MGL)
- at cindex rearrange
- at cindex extend
- at cindex transpose
- at cindex squeeze
- at cindex crop
-
- at deffn {MGL command} rearrange dat @code{mx [my=0 mz=0]}
-Rearrange dimensions without changing data array so that resulting sizes should be @var{mx}*@var{my}*@var{mz} < nx*ny*nz. If some of parameter @var{my} or @var{mz} are zero then it will be selected to optimal fill of data array. For example, if @var{my}=0 then it will be change to @var{my}=nx*ny*nz/@var{mx} and @var{mz} will be 1.
- at end deffn
-
- at deffn {MGL command} extend dat @code{n1 [n2=0]}
-Increase the dimensions of the data by inserting new (|@var{n1}|+1)-th slices after (for @var{n1}>0) or before (for @var{n1}<0) of existed one. It is possible to insert 2 dimensions simultaneously for 1d data by using parameter @var{n2}. Data to new slices is copy from existed one. For example, for @var{n1}>0 new array will be
- at iftex
- at math{a_{ij}^{new} = a_i^{old}} where j=0... at var{n1}. Correspondingly, for @var{n1}<0 new array will be @math{a_{ij}^{new} = a_j^{old}} where i=0...|@var{n1}|.
- at end iftex
- at ifnottex
-a_ij^new = a_i^old where j=0... at var{n1}. Correspondingly, for @var{n1}<0 new array will be a_ij^new = a_j^old where i=0...|@var{n1}|.
- at end ifnottex
- at end deffn
-
- at deffn {MGL command} transpose dat ['dim'='yxz']
-Transposes (shift order of) dimensions of the data. New order of dimensions is specified int string @var{dim}. This command may be useful also for the reading of one-dimensional data.
- at end deffn
-
- at deffn {MGL command} squeeze dat @code{rx [ry=1 rz=1 sm=off]}
-Reduces the data size by excluding data elements which indexes are not divisible by @var{rx}, @var{ry}, @var{rz} correspondingly. Parameter @var{sm} set to use smoothing
- at iftex
-(i.e. @math{a_{out}[i]=\sum_{j=i}^{i+r}a[j]/r}) or not (i.e. @math{a_{out}[i]=a[j*r]}).
- at end iftex
@ifnottex
-(i.e. out[i]=\sum_@{j=i@}^@{i+r@} a[j]/r) or not (i.e. out[i]=a[j*r]).
- at end ifnottex
- at end deffn
-
- at deffn {MGL command} crop dat @code{n1 n2} 'dir'
-Cuts off edges of the data @var{i}<@var{n1} and @var{i}>@var{n2} if @var{n2}>0 or @var{i}>@code{n[xyz]}- at var{n2} if @var{n2}<=0 along direction @var{dir}.
- at end deffn
-
- at c ------------------------------------------------------------------
- at node File I/O (MGL), Make another data (MGL), Rearrange data (MGL), MGL interface
- at section File I/O (MGL)
- at cindex read
- at cindex readhdf
- at cindex readmat
- at cindex readall
- at cindex save
- at cindex savehdf
- at cindex export
- at cindex import
-
- at deffn {MGL command} read dat 'fname'
-Reads data from tab-separated text file with auto determining sizes of the data.
- at end deffn
-
- at deffn {MGL command} read dat 'fname' @code{mx [my=1 mz=1]}
-Reads data from text file with specified data sizes. This command does nothing if one of parameters @var{mx}, @var{my} or @var{mz} is zero or negative.
- at end deffn
-
- at deffn {MGL command} readmat dat 'fname' [@code{dim=2}]
-Read data from text file with size specified at beginning of the file by first @var{dim} numbers. At this, variable @var{dim} set data dimensions.
- at end deffn
-
- at deffn {MGL command} readall dat 'templ' @code{v1 v2 [dv=1 slice=off]}
-Join data arrays from several text files. The file names are determined by function call @code{sprintf(fname,templ,val);}, where @var{val} changes from @var{v1} to @var{v2} with step @var{dv}. The data load one-by-one in the same slice if @var{slice}=@code{off} or as slice-by-slice if @var{slice}=@code{on}.
- at end deffn
-
- at deffn {MGL command} readall dat 'templ' @code{[slice=off]}
-Join data arrays from several text files which filenames satisfied the template @var{templ} (for example, @var{templ}=@code{"t_*.dat"}). The data load one-by-one in the same slice if @var{slice}=@code{off} or as slice-by-slice if @var{slice}=@code{on}.
- at end deffn
-
- at deffn {MGL command} save dat 'fname'
-Saves the whole data array to tab-separated text file.
- at end deffn
-
- at deffn {MGL command} readhdf dat 'fname' 'dname'
-Reads data array named @var{dname} from HDF file @var{fname}.
- at end deffn
- at deffn {MGL command} savehdf dat 'fname' 'dname'
-Saves data array named @var{dname} from HDF file @var{fname}.
- at end deffn
-
- at deffn {MGL command} import dat 'fname' 'sch' [@code{v1=0 v2=1}]
-Reads data from bitmap file. The RGB values of bitmap pixels are transformed to float values in range [@var{v1}, @var{v2}] using color scheme @var{sch} (@pxref{Color scheme}).
- at end deffn
-
- at deffn {MGL command} export dat 'fname' 'sch' [@code{v1=0 v2=0}]
-Saves data matrix to bitmap file. The data values are transformed from range [@var{v1}, @var{v2}] to RGB pixels of bitmap using color scheme @var{sch} (@pxref{Color scheme}). If @var{v1}>=@var{v2} then the values of @var{v1}, @var{v2} are automatically determined as minimal and maximal value of the data array.
- at end deffn
+ at node Top
+ at top MGL script language
- at c ------------------------------------------------------------------
- at node Make another data (MGL), Commands on direction (MGL), File I/O (MGL), MGL interface
- at section Make another data (MGL)
- at cindex subdata
- at cindex hist
- at cindex momentum
- at cindex sum
- at cindex max
- at cindex min
- at cindex combine
- at cindex evaluate
- at cindex resize
+This file documents the MGL script language. It corresponds to release @value{VERSION} of the MathGL library. Please report any errors in this manual to @email{mathgl.abalakin@@gmail.org}. More information about MGL and MathGL can be found at the project homepage, @uref{http://mathgl.sourceforge.net/}.
- at deffn {MGL command} combine res adat bdat
-Returns direct multiplication of arrays (like, res[i,j] = adat[i]*bdat[j] and so on).
- at end deffn
+Copyright @copyright{} 2008 Alexey A. Balakin.
- at deffn {MGL command} evaluate res dat idat [@code{norm=on}]
- at deffnx {MGL command} evaluate res dat idat jdat [@code{norm=on}]
- at deffnx {MGL command} evaluate res dat idat jdat kdat [@code{norm=on}]
-Get array which values is result of interpolation of original array for coordinates from other arrays. All dimensions must be the same for data @var{idat}, @var{jdat}, @var{kdat}. Coordinates from @var{idat}, @var{jdat}, @var{kdat} are supposed to be normalized in range [0,1] (if @var{norm}=@code{true}) or in range [0,nx], [0,ny], [0,nz] correspondingly.
- at end deffn
+ at quotation
+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.''
- at deffn {MGL command} hist res dat @code{num v1 v2 [nsub=0]}
- at deffnx {MGL command} hist res dat wdat @code{num v1 v2 [nsub=0]}
-Creates @var{num}-th points distribution @var{res} of the data values of @var{dat} in range [@var{v1}, @var{v2}]. Array @var{wdat} specifies weights of the data elements (all weight is 1 if @var{wdat} is not specified). Parameter @var{nsub} define the number of additional interpolated points (for smoothness of histogram).
- at end deffn
+(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.''
+ at end quotation
- at deffn {MGL command} hist res xdat adat
- at deffnx {MGL command} hist res xdat ydat adat
- at deffnx {MGL command} hist res xdat ydat zdat adat
-Creates distribution @var{res} of the data values of @var{adat} in axis range [Min, Max]. Array @var{adat} look like weights of the data points.
- at end deffn
-
-
-
-
- at deffn {MGL command} momentum res dat 'how' ['dir'='z']
-Get momentum (1D-array) of the data along direction @var{dir}. String @var{how} contain kind of momentum. The momentum is defined like as
- at iftex
- at math{res_k = \sum_{ij} how(x_i,y_j,z_k) a_{ij}/\sum_{ij} a_{ij}}
- at end iftex
- at ifnottex
-res_k = \sum_ij how(x_i,y_j,z_k) a_ij/ \sum_ij a_ij
- at end ifnottex
-if @var{var}=@samp{z} and so on. Coordinates @samp{x}, @samp{y}, @samp{z} are data indexes normalized in range [0,1].
- at end deffn
-
- at deffn {MGL command} sum res dat 'dir'
-Gets array which is the result of summation in given direction or direction(s).
- at end deffn
- at deffn {MGL command} max res dat 'dir'
-Gets array which is the maximal data values in given direction or direction(s).
- at end deffn
- at deffn {MGL command} min res dat 'dir'
-Gets array which is the minimal data values in given direction or direction(s).
- at end deffn
-
- at deffn {MGL command} resize res dat @code{mx [my=1 mz=1]}
-Makes array @var{res} of sizes @var{mx}, @var{my}, @var{mz} with interpolated data of array @var{dat}.
- at end deffn
-
- at deffn {MGL command} subdata res dat @code{xx [yy=: zz=:]}
-Extracts sub-array data @var{res} from the original data @var{dat} array keeping fixed positive index. For example @code{subdata a b : 2} extracts 3d row (indexes are zero based), @code{subdata a b 4 :} extracts 5th column, @code{subdata a b : : 3} extracts 4th slice and so on. Note that symbol @samp{:} is defined @samp{:}=@code{-1} in MGL.
- at end deffn
-
- at deffn {MGL command} trace res dat
-Gets array of diagonal elements dat[i,i] (for 2D case) or dat[i,i,i] (for 3D case) where i=0...nx-1. Function return copy of itself for 1D case. Data array must have dimensions ny,nz >= nx or ny,nz = 1.
- at end deffn
-
- at deffn {MGL command} transform dat 'type' real imag
-Do integral transformation of complex data @var{real}, @var{imag} on specified direction. Now only Fourier transformation is supported. The order of transformations is specified in string @var{type}: first character for x-dimension, second one for y-dimension, third one for z-dimension. The possible character are: @samp{f} is forward Fourier transformation, @samp{i} is inverse Fourier transformation, @samp{n} or @samp{ } is no transformation.
- at end deffn
-
- at deffn {MGL command} transforma dat 'type' ampl phase
-Do integral transformation of complex data @var{ampl}, @var{phase} on specified direction. Now only Fourier transformation is supported. The order of transformations is specified in string @var{type}: first character for x-dimension, second one for y-dimension, third one for z-dimension. The possible character are: @samp{f} is forward Fourier transformation, @samp{i} is inverse Fourier transformation, @samp{n} or @samp{ } is no transformation.
- at end deffn
-
- at deffn {MGL command} stfad res real imag @code{dn} ['dir'='x']
-Short time Fourier analysis for real and imaginary parts. Output is amplitude of partial Fourier of length @var{dn}. For example if @var{dir}=@samp{x}, result will have size @{int(nx/dn), dn, ny@} and it will contain @math{res[i,j,k]=|\sum_d^dn exp(I*j*d)*(real[i*dn+d,k]+I*imag[i*dn+d,k])|/dn}.
- at end deffn
-
- at deffn {MGL command} pde res 'ham' ini_re ini_im [@code{dz=0.1 k0=100}]
-Solves equation du/dz = i*k0*@var{ham}(p,q,x,y,z,|u|)[u], where p=-i/k0*d/dx, q=-i/k0*d/dy are pseudo-differential operators. Parameters @var{ini_re}, @var{ini_im} specify real and imaginary part of initial field distribution. Coordinates of the equation (and the solution) are supposed to be in the bounding box. Note, that really this ranges are increased by factor 3/2 for purpose of reducing reflection from boundaries. Parameter @var{dz} set the step along evolutionary coordinate z. At this moment, simplified form of function @var{ham} is supported -- all ``mixed'' terms (like @samp{x*p}->x*d/dx) are excluded. For example, in 2D case this function is effectively @math{ham = f(p,z) + g(x,z,u)}. However commutable combinations (like @samp{x*q}->x*d/dy) are allowed. Here variable @samp{u} is used for field amplitude |u|. This allow one solve nonlinear problems -- for example, for nonlinear Shrodinger equation you may set @code{ham='p^2+q^2-u^2'}. You may specify imaginary part for wave absorption, like @code{ham = 'p^2+i*x*(x>0)'}, but only if dependence on variable @samp{i} is linear (i.e. @math{ham = hre+i*him}).
- at end deffn
-
- at deffn {MGL command} ray res 'ham' @code{x0 y0 z0 p0 q0 v0 [dt=0.1 tmax=10]}
-Solves GO ray equation like d at emph{r}/dt = d @var{ham}/d at emph{p}, d at emph{p}/dt = -d @var{ham}/d at emph{r}. This is Hamiltonian equations for particle trajectory in 3D case. Here @var{ham} is Hamiltonian which may depend on coordiantes @samp{x}, @samp{y}, @samp{z}, momentums @samp{p}=px, @samp{q}=py, @samp{v}=pz and time @samp{t}: @math{ham = H(x,y,z,p,q,v,t)}. The starting point (at @code{t=0}) is defined by variables @{@var{x0}, @var{y0}, @var{z0}, @var{p0}, @var{q0}, @var{v0}@}. Parameters @var{dt} and @var{tmax} specify the integration step and maximal time for ray tracing. Result is array of @{x,y,z,p,q,v,t@} with dimensions @{7 * int(@var{tmax}/@var{dt}+1) @}.
- at end deffn
-
- at deffn {MGL command} qo2d res 'ham' ini_re ini_im ray [@code{r=1 k0=100} xx=0 yy=0]
-Solves equation du/dt = i*k0*@var{ham}(p,q,x,y,|u|)[u], where p=-i/k0*d/dx, q=-i/k0*d/dy are pseudo-differential operators (see @code{mglPDE()} for details). Parameters @var{ini_re}, @var{ini_im} specify real and imaginary part of initial field distribution. Parameters @var{ray} set the reference ray, i.e. the ray around which the accompanied coordinate system will be maked. You may use, for example, the array created by @code{mglRay()} function. Note, that the reference ray @strong{must be} smooth enough to make accompanied coodrinates unambiguity. Otherwise errors in the solution may appear. If @var{xx} and @var{yy} are non-zero then Cartesian coordinates for each point will be written into them. @sref{Beam tracing sample}
- at end deffn
-
- at deffn {MGL command} jacobian res xdat ydat [zdat=0]
-Computates the Jacobian for transformation @{i,j,k@} to @{@var{xdat}, at var{ydat}, at var{zdat}@} where initial coordinates @{i,j,k@} are data indexes normalized in range [0,1]. The Jacobian is determined by formula det||@math{dr_\alpha/d\xi_\beta}|| where @math{r}=@{@var{xdat}, at var{ydat}, at var{zdat}@} and @math{\xi}=@{i,j,k@}. All dimensions must be the same for all data arrays. Data must be 3D if all 3 arrays @{@var{xdat}, at var{ydat}, at var{zdat}@} are specified or 2D if only 2 arrays @{@var{xdat}, at var{ydat}@} are specified.
- at end deffn
-
-
-
- at c ------------------------------------------------------------------
- at node Commands on direction (MGL), Operators (MGL), Make another data (MGL), MGL interface
- at section Commands on direction (MGL)
- at cindex cumsum
- at cindex integral
- at cindex diff
- at cindex diff2
- at cindex swap
- at cindex mirror
- at cindex sew
- at cindex smooth
- at cindex envelop
- at cindex norm
- at cindex normsl
-
-These commands change the data in some direction like differentiations, integrations and so on. The direction in which the change will applied is specified by the string parameter, which may contain @samp{x}, @samp{y} or @samp{z} characters for 1-st, 2-nd and 3-d dimension correspondingly.
-
- at deffn {MGL command} cumsum dat 'dir'
-Cumulative summation of the data in given direction or directions.
- at end deffn
- at deffn {MGL command} integrate dat 'dir'
-Integrates (like cumulative summation) the data in given direction or directions.
- at end deffn
- at deffn {MGL command} diff dat 'dir'
-Differentiates the data in given direction or directions.
- at end deffn
- at deffn {MGL command} diff dat xdat ydat [zdat=0]
-Differentiates the data @var{dat} specified parametrically in direction @var{xdat} with @var{ydat}, @var{zdat}=constant. Parameter @var{zdat} can be omitted that correspond to 2D case. Parametrical differentiation uses the formula (for 2D case): @math{da/dx = (a_j*y_i-a_i*y_j)/(x_j*y_i-x_i*y_j)} where @math{a_i=da/di, a_j=da/dj} denotes usual differentiation along 1st and 2nd dimensions. The similar formula is used for 3D case. Note, that you may change the order of arguments -- for example, if you have 2D data a(i,j) which depend on coordinates @{x(i,j), y(i,j)@} then usual derivative along @samp{x} will be @code{diff a x y} and usual derivative along @samp{y} will be @code{diff a y x}.
- at end deffn
-
- at deffn {MGL command} diff2 dat 'dir'
-Double-differentiates (like Laplace operator) the data in given direction.
- at end deffn
- at deffn {MGL command} swap dat 'dir'
-Swaps the left and right part of the data in given direction (useful for Fourier spectrum).
- at end deffn
- at deffn {MGL command} mirror dat 'dir'
-Mirror the left-to-right part of the data in given direction. Looks like change the value index @var{i}->@var{n-i}.
- at end deffn
-
- at deffn {MGL command} sew dat ['dir'='xyz' @code{da=2*pi}]
-Remove value steps (like phase jumps after inverse trigonometric commands) with period @var{da} in given direction.
- at end deffn
- at deffn {MGL command} smooth data @code{type} ['dir'='xyz']
-Smooths the data on specified direction or directions by method @var{Type}. Now 4 methods are supported: @samp{0} does nothing, @samp{1} linear averaging by 3 points, @samp{2} linear averaging by 5 points, @samp{3} quadratic averaging by 5 points.
- at end deffn
-
- at deffn {MGL command} envelop dat ['dir'='x']
-Find envelop for data values along direction @var{dir}. Only one direction can be specified at once.
- at end deffn
-
- at deffn {MGL command} normsl dat @code{v1 v2} ['dir'='z' @code{keep=on sym=off}]
-Normalizes data slice-by-slice along direction @var{dir} the data in slices to range [@var{v1}, at var{v2}]. If flag @var{sym}=@code{on} then symmetrical interval [-max(|v1|,|v2|), max(|v1|,|v2|)] is used. If @var{keep} is set then maximal value of k-th slice will be limited by
- at iftex
- at math{\sqrt{\sum a_{ij}(k)/\sum a_{ij}(0)}}.
- at end iftex
- at ifnottex
- at math{\sqrt@{\sum a_ij(k)/\sum a_ij(0)@}}.
@end ifnottex
- at end deffn
-
- at deffn {MGL command} norm dat @code{v1 v2 [sym=off dim=0]}
-Normalizes the data to range [@var{v1}, at var{v2}]. If flag @var{sym}=@code{on} then symmetrical interval [-max(|v1|,|v2|), max(|v1|,|v2|)] is used. Modification will be applied only for slices >=@var{dim}.
- at end deffn
-
- at c ------------------------------------------------------------------
- at node Operators (MGL), Program flow (MGL), Commands on direction (MGL), MGL interface
- at section Operators (MGL)
- at cindex multo
- at cindex addto
- at cindex divto
- at cindex subto
-
- at deffn {MGL command} multo dat dat2
-Multiplies the data by the other one for each element.
- at end deffn
- at deffn {MGL command} divto dat dat2
-Divides the data by the other one for each element.
- at end deffn
- at deffn {MGL command} addto dat dat2
-Adds the other data.
- at end deffn
- at deffn {MGL command} subto dat dat2
-Subtracts the other data.
- at end deffn
- at deffn {MGL command} multo dat @code{val}
-Multiplies each element by the number.
- at end deffn
- at deffn {MGL command} divto dat @code{val}
-Divides each element by the number.
- at end deffn
- at deffn {MGL command} addto dat @code{val}
-Adds the number to each element.
- at end deffn
- at deffn {MGL command} subto dat @code{val}
-Subtracts the number to each element.
- at end deffn
-
- at c ------------------------------------------------------------------
- at node Program flow (MGL), Command options (MGL), Operators (MGL), MGL interface
- at section Program flow (MGL)
- at cindex call
- at cindex chdir
- at cindex define
- at cindex if
- at cindex elseif
- at cindex else
- at cindex endif
- at cindex for
- at cindex next
- at cindex once
- at cindex stop
-
-These commands control program flow, like, conditions, cycles, define script arguments and so on.
-
- at deffn {MGL command} call 'fname'
-Executes script @var{fname}.
- at end deffn
- at deffn {MGL command} chdir 'path'
-Changes the current directory to @var{path}.
- at end deffn
- at deffn {MGL command} define $N smth
-Sets @var{N}-th script argument to @var{smth}. Note, that @var{smth} is used as is (with @samp{'} symbols if present).
- at end deffn
- at deffn {MGL command} define name smth
-Create scalar variable @code{name} which have the numeric value of @code{smth}. Later you can use this variable as usual number.
- at end deffn
- at deffn {MGL command} if dat 'cond'
-Starts block which will be executed if @var{dat} satisfy to @var{cond}.
- at end deffn
- at deffn {MGL command} if @code{val}
-Starts block which will be executed if @code{val} is nonzero.
- at end deffn
- at deffn {MGL command} elseif dat 'cond'
-Starts block which will be executed if previous @code{if} or @code{elseif} is false and @var{dat} satisfy to @var{cond}.
- at end deffn
- at deffn {MGL command} elseif @code{val}
-Starts block which will be executed if previous @code{if} or @code{elseif} is false and @code{val} is nonzero.
- at end deffn
- at deffn {MGL command} else
-Starts block which will be executed if previous @code{if} or @code{elseif} is false.
- at end deffn
- at deffn {MGL command} endif
-Finishes @code{if/elseif/else} block.
- at end deffn
- at deffn {MGL command} for $N @code{v1 v2 [dv=1]}
-Starts cycle with @var{N}-th argument changing from @var{v1} to @var{v2} with the step @var{dv}.
- at end deffn
- at deffn {MGL command} for $N dat
-Starts cycle with @var{N}-th argument changing for @var{dat} values.
- at end deffn
- at deffn {MGL command} next
-Finishes @code{for} cycle.
- at end deffn
- at deffn {MGL command} once @code{val}
-The code between once on and once off will be executed only once. Useful for large data manipulation in programs like UDAV.
- at end deffn
- at deffn {MGL command} stop
-Terminate execution.
- at end deffn
-
- at c ------------------------------------------------------------------
- at node Command options (MGL), Suffixes, Program flow (MGL), MGL interface
- at section Command options (MGL)
- at cindex alpha
- at cindex alphadef
- at cindex xrange
- at cindex yrange
- at cindex zrange
- at cindex crange
- at cindex cut
- at cindex ambient
- at cindex fontsize
- at cindex marksize
- at cindex meshnum
- at cindex legend
-
-Command options allow the easy setup of the plot by changing of global settings only for this plot. Options are specified at the end of string. Each option is separated from the previous text by symbol @samp{;}. Options work so that them remember the current settings, change settings as it being set in the option, execute command and return the original settings back. So, the options usage for data handling commands or for graphics setup commands is useless.
-
-The most useful options are @code{xrange, yrange, zrange}. They sets the boundaries for data change. This boundaries are used for automatically filled variables. So, these options allow one to change the position of some plots. For example, in command @code{plot y; xrange 0.1 0.9} the x coordinate will be equidistantly distributed in range 0.1 ... 0.9.
+ at menu
+* MGL interface::
+* Examples::
+* Samples::
+* Copying This Manual::
+* Index::
+ at end menu
-The full list of options are:
- at deffn {MGL command} alpha @code{val}
-Sets alpha value (transparency) of the plot. The value should be in range [0, 1].
- at end deffn
- at deffn {MGL command} alphadef @code{val}
-Sets alpha value (transparency) of the plot. The value should be in range [0, 1].
- at end deffn
- at deffn {MGL command} ambient @code{val}
-Sets brightness of ambient light for the plot. The value should be in range [0, 1].
- at end deffn
- at deffn {MGL command} crange @code{val1 val2}
-Sets boundaries of color change for the plot.
- at end deffn
- at deffn {MGL command} xrange @code{val1 val2}
-Sets boundaries of x coordinate change for the plot.
- at end deffn
- at deffn {MGL command} yrange @code{val1 val2}
-Sets boundaries of y coordinate change for the plot.
- at end deffn
- at deffn {MGL command} zrange @code{val1 val2}
-Sets boundaries of z coordinate change for the plot.
- at end deffn
- at deffn {MGL command} cut @code{val}
-Sets whether to cut or to project the plot points lying outside the bounding box.
- at end deffn
- at deffn {MGL command} fontsize @code{val}
-Sets the size of text.
- at end deffn
- at deffn {MGL command} marksize @code{val}
-Sets the size of marks.
- at end deffn
- at deffn {MGL command} meshnum @code{val}
-Work like @code{meshnum} command.
- at end deffn
- at deffn {MGL command} legend 'txt'
-Adds string 'txt' to internal legend accumulator. The style of described line and mark is taken from arguments of the plot command. The maximal number of entries is 100.
- at end deffn
+ at rmacro sref {arg}
+ at xref{\arg\}, for sample code and picture.
+ at end rmacro
+ at macro tdref{nam}
+ at uref{http://mathgl.sourceforge.net/pdf_u3d/\nam\.pdf, 3D pdf}
+ at end macro
+ at macro MGL
+ at end macro
+ at set UDAV
- at c ------------------------------------------------------------------
- at node Suffixes, Utilities, Command options (MGL), MGL interface
- at section Suffixes for variable
+ at node MGL interface, Examples, , Top
+ at include mgl_cmd_en.texi
-Suffixes can get some numerical value (like its size, maximal or minimal value, the sum of elements and so on) of the data array in variable and use it later as usual number in command arguments. The suffixes start from point @samp{.} right after (without spaces) variable name or its sub-array. For example, @code{a.nx} give the x-size of data a, @code{b(1).max} give maximal value of second row of variable b, @code{c(:,0).sum} give sum of element in first column of c and so on.
+ at node Examples, Samples, MGL interface, Top
+ at include ex_mgl_en.texi
-The full list of suffixes are:
- at table @strong
- at item nx, ny, nz
-Give the data size in x-, y-, z-direction correspondingly.
- at item max
-Give maximal value of the data.
- at item min
-Give minimal value of the data.
- at item mx, my, mz
-Give x-, y-, z-position of data maximum.
- at item ax, ay, az, aa
-Give x-, y-, z-position of data mass center or average data value.
- at item wx, wy, wz, wa
-Give width in x-, y-, z-direction or data dispersion value.
- at item sx, sy, sz, sa
-Give skewness in x-, y-, z-direction or data skewness value.
- at item kx, ky, kz, ka
-Give kurtosis in x-, y-, z-direction or data kurtosis value.
- at item sum
-Give sum of data values.
- at item a
-Give first value of data array.
- at item fst
-Give first nonzero value of data array.
- at item lst
-Give last nonzero value of data array.
- at end table
+ at node Samples,Copying This Manual, Examples, Top
+ at include samples_en.texi
- at c ------------------------------------------------------------------
- at node Utilities, , Suffixes, MGL interface
- at section Utilities for parsing MGL
+ at node Copying This Manual, Index, Samples, Top
+ at appendix GNU Free Documentation License
+ at include fdl.texi
-MathGL library provides several tools for parsing MGL scripts. There is tools saving it to bitmap (@code{mgl2png}, @code{mgl2gif}) or vectorial (@code{mgl2eps}, @code{mgl2svg}) images. Tool @code{mglview} show MGL script and allow to rotate and setup the image. Also you can translate MGL script to C++ file by help of @code{mgl2cpp} tool.
+ at node Index, , Copying This Manual, Top
+ at unnumbered Index
-All of this tools have similar set of arguments. First argument is name of script file, next argument is optional output file name, last arguments are options. There are options for setting script parameters (it is @code{$0, $1, ... $9}) and locale settings. The script parameters have format @samp{-Nval}. Here N=0,1...9 is parameter ID and val is its value. For example, option @samp{-1test} set to substitute @samp{test} instead of @code{$1} in the script. Option -Lval set locale to val. For example, @samp{-Lutf8} will set UTF-8 locale for script.
+ at printindex cp
-Additionally you can create animated GIF file or a set of JPEG files with names @samp{frameNNNN.jpg} (here @samp{NNNN} is frame index). You should use @code{mgl2gif} tool and specify the values of @code{$0} parameter for making animation. Values of the parameter @code{$0} can be specified inside the script by comment @code{##a val} for each value @code{val} (one comment for one value) or by option(s) @samp{-Aval}. Tool @code{mgl2gif} will execute script several times (once for each specified value of @code{$0}) and save result in animated GIF file. For saving each frame in JPEG just add command @code{write ''} at the end of the script.
+ at bye
diff --git a/texinfo/mgl_ru.texi b/texinfo/mgl_ru.texi
index 3afd9f2..cee1571 100644
--- a/texinfo/mgl_ru.texi
+++ b/texinfo/mgl_ru.texi
@@ -1,1624 +1,106 @@
- at c ------------------------------------------------------------------
- at node MGL interface, Samples, Other classes, Top
- at chapter MGL interface
+\input texinfo
+ at setfilename mgl_ru.info
+ at c @documentlanguage ru
+ at documentencoding UTF-8
+ at set VERSION 1.11
+ at settitle ЯзÑк MGL Ð´Ð»Ñ Ð²ÐµÑÑии @value{VERSION}
+ at syncodeindex pg cp
+ at comment %**end of header
+
+ at copying
+ÐÑо докÑменÑаÑÐ¸Ñ Ð´Ð»Ñ MathGL (веÑÑии @value{VERSION}) -- библиоÑеки клаÑÑов и ÑÑнкÑий Ð´Ð»Ñ Ð¿Ð¾ÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð½Ð°ÑÑной гÑаÑики. ÐожалÑйÑÑа ÑообÑайÑе о лÑбÑÑ
оÑибкаÑ
в ÑÑом ÑÑководÑÑве на @email{mathgl.abalakin@@gmail.org}.
+
+Copyright @copyright{} 2009 ÐлекÑей Ðалакин.
+
+ at quotation
+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.''
+ at end quotation
+ at 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 titlepage
+ at title ЯзÑк MGL
+ at subtitle веÑÑÐ¸Ñ @value{VERSION}
+ at author Ð.Ð. Ðалакин (@uref{http://mathgl.sourceforge.net/})
+ at page
+ at vskip 0pt plus 1filll
+ at insertcopying
+ at end titlepage
+
+ at contents
-MathGL library supports (from version 1.3) the simplest scripts for data handling and plotting. These scripts can be used independently (with the help of mgl2png, mgl2eps, mgl2svg programs and others) or in the frame of the library using.
-
-MGL script language is rather simple. Each string is a command. First word of string is the name of command. Other words are command arguments. Command may have up to 1000 arguments (at least for now). Words are separated from each other by space or tabulation symbol. The upper or lower case of words is sufficient, i.e. variables a and A are different variables. Symbol @samp{#} starts the comment (all characters after # will be ignored). The exception is situation when # is a part of some string. Also options can be specified at the end of string (after symbol @samp{;}, @pxref{Command options (MGL)}). Symbol @samp{:} starts new command (like new line character) if it is not placed inside a string or inside brackets.
-
-If string contain references to external parameters (substrings @samp{$0}, @samp{$1} ... @samp{$9}) then before execution the values of parameter will be substituted instead of reference. It allows to use the same MGL script for different parameters (filenames, paths, condition and so on).
-
-Argument can be a string, a variable name or a number.
- at itemize @bullet
- at item
-The string is any symbols between ordinary marks @samp{'}.
-
- at item
-Variable name is arbitrary combination of symbols (except spaces and @samp{'}) started from a letter and with length less than 64. It is possible to use sub-arrays (like in @code{subdata} command) as command argument. For example, @code{a(1)} or @code{a(1,:)} or @code{a(1,:,:)} is second row, @code{a(:,2)} or @code{a(:,2,:)} is third column, @code{a(:,:,0)} is first slice and so on. Also you can extract a part of array from m-th to n-th element by code @code{a(m:n,:,:)} or just @code{a(m:n)}.
-
-If names for data columns was specified (by set_id command or in the file at string started with @code{##}) then it is possible to use any column combinations defined by formulas, like @code{a('n*w^2/exp(t)')}.
-
-Also, any expression (without spaces) of existed variables produce temporary variable. For example, @samp{sqrt(dat(:,5)+1)} will produce temporary variable with data values equal to @code{tmp[i,j] = sqrt(dat[i,5,j]+1)}. Such variables can not be used as 1st argument for commands which create (return) the data (like @samp{new}, @samp{read}, @samp{hist} and so on).
-
- at item
-Special names @code{nan=#QNAN, pi=3.1415926..., on=1, off=0, :=-1} are treated as number if they were not redefined by user. Variables with suffixes are treated as numbers (@pxref{Suffixes}). Also results of formulas with sizes 1x1x1 are treated as number (for example, @samp{pi/dat.nx}).
- at end itemize
-Before the first using all variables must be defined with the help of commands, like, @code{new, var, list, copy} or @code{read}.
-
-All MGL commands can be divided on several groups. I will use the following notation for a command description: command names are bold, strings are denoted by commas, variable names are italic, numbers are typewriter. Optional arguments are placed in square brackets and default values for them are shown. Detailed description of color, line styles, color schemes, font types, TeX-like symbols and formulas can be found in corresponding section.
-
- at menu
-* Graphics setup (MGL)::
-* Axis settings (MGL)::
-* Transformation matrix (MGL)::
-* Export to file (MGL)::
-* Primitives drawing (MGL)::
-* Text printing (MGL)::
-* Axis and Colorbar (MGL)::
-* Legend (MGL)::
-* 1D plotting (MGL)::
-* 2D plotting (MGL)::
-* 3D plotting (MGL)::
-* Dual plotting (MGL)::
-* Vector fields (MGL)::
-* Other plotting (MGL)::
-* Nonlinear fitting (MGL)::
-* Data create (MGL)::
-* Data filling (MGL)::
-* Rearrange data (MGL)::
-* File I/O (MGL)::
-* Make another data (MGL)::
-* Commands on direction (MGL)::
-* Operators (MGL)::
-* Program flow (MGL)::
-* Command options (MGL)::
-* Suffixes::
-* Utilities::
- at end menu
-
-
- at c ##################################################################
- at node Graphics setup (MGL), Axis settings (MGL), , MGL interface
- at section Graphics setup (MGL)
-
-Coomands in this group influences on overall graphics appearance. So all of them should be placed @emph{before} any actual plotting commands.
-
- at menu
-* Transparency (MGL)::
-* Lighting (MGL)::
-* Fog (MGL)::
-* Default sizes (MGL)::
-* Zooming (MGL)::
-* Cutting (MGL)::
-* Other settings (MGL)::
- at end menu
-
- at c ==================================================================
- at node Transparency (MGL), Lighting (MGL), , Graphics setup (MGL)
- at subsection Transparency (MGL)
- at cindex alpha
- at cindex alphadef
- at cindex transparent
- at cindex transptype
-
-There are several commands for setup transparency. The general command is @code{alpha} which switch on/off the transparency for overall plot. It influence only for graphics which created after @code{alpha} call (with one exeption, mglGraphGL). Command @code{alphadef} specify the default value of alpha-channel. You may switch off transparency of selected plot by command @code{transparent}. Finally, command @code{transptype} set the kind of transparency. @sref{Transparent surface sample}
-
- at deffn {MGL command} alpha @code{[val=on]}
-Sets the transparency on/off. It is recommended to call this command before any plotting command. Default value is @code{off}. Use @code{transparent off} in particular plot to disable its transparency.
- at end deffn
- at deffn {MGL command} alphadef @code{val}
-Default value of alpha channel (transparency) for all plotting commands. Initial value is 0.5.
- at end deffn
- at deffn {MGL command} transparent @code{val}
-Temporary switches transparency on/off for the plot.
- at end deffn
- at deffn {MGL command} transptype @code{val}
-This command set the transparency type. Normal transparency (@samp{0}) -- below things is less visible than upper ones. It does not look well in OpenGL mode (mglGraphGL) for several surfaces. Glass-like transparency (@samp{1}) -- below and upper things are commutable and just decrease intensity of light by RGB channel. Lamp-like transparency (@samp{2}) -- below and upper things are commutable and are the source of some additional light. I recommend to set @code{alphadef 0.3} or less for lamp-like transparency.
- at end deffn
-
- at c ==================================================================
- at node Lighting (MGL), Fog (MGL), Transparency (MGL), Graphics setup (MGL)
- at subsection Lighting (MGL)
- at cindex light
- at cindex ambient
-
-There are several commands for setup lighting. The general command is @code{light} which switch on/off the lighting for overall plot. It influence only for graphics which created after @code{light} call (with one exeption, mglGraphGL). Generally MathGL support up to 10 independent light sources. But in OpenGL mode only 8 of light sources is used due to OpenGL limitations. The position, color, brightness of each light source can be set separately. By default only one light source is active. It is source number @code{0} with white color, located at top of the plot.
-
- at deffn {MGL command} light @code{[val=on]}
-Sets the using of light on/off for overall plot. It is recommended to call this command before any plotting command. Default value is lightning off.
- at end deffn
- at deffn {MGL command} light @code{num val}
-Switch on/off @var{num}-th light source separately.
- at end deffn
-
- at deffn {MGL command} light @code{num xpos ypos zpos} ['col'='w' @code{br=0.5}]
-The command adds a light source with identification @var{num} at position @{@var{xpos}, @var{ypos}, @var{zpos}@}. The color of light is @var{col} (white by default). The brightness of light is @var{br} which must be in range [0,1].
- at end deffn
-
- at deffn {MGL command} ambient @code{val}
-Sets the brightness of ambient light. The value should be in range [0,1]. Initial value is 0.5.
- at end deffn
-
- at c ==================================================================
- at node Fog (MGL), Default sizes (MGL), Lighting (MGL), Graphics setup (MGL)
- at subsection Fog (MGL)
- at cindex fog
-
- at deffn {MGL command} fog @code{val [dz=0.25]}
-Command imitate a fog in the plot. Fog start from relative distance @var{dz} from view point and its density growths exponentially in depth. So that the fog influence is determined by law ~ 1-exp(- at emph{val*z}). Here @emph{z} is normalized to 1 depth of the plot. If value @var{val}=@code{0} then the fog is absent. @sref{Surface in fog sample}
- at end deffn
-
- at c ==================================================================
- at node Default sizes (MGL), Zooming (MGL), Fog (MGL), Graphics setup (MGL)
- at subsection Default sizes (MGL)
- at cindex marksize
- at cindex arrowsize
- at cindex linewidth
- at cindex ticklen
- at cindex tickstl
-
-These commands control the default (initial) values for most graphics parameters including sizes of markers, arrows, linewidth and so on. As any other settings these ones will influence only on plots created after the settings change.
-
- at deffn {MGL command} barwidth @code{val}
-Sets relative width of rectangles in @code{bars, barh, boxplot}. Default value is @code{0.7}.
- at end deffn
-
- at deffn {MGL command} marksize @code{val}
-The size of marks. Default value is @code{1}.
- at end deffn
-
- at deffn {MGL command} arrowsize @code{val}
-The size of arrows for lines and curves. Default value is @code{1}.
- at end deffn
-
- at deffn {MGL command} linewidth @code{val}
-The variable define the base width for all lines. The value <1 is ignored. Increase of this variables is actual for large bitmap pictures. Default value is @code{1}.
- at end deffn
-
- at deffn {MGL command} ticklen @code{val} [@code{stt=1}]
-The relative length of axis ticks. Default value is @code{0.1}. Parameter @var{stt}>0 set relative length of subticks which is in @code{sqrt(1+stt)} times smaller.
- at end deffn
-
- at deffn {MGL command} tickstl 'stl' ['sub'='']
-The line style of axis ticks (@var{stl}) and subticks (@var{sub}). If @var{stl}='' then default style is used (@samp{k} or @samp{w} depending on transparency type). If @var{sub}='' then ticks style is used (i.e. @var{stl}).
- at end deffn
-
- at c ==================================================================
- at node Zooming (MGL), Cutting (MGL), Default sizes (MGL), Graphics setup (MGL)
- at subsection Zooming (MGL)
- at cindex plotfactor
- at cindex zoom
-
-These commands control the overall zooming of the picture or the sub-picture. Normally you can use these variables and commands for removing ``white'' spaces around a plot.
-
- at deffn {MGL command} plotfactor @code{val}
-The factor of plot size. It is not recommended to set it lower then 1.6. This is some analogue of command @code{zoom} but applied not to overall image but for each @code{inplot}. Use negative value to enable automatic @code{plotfactor} selection.
- at end deffn
-
- at deffn {MGL command} zoom @code{x1 y1 x2 y2}
-The command changes the scale of graphics that correspond to zoom in/out of the picture. After command call the current plot will be cleared and further the picture will contain plotting from its part [x1,x2]*[y1,y2]. Here picture coordinates @var{x1}, @var{x2}, @var{y1}, @var{y2} changes from 0 to 1. Use @code{zoom 0 0 1 1} to return default view.
- at end deffn
-
- at c ==================================================================
- at node Cutting (MGL), Other settings (MGL), Zooming (MGL), Graphics setup (MGL)
- at subsection Cutting (MGL)
- at cindex cut
-
-These commands set the condition when the points are excluded (cutted) from the drawing.
-
- at deffn {MGL command} cut @code{val}
-Determines how points outside bounding box are drawn. If it is @code{true} then points are excluded from plot (it is default) otherwise the points are projected to edges of bounding box.
- at end deffn
-
- at deffn {MGL command} cut @code{x1 y1 z1 x2 y2 z2}
-Lower and upper edge of the box in which never points are drawn. If both edges are the same (the variables are equal) then the cutting box is empty. @sref{CutMinMax sample}
- at end deffn
-
- at deffn {MGL command} cut 'cond'
-Command set the cutting off condition by formula @var{cond}. This condition determine will point be plotted or not. If value of formula is nonzero then point is omitted, otherwise it plotted. Set argument as @code{''} to disable cutting off condition. @sref{CutOff sample}
- at end deffn
-
- at c ==================================================================
- at node Other settings (MGL), , Cutting (MGL), Graphics setup (MGL)
- at subsection Other settings (MGL)
- at cindex font
- at cindex rotatetext
- at cindex palette
- at cindex meshnum
- at cindex axialdir
-
- at deffn {MGL command} font 'fnt' [@code{val=6}]
-Font style for text and labels (see text). Initial style is 'fnt'='rC' give Roman font with centering. Parameter @code{val} sets the size of font for tick and axis labels. Default font size of axis labels is 1.4 times large than for tick labels. For more detail, @pxref{Font style}.
- at end deffn
-
- at deffn {MGL command} rotatetext @code{val}
-Set to use or not text rotation along axis. Initial value is @code{on}.
- at end deffn
-
- at deffn {MGL command} palette 'colors'
-Set the palette as selected colors. Default value is @code{'Hbgrcmyhlnqeup'}. The palette is used mostly in 1D plots for curves which styles are not specified.
- at end deffn
-
- at deffn {MGL command} meshnum @code{num}
-Sets approximate number of lines in @code{mesh, fall, grid} and also the number of hachures in @code{vect, vectc, dew} and the number of cells in @code{cloud}. By default (=0) it draws all lines/hachures/cells.
- at end deffn
-
- at deffn {MGL command} axialdir 'dir'
-Set direction around which curve rotated in @code{axial, torus}. Default value is 'z'.
- at end deffn
-
- at c ==================================================================
- at node Axis settings (MGL), Transformation matrix (MGL), Graphics setup (MGL), MGL interface
- at section Axis settings (MGL)
- at cindex axis
- at cindex caxis
- at cindex xrange
- at cindex yrange
- at cindex zrange
- at cindex crange
- at cindex xtick
- at cindex ytick
- at cindex ztick
- at cindex ctick
- at cindex origin
- at cindex adjust
-
-These large set of commands control how the axis and ticks will be drawn. Note that there is 3-step transformation of data coordinates are performed. Firstly, coordinates are projected and cutting is applied (@pxref{Cutting (MGL)}), after it transformation formulas are applied, and finally the data was normalized in bounding box.
-
- at deffn {MGL command} axis @code{x1 y1 x2 y2}
- at deffnx {MGL command} axis @code{x1 y1 z1 x2 y2 z2}
- at deffnx {MGL command} ranges @code{x1 x2 y1 y2 [z1=0 z2=0]}
-Sets the ranges of coordinates changing. Also it sets the range for coloring (analogous to @code{caxis z1 z2}). Initial ranges are [-1, 1].
- at end deffn
-
- at deffn {MGL command} axis 'fx' 'fy' ['fz'='' 'fa'='']
-Sets the transformation formulas for curvilinear coordinates. Each string should contain mathematical expression for real coordinate depending on internal coordinates 'x', 'y', 'z' and 'a' or 'c' for colorbar. For example, the cylindrical coordinates are introduced as @code{axis 'x*cos(y)' 'x*sin(y)' 'z'}. For removing of formulas the corresponding parameter should be @code{''}. The using of transformation formulas will slightly slowing the program, i.e. @code{axis '' '' ''} is faster than @code{axis '1*x' '1*y' '1*z'}. Initially all formulas are absent (Cartesian coordinates are used). For more details about functions and formulas, @pxref{mglFormula class}.
- at end deffn
-
- at deffn {MGL command} axis @code{how}
-Sets one of the predefined transformation formulas for curvilinear coordinate. Paramater @var{how} define the coordinates: @code{0} -- Cartesian coordinates (no transformation); @code{1} -- Polar coordiantes @math{x_n=x*cos(y),y_n=x*sin(y), z_n=z}; @code{2} -- Spherical coordinates @math{x_n=x*sin(y)*cos(z), y_n=x*sin(y)*sin(z), z_n=x*cos(y)}; @code{3} -- Parabolic coordinates @math{x_n=x*y, y_n=(x*x-y*y)/2, z_n=z}; @code{4} -- Paraboloidal coordinates @math{x_n=(x*x-y*y)*cos(z)/2, y_n=(x*x-y*y)*sin(z)/2, z_n=x*y}; @code{5} -- Oblate coordinates @math{x_n=cosh(x)*cos(y)*cos(z), y_n=cosh(x)*cos(y)*sin(z), z_n=sinh(x)*sin(y)}; @code{6} -- Prolate coordinates @math{x_n=sinh(x)*sin(y)*cos(z), y_n=sinh(x)*sin(y)*sin(z), z_n=cosh(x)*cos(y)}; @code{7} -- Elliptic coordinates @math{x_n=cosh(x)*cos(y), y_n=sinh(x)*sin(y), z_n=z}; @code{8} -- Toroidal coordinates @math{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))}; @code{9} -- Bispherical coordinates @math{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))}; @code{10} -- Bipolar coordinates @math{x_n=sinh(x)/(cosh(x)-cos(y)), y_n=sin(y)/(cosh(x)-cos(y)), z_n=z}.
- at end deffn
-
- at deffn {MGL command} caxis @code{z1 z2}
-Sets the range for surface coloring. Initial range is [-1, 1].
- at end deffn
-
- at deffn {MGL command} origin @code{x0 y0 [z0=nan]}
-Center of axis cross section. If one of values is @code{nan} then MathGL library try to select optimal axis position.
- at end deffn
-
- at deffn {MGL command} ternary @code{val}
-The command sets to draws Ternary plot. This special plot is for 3 dependent coordinates (components) @var{a}, @var{b}, @var{c} so that @var{a}+ at var{b}+ at var{c}=1. MathGL uses only 2 independent coordinates @var{a}=x and @var{b}=y since it is enough to plot everything. At this third coordinate z act as another parameter to produce contour lines, surfaces and so on. @sref{Ternary plot sample}
- at end deffn
-
- at deffn {MGL command} xrange dat [@code{add=off fact=0}]
- at deffnx {MGL command} yrange dat [@code{add=off fact=0}]
- at deffnx {MGL command} zrange dat [@code{add=off fact=0}]
- at deffnx {MGL command} crange dat [@code{add=off fact=0}]
-Sets the range for x-,y-,z- coordinate or coloring as minimal and maximal values of data @var{dat}. Parameter @code{add=on} shows that the new range will be joined to existed one (nut will not replace it). Parameter @var{fact} add additional range increase on value (@var{Max}- at var{Min})*@var{fact}.
- at end deffn
-
- at deffn {MGL command} xrange @code{x1 x2}
- at deffnx {MGL command} yrange @code{x1 x2}
- at deffnx {MGL command} zrange @code{x1 x2}
- at deffnx {MGL command} crange @code{x1 x2}
-Sets the range for x-,y-,z- coordinate or coloring. See also axis.
- at end deffn
-
- at deffn {MGL command} xtick @code{val [sub=0 org=nan]}
- at deffnx {MGL command} ytick @code{val [sub=0 org=nan]}
- at deffnx {MGL command} ztick @code{val [sub=0 org=nan]}
- at deffnx {MGL command} ctick @code{val}
-Sets step for x-, y-, z-axis ticks or colorbar ticks (if @var{val}>0) or it's number (if @var{val}<0) in corresponding direction. Zero value @var{val}=0 sets logarithmic ticks. Parameter @var{sub} sets the number of sub-ticks. Parameter @var{org} set the starting points for ticks. If not @code{org=nan} then the value from @code{origin} is used.
- at end deffn
-
- at deffn {MGL command} xtick 'templ'
- at deffnx {MGL command} ytick 'templ'
- at deffnx {MGL command} ztick 'templ'
- at deffnx {MGL command} ctick 'templ'
-Sets the template for x-, y-, z-axis ticks or colorbar ticks. It may contain TeX symbols also. If @var{templ}=@code{''} then default template is used (in simplest case it is @samp{%.2g}) with automatic detaching of common multiplier or common component.
- at end deffn
-
- at deffn {MGL command} xtick @code{val1} 'lbl1' [@code{val2} 'lbl2' ...]
- at deffnx {MGL command} ytick @code{val1} 'lbl1' [@code{val2} 'lbl2' ...]
- at deffnx {MGL command} ztick @code{val1} 'lbl1' [@code{val2} 'lbl2' ...]
-Sets manual positions @var{val1}, at var{val2},... and labels @var{lbl1}, at var{lbl2},... for ticks along x-, y-, z-axis. Labels may contain TeX symbols also.
- at end deffn
-
- at deffn {MGL command} adjust ['dir'='xyzc']
-Set the ticks step, number of sub-ticks and initial ticks position to be the most human readable for the axis along direction(s) @var{dir}.
- at end deffn
-
-
- at c ##################################################################
- at node Transformation matrix (MGL), Export to file (MGL), Axis settings (MGL), MGL interface
- at section Transformation matrix (MGL)
- at cindex aspect
- at cindex rotate
- at cindex subplot
- at cindex inplot
- at cindex identity
- at cindex perspective
-
-These commands control how and where further plotting will be placed. There is a curtain order of calling of these commands for the better plot view. First one should be @code{subplot} or @code{inplot} for specifying the place. After it a @code{rotate} and @code{aspect}. And finally any other plotting commands may be called. Alternatevely you can use @code{columnplot} for position plots in the column one by another without gap between plot axis (bounding boxes).
-
- at deffn {MGL command} subplot @code{nx ny m [dx=0 dy=0]}
-Puts further plotting in a @var{m}-th cell of @var{nx}*@var{ny} grid of the whole frame area. This command set off any aspects or rotations. So it should be used first for creating the subplot. From the aesthetical point of view it is not recommended to use this command with different matrices in the same frame. The position of the cell can be shifted from its default position by relative size @var{dx}, @var{dy}.
- at end deffn
-
- at deffn {MGL command} inplot @code{x1 x2 y1 y2 [rel=off]}
-Puts further plotting in some region of the whole frame surface. This command allows one to create a plot in arbitrary place of the screen. The position is defined by rectangular coordinates [@var{x1}, @var{x2}]*[@var{y1}, @var{y2}]. The coordinates @var{x1}, @var{x2}, @var{y1}, @var{y2} are normalized to interval [0, 1]. If parameter @var{rel}=@code{on} then the relative position to current @code{subplot} is used. This command set off any aspects or rotations. So it should be used first for creating subplot.
- at end deffn
-
- at deffn {MGL command} columnplot @code{num ind}
-Puts further plotting in @var{ind}-th cell of column with @var{num} cells. The position is relative to previous @code{subplot} call (or @code{inplot} with @code{rel=off}).
- at end deffn
-
- at deffn {MGL command} rotate @code{tetz tetx [tety=0]}
-Rotates a further plotting relative to each axis (x, z, y) consecutively on angles @var{tetx}, @var{tetz}, @var{tety}.
- at end deffn
-
- at deffn {MGL command} rotate @code{tet x y z}
-Rotates a further plotting around vector @{x,y,z@} on angle @var{tet}.
- at end deffn
-
- at deffn {MGL command} aspect @code{ax ay [az=1]}
-Defines aspect ratio for the plot. The viewable axes will be related one to another as the ratio @var{ax:ay:az}. For the best effect it should be used after @code{rotate} command.
- at end deffn
-
- at deffn {MGL command} perspective @code{val}
-Add (switch on) the perspective to plot. The parameter @math{val ~ 1/z_@{eff@} \in [0,1)}. By default (@code{val=0}) the perspective is off.
- at end deffn
-
- at c ##################################################################
- at node Export to file (MGL), Primitives drawing (MGL), Transformation matrix (MGL), MGL interface
- at section Export to file (MGL)
- at cindex write
- at cindex setsize
-
- at deffn {MGL command} write 'fname' [@code{solid=off}]
-Exports current picture/frame to file 'fname' (file type is determined by extension). Solid (usually white) background will be used if @code{solid=on}. If 'fname'='' then the file @samp{frameNNNN.jpg} is used, where @samp{NNNN} is current frame id.
- at end deffn
-
- at deffn {MGL command} setsize @code{w h}
-Sets size of picture in pixels. This function call @strong{must be} placed before any plotting command because it completely remove picture content. In some program the call of this function is forbidden.
- at end deffn
-
-
- at c ##################################################################
- at node Primitives drawing (MGL), Text printing (MGL), Export to file (MGL), MGL interface
- at section Primitives drawing
- at cindex ball
- at cindex clf
- at cindex line
- at cindex curve
- at cindex facex
- at cindex facey
- at cindex facez
- at cindex cone
- at cindex drop
- at cindex sphere
-
-These commands draw some simple objects like line, point, sphere, drop, cone and so on.
-
- at deffn {MGL command} clf
-Clear the picture by removes all drawing from it. Does not change transformation matrix.
- at end deffn
-
- at deffn {MGL command} ball @code{x y} ['col'='r']
- at deffnx {MGL command} ball @code{x y z} ['col'='r']
-Draws a point (ball) at position @{@var{x}, @var{y}, @var{z}@} with color defined by string @var{col}.
- at end deffn
-
- at deffn {MGL command} line @code{x1 y1 x2 y2} ['stl'='']
- at deffnx {MGL command} line @code{x1 y1 z1 x2 y2 z2} ['stl'='']
-Draws a geodesic line (straight line in Cartesian coordinates) from point @{@var{x1}, at var{y1}, at var{z1}@} to @{@var{x2}, at var{y2}, at var{z2}@} using line style @var{stl}.
- at end deffn
-
- at deffn {MGL command} curve @code{x1 y1 dx1 dy1 x2 y2 dx2 dy2} ['stl'='']
- at deffnx {MGL command} curve @code{x1 y1 z1 dx1 dy1 dz1 x2 y2 z2 dx2 dy2 dz2} ['stl'='']
-Draws Bezier-like curve from point @{@var{x1}, at var{y1}, at var{z1}@} to @{@var{x2}, at var{y2}, at var{z2}@} using line style @var{stl}. At this tangent is co-directed with @{@var{dx1}, at var{dy1}, at var{dz1}@}, @{@var{dx2}, at var{dy2}, at var{dz2}@} and proportional to its amplitude.
- at end deffn
-
- at deffn {MGL command} facex @code{x0 y0 z0 wy wz} ['stl'='' @code{d1=0 d2=0}]
- at deffnx {MGL command} facey @code{x0 y0 z0 wx wz} ['stl'='' @code{d1=0 d2=0}]
- at deffnx {MGL command} facez @code{x0 y0 z0 wx wy} ['stl'='' @code{d1=0 d2=0}]
-Draws the solid rectangle (face) perpendicular to [x,y,z]-axis correspondingly at position @{@var{x0}, @var{y0}, @var{z0}@} with color @var{stl} and with widths @var{wx}, @var{wy}, @var{wz} along corresponding directions. At this colors can be the same for all vertexes or different if all 4 colors are specified for each vertex. Parameters @var{d1}!=0, @var{d2}!=0 set additional shift of the last vertex (i.e. to draw quadrangle).
- at end deffn
-
- at deffn {MGL command} sphere @code{x0 y0 r} ['col'='r']
- at deffnx {MGL command} sphere @code{x0 y0 z0 r} ['col'='r']
-Draw the sphere with radius @var{r} and center at point @{@var{x0}, @var{y0}, @var{z0}@} and color @var{stl}.
- at end deffn
-
- at deffn {MGL command} drop @code{x0 y0 dx dy r} ['col'='b' @code{sh=1 asp=1}]
- at deffnx {MGL command} drop @code{x0 y0 z0 dx dy dz r} ['col'='b' @code{sh=1 asp=1}]
-Draw the drop with radius @var{r} at point @{@var{x0}, at var{y0}, at var{z0}@} elongated in direction @{@var{dx}, at var{dy}, at var{dz}@} and with color @var{col}. Parameter @var{sh} set the degree of drop oblongness: @samp{0} is sphere, @samp{1} is maximally oblongness drop. Parameter @var{asp} set relative width of the drop (this is analogue of ``ellipticity'' for the sphere). @sref{Drops sample}
- at end deffn
-
- at deffn {MGL command} cone @code{x1 y1 z1 x2 y2 z2 r1} [@code{r2=-1} 'st'='' @code{edge=off}]
-Draw tube (or truncated cone if @var{edge}=@code{off}) between points @{@var{x1}, at var{y1}, at var{z1}@}, @{@var{x2}, at var{y2}, at var{z2}@} with radiuses at the edges @var{r1}, @var{r2}. If @var{r2}<0 then it is supposed that @var{r2}=@var{r1}. The cone color is defined by string @var{stl}.
- at end deffn
-
- at deffn {MGL command} rect @code{x1 y1 x2 y2} ['st'='']
- at deffnx {MGL command} rect @code{x1 y1 z1 x2 y2 z2} ['st'='']
-Draw rectangle from point @{@var{x1}, at var{y1}, at var{z1}@} to point @{@var{x2}, at var{y2}, at var{z2}@} using colors @var{stl}. If @var{stl} have 4 or more colors then it defines colors for each rectangle vertex (useful for making gradients, like @samp{wwrr}) else first color is used for whole rectangle.
- at end deffn
-
- at c ##################################################################
- at node Text printing (MGL), Axis and Colorbar (MGL), Primitives drawing (MGL), MGL interface
- at section Text printing (MGL)
- at cindex fgets
- at cindex text
- at cindex title
-
-These commands draw the text. There are commands for drawing text in arbitrary place, in arbitrary direction and along arbitrary curve. It is possible to use arbitrary font-faces and parse many TeX commands. The Unicode text is supported. So sometimes you need to specify locale. The @code{size} argument control the size of text: if positive it give the value, if negative it give the value relative to defined by @code{font} command. @xref{Font style}.
-
- at deffn {MGL command} text @code{x y} 'text' ['fnt'='' @code{size=-1.4}]
- at deffnx {MGL command} text @code{x y z} 'text' ['fnt'='' @code{size=-1.4}]
-Draws unrotated text string @var{text} at position @{@var{x}, at var{y}, at var{z}@} with specified style @var{fnt} and @var{size}. By default parameters from @code{font} command are used.
- at end deffn
-
- at deffn {MGL command} text @code{x y dx dy} 'text' [@code{size=-1.4}]
- at deffnx {MGL command} text @code{x y z dx dy dz} 'text' [@code{size=-1.4}]
-The command plots the string @var{text} at position @{@var{x}, at var{y}, at var{z}@} along direction @{@var{dx}, at var{dy}, at var{dz}@} with specified style @var{fnt} and @var{size}. By default parameters from @code{font} command are used.
- at end deffn
-
- at deffn {MGL command} title 'text' ['fnt'='' @code{size=-2}]
-Print string @var{text} as title of the picture (at the top of the picture). Can be used at any place (even inside @code{subplot}).
- at end deffn
-
- at deffn {MGL command} fgets @code{x y} 'fname' [@code{n=0} 'fnt'='' @code{size=-1.4}]
- at deffnx {MGL command} fgets @code{x y z} 'fname' [@code{n=0} 'fnt'='' @code{size=-1.4}]
-Draws unrotated @var{n}-th line of file @var{fname} at position @{@var{x}, at var{y}, at var{z}@} with specified @var{size}. By default parameters from @code{font} command are used.
- at end deffn
-
-
- at deffn {MGL command} text xdat 'text' ['fnt'='' @code{size=-1 zval=nan}]
- at deffnx {MGL command} text xdat ydat 'text' ['fnt'='' @code{size=-1 zval=nan}]
- at deffnx {MGL command} text xdat ydat zdat 'text' ['fnt'='' @code{size=-1}]
-The command draws @var{text} along the curve between points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} by font style @var{fnt} and with size @var{size}. The string @var{fnt} may contain symbols @samp{t} for printing the text under the curve (default), or @samp{T} for printing the text above the curve. The sizes of 1st dimension must be equal for all arrays @var{xdat.nx=ydat.nx=zdat.nx}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{z}[i] = @var{zval} is used. @sref{Text sample}
- at end deffn
-
- at c ##################################################################
- at node Axis and Colorbar (MGL), Legend (MGL), Text printing (MGL), MGL interface
- at section Axis and Colorbar (MGL)
- at cindex axis
- at cindex box
- at cindex grid
- at cindex colorbar
- at cindex xlabel
- at cindex ylabel
- at cindex zlabel
- at cindex tlabel
-
-These commands draw the ``things for measuring'', like axis with ticks, colorbar with ticks, grid along axis, bounding box and labels for axis. For more information @pxref{Axis settings (MGL)}.
-
- at deffn {MGL command} axis ['dir'='xyz' @code{adjust=off}]
-Draws axes with ticks (@pxref{Axis settings (MGL)}) in directions determined by string parameter @var{dir}.If string contain the symbol @samp{_} then tick labels are not printed. Font for ticks labels is determined by command @code{font}. Ticks will be automatically adjusted if @var{adjust}=@code{on} (by call of @code{adjust 'dir'}).
- at end deffn
-
- at deffn {MGL command} colorbar ['sch'='' @code{pos=0}]
-Draws colorbar with color scheme @var{sch} (current scheme if @code{sch=''}) at edge of plot. Parameter @var{pos} specifies the position of colorbar: @samp{0} - at right (default), @samp{1} - at left, @samp{2} - at top, @samp{3} - at bottom. @sref{Dens sample}
- at end deffn
-
- at deffn {MGL command} colorbar 'sch' @code{pos x y w h}
-Draws colorbar with color scheme @var{sch} (current scheme if not specified) at arbitrary position of subplot @{@var{x}, @var{y}@} (supposed to be in range [0,1]). Parameter @var{pos} specifies the position of colorbar labels: @samp{0} - at left, @samp{1} - at right, @samp{2} - at bottom, @samp{3} - at top. Parameters @var{w}, @var{h} set the relative width and height of the colorbar.
- at end deffn
-
- at deffn {MGL command} colorbar vdat ['sch'='' @code{pos=0}]
-Draws colorbar with sharp colors @var{sch} (current palette if @code{sch=NULL}) for values @var{vdat} at edge of plot. Parameter @var{pos} specifies the position of colorbar: @samp{0} - at right (default), @samp{1} - at left, @samp{2} - at top, @samp{3} - at bottom. @sref{Dens sample}
- at end deffn
-
- at deffn {MGL command} grid ['dir'='xyz' 'pen'='B']
-Draws grid lines perpendicular to direction determined by string parameter @var{dir}. The step of grid lines is the same as tick step for an @code{axis}. The style of lines is determined by @var{pen} parameter.
- at end deffn
-
- at deffn {MGL command} box ['stl'='k' @code{ticks=on}]
-Draws bounding box outside the plotting volume with line style 'stl'.
- at end deffn
-
- at deffn {MGL command} xlabel 'text' [@code{pos=1 size=-1.4 shift=0}]
- at deffnx {MGL command} ylabel 'text' [@code{pos=1 size=-1.4 shift=0}]
- at deffnx {MGL command} zlabel 'text' [@code{pos=1 size=-1.4 shift=0}]
- at deffnx {MGL command} tlabel 'text' [@code{pos=1 size=-1.4 shift=0}]
-Prints the label @var{text} for x-,y-,z-,t-axis (here @samp{t} is ``ternary'' axis @math{t=1-x-y}). The position of label is determined by @var{pos} parameter. If @var{pos}=0 then label is printed at the center of axis. If @var{pos}>0 then label is printed at the maximum of axis (default). If @var{pos}<0 then label is printed at the minimum of axis. The font size is 1.4 times larger than the one for ticks @code{font}. Parameter @code{shift} specify additional shifting of the label. @xref{Text printing (MGL)}.
- at end deffn
-
- at c ##################################################################
- at node Legend (MGL), 1D plotting (MGL), Axis and Colorbar (MGL), MGL interface
- at section Legend (MGL)
- at cindex legend
- at cindex addlegend
- at cindex clearlegend
-
-These commands draw legend to the graph (useful for @ref{1D plotting (MGL)}). Legend entry is a pair of strings: one for style of the line, another one with description text (with included LaTeX parsing). The array of string are accumulated first to the internal arrays (by command @code{addlegend}) and are plotted later. The position of the legend can be selected automatic or manually. Parameters @var{fnt} and @var{size} specify the font style and size. Parameter @var{llen} set the relative width of the line sample and the text indent (default value is 0.1). If line style string for entry is empty then the corresponding text is printed without indent. @sref{Legend sample}
-
- at deffn {MGL command} legend [@code{pos=3} 'fnt'='rL' @code{size=-1 llen=0.1}]
-Draws legend of accumulated legend entries by font @var{fnt} with specified @var{size}. Parameter @var{pos} sets the position of the legend: @samp{0} is bottom left corner, @samp{1} is bottom right corner, @samp{2} is top left corner, @samp{3} is top right corner (is default).
- at end deffn
-
- at deffn {MGL command} legend @code{x y} ['fnt'='rL' @code{size=-1 llen=0.1}]
-Draws legend of accumulated legend entries by font @var{fnt} with @var{size}. Position of legend is determined by parameter @var{x}, @var{y} which supposed to be normalized to interval [0,1].
- at end deffn
-
- at deffn {MGL command} addlegend 'text' 'stl'
-Adds string @var{text} to internal legend accumulator. The style of described line and mark is specified in string @var{stl} (@pxref{Line styles}). Maximal number of entries is 100.
- at end deffn
-
- at deffn {MGL command} clearlegend
-Clears saved legend strings.
- at end deffn
-
- at deffn {MGL command} legendbox @code{val}
-Switches on/off the drawing of a box near legend. By default, the box is drawn.
- at end deffn
-
-
-
- at c ##################################################################
- at node 1D plotting (MGL), 2D plotting (MGL), Legend (MGL), MGL interface
- at section 1D plotting (MGL)
- at cindex plot
- at cindex tens
- at cindex area
- at cindex bars
- at cindex barh
- at cindex stem
- at cindex step
- at cindex torus
- at cindex chart
- at cindex mark
- at cindex textmark
- at cindex error
- at cindex tube
- at cindex region
-
-These commands perform plotting of 1D data. 1D means that data depended from only 1 parameter like parametric curve @{x(i),y(i),z(i)@}, i=1...n. Most of plotting type has similar interface. There are 3D version and two 2D versions. One of last requires single array. The parameters of line and marks are specified by the string argument. If the string parameter is NULL then solid line with color from palette Pal is used (@pxref{Palette and colors}). Also there are some special 1d plots having slightly different interface: surface of curve rotation (Torus), chart (Chart) and error boxes (Error), marks with variable size (Mark), tubes (Tube) and so on. @xref{Line styles}.
-
-The plots are drawn for each row if one of the data is the matrix. By any case the sizes of 1st dimension @strong{must be equal} for all arrays @var{x.nx=y.nx=z.nx}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=NULL}) solid line with color from palette is used (@pxref{Palette and colors}).
-
- at deffn {MGL command} plot ydat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} plot xdat ydat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} plot xdat ydat zdat ['stl'='']
-Draws continuous lines between points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). See also @code{tens, radar, area, step, stem, tube, mark, error, belt}. @sref{Plot sample}
- at end deffn
-
-
- at deffn {MGL command} radar adat ['stl'='' @code{r=-1}]
-Draws radar chart which is continuous lines between points located on an radial lines (like plot in Polar coordinates). The plots are drawn for each row if one of the data is the matrix. Parameter @var{r} set the additional shift of data (i.e. the data @var{adat}+ at var{r} is used instead of @var{adat}). If @code{r<0} then @code{r=max(0, -min(adat)}. String @var{pen} specifies the color and style of line and marks (@pxref{Line styles}). By default (@code{pen=""}) solid line with color from palette is used (@pxref{Palette and colors}). If @var{pen} containt @samp{#} symbol then "grid" (radial lines and circle for @var{r}) is drawn See also @code{plot}. @sref{Radar sample}
- at end deffn
-
- at deffn {MGL command} tens ydat cdat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} tens xdat ydat cdat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} tens xdat ydat zdat cdat ['stl'='']
-Draws continuous lines between points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} with color defined by @var{cdat}[i] (look like tension plot). If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). See also @code{plot, mesh, fall}. @sref{Tens sample}
- at end deffn
-
- at deffn {MGL command} area ydat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} area xdat ydat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} area xdat ydat zdat ['stl'='']
-Draws continuous lines between points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} and fills it down to axis (to axis plane in 3D). If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). See also @code{plot, bars, stem, region}. @sref{Area sample}
- at end deffn
-
- at deffn {MGL command} region fdat gdat ['stl'='' @code{inside=off}]
- at deffnx {MGL command} region xdat fdat gdat ['stl'='' @code{inside=off}]
-Fills area between curves @{@var{xdat}[i], @var{fdat}[i]@} and @{@var{xdat}[i], @var{gdat}[i]@}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. Parameter @code{inside=off} set to fill are with y1<y<y2 else the area with y2<y<y1 will be also filled.
- at c If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box).
-See also @code{area, bars, stem}. @sref{Region sample}
- at end deffn
-
- at deffn {MGL command} bars ydat ['stl'='' @code{zval=nan above=off}]
- at deffnx {MGL command} bars xdat ydat ['stl'='' @code{zval=nan above=off}]
- at deffnx {MGL command} bars xdat ydat zdat ['stl'='' @code{above=off}]
-Draws vertical bars from points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} to axis (to axis plane in 3D). If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). Bars are drawn side-by-side (if @code{above = off}) or one above another (if @code{above = on}). Marks at data points are not drawn. See also @code{area, barh, stem, chart}. @sref{Bars sample}
- at end deffn
-
- at deffn {MGL command} barh vdat ['stl'='' @code{zval=nan above=off}]
- at deffnx {MGL command} bars ydat vdat ['stl'='' @code{zval=nan above=off}]
-Draws horizontal bars from points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} to y-axis. If array @var{ydat} is not specified then its an automatic array is used with values equidistantly distributed along y. Bars are drawn side-by-side (if @code{above = off}) or one above another (if @code{above = on}). Marks at data points are not drawn.
- at c If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box).
-See also @code{bars}. @sref{Barh sample}
- at end deffn
-
- at deffn {MGL command} stem ydat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} stem xdat ydat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} stem xdat ydat zdat ['stl'='']
-Draws vertical lines from points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@} to axis (to axis plane in 3D). If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). See also @code{area, bars, plot, mark}. @sref{Stem sample}
- at end deffn
-
- at deffn {MGL command} step ydat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} step xdat ydat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} step xdat ydat zdat ['stl'='']
-Draws continuous stairs for points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). See also @code{plot, stem, tile, boxs}. @sref{Step sample}
- at end deffn
-
- at deffn {MGL command} torus zdat ['stl'='']
- at deffnx {MGL command} torus rdat zdat ['stl'='']
-Draws surface which is result of curve @{@var{rdat}[i], @var{zdat}[i], @var{zdat}[i]@} rotation around @code{axialdir} axis. If array @var{rdat} is not specified then its an automatic array is used with values equidistantly distributed along x. See also @code{plot, axial}. @sref{Torus sample}
- at end deffn
-
- at deffn {MGL command} chart adat ['col'='']
-The command draws colored stripes (boxes) for data in array @var{adat}. The number of stripes is equal to the number of rows in @var{adat} (equal to @var{a.ny}). The color of each next stripe is cyclically changed from colors specified in string @var{col} or in palette. Spaces in colors denote transparent ``color'', i.e. if @var{col} contain space(s) then corresponding stripe(s) are not drawn. The stripe width is proportional to value of element in @var{a}. Chart is plotted only for data with non-negative elements. If string @var{col} have symbol @samp{#} then black border lines are drawn. The most nice form the chart have in 3d (after rotation of coordinates) or in cylindrical coordinates (becomes so called Pie chart). @sref{Chart sample}
- at end deffn
-
- at deffn {MGL command} mark ydat rdat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} mark xdat ydat rdat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} mark xdat ydat zdat rdat ['stl'='']
-Draws marks with size @var{rdat}[i]*@code{marksize} at points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). See also @code{plot, textmark, stem, error}. @sref{Mark sample}
- at end deffn
-
- at deffn {MGL command} textmark ydat 'txt' ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} textmark ydat rdat 'txt' ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} textmark xdat ydat rdat 'txt' ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} textmark xdat ydat zdat rdat 'txt' ['stl'='']
-Draws string @var{txt} as marks with size @var{rdat}[i]*@code{marksize} at points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). If array @var{rdat} is not specified then @var{rdat}[i] = 1. See also @code{plot, mark, stem}. @sref{TextMark sample}
- at end deffn
-
- at deffn {MGL command} error ydat yerr ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} error xdat ydat yerr ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} error xdat ydat xerr yerr ['stl'='' @code{zval=nan}]
-Draws error boxes @{@var{xerr}[i], @var{yerr}[i]@} at points @{@var{xdat}[i], @var{ydat}[i], @var{zval}@}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. See also @code{plot}. @sref{TextMark sample}
- at end deffn
-
- at deffn {MGL command} tube ydat rdat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} tube ydat @code{rval} ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} tube xdat ydat rdat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} tube xdat ydat @code{rval} ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} tube xdat ydat zdat rdat ['stl'='']
- at deffnx {MGL command} tube xdat ydat zdat @code{rval} ['stl'='']
-Draws tube with variable radius @var{rdat}[i] (or @var{rval}) at points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x. If array @var{zdat} is not specified then @var{zdat}[i] = @var{zval} is used (the default is at the bottom of the bounding box). See also @code{plot}. @sref{TextMark sample}
- at end deffn
-
- at deffn {MGL command} boxplot adat ['stl'='' @code{zval=nan}]
- at deffnx {MGL command} boxplot xdat adat ['stl'='' @code{zval=nan}]
-Draws boxplot (also known as a box-and-whisker diagram) at points @var{xdat} in plane z=@code{zval} (by default is at the bottom of the bounding box). This is five-number summaries of data <em>adat</em> (minimum, lower quartile (Q1), median (Q2), upper quartile (Q3) and maximum) along second (j-th) direction.
- at end deffn
-
- at c ##################################################################
- at node 2D plotting (MGL), 3D plotting (MGL), 1D plotting (MGL), MGL interface
- at section 2D plotting (MGL)
- at cindex mesh
- at cindex fall
- at cindex belt
- at cindex surf
- at cindex boxs
- at cindex tile
- at cindex dens
- at cindex cont
- at cindex contf
- at cindex contd
- at cindex axial
- at cindex grid
-
-These commands perform plotting of 2D data. 2D means that data depend from 2 independent parameters like matrix @math{f(x_i,y_j), i=1...n, j=1...m}. There are 6 generally different types of data representations: simple mesh lines plot (Mesh), surface plot (Surf), surface plot by boxes (Boxs), surface plot by tiles (Tile), waterfall-like plot (Fall), belt plot (Belt), density plot (Dens), contour lines plot (Cont), solid contours plot (ContF) and its rotational figure (Axial). Cont, ContF and Axial commands have variants for automatic and manual selection of level values for contours. Also there are commands for plotting data grid lines according to the data format (Grid) for enhancing density or contour plots. Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. Parameters of color scheme are specified by the string argument.
-
-String parameter @var{sch} sets the color scheme (@pxref{Color scheme}). Previous color scheme is used by default. The minor dimensions of arrays @var{xdat}, @var{ydat}, @var{zdat} should be equal @var{xdat.nx=zdat.nx && ydat.nx=zdat.ny} or @var{xdat.nx=ydat.nx=zdat.nx && xdat.ny=ydat.ny=zdat.ny}. Arrays @var{xdat} and @var{ydat} can be vectors (not matrices as @var{zdat}). If array @var{xdat}, @var{ydat} is not specified then its an automatic arrays are used with values equidistantly distributed along x, y. Graphics are plotted for each z-slice of the data.
-
- at deffn {MGL command} mesh zdat ['sch'='']
- at deffnx {MGL command} mesh xdat ydat zdat ['sch'='']
-Draws mesh lines for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. See also @code{surf, fall, meshnum, cont, tens}. @sref{Mesh sample}
- at end deffn
-
- at deffn {MGL command} fall zdat ['sch'='']
- at deffnx {MGL command} fall xdat ydat zdat ['sch'='']
-Draws fall lines for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. If @var{sch} contain @samp{x} then lines are drawn along x-direction else (by default) lines are drawn along y-direction. See also @code{belt, mesh, meshnum, tens}. @sref{Fall sample}
- at end deffn
-
- at deffn {MGL command} belt zdat ['sch'='']
- at deffnx {MGL command} belt xdat ydat zdat ['sch'='']
-Draws belts for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. If @var{sch} contain @samp{x} then belts are drawn along x-direction else (by default) lines are drawn along y-direction. See also @code{fall, surf, plot, meshnum}. @sref{Belt sample}
- at end deffn
-
- at deffn {MGL command} surf zdat ['sch'='']
- at deffnx {MGL command} surf xdat ydat zdat ['sch'='']
-Draws surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. See also @code{mesh, dens, belt, tile, boxs, surfc, surfa}. @sref{Surf sample}
- at end deffn
-
- at deffn {MGL command} boxs zdat ['sch'='']
- at deffnx {MGL command} boxs xdat ydat zdat ['sch'='']
-Draws vertical boxes for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. See also @code{surf, dens, tile, step}. @sref{Boxs sample}
- at end deffn
-
- at deffn {MGL command} tile zdat ['sch'='']
- at deffnx {MGL command} tile xdat ydat zdat ['sch'='']
-Draws horizontal tiles for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. See also @code{surf, dens, boxs, tile, step}. @sref{Tile sample}
- at end deffn
-
- at deffn {MGL command} dens zdat ['sch'='' @code{zval=nan}]
- at deffnx {MGL command} dens xdat ydat zdat ['sch'='' @code{zval=nan}]
-Draws density plot for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} at @var{z} = @var{zVal}. See also @code{surf, cont, contf, boxs, tile, dens[xyz]}. @sref{Dens sample}
- at end deffn
-
- at deffn {MGL command} cont vdat zdat ['sch'='' @code{zval=nan}]
- at deffnx {MGL command} cont vdat xdat ydat zdat ['sch'='' @code{zval=nan}]
-Draws contour lines for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} at @var{z} = @var{zVal} (or for @var{z}=@var{vdat}[k] if @code{zval=nan}). Contours are plotted for @var{zdat}[i,j]=@var{vdat}[k] for all k. If string @var{stl} contain 't' (or 'T') symbol then contour labels will be drawn below (or above) the contours. See also @code{dens, contf, axial, cont[xyz]}. @sref{Cont sample}
- at end deffn
-
- at deffn {MGL command} cont zdat ['sch'='' @code{num=7 zval=nan}]
- at deffnx {MGL command} cont xdat ydat zdat ['sch'='' @code{num=7 zval=nan}]
-The same as previous one with vector @var{vdat} of @var{num}-th elements equidistantly distributed in color range (see, @code{caxis}).
- at end deffn
-
- at deffn {MGL command} contf vdat zdat ['sch'='' @code{zval=nan}]
- at deffnx {MGL command} contf vdat xdat ydat zdat ['sch'='' @code{zval=nan}]
-Draws solid (or filled) contours for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} at @var{z} = @var{zVal} (or for @var{z}=@var{vdat}[k] if @code{zval=nan}). Contours are plotted for @var{zdat}[i,j]=@var{vdat}[k] for all k (must be @code{vdat.nx>2}). See also @code{dens, cont, contd, axial, contf[xyz]}. @sref{ContF sample}
- at end deffn
-
- at deffn {MGL command} contf zdat ['sch'='' @code{num=7 zval=nan}]
- at deffnx {MGL command} contf xdat ydat zdat ['sch'='' @code{num=7 zval=nan}]
-The same as previous one with vector @var{vdat} of @var{num}-th elements equidistantly distributed in color range (see, @code{caxis}).
- at end deffn
-
- at deffn {MGL command} contd vdat zdat ['sch'='' @code{zval=nan}]
- at deffnx {MGL command} contd vdat xdat ydat zdat ['sch'='' @code{zval=nan}]
-Draws solid (or filled) contours for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} at @var{z} = @var{zVal} (or for @var{z}=@var{vdat}[k] if @code{zval=nan}) with manual colors. Contours are plotted for @var{zdat}[i,j]=@var{vdat}[k] for all k (must be @code{vdat.nx>2}). The color of k-th contour is @code{sch[k%strlen(sch)]}. See also @code{dens, cont, contf}. @sref{ContD sample}
- at end deffn
-
- at deffn {MGL command} contd zdat ['sch'='' @code{num=7 zval=nan}]
- at deffnx {MGL command} contd xdat ydat zdat ['sch'='' @code{num=7 zval=nan}]
-The same as previous one with vector @var{vdat} of @var{num}-th elements equidistantly distributed in color range (see, @code{caxis}).
- at end deffn
-
- at deffn {MGL command} axial vdat zdat ['sch'='']
- at deffnx {MGL command} axial vdat xdat ydat zdat ['sch'='']
-Draws surface which is result of contour plot rotation surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. Contours are plotted for @var{zdat}[i,j]=@var{vdat}[k] for all k. If string @var{sch} have symbol @samp{#} then wire plot is produced. If string @var{sch} contain symbols @samp{x}, @samp{y} or @samp{z} then rotation axis @code{axialdir} will be set to specified direction. If string @var{sch} have symbol @samp{#} then wire plot is produced. See also @code{cont, contf, torus, surf3}. @sref{Axial sample}
- at end deffn
-
- at deffn {MGL command} axial zdat ['sch'='' @code{num=3}]
- at deffnx {MGL command} axial xdat ydat zdat ['sch'='' @code{num=3}]
-The same as previous one with vector @var{vdat} of @var{num}-th elements equidistantly distributed in color range (see, @code{caxis}).
- at end deffn
-
- at deffn {MGL command} grid zdat ['sch'='' @code{zval=nan}]
- at deffnx {MGL command} grid xdat ydat zdat ['sch'='' @code{zval=nan}]
-Draws grid lines for density plot of surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} at @var{z} = @var{zVal}. See also @code{dens, cont, contf}.
- at end deffn
-
-
- at c ##################################################################
- at node 3D plotting (MGL), Dual plotting (MGL), 2D plotting (MGL), MGL interface
- at section 3D plotting (MGL)
- at cindex surf3
- at cindex dens3
- at cindex cont3
- at cindex conta
- at cindex densa
- at cindex grid3
- at cindex grida
- at cindex cloud
- at cindex contf3
- at cindex contfa
- at cindex beam
-
-These commands perform plotting of 3D data. 3D means that data depend from 3 independent parameters like matrix @math{f(x_i,y_j,z_k), i=1...n, j=1...m, k=1...l}. There are 4 generally different types of data representations: isosurface or surface of constant value (Surf3), density plot at slices (Dens3), contour lines plot at slices (Cont3), solid contours plot at slices (ContF3) and cloud-like plot (Cloud). Surf3, Cont3 and ContF3 commands have variants for automatic and manual selection of level values for surfaces/contours. Also there are commands for plotting data grid lines according to the data format (Grid3) for enhancing density or contour plots. Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. Parameters of color scheme are specified by the string argument.
-
-String paramter @var{sch} sets the color scheme (@pxref{Color scheme}). Previous color scheme is used by default. Arrays @var{x}, @var{y}, @var{z} can be vectors (not 3d arrays as @var{a}). If array @var{xdat}, @var{ydat}, @var{zdat} is not specified then its an automatic arrays are used with values equidistantly distributed along x, y, z.
-
-
- at deffn {MGL command} surf3 adat @code{val} ['sch'='']
- at deffnx {MGL command} surf3 xdat ydat zdat adat @code{val} ['sch'='']
-Draws isosurface plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]) at @var{a}(x,y,z)=@var{val}. If string contain @samp{#} then wire plot is produced. See also @code{cloud, dens3, surf3c, surf3a, axial}. @sref{Surf3 sample}
- at end deffn
-
- at deffn {MGL command} surf3 adat ['sch'='' @code{num=5}]
- at deffnx {MGL command} surf3 xdat ydat zdat adat ['sch'='' @code{num=5}]
-Draws @var{num}-th uniformly distributed in color range (see @code{caxis}) isosurfaces for 3d data specified parametrically.
- at end deffn
-
- at deffn {MGL command} dens3 adat 'dir' [@code{sval=-1} 'sch'='']
- at deffnx {MGL command} dens3 xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='']
-Draws density plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). Density is plotted at slice @var{sval} in @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@} direction. If string @var{stl} have symbol @samp{#} then grid lines are drawn. See also @code{cont3, contf3, dens, grid3}. @sref{Dens3 sample}
- at end deffn
-
- at deffn {MGL command} densa adat ['sch'='']
- at deffnx {MGL command} densa xdat ydat zdat adat ['sch'='']
-Draws density plots at all central slices of the 3d data specified parametrically.
- at end deffn
-
- at deffn {MGL command} cont3 vdat adat 'dir' [@code{sval=-1} 'sch'='']
- at deffnx {MGL command} cont3 vdat xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='']
-Draws contour plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). Contours are plotted for values specified in array @var{vdat} at slice @var{sval} in @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@} direction. If string @var{stl} have symbol @samp{#} then grid lines are drawn. If string @var{stl} contain 't' (or 'T') symbol then contour labels will be drawn below (or above) the contours. See also @code{dens3, contf3, cont, grid3}. @sref{Cont3 sample}
- at end deffn
-
- at deffn {MGL command} cont3 adat 'dir' [@code{sval=-1} 'sch'='' @code{num=7}]
- at deffnx {MGL command} cont3 xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='' @code{num=7}]
-The same as previous one with vector @var{vdat} of @var{num}-th elements equidistantly distributed in color range (see @code{caxis}).
- at end deffn
-
- at deffn {MGL command} conta adat ['sch'='' @code{num=7}]
- at deffnx {MGL command} conta xdat ydat zdat adat ['sch'='' @code{num=7}]
-Draws contour plots at all central slices of the 3d data specified parametrically.
- at end deffn
-
- at deffn {MGL command} contf3 vdat adat 'dir' [@code{sval=-1} 'sch'='']
- at deffnx {MGL command} contf3 vdat xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='']
-Draws solid contour plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). Contours are plotted for values specified in array @var{vdat} at slice @var{sval} in @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@} direction. If string @var{stl} have symbol @samp{#} then grid lines are drawn. See also @code{dens3, cont3, contf, grid3}. @sref{ContF3 sample}
- at end deffn
-
- at deffn {MGL command} contf3 adat 'dir' [@code{sval=-1} 'sch'='' @code{num=7}]
- at deffnx {MGL command} contf3 xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='' @code{num=7}]
-The same as previous one with vector @var{vdat} of @var{num}-th elements equidistantly distributed in color range (see @code{caxis}).
- at end deffn
-
- at deffn {MGL command} contfa adat ['sch'='' @code{num=7}]
- at deffnx {MGL command} contfa xdat ydat zdat adat ['sch'='' @code{num=7}]
-Draws solid contour plots at all central slices of the 3d data specified parametrically.
- at end deffn
-
- at deffn {MGL command} grid3 adat 'dir' [@code{sval=-1} 'sch'='']
- at deffnx {MGL command} grid3 xdat ydat zdat adat 'dir' [@code{sval=-1} 'sch'='']
-Draws grid for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). Grid is plotted at slice @var{sval} in @var{dir}=@{@samp{x}, @samp{y}, @samp{z}@} direction. See also @code{cont3, contf3, dens, grid3}. @sref{Dens3 sample}
- at end deffn
-
- at deffn {MGL command} grida adat ['sch'='']
- at deffnx {MGL command} grida xdat ydat zdat adat ['sch'='']
-Draws grids at all central slices of the 3d data specified parametrically.
- at end deffn
-
- at deffn {MGL command} cloud adat ['sch'='']
- at deffnx {MGL command} cloud xdat ydat zdat adat ['sch'='']
-Draws cloud for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]). This plot is a set of cubes with color and transparency proportional to value of @var{adat}. The resulting plot is like cloud -- low value is transparent but higher ones are not. The number of plotting cells depend on @code{meshnum}. Command @var{alpha} changes the overall transparency of plot. See also @code{surf3}. @sref{Cloud sample}
- at end deffn
-
- at deffn {MGL command} beam tr g1 g2 adat @code{rval} ['sch'='' @code{flag=0 num=3}]
-Draws @var{num}-th uniformly distributed in color range (see @code{caxis}) isosurfaces for 3d array @var{adat}. This is special kind of plot for @var{adat} specified in accompanied coordinates along curve @var{tr} with orts @var{g1}, @var{g2} and with transverse scale @var{rval}. Variable @var{flag} is bitwise: @samp{0x1} - draw in accompanied (not laboratory) coordinates; @samp{0x2} - draw projection to @math{\rho-z} plane; @samp{0x4} - draw normalized in each slice field. The x-size of data arrays @var{tr}, @var{g1}, @var{g2} must be nx>2. The y-size of data arrays @var{tr}, @var{g1}, @var{g2} and z-size of the data array @var{a} must be equal. @xref{Surf3}.
- at end deffn
-
-
- at c ##################################################################
- at node Dual plotting (MGL), Vector fields (MGL), 3D plotting (MGL), MGL interface
- at section Dual plotting (MGL)
- at cindex surfc
- at cindex surf3c
- at cindex surfa
- at cindex surf3a
- at cindex map
- at cindex tile
- at cindex stfa
-
-These plotting commands draw @emph{two matrix} simultaneously. There are 5 generally different types of data representations: surface or isosurface colored by other data (SurfC, Surf3C), surface or isosurface transpared by other data (SurfA, Surf3A), tiles with variable size (TileS), mapping diagram (Map), STFA diagram (STFA). Surf3A and Surf3C have variants for automatic and manual selection of level values for isosurfaces. Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. Parameters of color scheme are specified by the string argument.
-
-String paramter @var{sch} sets the color scheme (@pxref{Color scheme}). Previous color scheme is used by default. Arrays @var{x}, @var{y}, @var{z} can be vectors (not 3d arrays as @var{a}). If array @var{xdat}, @var{ydat}, @var{zdat} is not specified then its an automatic arrays are used with values equidistantly distributed along x, y, z.
-
- at deffn {MGL command} surfc zdat cdat ['sch'='']
- at deffnx {MGL command} surfc xdat ydat zdat cdat ['sch'='']
-Draws surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} and color it by matrix @var{cdat}[i,j]. See also @code{surf, surfa, surf3c}. @sref{SurfC sample}
- at end deffn
-
- at deffn {MGL command} surf3c adat cdat @code{val} ['sch'='']
- at deffnx {MGL command} surf3c xdat ydat zdat adat cdat @code{val} ['sch'='']
-Draws isosurface plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]) at @var{a}(x,y,z)=@var{val}. It is mostly the same as @code{surf3} command but the color of isosurface depends on values of array @var{cdat}. If string contain @samp{#} then wire plot is produced. See also @code{surf3, sur3a, surfc}. @sref{Surf3C sample}
- at end deffn
-
- at deffn {MGL command} surf3c adat cdat ['sch'='' @code{num=5}]
- at deffnx {MGL command} surf3c xdat ydat zdat adat cdat ['sch'='' @code{num=5}]
-Draws @var{num}-th uniformly distributed in color range (see @code{caxis}) isosurfaces for 3d data specified parametrically.
- at end deffn
-
- at deffn {MGL command} surfa zdat cdat ['sch'='']
- at deffnx {MGL command} surfa xdat ydat zdat cdat ['sch'='']
-Draws surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@} and transparent it by matrix @var{cdat}[i,j]. See also @code{surf, surfc, surf3a, tile}. @sref{SurfA sample}
- at end deffn
-
- at deffn {MGL command} surf3a adat cdat @code{val} ['sch'='']
- at deffnx {MGL command} surf3a xdat ydat zdat adat cdat @code{val} ['sch'='']
-Draws isosurface plot for 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]) at @var{a}(x,y,z)=@var{val}. It is mostly the same as @code{surf3} command but the transparency of isosurface depends on values of array @var{cdat}. If string contain @samp{#} then wire plot is produced. See also @code{surf3, sur3c, surfa}. @sref{Surf3A sample}
- at end deffn
-
- at deffn {MGL command} surf3a adat cdat ['sch'='' @code{num=5}]
- at deffnx {MGL command} surf3a xdat ydat zdat adat cdat ['sch'='' @code{num=5}]
-Draws @var{num}-th uniformly distributed in color range (see @code{caxis}) isosurfaces for 3d data specified parametrically.
- at end deffn
-
- at deffn {MGL command} tile zdat rdat ['sch'='']
- at deffnx {MGL command} tile xdat ydat zdat rdat ['sch'='']
-Draws horizontal tiles for surface specified parametrically @{@var{xdat}[i,j], @var{ydat}[i,j], @var{zdat}[i,j]@}. It is mostly the same as @code{tile} but the size of tiles is determined by @var{rdat} array. See also @code{surfa, tile}. @sref{TileS sample}
- at end deffn
-
- at deffn {MGL command} map udat vdat ['sch'='' @code{pnts=on}]
- at deffnx {MGL command} map xdat ydat udat vdat ['sch'='' @code{pnts=on}]
-Draws mapping plot for matrixes @{@var{udat}, @var{vdat} @} which parametrically depend on coordinates @var{xdat}, @var{ydat}. The previous position of the cell (point) is marked by color. Height is proportional to Jacobian(udat,vdat). This plot is like Arnold diagram ???. If @code{pnts=off} then face is drawn otherwise the color ball at matrix knots are drawn. The size of @var{udat} and @var{vdat} must be the same. @sref{Map sample}
- at end deffn
-
- at deffn {MGL command} stfa re im @code{dn} ['sch'='' @code{pnts=on}]
- at deffnx {MGL command} stfa xdat ydat re im @code{dn} ['sch'='' @code{pnts=on}]
-Draws spectrogram of complex array @var{re}+i*@code{im} for Fourier size of @var{dn} points at plane @var{z=zVal}. Parameter @var{dn} is arbitrary even integer. For example in 1D case, result is density plot of data @math{res[i,j]=|\sum_d^dn exp(I*j*d)*(re[i*dn+d]+I*im[i*dn+d])|/dn} with size @{int(nx/dn), dn, ny@}.
- at end deffn
-
-
-
-
- at c ##################################################################
- at node Vector fields (MGL), Other plotting (MGL), Dual plotting (MGL), MGL interface
- at section Vector fields (MGL)
- at cindex vectc
- at cindex vect
- at cindex flow
- at cindex pipe
- at cindex traj
- at cindex dew
-
-These commands perform plotting of 2D and 3D vector fields. There are 6 generally different types of vector fields representations: simple vector field (Vect), vector field with coloring (VectC), vector field by dew-drops (Dew), flow threads (Flow), flow pipes (Pipe), vectors along a curve (Traj). Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. Parameters of color scheme are specified by the string argument. @xref{Color scheme}.
-
-The color is specified by the string argument @var{sch}. Previous color scheme is used by default. Parameter @var{flag} setup the hachures (arrows). It is compination of vlaues: @code{MGL_VEC_COL=1} for drawing bi-color arrow, @code{MGL_VEC_LEN=2} for drawing fixed length arrows, @code{MGL_VEC_DOT=16} for drawing hachures with dots instead of arrows, @code{MGL_VEC_END=4} for drawing arrows to the cell point, @code{MGL_VEC_MID=8} for drawing arrows with center at cell point.
-
-The size of @var{udat}, @var{vdat} and @var{wdat} must be equal. The minor dimensions of arrays @var{xdat}, @var{ydat}, @var{zdat} and @var{udat} must be equal too. Arrays @var{xdat}, @var{ydat} and @var{zdat} can be vectors (not matrices as @var{udat}). The graphics is plotted for each z slice of @var{udat}, @var{vdat} for 2D case.
-
- at deffn {MGL command} traj xdat ydat udat vdat ['sch'='' @code{zval=nan len=0}]
- at deffnx {MGL command} traj xdat ydat zdat udat vdat wdat ['sch'='' @code{len=0}]
-Draws vectors @{@var{udat}, @var{vdat}, @var{wdat}@} along a curve @var{xdat}, @var{ydat}, @var{zdat}. The length and color of arrows are proportional to @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. See also @code{vect}. @sref{Traj sample}
- at end deffn
-
- at deffn {MGL command} vect udat vdat ['sch'='' @code{zval=nan flag=0}]
- at deffnx {MGL command} vect xdat ydat udat vdat ['sch'='' @code{zval=nan flag=0}]
-Draws plane vector field plot for the field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} at level @var{z=zVal}. The length and color of arrows are proportional to @math{\sqrt@{udat^2+vdat^2@}}. The number of hachures depend on @var{meshnum}. See also @code{vectc, flow, pipe, dew}. @sref{Vect sample}
- at end deffn
-
- at deffn {MGL command} vect udat vdat wdat ['sch'='' @code{flag=0}]
- at deffnx {MGL command} vect xdat ydat zdat udat vdat wdat ['sch'='' @code{flag=0}]
-This is 3D version of the previous command. Here arrays @var{udat}, @var{vdat}, @var{wdat} must be 3-ranged tensors with equal sizes and the length and color of arrows are proportional to @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{Vect 3D sample}
- at end deffn
-
- at deffn {MGL command} vectc udat vdat ['sch'='' @code{zval=nan}]
- at deffnx {MGL command} vectc xdat ydat udat vdat ['sch'='' @code{zval=nan}]
-Draws plane vector field plot for the field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} at level @var{z=zVal}. The color of hachures is proportional to @math{\sqrt@{udat^2+vdat^2@}}. The number of hachures depend on @var{meshnum}. See also @code{vect, flow, pipe, dew}. @sref{VectC sample}
- at end deffn
-
- at deffn {MGL command} vectc udat vdat wdat ['sch'='']
- at deffnx {MGL command} vectc xdat ydat zdat udat vdat wdat ['sch'='']
-This is 3D version of the previous command. Here arrays @var{udat}, @var{vdat}, @var{wdat} must be 3-ranged tensors with equal sizes and the color of hachures is proportional to @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{VectC 3D sample}
- at end deffn
-
- at deffn {MGL command} vectl udat vdat ['sch'='' @code{zval=nan}]
- at deffnx {MGL command} vectl xdat ydat udat vdat ['sch'='' @code{zval=nan}]
-Draws plane vector field plot for the field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} at level @var{z=zVal}. The length of hachures is proportional to @math{\sqrt@{udat^2+vdat^2@}}. The number of hachures depend on @var{meshnum}. See also @code{vectc, flow, pipe, dew}. @sref{Vect sample}
- at end deffn
-
- at deffn {MGL command} vectl udat vdat wdat ['sch'='']
- at deffnx {MGL command} vectl xdat ydat zdat udat vdat wdat ['sch'='']
-This is 3D version of the previous command. Here arrays @var{udat}, @var{vdat}, @var{wdat} must be 3-ranged tensors with equal sizes and the length of hachures is proportional to @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{Vect 3D sample}
- at end deffn
-
- at deffn {MGL command} dew udat vdat ['sch'='' @code{zval=nan}]
- at deffnx {MGL command} dew xdat ydat udat vdat ['sch'='' @code{zval=nan}]
-Draws dew-drops for plane vector field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} at level @var{z=zVal}. The color of drops is proportional to @math{\sqrt@{udat^2+vdat^2@}}. The number of drops depend on @var{meshnum}. Note that this is very expensive plot in memory usage and creation time! See also @code{vectc}. @sref{Dew sample}
- at end deffn
-
- at deffn {MGL command} flow udat vdat ['sch'='' @code{num=5 zval=nan}]
- at deffnx {MGL command} flow xdat ydat udat vdat ['sch'='' @code{num=5 zval=nan}]
-Draws plane flow threads for the vector field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} at level @var{z=zVal}. Number of threads is proportional to @var{num}. The color of lines is proportional to @math{\sqrt@{udat^2+vdat^2@}}. Warm color corresponds to normal flow (like attractor). Cold one corresponds to inverse flow (like source). See also @code{vect, vectc, pipe}. @sref{Flow sample}
- at end deffn
-
- at deffn {MGL command} flow udat vdat wdat ['sch'='' @code{num=3}]
- at deffnx {MGL command} flow xdat ydat zdat udat vdat wdat ['sch'='' @code{num=3}]
-This is 3D version of the previous command. Here arrays @var{udat}, @var{vdat}, @var{wdat} must be 3-ranged tensors with equal sizes and the color is proportional to @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{Flow 3D sample}
- at end deffn
-
- at deffn {MGL command} flow @code{x0 y0} udat vdat ['sch'='' @code{zval=nan}]
- at deffnx {MGL command} flow @code{x0 y0} xdat ydat udat vdat ['sch'='' @code{zval=nan}]
-Draws plane flow threads for the vector field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} from point @{@var{x0}, @var{y0}@} at level @var{z=zVal}. The color of lines is proportional to @math{\sqrt@{udat^2+vdat^2@}}. Warm color corresponds to normal flow (like attractor). Cold one corresponds to inverse flow (like source). See also @code{vect, vectc, pipe}. @sref{Flow sample}
- at end deffn
-
- at deffn {MGL command} flow @code{x0 y0 z0} udat vdat wdat ['sch'='']
- at deffnx {MGL command} flow @code{x0 y0 z0} xdat ydat zdat udat vdat wdat ['sch'='']
-Draws flow thread from point @{@var{x0}, @var{y0}, @var{z0}@}. Arrays @var{udat}, @var{vdat}, @var{wdat} must be 3-ranged tensors with equal sizes and the color is proportional to @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{Flow 3D sample}
- at end deffn
-
-
- at deffn {MGL command} pipe udat vdat ['sch'='' @code{r0=0.05 num=5 zval=nan}]
- at deffnx {MGL command} pipe xdat ydat udat vdat ['sch'='' @code{r0=0.05 num=5 zval=nan}]
-Draws plane flow pipes for the vector field @{@var{udat}, @var{vdat}@} depending parametrically on coordinates @var{xdat}, @var{ydat} at level @var{z=zVal}. Number of pipes is proportional to @var{num}. The color of pipes is proportional to @math{\sqrt@{udat^2+vdat^2@}}. Warm color corresponds to normal flow (like attractor). Cold one corresponds to inverse flow (like source). Parameter @var{r0} set the base pipe radius. If @var{r0}<0 then pipe radius is inverse proportional to amplitude. The size of @var{ax} and @var{ay} must be equal. See also @code{vect, vectc, pipe}. @sref{Flow sample}
- at end deffn
-
- at deffn {MGL command} pipe udat vdat wdat ['sch'='' @code{r0=0.05 num=3}]
- at deffnx {MGL command} pipe xdat ydat zdat udat vdat wdat ['sch'='' @code{r0=0.05 num=3}]
-This is 3D version of the previous command. Here arrays @var{udat}, @var{vdat}, @var{wdat} must be 3-ranged tensors with equal sizes and the color is proportional to @math{\sqrt@{udat^2+vdat^2+wdat^2@}}. @sref{Flow 3D sample}
- at end deffn
-
-
- at c ##################################################################
- at node Other plotting (MGL), Nonlinear fitting (MGL), Vector fields (MGL), MGL interface
- at section Other plotting (MGL)
- at cindex cont[xyz]
- at cindex dens[xyz]
- at cindex contf[xyz]
- at cindex dots
- at cindex crust
- at cindex triplot
- at cindex fplot
- at cindex fsurf
-
-
-These commands perform miscelaneous plotting. There is unstructured data points plots (Dots), surface reconstruction (Crust), surfaces on the triangular mesh (TriPlot), textual formula plotting (Plots by formula), data plots at edges (Dens[XYZ], Cont[XYZ], ContF[XYZ]), simple plot (SimplePlot). Each type of plotting has similar interface. There are 2 kind of versions which handle the arrays of data and coordinates or only single data array. Parameters of color scheme are specified by the string argument. @xref{Color scheme}.
-
- at deffn {MGL command} densx dat ['sch'='' @code{val=nan}]
- at deffnx {MGL command} densy dat ['sch'='' @code{val=nan}]
- at deffnx {MGL command} densz dat ['sch'='' @code{val=nan}]
-These plotting commands draw density plot in x, y or z plain. If @var{dat} is a tensor (3-dimensional data) then interpolation to a given @var{val} is performed. These commands are useful for creating projections of the 3D data array to the bounding box. See also @code{cont[xyz], contf[xyz], dens}. @sref{Dens projection sample}
- at end deffn
-
- at deffn {MGL command} contx dat ['sch'='' @code{val=nan num=7}]
- at deffnx {MGL command} conty dat ['sch'='' @code{val=nan num=7}]
- at deffnx {MGL command} contz dat ['sch'='' @code{val=nan num=7}]
-These plotting commands draw contour lines in x, y or z plain. If @var{dat} is a tensor (3-dimensional data) then interpolation to a given @var{val} is performed. These commands are useful for creating projections of the 3D data array to the bounding box. See also @code{dens[xyz], contf[xyz], cont}. @sref{Cont projection sample}
- at end deffn
-
- at deffn {MGL command} contfx dat ['sch'='' @code{val=nan num=7}]
- at deffnx {MGL command} contfy dat ['sch'='' @code{val=nan num=7}]
- at deffnx {MGL command} contfz dat ['sch'='' @code{val=nan num=7}]
-These plotting commands draw solid contours in x, y or z plain. If @var{dat} is a tensor (3-dimensional data) then interpolation to a given @var{val} is performed. These commands are useful for creating projections of the 3D data array to the bounding box. See also @code{dens[xyz], cont[xyz], contf}.
- at end deffn
-
- at deffn {MGL command} dots xdat ydat zdat ['sch'='']
- at deffnx {MGL command} dots xdat ydat zdat adat ['sch'='']
-Draws the arbitrary placed points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. Variable @var{adat}[i] set transparency for dots. See also @code{crust, mark, plot}. @sref{Dots sample}
- at end deffn
-
- at deffn {MGL command} crust xdat ydat zdat ['sch'='']
-Reconstructs and draws the surface for arbitrary placed points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If string contain @samp{#} then wire plot is produced. See also @code{dots, triplot}. @sref{Crust sample}
- at end deffn
-
- at deffn {MGL command} triplot idat xdat ydat ['sch'='' @code{zval=nan}]
- at deffnx {MGL command} triplot idat xdat ydat zdat ['sch'='']
- at deffnx {MGL command} triplot idat xdat ydat zdat cdat ['sch'='']
-Draws the surface of triangles. Triangle vertexes are set by indexes @var{idat} of data points @{@var{xdat}[i], @var{ydat}[i], @var{zdat}[i]@}. If string contain @samp{#} then wire plot is produced. First dimensions of @var{idat} must be 3 or greater. See also @code{dots, crust}. Parameter @var{cdat} set the colors of triangles (if @var{idat}.ny=@var{cdat}.nx) or colors of vertexes (if @var{xdat}.nx=@var{cdat}.nx).
- at end deffn
-
- at deffn {MGL command} fplot 'y(x)' ['pen'='' @code{zval=nan num=100}]
-Draws command function @samp{y(x)} at plane z=@var{zval} where @samp{x} variable is changed in @code{xrange}. You do not need to create the data arrays to plot it. The parameter @var{num} set the minimal number of points along coordinate(s) for plots. See also @code{plot}.
- at end deffn
-
- at deffn {MGL command} fplot 'x(t)' 'y(t)' 'z(t)' ['pen'='' @code{num=100}]
-Draws command parametrical curve @{@samp{x(t)}, @samp{y(t)}, @samp{z(t)}@} where @samp{t} variable is changed in range [0, 1]. You do not need to create the data arrays to plot it. The parameter @var{num} set the minimal number of points along coordinate(s) for plots. See also @code{plot}.
- at end deffn
-
- at deffn {MGL command} fsurf 'z(x,y)' ['sch'='' @code{num=100}]
-Draws command surface for function @samp{z(x,y)} where @samp{x}, @samp{y} variable are changed in @code{xrange, yrange}. You do not need to create the data arrays to plot it. The parameter @var{num} set the minimal number of points along coordinate(s) for plots. See also @code{surf}.
- at end deffn
-
- at deffn {MGL command} fsurf 'x(u,v)' 'y(u,v)' 'z(u,v)' ['sch'='' @code{num=100}]
-Draws command parametrical surface @{@samp{x(u,v)}, @samp{y(u,v)}, @samp{z(u,v)}@} where @samp{u}, @samp{v} variable are changed in range [0, 1]. You do not need to create the data arrays to plot it. The parameter @var{num} set the minimal number of points along coordinate(s) for plots. See also @code{surf}.
- at end deffn
-
-
- at c ##################################################################
- at node Nonlinear fitting (MGL), Data create (MGL), Other plotting (MGL), MGL interface
- at section Nonlinear fitting (MGL)
- at cindex fit
- at cindex fits
- at cindex putsfit
-
-These commands fit data to formula. Fitting goal is to find formula parameters for the best fit the data points, i.e. to minimize the sum @math{\sum_i (f(x_i, y_i, z_i) - a_i)^2/s_i^2}. At this, approximation command @samp{f} can depend only on one argument @samp{x} (1D case), on two arguments @samp{x,y} (2D case) and on three arguments @samp{x,y,z} (3D case). The command @samp{f} also may depend on parameters. Normally the list of fitted parameters is specified by @var{var} string (like, @samp{abcd}). Usually user should supply initial values for fitted parameters by @var{ini} variable. But if he/she don't supply it then the zeros are used.
-
-Commands @code{fit} and @code{fits} do not draw the obtained data themselves. They fill the data @var{out} by formula @samp{f} with found coefficients. At this, the @samp{x,y,z} coordinates are equidistantly distributed in the bounding box. Number of points in @var{out} is selected as maximal value of @var{out} size or 100. Also you may print the last formula with found coefficients by @code{putsfit} command. @sref{Fitting sample}
-
-The dimensions of arrays must be at least the same as the number of specified arrays @var{xdat}, @var{ydat}, @var{zdat}. Also the fitting only along specified directions will be performed (for example, along x and y if only @var{xdat} and @var{ydat} are specified). If array @var{xdat} is not specified then its an automatic array is used with values equidistantly distributed along x.
-
-
- at deffn {MGL command} fits adat sdat 'func' 'var' [ini=0]
- at deffnx {MGL command} fits xdat adat sdat 'func' 'var' [ini=0]
- at deffnx {MGL command} fits xdat ydat adat sdat 'func' 'var' [ini=0]
- at deffnx {MGL command} fits xdat ydat zdat adat sdat 'func' 'var' [ini=0]
-Fit data along x-, y- and z-directions for 1d-,2d- or 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]) with weight factor @var{sdat}[i,j,k].
- at end deffn
-
- at deffn {MGL command} fit adat 'func' 'var' [ini=0]
- at deffnx {MGL command} fit xdat adat 'func' 'var' [ini=0]
- at deffnx {MGL command} fit xdat ydat adat 'func' 'var' [ini=0]
- at deffnx {MGL command} fit xdat ydat zdat adat 'func' 'var' [ini=0]
-Fit data along x-, y- and z-directions for 1d-,2d- or 3d array specified parametrically @var{adat}[i,j,k](@var{xdat}[i,j,k], @var{ydat}[i,j,k], @var{zdat}[i,j,k]) with weight factor =1.
- at end deffn
-
- at deffn {MGL command} putsfit @code{x y} ['pre'='' 'fnt'='' @code{size=-1}]
-Print last fitted formula with found coefficients (as numbers) at position @{@var{x}, @var{y}@}. The string @var{pre} will be printed before formula. All other parameters are the same as in @ref{Text printing (MGL)}.
- at end deffn
-
-
- at c ##################################################################
- at node Data create (MGL), Data filling (MGL), Nonlinear fitting (MGL), MGL interface
- at section Data create (MGL)
- at cindex new
- at cindex var
- at cindex list
- at cindex delete
- at cindex copy
- at cindex column
- at cindex set_id
-
- at deffn {MGL command} new dat [@code{nx=1 ny=1 nz=1}]
-Creates or recreates the array @var{dat} with specified size and fills it by zero. This command does nothing if one of parameters @var{nx}, @var{ny}, @var{nz} is zero or negative.
- at end deffn
-
- at deffn {MGL command} var dat @code{num v1 [v2=nan]}
-Creates new variable with name dat for one-dimensional array of size num. Array elements are equidistantly distributed in range [@var{v1}, @var{v2}]. If @var{v2}=@code{nan} then @var{v2=v1} is used.
- at end deffn
-
- at deffn {MGL command} list dat @code{v1 ...}
-Creates new variable with name @var{dat} and fills it by numeric values of command arguments @code{v1 ...}. Command can create one-dimensional and two-dimensional arrays with arbitrary values. For creating 2d array the user should use delimiter - which means that the following values lie in next row. Array sizes are [maximal of row sizes * number of rows]. For example, command @code{list 1 | 2 3} creates the array [1 0; 2 3]. Note, that the maximal number of arguments is 1000.
- at end deffn
-
- at deffn {MGL command} list dat d1 ...
-Creates new variable with name @var{dat} and fills it by data values of arrays of command arguments @var{d1 ...}. Command can create two-dimensional or three-dimensional (if arrays in arguments are 2d arrays) arrays with arbitrary values. Minor dimensions of all arrays in arguments should be equal to dimensions of first array d1. In the opposite case the argument will be ignored. Note, that the maximal number of arguments is 1000.
- at end deffn
-
- at deffn {MGL command} copy dat1 dat2 ['eq'='' @code{on_axis=on}]
- at deffnx {MGL command} copy dat1 @code{val}
-Creates new variable with name @var{dat1} and fills it by data values of array @var{dat2}. At this, if parameter @var{eq} is specified then the data will be modified by corresponding formula by the same way as in @code{fill} command (for @code{on_axis=on}) or in @code{modify} command (for @code{on_axis=off}).
- at end deffn
-
- at deffn {MGL command} delete dat
-Deletes variable @var{dat} and makes its memory free. Can be useful for huge data arrays.
- at end deffn
-
- at deffn {MGL command} set_id dat 'ids'
-Set the symbol id for data columns. The string must contain one symbol 'a'...'z' per column (without spaces).
- at end deffn
-
- at deffn {MGL command} info dat [@code{detail=off}]
-Display information (sizes, maximum/minimum, momentums and so on) about the data dat. Show brief information by default (if @code{detail=off}).
- at end deffn
-
- at deffn {MGL command} info 'text'
-Display @var{text} as information (warning).
- at end deffn
-
- at c ------------------------------------------------------------------
- at node Data filling (MGL), Rearrange data (MGL), Data create (MGL), MGL interface
- at section Data filling (MGL)
- at cindex fill
- at cindex modify
-
- at deffn {MGL command} fill dat v1 v2 ['dir'='x']
-Equidistantly fills the data values to range [@var{x1}, @var{x2}] in direction @var{dir}=@{@samp{x}, at samp{y}, at samp{z}@}.
- at end deffn
-
- at deffn {MGL command} fill dat 'eq' [vdat=0 wdat=0]
-Command fills the value of array according to the formula in string @var{eq}. Formula is an arbitrary expression depending on variables @samp{x}, @samp{y}, @samp{z}, @samp{u}, @samp{v}, @samp{w}. Coordinates @samp{x}, @samp{y}, @samp{z} are supposed to be normalized in @emph{bounding box} (in difference from @code{modify} commands). Variable @samp{u} is the original value of the array. Variables @samp{v} and @samp{w} are values of @var{vdat}, @var{wdat}.
- at end deffn
-
- at deffn {MGL command} modify dat 'eq' [@code{dim=0}]
-Command fills the value of array according to the formula in string @var{eq}. Formula is an arbitrary expression depending on variables @samp{x}, @samp{y}, @samp{z}, @samp{u}. Coordinates @samp{x}, @samp{y}, @samp{z} are data indexes normalized in range [0,1]. Variable @samp{u} is the original value of the array. Modification will be fulfilled only for slices >=@var{dim}.
- at end deffn
-
- at deffn {MGL command} modify dat 'eq' vdat [wdat=0]
-Command fills the value of array according to the formula in string @var{eq}. Formula is an arbitrary expression depending on variables @samp{x}, @samp{y}, @samp{z}, @samp{u}, @samp{v}, @samp{w}. Coordinates @samp{x}, @samp{y}, @samp{z} are data indexes normalized in range [0,1]. Variable @samp{u} is the original value of the array. Variables @samp{v} and @samp{w} are values of @var{vdat}, @var{wdat}. If optional data @var{vdat}, @var{wdat} (must be the same size as @var{dat}) are specified then variables @samp{v} and @samp{w} denote its values else they are zero.
- at end deffn
-
-
- at deffn {MGL command} put a @code{val [i=: j=: k=:]}
-Function sets value(s) of array a[@var{i}, @var{j}, @var{k}] = @var{val}. Negative indexes @var{i}, @var{j}, @var{k}=@samp{:} set the value @var{val} to whole range in corresponding direction(s). For example, @code{put a val : 0 :} sets a[i,0,j]=@var{val} for i=0...(a.nx-1), j=0...(a.nz-1).
- at end deffn
-
- at deffn {MGL command} put a v [@code{i=: j=: k=:}]
-Function copies value(s) from array @var{v} to the range of array @var{a}. Negative indexes @var{i}, @var{j}, @var{k}=@samp{:} set the range in corresponding direction(s). At this minor dimensions of array @var{v} should be large than corresponding dimensions of array @var{a}. For example, @code{put a v : 0 :} sets a[i,0,j]=v.ny>nz ? v[i,j] : v[i], where i=0...(a.nx-1), j=0...(a.nz-1) and condition v.nx>=a.nx is true.
- at end deffn
-
-
-
- at c ------------------------------------------------------------------
- at node Rearrange data (MGL), File I/O (MGL), Data filling (MGL), MGL interface
- at section Rearrange data (MGL)
- at cindex rearrange
- at cindex extend
- at cindex transpose
- at cindex squeeze
- at cindex crop
-
- at deffn {MGL command} rearrange dat @code{mx [my=0 mz=0]}
-Rearrange dimensions without changing data array so that resulting sizes should be @var{mx}*@var{my}*@var{mz} < nx*ny*nz. If some of parameter @var{my} or @var{mz} are zero then it will be selected to optimal fill of data array. For example, if @var{my}=0 then it will be change to @var{my}=nx*ny*nz/@var{mx} and @var{mz} will be 1.
- at end deffn
-
- at deffn {MGL command} extend dat @code{n1 [n2=0]}
-Increase the dimensions of the data by inserting new (|@var{n1}|+1)-th slices after (for @var{n1}>0) or before (for @var{n1}<0) of existed one. It is possible to insert 2 dimensions simultaneously for 1d data by using parameter @var{n2}. Data to new slices is copy from existed one. For example, for @var{n1}>0 new array will be
- at iftex
- at math{a_{ij}^{new} = a_i^{old}} where j=0... at var{n1}. Correspondingly, for @var{n1}<0 new array will be @math{a_{ij}^{new} = a_j^{old}} where i=0...|@var{n1}|.
- at end iftex
- at ifnottex
-a_ij^new = a_i^old where j=0... at var{n1}. Correspondingly, for @var{n1}<0 new array will be a_ij^new = a_j^old where i=0...|@var{n1}|.
- at end ifnottex
- at end deffn
-
- at deffn {MGL command} transpose dat ['dim'='yxz']
-Transposes (shift order of) dimensions of the data. New order of dimensions is specified int string @var{dim}. This command may be useful also for the reading of one-dimensional data.
- at end deffn
-
- at deffn {MGL command} squeeze dat @code{rx [ry=1 rz=1 sm=off]}
-Reduces the data size by excluding data elements which indexes are not divisible by @var{rx}, @var{ry}, @var{rz} correspondingly. Parameter @var{sm} set to use smoothing
- at iftex
-(i.e. @math{a_{out}[i]=\sum_{j=i}^{i+r}a[j]/r}) or not (i.e. @math{a_{out}[i]=a[j*r]}).
- at end iftex
- at ifnottex
-(i.e. out[i]=\sum_@{j=i@}^@{i+r@} a[j]/r) or not (i.e. out[i]=a[j*r]).
- at end ifnottex
- at end deffn
-
- at deffn {MGL command} crop dat @code{n1 n2} 'dir'
-Cuts off edges of the data @var{i}<@var{n1} and @var{i}>@var{n2} if @var{n2}>0 or @var{i}>@code{n[xyz]}- at var{n2} if @var{n2}<=0 along direction @var{dir}.
- at end deffn
-
- at c ------------------------------------------------------------------
- at node File I/O (MGL), Make another data (MGL), Rearrange data (MGL), MGL interface
- at section File I/O (MGL)
- at cindex read
- at cindex readhdf
- at cindex readmat
- at cindex readall
- at cindex save
- at cindex savehdf
- at cindex export
- at cindex import
-
- at deffn {MGL command} read dat 'fname'
-Reads data from tab-separated text file with auto determining sizes of the data.
- at end deffn
-
- at deffn {MGL command} read dat 'fname' @code{mx [my=1 mz=1]}
-Reads data from text file with specified data sizes. This command does nothing if one of parameters @var{mx}, @var{my} or @var{mz} is zero or negative.
- at end deffn
-
- at deffn {MGL command} readmat dat 'fname' [@code{dim=2}]
-Read data from text file with size specified at beginning of the file by first @var{dim} numbers. At this, variable @var{dim} set data dimensions.
- at end deffn
-
- at deffn {MGL command} readall dat 'templ' @code{v1 v2 [dv=1 slice=off]}
-Join data arrays from several text files. The file names are determined by function call @code{sprintf(fname,templ,val);}, where @var{val} changes from @var{v1} to @var{v2} with step @var{dv}. The data load one-by-one in the same slice if @var{slice}=@code{off} or as slice-by-slice if @var{slice}=@code{on}.
- at end deffn
-
- at deffn {MGL command} readall dat 'templ' @code{[slice=off]}
-Join data arrays from several text files which filenames satisfied the template @var{templ} (for example, @var{templ}=@code{"t_*.dat"}). The data load one-by-one in the same slice if @var{slice}=@code{off} or as slice-by-slice if @var{slice}=@code{on}.
- at end deffn
-
- at deffn {MGL command} save dat 'fname'
-Saves the whole data array to tab-separated text file.
- at end deffn
-
- at deffn {MGL command} readhdf dat 'fname' 'dname'
-Reads data array named @var{dname} from HDF file @var{fname}.
- at end deffn
- at deffn {MGL command} savehdf dat 'fname' 'dname'
-Saves data array named @var{dname} from HDF file @var{fname}.
- at end deffn
-
- at deffn {MGL command} import dat 'fname' 'sch' [@code{v1=0 v2=1}]
-Reads data from bitmap file. The RGB values of bitmap pixels are transformed to float values in range [@var{v1}, @var{v2}] using color scheme @var{sch} (@pxref{Color scheme}).
- at end deffn
-
- at deffn {MGL command} export dat 'fname' 'sch' [@code{v1=0 v2=0}]
-Saves data matrix to bitmap file. The data values are transformed from range [@var{v1}, @var{v2}] to RGB pixels of bitmap using color scheme @var{sch} (@pxref{Color scheme}). If @var{v1}>=@var{v2} then the values of @var{v1}, @var{v2} are automatically determined as minimal and maximal value of the data array.
- at end deffn
-
- at c ------------------------------------------------------------------
- at node Make another data (MGL), Commands on direction (MGL), File I/O (MGL), MGL interface
- at section Make another data (MGL)
- at cindex subdata
- at cindex hist
- at cindex momentum
- at cindex sum
- at cindex max
- at cindex min
- at cindex combine
- at cindex evaluate
- at cindex resize
-
- at deffn {MGL command} combine res adat bdat
-Returns direct multiplication of arrays (like, res[i,j] = adat[i]*bdat[j] and so on).
- at end deffn
-
- at deffn {MGL command} evaluate res dat idat [@code{norm=on}]
- at deffnx {MGL command} evaluate res dat idat jdat [@code{norm=on}]
- at deffnx {MGL command} evaluate res dat idat jdat kdat [@code{norm=on}]
-Get array which values is result of interpolation of original array for coordinates from other arrays. All dimensions must be the same for data @var{idat}, @var{jdat}, @var{kdat}. Coordinates from @var{idat}, @var{jdat}, @var{kdat} are supposed to be normalized in range [0,1] (if @var{norm}=@code{true}) or in range [0,nx], [0,ny], [0,nz] correspondingly.
- at end deffn
-
- at deffn {MGL command} hist res dat @code{num v1 v2 [nsub=0]}
- at deffnx {MGL command} hist res dat wdat @code{num v1 v2 [nsub=0]}
-Creates @var{num}-th points distribution @var{res} of the data values of @var{dat} in range [@var{v1}, @var{v2}]. Array @var{wdat} specifies weights of the data elements (all weight is 1 if @var{wdat} is not specified). Parameter @var{nsub} define the number of additional interpolated points (for smoothness of histogram).
- at end deffn
-
- at deffn {MGL command} momentum res dat 'how' ['dir'='z']
-Get momentum (1D-array) of the data along direction @var{dir}. String @var{how} contain kind of momentum. The momentum is defined like as
- at iftex
- at math{res_k = \sum_{ij} how(x_i,y_j,z_k) a_{ij}/\sum_{ij} a_{ij}}
- at end iftex
@ifnottex
-res_k = \sum_ij how(x_i,y_j,z_k) a_ij/ \sum_ij a_ij
- at end ifnottex
-if @var{var}=@samp{z} and so on. Coordinates @samp{x}, @samp{y}, @samp{z} are data indexes normalized in range [0,1].
- at end deffn
-
- at deffn {MGL command} sum res dat 'dir'
-Gets array which is the result of summation in given direction or direction(s).
- at end deffn
- at deffn {MGL command} max res dat 'dir'
-Gets array which is the maximal data values in given direction or direction(s).
- at end deffn
- at deffn {MGL command} min res dat 'dir'
-Gets array which is the minimal data values in given direction or direction(s).
- at end deffn
-
- at deffn {MGL command} resize res dat @code{mx [my=1 mz=1]}
-Makes array @var{res} of sizes @var{mx}, @var{my}, @var{mz} with interpolated data of array @var{dat}.
- at end deffn
-
- at deffn {MGL command} subdata res dat @code{xx [yy=: zz=:]}
-Extracts sub-array data @var{res} from the original data @var{dat} array keeping fixed positive index. For example @code{subdata a b : 2} extracts 3d row (indexes are zero based), @code{subdata a b 4 :} extracts 5th column, @code{subdata a b : : 3} extracts 4th slice and so on. Note that symbol @samp{:} is defined @samp{:}=@code{-1} in MGL.
- at end deffn
-
- at deffn {MGL command} trace res dat
-Gets array of diagonal elements dat[i,i] (for 2D case) or dat[i,i,i] (for 3D case) where i=0...nx-1. Function return copy of itself for 1D case. Data array must have dimensions ny,nz >= nx or ny,nz = 1.
- at end deffn
-
- at deffn {MGL command} transform dat 'type' real imag
-Do integral transformation of complex data @var{real}, @var{imag} on specified direction. Now only Fourier transformation is supported. The order of transformations is specified in string @var{type}: first character for x-dimension, second one for y-dimension, third one for z-dimension. The possible character are: @samp{f} is forward Fourier transformation, @samp{i} is inverse Fourier transformation, @samp{n} or @samp{ } is no transformation.
- at end deffn
-
- at deffn {MGL command} transforma dat 'type' ampl phase
-Do integral transformation of complex data @var{ampl}, @var{phase} on specified direction. Now only Fourier transformation is supported. The order of transformations is specified in string @var{type}: first character for x-dimension, second one for y-dimension, third one for z-dimension. The possible character are: @samp{f} is forward Fourier transformation, @samp{i} is inverse Fourier transformation, @samp{n} or @samp{ } is no transformation.
- at end deffn
-
- at deffn {MGL command} stfad res real imag @code{dn} ['dir'='x']
-Short time Fourier analysis for real and imaginary parts. Output is amplitude of partial Fourier of length @var{dn}. For example if @var{dir}=@samp{x}, result will have size @{int(nx/dn), dn, ny@} and it will contain @math{res[i,j,k]=|\sum_d^dn exp(I*j*d)*(real[i*dn+d,k]+I*imag[i*dn+d,k])|/dn}.
- at end deffn
-
- at deffn {MGL command} pde res 'ham' ini_re ini_im [@code{dz=0.1 k0=100}]
-Solves equation du/dz = i*k0*@var{ham}(p,q,x,y,z,|u|)[u], where p=-i/k0*d/dx, q=-i/k0*d/dy are pseudo-differential operators. Parameters @var{ini_re}, @var{ini_im} specify real and imaginary part of initial field distribution. Coordinates of the equation (and the solution) are supposed to be in the bounding box. Note, that really this ranges are increased by factor 3/2 for purpose of reducing reflection from boundaries. Parameter @var{dz} set the step along evolutionary coordinate z. At this moment, simplified form of function @var{ham} is supported -- all ``mixed'' terms (like @samp{x*p}->x*d/dx) are excluded. For example, in 2D case this function is effectively @math{ham = f(p,z) + g(x,z,u)}. However commutable combinations (like @samp{x*q}->x*d/dy) are allowed. Here variable @samp{u} is used for field amplitude |u|. This allow one solve nonlinear problems -- for example, for nonlinear Shrodinger equation you may set @code{ham='p^2+q^2-u^2'}. You may specify imaginary part for wave absorption, like @code{ham = 'p^2+i*x*(x>0)'}, but only if dependence on variable @samp{i} is linear (i.e. @math{ham = hre+i*him}).
- at end deffn
+ at node Top
+ at top ЯзÑк MGL
- at deffn {MGL command} ray res 'ham' @code{x0 y0 z0 p0 q0 v0 [dt=0.1 tmax=10]}
-Solves GO ray equation like d at emph{r}/dt = d @var{ham}/d at emph{p}, d at emph{p}/dt = -d @var{ham}/d at emph{r}. This is Hamiltonian equations for particle trajectory in 3D case. Here @var{ham} is Hamiltonian which may depend on coordiantes @samp{x}, @samp{y}, @samp{z}, momentums @samp{p}=px, @samp{q}=py, @samp{v}=pz and time @samp{t}: @math{ham = H(x,y,z,p,q,v,t)}. The starting point (at @code{t=0}) is defined by variables @{@var{x0}, @var{y0}, @var{z0}, @var{p0}, @var{q0}, @var{v0}@}. Parameters @var{dt} and @var{tmax} specify the integration step and maximal time for ray tracing. Result is array of @{x,y,z,p,q,v,t@} with dimensions @{7 * int(@var{tmax}/@var{dt}+1) @}.
- at end deffn
+ÐÑо докÑменÑаÑÐ¸Ñ Ð´Ð»Ñ ÑзÑка MGL (веÑÑии @value{VERSION}). ÐожалÑйÑÑа ÑообÑайÑе о лÑбÑÑ
оÑибкаÑ
в ÑÑом ÑÑководÑÑве на @email{mathgl.abalakin@@gmail.org}. ÐополниÑелÑнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ MGL и MathGL можно найÑи на домаÑней ÑÑÑаниÑе пÑоекÑа @uref{http://mathgl.sourceforge.net/}.
- at deffn {MGL command} qo2d res 'ham' ini_re ini_im ray [@code{r=1 k0=100} xx=0 yy=0]
-Solves equation du/dt = i*k0*@var{ham}(p,q,x,y,|u|)[u], where p=-i/k0*d/dx, q=-i/k0*d/dy are pseudo-differential operators (see @code{mglPDE()} for details). Parameters @var{ini_re}, @var{ini_im} specify real and imaginary part of initial field distribution. Parameters @var{ray} set the reference ray, i.e. the ray around which the accompanied coordinate system will be maked. You may use, for example, the array created by @code{mglRay()} function. Note, that the reference ray @strong{must be} smooth enough to make accompanied coodrinates unambiguity. Otherwise errors in the solution may appear. If @var{xx} and @var{yy} are non-zero then Cartesian coordinates for each point will be written into them. @sref{Beam tracing sample}
- at end deffn
+Copyright @copyright{} 2010 ÐлекÑей Ðалакин.
- at deffn {MGL command} jacobian res xdat ydat [zdat=0]
-Computates the Jacobian for transformation @{i,j,k@} to @{@var{xdat}, at var{ydat}, at var{zdat}@} where initial coordinates @{i,j,k@} are data indexes normalized in range [0,1]. The Jacobian is determined by formula det||@math{dr_\alpha/d\xi_\beta}|| where @math{r}=@{@var{xdat}, at var{ydat}, at var{zdat}@} and @math{\xi}=@{i,j,k@}. All dimensions must be the same for all data arrays. Data must be 3D if all 3 arrays @{@var{xdat}, at var{ydat}, at var{zdat}@} are specified or 2D if only 2 arrays @{@var{xdat}, at var{ydat}@} are specified.
- at end deffn
+ at quotation
+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.''
+ at end quotation
-
- at c ------------------------------------------------------------------
- at node Commands on direction (MGL), Operators (MGL), Make another data (MGL), MGL interface
- at section Commands on direction (MGL)
- at cindex cumsum
- at cindex integral
- at cindex diff
- at cindex diff2
- at cindex swap
- at cindex mirror
- at cindex sew
- at cindex smooth
- at cindex envelop
- at cindex norm
- at cindex normsl
-
-These commands change the data in some direction like differentiations, integrations and so on. The direction in which the change will applied is specified by the string parameter, which may contain @samp{x}, @samp{y} or @samp{z} characters for 1-st, 2-nd and 3-d dimension correspondingly.
-
- at deffn {MGL command} cumsum dat 'dir'
-Cumulative summation of the data in given direction or directions.
- at end deffn
- at deffn {MGL command} integrate dat 'dir'
-Integrates (like cumulative summation) the data in given direction or directions.
- at end deffn
- at deffn {MGL command} diff dat 'dir'
-Differentiates the data in given direction or directions.
- at end deffn
- at deffn {MGL command} diff dat xdat ydat [zdat=0]
-Differentiates the data @var{dat} specified parametrically in direction @var{xdat} with @var{ydat}, @var{zdat}=constant. Parameter @var{zdat} can be omitted that correspond to 2D case. Parametrical differentiation uses the formula (for 2D case): @math{da/dx = (a_j*y_i-a_i*y_j)/(x_j*y_i-x_i*y_j)} where @math{a_i=da/di, a_j=da/dj} denotes usual differentiation along 1st and 2nd dimensions. The similar formula is used for 3D case. Note, that you may change the order of arguments -- for example, if you have 2D data a(i,j) which depend on coordinates @{x(i,j), y(i,j)@} then usual derivative along @samp{x} will be @code{diff a x y} and usual derivative along @samp{y} will be @code{diff a y x}.
- at end deffn
-
- at deffn {MGL command} diff2 dat 'dir'
-Double-differentiates (like Laplace operator) the data in given direction.
- at end deffn
- at deffn {MGL command} swap dat 'dir'
-Swaps the left and right part of the data in given direction (useful for Fourier spectrum).
- at end deffn
- at deffn {MGL command} mirror dat 'dir'
-Mirror the left-to-right part of the data in given direction. Looks like change the value index @var{i}->@var{n-i}.
- at end deffn
-
- at deffn {MGL command} sew dat ['dir'='xyz' @code{da=2*pi}]
-Remove value steps (like phase jumps after inverse trigonometric commands) with period @var{da} in given direction.
- at end deffn
- at deffn {MGL command} smooth data @code{type} ['dir'='xyz']
-Smooths the data on specified direction or directions by method @var{Type}. Now 4 methods are supported: @samp{0} does nothing, @samp{1} linear averaging by 3 points, @samp{2} linear averaging by 5 points, @samp{3} quadratic averaging by 5 points.
- at end deffn
-
- at deffn {MGL command} envelop dat ['dir'='x']
-Find envelop for data values along direction @var{dir}. Only one direction can be specified at once.
- at end deffn
-
- at deffn {MGL command} normsl dat @code{v1 v2} ['dir'='z' @code{keep=on sym=off}]
-Normalizes data slice-by-slice along direction @var{dir} the data in slices to range [@var{v1}, at var{v2}]. If flag @var{sym}=@code{on} then symmetrical interval [-max(|v1|,|v2|), max(|v1|,|v2|)] is used. If @var{keep} is set then maximal value of k-th slice will be limited by
- at iftex
- at math{\sqrt{\sum a_{ij}(k)/\sum a_{ij}(0)}}.
- at end iftex
- at ifnottex
- at math{\sqrt@{\sum a_ij(k)/\sum a_ij(0)@}}.
@end ifnottex
- at end deffn
-
- at deffn {MGL command} norm dat @code{v1 v2 [sym=off dim=0]}
-Normalizes the data to range [@var{v1}, at var{v2}]. If flag @var{sym}=@code{on} then symmetrical interval [-max(|v1|,|v2|), max(|v1|,|v2|)] is used. Modification will be applied only for slices >=@var{dim}.
- at end deffn
-
- at c ------------------------------------------------------------------
- at node Operators (MGL), Program flow (MGL), Commands on direction (MGL), MGL interface
- at section Operators (MGL)
- at cindex multo
- at cindex addto
- at cindex divto
- at cindex subto
-
- at deffn {MGL command} multo dat dat2
-Multiplies the data by the other one for each element.
- at end deffn
- at deffn {MGL command} divto dat dat2
-Divides the data by the other one for each element.
- at end deffn
- at deffn {MGL command} addto dat dat2
-Adds the other data.
- at end deffn
- at deffn {MGL command} subto dat dat2
-Subtracts the other data.
- at end deffn
- at deffn {MGL command} multo dat @code{val}
-Multiplies each element by the number.
- at end deffn
- at deffn {MGL command} divto dat @code{val}
-Divides each element by the number.
- at end deffn
- at deffn {MGL command} addto dat @code{val}
-Adds the number to each element.
- at end deffn
- at deffn {MGL command} subto dat @code{val}
-Subtracts the number to each element.
- at end deffn
-
- at c ------------------------------------------------------------------
- at node Program flow (MGL), Command options (MGL), Operators (MGL), MGL interface
- at section Program flow (MGL)
- at cindex call
- at cindex chdir
- at cindex define
- at cindex if
- at cindex elseif
- at cindex else
- at cindex endif
- at cindex for
- at cindex next
- at cindex once
- at cindex stop
-
-These commands control program flow, like, conditions, cycles, define script arguments and so on.
-
- at deffn {MGL command} call 'fname'
-Executes script @var{fname}.
- at end deffn
- at deffn {MGL command} chdir 'path'
-Changes the current directory to @var{path}.
- at end deffn
- at deffn {MGL command} define $N smth
-Sets @var{N}-th script argument to @var{smth}. Note, that @var{smth} is used as is (with @samp{'} symbols if present).
- at end deffn
- at deffn {MGL command} define name smth
-Create scalar variable @code{name} which have the numeric value of @code{smth}. Later you can use this variable as usual number.
- at end deffn
- at deffn {MGL command} if dat 'cond'
-Starts block which will be executed if @var{dat} satisfy to @var{cond}.
- at end deffn
- at deffn {MGL command} if @code{val}
-Starts block which will be executed if @code{val} is nonzero.
- at end deffn
- at deffn {MGL command} elseif dat 'cond'
-Starts block which will be executed if previous @code{if} or @code{elseif} is false and @var{dat} satisfy to @var{cond}.
- at end deffn
- at deffn {MGL command} elseif @code{val}
-Starts block which will be executed if previous @code{if} or @code{elseif} is false and @code{val} is nonzero.
- at end deffn
- at deffn {MGL command} else
-Starts block which will be executed if previous @code{if} or @code{elseif} is false.
- at end deffn
- at deffn {MGL command} endif
-Finishes @code{if/elseif/else} block.
- at end deffn
- at deffn {MGL command} for $N @code{v1 v2 [dv=1]}
-Starts cycle with @var{N}-th argument changing from @var{v1} to @var{v2} with the step @var{dv}.
- at end deffn
- at deffn {MGL command} for $N dat
-Starts cycle with @var{N}-th argument changing for @var{dat} values.
- at end deffn
- at deffn {MGL command} next
-Finishes @code{for} cycle.
- at end deffn
- at deffn {MGL command} once @code{val}
-The code between once on and once off will be executed only once. Useful for large data manipulation in programs like UDAV.
- at end deffn
- at deffn {MGL command} stop
-Terminate execution.
- at end deffn
-
- at c ------------------------------------------------------------------
- at node Command options (MGL), Suffixes, Program flow (MGL), MGL interface
- at section Command options (MGL)
- at cindex alpha
- at cindex alphadef
- at cindex xrange
- at cindex yrange
- at cindex zrange
- at cindex crange
- at cindex cut
- at cindex ambient
- at cindex fontsize
- at cindex marksize
- at cindex meshnum
- at cindex legend
-
-Command options allow the easy setup of the plot by changing of global settings only for this plot. Options are specified at the end of string. Each option is separated from the previous text by symbol @samp{;}. Options work so that them remember the current settings, change settings as it being set in the option, execute command and return the original settings back. So, the options usage for data handling commands or for graphics setup commands is useless.
-
-The most useful options are @code{xrange, yrange, zrange}. They sets the boundaries for data change. This boundaries are used for automatically filled variables. So, these options allow one to change the position of some plots. For example, in command @code{plot y; xrange 0.1 0.9} the x coordinate will be equidistantly distributed in range 0.1 ... 0.9.
+ at menu
+* MGL interface::
+* Examples::
+* Samples::
+* Copying This Manual::
+* Index::
+ at end menu
-The full list of options are:
- at deffn {MGL command} alpha @code{val}
-Sets alpha value (transparency) of the plot. The value should be in range [0, 1].
- at end deffn
- at deffn {MGL command} alphadef @code{val}
-Sets alpha value (transparency) of the plot. The value should be in range [0, 1].
- at end deffn
- at deffn {MGL command} ambient @code{val}
-Sets brightness of ambient light for the plot. The value should be in range [0, 1].
- at end deffn
- at deffn {MGL command} crange @code{val1 val2}
-Sets boundaries of color change for the plot.
- at end deffn
- at deffn {MGL command} xrange @code{val1 val2}
-Sets boundaries of x coordinate change for the plot.
- at end deffn
- at deffn {MGL command} yrange @code{val1 val2}
-Sets boundaries of y coordinate change for the plot.
- at end deffn
- at deffn {MGL command} zrange @code{val1 val2}
-Sets boundaries of z coordinate change for the plot.
- at end deffn
- at deffn {MGL command} cut @code{val}
-Sets whether to cut or to project the plot points lying outside the bounding box.
- at end deffn
- at deffn {MGL command} fontsize @code{val}
-Sets the size of text.
- at end deffn
- at deffn {MGL command} marksize @code{val}
-Sets the size of marks.
- at end deffn
- at deffn {MGL command} meshnum @code{val}
-Work like @code{meshnum} command.
- at end deffn
- at deffn {MGL command} legend 'txt'
-Adds string 'txt' to internal legend accumulator. The style of described line and mark is taken from arguments of the plot command. The maximal number of entries is 100.
- at end deffn
+ at rmacro sref {arg}
+См. Ñаздел @ref{\arg\}, Ð´Ð»Ñ Ð¿ÑимеÑов кода и гÑаÑика.
+ at end rmacro
+ at macro tdref{nam}
+ at uref{http://mathgl.sourceforge.net/pdf_u3d/\nam\.pdf, 3D pdf}
+ at end macro
+ at macro MGL
+ at end macro
+ at set UDAV
- at c ------------------------------------------------------------------
- at node Suffixes, Utilities, Command options (MGL), MGL interface
- at section Suffixes for variable
+ at node MGL interface, Examples, , Top
+ at include mgl_cmd_ru.texi
-Suffixes can get some numerical value (like its size, maximal or minimal value, the sum of elements and so on) of the data array in variable and use it later as usual number in command arguments. The suffixes start from point @samp{.} right after (without spaces) variable name or its sub-array. For example, @code{a.nx} give the x-size of data a, @code{b(1).max} give maximal value of second row of variable b, @code{c(:,0).sum} give sum of element in first column of c and so on.
+ at node Examples, Samples, MGL interface, Top
+ at include ex_mgl_ru.texi
-The full list of suffixes are:
- at table @strong
- at item nx, ny, nz
-Give the data size in x-, y-, z-direction correspondingly.
- at item max
-Give maximal value of the data.
- at item min
-Give minimal value of the data.
- at item mx, my, mz
-Give x-, y-, z-position of data maximum.
- at item ax, ay, az, aa
-Give x-, y-, z-position of data mass center or average data value.
- at item wx, wy, wz, wa
-Give width in x-, y-, z-direction or data dispersion value.
- at item sx, sy, sz, sa
-Give skewness in x-, y-, z-direction or data skewness value.
- at item kx, ky, kz, ka
-Give kurtosis in x-, y-, z-direction or data kurtosis value.
- at item sum
-Give sum of data values.
- at item a
-Give first value of data array.
- at item fst
-Give first nonzero value of data array.
- at item lst
-Give last nonzero value of data array.
- at end table
+ at node Samples,Copying This Manual, Examples, Top
+ at include samples_ru.texi
- at c ------------------------------------------------------------------
- at node Utilities, , Suffixes, MGL interface
- at section Utilities for parsing MGL
+ at node Copying This Manual, Index, Samples, Top
+ at appendix GNU Free Documentation License
+ at include fdl.texi
-MathGL library provides several tools for parsing MGL scripts. There is tools saving it to bitmap (@code{mgl2png}, @code{mgl2gif}) or vectorial (@code{mgl2eps}, @code{mgl2svg}) images. Tool @code{mglview} show MGL script and allow to rotate and setup the image. Also you can translate MGL script to C++ file by help of @code{mgl2cpp} tool.
+ at node Index, , Copying This Manual, Top
+ at unnumbered ÐндекÑ
-All of this tools have similar set of arguments. First argument is name of script file, next argument is optional output file name, last arguments are options. There are options for setting script parameters (it is @code{$0, $1, ... $9}) and locale settings. The script parameters have format @samp{-Nval}. Here N=0,1...9 is parameter ID and val is its value. For example, option @samp{-1test} set to substitute @samp{test} instead of @code{$1} in the script. Option -Lval set locale to val. For example, @samp{-Lutf8} will set UTF-8 locale for script.
+ at printindex cp
-Additionally you can create animated GIF file or a set of JPEG files with names @samp{frameNNNN.jpg} (here @samp{NNNN} is frame index). You should use @code{mgl2gif} tool and specify the values of @code{$0} parameter for making animation. Values of the parameter @code{$0} can be specified inside the script by comment @code{##a val} for each value @code{val} (one comment for one value) or by option(s) @samp{-Aval}. Tool @code{mgl2gif} will execute script several times (once for each specified value of @code{$0}) and save result in animated GIF file. For saving each frame in JPEG just add command @code{write ''} at the end of the script.
+ at bye
diff --git a/texinfo/other_en.texi b/texinfo/other_en.texi
new file mode 100644
index 0000000..83f546b
--- /dev/null
+++ b/texinfo/other_en.texi
@@ -0,0 +1,442 @@
+
+ at c ------------------------------------------------------------------
+ at chapter Other classes
+
+ at menu
+* mglParse class::
+* mglFormula class::
+* mglFont class::
+* mglColor class::
+* mglPoint class::
+* mglVar class::
+* mglCommand class::
+* mglArg class::
+ at end menu
+
+ at c ------------------------------------------------------------------
+ at node mglParse class, mglFormula class, , Other classes
+ at section mglParse class
+ at cindex mglParse
+
+Class for parsing and executing MGL script. This class is defined in @code{#include <mgl/mgl_parse.h>}.
+
+Class mglParse is the interpreter for MGL scripts (@pxref{MGL interface}). The main function of mglParse class is @code{Parse()}. Exactly this function parses and executes the script string-by-string. Also there are two subservient functions for the finding and creation of a variable. These functions can be useful for displaying values of variables (arrays) in some external program (in window, for example). The variable @var{DataList} contains full list of variables in script. Flag @var{AllowSetSize} allows one to prevent changing the size of the picture inside the script (forbids the MGL command @code{setsize}).
+
+Note an important feature -- if user defines function @var{func} in variable then it will be called before the destroying of this variable (@pxref{mglVar class}).
+
+ at deftypefn {Method on @code{mglParse} (C++, Python)} @code{} mglParse (@code{bool} setsize=@code{false})
+ at deftypefnx {C function} @code{HMPR} mgl_create_parser ()
+Constructor initializes all values with zero and set @var{AllowSetSize} value.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (C++, Python)} @code{} ~mglParse ()
+ at deftypefnx {C function} @code{void} mgl_delete_parser (@code{HMPR} p)
+Destructor delete parser
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (C++, Python)} @code{int} Parse (@code{mglGraph *}gr, @code{const char *}str, @code{long} pos=@code{0})
+ at deftypefnx {Method on @code{mglParse} (C++)} @code{int} Parse (@code{mglGraph *}gr, @code{const wchar_t *}str, @code{long} pos=@code{0})
+ at deftypefnx {C function} @code{int} mgl_parse (@code{HMGL} gr, @code{HMPR} p, @code{const char *}str, @code{int} pos)
+ at deftypefnx {C function} @code{int} mgl_parsew (@code{HMGL} gr, @code{HMPR} p, @code{const wchar_t *}str, @code{int} pos)
+Main function in the class. It parses the string @var{str} and executes it by using @var{gr} as a graphics plotter. Returns the value depending on an error presence in the string @var{str}: 0 -- no error, 1 -- wrong command argument(s), 2 -- unknown command, 3 -- string is too long. Optional argument @var{pos} allows to save the string position in the document (or file) for using @code{for|next} command.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (C++)} @code{int} Export (@code{wchar_t} cpp_out at code{[1024]}, @code{mglGraph *}gr, @code{const wchar_t *}str)
+Function parses the string @var{str}, executes it by using @var{gr} as a graphics plotter and exports it to C++ code. Returns the value depending on an error presence in the string @var{str}: 0 -- no error, 1 -- wrong command argument(s), 2 -- unknown command, 3 -- string is too long. Output C++ text will be placed in @var{out} variable. If string @var{str} have options (defined after ';' symbol) then the corresponding C++ texts are placed in variables @var{op1}, @var{op2}.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (C++)} @code{void} Execute (@code{mglGraph *}gr, @code{FILE *}fp, @code{bool} print=@code{false})
+Function parse and execute line-by-line MGL script in file @var{fp}. If @var{print}=@code{true} then all warnings and information will be printed in stdout. Also this function support the @code{for|next} MGL commands.
+ at end deftypefn
+ at deftypefn {Method on @code{mglParse} (C++)} @code{void} Execute (@code{mglGraph *}gr, @code{int} num, @code{const wchar_t **}text, @code{void (*} error @code{)(int line, int kind)=NULL})
+Function parse and execute line-by-line MGL script in array @var{text}. If @var{error} is not @code{NULL} then this function will be called for all warnings, information and other messages. Also this function support the @code{for|next} MGL commands.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (C++, Python)} @code{void} Execute (@code{mglGraph *}gr, @code{const char *}text, @code{void (*} error @code{)(int line, int kind)=NULL})
+ at deftypefnx {Method on @code{mglParse} (C++)} @code{void} Execute (@code{mglGraph *}gr, @code{const wchar_t *}text, @code{void (*} error @code{)(int line, int kind)=NULL})
+ at deftypefnx {C function} @code{void} mgl_parse_text (@code{HMGL} gr, @code{HMPR} p, @code{const char *}text)
+ at deftypefnx {C function} @code{void} mgl_parsew_text (@code{HMGL} gr, @code{HMPR} p, @code{const wchar_t *}text)
+Function parse and execute line-by-line MGL script in string @var{text}. Lines are separated by @samp{\n} symbol as usual. If @var{error} is not @code{NULL} then this function will be called for all warnings, information and other messages. Also this function support the @code{for|next} MGL commands.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (C++, Python)} @code{bool} AddParam (@code{int} n, @code{const char *}str, @code{bool} isstr=@code{true})
+ at deftypefnx {Method on @code{mglParse} (C++)} @code{bool} AddParam (@code{int} n, @code{const wchar_t *}str, @code{bool} isstr=@code{true})
+ at deftypefnx {C function} @code{void} mgl_add_param (@code{HMPR} p, @code{int} id, @code{const char *}val)
+ at deftypefnx {C function} @code{void} mgl_add_paramw (@code{HMPR} p, @code{int} id, @code{const wchar_t *}val)
+Function set the value of @var{n}-th parameter as string @var{str} (@var{n}=0, 1 ... 9). It return @code{true} for success.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (C++, Python)} @code{mglVar *} FindVar (@code{const char *}name)
+ at deftypefnx {Method on @code{mglParse} (C++)} @code{mglVar *} FindVar (@code{const wchar_t *}name)
+ at deftypefnx {C function} @code{const HMDT} mgl_find_var (@code{HMPR} p, @code{const char *}name)
+Function returns the pointer to variable with name @var{name} or zero if variable is absent. Use this function to put external data array to the script or get the data from the script.
+ at end deftypefn
+ at deftypefn {Method on @code{mglParse} (C++, Python)} @code{mglVar *} AddVar (@code{const char *}name)
+ at deftypefnx {Method on @code{mglParse} (C++)} @code{mglVar *} AddVar (@code{const wchar_t *}name)
+ at deftypefnx {C function} @code{const HMDT} mgl_add_var (@code{HMPR} p, @code{const char *}name)
+Function returns the pointer to variable with name @var{name}. If variable is absent then new variable is created with name @var{name}. Use this function to put external data array to the script or get the data from the script.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (C++)} @code{void} DeleteVar (@code{mglVar *}v)
+ at deftypefnx {Method on @code{mglParse} (C++)} @code{void} DeleteVar (@code{const char *}name)
+ at deftypefnx {Method on @code{mglParse} (C++)} @code{void} DeleteVar (@code{const wchar_t *}name)
+Function delete the variable specified by its name or by its pointer.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (C++, Python)} @code{inline void} RestoreOnce ()
+ at deftypefnx {C function} @code{void} mgl_restore_once (@code{HMPR} p)
+Restore Once flag.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (Python)} @code{void} AllowSetSize (@code{bool} a)
+ at deftypefnx {C function} @code{void} mgl_parser_allow_setsize (@code{HMPR} p, @code{int} a)
+Allow to parse 'setsize' command or not.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (C++)} @code{void} AddCommand (@code{mglCommand *}cmd, @code{int} num=@code{0})
+Add @var{num} commands @var{cmd} to the defined MGL commands list. Parameter @var{cmd} is array of @code{mglCommand} structures. If parameter @var{num}=0 then it will be determined automatically. At this, array @var{cmd} @strong{must have} last element with @code{name=L""}
+ at end deftypefn
+
+ at deftypecv {Option} mglParse @code{mglVar *} DataList
+List of variables defined in script.
+ at end deftypecv
+ at deftypecv {Option} mglParse @code{bool} AllowSetSize
+Flag which allows/forbids the command @code{setsize} in scripts.
+ at end deftypecv
+ at deftypecv {Option} mglParse @code{bool} Stop
+Flag which interrupt script execution.
+ at end deftypecv
+ at deftypecv {Option} mglParse @code{mglCommand *} Cmd
+Table (array) of recognizable MGL commands (can be changed by user). Items in the table @strong{MUST be sorted} by @var{name} field !!! Last items must have empty name (i.e. @code{L""}).
+ at end deftypecv
+ at deftypecv {Option} mglParse @code{wchar_t *} op1
+These strings contain command options and should be placed before the command. These variables are used for MGL->C++ (or other language) conversion.
+ at end deftypecv
+ at deftypecv {Option} mglParse @code{wchar_t *} op2
+These strings contain command options and should be placed after the command. These variables are used for MGL->C++ (or other language) conversion.
+ at end deftypecv
+
+ at c ------------------------------------------------------------------
+ at node mglFormula class, mglFont class, mglParse class, Other classes
+ at section mglFormula class
+ at cindex mglFormula
+
+Class for evaluating of formula specified by the string. This class is defined in @code{#include <mgl/mgl_eval.h>}.
+
+It is the fast variant of formula evaluation. At creation it will be recognized and compiled to tree-like internal code. At evaluation stage only fast calculations are performed. There is no difference between lower or upper case in formulas. If argument value lie outside the range of function definition then function returns NaN. @xref{Textual formulas}.
+
+ at deftypemethod mglFormula @code{} mglFormula (@code{const char *}str)
+Parses the formula @var{str} and creates formula-tree. Constructor recursively parses the formula and creates a tree-like structure containing functions and operators for fast further evaluating by @code{Calc()} or @code{CalcD()} functions.
+ at end deftypemethod
+ at deftypemethod mglFormula @code{float} Calc (@code{float} x, @code{float} y=@code{0}, @code{float} z=@code{0}, @code{float} u=@code{0})
+Evaluates the formula for @code{'x','r'}=@var{x}, @code{'y','n'}=@var{y}, @code{'z','t'}=@var{z}, @code{'a','u'}=@var{u}. Error code (if one) can be obtained from function @code{GetError()}.
+ at end deftypemethod
+ at deftypemethod mglFormula @code{float} Calc (@code{float} x, @code{float} y, @code{float} z, @code{float} u, @code{float} v, @code{float} w)
+Evaluates the formula for @code{'x'}=@var{x}, @code{'y'}=@var{y}, @code{'z'}=@var{z}, @code{'u'}=@var{u}, @code{'v'}=@var{v}, @code{'w'}=@var{w}. Error code (if one) can be obtained from function @code{GetError()}.
+ at end deftypemethod
+ at deftypemethod mglFormula @code{float} Calc (@code{float} var at code{['z'-'a'+1]})
+Evaluates the formula for variables in array @var{var}['z'-'a']. Error code (if one) can be obtained from function @code{GetError()}.
+ at end deftypemethod
+ at deftypemethod mglFormula @code{float} CalcD (@code{float} var at code{['z'-'a'+1]}, @code{char} diff)
+Evaluates the formula derivation respect to @var{diff} for variables in array @var{var}['z'-'a']. Error code (if one) can be obtained from function @code{GetError()}.
+ at end deftypemethod
+ at deftypemethod mglFormula @code{int} GetError ()
+Returns error code: @code{0} means no error; @code{ERR_LOG} means error in logarithm or power functions; @code{ERR_ARC} means error in inverse functions (like asin); @code{ERR_SQRT} means error in sqrt function.
+ at end deftypemethod
+
+ at c ------------------------------------------------------------------
+ at node mglFont class, mglColor class, mglFormula class, Other classes
+ at section mglFont class
+ at cindex mglFont
+
+Class for working with font: load, get metrics, parse and draw strings. This class is defined in @code{#include <mgl/mgl_font.h>}.
+
+The class is based on loading and drawing of vector Hershey font. There are two styles of specifying of the font type and aligning: by integer parameters or by string.
+
+The string can be any combination of characters: @samp{rbiLCRwou}. The font types are: @samp{r} -- roman font, @samp{i} -- italic style, @samp{b} -- bold style. By default roman font (that is @samp{} or @samp{r}) is used. The align types are: @samp{L} -- align left (default), @samp{C} -- align center, @samp{R} -- align right. Additional font effects are: @samp{w} -- wire, @samp{o} -- over-lined, @samp{u} -- underlined. Parsing of the string to special (TeX-like) commands will be done if variable @var{parse} is true (it's default). See also @pxref{Font styles}.
+
+The over way of font and alignment setting is the using of the integer constant. Integer font Id can be one of predefined constants: @code{MGL_FONT_ITAL, MGL_FONT_BOLD, MGL_FONT_BOLD_ITAL = MGL_FONT_ITAL+MGL_FONT_BOLD}. Default font is @code{MGL_FONT_ROMAN}. Also there are flags @code{MGL_FONT_ULINE, MGL_FONT_OLINE, MGL_FONT_WIRE} for additional font effects. Align parameter controls the text alignment: 0 -- align left, 1 -- align center, 2 -- align right.
+
+
+ at menu
+* Format of font files::
+ at end menu
+
+
+ at deftypemethod mglFont @code{} mglFont (@code{const char *}name=@code{MGL_DEF_FONT_NAME}, @code{const char *}path=@code{NULL})
+Initialize the font and load data from file @var{name} (default name is "STIX" for Linux and MacOS) or if @var{name}=@code{NULL} limited data from memory (default for Windows).
+ at end deftypemethod
+ at deftypemethod mglFont @code{bool} Load (@code{const char *} base, @code{const char *}path=@code{NULL})
+Load font from file @var{path}/@var{base} into the memory. The font may contain 4 files: @var{base}.vfm, @var{base}_b.vfm, @var{base}_i.vfm, @var{base}_bi.vfm. Appendix contain detailed description of font format.
+ at end deftypemethod
+ at deftypemethod mglFont @code{void} Restore ()
+Restore default font.
+ at end deftypemethod
+ at deftypemethod mglFont @code{void} (@code{mglFont *} fnt)
+Copy data from other font instance.
+ at end deftypemethod
+ at deftypemethod mglFont @code{void} Clear ()
+Clear memory by deleting the loaded font.
+ at end deftypemethod
+ at deftypemethod mglFont @code{inline unsigned} GetNumGlyph ()
+Return the number of glyphs in the font.
+ at end deftypemethod
+ at deftypemethod mglFont @code{inline bool} Ready ()
+Return true if font is loaded and ready for use.
+ at end deftypemethod
+
+
+ at deftypemethod mglFont @code{float} Height (@code{int} font)
+Gets height of text for font specified by integer constant.
+ at end deftypemethod
+ at deftypemethod mglFont @code{float} Puts (@code{const char *}str, @code{int} font=@code{0}, @code{int} align=@code{0})
+Prints 8-bit text string for font specified by integer constant.
+ at end deftypemethod
+ at deftypemethod mglFont @code{float} Width (@code{const char *}str, @code{int} font=@code{0})
+Gets width of 8-bit text string for font specified by integer constant.
+ at end deftypemethod
+ at deftypemethod mglFont @code{float} Puts (@code{const wchar_t *}str, @code{int} font=@code{0}, @code{int} align=@code{0})
+Prints Unicode text string for font specified by integer constant.
+ at end deftypemethod
+ at deftypemethod mglFont @code{float} Width (@code{const wchar_t *}str, @code{int} font=@code{0})
+Gets width of Unicode text string for font specified by integer constant.
+ at end deftypemethod
+
+
+ at deftypemethod mglFont @code{float} Height (@code{const char *}how)
+Gets height of text for font specified by string.
+ at end deftypemethod
+ at deftypemethod mglFont @code{float} Puts (@code{const char *}str, @code{const char *}how)
+Prints 8-bit text string for font specified by string.
+ at end deftypemethod
+ at deftypemethod mglFont @code{float} Width (@code{const char *}str, @code{const char *}how)
+Gets width of 8-bit text string for font specified by string.
+ at end deftypemethod
+ at deftypemethod mglFont @code{float} Puts (@code{const wchar_t *}str, @code{const char *}how)
+Prints Unicode text string for font specified by string.
+ at end deftypemethod
+ at deftypemethod mglFont @code{float} Width (@code{const wchar_t *}str, @code{const char *}how)
+Gets width of Unicode text string for font specified by string.
+ at end deftypemethod
+
+ at deftypecv {Parameter} mglFont @code{mglGraph *} gr
+Instance of mglGraph class which is used for character drawing.
+ at end deftypecv
+ at deftypecv {Parameter} mglFont @code{bool} parse
+Flag for switching on/off the parsing of TeX commands. Default value is @code{true}.
+ at end deftypecv
+
+ at c ------------------------------------------------------------------
+ at node Format of font files, , , mglFont class
+ at subsection Format of font files
+
+Starting from v.1.6 the MathGL library uses new font files. The font is defined in 4 files with suffixes @samp{*.vfm}, @samp{*_b.vfm}, @samp{*_i.vfm}, @samp{*_bi.vfm}. These files are text files containing the data for roman font, bold font, italic font and bold italic font. The files (or some symbols in the files) for bold, italic or bold italic fonts can be absent. In this case the roman glyph will be used for them. By analogy, if the bold italic font is absent but the bold font is present then bold glyph will be used for bold italic. You may create these font files by yourself from *.ttf, *.otf files with the help of program @code{font_tools}. This program can be found at MathGL home site.
+
+The format of font files (*.vfm -- vector font for MathGL) is the following.
+ at enumerate
+ at item
+First string contains human readable comment and is always ignored.
+ at item
+Second string contains 3 numbers, delimited by space or tabulation. The order of numbers is the following: @var{numg} -- the number of glyphs in the file (integer), @var{fact} -- the factor for glyph sizing (float), @var{size} -- the size of buffer for glyph description (integer).
+ at item
+After it @var{numg}-th strings with glyphs description are placed. Each string contains 6 positive numbers, delimited by space of tabulation. The order of numbers is the following: Unicode glyph ID, glyph width, number of lines in glyph, position of lines coordinates in the buffer (length is 2*number of lines), number of triangles in glyph, position of triangles coordinates in the buffer (length is 6*number of triangles).
+ at item
+The end of file contains the buffer with point coordinates at lines or triangles vertexes. The size of buffer (the number of integer) is @var{size}.
+ at end enumerate
+
+Each font file can be compressed by gzip.
+
+Note: the closing contour line is done automatically (so the last segment may be absent). For starting new contour use a point with coordinates @code{@{0x3fff, 0x3fff@}}.
+
+
+ at c ------------------------------------------------------------------
+ at node mglColor class, mglPoint class, mglFont class, Other classes
+ at section mglColor class
+ at cindex mglColor
+
+Structure for working with colors. This structure is defined in @code{#include <mgl/mgl.h>}.
+
+There are two ways to set the color in MathGL. First one is using of float values of red, green and blue channels for precise color definition. The second way is the using of character id. There are a set of characters specifying frequently used colors. Normally capital letter gives more dark color than lowercase one. @xref{Line styles}.
+
+ at deftypecv {Parameter} mglVar @code{float} {r, g, b}
+Reg, green and blue component of color.
+ at end deftypecv
+
+ at deftypemethod mglColor @code{} mglColor (@code{float} R, @code{float} G, @code{float} B)
+Constructor sets the color by float values of Red, Green and Blue channels.
+ at end deftypemethod
+ at deftypemethod mglColor @code{} mglColor (@code{char} c=@code{'k'})
+Constructor sets the color from character id. The black color is used by default.
+ at end deftypemethod
+ at deftypemethod mglColor @code{void} Set (@code{float} R, @code{float} G, @code{float} B)
+Sets color from values of Red, Green and Blue channels. This values should be in interval [0,1].
+ at end deftypemethod
+ at deftypemethod mglColor @code{void} Set (@code{mglColor} c, @code{float} bright=@code{1})
+Sets color as ``lighted'' version of color @var{c}.
+ at end deftypemethod
+ at deftypemethod mglColor @code{void} Set (@code{char} p)
+Sets color from symbolic id.
+ at end deftypemethod
+ at deftypemethod mglColor @code{bool} Valid ()
+Checks correctness of the color.
+ at end deftypemethod
+ at deftypemethod mglColor @code{float} Norm ()
+Gets maximal of spectral component.
+ at end deftypemethod
+ at deftypemethod mglColor @code{bool} operator== (@code{const mglColor &}c)
+Compare with another color
+ at end deftypemethod
+
+ at deftypefn {Library Function} {inline mglColor} operator+ (@code{const mglColor &}a, @code{const mglColor &}b)
+Adds colors by its RGB values.
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglColor} operator- (@code{const mglColor &}a, @code{const mglColor &}b)
+Subtracts colors by its RGB values.
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglColor} operator* (@code{const mglColor &}a, @code{float} b)
+Multiplies color by number.
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglColor} operator* (@code{float} a, @code{const mglColor &}b)
+Multiplies color by number.
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglColor} operator/ (@code{const mglColor &}a, @code{float} b)
+Divide color by number.
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglColor} operator! (@code{const mglColor &}a)
+Return inverted color.
+ at end deftypefn
+
+ at c ------------------------------------------------------------------
+ at node mglPoint class, mglArg class, mglColor class, Other classes
+ at section mglPoint class
+ at cindex mglPoint
+
+Structure describes point in space. This structure is defined in @code{#include <mgl/mgl.h>}
+
+ at deftypecv {Parameter} mglVar @code{float} {x, y, z}
+Point coordinates. By default all values are zero.
+ at end deftypecv
+
+ at deftypefn {Library Function} {inline mglPoint} operator+ (@code{const mglPoint &}a, @code{const mglPoint &}b)
+Point of summation (summation of vectors).
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglPoint} operator- (@code{const mglPoint &}a, @code{const mglPoint &}b)
+Point of difference (difference of vectors).
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglPoint} operator* (@code{float} a, @code{const mglPoint &}b)
+Multiplies (scale) points by number.
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglPoint} operator* (@code{const mglPoint &}a, @code{float} b)
+Multiplies (scale) points by number.
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglPoint} operator/ (@code{const mglPoint &}a, @code{float} b)
+Multiplies (scale) points by number 1/b.
+ at end deftypefn
+ at deftypefn {Library Function} {inline float} operator- (@code{const mglPoint &}a, @code{const mglPoint &}b)
+Scalar product of vectors.
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglPoint} operator^ (@code{const mglPoint &}a, @code{const mglPoint &}b)
+Cross-product of vectors.
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglPoint} operator& (@code{const mglPoint &}a, @code{const mglPoint &}b)
+The part of @var{a} which is perpendicular to vector @var{b}.
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglPoint} operator| (@code{const mglPoint &}a, @code{const mglPoint &}b)
+The part of @var{a} which is parallel to vector @var{b}.
+ at end deftypefn
+
+ at deftypefn {Library Function} {inline mglPoint} operator! (@code{const mglPoint &}a)
+Return vector perpendicular to vector @var{a}.
+ at end deftypefn
+ at deftypefn {Library Function} {inline bool} Norm (@code{const mglPoint &}a)
+Return the norm |@var{a}|^2 of vector @var{a}.
+ at end deftypefn
+
+ at deftypefn {Library Function} {inline bool} operator== (@code{const mglPoint &}a, @code{const mglPoint &}b)
+Return true if points are the same.
+ at end deftypefn
+ at deftypefn {Library Function} {inline bool} operator!= (@code{const mglPoint &}a, @code{const mglPoint &}b)
+Return true if points are different.
+ at end deftypefn
+
+ at c ------------------------------------------------------------------
+ at node mglVar class, mglCommand class, mglArg class, Other classes
+ at section mglVar class
+ at cindex mglVar
+
+Structure describes variable of type @code{mglData} and its name in MGL script. This structure is used by @code{mglParse} and is defined in @code{#include <mgl/mgl_parse.h>}.
+
+ at deftypecv {Parameter} mglVar @code{mglData} d
+Data itself
+ at end deftypecv
+ at deftypecv {Parameter} mglVar @code{wchar_t} s[256]
+Data name
+ at end deftypecv
+ at deftypecv {Parameter} mglVar @code{void *} o
+Pointer to external object for function @var{func}.
+ at end deftypecv
+ at deftypecv {Parameter} mglVar @code{mglVar *} next
+Pointer to next instance in list
+ at end deftypecv
+ at deftypecv {Parameter} mglVar @code{mglVar *} prev
+Pointer to prev instance in list
+ at end deftypecv
+ at deftypecv {Parameter} mglVar @code{bool} temp
+Flag for temporar variable. Temporal variables will be destroyed after script execution.
+ at end deftypecv
+ at deftypecv {Parameter} mglVar @code{void (*} func @code{)(void *)}
+Callback function for destroying non-temporal variable.
+ at end deftypecv
+
+ at deftypemethod mglVar @code{void} MoveAfter (@code{mglVar *}var)
+Move variable after @var{var} and copy @code{func} from @code{var} (if @code{func} is not 0)
+ at end deftypemethod
+
+
+ at c ------------------------------------------------------------------
+ at node mglCommand class, , mglVar class, Other classes
+ at section mglCommand class
+ at cindex mglCommand
+
+Structure describes MGL command, its name, short description, executable and export functions. The structure is used by @code{mglParse} and is defined in @code{#include <mgl/mgl_parse.h>}.
+
+ at deftypecv {Parameter} mglCommand @code{const wchar_t *} name
+Name of command.
+ at end deftypecv
+ at deftypecv {Parameter} mglCommand @code{const wchar_t *} desc
+Short command description (can be NULL).
+ at end deftypecv
+ at deftypecv {Parameter} mglCommand @code{const wchar_t *} form
+Format of command arguments (can be NULL).
+ at end deftypecv
+ at deftypecv {Parameter} mglCommand @code{int (*} exec @code{)(mglGraph *gr, long n, mglArg *a, int k[10])const wchar_t *}
+Function for executing (plotting) the command using grapher @var{gr} and having @var{n}-th arguments @var{a}. Function must return 0 if all is OK; or 1 if arguments are wrong.
+ at end deftypecv
+ at deftypecv {Parameter} mglCommand @code{void (*} save @code{)(wchar_t out[1024], long n, mglArg *a, int k[10])const wchar_t *}
+Function for exporting in C++ (can be NULL).
+ at end deftypecv
+
+
+ at c ------------------------------------------------------------------
+ at node mglArg class, mglVar class, mglPoint class, Other classes
+ at section mglArg class
+ at cindex mglArg
+
+Structure describes arguments of functions in the stucture @code{mglCommand}. It is defined in @code{#include <mgl/mgl_parse.h>}.
+
+ at deftypecv {Parameter} mglArg @code{int} type
+Type of argument: 0-data, 1-string, 2-number.
+ at end deftypecv
+ at deftypecv {Parameter} mglArg @code{mglData *} d
+Pointer to data (used if type=0).
+ at end deftypecv
+ at deftypecv {Parameter} mglArg @code{wchar_t} w[2048]
+String with parameters (used if type=1 or if type=0 as variable name).
+ at end deftypecv
+ at deftypecv {Parameter} mglArg @code{char} s[2048]
+String with parameters (used if type=1).
+ at end deftypecv
+ at deftypecv {Parameter} mglArg @code{float} v
+Numerical value (used if type==2)
+ at end deftypecv
+
diff --git a/texinfo/other_ru.texi b/texinfo/other_ru.texi
new file mode 100644
index 0000000..83f546b
--- /dev/null
+++ b/texinfo/other_ru.texi
@@ -0,0 +1,442 @@
+
+ at c ------------------------------------------------------------------
+ at chapter Other classes
+
+ at menu
+* mglParse class::
+* mglFormula class::
+* mglFont class::
+* mglColor class::
+* mglPoint class::
+* mglVar class::
+* mglCommand class::
+* mglArg class::
+ at end menu
+
+ at c ------------------------------------------------------------------
+ at node mglParse class, mglFormula class, , Other classes
+ at section mglParse class
+ at cindex mglParse
+
+Class for parsing and executing MGL script. This class is defined in @code{#include <mgl/mgl_parse.h>}.
+
+Class mglParse is the interpreter for MGL scripts (@pxref{MGL interface}). The main function of mglParse class is @code{Parse()}. Exactly this function parses and executes the script string-by-string. Also there are two subservient functions for the finding and creation of a variable. These functions can be useful for displaying values of variables (arrays) in some external program (in window, for example). The variable @var{DataList} contains full list of variables in script. Flag @var{AllowSetSize} allows one to prevent changing the size of the picture inside the script (forbids the MGL command @code{setsize}).
+
+Note an important feature -- if user defines function @var{func} in variable then it will be called before the destroying of this variable (@pxref{mglVar class}).
+
+ at deftypefn {Method on @code{mglParse} (C++, Python)} @code{} mglParse (@code{bool} setsize=@code{false})
+ at deftypefnx {C function} @code{HMPR} mgl_create_parser ()
+Constructor initializes all values with zero and set @var{AllowSetSize} value.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (C++, Python)} @code{} ~mglParse ()
+ at deftypefnx {C function} @code{void} mgl_delete_parser (@code{HMPR} p)
+Destructor delete parser
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (C++, Python)} @code{int} Parse (@code{mglGraph *}gr, @code{const char *}str, @code{long} pos=@code{0})
+ at deftypefnx {Method on @code{mglParse} (C++)} @code{int} Parse (@code{mglGraph *}gr, @code{const wchar_t *}str, @code{long} pos=@code{0})
+ at deftypefnx {C function} @code{int} mgl_parse (@code{HMGL} gr, @code{HMPR} p, @code{const char *}str, @code{int} pos)
+ at deftypefnx {C function} @code{int} mgl_parsew (@code{HMGL} gr, @code{HMPR} p, @code{const wchar_t *}str, @code{int} pos)
+Main function in the class. It parses the string @var{str} and executes it by using @var{gr} as a graphics plotter. Returns the value depending on an error presence in the string @var{str}: 0 -- no error, 1 -- wrong command argument(s), 2 -- unknown command, 3 -- string is too long. Optional argument @var{pos} allows to save the string position in the document (or file) for using @code{for|next} command.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (C++)} @code{int} Export (@code{wchar_t} cpp_out at code{[1024]}, @code{mglGraph *}gr, @code{const wchar_t *}str)
+Function parses the string @var{str}, executes it by using @var{gr} as a graphics plotter and exports it to C++ code. Returns the value depending on an error presence in the string @var{str}: 0 -- no error, 1 -- wrong command argument(s), 2 -- unknown command, 3 -- string is too long. Output C++ text will be placed in @var{out} variable. If string @var{str} have options (defined after ';' symbol) then the corresponding C++ texts are placed in variables @var{op1}, @var{op2}.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (C++)} @code{void} Execute (@code{mglGraph *}gr, @code{FILE *}fp, @code{bool} print=@code{false})
+Function parse and execute line-by-line MGL script in file @var{fp}. If @var{print}=@code{true} then all warnings and information will be printed in stdout. Also this function support the @code{for|next} MGL commands.
+ at end deftypefn
+ at deftypefn {Method on @code{mglParse} (C++)} @code{void} Execute (@code{mglGraph *}gr, @code{int} num, @code{const wchar_t **}text, @code{void (*} error @code{)(int line, int kind)=NULL})
+Function parse and execute line-by-line MGL script in array @var{text}. If @var{error} is not @code{NULL} then this function will be called for all warnings, information and other messages. Also this function support the @code{for|next} MGL commands.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (C++, Python)} @code{void} Execute (@code{mglGraph *}gr, @code{const char *}text, @code{void (*} error @code{)(int line, int kind)=NULL})
+ at deftypefnx {Method on @code{mglParse} (C++)} @code{void} Execute (@code{mglGraph *}gr, @code{const wchar_t *}text, @code{void (*} error @code{)(int line, int kind)=NULL})
+ at deftypefnx {C function} @code{void} mgl_parse_text (@code{HMGL} gr, @code{HMPR} p, @code{const char *}text)
+ at deftypefnx {C function} @code{void} mgl_parsew_text (@code{HMGL} gr, @code{HMPR} p, @code{const wchar_t *}text)
+Function parse and execute line-by-line MGL script in string @var{text}. Lines are separated by @samp{\n} symbol as usual. If @var{error} is not @code{NULL} then this function will be called for all warnings, information and other messages. Also this function support the @code{for|next} MGL commands.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (C++, Python)} @code{bool} AddParam (@code{int} n, @code{const char *}str, @code{bool} isstr=@code{true})
+ at deftypefnx {Method on @code{mglParse} (C++)} @code{bool} AddParam (@code{int} n, @code{const wchar_t *}str, @code{bool} isstr=@code{true})
+ at deftypefnx {C function} @code{void} mgl_add_param (@code{HMPR} p, @code{int} id, @code{const char *}val)
+ at deftypefnx {C function} @code{void} mgl_add_paramw (@code{HMPR} p, @code{int} id, @code{const wchar_t *}val)
+Function set the value of @var{n}-th parameter as string @var{str} (@var{n}=0, 1 ... 9). It return @code{true} for success.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (C++, Python)} @code{mglVar *} FindVar (@code{const char *}name)
+ at deftypefnx {Method on @code{mglParse} (C++)} @code{mglVar *} FindVar (@code{const wchar_t *}name)
+ at deftypefnx {C function} @code{const HMDT} mgl_find_var (@code{HMPR} p, @code{const char *}name)
+Function returns the pointer to variable with name @var{name} or zero if variable is absent. Use this function to put external data array to the script or get the data from the script.
+ at end deftypefn
+ at deftypefn {Method on @code{mglParse} (C++, Python)} @code{mglVar *} AddVar (@code{const char *}name)
+ at deftypefnx {Method on @code{mglParse} (C++)} @code{mglVar *} AddVar (@code{const wchar_t *}name)
+ at deftypefnx {C function} @code{const HMDT} mgl_add_var (@code{HMPR} p, @code{const char *}name)
+Function returns the pointer to variable with name @var{name}. If variable is absent then new variable is created with name @var{name}. Use this function to put external data array to the script or get the data from the script.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (C++)} @code{void} DeleteVar (@code{mglVar *}v)
+ at deftypefnx {Method on @code{mglParse} (C++)} @code{void} DeleteVar (@code{const char *}name)
+ at deftypefnx {Method on @code{mglParse} (C++)} @code{void} DeleteVar (@code{const wchar_t *}name)
+Function delete the variable specified by its name or by its pointer.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (C++, Python)} @code{inline void} RestoreOnce ()
+ at deftypefnx {C function} @code{void} mgl_restore_once (@code{HMPR} p)
+Restore Once flag.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (Python)} @code{void} AllowSetSize (@code{bool} a)
+ at deftypefnx {C function} @code{void} mgl_parser_allow_setsize (@code{HMPR} p, @code{int} a)
+Allow to parse 'setsize' command or not.
+ at end deftypefn
+
+ at deftypefn {Method on @code{mglParse} (C++)} @code{void} AddCommand (@code{mglCommand *}cmd, @code{int} num=@code{0})
+Add @var{num} commands @var{cmd} to the defined MGL commands list. Parameter @var{cmd} is array of @code{mglCommand} structures. If parameter @var{num}=0 then it will be determined automatically. At this, array @var{cmd} @strong{must have} last element with @code{name=L""}
+ at end deftypefn
+
+ at deftypecv {Option} mglParse @code{mglVar *} DataList
+List of variables defined in script.
+ at end deftypecv
+ at deftypecv {Option} mglParse @code{bool} AllowSetSize
+Flag which allows/forbids the command @code{setsize} in scripts.
+ at end deftypecv
+ at deftypecv {Option} mglParse @code{bool} Stop
+Flag which interrupt script execution.
+ at end deftypecv
+ at deftypecv {Option} mglParse @code{mglCommand *} Cmd
+Table (array) of recognizable MGL commands (can be changed by user). Items in the table @strong{MUST be sorted} by @var{name} field !!! Last items must have empty name (i.e. @code{L""}).
+ at end deftypecv
+ at deftypecv {Option} mglParse @code{wchar_t *} op1
+These strings contain command options and should be placed before the command. These variables are used for MGL->C++ (or other language) conversion.
+ at end deftypecv
+ at deftypecv {Option} mglParse @code{wchar_t *} op2
+These strings contain command options and should be placed after the command. These variables are used for MGL->C++ (or other language) conversion.
+ at end deftypecv
+
+ at c ------------------------------------------------------------------
+ at node mglFormula class, mglFont class, mglParse class, Other classes
+ at section mglFormula class
+ at cindex mglFormula
+
+Class for evaluating of formula specified by the string. This class is defined in @code{#include <mgl/mgl_eval.h>}.
+
+It is the fast variant of formula evaluation. At creation it will be recognized and compiled to tree-like internal code. At evaluation stage only fast calculations are performed. There is no difference between lower or upper case in formulas. If argument value lie outside the range of function definition then function returns NaN. @xref{Textual formulas}.
+
+ at deftypemethod mglFormula @code{} mglFormula (@code{const char *}str)
+Parses the formula @var{str} and creates formula-tree. Constructor recursively parses the formula and creates a tree-like structure containing functions and operators for fast further evaluating by @code{Calc()} or @code{CalcD()} functions.
+ at end deftypemethod
+ at deftypemethod mglFormula @code{float} Calc (@code{float} x, @code{float} y=@code{0}, @code{float} z=@code{0}, @code{float} u=@code{0})
+Evaluates the formula for @code{'x','r'}=@var{x}, @code{'y','n'}=@var{y}, @code{'z','t'}=@var{z}, @code{'a','u'}=@var{u}. Error code (if one) can be obtained from function @code{GetError()}.
+ at end deftypemethod
+ at deftypemethod mglFormula @code{float} Calc (@code{float} x, @code{float} y, @code{float} z, @code{float} u, @code{float} v, @code{float} w)
+Evaluates the formula for @code{'x'}=@var{x}, @code{'y'}=@var{y}, @code{'z'}=@var{z}, @code{'u'}=@var{u}, @code{'v'}=@var{v}, @code{'w'}=@var{w}. Error code (if one) can be obtained from function @code{GetError()}.
+ at end deftypemethod
+ at deftypemethod mglFormula @code{float} Calc (@code{float} var at code{['z'-'a'+1]})
+Evaluates the formula for variables in array @var{var}['z'-'a']. Error code (if one) can be obtained from function @code{GetError()}.
+ at end deftypemethod
+ at deftypemethod mglFormula @code{float} CalcD (@code{float} var at code{['z'-'a'+1]}, @code{char} diff)
+Evaluates the formula derivation respect to @var{diff} for variables in array @var{var}['z'-'a']. Error code (if one) can be obtained from function @code{GetError()}.
+ at end deftypemethod
+ at deftypemethod mglFormula @code{int} GetError ()
+Returns error code: @code{0} means no error; @code{ERR_LOG} means error in logarithm or power functions; @code{ERR_ARC} means error in inverse functions (like asin); @code{ERR_SQRT} means error in sqrt function.
+ at end deftypemethod
+
+ at c ------------------------------------------------------------------
+ at node mglFont class, mglColor class, mglFormula class, Other classes
+ at section mglFont class
+ at cindex mglFont
+
+Class for working with font: load, get metrics, parse and draw strings. This class is defined in @code{#include <mgl/mgl_font.h>}.
+
+The class is based on loading and drawing of vector Hershey font. There are two styles of specifying of the font type and aligning: by integer parameters or by string.
+
+The string can be any combination of characters: @samp{rbiLCRwou}. The font types are: @samp{r} -- roman font, @samp{i} -- italic style, @samp{b} -- bold style. By default roman font (that is @samp{} or @samp{r}) is used. The align types are: @samp{L} -- align left (default), @samp{C} -- align center, @samp{R} -- align right. Additional font effects are: @samp{w} -- wire, @samp{o} -- over-lined, @samp{u} -- underlined. Parsing of the string to special (TeX-like) commands will be done if variable @var{parse} is true (it's default). See also @pxref{Font styles}.
+
+The over way of font and alignment setting is the using of the integer constant. Integer font Id can be one of predefined constants: @code{MGL_FONT_ITAL, MGL_FONT_BOLD, MGL_FONT_BOLD_ITAL = MGL_FONT_ITAL+MGL_FONT_BOLD}. Default font is @code{MGL_FONT_ROMAN}. Also there are flags @code{MGL_FONT_ULINE, MGL_FONT_OLINE, MGL_FONT_WIRE} for additional font effects. Align parameter controls the text alignment: 0 -- align left, 1 -- align center, 2 -- align right.
+
+
+ at menu
+* Format of font files::
+ at end menu
+
+
+ at deftypemethod mglFont @code{} mglFont (@code{const char *}name=@code{MGL_DEF_FONT_NAME}, @code{const char *}path=@code{NULL})
+Initialize the font and load data from file @var{name} (default name is "STIX" for Linux and MacOS) or if @var{name}=@code{NULL} limited data from memory (default for Windows).
+ at end deftypemethod
+ at deftypemethod mglFont @code{bool} Load (@code{const char *} base, @code{const char *}path=@code{NULL})
+Load font from file @var{path}/@var{base} into the memory. The font may contain 4 files: @var{base}.vfm, @var{base}_b.vfm, @var{base}_i.vfm, @var{base}_bi.vfm. Appendix contain detailed description of font format.
+ at end deftypemethod
+ at deftypemethod mglFont @code{void} Restore ()
+Restore default font.
+ at end deftypemethod
+ at deftypemethod mglFont @code{void} (@code{mglFont *} fnt)
+Copy data from other font instance.
+ at end deftypemethod
+ at deftypemethod mglFont @code{void} Clear ()
+Clear memory by deleting the loaded font.
+ at end deftypemethod
+ at deftypemethod mglFont @code{inline unsigned} GetNumGlyph ()
+Return the number of glyphs in the font.
+ at end deftypemethod
+ at deftypemethod mglFont @code{inline bool} Ready ()
+Return true if font is loaded and ready for use.
+ at end deftypemethod
+
+
+ at deftypemethod mglFont @code{float} Height (@code{int} font)
+Gets height of text for font specified by integer constant.
+ at end deftypemethod
+ at deftypemethod mglFont @code{float} Puts (@code{const char *}str, @code{int} font=@code{0}, @code{int} align=@code{0})
+Prints 8-bit text string for font specified by integer constant.
+ at end deftypemethod
+ at deftypemethod mglFont @code{float} Width (@code{const char *}str, @code{int} font=@code{0})
+Gets width of 8-bit text string for font specified by integer constant.
+ at end deftypemethod
+ at deftypemethod mglFont @code{float} Puts (@code{const wchar_t *}str, @code{int} font=@code{0}, @code{int} align=@code{0})
+Prints Unicode text string for font specified by integer constant.
+ at end deftypemethod
+ at deftypemethod mglFont @code{float} Width (@code{const wchar_t *}str, @code{int} font=@code{0})
+Gets width of Unicode text string for font specified by integer constant.
+ at end deftypemethod
+
+
+ at deftypemethod mglFont @code{float} Height (@code{const char *}how)
+Gets height of text for font specified by string.
+ at end deftypemethod
+ at deftypemethod mglFont @code{float} Puts (@code{const char *}str, @code{const char *}how)
+Prints 8-bit text string for font specified by string.
+ at end deftypemethod
+ at deftypemethod mglFont @code{float} Width (@code{const char *}str, @code{const char *}how)
+Gets width of 8-bit text string for font specified by string.
+ at end deftypemethod
+ at deftypemethod mglFont @code{float} Puts (@code{const wchar_t *}str, @code{const char *}how)
+Prints Unicode text string for font specified by string.
+ at end deftypemethod
+ at deftypemethod mglFont @code{float} Width (@code{const wchar_t *}str, @code{const char *}how)
+Gets width of Unicode text string for font specified by string.
+ at end deftypemethod
+
+ at deftypecv {Parameter} mglFont @code{mglGraph *} gr
+Instance of mglGraph class which is used for character drawing.
+ at end deftypecv
+ at deftypecv {Parameter} mglFont @code{bool} parse
+Flag for switching on/off the parsing of TeX commands. Default value is @code{true}.
+ at end deftypecv
+
+ at c ------------------------------------------------------------------
+ at node Format of font files, , , mglFont class
+ at subsection Format of font files
+
+Starting from v.1.6 the MathGL library uses new font files. The font is defined in 4 files with suffixes @samp{*.vfm}, @samp{*_b.vfm}, @samp{*_i.vfm}, @samp{*_bi.vfm}. These files are text files containing the data for roman font, bold font, italic font and bold italic font. The files (or some symbols in the files) for bold, italic or bold italic fonts can be absent. In this case the roman glyph will be used for them. By analogy, if the bold italic font is absent but the bold font is present then bold glyph will be used for bold italic. You may create these font files by yourself from *.ttf, *.otf files with the help of program @code{font_tools}. This program can be found at MathGL home site.
+
+The format of font files (*.vfm -- vector font for MathGL) is the following.
+ at enumerate
+ at item
+First string contains human readable comment and is always ignored.
+ at item
+Second string contains 3 numbers, delimited by space or tabulation. The order of numbers is the following: @var{numg} -- the number of glyphs in the file (integer), @var{fact} -- the factor for glyph sizing (float), @var{size} -- the size of buffer for glyph description (integer).
+ at item
+After it @var{numg}-th strings with glyphs description are placed. Each string contains 6 positive numbers, delimited by space of tabulation. The order of numbers is the following: Unicode glyph ID, glyph width, number of lines in glyph, position of lines coordinates in the buffer (length is 2*number of lines), number of triangles in glyph, position of triangles coordinates in the buffer (length is 6*number of triangles).
+ at item
+The end of file contains the buffer with point coordinates at lines or triangles vertexes. The size of buffer (the number of integer) is @var{size}.
+ at end enumerate
+
+Each font file can be compressed by gzip.
+
+Note: the closing contour line is done automatically (so the last segment may be absent). For starting new contour use a point with coordinates @code{@{0x3fff, 0x3fff@}}.
+
+
+ at c ------------------------------------------------------------------
+ at node mglColor class, mglPoint class, mglFont class, Other classes
+ at section mglColor class
+ at cindex mglColor
+
+Structure for working with colors. This structure is defined in @code{#include <mgl/mgl.h>}.
+
+There are two ways to set the color in MathGL. First one is using of float values of red, green and blue channels for precise color definition. The second way is the using of character id. There are a set of characters specifying frequently used colors. Normally capital letter gives more dark color than lowercase one. @xref{Line styles}.
+
+ at deftypecv {Parameter} mglVar @code{float} {r, g, b}
+Reg, green and blue component of color.
+ at end deftypecv
+
+ at deftypemethod mglColor @code{} mglColor (@code{float} R, @code{float} G, @code{float} B)
+Constructor sets the color by float values of Red, Green and Blue channels.
+ at end deftypemethod
+ at deftypemethod mglColor @code{} mglColor (@code{char} c=@code{'k'})
+Constructor sets the color from character id. The black color is used by default.
+ at end deftypemethod
+ at deftypemethod mglColor @code{void} Set (@code{float} R, @code{float} G, @code{float} B)
+Sets color from values of Red, Green and Blue channels. This values should be in interval [0,1].
+ at end deftypemethod
+ at deftypemethod mglColor @code{void} Set (@code{mglColor} c, @code{float} bright=@code{1})
+Sets color as ``lighted'' version of color @var{c}.
+ at end deftypemethod
+ at deftypemethod mglColor @code{void} Set (@code{char} p)
+Sets color from symbolic id.
+ at end deftypemethod
+ at deftypemethod mglColor @code{bool} Valid ()
+Checks correctness of the color.
+ at end deftypemethod
+ at deftypemethod mglColor @code{float} Norm ()
+Gets maximal of spectral component.
+ at end deftypemethod
+ at deftypemethod mglColor @code{bool} operator== (@code{const mglColor &}c)
+Compare with another color
+ at end deftypemethod
+
+ at deftypefn {Library Function} {inline mglColor} operator+ (@code{const mglColor &}a, @code{const mglColor &}b)
+Adds colors by its RGB values.
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglColor} operator- (@code{const mglColor &}a, @code{const mglColor &}b)
+Subtracts colors by its RGB values.
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglColor} operator* (@code{const mglColor &}a, @code{float} b)
+Multiplies color by number.
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglColor} operator* (@code{float} a, @code{const mglColor &}b)
+Multiplies color by number.
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglColor} operator/ (@code{const mglColor &}a, @code{float} b)
+Divide color by number.
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglColor} operator! (@code{const mglColor &}a)
+Return inverted color.
+ at end deftypefn
+
+ at c ------------------------------------------------------------------
+ at node mglPoint class, mglArg class, mglColor class, Other classes
+ at section mglPoint class
+ at cindex mglPoint
+
+Structure describes point in space. This structure is defined in @code{#include <mgl/mgl.h>}
+
+ at deftypecv {Parameter} mglVar @code{float} {x, y, z}
+Point coordinates. By default all values are zero.
+ at end deftypecv
+
+ at deftypefn {Library Function} {inline mglPoint} operator+ (@code{const mglPoint &}a, @code{const mglPoint &}b)
+Point of summation (summation of vectors).
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglPoint} operator- (@code{const mglPoint &}a, @code{const mglPoint &}b)
+Point of difference (difference of vectors).
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglPoint} operator* (@code{float} a, @code{const mglPoint &}b)
+Multiplies (scale) points by number.
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglPoint} operator* (@code{const mglPoint &}a, @code{float} b)
+Multiplies (scale) points by number.
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglPoint} operator/ (@code{const mglPoint &}a, @code{float} b)
+Multiplies (scale) points by number 1/b.
+ at end deftypefn
+ at deftypefn {Library Function} {inline float} operator- (@code{const mglPoint &}a, @code{const mglPoint &}b)
+Scalar product of vectors.
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglPoint} operator^ (@code{const mglPoint &}a, @code{const mglPoint &}b)
+Cross-product of vectors.
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglPoint} operator& (@code{const mglPoint &}a, @code{const mglPoint &}b)
+The part of @var{a} which is perpendicular to vector @var{b}.
+ at end deftypefn
+ at deftypefn {Library Function} {inline mglPoint} operator| (@code{const mglPoint &}a, @code{const mglPoint &}b)
+The part of @var{a} which is parallel to vector @var{b}.
+ at end deftypefn
+
+ at deftypefn {Library Function} {inline mglPoint} operator! (@code{const mglPoint &}a)
+Return vector perpendicular to vector @var{a}.
+ at end deftypefn
+ at deftypefn {Library Function} {inline bool} Norm (@code{const mglPoint &}a)
+Return the norm |@var{a}|^2 of vector @var{a}.
+ at end deftypefn
+
+ at deftypefn {Library Function} {inline bool} operator== (@code{const mglPoint &}a, @code{const mglPoint &}b)
+Return true if points are the same.
+ at end deftypefn
+ at deftypefn {Library Function} {inline bool} operator!= (@code{const mglPoint &}a, @code{const mglPoint &}b)
+Return true if points are different.
+ at end deftypefn
+
+ at c ------------------------------------------------------------------
+ at node mglVar class, mglCommand class, mglArg class, Other classes
+ at section mglVar class
+ at cindex mglVar
+
+Structure describes variable of type @code{mglData} and its name in MGL script. This structure is used by @code{mglParse} and is defined in @code{#include <mgl/mgl_parse.h>}.
+
+ at deftypecv {Parameter} mglVar @code{mglData} d
+Data itself
+ at end deftypecv
+ at deftypecv {Parameter} mglVar @code{wchar_t} s[256]
+Data name
+ at end deftypecv
+ at deftypecv {Parameter} mglVar @code{void *} o
+Pointer to external object for function @var{func}.
+ at end deftypecv
+ at deftypecv {Parameter} mglVar @code{mglVar *} next
+Pointer to next instance in list
+ at end deftypecv
+ at deftypecv {Parameter} mglVar @code{mglVar *} prev
+Pointer to prev instance in list
+ at end deftypecv
+ at deftypecv {Parameter} mglVar @code{bool} temp
+Flag for temporar variable. Temporal variables will be destroyed after script execution.
+ at end deftypecv
+ at deftypecv {Parameter} mglVar @code{void (*} func @code{)(void *)}
+Callback function for destroying non-temporal variable.
+ at end deftypecv
+
+ at deftypemethod mglVar @code{void} MoveAfter (@code{mglVar *}var)
+Move variable after @var{var} and copy @code{func} from @code{var} (if @code{func} is not 0)
+ at end deftypemethod
+
+
+ at c ------------------------------------------------------------------
+ at node mglCommand class, , mglVar class, Other classes
+ at section mglCommand class
+ at cindex mglCommand
+
+Structure describes MGL command, its name, short description, executable and export functions. The structure is used by @code{mglParse} and is defined in @code{#include <mgl/mgl_parse.h>}.
+
+ at deftypecv {Parameter} mglCommand @code{const wchar_t *} name
+Name of command.
+ at end deftypecv
+ at deftypecv {Parameter} mglCommand @code{const wchar_t *} desc
+Short command description (can be NULL).
+ at end deftypecv
+ at deftypecv {Parameter} mglCommand @code{const wchar_t *} form
+Format of command arguments (can be NULL).
+ at end deftypecv
+ at deftypecv {Parameter} mglCommand @code{int (*} exec @code{)(mglGraph *gr, long n, mglArg *a, int k[10])const wchar_t *}
+Function for executing (plotting) the command using grapher @var{gr} and having @var{n}-th arguments @var{a}. Function must return 0 if all is OK; or 1 if arguments are wrong.
+ at end deftypecv
+ at deftypecv {Parameter} mglCommand @code{void (*} save @code{)(wchar_t out[1024], long n, mglArg *a, int k[10])const wchar_t *}
+Function for exporting in C++ (can be NULL).
+ at end deftypecv
+
+
+ at c ------------------------------------------------------------------
+ at node mglArg class, mglVar class, mglPoint class, Other classes
+ at section mglArg class
+ at cindex mglArg
+
+Structure describes arguments of functions in the stucture @code{mglCommand}. It is defined in @code{#include <mgl/mgl_parse.h>}.
+
+ at deftypecv {Parameter} mglArg @code{int} type
+Type of argument: 0-data, 1-string, 2-number.
+ at end deftypecv
+ at deftypecv {Parameter} mglArg @code{mglData *} d
+Pointer to data (used if type=0).
+ at end deftypecv
+ at deftypecv {Parameter} mglArg @code{wchar_t} w[2048]
+String with parameters (used if type=1 or if type=0 as variable name).
+ at end deftypecv
+ at deftypecv {Parameter} mglArg @code{char} s[2048]
+String with parameters (used if type=1).
+ at end deftypecv
+ at deftypecv {Parameter} mglArg @code{float} v
+Numerical value (used if type==2)
+ at end deftypecv
+
diff --git a/texinfo/overview_en.texi b/texinfo/overview_en.texi
index 96cc233..feb038e 100644
--- a/texinfo/overview_en.texi
+++ b/texinfo/overview_en.texi
@@ -1,5 +1,3 @@
-
- at node Overview, Examples, , Top
@chapter Overview
@cindex MathGL overview
@@ -62,7 +60,7 @@ All texts are drawn by vector fonts, which allows for high scalability and porta
Special mglData class is used for data encapsulation (@pxref{mglData class}). In addition to a safe creation and deletion of data arrays it includes functions for data processing (smoothing, differentiating, integrating, interpolating and so on) and reading of data files with automatic size determination. Class mglData can handle arrays with up to three dimensions (arrays which depend on up to 3 independent indexes @math{a_@{ijk@}}). Using an array with higher number of dimensions is not meaningful, because I do not know how it can be plotted. Data filling and modification may be done manually or by textual formulas.
-The mglFormula class allows a fast evaluation of a textual mathematical expression (@pxref{mglFormula class}). It is based on string precompilation to tree-like code at the creation of class instance. At evaluation stage code performs only fast tree-walk and returns the value of the expression. In addition to changing data values, textual formulas are also used for drawing in @emph{arbitrary} curvilinear coordinates. A set of such curvilinear coordinates is limited only by user's imagination rather than a fixed list like: polar, parabolic, spherical, and so on.
+The mglFormula class allows a fast evaluation of a textual mathematical expression (@pxref{mglFormula class}). It is based on string precompilation to tree-like code at the creation of class instance. At evaluation stage code performs only fast tree-walk and returns the value of the expression. In addition to changing data values, textual formulas are also used for drawing in @emph{arbitrary} curvilinear coordinates. A set of such curvilinear coordinates is limited only by user</samp>’s imagination rather than a fixed list like: polar, parabolic, spherical, and so on.
@node Installation and usage, General concepts, MathGL features, Overview
@section Installation and usage
@@ -72,7 +70,7 @@ MathGL can be installed in 3 different ways.
@item
Compile from sources. The standard script for autoconf/automake tool is included in the library beginning from version 1.2.1. To run it, one should execute 3 commands: @code{./configure} after it @code{make} and @code{make install} with root/sudo rights. Sometimes after installation you may need to update the library list -- just execute @code{ldconfig} with root/sudo rights.
-Script @code{./configure} have several additional options which are switched off by default. They are: @code{--enable-fltk, --enable-glut, --enable-qt} for ebabling FLTK, GLUT and/or Qt windows; @code{--enable-jpeg, --enable-tiff, --enable-hdf5} for enabling corresponding file formats; @code{--enable-all} for enabling all additional features. For enabling language interfaces use @code{--enable-python, --enable-octave} or @code{--enable-langall} for all languages. The full list of options can be viewed by command @code{./configure --help}.
+Script @code{./configure} have several additional options which are switched off by default. They are: @code{--enable-fltk, --enable-glut, --enable-qt} for ebabling FLTK, GLUT and/or Qt windows; @code{--enable-jpeg, --enable-tiff, --enable-hdf5} for enabling corresponding file formats; @code{--enable-all} for enabling all additional features. For using @code{double} as base internal data type use option @code{--enable-double}. For enabling language interfaces use @code{--enable-python, --enable-octave} or @code{--enable-langall} for all languages. The full list of options can be viewed by command @code{./configure --help}.
@item
Use a precompiled binary. There are binaries for MinGW (platform Win32). For a precompiled variant one needs only to unpack the archive to the location of the compiler (or in any other folder and setup paths). By default, precompiled versions include the support of GSL (www.gsl.org) and PNG. So, one needs to have these libraries installed on system.
@item
@@ -95,7 +93,7 @@ There are six most general (base) concepts:
@item
@strong{Every plot settings (style of lines, font, color scheme) are specified by a string.} It provides convenience for user/programmer -- short string with parameters is more comprehensible than a large set of parameters. Also it provides portability -- the strings are the same in any OS so that it is not necessary to think about argument types.
@item
- at strong{All functions have ``simplified'' and ``advanced'' forms.} It is done for user's convenience. One needs to specify only one data array in the ``simplified'' form in order to see the result. But one may set parametric dependence of coordinates and produce rather complex curves and surfaces in the ``advanced'' form. In both cases the order of function arguments is the same: first data arrays, second the string with plot parameters, and later optional arguments for plot tuning.
+ at strong{All functions have ``simplified'' and ``advanced'' forms.} It is done for user</samp>’s convenience. One needs to specify only one data array in the ``simplified'' form in order to see the result. But one may set parametric dependence of coordinates and produce rather complex curves and surfaces in the ``advanced'' form. In both cases the order of function arguments is the same: first data arrays, second the string with plot parameters, and later optional arguments for plot tuning.
@item
@strong{All data arrays for plotting are encapsulated in mglData class.} This reduces the number of errors while working with memory and provides a uniform interface for data of different types (float, double and so on) or for formula plotting.
@item
@@ -110,126 +108,11 @@ In addition to the general concepts I want to comment on some non-trivial or les
* Coordinate axes::
* Line styles::
* Color scheme::
-* Font style::
+* Font styles::
+* Textual formulas::
@end menu
-
- at node Coordinate axes, Line styles, , General concepts
- at subsection Coordinate axes
-
-Two axis representations are used in MathGL. The first one consists of normalizing the data point coordinates in a box @var{Min}x at var{Max} (@pxref{Axis settings}). If @var{Cut} is @code{true} then the outlier points are omitted, otherwise they are projected to the bounding box (@pxref{Cutting}). Also, the point will be omitted if it lies inside the box defined by @var{CutMin} x @var{CutMax} or if the value of formula @code{CutOff}() is nonzero for its coordinates. After that, transformation formulas are applied to the data point (@pxref{Curved coordinates}). Finally, the data point is plotted by one of the functions.
-
-There is a possibility to set members @var{Max}, @var{Min} directly, but one should call @code{RecalcBorder()} function to setup plotting routines. A safer way is to set these values by calling the @code{Axis()} function, which calls @code{RecalcBorder()} automatically. Another way to specify the scaling of the axis is to set it as a minimal or maximal value of the data array. Functions @code{XRange(), YRange(), ZRange()} do it. The second (optional) argument is used to replace the axis range or to join with the existed range.
-
-The axis origin is defined by the variable @var{Org} and is applied to all consequent calls of axes or grid drawing. By default, if this point lies outside the bounding box then it is projected onto the one (variable @var{AutoOrg} controls it). If one of the values of @var{Org} is equal to NAN then the corresponding value will be selected automatically.
-
-There is 4-th axis @emph{c} (color axis or colorbar) in addition to the usual axes @emph{x, y, z}. It sets the range of values for the surface coloring. Its borders are automatically set to values of Min.z, Max.z during the call of @code{Axis()} function. Also, one can directly change the color range by setting variables @var{Cmax}, @var{Cmax}, or calling functions @code{CAxis()} or @code{CRange()}. Use @code{Colorbar()} function for showing the colorbar.
-
-The form (appearence) of tick labels is controlled by @code{SetTicks()} function (@pxref{Ticks}). It has 3 arguments: first one @var{d} sets the tick step (if positive) or tick number (if negative) or switches logarithmic ticks on (if zero); the second one, @var{ns}, sets the number of subticks; the last one is the starting point for ticks (default is axis origin). Function @var{SetTuneTicks} switches on/off tick enhancing by factoring out acommon multiplier (for small coordinate values, like 0.001 to 0.002, or large, like from 1000 to 2000) or common component (for narrow range, like from 0.999 to 1.000). Finally, you may use functions @code{SetXTT(), SetYTT(), SetZTT(), SetCTT()} for setting templates for tick labels (it supports TeX symbols). Also, there is a possibility to print arbitrary text as tick labels the by help of @code{SetTicksVal()} function.
-
- at node Line styles, Color scheme, Coordinate axes, General concepts
- at subsection Line styles
-
- at cindex Line style
- at cindex Mark style
- at cindex Arrows
-
-The line style is defined by the string which may contain specifications for color (@samp{wkrgbcymhRGBCYMHWlenupqLENUPQ}), dashing style (@samp{-|;:ji} or space), width (@samp{0123456789}) and marks (@samp{o+xsd.^v} and @samp{#} modifier). If one of the type of information is omitted then default values used with the previous color are adopted.
-
-The color types are the same as described in mglColor class (@pxref{mglColor class}): @samp{k} -- black, @samp{r} -- red, @samp{R} -- dark red, @samp{g} -- green, @samp{G} -- dark green, @samp{b} -- blue, @samp{B} -- dark blue, @samp{c} -- cyan, @samp{C} -- dark cyan, @samp{m} -- magenta, @samp{M} -- dark magenta, @samp{y} -- yellow, @samp{Y} -- dark yellow (gold), @samp{h} -- gray, @samp{H} -- dark gray, @samp{w} -- white, @samp{W} -- bright gray, @samp{l} -- green-blue, @samp{L} -- dark green-blue, @samp{e} -- green-yellow, @samp{E} -- dark green-yellow, @samp{n} -- sky-blue, @samp{N} -- dark sky-blue, @samp{u} -- blue-violet, @samp{U} -- dark blue-violet, @samp{p} -- purple, @samp{P} -- dark purple, @samp{q} -- orange, @samp{Q} -- dark orange (brown).
-
-Dashing style has the following meaning: space -- no line (usable for plotting only marks), @samp{-} -- solid line (################), @samp{|} -- dashed line (########________), @samp{;} -- small dashed line (####____####____), @samp{:} -- dotted line (#___#___#___#___), @samp{j} -- dash-dotted line (#######____#____), @samp{i} -- small dash-dotted line (###__#__###__#__).
-
-Marker types are: @samp{o} -- circle, @samp{+} -- cross, @samp{x} -- skew cross, @samp{s} - square, @samp{d} - rhomb (or diamond), @samp{.} -- point, @samp{^} -- triangle up, @samp{v} -- triangle down. If string contain symbol @samp{#} then the solid versions of markers are used.
-
- at float
- at image{png/sample5, 7cm}
- at caption{Styles of lines and marks.}
- at end float
-
-One may specify to draw a special symbol (an arrow) at the beginning and at the end of line. This is done if the specification string contains one of the following symbols: @samp{A} -- outer arrow, @samp{V} -- inner arrow, @samp{I} -- transverse hatches, @samp{K} -- arrow with hatches, @samp{T} -- triangle, @samp{S} -- square, @samp{D} -- rhombus, @samp{O} -- circle, @samp{_} -- nothing (the default). The following rule applies: the first symbol specifies the arrow at the end of line, the second specifies the arrow at the beginning of the line. For example, @samp{r-A} defines a red solid line with usual arrow at the end, @samp{b|AI} defines a blue dash line with an arrow at the end and with hatches at the beginning, @samp{_O} defines a line with the current style and with a circle at the beginning. These styles are applicable during the graphics plotting as well (for example, @ref{Plot}).
-
- at float
- at image{png/sampled, 7cm}
- at caption{Arrow styles.}
- at end float
-
- at node Color scheme, Font style, Line styles, General concepts
- at subsection Color scheme
-
- at cindex Color scheme
-
-The color scheme is used for determining the color of surfaces, isolines, isosurfaces and so on. The color scheme is defined by the string, which may contain several characters that are color id (@pxref{mglColor class} or @pxref{Line styles}) or characters @samp{d#:|}. Symbol @samp{d} denotes the interpolation by 3d position instead of the coloring by amplitude. Symbol @samp{#} switches to mesh drawing or to a wire plot. Symbol @samp{|} disables color interpolation in color scheme, which can be useful, for example, for sharp colors during matrix plotting. Symbol @samp{:} finishes the color scheme parsing. Following it, the user may put styles for the text, rotation axis for curves/isocontours, and so on. Color scheme may contain up to 32 color values.
-
-You may also use ``lighted'' colors in the color scheme specification (@emph{not in line style!}). The ``lighted'' color contain 2 symbols: first one is the usual symbol for color specification, the second one is a digit for its brightness. The digit can be in range @samp{1}... at samp{9}.
-Number @samp{5} corresponds to a normal color, @samp{1} is a very dark version of the color (practically black), and @samp{9} is a very bright version of the color (practically white). For example, the color scheme can be @samp{b2b7wr7r2}.
-
- at float
- at image{png/colors, 7cm}
- at caption{Colors and its ids.}
- at end float
-
-For coloring by @emph{amplitude} (most common) the final color is a linear interpolation of color array. The color array is constructed from the string ids. The argument is the amplitude normalized between @var{Cmin} -- @var{Cmax} (@pxref{Ranges (bounding box)}). For example, string containing 4 characters @samp{bcyr} corresponds to a colorbar from blue (lowest value) through cyan (next value) through yellow (next value) to the red (highest value). String @samp{kw} corresponds to a colorbar from black (lowest value) to white (highest value). String @samp{m} corresponds to a simple magenta color.
-
-There are several useful combinations. String @samp{kw} corresponds to the simplest gray color scheme where higher values are brighter. String @samp{wk} presents the inverse gray color scheme where higher value is darker. Strings @samp{kRryw}, @samp{kGgw}, @samp{kBbcw} present the well-known @emph{hot}, @emph{summer} and @emph{winter} color schemes. Strings @samp{BbwrR} and @samp{bBkRr} allow to view bi-color figure on white or black background, where negative values are blue and positive values are red. String @samp{BbcyrR} gives a color scheme similar to the well-known @emph{jet} color scheme.
-
-Examples of the most popular color schemes:
- at table @samp
- at item kw
- at image{png_static/kw}
- at item wk
- at image{png_static/wk}
- at item hHCcw
- at image{png_static/kHCcw}
-
- at item kRryw
- at image{png_static/kRryw}
- at item kGgew
- at image{png_static/kGgew}
- at item kBbcw
- at image{png_static/kBbcw}
-
- at item BbwrR
- at image{png_static/BbwrR}
- at item BbwgG
- at image{png_static/BbwgG}
- at item GgwmM
- at image{png_static/GgwmM}
-
- at item bcwyr
- at image{png_static/bcwyr}
- at item QqwcC
- at image{png_static/QqwcC}
- at item CcwyY
- at image{png_static/CcwyY}
-
- at item BbcyrR
- at image{png_static/BbcyrR}
- at item BbcwyrR
- at image{png_static/BbcwyrR}
- at item bwr
- at image{png_static/bwr}
-
- at item bcyr
- at image{png_static/bcyr}
- at item bgr
- at image{png_static/bgr}
- at item BbcyrR|
- at image{png_static/sharp}
- at end table
-
-When coloring by @emph{coordinate}, the final color is determined by the position of the point in 3d space and is calculated from formula c=x*c[1] + y*c[2] + z*c[3]. Here, c[1], c[2], c[3] are the first three elements of color array; x, y, z are normalized to @var{Min} -- @var{Max} coordinates of the point. This type of coloring is useful for isosurface plot where color may show the exact position of a piece of surface. For example, @pxref{Surf3}.
-
- at node Font style, , Color scheme, General concepts
- at subsection Font style
-
- at cindex Font style
-
-Text style is specified by the string which may contain several characters of font (@samp{ribwou}) and/or alignment (@samp{LRC}) specifications. The string also may contain the color id characters @samp{wkrgbcymhRGBCYMHW} (@pxref{mglColor class}) after the symbol @samp{:}. For example, @samp{biC:b} sets the bold italic font text aligned at the center and with blue color.
-
-The font types are: @samp{r} -- roman font, @samp{i} -- italic style, @samp{b} -- bold style. By default roman roman font is used. The align types are: @samp{L} -- align left (default), @samp{C} -- align center, @samp{R} -- align right. Additional font effects are: @samp{w} -- wired, @samp{o} -- over-lined, @samp{u} -- underlined. Also a parsing of the LaTeX-like syntax is provided (for detail, @pxref{mglFont class} and @ref{Font settings}).
-
-The font size can be defined explicitly (if @var{size}>0) or relative to a base font size as |@var{size}|*@var{FontSize} (if @var{size}<0). The value @var{size}=0 specifies that the string will not be printed. The base font size is measured in internal ``MathGL'' units. Special functions @code{SetFontSizePT(), SetFontSizeCM(), SetFontSizeIN()} allow one to set it in more ``common'' variables for a given dpi value of the picture.
+ at include concept_en.texi
@node FAQ, Interfaces, General concepts, Overview
@section FAQ
@@ -245,7 +128,7 @@ Most ``new'' types of plots can be created by using the existing drawing functio
No. The MathGL library is self-contained and does not require the knowledge of external libraries.
@item In which language is the library written? For which languages does it have an interface?
-The core of the MathGL library is written in C++. But there are interfaces for: pure C, Fortran, Pascal, Forth, and its own command language MGL. Also there is a large set of interpreted languages, which are supported (Python, Java, ALLEGROCL, CHICKEN, Lisp, CFFI, C#, Guile, Lua, Modula 3, Mzscheme, Ocaml, Octave, Perl, PHP, Pike, R, Ruby, Tcl). These interfaces are written using SWIG (both pure C functions and classes) but only the interface for Python and Octave is included in the autoconf/automake script. The reason is that I don't know any other interpreted languages :(. Note that most other languages can use (link to) the pure C functions.
+The core of the MathGL library is written in C++. But there are interfaces for: pure C, Fortran, Pascal, Forth, and its own command language MGL. Also there is a large set of interpreted languages, which are supported (Python, Java, ALLEGROCL, CHICKEN, Lisp, CFFI, C#, Guile, Lua, Modula 3, Mzscheme, Ocaml, Octave, Perl, PHP, Pike, R, Ruby, Tcl). These interfaces are written using SWIG (both pure C functions and classes) but only the interface for Python and Octave is included in the autoconf/automake script. The reason is that I don</samp>’t know any other interpreted languages :(. Note that most other languages can use (link to) the pure C functions.
@item How can I use MathGL with Fortran?
You can use MathGL as is with @code{gfortran} because it uses by default the AT&T notation for external functions. For other compilers (like Visual Fortran) you have to switch on the AT&T notation manually. The AT&T notation requires that the symbol @samp{_} is added at the end of each function name, function argument(s) is passed by pointers and the string length(s) is passed at the end of the argument list. For example:
@@ -278,6 +161,45 @@ In version 1.10, you can use the header file @code{#include <mgl/mgl_w.h>} which
@c @strong{Finally!} Please @emph{do not} ask me Windows-specific questions. I do not use Windows. I know nothing about Visual Basic, Visual C++, CBuiled or .NET. Please find the appropriate Usenet discussion group and ask your question there.
+ at item How I can build MathGL under Windows?
+The simplest way is using the combination CMake+MinGW. Also you need some extra libraries like GSL, PNG, JPEG and so on. All of them can be found at @url{http://gnuwin32.sourceforge.net/packages.html}. After installing all components, just run CMake configurator and make the MathGL itself.
+
+ at item How I can create FLTK/GLUT/Qt window in parallel with calculation?
+You should create a separate thread for processing window messages. The cross-platform way is using the @code{pthread} library. You can update the data by calling @code{mglGraphFLTK::Update()} function. The code can look like this:
+ at verbatim
+//-----------------------------------------------------------------------------
+#include <mgl/mgl_fltk.h>
+#include <pthread.h>
+#include <unistd.h>
+
+mglPoint pnt; // some global variable for changable data
+//-----------------------------------------------------------------------------
+int sample(mglGraph *gr, void *)
+{
+ gr->Box(); gr->Line(mglPoint(),pnt,"Ar2"); // just draw a vector
+ return 0;
+}
+//-----------------------------------------------------------------------------
+void *mgl_fltk_tmp(void *) { mglFlRun(); return 0; }
+int main (int argc, char ** argv)
+{
+ mglGraphFLTK gr;
+ gr.Window(argc,argv,sample,"test"); // create window
+ static pthread_t tmp;
+ pthread_create(&tmp, 0, mgl_fltk_tmp, 0);
+ pthread_detach(tmp); // run window handling in the separate thread
+ for(int i=0;i<10;i++) // do calculation
+ {
+ sleep(1); // which can be very long
+ pnt = mglPoint(2*mgl_rnd()-1,2*mgl_rnd()-1);
+ gr.Update(); // update window
+ }
+ return 0; // finish calculations and close the window
+}
+//-----------------------------------------------------------------------------
+ at end verbatim
+
+
@item How many people write this library?
Most of the library was written by one person. This is a result of nearly a year of work (mostly in the evening and on holidays): I spent half a year to write the kernel and half a year to a year on extending, improving the library and writing documentation. This process continues now :). The autoconf/automake script was written mostly by D.Kulagin, and the export to IDTF was written mostly by M.Vidassov.
@@ -285,7 +207,7 @@ Most of the library was written by one person. This is a result of nearly a year
You can import data into a @code{mglData} instance and display it by @code{Dens()} function. For example, for black-and-white bitmap you can use the code: @code{mglData bmp; bmp.Import("fname.png","wk"); gr->Dens(bmp,"wk");}.
@item How can I use MathGL in Qt, FLTK, wxWidgets etc.?
-There are special classes (widgets) for these libraries: QMathGL for Qt, Fl_MathGL for FLTK and so on. If you don't find the appropriate class then you can create your own widget that displays a bitmap using mglGraphAB::GetBits().
+There are special classes (widgets) for these libraries: QMathGL for Qt, Fl_MathGL for FLTK and so on. If you don</samp>’t find the appropriate class then you can create your own widget that displays a bitmap using mglGraphAB::GetBits().
@item How can I create U3D file (make 3D in PDF)?
There are 2 steps: first you should create IDTF file, and later convert it to U3D. You can use @uref{http://sourceforge.net/project/showfiles.php?group_id=152187&package_id=300628, U3D tools} for converting IDTF file to U3D. It needs @uref{http://libharu.org, libharu} 2.1.0 or later. For installation use @code{./bootstrap, ./configure, make, sudo make install}. It provides IDTFConverter program for converting text files *.idtf to binary files *.u3d. The latter can be included into PDF.
@@ -328,7 +250,7 @@ All C functions are described in the header file @code{#include <mgl/mgl_c.h>} a
@end itemize
These variables contain identifiers for graphics drawing objects and for the data objects.
-Fortran functions/subroutines have the same names as C functions. However, there is a difference. Variable of type @code{HMGL, HMDT} must be an integer with sufficient size (@code{integer*4} in the 32-bit operating system or @code{integer*8} in the 64-bit operating system). All C functions are subroutines in Fortran, which are called by operator @code{call}. The exceptions are functions, which return variables of types @code{HMGL} or @code{HMDT}. These functions should be declared as integer in Fortran code. Also, one should keep in mind that strings in Fortran are denoted by @code{'} symbol, not the @code{"} symbol.
+Fortran functions/subroutines have the same names as C functions. However, there is a difference. Variable of type @code{HMGL, HMDT} must be an integer with sufficient size (@code{integer*4} in the 32-bit operating system or @code{integer*8} in the 64-bit operating system). All C functions are subroutines in Fortran, which are called by operator @code{call}. The exceptions are functions, which return variables of types @code{HMGL} or @code{HMDT}. These functions should be declared as integer in Fortran code. Also, one should keep in mind that strings in Fortran are denoted by @code{</samp>’} symbol, not the @code{"} symbol.
@strong{Create and delete objects}
@@ -407,21 +329,21 @@ Delete the instance of a class. Must be used after the use of every created data
@node Python interface, , C interface, Interfaces
@subsection Python interface
-MathGL provides the interface to a set of languages via SWIG library. Some of these languages support classes. The typical example is Python -- which is named in this chapter's title.
+MathGL provides the interface to a set of languages via SWIG library. Some of these languages support classes. The typical example is Python -- which is named in this chapter</samp>’s title.
To use Python classes just execute @samp{import mathgl}. The simplest example will be:
@verbatim
import mathgl
a=mathgl.mglGraph()
a.Box()
-a.WritePNG('test.png')
+a.WritePNG(</samp>’test.png</samp>’)
@end verbatim
Alternatively you can import all classes from @code{mathgl} module and easily access MathGL classes like this:
@verbatim
from mathgl import *
a=mglGraph()
a.Box()
-a.WritePNG('test.png')
+a.WritePNG(</samp>’test.png</samp>’)
@end verbatim
This becomes useful if you create many @code{mglData} objects, for example.
@@ -438,14 +360,14 @@ To use Python classes just execute @samp{import mathgl}. The simplest example wi
import mathgl
a=mathgl.mglGraph()
a.Box()
-a.WritePNG('test.png')
+a.WritePNG(</samp>’test.png</samp>’)
@end verbatim
Alternatively, you can import all the classes from @code{mathgl} module and easily access MathGL classes:
@verbatim
from mathgl import *
a=mglGraph()
a.Box()
-a.WritePNG('test.png')
+a.WritePNG(</samp>’test.png</samp>’)
@end verbatim
This is useful if you create many @code{mglData} objects, for example.
@@ -481,11 +403,11 @@ Create the instance of class mglGraph with specified sizes @var{width} and @var{
@item
My special thanks to Marina Balakina for the patience during the writing of this library and for the help in documentation writing and spelling.
@item
-I'm thankful to D. Kulagin and S.M. Plis for making Debian packages.
+I</samp>’m thankful to D. Kulagin and S.M. Plis for making Debian packages.
@item
-I'm thankful to M. Vidassov for the help in handling solid UTF-8 fonts.
+I</samp>’m thankful to M. Vidassov for the help in handling solid UTF-8 fonts.
@item
-I'm thankful to N. Troickiy and V. Lipatov for making RPM packages.
+I</samp>’m thankful to N. Troickiy and V. Lipatov for making RPM packages.
@item
-I'm thankful to S. Skobelev, A. Korotkevich, V. Onuchin, S.M. Plis, R. Kiselev, A. Ivanov, M. Vidiassov and V. Lipatov for fruitful comments.
+I</samp>’m thankful to S. Skobelev, A. Korotkevich, V. Onuchin, S.M. Plis, R. Kiselev, A. Ivanov, M. Vidiassov and V. Lipatov for fruitful comments.
@end itemize
diff --git a/texinfo/overview_ru.texi b/texinfo/overview_ru.texi
index 52bd561..7e6277b 100644
--- a/texinfo/overview_ru.texi
+++ b/texinfo/overview_ru.texi
@@ -1,5 +1,4 @@
- at node Overview, Examples, , Top
@chapter ÐÐ±Ð·Ð¾Ñ MathGL
@cindex ÐÐ±Ð·Ð¾Ñ MathGL
@@ -72,7 +71,7 @@ MathGL ÑÑо ...
@item
СкомпилиÑоваÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾ÑÐµÐºÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвенно из иÑÑ
однÑÑ
Ñайлов. С библиоÑекой поÑÑавлÑеÑÑÑ ÑÑандаÑÑнÑй ÑкÑÐ¸Ð¿Ñ Ð´Ð»Ñ autoconf/automake. ÐÐ»Ñ ÐµÐ³Ð¾ запÑÑка доÑÑаÑоÑно в командной ÑÑÑоке вÑполниÑÑ 3 командÑ: ÑнаÑала @code{./configure} далее @code{make} и, наконеÑ, Ñ Ð¿Ñавами ÑÑпеÑполÑзоваÑÐµÐ»Ñ @code{make install}. Ðногда поÑле компилÑÑии библиоÑеки Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ðµ ÑпиÑка библиоÑека в ÑиÑÑеме -- вÑполниÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ @code{ldconfig} Ñ Ð¿Ñавами ÑÑпеÑполÑзоваÑелÑ.
-СкÑÐ¸Ð¿Ñ @code{./configure} Ð¸Ð¼ÐµÐµÑ Ð½ÐµÑколÑко дополниÑелÑнÑÑ
опÑий, коÑоÑÑе по ÑмолÑÐ°Ð½Ð¸Ñ Ð¾ÑклÑÑенÑ. РиÑ
ÑиÑÐ»Ñ Ð¾ÑноÑÑÑÑÑ: @code{--enable-fltk, --enable-glut, --enable-qt} Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки FLTK, GLUT и/или Qt окон; @code{--enable-jpeg, --enable-tiff, --enable-hdf5} Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки ÑооÑвеÑÑÑвÑÑÑиÑ
ÑоÑмаÑов; @code{--enable-all} Ð´Ð»Ñ Ð²ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ð²ÑеÑ
возможноÑÑей. ÐÐ»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸Ð½ÑеÑÑейÑов к дÑÑгим ÑзÑкам (кÑоме С/ФоÑÑÑан/MGL) иÑполÑзÑйÑе опÑии @code{--enable-python, --enable-octave} или @code{--enable-langall} Ð´Ð»Ñ Ð²ÑеÑ
поддеÑживаемÑÑ
ÑзÑков. ÐолнÑй ÑпиÑок опÑий можно ÑвидеÑÑ, вÑполнив @code{./configure --help}.
+СкÑÐ¸Ð¿Ñ @code{./configure} Ð¸Ð¼ÐµÐµÑ Ð½ÐµÑколÑко дополниÑелÑнÑÑ
опÑий, коÑоÑÑе по ÑмолÑÐ°Ð½Ð¸Ñ Ð¾ÑклÑÑенÑ. РиÑ
ÑиÑÐ»Ñ Ð¾ÑноÑÑÑÑÑ: @code{--enable-fltk, --enable-glut, --enable-qt} Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки FLTK, GLUT и/или Qt окон; @code{--enable-jpeg, --enable-tiff, --enable-hdf5} Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки ÑооÑвеÑÑÑвÑÑÑиÑ
ÑоÑмаÑов; @code{--enable-all} Ð´Ð»Ñ Ð²ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ð²ÑеÑ
возможноÑÑей. ÐÐ»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñипа @code{double} Ð´Ð»Ñ Ð²Ð½ÑÑÑеннего Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
иÑполÑзÑйÑе опÑÐ¸Ñ @code{--enable-double}. ÐÐ»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸Ð½ÑеÑÑейÑов к дÑÑгим ÑзÑкам (кÑоме С/ФоÑÑÑан/MGL) иÑполÑзÑйÑе опÑии @code{--enable-python, --enable-octave} или @code{--enable-langall} Ð´Ð»Ñ Ð²ÑеÑ
поддеÑживаемÑÑ
ÑзÑков. ÐолнÑй ÑпиÑок опÑий можно ÑвидеÑÑ, вÑполнив @code{./configure --help}.
@item
ÐÑполÑзоваÑÑ Ð¿ÑедваÑиÑелÑно ÑкомпилиÑованнÑе ÑÐ°Ð¹Ð»Ñ -- Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñекой поÑÑавлÑÑÑÑÑ ÑÐ°Ð¹Ð»Ñ Ð´Ð»Ñ MinGW (плаÑÑоÑма Win32). Ð ÑкомпилиÑованной веÑÑии доÑÑаÑоÑно ÑаÑпаковаÑÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾ÑнÑе ÑÐ°Ð¹Ð»Ñ Ð² Ð¿Ð°Ð¿ÐºÑ Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾ÑнÑми Ñайлами и библиоÑÐµÐºÑ libmgl.a в Ð¿Ð°Ð¿ÐºÑ Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеками. Ðо ÑмолÑаниÑ, ÑкомпилиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ Ð²ÐµÑÑÐ¸Ñ Ð²ÐºÐ»ÑÑаÑÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÑ GSL (www.gsl.org) и PNG. СооÑвеÑÑÑвенно, пÑи ÑбоÑке пÑогÑÐ°Ð¼Ð¼Ñ ÑÑи библиоÑеки Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ (иÑ
можно найÑи на @uref{http://gnuwin32.sf.net}).
@item
@@ -108,125 +107,12 @@ MathGL ÑÑо ...
* Coordinate axes::
* Line styles::
* Color scheme::
-* Font style::
+* Font styles::
+* Textual formulas::
@end menu
+ at include concept_ru.texi
- at node Coordinate axes, Line styles, , General concepts
- at subsection ÐÑи кооÑдинаÑ
-
-ÐÑедÑÑавление ÑиÑÑÐµÐ¼Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ Ð² MathGL ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· двÑÑ
ÑаÑÑей. ÐнаÑале кооÑдинаÑÑ Ð½Ð¾ÑмиÑÑÑÑÑÑ Ð² инÑеÑвал @var{Min}x at var{Max} (@pxref{Axis settings}). ÐÑли Ñлаг @var{Cut} ÑÑÑановлен, Ñо ÑоÑки вне инÑеÑвала оÑбÑаÑÑваÑÑÑÑ, в пÑоÑивном ÑлÑÑае, они пÑоеÑиÑÑÑÑÑÑ Ð½Ð° огÑаниÑиваÑÑий паÑаллелепипед (@pxref{Cutting}). ÐÑоме Ñого, оÑбÑаÑÑваÑÑÑÑ ÑоÑки внÑÑÑи гÑаниÑ, опÑеделеннÑÑ
пеÑеменнÑми @var{CutMin}x at var{CutMax} и ÑоÑки, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ
знаÑение ÑÑнкÑии @code{CutOff}() не Ñавно нÑлÑ. ÐоÑле ÑÑого ÑоÑмÑÐ»Ñ Ð¿ÐµÑеÑ
ода в кÑиволинейнÑÑ ÑиÑÑÐµÐ¼Ñ ÐºÐ¾Ð¾ÑÐ´Ð¸Ð½Ð°Ñ @code{SetFunc()}пÑименÑÑÑÑÑ Ðº каждой ÑоÑке. ÐаконеÑ, ÑоÑка даннÑÑ
оÑобÑажаеÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¾Ð´Ð½Ð¾Ð¹ из гÑаÑиÑеÑкиÑ
ÑÑнкÑий.
-
-ÐелиÑÐ¸Ð½Ñ @var{Max}, @var{Min} можно изменÑÑÑ Ð²ÑÑÑнÑÑ. Ðднако, поÑле ÑÑого необÑ
одимо вÑзваÑÑ ÑÑнкÑÐ¸Ñ @code{RecalcBorder()} Ð´Ð»Ñ Ð½Ð°ÑÑÑойки гÑаÑика. Ðолее ÑдобнÑй и безопаÑнÑй пÑÑÑ ÑоÑÑÐ¾Ð¸Ñ Ð² вÑзове ÑÑнкÑий @code{Axis(), SetRanges()} и дÑ. РпоÑледнем ÑлÑÑае ÑÑнкÑÐ¸Ñ @code{RecalcBorder()} вÑзÑваеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки. РазмеÑÑ Ð¾Ñей можно задаваÑÑ Ð¸ авÑомаÑиÑеÑки по минималÑÐ½Ð¾Ð¼Ñ Ð¸ макÑималÑÐ½Ð¾Ð¼Ñ Ð·Ð½Ð°ÑениÑм маÑÑива даннÑÑ
. ÐÐ»Ñ ÑÑого пÑедназнаÑÐµÐ½Ñ ÑÑнкÑии @code{XRange(), YRange(), ZRange()}. ÐÑоÑой не обÑзаÑелÑнÑй аÑгÑÐ¼ÐµÐ½Ñ ÑказÑваеÑ, заменÑÑÑ Ð»Ð¸ новÑе знаÑÐµÐ½Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¾Ñи кооÑÐ´Ð¸Ð½Ð°Ñ (по ÑмолÑаниÑ) или ÑолÑко ÑаÑÑиÑиÑÑ Ñже ÑÑÑеÑÑвÑÑÑий диапазон.
-
-ТоÑка пеÑеÑеÑÐµÐ½Ð¸Ñ Ð¾Ñей кооÑÐ´Ð¸Ð½Ð°Ñ Ð·Ð°Ð´Ð°ÐµÑÑÑ Ð¿ÐµÑеменной @var{Org} и дейÑÑвÑÐµÑ Ð½Ð° поÑледÑÑÑие вÑÐ·Ð¾Ð²Ñ ÑÑнкÑий ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ñей кооÑÐ´Ð¸Ð½Ð°Ñ Ð¸ ÑеÑки. Ðо ÑмолÑаниÑ, еÑли ÑоÑка пеÑеÑеÑÐµÐ½Ð¸Ñ Ð¾Ñей кооÑÐ´Ð¸Ð½Ð°Ñ Ð¿Ð¾Ð¿Ð°Ð´Ð°ÐµÑ Ð²Ð½Ðµ диапазона оÑей кооÑдинаÑ, Ñо она пÑоеÑиÑÑеÑÑÑ Ð½Ð° гÑаниÑÑ Ð¾Ð±Ð»Ð°ÑÑи. ÐзмениÑÑ Ñакое поведение можно, задав @var{AutoOrg}=@code{false}. Ð ÑлÑÑае, еÑли одно из знаÑений @var{Org} Ñавно NAN, Ñо ÑооÑвеÑÑÑвÑÑÑее знаÑение бÑÐ´ÐµÑ Ð²ÑбÑано авÑомаÑиÑеÑки.
-
-ÐÑоме пÑивÑÑнÑÑ
оÑей @emph{x, y, z} еÑÑÑ ÐµÑе одна оÑÑ -- ÑвеÑÐ¾Ð²Ð°Ñ Ñкала -- оÑÑ @emph{c}. Ðна иÑполÑзÑеÑÑÑ Ð¿Ñи окÑаÑивании повеÑÑ
ноÑÑей и Ð·Ð°Ð´Ð°ÐµÑ Ð³ÑаниÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑÑнкÑии пÑи окÑаÑивании. ÐÑи вÑзове @code{Axis()} ее гÑаниÑÑ Ð°Ð²ÑомаÑиÑеÑки ÑÑÑанавливаÑÑÑÑ ÑавнÑми Min.z и Max.z. Ðозможно и ÑÑÑное изменение гÑÐ°Ð½Ð¸Ñ ÑвеÑового инÑеÑвала поÑÑедÑÑвом вÑзова ÑÑнкÑии @code{CAxis()} или изменение гÑÐ°Ð½Ð¸Ñ Ð¿Ð¾ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ Ð¼Ð°ÑÑÐ¸Ð²Ñ @code{CRange()}. ÐÑполÑзÑйÑе @code{Colorbar()} Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑвеÑовой ÑкалÑ.
-
-Ðид меÑок по оÑÑм опÑеделÑеÑÑÑ ÑÑнкÑией @code{SetTicks()} (@pxref{Ticks}). Ðна Ð¸Ð¼ÐµÐµÑ 3 аÑгÑменÑа: пеÑвÑй @var{d} Ð·Ð°Ð´Ð°ÐµÑ Ñаг меÑок (еÑли положиÑелÑнÑ) или иÑ
ÑиÑло (еÑли оÑÑиÑаÑелÑнÑ) или логаÑиÑмиÑеÑкие меÑки (еÑли ÑÐ°Ð²Ð½Ñ Ð½ÑлÑ); вÑоÑо @var{ns} Ð·Ð°Ð´Ð°ÐµÑ ÑиÑло "подмеÑок"; поÑледний опÑеделÑÐµÑ Ð½Ð°ÑалÑнÑÑ ÑоÑÐºÑ Ð´Ð»Ñ Ð¼ÐµÑок (по ÑмолÑÐ°Ð½Ð¸Ñ ÑÑо ÑоÑка пеÑеÑеÑÐµÐ½Ð¸Ñ Ð¾Ñей). ФÑнкÑÐ¸Ñ @var{SetTuneTicks} вклÑÑаеÑ/вÑклÑÑÐ°ÐµÑ Ð²Ñделение обÑего множиÑÐµÐ»Ñ (болÑÑого или малого ÑакÑоÑов в диапазоне) Ð´Ð»Ñ Ð¼ÐµÑок оÑей кооÑдинаÑ. ÐаконеÑ, еÑли ÑÑандаÑÑнÑй вид меÑок не ÑÑÑÑÐ°Ð¸Ð²Ð°ÐµÑ Ð¿Ð¾Ð»ÑзоваÑелÑ, Ñо иÑ
Ñаблон можно задаÑÑ Ñвно (можно иÑполÑзоваÑÑ Ð¸ ТеХ ÑимволÑ), воÑполÑзовавÑиÑÑ ÑÑнкÑиÑми @code{SetXTT(), SetYTT(). SetZTT(). SetCTT()}. ÐÑоме Ñого, в каÑеÑÑве меÑок можно вÑвеÑÑи пÑоизволÑнÑй ÑекÑÑ Ð¸ÑполÑзовав ÑÑнкÑÐ¸Ñ @code{SetTicksVal()}.
-
- at node Line styles, Color scheme, Coordinate axes, General concepts
- at subsection СÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¹
-
- at cindex СÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¹
- at cindex СÑÐ¸Ð»Ñ Ð¼Ð°ÑкеÑов
- at cindex СÑÐ¸Ð»Ñ ÑÑÑелок
-
-СÑÐ¸Ð»Ñ Ð»Ð¸Ð½Ð¸Ð¸ задаеÑÑÑ ÑÑÑокой, коÑоÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ñимвол ÑвеÑа (@samp{wkrgbcymhRGBCYMHWlenupqLENUPQ}), Ñип пÑнкÑиÑа (@samp{-|;:ji} или пÑобел), ÑиÑÐ¸Ð½Ñ Ð»Ð¸Ð½Ð¸Ð¸ (@samp{0123456789}) и Ñип маÑкеÑа (@samp{o+xsd.^v} и модиÑикаÑÐ¾Ñ @samp{#}). ÐÑли пÑопÑÑен ÑÐ²ÐµÑ Ð¸Ð»Ð¸ Ñип пÑнкÑиÑа, Ñо иÑполÑзÑеÑÑÑ Ð·Ð½Ð°Ñение по ÑмолÑÐ°Ð½Ð¸Ñ Ñ Ð¿Ð¾Ñледним ÑказаннÑм ÑвеÑом.
-
-Ð¡Ð¸Ð¼Ð²Ð¾Ð»Ñ ÑвеÑа Ñе же, ÑÑо и в клаÑÑе mglColor (@pxref{mglColor class}): @samp{k} -- ÑеÑнÑй, @samp{r} -- кÑаÑнÑй, @samp{R} -- Ñемно кÑаÑнÑй, @samp{g} -- зеленÑй, @samp{G} -- Ñемно зеленÑй, @samp{b} -- Ñиний, @samp{B} -- Ñемно Ñиний, @samp{c} -- голÑбой, @samp{C} -- Ñемно голÑбой, @samp{m} -- пÑÑпÑÑнÑй, @samp{M} -- Ñемно пÑÑпÑÑнÑй, @samp{y} -- желÑÑй, @samp{Y} -- Ñемно желÑÑй (золоÑой), @samp{h} -- ÑеÑÑй, @samp{H} -- Ñемно ÑеÑÑй, @samp{w} -- белÑй, @samp{W} -- ÑвеÑло ÑеÑÑй, @samp{l} -- Ñине-зеленÑй, @samp{L} -- Ñемно Ñине-зеленÑй, @samp{e} -- желÑо-зеленÑй, @samp{E} -- Ñемно желÑо-зеленÑй, @samp{n} -- небеÑно-Ñиний, @samp{N} -- Ñемно небеÑно-Ñиний, @samp{u} -- Ñине-ÑиолеÑовÑй, @samp{U} -- Ñемно Ñине-ÑиолеÑовÑй, @samp{p} -- ÑиолеÑовÑй, @samp{P} -- Ñемно ÑиолеÑовÑй, @samp{q} -- оÑанжевÑй, @samp{Q} -- Ñемно оÑанжевÑй (коÑиÑневÑй).
-
-Тип пÑнкÑиÑа: пÑобел -- Ð½ÐµÑ Ð»Ð¸Ð½Ð¸Ð¸ (Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑолÑко маÑкеÑов), @samp{-} -- ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ (################), @samp{|} -- пÑнкÑÐ¸Ñ (########________), @samp{;} -- мелкий пÑнкÑÐ¸Ñ (####____####____), @samp{:} -- ÑоÑки (#___#___#___#___), @samp{j} -- пÑнкÑÐ¸Ñ Ñ ÑоÑками (#######____#____), @samp{i} -- мелкий пÑнкÑÐ¸Ñ Ñ ÑоÑками (###__#__###__#__).
-
-Ð¢Ð¸Ð¿Ñ Ð¼Ð°ÑкеÑов: @samp{o} -- окÑÑжноÑÑÑ, @samp{+} -- кÑеÑÑ, @samp{x} -- коÑой кÑеÑÑ, @samp{s} - квадÑаÑ, @samp{d} - Ñомб, @samp{.} -- ÑоÑка, @samp{^} -- ÑÑеÑголÑник ввеÑÑ
, @samp{v} -- ÑÑеÑголÑник вниз. ÐÑли в ÑÑÑоке пÑиÑÑÑÑÑвÑÐµÑ Ñимвол @samp{#}, Ñо иÑполÑзÑÑÑÑÑ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÐµÐ¼.
-
- at float
- at image{png/sample5, 7cm}
- at caption{СÑили линий и маÑкеÑов.}
- at end float
-
-Ðа конÑе и в наÑале линии можно вÑводиÑÑ ÑпеÑиалÑнÑй Ñимвол (ÑÑÑелкÑ), еÑли в ÑÑÑоке ÑказаÑÑ Ð¾Ð´Ð¸Ð½ из Ñимволов: @samp{A} -- ÑÑÑелка наÑÑжÑ, @samp{V} -- ÑÑÑелка внÑÑÑÑ, @samp{I} -- попеÑеÑÐ½Ð°Ñ ÑеÑÑа, @samp{K} -- ÑÑÑелка Ñ ÑеÑÑой, @samp{T} -- ÑÑеÑголÑник, @samp{S} -- квадÑаÑ, @samp{D} -- Ñомб, @samp{O} -- кÑÑг, @samp{_} -- Ð½ÐµÑ ÑÑÑелки (по ÑмолÑаниÑ). ÐÑи ÑÑом дейÑÑвÑÐµÑ ÑледÑÑÑее пÑавило: пеÑвÑй Ñимвол опÑеделÑÐµÑ ÑÑÑÐµÐ»ÐºÑ Ð½Ð° конÑе линии, вÑоÑой Ñимвол -- ÑÑÑÐµÐ»ÐºÑ Ð² наÑале линии. ÐапÑимеÑ, @samp{r-A} -- кÑаÑÐ½Ð°Ñ ÑплоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñо ÑÑÑелкой на конÑе, @samp{b|AI} -- Ñиний пÑнкÑÐ¸Ñ Ñо ÑÑÑелкой на конÑе и ÑеÑÑой внаÑале, @samp{_O} -- Ð»Ð¸Ð½Ð¸Ñ Ñ ÑекÑÑим ÑÑилем и кÑÑжком внаÑале. ÐÑи ÑÑили дейÑÑвÑÑÑ Ð¸ пÑи поÑÑÑоении гÑаÑиков (напÑимеÑ, @ref{Plot}).
-
- at float
- at image{png/sampled, 7cm}
- at caption{СÑили ÑÑÑелок.}
- at end float
-
- at node Color scheme, Font style, Line styles, General concepts
- at subsection ЦвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема
-
- at cindex ЦвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема
-
-ЦвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑвеÑа повеÑÑ
ноÑÑей, линий ÑÑÐ¾Ð²Ð½Ñ Ð¸ пÑ. ЦвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема задаеÑÑÑ ÑÑÑокой @emph{s}, коÑоÑÐ°Ñ ÑодеÑÐ¶Ð¸Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ ÑвеÑа (@pxref{Line styles}) или ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ @samp{d#:|}. Символ @samp{d} ÑказÑÐ²Ð°ÐµÑ Ð½Ð° опÑеделение ÑвеÑа в завиÑимоÑÑи Ð¾Ñ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÑоÑки в пÑоÑÑÑанÑÑве, а не по амплиÑÑде даннÑÑ
. Символ @samp{#} пеÑеклÑÑÐ°ÐµÑ ÑиÑование повеÑÑ
ноÑÑи на ÑеÑÑаÑое (Ð´Ð»Ñ ÑÑеÑ
меÑнÑÑ
повеÑÑ
ноÑÑей) или вклÑÑÐ°ÐµÑ ÑиÑование ÑеÑки на повеÑÑ
ноÑÑи. Символ @samp{|} оÑклÑÑÐ°ÐµÑ Ð¸Ð½ÑеÑполÑÑÐ¸Ñ ÑвеÑа в ÑвеÑовой ÑÑ
еме. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ Ð´Ð»Ñ ``ÑезкиÑ
'' ÑвеÑов, напÑимеÑ, пÑи ÑиÑовании маÑÑиÑ. ÐÑли в ÑÑÑоке вÑÑÑеÑаеÑÑÑ Ñимвол @samp{:}, Ñо он пÑинÑдиÑелÑно заканÑÐ¸Ð²Ð°ÐµÑ ÑÐ°Ð·Ð±Ð¾Ñ ÑÑÑоки Ð´Ð»Ñ ÑÑÐ¸Ð»Ñ Ð¿Ð¾Ð²ÐµÑÑ
ноÑÑи. ÐоÑле ÑÑого Ñимвола могÑÑ Ð¸Ð´Ñи опиÑание ÑÑÐ¸Ð»Ñ ÑекÑÑа или оÑи вÑаÑÐµÐ½Ð¸Ñ ÐºÑивой/линий ÑÑовнÑ. ЦвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð´Ð¾ 32 знаÑений ÑвеÑа.
-
-Ð ÑвеÑовой ÑÑ
еме можно иÑполÑзоваÑÑ ÑоналÑнÑе (``подÑвеÑеннÑе'') ÑвеÑа (@emph{не в ÑÑиле линий!}). ТоналÑнÑй ÑÐ²ÐµÑ Ð·Ð°Ð´Ð°ÐµÑÑÑ Ð´Ð²ÑÐ¼Ñ Ñимволами: пеÑвÑй -- обÑÑнÑй ÑвеÑ, вÑоÑой -- его ÑÑкоÑÑÑ ÑиÑÑой. ЦиÑÑа Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð² диапазоне @samp{1}... at samp{9}. ÐÑи ÑÑом @samp{5} ÑооÑвеÑÑÑвÑÐµÑ Ð½Ð¾ÑмалÑÐ½Ð¾Ð¼Ñ ÑвеÑÑ, @samp{1} -- оÑÐµÐ½Ñ ÑÐµÐ¼Ð½Ð°Ñ Ð²ÐµÑÑÐ¸Ñ ÑвеÑа (поÑÑи ÑеÑнÑй), @samp{9} -- оÑÐµÐ½Ñ ÑвеÑÐ»Ð°Ñ Ð²ÐµÑÑÐ¸Ñ ÑвеÑа (поÑÑи белÑй). ÐапÑÐ¸Ð¼ÐµÑ ÑвеÑÐ¾Ð²Ð°Ñ ÑÑ
ема Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ @samp{b2b7wr7r2}.
-
- at float
- at image{png/colors, 7cm}
- at caption{ЦвеÑа и иÑ
иденÑиÑикаÑоÑÑ.}
- at end float
-
-ÐÑи опÑеделении ÑвеÑа по @emph{амплиÑÑде} (наиболее ÑаÑÑо иÑполÑзÑеÑÑÑ) оконÑаÑелÑнÑй ÑÐ²ÐµÑ Ð¾Ð¿ÑеделÑеÑÑÑ Ð¿ÑÑем линейной инÑеÑполÑÑии маÑÑива ÑвеÑов. ÐаÑÑив ÑвеÑов ÑоÑмиÑÑеÑÑÑ Ð¸Ð· ÑвеÑов, ÑказаннÑÑ
в ÑÑÑоке ÑпеÑиÑикаÑии. ÐÑгÑÐ¼ÐµÐ½Ñ -- амплиÑÑда, ноÑмиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¼ÐµÐ¶Ð´Ñ @var{Cmin} -- @var{Cmax} (@pxref{Ranges (bounding box)}). ÐапÑимеÑ, ÑÑÑока из 4 Ñимволов @samp{bcyr} ÑооÑвеÑÑÑвÑÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑвеÑа Ð¾Ñ Ñинего (минималÑное знаÑение) ÑеÑез голÑбой и желÑÑй (пÑомежÑÑоÑнÑе знаÑениÑ) к кÑаÑÐ½Ð¾Ð¼Ñ (макÑималÑное знаÑение). СÑÑока @samp{kw} ÑооÑвеÑÑÑвÑÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑвеÑа Ð¾Ñ ÑеÑного (минималÑное знаÑение) к Ð±ÐµÐ»Ð¾Ð¼Ñ (макÑималÑное знаÑение). СÑÑока из одного Ñимволоа (напÑимеÑ, @samp{g}) ÑооÑвеÑÑÑвÑÐµÑ Ð¾Ð´Ð½Ð¾ÑÐ¾Ð½Ð½Ð¾Ð¼Ñ ÑвеÑÑ (в Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ ÑлÑÑае зеленомÑ).
-
-ÐÑÑÑ Ð½ÐµÑколÑко полезнÑÑ
ÑвеÑовÑÑ
ÑÑ
ем. СÑÑока @samp{kw} Ð´Ð°ÐµÑ Ð¾Ð±ÑÑнÑÑ ÑеÑÑÑ (ÑеÑно-белÑÑ) ÑÑ
емÑ, когда болÑÑие знаÑÐµÐ½Ð¸Ñ ÑвеÑлее. СÑÑока @samp{wk} пÑедÑÑавлÑÐµÑ Ð¾Ð±ÑаÑнÑÑ ÑеÑÑÑ ÑÑ
емÑ, когда болÑÑие знаÑÐµÐ½Ð¸Ñ Ñемнее. СÑÑоки @samp{kRryw}, @samp{kGgw}, @samp{kBbcw} пÑедÑÑавлÑÑÑ Ñобой Ñ
оÑоÑо извеÑÑнÑе ÑÑ
ÐµÐ¼Ñ @emph{hot}, @emph{summer} и @emph{winter}. СÑÑоки @samp{BbwrR} и @samp{bBkRr} позволÑÑÑ ÑиÑоваÑÑ Ð´Ð²ÑÑ
ÑвеÑнÑе ÑигÑÑÑ Ð½Ð° белом или ÑеÑном Ñоне, когда оÑÑиÑаÑелÑнÑе знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ Ñиним ÑвеÑом, а положиÑелÑнÑе -- кÑаÑнÑм. СÑÑока @samp{BbcyrR} Ð´Ð°ÐµÑ ÑвеÑовÑÑ ÑÑ
емÑ, близкÑÑ Ðº Ñ
оÑоÑо извеÑÑной ÑÑ
еме @emph{jet}.
-
-ÐÑимеÑÑ Ð½Ð°Ð¸Ð±Ð¾Ð»ÐµÐµ попÑлÑÑнÑÑ
ÑвеÑовÑÑ
ÑÑ
ем:
- at table @samp
- at item kw
- at image{png_static/kw}
- at item wk
- at image{png_static/wk}
- at item hHCcw
- at image{png_static/kHCcw}
-
- at item kRryw
- at image{png_static/kRryw}
- at item kGgew
- at image{png_static/kGgew}
- at item kBbcw
- at image{png_static/kBbcw}
-
- at item BbwrR
- at image{png_static/BbwrR}
- at item BbwgG
- at image{png_static/BbwgG}
- at item GgwmM
- at image{png_static/GgwmM}
-
- at item bcwyr
- at image{png_static/bcwyr}
- at item QqwcC
- at image{png_static/QqwcC}
- at item CcwyY
- at image{png_static/CcwyY}
-
- at item BbcyrR
- at image{png_static/BbcyrR}
- at item BbcwyrR
- at image{png_static/BbcwyrR}
- at item bwr
- at image{png_static/bwr}
-
- at item bcyr
- at image{png_static/bcyr}
- at item bgr
- at image{png_static/bgr}
- at item BbcyrR|
- at image{png_static/sharp}
- at end table
-
-ÐÑи опÑеделении ÑвеÑа по @emph{Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÑоÑки в пÑоÑÑÑанÑÑве} оконÑаÑелÑнÑй ÑÐ²ÐµÑ Ð¾Ð¿ÑеделÑеÑÑÑ Ð¿Ð¾ ÑоÑмÑле c=x*c[1] + y*c[2] + z*c[3]. ÐдеÑÑ c[1], c[2], c[3] -- пеÑвÑе ÑÑи ÑвеÑа в ÑвеÑовом маÑÑиве; x, y, z -- кооÑдинаÑÑ ÑоÑки, ноÑмиÑованнÑе на @var{Min}x at var{Max}. Такой Ñип опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑвеÑа полезен, напÑимеÑ, пÑи поÑÑÑоении повеÑÑ
ноÑÑей ÑÑовнÑ, когда ÑÐ²ÐµÑ Ð´Ð°ÐµÑ Ð¿ÑедÑÑавление о положении ÑоÑки в пÑоÑÑÑанÑÑве. ÐапÑимеÑ, @pxref{Surf3}.
-
- at node Font style, , Color scheme, General concepts
- at subsection СÑÐ¸Ð»Ñ ÑекÑÑа
-
- at cindex СÑÐ¸Ð»Ñ ÑекÑÑа
-
-СÑÐ¸Ð»Ñ ÑекÑÑа задаеÑÑÑ ÑÑÑокой, коÑоÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð½ÐµÑколÑко Ñимволов: Ñип ÑÑиÑÑа (@samp{ribwou}) и/или вÑÑÐ°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ (@samp{LRC}), а Ñакже ÑÐ²ÐµÑ ÑекÑÑа @samp{wkrgbcymhRGBCYMHW} (@pxref{mglColor class}) поÑле Ñимвола @samp{:}. ÐапÑимеÑ, @samp{biC:b} ÑооÑвеÑÑÑвÑÐµÑ Ð¶Ð¸ÑÐ½Ð¾Ð¼Ñ ÐºÑÑÑÐ¸Ð²Ñ Ñ Ð²ÑÑавниванием по ÑенÑÑÑ Ñинего ÑвеÑа.
-
-ÐаÑеÑÑÐ°Ð½Ð¸Ñ ÑÑиÑÑа: @samp{r} -- пÑÑмой ÑÑиÑÑ, @samp{i} -- кÑÑÑив, @samp{b} -- жиÑнÑй. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ÑполÑзÑеÑÑÑ Ð¿ÑÑмой ÑÑиÑÑ. Ð¢Ð¸Ð¿Ñ Ð²ÑÑÐ°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ ÑекÑÑа: @samp{L} -- по Ð»ÐµÐ²Ð¾Ð¼Ñ ÐºÑÐ°Ñ (по ÑмолÑаниÑ), @samp{C} -- по ÑенÑÑÑ, @samp{R} -- по пÑÐ°Ð²Ð¾Ð¼Ñ ÐºÑаÑ. ÐополниÑелÑнÑе ÑÑÑекÑÑ ÑÑиÑÑа: @samp{w} -- конÑÑÑнÑй, @samp{o} -- надÑеÑкнÑÑÑй, @samp{u} -- подÑеÑкнÑÑÑй. СинÑакÑиÑеÑкий ÑÐ°Ð·Ð±Ð¾Ñ LaTeX-иÑ
команд по ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÐºÐ»ÑÑен (подÑобнее Ñм. @pxref{mglFont class} и @ref{Font settings}).
-
-Ð Ð°Ð·Ð¼ÐµÑ ÑекÑÑа Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð·Ð°Ð´Ð°Ð½ Ñвно (еÑли @var{size}>0) или оÑноÑиÑелÑно базового ÑазмеÑа ÑÑиÑÑа Ð´Ð»Ñ ÑиÑÑнка |@var{size}|*@var{FontSize} пÑи @var{size}<0. ÐнаÑение @var{size}=0 ÑказÑваеÑ, ÑÑо ÑооÑвеÑÑÑвÑÑÑÐ°Ñ ÑÑÑока вÑводиÑÑÑÑ Ð½Ðµ бÑдеÑ. ÐазовÑй ÑÐ°Ð·Ð¼ÐµÑ ÑÑиÑÑа измеÑÑеÑÑÑ Ð²Ð¾ внÑÑÑенниÑ
единиÑаÑ
. СпеÑиалÑнÑе ÑÑнкÑии @code{SetFontSizePT(), SetFontSizeCM(), SetFontSizeIN()} позволÑÑÑ Ð·Ð°Ð´Ð°Ð²Ð°ÑÑ ÐµÐ³Ð¾ в более ``пÑивÑÑнÑÑ
'' единиÑаÑ
.
@node FAQ, Interfaces, General concepts, Overview
@section FAQ
@@ -275,6 +161,46 @@ gr->Window(argc,argv,foo_draw,"Title",this);
@c @strong{ÐаконеÑ!} ÐожалÑйÑÑа @emph{не ÑпÑаÑивайÑе} Ð¼ÐµÐ½Ñ Ð²Ð¾Ð¿ÑоÑÑ Ð¿Ñо Windows. Я не иÑполÑзÑÑ Windows. Я ниÑего не Ð·Ð½Ð°Ñ Ð¾ Visual Basic, Visual C++, CBuiled или .NET. ÐайдиÑе подÑ
одÑÑие ÑоÑÑÐ¼Ñ Ð² инÑеÑнеÑе и задайÑе Ñвой вопÑÐ¾Ñ Ñам.
+ at item Ðак мне ÑобÑаÑÑ MathGL под Windows?
+ÐÑоÑÑейÑий пÑÑÑ -- иÑполÑзование комбинаÑии CMake и MinGW. Также Ðам Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе библиоÑеки, Ñакие как GSL, PNG, JPEG и пÑ. ÐÑе они могÑÑ Ð±ÑÑÑ Ð½Ð°Ð¹Ð´ÐµÐ½Ñ Ð½Ð° @url{http://gnuwin32.sourceforge.net/packages.html}. ÐоÑле ÑÑÑановки вÑеÑ
компоненÑ, пÑоÑÑо запÑÑÑиÑе конÑигÑÑаÑÐ¾Ñ CMake и ÑобеÑиÑе MathGL командой make.
+
+ at item Ðак ÑоздаÑÑ Ð¾ÐºÐ½Ð¾ FLTK/GLUT/Qt Ñ ÑекÑÑими ÑезÑлÑÑаÑами паÑаллелÑно Ñ Ð²Ñполнением оÑновнÑÑ
вÑÑиÑлений?
+СледÑÐµÑ ÑоздаÑÑ Ð¾ÑделÑнÑй поÑок Ð´Ð»Ñ Ð¾Ð±ÑабоÑки ÑообÑений в окно. ÐÑоÑÑ-плаÑÑоÑменнÑй пÑÑÑ -- иÑполÑзование библиоÑеки @code{pthread}. Ðбновление даннÑÑ
в окне можно вÑполниÑÑ Ð²Ñзовом ÑÑнкÑии @code{mglGraphFLTK::Update()}. ÐÑÐ¸Ð¼ÐµÑ ÐºÐ¾Ð´ Ð¸Ð¼ÐµÐµÑ Ð²Ð¸Ð´:
+ at verbatim
+//-----------------------------------------------------------------------------
+#include <mgl/mgl_fltk.h>
+#include <pthread.h>
+#include <unistd.h>
+
+mglPoint pnt; // some global variable for changable data
+//-----------------------------------------------------------------------------
+int sample(mglGraph *gr, void *)
+{
+ gr->Box(); gr->Line(mglPoint(),pnt,"Ar2"); // just draw a vector
+ return 0;
+}
+//-----------------------------------------------------------------------------
+void *mgl_fltk_tmp(void *) { mglFlRun(); return 0; }
+int main (int argc, char ** argv)
+{
+ mglGraphFLTK gr;
+ gr.Window(argc,argv,sample,"test"); // create window
+ static pthread_t tmp;
+ pthread_create(&tmp, 0, mgl_fltk_tmp, 0);
+ pthread_detach(tmp); // run window handling in the separate thread
+ for(int i=0;i<10;i++) // do calculation
+ {
+ sleep(1); // which can be very long
+ pnt = mglPoint(2*mgl_rnd()-1,2*mgl_rnd()-1);
+ gr.Update(); // update window
+ }
+ return 0; // finish calculations and close the window
+}
+//-----------------------------------------------------------------------------
+ at end verbatim
+
+
+
@item СколÑко Ñеловек ÑÑаÑÑвовало в Ñоздании библиоÑеки?
ÐолÑÑÑÑ ÑаÑÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки напиÑал один Ñеловек. ÐÑо ÑезÑлÑÑÐ°Ñ Ð¿ÑимеÑно года ÑабоÑÑ Ð½Ð° напиÑание ÑдÑа библиоÑеки и базовÑÑ
ÑÑнкÑий (в оÑновном веÑеÑами и по вÑÑ
однÑм). ÐÑоÑеÑÑ ÑÑовеÑÑенÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÑодолжаеÑÑÑ Ð¸ ÑепеÑÑ :). СкÑипÑÑ ÑбоÑки в оÑновном напиÑÐ°Ð½Ñ Ð.ÐÑлагинÑм, а ÑкÑпоÑÑ Ð² IDTF напиÑан Ð.ÐидаÑÑовÑм.
@@ -325,7 +251,7 @@ C инÑеÑÑÐµÐ¹Ñ ÑвлÑеÑÑÑ Ð±Ð°Ð·Ð¾Ð²Ñм Ð´Ð»Ñ Ð±Ð¾Ð»ÑÑинÑÑв
@end itemize
ÐÑи пеÑеменнÑе ÑодеÑÐ¶Ð°Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑÑ Ð¾Ð±ÑекÑов гÑаÑики или даннÑÑ
.
-ФоÑÑÑановÑкие ÑÑнкÑии имеÑÑ Ñе же имена, ÑÑо и ÑÑнкÑии C. Ðднако, еÑÑÑ ÑазлиÑие: пеÑеменнÑе Ñипов @code{HMGL, HMDT} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð±ÑÑÐ²Ð»ÐµÐ½Ñ ÐºÐ°Ðº ÑелÑе доÑÑаÑоÑной ÑазÑÑдноÑÑи (integer*4 на 32-биÑнÑÑ
ÑиÑÑемаÑ
или integer*8 на 64-биÑнÑÑ
ÑиÑÑемаÑ
). ÐÑе С ÑÑнкÑии ÑвлÑÑÑÑÑ Ð¿ÑоÑедÑÑами Ð´Ð»Ñ Ð¤Ð¾ÑÑÑана (Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²ÑзÑваÑÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¾Ð¿ÐµÑаÑоÑа call). ÐÑклÑÑение ÑоÑÑавлÑÑÑ ÑÑнкÑии, возвÑаÑаÑÑие пеÑеменнÑе Ñипа @code{HMGL} или @code{HMDT}. ÐоÑледние Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð±ÑÑÐ²Ð»ÐµÐ½Ñ ÑелÑми Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² ÑоÑÑÑановÑком коде. Также помниÑе, ÑÑо ÑÑÑоки в ÑоÑÑÑане обознаÑаÑÑÑÑ Ð¾Ð´Ð¸Ð½Ð°Ñной кавÑÑкой @code{'}, а не двойной @code{"} как в С/С++.
+ФоÑÑÑановÑкие ÑÑнкÑии имеÑÑ Ñе же имена, ÑÑо и ÑÑнкÑии C. Ðднако, еÑÑÑ ÑазлиÑие: пеÑеменнÑе Ñипов @code{HMGL, HMDT} Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð±ÑÑÐ²Ð»ÐµÐ½Ñ ÐºÐ°Ðº ÑелÑе доÑÑаÑоÑной ÑазÑÑдноÑÑи (integer*4 на 32-биÑнÑÑ
ÑиÑÑемаÑ
или integer*8 на 64-биÑнÑÑ
ÑиÑÑемаÑ
). ÐÑе С ÑÑнкÑии ÑвлÑÑÑÑÑ Ð¿ÑоÑедÑÑами Ð´Ð»Ñ Ð¤Ð¾ÑÑÑана (Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²ÑзÑваÑÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¾Ð¿ÐµÑаÑоÑа call). ÐÑклÑÑение ÑоÑÑавлÑÑÑ ÑÑнкÑии, возвÑаÑаÑÑие пеÑеменнÑе Ñипа @code{HMGL} или @code{HMDT}. ÐоÑледние Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð±ÑÑÐ²Ð»ÐµÐ½Ñ ÑелÑми Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² ÑоÑÑÑановÑком коде. Также помниÑе, ÑÑо ÑÑÑоки в ÑоÑÑÑане обознаÑаÑÑÑÑ Ð¾Ð´Ð¸Ð½Ð°Ñной кавÑÑкой @code{</samp>’}, а не двойной @code{"} как в С/С++.
@strong{Создание и Ñдаление гÑаÑиÑеÑкого обÑекÑа}
@@ -411,14 +337,14 @@ To use Python classes just execute @samp{import mathgl}. The simplest example wi
import mathgl
a=mathgl.mglGraph()
a.Box()
-a.WritePNG('test.png')
+a.WritePNG(</samp>’test.png</samp>’)
@end verbatim
Alternatively you can import all classes from @code{mathgl} module and easily access MathGL classes:
@verbatim
from mathgl import *
a=mglGraph()
a.Box()
-a.WritePNG('test.png')
+a.WritePNG(</samp>’test.png</samp>’)
@end verbatim
It become useful if you will create many @code{mglData} object, for example.
@@ -435,14 +361,14 @@ To use Python classes just execute @samp{import mathgl}. The simplest example wi
import mathgl
a=mathgl.mglGraph()
a.Box()
-a.WritePNG('test.png')
+a.WritePNG(</samp>’test.png</samp>’)
@end verbatim
Alternatively you can import all classes from @code{mathgl} module and easily access MathGL classes:
@verbatim
from mathgl import *
a=mglGraph()
a.Box()
-a.WritePNG('test.png')
+a.WritePNG(</samp>’test.png</samp>’)
@end verbatim
It become useful if you will create many @code{mglData} object, for example.
@@ -455,7 +381,7 @@ There are 2 classes in Python interface:
@c @item @code{mglParse} -- practically the same as C++ class @code{mglParse} (@pxref{mglParse class}).
@end itemize
-There is main difference from C++ classes -- Python class @code{mglGraph} don't have variables (options). All corresponding features are moved to methods.
+There is main difference from C++ classes -- Python class @code{mglGraph} don</samp>’t have variables (options). All corresponding features are moved to methods.
The core of MathGL Python class is @strong{mglGraph} class. It contains a lot of plotting functions for 1D, 2D and 3D plots. So most of sections is describe its methods. Its constructor have following arguments:
@defop Constructor {mglGraph (Python)} @code{} mglGraph (@code{int} kind=@code{0}, @code{int} width=@code{600}, @code{int} height=@code{400})
@@ -463,7 +389,7 @@ Create the instance of class mglGraph with specified sizes @var{width} and @var{
@end defop
@end itemize
-There is main difference from C++ classes -- Python class @code{mglGraph} don't have variables (options). All corresponding features are moved to methods. The core of MathGL Python class is @strong{mglGraph} class. It contains a lot of plotting functions for 1D, 2D and 3D plots. So most of sections is describe its methods. Its constructor have following arguments:
+There is main difference from C++ classes -- Python class @code{mglGraph} don</samp>’t have variables (options). All corresponding features are moved to methods. The core of MathGL Python class is @strong{mglGraph} class. It contains a lot of plotting functions for 1D, 2D and 3D plots. So most of sections is describe its methods. Its constructor have following arguments:
@defop Constructor {mglGraph (Python)} @code{} mglGraph (@code{int} kind=@code{0}, @code{int} width=@code{600}, @code{int} height=@code{400})
Create the instance of class mglGraph with specified sizes @var{width} and @var{height}. Parameter @var{type} may have following values: @samp{0} -- use @code{mglGraphZB} plotter (default), @samp{1} -- use @code{mglGraphPS} plotter, @samp{2} -- use @code{mglGraphGL} plotter, @samp{3} -- use @code{mglGraphIDTF} plotter.
@@ -477,11 +403,11 @@ Create the instance of class mglGraph with specified sizes @var{width} and @var{
@item
My special thanks to Marina Balakina for the patience during library writing and for the help in documentation writing and spelling.
@item
-I'm thankful to D. Kulagin and S.M. Plis for making Debian packages.
+I</samp>’m thankful to D. Kulagin and S.M. Plis for making Debian packages.
@item
-I'm thankful to M. Vidassov for the help in handling solid UTF-8 fonts.
+I</samp>’m thankful to M. Vidassov for the help in handling solid UTF-8 fonts.
@item
-I'm thankful to N. Troickiy and V. Lipatov for making RPM packages.
+I</samp>’m thankful to N. Troickiy and V. Lipatov for making RPM packages.
@item
-I'm thankful to S. Skobelev, A. Korotkevich, V. Onuchin, S.M. Plis, R. Kiselev, A. Ivanov, M. Vidiassov and V. Lipatov for fruitful comments.
+I</samp>’m thankful to S. Skobelev, A. Korotkevich, V. Onuchin, S.M. Plis, R. Kiselev, A. Ivanov, M. Vidiassov and V. Lipatov for fruitful comments.
@end itemize
diff --git a/texinfo/png/Makefile.in b/texinfo/png/Makefile.in
index 27b62da..07439f3 100644
--- a/texinfo/png/Makefile.in
+++ b/texinfo/png/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -112,6 +112,8 @@ GREP = @GREP@
GSL_FLAGS = @GSL_FLAGS@
GSL_LIBS = @GSL_LIBS@
HAVE_SWIG = @HAVE_SWIG@
+HDF4_FLAGS = @HDF4_FLAGS@
+HDF4_LIBS = @HDF4_LIBS@
HDF5_FLAGS = @HDF5_FLAGS@
HDF5_LIBS = @HDF5_LIBS@
INSTALL = @INSTALL@
@@ -132,6 +134,7 @@ LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MGL_AGE = @MGL_AGE@
MGL_CURRENT = @MGL_CURRENT@
+MGL_RELEASE = @MGL_RELEASE@
MGL_REVISION = @MGL_REVISION@
MKDIR_P = @MKDIR_P@
MOC = @MOC@
diff --git a/texinfo/png_static/BbcwyrR.png b/texinfo/png_static/BbcwyrR.png
deleted file mode 100644
index 92f7cda..0000000
Binary files a/texinfo/png_static/BbcwyrR.png and /dev/null differ
diff --git a/texinfo/png_static/BbcyrR.png b/texinfo/png_static/BbcyrR.png
deleted file mode 100644
index 524f007..0000000
Binary files a/texinfo/png_static/BbcyrR.png and /dev/null differ
diff --git a/texinfo/png_static/BbwgG.png b/texinfo/png_static/BbwgG.png
deleted file mode 100644
index 86ec705..0000000
Binary files a/texinfo/png_static/BbwgG.png and /dev/null differ
diff --git a/texinfo/png_static/BbwrR.png b/texinfo/png_static/BbwrR.png
deleted file mode 100644
index fb213b6..0000000
Binary files a/texinfo/png_static/BbwrR.png and /dev/null differ
diff --git a/texinfo/png_static/CcwyY.png b/texinfo/png_static/CcwyY.png
deleted file mode 100644
index 3539c1e..0000000
Binary files a/texinfo/png_static/CcwyY.png and /dev/null differ
diff --git a/texinfo/png_static/GgwmM.png b/texinfo/png_static/GgwmM.png
deleted file mode 100644
index 47b76ae..0000000
Binary files a/texinfo/png_static/GgwmM.png and /dev/null differ
diff --git a/texinfo/png_static/QqwcC.png b/texinfo/png_static/QqwcC.png
deleted file mode 100644
index e47ccbc..0000000
Binary files a/texinfo/png_static/QqwcC.png and /dev/null differ
diff --git a/texinfo/png_static/bBkRr.png b/texinfo/png_static/bBkRr.png
deleted file mode 100644
index e8c6d8c..0000000
Binary files a/texinfo/png_static/bBkRr.png and /dev/null differ
diff --git a/texinfo/png_static/bcwyr.png b/texinfo/png_static/bcwyr.png
deleted file mode 100644
index e69143d..0000000
Binary files a/texinfo/png_static/bcwyr.png and /dev/null differ
diff --git a/texinfo/png_static/bcyr.png b/texinfo/png_static/bcyr.png
deleted file mode 100644
index 5970690..0000000
Binary files a/texinfo/png_static/bcyr.png and /dev/null differ
diff --git a/texinfo/png_static/bgr.png b/texinfo/png_static/bgr.png
deleted file mode 100644
index 9738dc0..0000000
Binary files a/texinfo/png_static/bgr.png and /dev/null differ
diff --git a/texinfo/png_static/br.png b/texinfo/png_static/br.png
deleted file mode 100644
index 54fb8cd..0000000
Binary files a/texinfo/png_static/br.png and /dev/null differ
diff --git a/texinfo/png_static/bwr.png b/texinfo/png_static/bwr.png
deleted file mode 100644
index 376538c..0000000
Binary files a/texinfo/png_static/bwr.png and /dev/null differ
diff --git a/texinfo/png_static/kBbcw.png b/texinfo/png_static/kBbcw.png
deleted file mode 100644
index ccdb7fb..0000000
Binary files a/texinfo/png_static/kBbcw.png and /dev/null differ
diff --git a/texinfo/png_static/kGgew.png b/texinfo/png_static/kGgew.png
deleted file mode 100644
index f345f84..0000000
Binary files a/texinfo/png_static/kGgew.png and /dev/null differ
diff --git a/texinfo/png_static/kHCcw.png b/texinfo/png_static/kHCcw.png
deleted file mode 100644
index 715cb6b..0000000
Binary files a/texinfo/png_static/kHCcw.png and /dev/null differ
diff --git a/texinfo/png_static/kRryw.png b/texinfo/png_static/kRryw.png
deleted file mode 100644
index b16d633..0000000
Binary files a/texinfo/png_static/kRryw.png and /dev/null differ
diff --git a/texinfo/png_static/kw.png b/texinfo/png_static/kw.png
deleted file mode 100644
index 5ec39ff..0000000
Binary files a/texinfo/png_static/kw.png and /dev/null differ
diff --git a/texinfo/png_static/r.png b/texinfo/png_static/r.png
deleted file mode 100644
index 87efae7..0000000
Binary files a/texinfo/png_static/r.png and /dev/null differ
diff --git a/texinfo/png_static/s_aleph.png b/texinfo/png_static/s_aleph.png
deleted file mode 100644
index dad366a..0000000
Binary files a/texinfo/png_static/s_aleph.png and /dev/null differ
diff --git a/texinfo/png_static/s_in.png b/texinfo/png_static/s_in.png
deleted file mode 100644
index 092470e..0000000
Binary files a/texinfo/png_static/s_in.png and /dev/null differ
diff --git a/texinfo/png_static/s_sqrt.png b/texinfo/png_static/s_sqrt.png
deleted file mode 100644
index 09619c5..0000000
Binary files a/texinfo/png_static/s_sqrt.png and /dev/null differ
diff --git a/texinfo/png_static/sharp.png b/texinfo/png_static/sharp.png
deleted file mode 100644
index b9a809f..0000000
Binary files a/texinfo/png_static/sharp.png and /dev/null differ
diff --git a/texinfo/png_static/u2v2.png b/texinfo/png_static/u2v2.png
deleted file mode 100644
index 1e2d333..0000000
Binary files a/texinfo/png_static/u2v2.png and /dev/null differ
diff --git a/texinfo/png_static/u2v2w2.png b/texinfo/png_static/u2v2w2.png
deleted file mode 100644
index 50d5be1..0000000
Binary files a/texinfo/png_static/u2v2w2.png and /dev/null differ
diff --git a/texinfo/png_static/wk.png b/texinfo/png_static/wk.png
deleted file mode 100644
index 8b92d89..0000000
Binary files a/texinfo/png_static/wk.png and /dev/null differ
diff --git a/texinfo/samples_en.texi b/texinfo/samples_en.texi
index 14d0dae..8586e99 100644
--- a/texinfo/samples_en.texi
+++ b/texinfo/samples_en.texi
@@ -1,13 +1,10 @@
@c ------------------------------------------------------------------
- at node Samples, TeX-like symbols, MGL interface, Top
@chapter Samples
-
-This chapter contain a lot of sample codes for all types of plots and for most important examples and hints. The same sample (with pictures) you can find at @uref{http://mathgl.sf.net/pictures.html}. Most of examples have the sample code on 5 languages: C++, MGL, C, Fortran and Python. However, I put only C++ code for some of examples due to a lot of them and clearency how to write code for other languages. All samples are divided on 6 large categories.
-
+This chapter contain a lot of sample codes for all types of plots and for most important examples and hints. The same sample (with pictures) you can find at @uref{http://mathgl.sf.net/pictures.html}.
+ at ifclear UDAV
+Most of examples have the sample code on 5 languages: C++, MGL, C, Fortran and Python. However, I put only C++ code for some of examples due to a lot of them and clearency how to write code for other languages. All samples are divided on 6 large categories.
The minimal code to view the samples for different languages are following.
-
@strong{C++ code}
-
For compilation use: @code{g++ -o sample sample.cpp -lmgl}.
@verbatim
#include <mgl/mgl_zb.h>
@@ -22,7 +19,6 @@ int main()
}
@end verbatim
@strong{MGL code}
-
For preview use: @code{mglview sample.mgl}.
@verbatim
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -31,7 +27,6 @@ For preview use: @code{mglview sample.mgl}.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@end verbatim
@strong{Pure C code}
-
For compilation use: @code{gcc -o sample sample.c -lmgl}.
@verbatim
#include <mgl/mgl_c.h>
@@ -47,7 +42,6 @@ int main()
}
@end verbatim
@strong{Fortran code}
-
For compilation use: @code{gfortran -o sample sample.f90 -lmgl}. Note, fortran don't have argument checking. So you have to take special attention to pass real variables to real arguments of functions and integer variables to integer arguments of functions. There is no other special checking for that!!!
@verbatim
integer gr, mgl_create_graph_zb
@@ -60,7 +54,6 @@ call mgl_delete_graph(gr)
end
@end verbatim
@strong{Python}
-
For preview use: @code{python sample.py}.
@verbatim
from mathgl import *
@@ -70,31 +63,34 @@ gr = mglGraph();
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gr.ShowImage();
@end verbatim
-
-
+ at end ifclear
@menu
* 1D plotting samples::
* 2D plotting samples::
* 3D plotting samples::
* Dual plotting samples::
+* Basic features::
* Additional features::
* Advanced features::
@end menu
-
@c ------------------------------------------------------------------
@node 1D plotting samples, 2D plotting samples, , Samples
@section 1D plotting samples
-
@menu
* Plot sample::
-* Radar 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::
@@ -104,18 +100,17 @@ gr.ShowImage();
* Torus sample::
* Chart sample::
* Pie chart sample::
+* Ring chart sample::
@end menu
-
@c ------------------------------------------------------------------
@node Plot sample, Radar sample, , 1D plotting samples
@subsection Plot sample
@cindex Plot
-
@float
- at image{png/plot, 7cm}
- at caption{Example of Plot. @tdref{plot}}
+ at image{../png/plot, 7cm}
+ at c @caption{Example of Plot. @tdref{plot}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData y(50,3);
@@ -126,6 +121,7 @@ gr->Box();
gr->Plot(y);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new y 50 3
modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
@@ -134,6 +130,7 @@ modify y 'cos(2*pi*x)' 2
box
plot y
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT y = mgl_create_data_size(50,3,1);
@@ -164,19 +161,16 @@ y.Modify("cos(2*pi*x)",2);
gr.Box();
gr.Plot(y);
@end verbatim
-
-
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Radar sample, Tens sample, Plot sample, 1D plotting samples
@subsection Radar sample
@cindex Radar
-
@float
- at image{png/radar, 7cm}
- at caption{Example of Plot. @tdref{radar}}
+ at image{../png/radar, 7cm}
+ at c @caption{Example of Plot. @tdref{radar}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData y(10,3);
@@ -184,11 +178,13 @@ y.Modify("0.4*sin(pi*(2*x+y/2))+0.1*rnd");
gr->Radar(y,"#");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new y 10 3
modify y '0.4*sin(pi*(2*x+y/2))+0.1*rnd'
radar y '#'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT y = mgl_create_data_size(10,3,1);
@@ -210,18 +206,16 @@ y = mglData(10,3);
y.Modify("0.4*sin(pi*(2*x+y/2))+0.1*rnd");
gr.Radar(y,"#");
@end verbatim
-
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Tens sample, Area sample, Radar sample, 1D plotting samples
@subsection Tens sample
@cindex Tens
-
@float
- at image{png/tens, 7cm}
- at caption{Example of Tens. @tdref{tens}}
+ at image{../png/tens, 7cm}
+ at c @caption{Example of Tens. @tdref{tens}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData y(50), c(50);
@@ -231,6 +225,7 @@ gr->Box();
gr->Tens(y,c);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new y 50
new c 50
@@ -239,6 +234,7 @@ modify c 'sin(2*pi*x)'
box
tens y c
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT y = mgl_create_data_size(50,1,1);
@@ -271,17 +267,16 @@ c.Modify("sin(2*pi*x)");
gr.Box();
gr.Tens(y,c);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
- at node Area sample, Bars sample, Tens sample, 1D plotting samples
+ at node Area sample, Area gradient sample, Tens sample, 1D plotting samples
@subsection Area sample
@cindex Area
-
@float
- at image{png/area, 7cm}
- at caption{Example of Area. @tdref{area}}
+ at image{../png/area, 7cm}
+ at c @caption{Example of Area. @tdref{area}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData y(50,3);
@@ -293,6 +288,7 @@ gr->Box();
gr->Area(y);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new y 50 3
modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
@@ -302,6 +298,7 @@ origin 0 0
box
area y
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT y = mgl_create_data_size(50,3,1);
@@ -335,17 +332,81 @@ gr.SetOrigin(0.,0.);
gr.Box();
gr.Area(y);
@end verbatim
-
+ at end ifclear
+ at c ------------------------------------------------------------------
+ at node Area gradient sample, Bars sample, Area sample, 1D plotting samples
+ at subsection Area with gradient filling sample
+ at cindex Area
+ at float
+ at image{../png/area_2, 7cm}
+ at c @caption{Example of Area. @tdref{area}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ code}
+ at verbatim
+mglData y(50,3);
+y.Modify("0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)",0);
+y.Modify("sin(2*pi*x)",1);
+y.Modify("cos(2*pi*x)",2);
+gr->Org=mglPoint(0,0);
+gr->Box();
+gr->Area(y,"cbgGyr");
+ at end verbatim
+ at strong{MGL code}
+ at end ifclear
+ at verbatim
+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'
+ at end verbatim
+ at ifclear UDAV
+ at strong{Pure C code}
+ at verbatim
+HMDT y = mgl_create_data_size(50,3,1);
+mgl_data_modify(y,"0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)",0);
+mgl_data_modify(y,"sin(2*pi*x)",1);
+mgl_data_modify(y,"cos(2*pi*x)",2);
+mgl_set_origin(gr,0.,0.,0.);
+mgl_box(gr,1);
+mgl_area(gr,y,"cbgGyr");
+mgl_delete_data(y);
+ at end verbatim
+ at strong{Fortran code}
+ at verbatim
+integer y, mgl_create_data_size
+y = mgl_create_data_size(50,3,1)
+call mgl_data_modify(y,'0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)',0)
+call mgl_data_modify(y,'sin(2*pi*x)',1)
+call mgl_data_modify(y,'cos(2*pi*x)',2)
+call mgl_set_origin(gr,0.,0.,0.)
+call mgl_box(gr,1)
+call mgl_area(gr,y,'cbgGyr')
+call mgl_delete_data(y)
+ at end verbatim
+ at strong{Python}
+ at verbatim
+y = mglData(50,3);
+y.Modify("0.7*sin(2*pi*x)+0.5*cos(3*pi*x)+0.2*sin(pi*x)",0);
+y.Modify("sin(2*pi*x)",1);
+y.Modify("cos(2*pi*x)",2);
+gr.SetOrigin(0.,0.);
+gr.Box();
+gr.Area(y,"cbgGyr");
+ at end verbatim
+ at end ifclear
@c ------------------------------------------------------------------
- at node Bars sample, Barh sample, Area sample, 1D plotting samples
+ at node Bars sample, Bars 2 colors sample, Area gradient sample, 1D plotting samples
@subsection Bars sample
@cindex Bars
-
@float
- at image{png/bars, 7cm}
- at caption{Example of Bars. @tdref{bars}}
+ at image{../png/bars, 7cm}
+ at c @caption{Example of Bars. @tdref{bars}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData y(10,3);
@@ -355,6 +416,7 @@ gr->Box();
gr->Bars(y);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new y 10 3
modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
@@ -362,6 +424,7 @@ origin 0 0
box
bars y
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT y = mgl_create_data_size(10,3,1);
@@ -389,17 +452,181 @@ gr.SetOrigin(0.,0.);
gr.Box();
gr.Bars(y);
@end verbatim
-
+ at end ifclear
+ at c ------------------------------------------------------------------
+ at node Bars 2 colors sample, Bars above sample, Bars sample, 1D plotting samples
+ at subsection Bars 2 colors sample
+ at cindex Bars
+ at float
+ at image{../png/bars_2, 7cm}
+ at c @caption{Example of Bars. @tdref{bars}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ code}
+ at verbatim
+mglData y(10,3);
+y.Modify("0.8*sin(pi*(2*x+y/2))+0.2*rnd");
+gr->Org=mglPoint(0,0);
+gr->Box();
+gr->Bars(y,"cbgGyr");
+ at end verbatim
+ at strong{MGL code}
+ at end ifclear
+ at verbatim
+new y 10 3
+modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
+origin 0 0
+box
+bars y 'cbgGyr'
+ at end verbatim
+ at ifclear UDAV
+ at strong{Pure C code}
+ at verbatim
+HMDT y = mgl_create_data_size(10,3,1);
+mgl_data_modify(y,"0.8*sin(pi*(2*x+y/2))+0.2*rnd");
+mgl_set_origin(gr,0.,0.,0.);
+mgl_box(gr,1);
+mgl_bars(gr,y,"cbgGyr");
+mgl_delete_data(y);
+ at end verbatim
+ at strong{Fortran code}
+ at verbatim
+integer y, mgl_create_data_size
+y = mgl_create_data_size(10,3,1)
+call mgl_data_modify(y,'0.8*sin(pi*(2*x+y/2))+0.2*rnd')
+call mgl_set_origin(gr,0.,0.,0.)
+call mgl_box(gr,1)
+call mgl_bars(gr,y,'cbgGyr')
+call mgl_delete_data(y)
+ at end verbatim
+ at strong{Python}
+ at verbatim
+y = mglData(10,3);
+y.Modify("0.8*sin(pi*(2*x+y/2))+0.2*rnd");
+gr.SetOrigin(0.,0.);
+gr.Box();
+gr.Bars(y,"cbgGyr");
+ at end verbatim
+ at end ifclear
+ at c ------------------------------------------------------------------
+ at node Bars above sample, Bars fall sample, Bars 2 colors sample, 1D plotting samples
+ at subsection Bars above sample
+ at cindex Bars
+ at float
+ at image{../png/bars_a, 7cm}
+ at c @caption{Example of Bars. @tdref{bars}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ code}
+ at verbatim
+mglData y(10,3);
+y.Modify("0.8*sin(pi*(2*x+y/2))+0.2*rnd");
+gr->Org=mglPoint(0,0);
+gr->Box();
+gr->Bars(y,"a");
+ at end verbatim
+ at strong{MGL code}
+ at end ifclear
+ at verbatim
+new y 10 3
+modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
+origin 0 0
+box
+bars y 'a'
+ at end verbatim
+ at ifclear UDAV
+ at strong{Pure C code}
+ at verbatim
+HMDT y = mgl_create_data_size(10,3,1);
+mgl_data_modify(y,"0.8*sin(pi*(2*x+y/2))+0.2*rnd");
+mgl_set_origin(gr,0.,0.,0.);
+mgl_box(gr,1);
+mgl_bars(gr,y,"a");
+mgl_delete_data(y);
+ at end verbatim
+ at strong{Fortran code}
+ at verbatim
+integer y, mgl_create_data_size
+y = mgl_create_data_size(10,3,1)
+call mgl_data_modify(y,'0.8*sin(pi*(2*x+y/2))+0.2*rnd')
+call mgl_set_origin(gr,0.,0.,0.)
+call mgl_box(gr,1)
+call mgl_bars(gr,y,'a')
+call mgl_delete_data(y)
+ at end verbatim
+ at strong{Python}
+ at verbatim
+y = mglData(10,3);
+y.Modify("0.8*sin(pi*(2*x+y/2))+0.2*rnd");
+gr.SetOrigin(0.,0.);
+gr.Box();
+gr.Bars(y,"a");
+ at end verbatim
+ at end ifclear
@c ------------------------------------------------------------------
- at node Barh sample, Step sample, Bars sample, 1D plotting samples
+ at node Bars fall sample, Barh sample, Bars above sample, 1D plotting samples
+ at subsection Bars fall sample
+ at cindex Bars
+ at float
+ at image{../png/bars_f, 7cm}
+ at c @caption{Example of Bars. @tdref{bars}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ code}
+ at verbatim
+mglData y(10,3);
+y.Modify("0.8*sin(pi*(2*x+y/2))+0.2*rnd");
+gr->Org=mglPoint(0,0);
+gr->Box();
+gr->Bars(y,"f");
+ at end verbatim
+ at strong{MGL code}
+ at end ifclear
+ at verbatim
+new y 10 3
+modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
+origin 0 0
+box
+bars y 'f'
+ at end verbatim
+ at ifclear UDAV
+ at strong{Pure C code}
+ at verbatim
+HMDT y = mgl_create_data_size(10,3,1);
+mgl_data_modify(y,"0.8*sin(pi*(2*x+y/2))+0.2*rnd");
+mgl_set_origin(gr,0.,0.,0.);
+mgl_box(gr,1);
+mgl_bars(gr,y,"f");
+mgl_delete_data(y);
+ at end verbatim
+ at strong{Fortran code}
+ at verbatim
+integer y, mgl_create_data_size
+y = mgl_create_data_size(10,3,1)
+call mgl_data_modify(y,'0.8*sin(pi*(2*x+y/2))+0.2*rnd')
+call mgl_set_origin(gr,0.,0.,0.)
+call mgl_box(gr,1)
+call mgl_bars(gr,y,'f')
+call mgl_delete_data(y)
+ at end verbatim
+ at strong{Python}
+ at verbatim
+y = mglData(10,3);
+y.Modify("0.8*sin(pi*(2*x+y/2))+0.2*rnd");
+gr.SetOrigin(0.,0.);
+gr.Box();
+gr.Bars(y,"f");
+ at end verbatim
+ at end ifclear
+ at c ------------------------------------------------------------------
+ at node Barh sample, Step sample, Bars fall sample, 1D plotting samples
@subsection Barh sample
@cindex Barh
-
@float
- at image{png/barh, 7cm}
- at caption{Example of Barh. @tdref{barh}}
+ at image{../png/barh, 7cm}
+ at c @caption{Example of Barh. @tdref{barh}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData y(10,3);
@@ -409,6 +636,7 @@ gr->Box();
gr->Barh(y);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new y 10 3
modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
@@ -416,6 +644,7 @@ origin 0 0
box
barh y
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT y = mgl_create_data_size(10,3,1);
@@ -443,17 +672,16 @@ gr.SetOrigin(0.,0.);
gr.Box();
gr.Barh(y);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Step sample, Stem sample, Barh sample, 1D plotting samples
@subsection Step sample
@cindex Step
-
@float
- at image{png/step, 7cm}
- at caption{Example of Step. @tdref{step}}
+ at image{../png/step, 7cm}
+ at c @caption{Example of Step. @tdref{step}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData y(50,3);
@@ -464,6 +692,7 @@ gr->Box();
gr->Step(y);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new y 50 3
modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
@@ -472,6 +701,7 @@ modify y 'cos(2*pi*x)' 2
box
step y
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT y = mgl_create_data_size(50,3,1);
@@ -502,17 +732,16 @@ y.Modify("cos(2*pi*x)",2);
gr.Box();
gr.Step(y);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Stem sample, Region sample, Step sample, 1D plotting samples
@subsection Stem sample
@cindex Stem
-
@float
- at image{png/stem, 7cm}
- at caption{Example of Stem. @tdref{stem}}
+ at image{../png/stem, 7cm}
+ at c @caption{Example of Stem. @tdref{stem}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData y(50,3);
@@ -524,6 +753,7 @@ gr->Box();
gr->Stem(y,"o");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new y 50 3
modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
@@ -533,6 +763,7 @@ origin 0 0
box
stem y 'o'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT y = mgl_create_data_size(50,3,1);
@@ -566,17 +797,16 @@ gr.SetOrigin(0.,0.);
gr.Box();
gr.Stem(y,"o");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
- at node Region sample, Error sample, Stem sample, 1D plotting samples
+ at node Region sample, Region gradient sample, Stem sample, 1D plotting samples
@subsection Region sample
@cindex Region
-
@float
- at image{png/region, 7cm}
- at caption{Example of Region. @tdref{region}}
+ at image{../png/region, 7cm}
+ at c @caption{Example of Region. @tdref{region}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData y1(50), y2(50);
@@ -588,6 +818,7 @@ gr->Plot(y1,"k2");
gr->Plot(y2,"k2");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new y1 50
new y2 50
@@ -598,6 +829,7 @@ region y1 y2 'r'
plot y1 'k2'
plot y2 'k2'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT y1 = mgl_create_data_size(50,1,1);
@@ -635,17 +867,86 @@ gr.Region(y1,y2,"r");
gr.Plot(y1,"k2");
gr.Plot(y2,"k2");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
- at node Error sample, BoxPlot sample, Region sample, 1D plotting samples
+ at node Region gradient sample, Error sample, Region sample, 1D plotting samples
+ at subsection Region gradient sample
+ at cindex Region
+ at float
+ at image{../png/region_2, 7cm}
+ at c @caption{Example of Region. @tdref{region}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ code}
+ at verbatim
+mglData y1(50), y2(50);
+y1.Modify("0.3*sin(2*pi*x)");
+y2.Modify("0.5+0.3*cos(2*pi*x)");
+gr->Box();
+gr->Region(y1,y2,"yr");
+gr->Plot(y1,"k2");
+gr->Plot(y2,"k2");
+ at end verbatim
+ at strong{MGL code}
+ at end ifclear
+ at verbatim
+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'
+ at end verbatim
+ at ifclear UDAV
+ at strong{Pure C code}
+ at verbatim
+HMDT y1 = mgl_create_data_size(50,1,1);
+HMDT y2 = mgl_create_data_size(50,1,1);
+mgl_data_modify(y1,"0.3*sin(2*pi*x)",0);
+mgl_data_modify(y2,"0.5+0.3*cos(2*pi*x)",0);
+mgl_box(gr,1);
+mgl_region(gr,y1,y2,"yr",1);
+mgl_plot(gr,y1,"k2");
+mgl_plot(gr,y2,"k2");
+mgl_delete_data(y1);
+mgl_delete_data(y2);
+ at end verbatim
+ at strong{Fortran code}
+ at verbatim
+integer y1, y2, mgl_create_data_size
+y1 = mgl_create_data_size(50,1,1);
+y2 = mgl_create_data_size(50,1,1);
+call mgl_data_modify(y1,'0.3*sin(2*pi*x)',0);
+call mgl_data_modify(y2,'0.5+0.3*cos(2*pi*x)',0);
+call mgl_box(gr,1);
+call mgl_region(gr,y1,y2,'yr',1);
+call mgl_plot(gr,y1,'k2');
+call mgl_plot(gr,y2,'k2');
+call mgl_delete_data(y1);
+call mgl_delete_data(y2);
+ at end verbatim
+ at strong{Python}
+ at verbatim
+y1, y2, x = mglData(50), mglData(50), mglData(50);
+y1.Modify("0.3*sin(2*pi*x)");
+y2.Modify("0.5+0.3*cos(2*pi*x)");
+gr.Box();
+gr.Region(y1,y2,"yr");
+gr.Plot(y1,"k2");
+gr.Plot(y2,"k2");
+ at end verbatim
+ at end ifclear
+ at c ------------------------------------------------------------------
+ at node Error sample, BoxPlot sample, Region gradient sample, 1D plotting samples
@subsection Error sample
@cindex Error
-
@float
- at image{png/error, 7cm}
- at caption{Example of Error. @tdref{error}}
+ at image{../png/error, 7cm}
+ at c @caption{Example of Error. @tdref{error}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData y(50,1), x0(10), y0(10), ex(10), ey(10);
@@ -658,6 +959,7 @@ gr->Plot(y);
gr->Error(x0,y0,ex,ey,"ko");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new y 50
new x0 10
@@ -673,6 +975,7 @@ box
plot y
error x0 y0 ex ey 'ko'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT y = mgl_create_data_size(50,1,1);
@@ -684,7 +987,6 @@ mgl_data_modify(y,"0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)",0);
mgl_data_modify(x0,"2*x-1 + 0.1*rnd-0.05",0);
mgl_data_modify(y0,"0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x) + 0.2*rnd-0.1",0);
mgl_data_modify(ey,"0.2",0); mgl_data_modify(ex,"0.1",0);
-
mgl_box(gr,1);
mgl_plot(gr,y,NULL);
mgl_error_exy(gr,x0,y0,ex,ey,"ko");
@@ -706,7 +1008,6 @@ call mgl_data_modify(y0,'0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + &
0.2*sin(pi*x) + 0.2*rnd-0.1',0);
call mgl_data_modify(ey,'0.2',0)
call mgl_data_modify(ex,'0.1',0);
-
call mgl_box(gr,1)
call mgl_plot(gr,y,'')
call mgl_error_exy(gr,x0,y0,ex,ey,'ko')
@@ -726,17 +1027,16 @@ ey.Modify("0.2"); ex.Modify("0.1");
gr.Box(); gr.Plot(y);
gr.Error(x0,y0,ex,ey,"ko");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node BoxPlot sample, Mark sample, Error sample, 1D plotting samples
@subsection BoxPlot sample
@cindex BoxPlot
-
@float
- at image{png/boxplot, 7cm}
- at caption{Example of BoxPlot. @tdref{boxplot}}
+ at image{../png/boxplot, 7cm}
+ at c @caption{Example of BoxPlot. @tdref{boxplot}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(10,7);
@@ -746,17 +1046,18 @@ gr->Box();
gr->Plot(a," ko");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new a 10 7
modify a '(2*rnd-1)^3/2'
boxplot a
box:plot a ' ko'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(10,7,1);
mgl_data_modify(a,"(2*rnd-1)^3/2",0);
-
mgl_box(gr,1);
mgl_plot(gr,a," ko");
mgl_boxplot(gr,a,NULL);
@@ -767,7 +1068,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
y = mgl_create_data_size(10,7,1)
call mgl_data_modify(a,'(2*rnd-1)^3/2',0);
-
call mgl_box(gr,1)
call mgl_plot(gr,a,' ko')
call mgl_boxplot(gr,a,'')
@@ -781,17 +1081,16 @@ gr.Box();
gr.Plot(a," ko");
gr.BoxPlot(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Mark sample, TextMark sample, BoxPlot sample, 1D plotting samples
@subsection Mark sample
@cindex Mark
-
@float
- at image{png/mark, 7cm}
- at caption{Example of Mark. @tdref{mark}}
+ at image{../png/mark, 7cm}
+ at c @caption{Example of Mark. @tdref{mark}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData y(50,3), y1(50);
@@ -803,6 +1102,7 @@ gr->Box();
gr->Mark(y,y1,"bs");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new y 50 3
modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
@@ -813,6 +1113,7 @@ modify y1 '0.5+0.3*cos(2*pi*x)'
box
mark y y1 'bs'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT y = mgl_create_data_size(50,3,1);
@@ -849,17 +1150,16 @@ y1.Modify("0.5+0.3*cos(2*pi*x)");
gr.Box();
gr.Mark(y,y1,"bs");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node TextMark sample, Tube sample, Mark sample, 1D plotting samples
@subsection TextMark sample
@cindex TextMark
-
@float
- at image{png/textmark, 7cm}
- at caption{Example of TextMark. @tdref{textmark}}
+ at image{../png/textmark, 7cm}
+ at c @caption{Example of TextMark. @tdref{textmark}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData y(50,3), y1(50);
@@ -871,6 +1171,7 @@ gr->Box();
gr->TextMark(y,y1,"\\gamma");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new y 50 3
modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
@@ -881,6 +1182,7 @@ modify y1 '0.5+0.3*cos(2*pi*x)'
box
textmark y y1 '\gamma'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT y, y1;
@@ -918,48 +1220,46 @@ y1.Modify("0.5+0.3*cos(2*pi*x)");
gr.Box();
gr.TextMark(y,y1,"\\gamma");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Tube sample, Text sample, TextMark sample, 1D plotting samples
@subsection Tube sample
@cindex Tube
-
@float
- at image{png/tube, 7cm}
- at caption{Example of Tube. @tdref{tube}}
+ at image{../png/tube, 7cm}
+ at c @caption{Example of Tube. @tdref{tube}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData y(50,3);
y.Modify("0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)",0);
y.Modify("sin(2*pi*x)",1);
y.Modify("cos(2*pi*x)",2);
-
gr->Rotate(40,60);
gr->Light(true);
gr->Box();
gr->Tube(y,0.05);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT y = mgl_create_data_size(50,3,1);
mgl_data_modify(y,"0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)",0);
mgl_data_modify(y,"sin(2*pi*x)",1);
mgl_data_modify(y,"cos(2*pi*x)",2);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -973,7 +1273,6 @@ y = mgl_create_data_size(50,3,1)
call mgl_data_modify(y,'0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)',0)
call mgl_data_modify(y,'sin(2*pi*x)',1)
call mgl_data_modify(y,'cos(2*pi*x)',2)
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -988,17 +1287,16 @@ y.Modify("sin(2*pi*x)",1); y.Modify("cos(2*pi*x)",2);
gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Tube(y,0.05);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Text sample, Torus sample, Tube sample, 1D plotting samples
@subsection Text sample
@cindex Text
-
@float
- at image{png/text, 7cm}
- at caption{Example of Text. @tdref{text}}
+ at image{../png/text, 7cm}
+ at c @caption{Example of Text. @tdref{text}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData y(50,3);
@@ -1011,6 +1309,7 @@ gr->Text(y,"This is very long string drawn along a curve",":k");
gr->Text(y,"Another string drawn above a curve","T:r");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new y 50 3
modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
@@ -1021,6 +1320,7 @@ 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'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT y = mgl_create_data_size(50,1,1);
@@ -1052,47 +1352,45 @@ gr.Plot(y.SubData(-1,0));
gr.Text(y,"This is very long string drawn along a curve",":k");
gr.Text(y,"Another string drawn above a curve","T:r");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Torus sample, Chart sample, Text sample, 1D plotting samples
@subsection Torus sample
@cindex Torus
-
@float
- at image{png/torus, 7cm}
- at caption{Example of Torus. @tdref{torus}}
+ at image{../png/torus, 7cm}
+ at c @caption{Example of Torus. @tdref{torus}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData y1(50), y2(50);
y1.Modify("0.5+0.3*cos(2*pi*x)");
y2.Modify("0.3*sin(2*pi*x)");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Box();
gr->Torus(y1,y2,"pz");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT y1 = mgl_create_data_size(50,1,1);
HMDT y2 = mgl_create_data_size(50,1,1);
mgl_data_modify(y1,"0.5+0.3*cos(2*pi*x)",0);
mgl_data_modify(y2,"0.3*sin(2*pi*x)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -1107,7 +1405,6 @@ y1 = mgl_create_data_size(50,1,1);
y2 = mgl_create_data_size(50,1,1);
call mgl_data_modify(y1,"0.5+0.3*cos(2*pi*x)",0);
call mgl_data_modify(y2,"0.3*sin(2*pi*x)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -1124,42 +1421,40 @@ gr.Rotate(40,60); gr.Light(True);
gr.Box();
gr.Torus(y1,y2,"pz");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Chart sample, Pie chart sample, Torus sample, 1D plotting samples
@subsection Chart sample
@cindex Chart
-
@float
- at image{png/chart, 7cm}
- at caption{Example of Chart. @tdref{chart}}
+ at image{../png/chart, 7cm}
+ at c @caption{Example of Chart. @tdref{chart}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData ch(7,2);
ch.Modify("rnd+0.1");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Box();
gr->Chart(ch,"#");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new ch 7 2
modify ch 'rnd+0.1'
-
rotate 40 60
light on
box
chart ch
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT ch = mgl_create_data_size(7,2,1);
mgl_data_modify(ch,"rnd+0.1",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -1171,7 +1466,6 @@ mgl_delete_data(ch);
integer ch, mgl_create_data_size
ch = mgl_create_data_size(7,2,1)
call mgl_data_modify(ch,'rnd+0.1',0)
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -1185,23 +1479,21 @@ gr.Rotate(40,60); gr.Light(True);
gr.Box();
gr.Chart(ch,"#");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
- at node Pie chart sample, , Chart sample, 1D plotting samples
+ at node Pie chart sample, Ring chart sample, Chart sample, 1D plotting samples
@subsection Pie chart sample
@cindex Chart
@cindex Axis
-
@float
- at image{png/pie_chart, 7cm}
- at caption{Example of Chart in cylindrical coordinates. @tdref{pie_chart}}
+ at image{../png/pie_chart, 7cm}
+ at c @caption{Example of Chart in cylindrical coordinates. @tdref{pie_chart}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData ch(7,2);
ch.Modify("rnd+0.1");
-
gr->Rotate(40,60);
gr->Light(true);
gr->SetFunc("(y+1)/2*cos(pi*x)","(y+1)/2*sin(pi*x)");
@@ -1209,21 +1501,21 @@ gr->Box();
gr->Chart(ch,"bgr cmy#");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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#'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT ch = mgl_create_data_size(7,2,1);
mgl_data_modify(ch,"rnd+0.1",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_func(gr,"(y+1)/2*cos(pi*x)","(y+1)/2*sin(pi*x)",0);
@@ -1236,7 +1528,6 @@ mgl_delete_data(ch);
integer ch, mgl_create_data_size
ch = mgl_create_data_size(7,2,1)
call mgl_data_modify(ch,'rnd+0.1',0)
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_func(gr,'(y+1)/2*cos(pi*x)','(y+1)/2*sin(pi*x)','');
@@ -1252,11 +1543,74 @@ gr.SetFunc("(y+1)/2*cos(pi*x)","(y+1)/2*sin(pi*x)");
gr.Box();
gr.Chart(ch,"bgr cmy#");
@end verbatim
-
+ at end ifclear
+ at c ------------------------------------------------------------------
+ at node Ring chart sample, , Pie chart sample, 1D plotting samples
+ at subsection Ring chart sample
+ at cindex Chart
+ at cindex Axis
+ at float
+ at image{../png/ring_chart, 7cm}
+ at c @caption{Example of Chart in cylindrical coordinates. @tdref{pie_chart}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ code}
+ at verbatim
+mglData ch(7,2);
+ch.Modify("rnd+0.1");
+gr->Rotate(40,60);
+gr->Light(true);
+gr->SetFunc("(y+2)/3*cos(pi*x)","(y+2)/3*sin(pi*x)");
+gr->Box();
+gr->Chart(ch,"bgr cmy#");
+ at end verbatim
+ at strong{MGL code}
+ at end ifclear
+ at verbatim
+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#'
+ at end verbatim
+ at ifclear UDAV
+ at strong{Pure C code}
+ at verbatim
+HMDT ch = mgl_create_data_size(7,2,1);
+mgl_data_modify(ch,"rnd+0.1",0);
+mgl_rotate(gr,40.,60.,0.);
+mgl_set_light(gr,1);
+mgl_set_func(gr,"(y+2)/3*cos(pi*x)","(y+2)/3*sin(pi*x)",0);
+mgl_box(gr,1);
+mgl_chart(gr,ch,"bgr cmy#");
+mgl_delete_data(ch);
+ at end verbatim
+ at strong{Fortran code}
+ at verbatim
+integer ch, mgl_create_data_size
+ch = mgl_create_data_size(7,2,1)
+call mgl_data_modify(ch,'rnd+0.1',0)
+call mgl_rotate(gr,40.,60.,0.)
+call mgl_set_light(gr,1)
+call mgl_set_func(gr,'(y+2)/3*cos(pi*x)','(y+2)/3*sin(pi*x)','');
+call mgl_box(gr,1)
+call mgl_chart(gr,ch,'bgr cmy#')
+call mgl_delete_data(ch)
+ at end verbatim
+ at strong{Python}
+ at verbatim
+ch = mglData(7,2); ch.Modify("rnd+0.1");
+gr.Rotate(40,60); gr.Light(True);
+gr.SetFunc("(y+2)/3*cos(pi*x)","(y+2)/3*sin(pi*x)");
+gr.Box();
+gr.Chart(ch,"bgr cmy#");
+ at end verbatim
+ at end ifclear
@c ------------------------------------------------------------------
@node 2D plotting samples, 3D plotting samples, 1D plotting samples, Samples
@section 2D plotting samples
-
@menu
* Surf sample::
* Transparent surface sample::
@@ -1272,43 +1626,41 @@ gr.Chart(ch,"bgr cmy#");
* ContF sample::
* ContD sample::
* Axial sample::
+* Grad sample::
@end menu
-
@c ------------------------------------------------------------------
@node Surf sample, Transparent surface sample, , 2D plotting samples
@subsection Surf sample
@cindex Surf
-
@float
- at image{png/surf, 7cm}
- at caption{Example of Surf. @tdref{surf}}
+ at image{../png/surf, 7cm}
+ at c @caption{Example of Surf. @tdref{surf}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Box();
gr->Surf(a);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -1320,7 +1672,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -1334,23 +1685,21 @@ a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Surf(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Transparent surface sample, Surface in fog sample, Surf sample, 2D plotting samples
@subsection Transparent surface sample
@cindex Surf
@cindex Alpha
-
@float
- at image{png/surf_alpha, 7cm}
- at caption{Example of Surf & Alpha. @tdref{surf_alpha}}
+ at image{../png/surf_alpha, 7cm}
+ at c @caption{Example of Surf & Alpha. @tdref{surf_alpha}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Alpha(true);
@@ -1358,21 +1707,21 @@ gr->Box();
gr->Surf(a);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_alpha(gr,1);
@@ -1385,7 +1734,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_alpha(gr,1)
@@ -1401,23 +1749,21 @@ gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Alpha(True);
gr.Surf(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Surface in fog sample, Sharp colors sample, Transparent surface sample, 2D plotting samples
@subsection Surface in fog sample
@cindex Surf
@cindex Fog
-
@float
- at image{png/surf_fog, 7cm}
- at caption{Example of Surf & Fog. @tdref{surf_fog}}
+ at image{../png/surf_fog, 7cm}
+ at c @caption{Example of Surf & Fog. @tdref{surf_fog}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Fog(1);
@@ -1425,21 +1771,21 @@ gr->Box();
gr->Surf(a);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_fog(gr,1.,0.25);
@@ -1452,7 +1798,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_fog(gr,1.,0.25)
@@ -1468,42 +1813,40 @@ gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Fog(1);
gr.Surf(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Sharp colors sample, Mesh sample, Surface in fog sample, 2D plotting samples
@subsection Sharp colors sample
@cindex Surf
-
@float
- at image{png/surf_sl, 7cm}
- at caption{Example of sharp color scheme. @tdref{surf_sl}}
+ at image{../png/surf_sl, 7cm}
+ at c @caption{Example of sharp color scheme. @tdref{surf_sl}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Box();
gr->Surf(a,"BbcyrR|");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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|'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -1515,7 +1858,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -1529,40 +1871,38 @@ a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Surf(a,"BbcyrR|");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Mesh sample, Fall sample, Sharp colors sample, 2D plotting samples
@subsection Mesh sample
@cindex Mesh
-
@float
- at image{png/mesh, 7cm}
- at caption{Example of Mesh. @tdref{mesh}}
+ at image{../png/mesh, 7cm}
+ at c @caption{Example of Mesh. @tdref{mesh}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Box();
gr->Mesh(a);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
mgl_mesh(gr,a,0);
@@ -1573,7 +1913,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1)
call mgl_mesh(gr,a,'')
@@ -1586,40 +1925,38 @@ a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Mesh(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Fall sample, Belt sample, Mesh sample, 2D plotting samples
@subsection Fall sample
@cindex Fall
-
@float
- at image{png/fall, 7cm}
- at caption{Example of Fall. @tdref{fall}}
+ at image{../png/fall, 7cm}
+ at c @caption{Example of Fall. @tdref{fall}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Box();
gr->Fall(a);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
mgl_fall(gr,a,0);
@@ -1630,7 +1967,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1)
call mgl_fall(gr,a,'')
@@ -1643,42 +1979,40 @@ a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Fall(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Belt sample, Tile sample, Fall sample, 2D plotting samples
@subsection Belt sample
@cindex Belt
-
@float
- at image{png/belt, 7cm}
- at caption{Example of Belt. @tdref{belt}}
+ at image{../png/belt, 7cm}
+ at c @caption{Example of Belt. @tdref{belt}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Box();
gr->Belt(a);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -1690,7 +2024,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -1704,42 +2037,40 @@ a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Belt(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Tile sample, Boxs sample, Belt sample, 2D plotting samples
@subsection Tile sample
@cindex Tile
-
@float
- at image{png/tile, 7cm}
- at caption{Example of Tile. @tdref{tile}}
+ at image{../png/tile, 7cm}
+ at c @caption{Example of Tile. @tdref{tile}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Box();
gr->Tile(a);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -1751,7 +2082,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -1765,17 +2095,16 @@ a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Tile(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Boxs sample, Dens sample, Tile sample, 2D plotting samples
@subsection Boxs sample
@cindex Boxs
-
@float
- at image{png/boxs, 7cm}
- at caption{Example of Boxs. @tdref{boxs}}
+ at image{../png/boxs, 7cm}
+ at c @caption{Example of Boxs. @tdref{boxs}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40);
@@ -1786,6 +2115,7 @@ gr->Box();
gr->Boxs(a);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new a 50 40
modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
@@ -1795,11 +2125,11 @@ origin 0 0 0
box
boxs a
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_origin(gr,0.,0.,0.);
@@ -1812,7 +2142,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_origin(gr,0.,0.,0.);
@@ -1828,18 +2157,17 @@ gr.Rotate(40,60); gr.Light(True);
gr.SetOrigin(0.,0.,0.); gr.Box();
gr.Boxs(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Dens sample, Cont sample, Boxs sample, 2D plotting samples
@subsection Dens sample
@cindex Dens
@cindex Colorbar
-
@float
- at image{png/dens, 7cm}
- at caption{Example of Dens & Colorbar. @tdref{dens}}
+ at image{../png/dens, 7cm}
+ at c @caption{Example of Dens & Colorbar. @tdref{dens}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40);
@@ -1849,6 +2177,7 @@ gr->Dens(a);
gr->Colorbar();
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new a 50 40
modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
@@ -1856,6 +2185,7 @@ box
dens a
colorbar
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
@@ -1883,17 +2213,16 @@ gr.Box();
gr.Dens(a);
gr.Colorbar();
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Cont sample, ContF sample, Dens sample, 2D plotting samples
@subsection Cont sample
@cindex Cont
-
@float
- at image{png/cont, 7cm}
- at caption{Example of Cont. @tdref{cont}}
+ at image{../png/cont, 7cm}
+ at c @caption{Example of Cont. @tdref{cont}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40);
@@ -1903,6 +2232,7 @@ gr->Box();
gr->Cont(a);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new a 50 40
modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
@@ -1910,11 +2240,11 @@ rotate 40 60
box
cont a
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
mgl_cont(gr,a,0,7,NAN);
@@ -1928,7 +2258,6 @@ real zero, nan
zero = 0; nan = zero/zero
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1)
call mgl_cont(gr,a,'',7,nan)
@@ -1942,41 +2271,39 @@ gr.Rotate(40,60);
gr.Box();
gr.Cont(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node ContF sample, ContD sample, Cont sample, 2D plotting samples
@subsection ContF sample
@cindex ContF
-
@float
- at image{png/contf, 7cm}
- at caption{Example of ContF. @tdref{contf}}
+ at image{../png/contf, 7cm}
+ at c @caption{Example of ContF. @tdref{contf}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60); gr->Light(true);
gr->Box();
gr->ContF(a);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -1991,7 +2318,6 @@ real zero, nan
zero = 0; nan = zero/zero
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -2006,17 +2332,16 @@ gr.Rotate(40,60); gr.Light(True);
gr.Box();
gr.ContF(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node ContD sample, Axial sample, ContF sample, 2D plotting samples
@subsection ContD sample
@cindex ContD
-
@float
- at image{png/contd, 7cm}
- at caption{Example of ContD. @tdref{contd}}
+ at image{../png/contd, 7cm}
+ at c @caption{Example of ContD. @tdref{contd}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40), v(9);
@@ -2027,6 +2352,7 @@ gr->ContD(v,a);
gr->Colorbar(v);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new a 50 40
modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
@@ -2035,6 +2361,7 @@ box
contd v a
colorbar v
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
@@ -2069,22 +2396,20 @@ gr.Box();
gr.ContD(v,a);
gr.Colorbar(v);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
- at node Axial sample, , ContD sample, 2D plotting samples
+ at node Axial sample, Grad sample, ContD sample, 2D plotting samples
@subsection Axial sample
@cindex Axial
-
@float
- at image{png/axial, 7cm}
- at caption{Example of Axial. @tdref{axial}}
+ at image{../png/axial, 7cm}
+ at c @caption{Example of Axial. @tdref{axial}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Alpha(true);
@@ -2092,21 +2417,21 @@ gr->Box();
gr->Axial(a);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_alpha(gr,1);
@@ -2119,7 +2444,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_alpha(gr,1)
@@ -2135,11 +2459,64 @@ gr.Rotate(40,60); gr.Light(True); gr.Alpha(True);
gr.Box();
gr.Axial(a);
@end verbatim
-
+ at end ifclear
+ at c ------------------------------------------------------------------
+ at node Grad sample, , Axial sample, 2D plotting samples
+ at subsection Grad sample
+ at cindex Grad
+ at float
+ at image{../png/grad, 7cm}
+ at c @caption{Example of Grad. @tdref{grad}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ code}
+ at verbatim
+mglData a(50,40);
+a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
+gr->Box(); gr->Alpha(true); gr->Dens(a);
+gr->Grad(a);
+ at end verbatim
+ at strong{MGL code}
+ at end ifclear
+ at verbatim
+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
+ at end verbatim
+ at ifclear UDAV
+ at strong{Pure C code}
+ at verbatim
+HMDT a = mgl_create_data_size(50,40,1);
+mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
+mgl_box(gr,1);
+mgl_set_alpha(gr,1);
+mgl_dens(gr,a,0,0);
+mgl_grad(gr,a,0,0);
+mgl_delete_data(a);
+ at end verbatim
+ at strong{Fortran code}
+ at verbatim
+integer a, mgl_create_data_size
+a = mgl_create_data_size(50,40,1);
+call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
+call mgl_box(gr,1)
+call mgl_set_alpha(gr,1)
+call mgl_dens(gr,a,'',0)
+call mgl_grad(gr,a,'',0)
+call mgl_delete_data(a)
+ at end verbatim
+ at strong{Python}
+ at verbatim
+a = mglData(50,40);
+a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))");
+gr.Box(); gr.Alpha(1); gr.Dens(a);
+gr.Colorbar();
+ at end verbatim
+ at end ifclear
@c ------------------------------------------------------------------
@node 3D plotting samples, Dual plotting samples, 2D plotting samples, Samples
@section 3D plotting samples
-
@menu
* Surf3 sample::
* Cloud sample::
@@ -2150,25 +2527,22 @@ gr.Axial(a);
* Cont projection sample::
* Dens projection sample::
* CutMinMax sample::
-* ``Isocaps'' sample::
+* Isocaps sample::
* CutOff sample::
@end menu
-
@c ------------------------------------------------------------------
@node Surf3 sample, Cloud sample, , 3D plotting samples
@subsection Surf3 sample
@cindex Surf3
-
@float
- at image{png/surf3, 7cm}
- at caption{Example of Surf3. @tdref{surf3}}
+ at image{../png/surf3, 7cm}
+ at c @caption{Example of Surf3. @tdref{surf3}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Alpha(true);
@@ -2176,21 +2550,21 @@ gr->Box();
gr->Surf3(a);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_alpha(gr,1);
@@ -2203,7 +2577,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_alpha(gr,1)
@@ -2219,42 +2592,40 @@ gr.Rotate(40,60); gr.Light(True); gr.Alpha(True);
gr.Box();
gr.Surf3(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Cloud sample, CloudP sample, Surf3 sample, 3D plotting samples
@subsection Cloud sample
@cindex Cloud
-
@float
- at image{png/cloud, 7cm}
- at caption{Example of Cloud. @tdref{cloud}}
+ at image{../png/cloud, 7cm}
+ at c @caption{Example of Cloud. @tdref{cloud}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60);
gr->Alpha(true);
gr->Box();
gr->Cloud(a,"wyrRk");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_alpha(gr,1);
mgl_box(gr,1);
@@ -2266,7 +2637,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_alpha(gr,1)
call mgl_box(gr,1)
@@ -2281,36 +2651,33 @@ gr.Rotate(40,60); gr.Alpha(True);
gr.Box();
gr.Cloud(a,"wyrRk");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node CloudP sample, Dens3 sample, Cloud sample, 3D plotting samples
@subsection CloudP sample
@cindex CloudP
-
@float
- at image{png/cloudp, 7cm}
- at caption{Example of CloudP. @tdref{cloudp}}
+ at image{../png/cloudp, 7cm}
+ at c @caption{Example of CloudP. @tdref{cloudp}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60);
gr->Alpha(true);
gr->Box();
gr->CloudP(a,"wyrRk");
@end verbatim
@strong{MGL code}
-
+ at end ifclear
Not available.
-
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_alpha(gr,1);
mgl_box(gr,1);
@@ -2322,7 +2689,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_alpha(gr,1)
call mgl_box(gr,1)
@@ -2330,36 +2696,32 @@ call mgl_cloudp(gr,a,'wyrRk',1.)
call mgl_delete_data(a)
@end verbatim
@strong{Python}
-
Not available.
-
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Dens3 sample, Cont3 sample, CloudP sample, 3D plotting samples
@subsection Dens3 sample
@cindex Dens3
@cindex Axis
-
@float
- at image{png/densa, 7cm}
- at caption{Example of Dens3. @tdref{densa}}
+ at image{../png/densa, 7cm}
+ at c @caption{Example of Dens3. @tdref{densa}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60); gr->Alpha(true); gr->Org = mglPoint(0,0,0);
gr->Box();
gr->DensA(a);
gr->Axis();
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@@ -2367,11 +2729,11 @@ box
densa a
axis
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_alpha(gr,1);
mgl_set_origin(gr,0.,0.,0.);
@@ -2385,7 +2747,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_alpha(gr,1)
call mgl_set_origin(gr,0.,0.,0.);
@@ -2403,40 +2764,38 @@ gr.SetOrigin(0,0,0); gr.Box();
gr.Axis();
gr.DensA(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Cont3 sample, ContF3 sample, Dens3 sample, 3D plotting samples
@subsection Cont3 sample
@cindex Cont3
-
@float
- at image{png/conta, 7cm}
- at caption{Example of Cont3. @tdref{conta}}
+ at image{../png/conta, 7cm}
+ at c @caption{Example of Cont3. @tdref{conta}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60);
gr->Box();
gr->ContA(a);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
mgl_cont_all(gr,a,0,7);
@@ -2447,7 +2806,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1)
call mgl_cont_all(gr,a,'',7)
@@ -2461,41 +2819,39 @@ gr.Rotate(40,60);
gr.Box();
gr.ContA(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node ContF3 sample, Cont projection sample, Cont3 sample, 3D plotting samples
@subsection ContF3 sample
@cindex ContF3
-
@float
- at image{png/contfa, 7cm}
- at caption{Example of ContF3. @tdref{contfa}}
+ at image{../png/contfa, 7cm}
+ at c @caption{Example of ContF3. @tdref{contfa}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60); gr->Light(true);
gr->Box();
gr->ContFA(a);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -2507,7 +2863,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -2522,24 +2877,22 @@ gr.Rotate(40,60); gr.Light(True);
gr.Box();
gr.ContFA(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Cont projection sample, Dens projection sample, ContF3 sample, 3D plotting samples
@subsection Cont projection sample
@cindex ContX
@cindex ContY
@cindex ContZ
-
@float
- at image{png/cont_xyz, 7cm}
- at caption{Example of projection by Cont[XYZ]. @tdref{cont_xyz}}
+ at image{../png/cont_xyz, 7cm}
+ at c @caption{Example of projection by Cont[XYZ]. @tdref{cont_xyz}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60);
gr->Box();
gr->ContX(a.Sum("x"),"",-1);
@@ -2547,10 +2900,10 @@ gr->ContY(a.Sum("y"),"",1);
gr->ContZ(a.Sum("z"),"",-1);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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'
@@ -2560,11 +2913,11 @@ conty s '' 1
sum s a 'z'
contz s '' -1
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(60,50,40), s;
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
s=mgl_data_sum(a,"x"); mgl_cont_x(gr,s,0,-1.,7); mgl_delete_data(s);
@@ -2577,7 +2930,6 @@ mgl_delete_data(a);
integer a,s, mgl_create_data_size, mgl_data_sum
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1)
s=mgl_data_sum(a,'x')
@@ -2600,24 +2952,22 @@ gr.ContX(a.Sum("x"),"",-1);
gr.ContY(a.Sum("y"),"",1);
gr.ContZ(a.Sum("z"),"",-1);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Dens projection sample, CutMinMax sample, Cont projection sample, 3D plotting samples
@subsection Dens projection sample
@cindex DensX
@cindex DensY
@cindex DensZ
-
@float
- at image{png/dens_xyz, 7cm}
- at caption{Example of projection by Dens[XYZ]. @tdref{dens_xyz}}
+ at image{../png/dens_xyz, 7cm}
+ at c @caption{Example of projection by Dens[XYZ]. @tdref{dens_xyz}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60);
gr->Box();
gr->DensX(a.Sum("x"),"",-1);
@@ -2625,10 +2975,10 @@ gr->DensY(a.Sum("y"),"",1);
gr->DensZ(a.Sum("z"),"",-1);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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'
@@ -2638,11 +2988,11 @@ densy s '' 1
sum s a 'z'
densz s '' -1
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a, s; a = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
s=mgl_data_sum(a,"x"); mgl_dens_x(gr,s,0,-1.); mgl_delete_data(s);
@@ -2655,7 +3005,6 @@ mgl_delete_data(a);
integer a,s, mgl_create_data_size, mgl_data_sum
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1)
s=mgl_data_sum(a,'x')
@@ -2678,24 +3027,22 @@ gr.DensX(a.Sum("x"),"",-1);
gr.DensY(a.Sum("y"),"",1);
gr.DensZ(a.Sum("z"),"",-1);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
- at node CutMinMax sample, ``Isocaps'' sample, Dens projection sample, 3D plotting samples
+ at node CutMinMax sample, Isocaps sample, Dens projection sample, 3D plotting samples
@subsection CutMinMax sample
@cindex Surf3
@cindex CutMin
@cindex CutMax
-
@float
- at image{png/cutminmax, 7cm}
- at caption{Example of Surf3 & CutMin, CutMax. @tdref{cutminmax}}
+ at image{../png/cutminmax, 7cm}
+ at c @caption{Example of Surf3 & CutMin, CutMax. @tdref{cutminmax}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Alpha(true);
@@ -2704,10 +3051,10 @@ gr->Box();
gr->Surf3(a);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@@ -2715,11 +3062,11 @@ cut 0 -1 -1 1 0 1
box
surf3 a
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_alpha(gr,1);
@@ -2733,7 +3080,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_alpha(gr,1)
@@ -2750,25 +3096,23 @@ gr.Rotate(40,60); gr.Light(True); gr.Alpha(True);
gr.SetCutBox(0,-1,-1,1,0,1); gr.Box();
gr.Surf3(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
- at node ``Isocaps'' sample, CutOff sample, CutMinMax sample, 3D plotting samples
+ at node Isocaps sample, CutOff sample, CutMinMax sample, 3D plotting samples
@subsection ``Isocaps'' sample
@cindex Surf3
@cindex ContF3
@cindex CutMin
@cindex CutMax
-
@float
- at image{png/cutminmax2, 7cm}
- at caption{Example of ``Isocaps''. @tdref{cutminmax2}}
+ at image{../png/cutminmax2, 7cm}
+ at c @caption{Example of ``Isocaps''. @tdref{cutminmax2}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(61,51,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60);
gr->Light(true);
gr->CutMin = mglPoint(0,-1,-1); gr->CutMax = mglPoint(1,0,1.1);
@@ -2778,10 +3122,10 @@ gr->ContF3(a,'x',-1); gr->ContF3(a,'y',-1);
gr->ContF3(a,'z', 0); gr->ContF3(a,'z',39);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@@ -2792,11 +3136,11 @@ contf3 a 'y' -1
contf3 a 'z' 0
contf3 a 'z' 39
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(61,51,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_cut_box(gr,0.,-1.,-1.,1.,0.,1.1);
@@ -2812,7 +3156,6 @@ mgl_delete_data(a);
@verbatim
a = mgl_create_data_size(61,51,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_cut_box(gr,0.,-1.,-1.,1.,0.,1.1);
@@ -2834,23 +3177,21 @@ gr.Surf3(-1,a);
gr.ContF3(a,"x",-1); gr.ContF3(a,"y",-1);
gr.ContF3(a,"z",0); gr.ContF3(a,"z",39);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
- at node CutOff sample, , ``Isocaps'' sample, 3D plotting samples
+ at node CutOff sample, , Isocaps sample, 3D plotting samples
@subsection CutOff sample
@cindex Surf3
@cindex CutOff
-
@float
- at image{png/surf3_cutoff, 7cm}
- at caption{Example of Surf3 & CutOff. @tdref{surf3_cutoff}}
+ at image{../png/surf3_cutoff, 7cm}
+ at c @caption{Example of Surf3 & CutOff. @tdref{surf3_cutoff}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Alpha(true);
@@ -2859,10 +3200,10 @@ gr->Box();
gr->Surf3(a);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@@ -2870,11 +3211,11 @@ cut '(z>(x+0.5*y-1)^2-1) & (z>(x-0.5*y-1)^2-1)'
box
surf3 a
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_alpha(gr,1);
@@ -2888,7 +3229,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,'-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)',0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_alpha(gr,1)
@@ -2906,12 +3246,10 @@ gr.CutOff("(z>(x+0.5*y-1)^2-1) & (z>(x-0.5*y-1)^2-1)");
gr.Box();
gr.Surf3(a);
@end verbatim
-
-
+ at end ifclear
@c ------------------------------------------------------------------
- at node Dual plotting samples, Additional features, 3D plotting samples, Samples
+ at node Dual plotting samples, Basic features, 3D plotting samples, Samples
@section Dual plotting samples
-
@menu
* SurfC sample::
* SurfA sample::
@@ -2934,47 +3272,44 @@ gr.Surf3(a);
* Crust sample::
* Dots sample::
@end menu
-
@c ------------------------------------------------------------------
@node SurfC sample, SurfA sample, , Dual plotting samples
@subsection SurfC sample
@cindex SurfC
-
@float
- at image{png/surfc, 7cm}
- at caption{Example of SurfC. @tdref{surfc}}
+ at image{../png/surfc, 7cm}
+ at c @caption{Example of SurfC. @tdref{surfc}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40), b(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Box();
gr->SurfC(a,b);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
HMDT b = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -2988,7 +3323,6 @@ a = mgl_create_data_size(50,40,1);
b = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
call mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -3005,23 +3339,21 @@ gr.Rotate(40,60); gr.Light(True);
gr.Box();
gr.SurfC(a,b);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node SurfA sample, TileS sample, SurfC sample, Dual plotting samples
@subsection SurfA sample
@cindex SurfA
-
@float
- at image{png/surfa, 7cm}
- at caption{Example of SurfA. @tdref{surfa}}
+ at image{../png/surfa, 7cm}
+ at c @caption{Example of SurfA. @tdref{surfa}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40), b(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Alpha(true);
@@ -3029,18 +3361,19 @@ gr->Box();
gr->SurfA(a,b);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a, b;
@@ -3048,7 +3381,6 @@ a = mgl_create_data_size(50,40,1);
b = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_alpha(gr,1);
@@ -3063,7 +3395,6 @@ a = mgl_create_data_size(50,40,1);
b = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
call mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_alpha(gr,1);
@@ -3081,36 +3412,35 @@ gr.Rotate(40,60); gr.Light(True); gr.Alpha(True);
gr.Box();
gr.SurfC(a,b);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node TileS sample, Map sample, SurfA sample, Dual plotting samples
- at subsection Tiles sample
+ at subsection TileS sample
@cindex TileS
-
@float
- at image{png/tiles, 7cm}
- at caption{Example of TileS. @tdref{tiles}}
+ at image{../png/tiles, 7cm}
+ at c @caption{Example of TileS. @tdref{tiles}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40), b(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Box();
gr->TileS(a,b);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a, b;
@@ -3118,7 +3448,6 @@ a = mgl_create_data_size(50,40,1);
b = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_box(gr,1);
mgl_tiles(gr,a,b,0);
mgl_delete_data(a); mgl_delete_data(b);
@@ -3130,7 +3459,6 @@ a = mgl_create_data_size(50,40,1);
b = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
call mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_box(gr,1)
call mgl_tiles(gr,a,b,'')
call mgl_delete_data(a)
@@ -3144,28 +3472,25 @@ b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Box();
gr.TileS(a,b);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Map sample, Traj sample, TileS sample, Dual plotting samples
@subsection Map sample
@cindex Map
-
@float
- at image{png/map, 7cm}
- at caption{Example of Map. @tdref{map}}
+ at image{../png/map, 7cm}
+ at c @caption{Example of Map. @tdref{map}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50, 40), b(50, 40);
gr->Puts(mglPoint(0, 0), "\\to", "", -1.4);
gr->Axis(mglPoint(-1,-1,-2),mglPoint(1,1,2));
-
gr->SubPlot(2, 1, 0);
a.Fill("x", gr->Min, gr->Max); b.Fill("y", gr->Min, gr->Max);
gr->Puts(mglPoint(0, 1.1), "\\{x, y\\}", "C", -2); gr->Box();
gr->Map(a, b, "brgk", 0, false);
-
gr->SubPlot(2, 1, 1);
a.Fill("(x^3+y^3)/2", gr->Min, gr->Max);
b.Fill("(x-y)/2", gr->Min, gr->Max);
@@ -3174,19 +3499,18 @@ gr->Box();
gr->Map(a, b, "brgk", 0, false);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@@ -3194,27 +3518,25 @@ fill a '(x^3+y^3)/2'
fill b '(x-y)/2'
map a b 'brgk' 0 0
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
HMDT b = mgl_create_data_size(50,40,1);
mgl_puts_ext(gr, 0.,0.,0., "\\to", "", -1.4, 't');
mgl_set_axis_3d(gr,-1.,-1.,-2.,1.,1.,2.);
-
mgl_subplot(gr, 2, 1, 0);
mgl_data_fill_eq(gr, a, "x", 0, 0);
mgl_data_fill_eq(gr, b, "y", 0, 0);
mgl_puts_ext(gr, 0.,1.1,0., "\\{x, y\\}", "C", -2., 't');
mgl_box(gr,1);
mgl_map(gr, a, b, "brgk", 0, 0);
-
mgl_subplot(gr, 2, 1, 1);
mgl_data_fill_eq(gr, a, "(x^3+y^3)/2", 0, 0);
mgl_data_fill_eq(gr, b, "(x-y)/2", 0, 0);
mgl_puts_ext(gr, 0.,1.1,0., "\\{\\frac{x^3+y^3}{2}, \\frac{x-y}{2}\\}", "C", -2., 't');
mgl_box(gr,1);
mgl_map(gr, a, b, "brgk", 0, 0);
-
mgl_box(gr,1);
mgl_map(gr,a,b,0,0,1);
mgl_delete_data(a); mgl_delete_data(b);
@@ -3226,14 +3548,12 @@ a = mgl_create_data_size(50,40,1);
b = mgl_create_data_size(50,40,1);
call mgl_puts_ext(gr, 0.,0.,0., '\to', '', -1.4, 't');
call mgl_set_axis_3d(gr,-1.,-1.,-2.,1.,1.,2.);
-
call mgl_subplot(gr, 2, 1, 0);
call mgl_data_fill_eq(gr, a, 'x', 0, 0);
call mgl_data_fill_eq(gr, b, 'y', 0, 0);
call mgl_puts_ext(gr, 0.,1.1,0., '\{x, y\}', 'C', -2., 't');
call mgl_box(gr,1);
call mgl_map(gr, a, b, 'brgk', 0, 0);
-
call mgl_subplot(gr, 2, 1, 1);
call mgl_data_fill_eq(gr, a, '(x^3+y^3)/2', 0, 0);
call mgl_data_fill_eq(gr, b, '(x-y)/2', 0, 0);
@@ -3250,30 +3570,27 @@ call mgl_delete_data(b)
a, b = mglData(50,40), mglData(50,40);
gr.Puts(0, 0, 0, "\\to", "", -1.4);
gr.SetRanges(-1,1,-1,1,-2,2);
-
gr.SubPlot(2, 1, 0);
gr.Fill(a, "x"); gr.Fill(b, "y");
gr.Puts(0, 1.1, 0, "\\{x, y\\}", "C", -2);
gr.Box();
gr.Map(a, b, "brgk", 0, 0);
-
gr.SubPlot(2, 1, 1);
gr.Fill(a, "(x^3+y^3)/2"); gr.Fill(b, "(x-y)/2");
gr.Puts(0, 1.1, 0, "\\{\\frac{x^3+y^3}{2}, \\frac{x-y}{2}\\}", "C", -2);
gr.Box();
gr.Map(a, b, "brgk", 0, 0);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Traj sample, Vect sample, Map sample, Dual plotting samples
@subsection Traj sample
@cindex Traj
-
@float
- at image{png/traj, 7cm}
- at caption{Example of Plot. @tdref{traj}}
+ at image{../png/traj, 7cm}
+ at c @caption{Example of Plot. @tdref{traj}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData y(50,3), x(50), y1(50), y2(50);
@@ -3283,12 +3600,12 @@ y.Modify("cos(2*pi*x)",2);
y1.Modify("0.5+0.3*cos(2*pi*x)");
y2.Modify("0.3*sin(2*pi*x)");
x.Fill(-1,1,'x');
-
gr->Box();
gr->Plot(x,y);
gr->Traj(x,y,y1,y2);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new y 50 3
new x 50
@@ -3304,6 +3621,7 @@ box
plot x y
traj x y y1 y2
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT y = mgl_create_data_size(50,3,1);
@@ -3356,28 +3674,26 @@ gr.Box();
gr.Plot(x,y);
gr.Traj(x,y,y1,y2);
@end verbatim
-
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Vect sample, VectL sample, Traj sample, Dual plotting samples
@subsection Vect sample
@cindex Vect
-
@float
- at image{png/vect, 7cm}
- at caption{Example of Vect. @tdref{vect}}
+ at image{../png/vect, 7cm}
+ at c @caption{Example of Vect. @tdref{vect}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(20,30), b(20,30);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Box();
gr->Vect(a,b);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new a 20 30
new b 20 30
@@ -3386,13 +3702,13 @@ modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
box
vect a b
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(20,30,1);
HMDT b = mgl_create_data_size(20,30,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_box(gr,1);
mgl_vect_2d(gr,a,b,0,0.);
mgl_delete_data(a); mgl_delete_data(b);
@@ -3404,7 +3720,6 @@ a = mgl_create_data_size(20,30,1);
b = mgl_create_data_size(20,30,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
call mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_box(gr,1)
call mgl_vect_2d(gr,a,b,'',0.)
call mgl_delete_data(a)
@@ -3418,27 +3733,26 @@ b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Box();
gr.Vect(a,b);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node VectL sample, VectC sample, Vect sample, Dual plotting samples
@subsection VectL sample
@cindex VectL
-
@float
- at image{png/vectl, 7cm}
- at caption{Example of VectL. @tdref{vectl}}
+ at image{../png/vectl, 7cm}
+ at c @caption{Example of VectL. @tdref{vectl}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(20,30), b(20,30);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Box();
gr->VectL(a,b);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new a 20 30
new b 20 30
@@ -3447,6 +3761,7 @@ modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
box
vectl a b
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a, b;
@@ -3454,7 +3769,6 @@ a = mgl_create_data_size(20,30,1);
b = mgl_create_data_size(20,30,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_box(gr,1);
mgl_vectl_2d(gr,a,b,0,0.);
mgl_delete_data(a); mgl_delete_data(b);
@@ -3466,7 +3780,6 @@ a = mgl_create_data_size(20,30,1);
b = mgl_create_data_size(20,30,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
call mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_box(gr,1)
call mgl_vectl_2d(gr,a,b,'',0.)
call mgl_delete_data(a)
@@ -3480,28 +3793,26 @@ b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Box();
gr.VectL(a,b);
@end verbatim
-
-
+ at end ifclear
@c ------------------------------------------------------------------
@node VectC sample, Flow sample, VectL sample, Dual plotting samples
@subsection VectC sample
@cindex VectC
-
@float
- at image{png/vectc, 7cm}
- at caption{Example of VectC. @tdref{vectc}}
+ at image{../png/vectc, 7cm}
+ at c @caption{Example of VectC. @tdref{vectc}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(20,30), b(20,30);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Box();
gr->VectC(a,b);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new a 20 30
new b 20 30
@@ -3510,6 +3821,7 @@ modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
box
vectc a b
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a, b;
@@ -3517,7 +3829,6 @@ a = mgl_create_data_size(20,30,1);
b = mgl_create_data_size(20,30,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_box(gr,1);
mgl_vectc_2d(gr,a,b,0,0.);
mgl_delete_data(a); mgl_delete_data(b);
@@ -3529,7 +3840,6 @@ a = mgl_create_data_size(20,30,1);
b = mgl_create_data_size(20,30,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
call mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_box(gr,1)
call mgl_vectc_2d(gr,a,b,'',0.)
call mgl_delete_data(a)
@@ -3543,28 +3853,26 @@ b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Box();
gr.VectC(a,b);
@end verbatim
-
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Flow sample, Pipe sample, VectC sample, Dual plotting samples
@subsection Flow sample
@cindex Flow
-
@float
- at image{png/flow, 7cm}
- at caption{Example of Flow. @tdref{flow}}
+ at image{../png/flow, 7cm}
+ at c @caption{Example of Flow. @tdref{flow}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(20,30), b(20,30);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Box();
gr->Flow(a,b);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new a 20 30
new b 20 30
@@ -3573,13 +3881,13 @@ modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
box
flow a b
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(20,30,1);
HMDT b = mgl_create_data_size(20,30,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_box(gr,1);
mgl_flow_2d(gr,a,b,0,5,1,0.);
mgl_delete_data(a); mgl_delete_data(b);
@@ -3591,7 +3899,6 @@ a = mgl_create_data_size(20,30,1);
b = mgl_create_data_size(20,30,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
call mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_box(gr,1)
call mgl_flow_2d(gr,a,b,'',5,1,0.)
call mgl_delete_data(a)
@@ -3605,17 +3912,16 @@ b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Box();
gr.Flow(a,b);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Pipe sample, Dew sample, Flow sample, Dual plotting samples
@subsection Pipe sample
@cindex Pipe
-
@float
- at image{png/pipe, 7cm}
- at caption{Example of Pipe. @tdref{pipe}}
+ at image{../png/pipe, 7cm}
+ at c @caption{Example of Pipe. @tdref{pipe}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(20,30), b(20,30);
@@ -3626,6 +3932,7 @@ gr->Box();
gr->Pipe(a,b);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new a 20 30
new b 20 30
@@ -3635,6 +3942,7 @@ light on
box
pipe a b
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(20,30,1);
@@ -3667,17 +3975,16 @@ b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Light(True); gr.Box();
gr.Pipe(a,b);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Dew sample, Surf3C sample, Pipe sample, Dual plotting samples
@subsection Dew sample
@cindex Dew
-
@float
- at image{png/dew, 7cm}
- at caption{Example of Dew. @tdref{dew}}
+ at image{../png/dew, 7cm}
+ at c @caption{Example of Dew. @tdref{dew}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(20,30), b(20,30);
@@ -3688,6 +3995,7 @@ gr->Light(true);
gr->Dew(a,b);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new a 20 30
new b 20 30
@@ -3697,6 +4005,7 @@ box
light on
dew a b
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(20,30,1);
@@ -3729,23 +4038,21 @@ b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Light(True); gr.Box();
gr.Dew(a,b);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Surf3C sample, Surf3A sample, Dew sample, Dual plotting samples
@subsection Surf3C sample
@cindex Surf3C
-
@float
- at image{png/surf3c, 7cm}
- at caption{Example of Surf3C. @tdref{surf3c}}
+ at image{../png/surf3c, 7cm}
+ at c @caption{Example of Surf3C. @tdref{surf3c}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(60,50,40), b(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
b.Modify("1-2*tanh(4*(x+y-1)^2)");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Alpha(true);
@@ -3753,25 +4060,25 @@ gr->Box();
gr->Surf3C(a, b);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(60,50,40);
HMDT b = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
mgl_data_modify(b,"1-2*tanh(4*(x+y-1)^2)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_alpha(gr,1);
@@ -3786,7 +4093,6 @@ a = mgl_create_data_size(60,50,40);
b = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
call mgl_data_modify(b,"1-2*tanh(4*(x+y-1)^2)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_alpha(gr,1)
@@ -3804,24 +4110,21 @@ gr.Rotate(40,60); gr.Light(True); gr.Alpha(True);
gr.Box();
gr.Surf3C(a,b);
@end verbatim
-
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Surf3A sample, Vect 3D sample, Surf3C sample, Dual plotting samples
@subsection Surf3A sample
@cindex Surf3A
-
@float
- at image{png/surf3a, 7cm}
- at caption{Example of Surf3A. @tdref{surf3a}}
+ at image{../png/surf3a, 7cm}
+ at c @caption{Example of Surf3A. @tdref{surf3a}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(60,50,40), b(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
b.Modify("1-2*tanh(4*(x+y-1)^2)");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Alpha(true);
@@ -3829,25 +4132,25 @@ gr->Box();
gr->Surf3A(a, b);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a, b; a = mgl_create_data_size(60,50,40);
b = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
mgl_data_modify(b,"1-2*tanh(4*(x+y-1)^2)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_alpha(gr,1);
@@ -3862,7 +4165,6 @@ a = mgl_create_data_size(60,50,40);
b = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
call mgl_data_modify(b,"1-2*tanh(4*(x+y-1)^2)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_alpha(gr,1)
@@ -3880,17 +4182,16 @@ gr.Rotate(40,60); gr.Light(True); gr.Alpha(True);
gr.Box();
gr.Surf3A(a,b);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Vect 3D sample, VectL 3D sample, Surf3A sample, Dual plotting samples
@subsection Vect 3D sample
@cindex Vect
-
@float
- at image{png/vect3, 7cm}
- at caption{Example of Vect in 3D. @tdref{vect3}}
+ at image{../png/vect3, 7cm}
+ at c @caption{Example of Vect in 3D. @tdref{vect3}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData ex(10,10,10), ey(10,10,10), ez(10,10,10);
@@ -3905,6 +4206,7 @@ gr->Box();
gr->Vect(ex, ey, ez, "bwr");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new ex 10 10 10
new ey 10 10 10
@@ -3912,11 +4214,11 @@ 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'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT ex, ey, ez;
@@ -3929,7 +4231,6 @@ mgl_data_fill_eq(gr, 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)",0,0);
mgl_data_fill_eq(gr, 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)",0,0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
mgl_vect_3d(gr,ex,ey,ez,"bwr");
@@ -3947,7 +4248,6 @@ call mgl_data_fill_eq(gr, 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)',0,0);
call mgl_data_fill_eq(gr, 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)',0,0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1);
call mgl_vect_3d(gr,ex,ey,ez,'bwr')
@@ -3967,17 +4267,16 @@ gr.Fill(ez, "0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - \
gr.Rotate(40,60); gr.Box();
gr.Vect(ex,ey,ez,"bwr");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node VectL 3D sample, VectC 3D sample, Vect 3D sample, Dual plotting samples
@subsection VectL 3D sample
@cindex VectL
-
@float
- at image{png/vectl3, 7cm}
- at caption{Example of VectL in 3D. @tdref{vectl3}}
+ at image{../png/vectl3, 7cm}
+ at c @caption{Example of VectL in 3D. @tdref{vectl3}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData ex(10,10,10), ey(10,10,10), ez(10,10,10);
@@ -3992,6 +4291,7 @@ gr->Box();
gr->VectL(ex, ey, ez, "bwr");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new ex 10 10 10
new ey 10 10 10
@@ -3999,11 +4299,11 @@ 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'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT ex, ey, ez;
@@ -4016,7 +4316,6 @@ mgl_data_fill_eq(gr, 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)",0,0);
mgl_data_fill_eq(gr, 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)",0,0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
mgl_vectl_3d(gr,ex,ey,ez,"bwr");
@@ -4034,7 +4333,6 @@ call mgl_data_fill_eq(gr, 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)',0,0);
call mgl_data_fill_eq(gr, 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)',0,0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1);
call mgl_vectl_3d(gr,ex,ey,ez,'bwr')
@@ -4054,17 +4352,16 @@ gr.Fill(ez, "0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - \
gr.Rotate(40,60); gr.Box();
gr.VectL(ex,ey,ez,"bwr");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node VectC 3D sample, Flow 3D sample, VectL 3D sample, Dual plotting samples
@subsection VectC 3D sample
@cindex VectC
-
@float
- at image{png/vectc3, 7cm}
- at caption{Example of VectC in 3D. @tdref{vectc3}}
+ at image{../png/vectc3, 7cm}
+ at c @caption{Example of VectC in 3D. @tdref{vectc3}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData ex(10,10,10), ey(10,10,10), ez(10,10,10);
@@ -4079,6 +4376,7 @@ gr->Box();
gr->VectC(ex, ey, ez, "bwr");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new ex 10 10 10
new ey 10 10 10
@@ -4086,11 +4384,11 @@ 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'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT ex, ey, ez;
@@ -4103,7 +4401,6 @@ mgl_data_fill_eq(gr, 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)",0,0);
mgl_data_fill_eq(gr, 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)",0,0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
mgl_vectc_3d(gr,ex,ey,ez,"bwr");
@@ -4121,7 +4418,6 @@ call mgl_data_fill_eq(gr, 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)',0,0);
call mgl_data_fill_eq(gr, 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)',0,0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1);
call mgl_vectc_3d(gr,ex,ey,ez,'bwr')
@@ -4141,17 +4437,16 @@ gr.Fill(ez, "0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - \
gr.Rotate(40,60); gr.Box();
gr.VectC(ex,ey,ez,"bwr");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Flow 3D sample, Pipe 3D sample, VectC 3D sample, Dual plotting samples
@subsection Flow 3D sample
@cindex Flow
-
@float
- at image{png/flow3, 7cm}
- at caption{Example of Flow in 3D. @tdref{flow3}}
+ at image{../png/flow3, 7cm}
+ at c @caption{Example of Flow in 3D. @tdref{flow3}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData ex(30,30,30), ey(30,30,30), ez(30,30,30);
@@ -4166,6 +4461,7 @@ gr->Box();
gr->Flow(ex, ey, ez, "bwr");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new ex 30 30 30
new ey 30 30 30
@@ -4173,11 +4469,11 @@ 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'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT ex, ey, ez;
@@ -4190,7 +4486,6 @@ mgl_data_fill_eq(gr, 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)",0,0);
mgl_data_fill_eq(gr, 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)",0,0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
mgl_flow_3d(gr,ex,ey,ez,"bwr",3,1);
@@ -4208,7 +4503,6 @@ call mgl_data_fill_eq(gr, 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)',0,0);
call mgl_data_fill_eq(gr, 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)',0,0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1);
call mgl_flow_3d(gr,ex,ey,ez,'bwr',3,1)
@@ -4228,17 +4522,16 @@ gr.Fill(ez, "0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - \
gr.Rotate(40,60); gr.Box();
gr.Flow(ex,ey,ez,"bwr");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Pipe 3D sample, Crust sample, Flow 3D sample, Dual plotting samples
@subsection Pipe 3D sample
@cindex Pipe
-
@float
- at image{png/pipe3, 7cm}
- at caption{Example of Pipe in 3D. @tdref{pipe3}}
+ at image{../png/pipe3, 7cm}
+ at c @caption{Example of Pipe in 3D. @tdref{pipe3}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData ex(10,10,10), ey(10,10,10), ez(10,10,10);
@@ -4254,6 +4547,7 @@ gr->Box();
gr->Pipe(ex, ey, ez, "bwr");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new ex 10 10 10
new ey 10 10 10
@@ -4261,12 +4555,12 @@ 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'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT ex, ey, ez;
@@ -4279,7 +4573,6 @@ mgl_data_fill_eq(gr, 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)",0,0);
mgl_data_fill_eq(gr, 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)",0,0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -4298,7 +4591,6 @@ call mgl_data_fill_eq(gr, 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)',0,0);
call mgl_data_fill_eq(gr, 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)',0,0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1);
call mgl_box(gr,1);
@@ -4319,17 +4611,16 @@ gr.Fill(ez, "0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - \
gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Pipe(ex,ey,ez,"bwr");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Crust sample, Dots sample, Pipe 3D sample, Dual plotting samples
@subsection Crust sample
@cindex Crust
-
@float
- at image{png/crust, 7cm}
- at caption{Example of Crust. @tdref{crust}}
+ at image{../png/crust, 7cm}
+ at c @caption{Example of Crust. @tdref{crust}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a("hotdogs.pts");
@@ -4340,6 +4631,7 @@ gr->Box();
gr->Crust(a,"p");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
read a 'hotdogs.pts'
norm a -1 1 on
@@ -4348,6 +4640,7 @@ light on
box
crust a 'p'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_file("hotdogs.pts");
@@ -4377,17 +4670,16 @@ gr.Rotate(40,60); gr.Light(True);
gr.Box();
gr.Crust(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Dots sample, , Crust sample, Dual plotting samples
@subsection Dots sample
@cindex Dots
-
@float
- at image{png/dots, 7cm}
- at caption{Example of Dots. @tdref{dots}}
+ at image{../png/dots, 7cm}
+ at c @caption{Example of Dots. @tdref{dots}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a("hotdogs.pts");
@@ -4397,6 +4689,7 @@ gr->Box();
gr->Dots(a,"p");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
read a 'hotdogs.pts'
norm a -1 1 on
@@ -4404,6 +4697,7 @@ rotate 40 60
box
dots a 'p'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_file("hotdogs.pts");
@@ -4431,13 +4725,695 @@ gr.Rotate(40,60); gr.Light(True);
gr.Box();
gr.Dots(a);
@end verbatim
+ at end ifclear
+ at c ------------------------------------------------------------------
+
+ at c ------------------------------------------------------------------
+ at node Basic features, Additional features, Dual plotting samples, Samples
+ at section Basic features
+ at 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::
+ at end menu
+ at c ------------------------------------------------------------------
+ at node 1D plot sample, 2D plot sample, , Basic features
+ at subsection 1D plot sample
+ at cindex Plot
+ at cindex Bars
+ at cindex SubPlot
+ at float
+ at image{../png/sample8, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ code}
+ at verbatim
+mglData y0(50); y0.Modify("sin(pi*(2*x-1))");
+gr->SubPlot(2,2,0);
+gr->Plot(y0); gr->Box();
+
+gr->SubPlot(2,2,1);
+mglData y1(50,2);
+y1.Modify("sin(pi*2*x-pi)"); y1.Modify("cos(pi*2*x-pi)/2",1);
+gr->Plot(y1); gr->Box();
+
+mglData x(50); x.Modify("cos(pi*2*x-pi)");
+gr->Plot(x,y0,"Y+");
+
+gr->Plot(y1.SubData(-1,0),y1.SubData(-1,1),"q|");
+
+gr->SubPlot(2,2,2); gr->Rotate(60,40);
+mglData z(50); z.Modify("2*x-1");
+gr->Plot(x,y0,z); gr->Box();
+
+mglData y2(10,3); y2.Modify("cos(pi*(2*x-1-y))");
+y2.Modify("2*x-1",2);
+gr->Plot(y2.SubData(-1,0),y2.SubData(-1,1),y2.SubData(-1,2),"bo ");
+
+gr->SubPlot(2,2,3); gr->Rotate(60,40);
+gr->Bars(x,y0,z,"ri"); gr->Box();
+ at end verbatim
+ at strong{MGL code}
+ at end ifclear
+ at verbatim
+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
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node 2D plot sample, 3D plot sample, 1D plot sample, Basic features
+ at subsection 2D plot sample
+ at cindex Surf
+ at cindex Dens
+ at cindex Alpha
+ at float
+ at image{../png/sample9, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ code}
+ at verbatim
+gr->Light(true);
+mglData a0(50,40);
+a0.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
+gr->SubPlot(2,2,0); gr->Rotate(60,40);
+gr->Surf(a0); gr->Box();
+
+mglData x(50,40),y(50,40),z(50,40);
+x.Modify("0.8*sin(2*pi*x)*sin(pi*y)");
+y.Modify("0.8*cos(2*pi*x)*sin(pi*y)");
+z.Modify("0.8*cos(pi*y)");
+gr->SubPlot(2,2,1); gr->Rotate(60,40);
+gr->Surf(x,y,z,"BbwrR"); gr->Box();
+
+mglData a1(50,40,3);
+a1.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
+a1.Modify("0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*sin(3*pi*(x*y))",1);
+a1.Modify("0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",2);
+gr->SubPlot(2,2,2); gr->Rotate(60,40);
+gr->Alpha(true);
+gr->Surf(a1); gr->Box();
+
+gr->SubPlot(2,2,3); gr->Rotate(60,40);
+gr->Dens(a1); gr->Box();
+ at end verbatim
+ at strong{MGL code}
+ at end ifclear
+ at verbatim
+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
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node 3D plot sample, Line styles sample, 2D plot sample, Basic features
+ at subsection 3D plot sample
+ at cindex Surf
+ at cindex Dens
+ at cindex Alpha
+ at float
+ at image{../png/sampleb, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ code}
+ at verbatim
+gr->Alpha(true); gr->Light(true); gr->Light(0,mglPoint(0,0,1));
+mglData a(30,30,30), b(30,30,30);
+a.Modify("exp(-16*((z-0.5)^2+(y-0.5)^2)/(1+4*x^2))");
+b.Modify("16*((z-0.5)^2+(y-0.5)^2)*(x)/(1+4*x^2)");
+gr->CAxis(0,1);
+
+gr->SubPlot(2,2,0); gr->Rotate(40,60);
+gr->Surf3(a,"wgk"); gr->Box();
+gr->SubPlot(2,2,1); gr->Rotate(40,60);
+gr->DensA(a); gr->Box(); gr->Axis();
+gr->SubPlot(2,2,2); gr->Rotate(40,60);
+gr->Cloud(a); gr->Box();
+gr->SubPlot(2,2,3); gr->Rotate(40,60);
+gr->Surf3A(b,a,"q"); gr->Box();
+ at end verbatim
+ at strong{MGL code}
+ at end ifclear
+ at verbatim
+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
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node Line styles sample, Arrow styles sample, 3D plot sample, Basic features
+ at subsection Line styles sample
+ at cindex Mark
+ at cindex Line
+ at float
+ at image{../png/sample5, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ code}
+ at verbatim
+float d,x1,x2,x0,y=0.95;
+d=0.3, x0=0.2, x1=0.5, x2=0.6;
+gr->Line(mglPoint(x0,1-0*d),mglPoint(x1,1-0*d),"k-"); gr->Puts(mglPoint(x2,y-0*d),"Solid '-'","rL");
+gr->Line(mglPoint(x0,1-1*d),mglPoint(x1,1-1*d),"k|"); gr->Puts(mglPoint(x2,y-1*d),"Long Dash '|'","rL");
+gr->Line(mglPoint(x0,1-2*d),mglPoint(x1,1-2*d),"k;"); gr->Puts(mglPoint(x2,y-2*d),"Dash ';'","rL");
+gr->Line(mglPoint(x0,1-3*d),mglPoint(x1,1-3*d),"k="); gr->Puts(mglPoint(x2,y-3*d),"Small dash '='","rL");
+gr->Line(mglPoint(x0,1-4*d),mglPoint(x1,1-4*d),"kj"); gr->Puts(mglPoint(x2,y-4*d),"Dash-dot 'j'","rL");
+gr->Line(mglPoint(x0,1-5*d),mglPoint(x1,1-5*d),"ki"); gr->Puts(mglPoint(x2,y-5*d),"Small dash-dot 'i'","rL");
+gr->Line(mglPoint(x0,1-6*d),mglPoint(x1,1-6*d),"k:"); gr->Puts(mglPoint(x2,y-6*d),"Dots ':'","rL");
+gr->Line(mglPoint(x0,1-7*d),mglPoint(x1,1-7*d),"k "); gr->Puts(mglPoint(x2,y-7*d),"None ' '","rL");
+
+d=0.25; x1=-1; x0=-0.8; y = -0.05;
+gr->Mark(mglPoint(x1,5*d),'.'); gr->Puts(mglPoint(x0,y+5*d),"'.'","rL");
+gr->Mark(mglPoint(x1,4*d),'+'); gr->Puts(mglPoint(x0,y+4*d),"'+'","rL");
+gr->Mark(mglPoint(x1,3*d),'x'); gr->Puts(mglPoint(x0,y+3*d),"'x'","rL");
+gr->Mark(mglPoint(x1,2*d),'*'); gr->Puts(mglPoint(x0,y+2*d),"'*'","rL");
+gr->Mark(mglPoint(x1,d),'s'); gr->Puts(mglPoint(x0,y+d),"'s'","rL");
+gr->Mark(mglPoint(x1,0),'d'); gr->Puts(mglPoint(x0,y),"'d'","rL");
+gr->Mark(mglPoint(x1,-d,0),'o'); gr->Puts(mglPoint(x0,y-d),"'o'","rL");
+gr->Mark(mglPoint(x1,-2*d,0),'^'); gr->Puts(mglPoint(x0,y-2*d),"'\\^'","rL");
+gr->Mark(mglPoint(x1,-3*d,0),'v'); gr->Puts(mglPoint(x0,y-3*d),"'v'","rL");
+gr->Mark(mglPoint(x1,-4*d,0),'<'); gr->Puts(mglPoint(x0,y-4*d),"'<'","rL");
+gr->Mark(mglPoint(x1,-5*d,0),'>'); gr->Puts(mglPoint(x0,y-5*d),"'>'","rL");
+
+d=0.25; x1=-0.5; x0=-0.3; y = -0.05;
+gr->Mark(mglPoint(x1,5*d),'C'); gr->Puts(mglPoint(x0,y+5*d),"'\\#.'","rL");
+gr->Mark(mglPoint(x1,4*d),'P'); gr->Puts(mglPoint(x0,y+4*d),"'\\#+'","rL");
+gr->Mark(mglPoint(x1,3*d),'X'); gr->Puts(mglPoint(x0,y+3*d),"'\\#x'","rL");
+gr->Mark(mglPoint(x1,2*d),'Y'); gr->Puts(mglPoint(x0,y+2*d),"'\\#*'","rL");
+gr->Mark(mglPoint(x1,d),'S'); gr->Puts(mglPoint(x0,y+d),"'\\#s'","rL");
+gr->Mark(mglPoint(x1,0),'D'); gr->Puts(mglPoint(x0,y),"'\\#d'","rL");
+gr->Mark(mglPoint(x1,-d,0),'O'); gr->Puts(mglPoint(x0,y-d),"'\\#o'","rL");
+gr->Mark(mglPoint(x1,-2*d,0),'T'); gr->Puts(mglPoint(x0,y-2*d),"'\\#\\^'","rL");
+gr->Mark(mglPoint(x1,-3*d,0),'V'); gr->Puts(mglPoint(x0,y-3*d),"'\\#v'","rL");
+gr->Mark(mglPoint(x1,-4*d,0),'L'); gr->Puts(mglPoint(x0,y-4*d),"'\\#<'","rL");
+gr->Mark(mglPoint(x1,-5*d,0),'R'); gr->Puts(mglPoint(x0,y-5*d),"'\\#>'","rL");
+ at end verbatim
+ at strong{MGL code}
+ at end ifclear
+ at verbatim
+NOT AVAILABLE
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node Arrow styles sample, Text styles sample, Line styles sample, Basic features
+ at subsection Arrow styles sample
+ at cindex Line
+ at float
+ at image{../png/sampled, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ code}
+ at verbatim
+float a=0.1,b=0.4,c=0.5;
+gr->Line(mglPoint(a,1),mglPoint(b,1),"k-A"); gr->Puts(mglPoint(c,1),"Style 'A' or 'A\\_'","rL");
+gr->Line(mglPoint(a,0.8),mglPoint(b,0.8),"k-V"); gr->Puts(mglPoint(c,0.8),"Style 'V' or 'V\\_'","rL");
+gr->Line(mglPoint(a,0.6),mglPoint(b,0.6),"k-K"); gr->Puts(mglPoint(c,0.6),"Style 'K' or 'K\\_'","rL");
+gr->Line(mglPoint(a,0.4),mglPoint(b,0.4),"k-I"); gr->Puts(mglPoint(c,0.4),"Style 'I' or 'I\\_'","rL");
+gr->Line(mglPoint(a,0.2),mglPoint(b,0.2),"k-D"); gr->Puts(mglPoint(c,0.2),"Style 'D' or 'D\\_'","rL");
+gr->Line(mglPoint(a,0),mglPoint(b,0),"k-S"); gr->Puts(mglPoint(c,0),"Style 'S' or 'S\\_'","rL");
+gr->Line(mglPoint(a,-0.2),mglPoint(b,-0.2),"k-O"); gr->Puts(mglPoint(c,-0.2),"Style 'O' or 'O\\_'","rL");
+gr->Line(mglPoint(a,-0.4),mglPoint(b,-0.4),"k-T"); gr->Puts(mglPoint(c,-0.4),"Style 'T' or 'T\\_'","rL");
+gr->Line(mglPoint(a,-0.6),mglPoint(b,-0.6),"k-_"); gr->Puts(mglPoint(c,-0.6),"Style '\\_' or none","rL");
+gr->Line(mglPoint(a,-0.8),mglPoint(b,-0.8),"k-AS"); gr->Puts(mglPoint(c,-0.8),"Style 'AS'","rL");
+gr->Line(mglPoint(a,-1),mglPoint(b,-1),"k-_A"); gr->Puts(mglPoint(c,-1),"Style '\\_A'","rL");
+
+a=-1; b=-0.7; c=-0.6;
+gr->Line(mglPoint(a,1),mglPoint(b,1),"kAA"); gr->Puts(mglPoint(c,1),"Style 'AA'","rL");
+gr->Line(mglPoint(a,0.8),mglPoint(b,0.8),"kVV"); gr->Puts(mglPoint(c,0.8),"Style 'VV'","rL");
+gr->Line(mglPoint(a,0.6),mglPoint(b,0.6),"kKK"); gr->Puts(mglPoint(c,0.6),"Style 'KK'","rL");
+gr->Line(mglPoint(a,0.4),mglPoint(b,0.4),"kII"); gr->Puts(mglPoint(c,0.4),"Style 'II'","rL");
+gr->Line(mglPoint(a,0.2),mglPoint(b,0.2),"kDD"); gr->Puts(mglPoint(c,0.2),"Style 'DD'","rL");
+gr->Line(mglPoint(a,0),mglPoint(b,0),"kSS"); gr->Puts(mglPoint(c,0),"Style 'SS'","rL");
+gr->Line(mglPoint(a,-0.2),mglPoint(b,-0.2),"kOO"); gr->Puts(mglPoint(c,-0.2),"Style 'OO'","rL");
+gr->Line(mglPoint(a,-0.4),mglPoint(b,-0.4),"kTT"); gr->Puts(mglPoint(c,-0.4),"Style 'TT'","rL");
+gr->Line(mglPoint(a,-0.6),mglPoint(b,-0.6),"k-__"); gr->Puts(mglPoint(c,-0.6),"Style '\\_\\_'","rL");
+gr->Line(mglPoint(a,-0.8),mglPoint(b,-0.8),"k-VA"); gr->Puts(mglPoint(c,-0.8),"Style 'VA'","rL");
+gr->Line(mglPoint(a,-1),mglPoint(b,-1),"k-AV"); gr->Puts(mglPoint(c,-1),"Style 'AV'","rL");
+ at end verbatim
+ at strong{MGL code}
+ at end ifclear
+ at verbatim
+NOT AVAILABLE
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node Text styles sample, TeX parsing sample, Arrow styles sample, Basic features
+ at subsection Text styles sample
+ at cindex Puts
+ at float
+ at image{../png/sample4, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ code}
+ at verbatim
+gr->Putsw(mglPoint(0,1),L"Text can be in ASCII and in Unicode");
+gr->Puts(mglPoint(0,0.6),"It can be \\wire{wire}, \\big{big} or #r{colored}");
+gr->Puts(mglPoint(0,0.2),"One can change style in string: "
+ "\\b{bold}, \\i{italic, \\b{both}}");
+gr->Puts(mglPoint(0,-0.2),"Easy to \\a{overline} or "
+ "\\u{underline}");
+gr->Puts(mglPoint(0,-0.6),"Easy to change indexes ^{up} _{down} @{center}");
+gr->Puts(mglPoint(0,-1),"It parse TeX: \\int \\alpha \\cdot "
+ "\\sqrt3{sin(\\pi x)^2 + \\gamma_{i_k}} dx");
+ at end verbatim
+ at strong{MGL code}
+ at end ifclear
+ at verbatim
+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'
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node TeX parsing sample, Font faces sample, Text styles sample, Basic features
+ at subsection TeX parsing sample
+ at cindex Puts
+ at float
+ at image{../png/samplee, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ code}
+ at verbatim
+gr->Puts(mglPoint(0), "\\sqrt{\\frac{\\alpha^{\\gamma^2}+"
+ "\\overset 1{\\big\\infty}}{\\sqrt3{2+b}}}", 0, -4);
+ at end verbatim
+ at strong{MGL code}
+ at end ifclear
+ at verbatim
+text 0 0 '\sqrt{\frac{\alpha^{\gamma^2}+\overset 1{\big\infty}}{\sqrt3{2+b}}}' '' -4
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node Font faces sample, Colors sample, TeX parsing sample, Basic features
+ at subsection Font faces sample
+ at cindex Puts
+ at float
+ at image{../png/fonts, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ code}
+ at verbatim
+float h=1.1, d=0.25;
+gr->LoadFont("STIX"); gr->Puts(mglPoint(0,h), "default font (STIX)");
+gr->LoadFont("adventor"); gr->Puts(mglPoint(0,h-d), "adventor font");
+gr->LoadFont("bonum"); gr->Puts(mglPoint(0,h-2*d), "bonum font");
+gr->LoadFont("chorus"); gr->Puts(mglPoint(0,h-3*d), "chorus font");
+gr->LoadFont("cursor"); gr->Puts(mglPoint(0,h-4*d), "cursor font");
+gr->LoadFont("heros"); gr->Puts(mglPoint(0,h-5*d), "heros font");
+gr->LoadFont("heroscn"); gr->Puts(mglPoint(0,h-6*d), "heroscn font");
+gr->LoadFont("pagella"); gr->Puts(mglPoint(0,h-7*d), "pagella font");
+gr->LoadFont("schola"); gr->Puts(mglPoint(0,h-8*d), "schola font");
+gr->LoadFont("termes"); gr->Puts(mglPoint(0,h-9*d), "termes font");
+ at end verbatim
+ at strong{MGL code}
+ at end ifclear
+ at verbatim
+NOT AVAILABLE
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node Colors sample, Color schemes sample, Font faces sample, Basic features
+ at subsection Colors sample
+ at float
+ at image{../png/colors, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ code}
+ at verbatim
+//#LENUQ
+gr->FaceZ(-1, -1, 0, 0.4, 0.3, "L#"); gr->Puts(mglPoint(-0.8,-0.9), "L", "C:w", -1.4);
+gr->FaceZ(-0.6, -1, 0, 0.4, 0.3, "E#"); gr->Puts(mglPoint(-0.4,-0.9), "E", "C:w", -1.4);
+gr->FaceZ(-0.2, -1, 0, 0.4, 0.3, "N#"); gr->Puts(mglPoint(0, -0.9), "N", "C:w", -1.4);
+gr->FaceZ(0.2, -1, 0, 0.4, 0.3, "U#"); gr->Puts(mglPoint(0.4,-0.9), "U", "C:w", -1.4);
+gr->FaceZ(0.6, -1, 0, 0.4, 0.3, "Q#"); gr->Puts(mglPoint(0.8,-0.9), "Q", "C:w", -1.4);
+//#lenuq
+gr->FaceZ(-1, -0.7, 0, 0.4, 0.3, "l#"); gr->Puts(mglPoint(-0.8,-0.6), "l", "C:k", -1.4);
+gr->FaceZ(-0.6, -0.7, 0, 0.4, 0.3, "e#"); gr->Puts(mglPoint(-0.4,-0.6), "e", "C:k", -1.4);
+gr->FaceZ(-0.2, -0.7, 0, 0.4, 0.3, "n#"); gr->Puts(mglPoint(0, -0.6), "n", "C:k", -1.4);
+gr->FaceZ(0.2, -0.7, 0, 0.4, 0.3, "u#"); gr->Puts(mglPoint(0.4,-0.6), "u", "C:k", -1.4);
+gr->FaceZ(0.6, -0.7, 0, 0.4, 0.3, "q#"); gr->Puts(mglPoint(0.8,-0.6), "q", "C:k", -1.4);
+//#CMYkP
+gr->FaceZ(-1, -0.4, 0, 0.4, 0.3, "C#"); gr->Puts(mglPoint(-0.8,-0.3), "C", "C:w", -1.4);
+gr->FaceZ(-0.6, -0.4, 0, 0.4, 0.3, "M#"); gr->Puts(mglPoint(-0.4,-0.3), "M", "C:w", -1.4);
+gr->FaceZ(-0.2, -0.4, 0, 0.4, 0.3, "Y#"); gr->Puts(mglPoint(0, -0.3), "Y", "C:w", -1.4);
+gr->FaceZ(0.2, -0.4, 0, 0.4, 0.3, "k#"); gr->Puts(mglPoint(0.4,-0.3), "k", "C:w", -1.4);
+gr->FaceZ(0.6, -0.4, 0, 0.4, 0.3, "P#"); gr->Puts(mglPoint(0.8,-0.3), "P", "C:w", -1.4);
+//#cmywp
+gr->FaceZ(-1, -0.1, 0, 0.4, 0.3, "c#"); gr->Puts(mglPoint(-0.8, 0), "c", "C:k", -1.4);
+gr->FaceZ(-0.6, -0.1, 0, 0.4, 0.3, "m#"); gr->Puts(mglPoint(-0.4, 0), "m", "C:k", -1.4);
+gr->FaceZ(-0.2, -0.1, 0, 0.4, 0.3, "y#"); gr->Puts(mglPoint(0, 0), "y", "C:k", -1.4);
+gr->FaceZ(0.2, -0.1, 0, 0.4, 0.3, "w#"); gr->Puts(mglPoint(0.4, 0), "w", "C:k", -1.4);
+gr->FaceZ(0.6, -0.1, 0, 0.4, 0.3, "p#"); gr->Puts(mglPoint(0.8, 0), "p", "C:k", -1.4);
+//#BGRHW
+gr->FaceZ(-1, 0.2, 0, 0.4, 0.3, "B#"); gr->Puts(mglPoint(-0.8, 0.3), "B", "C:w", -1.4);
+gr->FaceZ(-0.6, 0.2, 0, 0.4, 0.3, "G#"); gr->Puts(mglPoint(-0.4, 0.3), "G", "C:w", -1.4);
+gr->FaceZ(-0.2, 0.2, 0, 0.4, 0.3, "R#"); gr->Puts(mglPoint(0, 0.3), "R", "C:w", -1.4);
+gr->FaceZ(0.2, 0.2, 0, 0.4, 0.3, "H#"); gr->Puts(mglPoint(0.4, 0.3), "H", "C:w", -1.4);
+gr->FaceZ(0.6, 0.2, 0, 0.4, 0.3, "W#"); gr->Puts(mglPoint(0.8, 0.3), "W", "C:w", -1.4);
+//#bgrhw
+gr->FaceZ(-1, 0.2, 0, 0.4, 0.3, "b#"); gr->Puts(mglPoint(-0.8, 0.6), "b", "C:k", -1.4);
+gr->FaceZ(-0.6, 0.5, 0, 0.4, 0.3, "g#"); gr->Puts(mglPoint(-0.4, 0.6), "g", "C:k", -1.4);
+gr->FaceZ(-0.2, 0.2, 0, 0.4, 0.3, "r#"); gr->Puts(mglPoint(0, 0.6), "r", "C:k", -1.4);
+gr->FaceZ(0.2, 0.2, 0, 0.4, 0.3, "h#"); gr->Puts(mglPoint(0.4, 0.6), "h", "C:k", -1.4);
+gr->FaceZ(0.6, 0.2, 0, 0.4, 0.3, "w#"); gr->Puts(mglPoint(0.8, 0.6), "w", "C:k", -1.4);
+//#brighted
+gr->FaceZ(-1, 0.8, 0, 0.4, 0.3, "r1#"); gr->Puts(mglPoint(-0.8, 0.9), "r1", "C:w", -1.4);
+gr->FaceZ(-0.6, 0.8, 0, 0.4, 0.3, "r3#"); gr->Puts(mglPoint(-0.4, 0.9), "r3", "C:w", -1.4);
+gr->FaceZ(-0.2, 0.8, 0, 0.4, 0.3, "r5#"); gr->Puts(mglPoint(0, 0.9), "r5", "C:k", -1.4);
+gr->FaceZ(0.2, 0.8, 0, 0.4, 0.3, "r7#"); gr->Puts(mglPoint(0.4, 0.9), "r7", "C:k", -1.4);
+gr->FaceZ(0.6, 0.8, 0, 0.4, 0.3, "r9#"); gr->Puts(mglPoint(0.8, 0.9), "r9", "C:k", -1.4);
+ at end verbatim
+ at strong{MGL code}
+ at end ifclear
+ at verbatim
+#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'
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node Color schemes sample, Normal transparency, Colors sample, Basic features
+ at subsection Color schemes sample
+ at cindex Colorbar
+ at float
+ at image{../png/color_schemes, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ code}
+ at verbatim
+mglData a(256,2); a.Fill(-1,1);
+gr->SubPlot(2,10,0,0.2); gr->Dens(a,"kw", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "kw", "C", -8);
+gr->SubPlot(2,10,1,0.2); gr->Dens(a,"wk", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "wk", "C", -8);
+gr->SubPlot(2,10,2,0.2); gr->Dens(a,"kHCcw", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "kHCcw", "C", -8);
+gr->SubPlot(2,10,3,0.2); gr->Dens(a,"kBbcw", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "kBbcw", "C", -8);
+gr->SubPlot(2,10,4,0.2); gr->Dens(a,"kRryw", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "kRryw", "C", -8);
+gr->SubPlot(2,10,5,0.2); gr->Dens(a,"kGgew", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "kGgew", "C", -8);
+gr->SubPlot(2,10,6,0.2); gr->Dens(a,"BbwrR", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "BbwrR", "C", -8);
+gr->SubPlot(2,10,7,0.2); gr->Dens(a,"BbwgG", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "BbwgG", "C", -8);
+gr->SubPlot(2,10,8,0.2); gr->Dens(a,"GgwmM", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "GgwmM", "C", -8);
+gr->SubPlot(2,10,9,0.2); gr->Dens(a,"UuwqR", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "UuwqR", "C", -8);
+gr->SubPlot(2,10,10,0.2); gr->Dens(a,"QqwcC", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "QqwcC", "C", -8);
+gr->SubPlot(2,10,11,0.2); gr->Dens(a,"CcwyY", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "CcwyY", "C", -8);
+gr->SubPlot(2,10,12,0.2); gr->Dens(a,"bcwyr", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "bcwyr", "C", -8);
+gr->SubPlot(2,10,13,0.2); gr->Dens(a,"bwr", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "bwr", "C", -8);
+gr->SubPlot(2,10,14,0.2); gr->Dens(a,"BbcyrR", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "BbcyrR", "C", -8);
+gr->SubPlot(2,10,15,0.2); gr->Dens(a,"UbcyqR", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "UbcyqR", "C", -8);
+gr->SubPlot(2,10,16,0.2); gr->Dens(a,"BbcwyrR", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "BbcwyrR", "C", -8);
+gr->SubPlot(2,10,17,0.2); gr->Dens(a,"bcyr", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "bcyr", "C", -8);
+gr->SubPlot(2,10,18,0.2); gr->Dens(a,"BbcyrR|", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "BbcyrR|", "C", -8);
+gr->SubPlot(2,10,19,0.2); gr->Dens(a,"bgr", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "bgr", "C", -8);
+ at end verbatim
+ at strong{MGL code}
+ at end ifclear
+ at verbatim
+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
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node Normal transparency, Glass-like transparency, Color schemes sample, Basic features
+ at subsection Normal transparency
+ at cindex TranspType
+ at float
+ at image{../png/type0, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ code}
+ at verbatim
+gr->Alpha(true); gr->Light(true);
+mglData a(50,40);
+a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
+gr->TranspType = 0; gr->Clf();
+gr->SubPlot(2,2,0); gr->Rotate(40,60); gr->Surf(a); gr->Box();
+gr->SubPlot(2,2,1); gr->Rotate(40,60); gr->Dens(a); gr->Box();
+gr->SubPlot(2,2,2); gr->Rotate(40,60); gr->Cont(a); gr->Box();
+gr->SubPlot(2,2,3); gr->Rotate(40,60); gr->Axial(a); gr->Box();
+ at end verbatim
+ at strong{MGL code}
+ at end ifclear
+ at verbatim
+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
+ at end verbatim
@c ------------------------------------------------------------------
+ at node Glass-like transparency, Lamp-like transparency, Normal transparency, Basic features
+ at subsection Glass-like transparency
+ at cindex TranspType
+ at float
+ at image{../png/type1, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ code}
+ at verbatim
+gr->Alpha(true); gr->Light(true);
+mglData a(50,40);
+a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
+
+gr->TranspType = 1; gr->Clf();
+gr->SubPlot(2,2,0); gr->Rotate(40,60); gr->Surf(a); gr->Box();
+gr->SubPlot(2,2,1); gr->Rotate(40,60); gr->Dens(a); gr->Box();
+gr->SubPlot(2,2,2); gr->Rotate(40,60); gr->Cont(a); gr->Box();
+gr->SubPlot(2,2,3); gr->Rotate(40,60); gr->Axial(a); gr->Box();
+ at end verbatim
+ at strong{MGL code}
+ at end ifclear
+ at verbatim
+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
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node Lamp-like transparency, , Glass-like transparency, Basic features
+ at subsection Lamp-like transparency
+ at cindex TranspType
+ at float
+ at image{../png/type2, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ code}
+ at verbatim
+gr->Alpha(true); gr->Light(true);
+mglData a(50,40);
+a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
+
+gr->TranspType = 2; gr->Clf();
+gr->SubPlot(2,2,0); gr->Rotate(40,60); gr->Surf(a); gr->Box();
+gr->SubPlot(2,2,1); gr->Rotate(40,60); gr->Dens(a); gr->Box();
+gr->SubPlot(2,2,2); gr->Rotate(40,60); gr->Cont(a); gr->Box();
+gr->SubPlot(2,2,3); gr->Rotate(40,60); gr->Axial(a); gr->Box();
+ at end verbatim
+ at strong{MGL code}
+ at end ifclear
+ at verbatim
+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
+ at end verbatim
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@node Additional features, Advanced features, Dual plotting samples, Samples
@section Additional features
-
@menu
* Legend sample::
* Adding mesh sample::
@@ -4451,19 +5427,17 @@ gr.Dots(a);
* Drops sample::
* Molecules drawing sample::
@end menu
-
@c ------------------------------------------------------------------
@node Legend sample, Adding mesh sample, , Additional features
@subsection Legend sample
@cindex Plot
@cindex Legend
@cindex AddLegend
-
@float
- at image{png/legend, 7cm}
- at caption{Example of Legend usage. @tdref{legend}}
+ at image{../png/legend, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData f(50,3);
@@ -4478,12 +5452,12 @@ gr->AddLegend("sin(\\pi \\sqrt{\\a x})","r+");
gr->Legend();
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@@ -4493,6 +5467,7 @@ addlegend 'sin(\pi x)' 'g*'
addlegend 'sin(\pi \sqrt{\a x})' 'r+'
legend
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT f = mgl_create_data_size(50,3,1);
@@ -4516,7 +5491,6 @@ f = mgl_create_data_size(50,3,1)
call mgl_data_modify(f,'sin(2*pi*x*x)',0)
call mgl_data_modify(f,'sin(2*pi*x)',1)
call mgl_data_modify(f,'sin(2*pi*sqrt(x))',2)
-
call mgl_set_axis(gr, 0.,-1.,0., 1.,1.,1., 0.,0.,0.)
call mgl_box(gr,1)
call mgl_plot(gr,f,'')
@@ -4537,7 +5511,7 @@ gr.AddLegend("sin(\\pi x)","g*");
gr.AddLegend("sin(\\pi\\sqrt{\\a x})","r+");
gr.Legend();
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Adding mesh sample, Surf & Cont sample, Legend sample, Additional features
@subsection Adding mesh sample
@@ -4546,19 +5520,17 @@ gr.Legend();
@cindex Dens
@cindex Cont
@cindex Axial
-
@float
- at image{png/samplea, 7cm}
- at caption{Example of adding mesh. @tdref{samplea}}
+ at image{../png/samplea, 7cm}
+ at c @caption{Example of adding mesh. @tdref{samplea}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
gr->Light(true);
gr->Alpha(true);
-
gr->SubPlot(2,2,0); gr->Rotate(40,60);
gr->Surf(a,"BbcyrR#"); gr->Box();
gr->SubPlot(2,2,1); gr->Rotate(40,60);
@@ -4569,13 +5541,12 @@ gr->SubPlot(2,2,3); gr->Rotate(40,60);
gr->Axial(a,"BbcyrR#"); gr->Box();
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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#'
@@ -4593,13 +5564,13 @@ rotate 40 60
axial a 'BbcyrR#'
box
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
mgl_set_alpha(gr,1);
mgl_set_light(gr,1);
-
mgl_subplot(gr,2,2,0); mgl_rotate(gr,40.,60.,0.);
mgl_surf(gr,a,"BbcyrR#"); mgl_box(gr,1);
mgl_subplot(gr,2,2,1); mgl_rotate(gr,40.,60.,0.);
@@ -4619,7 +5590,6 @@ a = mgl_create_data_size(50,40,1)
call mgl_data_modify(a,'0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))',0)
call mgl_set_alpha(gr,1)
call mgl_set_light(gr,1)
-
call mgl_subplot(gr,2,2,0)
call mgl_rotate(gr,40.,60.,0.)
call mgl_surf(gr,a,'BbcyrR#')
@@ -4652,24 +5622,21 @@ gr.Rotate(40,60); gr.Cont(a,"BbcyrR#"); gr.Box();
gr.SubPlot(2,2,3);
gr.Rotate(40,60); gr.Axial(a,"BbcyrR#"); gr.Box();
@end verbatim
-
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Surf & Cont sample, Flow & Dens sample, Adding mesh sample, Additional features
@subsection Surf & Cont sample
@cindex Surf
@cindex Cont
-
@float
- at image{png/surf_cont_y, 7cm}
- at caption{Example of Surf & Cont. @tdref{surf_cont_y}}
+ at image{../png/surf_cont_y, 7cm}
+ at c @caption{Example of Surf & Cont. @tdref{surf_cont_y}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Box();
@@ -4677,21 +5644,21 @@ gr->Surf(a);
gr->Cont(a,"y");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -4706,7 +5673,6 @@ real zero, nan
zero = 0; nan = zero/zero
a = mgl_create_data_size(50,40,1)
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0)
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -4722,18 +5688,17 @@ gr.Rotate(40,60); gr.Light(True);
gr.Box();
gr.Surf(a); gr.Cont(a,"y");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Flow & Dens sample, Several light sample, Surf & Cont sample, Additional features
@subsection Flow & Dens sample
@cindex Flow
@cindex Dens
-
@float
- at image{png/flow_dens, 7cm}
- at caption{Example of Flow & Dens. @tdref{flow_dens}}
+ at image{../png/flow_dens, 7cm}
+ at c @caption{Example of Flow & Dens. @tdref{flow_dens}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40), b(50,40), d(a);
@@ -4744,6 +5709,7 @@ gr->Box();
gr->Flow(a,b,"br"); gr->Dens(d,"BbcyrR");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new a 50 40
new b 50 40
@@ -4755,6 +5721,7 @@ box
flow a b 'br'
dens d 'BbcyrR'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a, b, d;
@@ -4764,7 +5731,6 @@ d = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
mgl_data_modify(d,"sqrt(v^2+w^2)",a,b);
-
mgl_box(gr,1);
mgl_flow_2d(gr,a,b,"br",5,1,0.);
mgl_dens(gr,d,"BbcyrR",-1.);
@@ -4779,7 +5745,6 @@ d = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
call mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
call mgl_data_modify(d,"sqrt(v^2+w^2)",a,b);
-
call mgl_box(gr,1)
call mgl_flow_2d(gr,a,b,'br',5,1,0.)
call mgl_dens(gr,d,'BbcyrR',-1.);
@@ -4796,23 +5761,21 @@ d.Modify("sqrt(v^2+w^2)",a,b);
gr.Box();
gr.Flow(a,b,"br"); gr.Dens(d,"BbcyrR");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Several light sample, Mirrored surface sample, Flow & Dens sample, Additional features
@subsection Several light sample
@cindex Surf
@cindex Light
-
@float
- at image{png/several_light, 7cm}
- at caption{Example of Surf with several light. @tdref{several_light}}
+ at image{../png/several_light, 7cm}
+ at c @caption{Example of Surf with several light. @tdref{several_light}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Light(1,mglPoint(0,1,0),'c');
@@ -4822,30 +5785,28 @@ gr->Box();
gr->Surf(a,"h");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_add_light_rgb(gr,1,0.,1.,0.,1, 0.,1.,1.,0.5);
mgl_add_light_rgb(gr,2,1.,0.,0.,1, 1.,1.,0.,0.5);
mgl_add_light_rgb(gr,3,0.,-1.,0.,1, 1.,0.,1.,0.5);
-
mgl_box(gr,1);
mgl_surf(gr,a,"h");
mgl_delete_data(a);
@@ -4855,13 +5816,11 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_add_light_rgb(gr,1,0.,1.,0.,1, 0.,1.,1.,0.5)
call mgl_add_light_rgb(gr,2,1.,0.,0.,1, 1.,1.,0.,0.5)
call mgl_add_light_rgb(gr,3,0.,-1.,0.,1, 1.,0.,1.,0.5)
-
call mgl_box(gr,1)
call mgl_surf(gr,a,'h')
call mgl_delete_data(a)
@@ -4877,33 +5836,31 @@ gr.AddLight(3,0,-1,0,"m");
gr.Box();
gr.Surf(a,"h")
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Mirrored surface sample, Cont with labels sample, Several light sample, Additional features
@subsection Mirrored surface sample
@cindex Surf
-
@float
- at image{png/mirror, 7cm}
- at caption{Example of mirrored surface. @tdref{mirror}}
+ at image{../png/mirror, 7cm}
+ at c @caption{Example of mirrored surface. @tdref{mirror}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(30,40),x(30),y1(40),y2(40);
a.Modify("pi*(1-2*x)*exp(-4*y^2-4*(2*x-1)^2)");
x.Fill(-1,1); y1.Fill(0,1); y2.Fill(0,-1);
-
gr->Rotate(40,60);
gr->Light(true);
gr->Box();
gr->Surf(x,y1,a,"r"); gr->Surf(x,y2,a,"b");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@@ -4917,13 +5874,13 @@ 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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a,x,y1,y2;
@@ -4935,7 +5892,6 @@ mgl_data_modify(a,"pi*(1-2*x)*exp(-4*y^2-4*(2*x-1)^2)",0);
mgl_data_fill(x,-1.,1.,'x');
mgl_data_fill(y1,0.,1.,'x');
mgl_data_fill(y2,0.,-1.,'x');
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -4954,7 +5910,6 @@ call mgl_data_modify(a,'pi*(1-2*x)*exp(-4*y^2-4*(2*x-1)^2)',0)
call mgl_data_fill(x,-1.,1.,'x')
call mgl_data_fill(y1,0.,1.,'x')
call mgl_data_fill(y2,0.,-1.,'x')
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -4973,17 +5928,16 @@ x.Fill(-1,1); y1.Fill(0,1); y2.Fill(0,-1);
gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Surf(x,y1,a,"r"); gr.Surf(x,y2,a,"b");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Cont with labels sample, Ternary plot sample, Mirrored surface sample, Additional features
@subsection Cont with labels sample
@cindex Cont
-
@float
- at image{png/contt, 7cm}
- at caption{Example of Cont with labels. @tdref{contt}}
+ at image{../png/contt, 7cm}
+ at c @caption{Example of Cont with labels. @tdref{contt}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(50,40);
@@ -4992,12 +5946,14 @@ gr->Box();
gr->Cont(a,"BbcyrRt");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
@@ -5011,7 +5967,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_box(gr,1)
call mgl_cont(gr,a,'BbcyrRt',7,0)
call mgl_delete_data(a)
@@ -5023,18 +5978,16 @@ a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Box();
gr.Cont(a,"BbcyrRt");
@end verbatim
-
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Ternary plot sample, Coloring by coordinates sample, Cont with labels sample, Additional features
@subsection Ternary plot sample
@cindex Ternary
-
@float
- at image{png/ternary, 7cm}
- at caption{Example of Ternary plot. @tdref{ternary}}
+ at image{../png/ternary, 7cm}
+ at c @caption{Example of Ternary plot. @tdref{ternary}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData x(50),y(50),rx(10),ry(10), a(20,30);
@@ -5042,7 +5995,6 @@ a.Modify("4*x*y");
x.Modify("0.25*(1+cos(2*pi*x))");
y.Modify("0.25*(1+sin(2*pi*x))");
rx.Modify("rnd"); ry.Modify("(1-v)*rnd",rx);
-
gr->Text(mglPoint(-0.8,1.3), "Ternary plot (x+y+t=1)");
gr->Ternary(true);
gr->Plot(x,y,"r2");
@@ -5055,6 +6007,7 @@ gr->Label('y',"y comp.");
gr->Label('t',"t comp.");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new rx 10
new ry 10
@@ -5078,6 +6031,7 @@ xlabel 'x comp.'
ylabel 'y comp.'
tlabel 't comp.'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT x,y,rx,ry,a;
@@ -5091,13 +6045,11 @@ mgl_data_modify(y,"0.25*(1+sin(2*pi*x))",0);
mgl_data_modify(rx,"rnd",0);
mgl_data_modify_vw(ry,"(1-v)*rnd",rx,0);
mgl_data_modify(a,"4*x*y",0);
-
mgl_puts_ext(gr,-0.8,1.3,0.,"Ternary plot (x+y+t=1)","C",-1.4,'t');
mgl_set_ternary(gr,1);
mgl_plot_xy(gr,x,y,"r2");
mgl_plot_xy(gr,rx,ry,"q^ ");
mgl_cont(gr,a,"",7,0.);
-
mgl_line(gr,0.5,0.,0.,0.,0.75,0.,"g2",2);
mgl_axis(gr,"xyz");
mgl_axis_grid(gr,"xyz","B:");
@@ -5121,13 +6073,11 @@ call mgl_data_modify(y,'0.25*(1+sin(2*pi*x))',0)
call mgl_data_modify(rx,'rnd',0)
call mgl_data_modify_vw(ry,'(1-v)*rnd',rx,rx)
call mgl_data_modify(a,'4*x*y',0)
-
call mgl_puts_ext(gr,-0.8,1.3,0.,'Ternary plot (x+y+t=1)','C',-1.4,'t')
call mgl_set_ternary(gr,1)
call mgl_plot_xy(gr,x,y,'r2')
call mgl_plot_xy(gr,rx,ry,'q^ ')
call mgl_cont(gr,a,'',7,0.)
-
call mgl_line(gr,0.5,0.,0.,0.,0.75,0.,'g2',2)
call mgl_axis(gr,'xyz')
call mgl_axis_grid(gr,'xyz','B:')
@@ -5155,40 +6105,38 @@ gr.Label("x","x comp.");
gr.Label("y","y comp.");
gr.Label("t","t comp.");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Coloring by coordinates sample, Drops sample, Ternary plot sample, Additional features
@subsection Coloring by coordinates sample
@cindex Surf3
-
@float
- at image{png/surf3_rgbd, 7cm}
- at caption{Example of Surf3 colored by coordinates. @tdref{surf3_rgbd}}
+ at image{../png/surf3_rgbd, 7cm}
+ at c @caption{Example of Surf3 colored by coordinates. @tdref{surf3_rgbd}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60);
gr->Box();
gr->Surf3(a,"bgrd");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
mgl_surf3(gr,a,"bgrd",3);
@@ -5199,7 +6147,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1)
call mgl_surf3(gr,a,'bgrd',3)
@@ -5212,17 +6159,16 @@ a.Modify("-2*((2*x-1)^2+(2*y-1)^2+(2*z-1)^4-(2*z-1)^2-0.1)");
gr.Rotate(40,60); gr.Box();
gr.Surf3(a,"bgrd");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Drops sample, Molecules drawing sample, Coloring by coordinates sample, Additional features
@subsection Drops sample
@cindex Drop
-
@float
- at image{png/drops, 7cm}
- at caption{Example of Drop(s). @tdref{drops}}
+ at image{../png/drops, 7cm}
+ at c @caption{Example of Drop(s). @tdref{drops}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
gr->Light(true);
@@ -5241,6 +6187,7 @@ gr->Ball(mglPoint(1,0,1),'k');
gr->Line(mglPoint(-1,0,1),mglPoint(1,0,1),"b");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
light on
text -1 1.2 'sh=0'
@@ -5256,12 +6203,12 @@ 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'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
mgl_set_light(gr,1);
@@ -5311,22 +6258,20 @@ gr.Ball(-1,0,1,"k"); gr.Ball(-0.33,0,1,"k");
gr.Ball(0.33,0,1,"k"); gr.Ball(1,0,1,"k");
gr.Line(-1,0,1,1,0,1,"b");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Molecules drawing sample, , Drops sample, Additional features
@subsection Molecules drawing sample
@cindex Drop
@cindex Sphere
-
@float
- at image{png/molecule, 7cm}
- at caption{Example of molecules drawing. @tdref{molecule}}
+ at image{../png/molecule, 7cm}
+ at c @caption{Example of molecules drawing. @tdref{molecule}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
gr->Alpha(true); gr->Light(true);
-
gr->SubPlot(2,2,0);
gr->Text(mglPoint(0,1.2),"Methane, CH_4",0,-3); gr->Rotate(60,120);
gr->Sphere(mglPoint(0,0,0),0.25,"k");
@@ -5338,7 +6283,6 @@ gr->Drop(mglPoint(0,0,0),mglPoint(0.47,0.82,-0.33),0.35,"h",1,2);
gr->Sphere(mglPoint(0.33,0.57,-0.23),0.25,"g");
gr->Drop(mglPoint(0,0,0),mglPoint(0.47,-0.82,-0.33),0.35,"h",1,2);
gr->Sphere(mglPoint(0.33,-0.57,-0.23),0.25,"g");
-
gr->SubPlot(2,2,1);
gr->Text(mglPoint(0,1.2),"Water, H{_2}O",0,-3); gr->Rotate(60,100);
gr->Sphere(mglPoint(0,0,0),0.25,"r");
@@ -5346,14 +6290,12 @@ gr->Drop(mglPoint(0,0,0),mglPoint(0.3,0.5,0),0.3,"m",1,2);
gr->Sphere(mglPoint(0.3,0.5,0),0.25,"g");
gr->Drop(mglPoint(0,0,0),mglPoint(0.3,-0.5,0),0.3,"m",1,2);
gr->Sphere(mglPoint(0.3,-0.5,0),0.25,"g");
-
gr->SubPlot(2,2,2);
gr->Text(mglPoint(0,1.2),"Oxygen, O_2",0,-3); gr->Rotate(60,120);
gr->Drop(mglPoint(0,0.5,0),mglPoint(0,-0.3,0),0.3,"m",1,2);
gr->Sphere(mglPoint(0,0.5,0),0.25,"r");
gr->Drop(mglPoint(0,-0.5,0),mglPoint(0,0.3,0),0.3,"m",1,2);
gr->Sphere(mglPoint(0,-0.5,0),0.25,"r");
-
gr->SubPlot(2,2,3);
gr->Text(mglPoint(0,1.2),"Ammonia, NH_3",0,-3); gr->Rotate(60,120);
gr->Sphere(mglPoint(0,0,0),0.25,"b");
@@ -5365,10 +6307,10 @@ gr->Drop(mglPoint(0,0,0),mglPoint(-0.65,0,0),0.32,"n",1,2);
gr->Sphere(mglPoint(-0.65,0,0),0.25,"g");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
alpha on
light on
-
subplot 2 2 0
text 0 1.2 'Methane, CH_4' '' -3
rotate 60 120
@@ -5381,7 +6323,6 @@ 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
@@ -5390,7 +6331,6 @@ 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
@@ -5398,7 +6338,6 @@ 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
@@ -5410,24 +6349,9 @@ 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'
@end verbatim
- at c @strong{Pure C code}
- at c @verbatim
- at c TO BE DONE
- at c @end verbatim
- at c @strong{Fortran code}
- at c @verbatim
- at c TO BE DONE
- at c @end verbatim
- at c @strong{Python}
- at c @verbatim
- at c TO BE DONE
- at c @end verbatim
-
@c ------------------------------------------------------------------
@node Advanced features, , Additional features, Samples
@section Advanced features
-
- at c ------------------------------------------------------------------
@menu
* Curvelinear coorinates sample::
* 2-axes sample::
@@ -5443,38 +6367,34 @@ sphere -0.65 0 0 0.25 'g'
* Manual ticks sample::
* ColumnPlot sample::
* StickPlot sample::
+* Stereo image sample::
@end menu
-
+ at c ------------------------------------------------------------------
@node Curvelinear coorinates sample, 2-axes sample, , Advanced features
@subsection Curvelinear coorinates sample
@cindex Axis
-
@float
- at image{png/sample3, 7cm}
- at caption{Example of curvelinear coorinates usage. @tdref{sample3}}
+ at image{../png/sample3, 7cm}
+ at c @caption{Example of curvelinear coorinates usage. @tdref{sample3}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
gr->Org = mglPoint(-1,1,-1);
-
gr->SubPlot(2,2,0); gr->Rotate(60,40);
gr->Line(mglPoint(-1,0.5,0),mglPoint(1,0.5,0),"r2",100);
gr->Axis(); gr->Grid();
gr->Text(mglPoint(0,1.3,1),"Cartesian");
-
gr->SubPlot(2,2,1); gr->Rotate(60,40);
gr->SetFunc("y*sin(pi*x)","y*cos(pi*x)");
gr->Line(mglPoint(-1,0.5,0),mglPoint(1,0.5,0),"r2",100);
gr->Axis(); gr->Grid();
gr->Text(mglPoint(0,1.3,1),"Cylindrical");
-
gr->SubPlot(2,2,2); gr->Rotate(60,40);
gr->SetFunc("2*y*x","y*y - x*x");
gr->Line(mglPoint(-1,0.5,0),mglPoint(1,0.5,0),"r2",100);
gr->Axis(); gr->Grid();
gr->Text(mglPoint(0,1.3,1),"Parabolic");
-
gr->SubPlot(2,2,3); gr->Rotate(60,40);
gr->SetFunc("y*sin(pi*x)","y*cos(pi*x)","x+z");
gr->Line(mglPoint(-1,0.5,0),mglPoint(1,0.5,0),"r2",100);
@@ -5483,16 +6403,15 @@ gr->Text(mglPoint(0,1.3,1),"Spiral");
gr->Axis(0,0,0); // set to default Cartesian
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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)' ''
@@ -5500,7 +6419,6 @@ 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' ''
@@ -5508,7 +6426,6 @@ 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'
@@ -5518,6 +6435,7 @@ grid
text 0 1.3 1 'Spiral'
axis '' '' '' # set to default Cartesian
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
mgl_set_origin(gr,-1,1,-1);
@@ -5525,19 +6443,16 @@ mgl_subplot(gr,2,2,0); mgl_rotate(gr,60,40,0);
mgl_line(gr,-1,0.5,0,1,0.5,0,"r2",100);
mgl_axis(gr,"xyz"); mgl_axis_grid(gr,"xyz","B");
mgl_text(gr,0,1.3,1,"Cartesian");
-
mgl_subplot(gr,2,2,1); mgl_rotate(gr,60,40,0);
mgl_set_func(gr,"y*sin(pi*x)","y*cos(pi*x)",0);
mgl_line(gr,-1,0.5,0,1,0.5,0,"r2",100);
mgl_axis(gr,"xyz"); mgl_axis_grid(gr,"xyz","B");
mgl_text(gr,0,1.3,1,"Cylindrical");
-
mgl_subplot(gr,2,2,2); mgl_rotate(gr,60,40,0);
mgl_set_func(gr,"2*y*x","y*y - x*x","");
mgl_line(gr,-1,0.5,0,1,0.5,0,"r2",100);
mgl_axis(gr,"xyz"); mgl_axis_grid(gr,"xyz","B");
mgl_text(gr,0,1.3,1,"Parabolic");
-
mgl_subplot(gr,2,2,3); mgl_rotate(gr,60,40,0);
mgl_set_func(gr,"y*sin(pi*x)","y*cos(pi*x)","x+z");
mgl_line(gr,-1,0.5,0,1,0.5,0,"r2",100);
@@ -5548,14 +6463,12 @@ mgl_set_func(gr,0,0,0); /* set to default Cartesian */
@strong{Fortran code}
@verbatim
call mgl_set_origin(gr,-1.,1.,-1.)
-
call mgl_subplot(gr,2,2,0)
call mgl_rotate(gr,60.,40.,0.)
call mgl_line(gr,-1.,0.5,0.,1.,0.5,0.,'r2',100)
call mgl_axis(gr,'xyz')
call mgl_axis_grid(gr,'xyz','B')
call mgl_text(gr,0.,1.3,1.,'Cartesian')
-
call mgl_subplot(gr,2,2,1)
call mgl_rotate(gr,60.,40.,0.)
call mgl_set_func(gr,'y*sin(pi*x)','y*cos(pi*x)','')
@@ -5563,7 +6476,6 @@ call mgl_line(gr,-1.,0.5,0.,1.,0.5,0.,'r2',100)
call mgl_axis(gr,'xyz')
call mgl_axis_grid(gr,'xyz','B')
call mgl_text(gr,0.,1.3,1.,'Cylindrical')
-
call mgl_subplot(gr,2,2,2)
call mgl_rotate(gr,60.,40.,0.)
call mgl_set_func(gr,'2*y*x','y*y - x*x','')
@@ -5571,7 +6483,6 @@ call mgl_line(gr,-1.,0.5,0.,1.,0.5,0.,'r2',100)
call mgl_axis(gr,'xyz')
call mgl_axis_grid(gr,'xyz','B')
call mgl_text(gr,0.,1.3,1.,"Parabolic")
-
call mgl_subplot(gr,2,2,3)
call mgl_rotate(gr,60.,40.,0.)
call mgl_set_func(gr,'y*sin(pi*x)','y*cos(pi*x)','x+z')
@@ -5584,24 +6495,20 @@ call mgl_set_func(gr,'','','') ! set to default Cartesian
@strong{Python}
@verbatim
gr.SetOrigin(-1,1,-1);
-
gr.SubPlot(2,2,0); gr.Rotate(60,40);
gr.Line(-1,0.5,0,1,0.5,0,"r2",100);
gr.Axis(); gr.Grid();
gr.Puts(0,1.3,1,"Gartesian","rC",-1.5);
-
gr.SubPlot(2,2,1); gr.Rotate(60,40);
gr.SetFunc("y*sin(pi*x)","y*cos(pi*x)");
gr.Line(-1,0.5,0,1,0.5,0,"r2",100);
gr.Axis(); gr.Grid();
gr.Puts(0,1.3,1,"Cylindrical","rC",-1.5);
-
gr.SubPlot(2,2,2); gr.Rotate(60,40);
gr.SetFunc("2*y*x","y*y-x*x");
gr.Line(-1,0.5,0,1,0.5,0,"r2",100);
gr.Axis(); gr.Grid();
gr.Puts(0,1.3,1,"Parabolic","rC",-1.5);
-
gr.SubPlot(2,2,3); gr.Rotate(60,40);
gr.SetFunc("y*sin(pi*x)","y*cos(pi*x)","x+z");
gr.Line(-1,0.5,0,1,0.5,0,"r2",100);
@@ -5609,17 +6516,16 @@ gr.Axis(); gr.Grid();
gr.Puts(0,1.3,1,"Spiral","rC",-1.5);
gr.SetFunc("",""); # set to default Gartesian
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node 2-axes sample, Semi-log sample, Curvelinear coorinates sample, Advanced features
@subsection 2-axes sample
@cindex Axis
-
@float
- at image{png/2_axis, 7cm}
- at caption{Example of 2 axes on the plot. @tdref{2_axis}}
+ at image{../png/2_axis, 7cm}
+ at c @caption{Example of 2 axes on the plot. @tdref{2_axis}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData y1(50), y2(50);
@@ -5632,6 +6538,7 @@ gr->Axis(); gr->Label('y',"axis 2",0);
gr->Stem(y2,"r");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new y1 50
new y2 50
@@ -5648,6 +6555,7 @@ axis
ylabel 'axis 2' 0
stem y2 'r'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT y1 = mgl_create_data_size(50,1,1);
@@ -5659,7 +6567,6 @@ mgl_set_origin(gr,-1.,-1.,-1.);
mgl_axis(gr,"xyz");
mgl_label_ext(gr,'y',"axis 1",0,-1.4,0.);
mgl_plot(gr,y1,"b");
-
mgl_set_axis_2d(gr,0.,0.,1.,1.);
mgl_set_origin(gr,1.,1.,1.);
mgl_axis(gr,"xyz");
@@ -5678,7 +6585,6 @@ call mgl_set_origin(gr,-1.,-1.,-1.)
call mgl_axis(gr,'xyz')
call mgl_label_ext(gr,'y','axis 1',0,-1.4,0.)
call mgl_plot(gr,y1,'b')
-
call mgl_set_axis_2d(gr,0.,0.,1.,1.)
call mgl_set_origin(gr,1.,1.,1.)
call mgl_axis(gr,'xyz')
@@ -5692,49 +6598,44 @@ y1.Modify("0.3*sin(2*pi*x)"); y2.Modify("0.5+0.3*cos(2*pi*x)");
gr.SetRanges(-1,1,-1,1); gr.SetOrigin(-1,-1);
gr.Axis(); gr.Label("y","axis 1",0);
gr.Plot(y1,"b");
-
gr.SetRanges(0,1,0,1); gr.SetOrigin(1,1);
gr.Axis(); gr.Label("y","axis 2",0);
gr.Stem(y2,"r");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Semi-log sample, Log-log sample, 2-axes sample, Advanced features
@subsection Semi-log sample
@cindex Axis
@cindex SetTicks
@cindex Plot
-
@float
- at image{png/semilog, 7cm}
- at caption{Example of semi-log plot. @tdref{semilog}}
+ at image{../png/semilog, 7cm}
+ at c @caption{Example of semi-log plot. @tdref{semilog}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData x(2000), y(2000);
x.Modify("0.01/(x+10^(-5))"); y.Modify("sin(1/v)",x);
-
gr->Axis(mglPoint(0.01,-1),mglPoint(1000,1),mglPoint(0.01,-1));
gr->SetFunc("lg(x)",0); gr->SetTicks('x',0);
-
gr->Box();
gr->Plot(x,y,"b2");
gr->Axis(); gr->Grid("xy","g");
gr->Label('x',"x",0); gr->Label('y', "y = sin 1/x",0);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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'
@@ -5742,17 +6643,16 @@ xlabel 'x' 0
ylabel 'y = sin 1/x' 0
box
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT x = mgl_create_data_size(2000,1,1);
HMDT y = mgl_create_data_size(2000,1,1);
mgl_data_modify(x,"0.01/(x+10^(-5))",0);
mgl_data_modify_vw(y,"sin(1/v)",x,0);
-
mgl_set_axis(gr,0.01,-1.,0.,1000.,1.,0.,0.01,-1.,0.);
mgl_set_func(gr,"lg(x)",0,0);
mgl_set_ticks(gr,0.,-5.,-5.);
-
mgl_box(gr,1);
mgl_plot_xy(gr,x,y,"b2");
mgl_axis(gr,"xy"); mgl_axis_grid(gr,"xy","g");
@@ -5767,11 +6667,9 @@ x = mgl_create_data_size(2000,1,1)
y = mgl_create_data_size(2000,1,1)
call mgl_data_modify(x,'0.01/(x+10^(-5))',0)
call mgl_data_modify_vw(y,'sin(1/v)',x,x)
-
call mgl_set_axis(gr,0.01,-1.,0.,1000.,1.,0.,0.01,-1.,0.)
call mgl_set_func(gr,'lg(x)','','')
call mgl_set_ticks(gr,0.,-5.,-5.)
-
call mgl_box(gr,1)
call mgl_plot_xy(gr,x,y,'b2')
call mgl_axis(gr,'xy')
@@ -5785,45 +6683,41 @@ call mgl_delete_data(y)
@verbatim
TO BE DONE
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Log-log sample, Fitting sample, Semi-log sample, Advanced features
@subsection Log-log sample
@cindex Axis
@cindex SetTicks
@cindex Plot
-
@float
- at image{png/loglog, 7cm}
- at caption{Example of log-log plot. @tdref{loglog}}
+ at image{../png/loglog, 7cm}
+ at c @caption{Example of log-log plot. @tdref{loglog}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData x(100), y(100);
x.Modify("pow(10,6*x-3)"); y.Modify("sqrt(1+v^2)",x);
-
gr->Axis(mglPoint(0.001,0.1),mglPoint(1000,1000),mglPoint(0.001,0.1));
gr->SetFunc("lg(x)","lg(y)");
gr->SetTicks('x',0); gr->SetTicks('y',0);
-
gr->Box();
gr->Plot(x,y,"b2");
gr->Axis(); gr->Grid("xy","g;");
gr->Label('x',"x",0); gr->Label('y', "y=\\sqrt{1+x^2}",0);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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;'
@@ -5831,17 +6725,16 @@ xlabel 'x' 0
ylabel 'y=\sqrt{1+x^2}' 0
box
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT x = mgl_create_data_size(100,1,1);
HMDT y = mgl_create_data_size(100,1,1);
mgl_data_modify(x,"pow(10,6*x-3)",0);
mgl_data_modify_vw(y,"sqrt(1+v^2)",x,0);
-
mgl_set_axis(gr,0.001,0.1,0.,1000.,1000.,0.,0.001,0.1,0.);
mgl_set_func(gr,"lg(x)","lg(y)",0);
mgl_set_ticks(gr,0.,0.,-5.);
-
mgl_box(gr,1);
mgl_plot_xy(gr,x,y,"b2");
mgl_axis(gr,"xy"); mgl_axis_grid(gr,"xy","g;");
@@ -5856,11 +6749,9 @@ x = mgl_create_data_size(100,1,1)
y = mgl_create_data_size(100,1,1)
call mgl_data_modify(x,'pow(10,6*x-3)',0)
call mgl_data_modify_vw(y,'sqrt(1+v^2)',x,x)
-
call mgl_set_axis(gr,0.001,0.1,0.,1000.,1000.,0.,0.001,0.1,0.)
call mgl_set_func(gr,'lg(x)','lg(y)','')
call mgl_set_ticks(gr,0.,0.,-5.)
-
call mgl_box(gr,1)
call mgl_plot_xy(gr,x,y,'b2')
call mgl_axis(gr,'xy')
@@ -5881,28 +6772,25 @@ gr.Box(); gr.Plot(x,y,"b2");
gr.Axis(); gr.Grid("xy","g;");
gr.Label("x","x",0); gr.Label("y","y=\\sqrt{1+x^2}",0);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Fitting sample, Envelop sample, Log-log sample, Advanced features
@subsection Fitting sample
@cindex Fit
@cindex PutsFit
-
@float
- at image{png/fit, 7cm}
- at caption{Example of nonlinear fitting. @tdref{fit}}
+ at image{../png/fit, 7cm}
+ at c @caption{Example of nonlinear fitting. @tdref{fit}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData rnd(100), in(100), res;
rnd.Fill("0.4*rnd+0.1+sin(2*pi*x)", gr->Min, gr->Max);
in.Fill("0.3+sin(2*pi*x)", gr->Min, gr->Max);
-
gr->Axis(mglPoint(-1,-2), mglPoint(1,2));
gr->Plot(rnd, ". ");
gr->Box();
-
float ini[3] = {1,1,3};
gr->Fit(res, rnd, "a+b*sin(c*x)", "abc", ini);
gr->Plot(res, "r");
@@ -5912,16 +6800,15 @@ gr->PutsFit(mglPoint(0, -1.8), "y = ", "C:r", -1);
gr->Text(mglPoint(0, 2.2), "initial: y = 0.3+sin(2\\pi x)", "C:b", -1);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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'
@@ -5930,6 +6817,7 @@ 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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT rnd,in,res;
@@ -5942,7 +6830,6 @@ mgl_data_modify(in,"0.3+sin(4*pi*x)",0);
mgl_set_axis_2d(gr,-1.,-2.,1.,2.);
mgl_plot(gr,rnd,". ");
mgl_box(gr,1);
-
mgl_fit_1(gr,res,rnd,"a+b*sin(c*x)","abc",ini);
mgl_plot(gr,res,"r"); mgl_plot(gr,in,"b");
mgl_puts_ext(gr,-1.,-1.3,0.,"fitted:","L:r",-1.,'t');
@@ -5962,7 +6849,6 @@ call mgl_data_modify(in,"0.3+sin(4*pi*x)",0);
call mgl_set_axis_2d(gr,-1.,-2.,1.,2.);
call mgl_plot(gr,rnd,". ");
call mgl_box(gr,1);
-
call mgl_fit_1(gr,res,rnd,"a+b*sin(c*x)","abc",ini);
call mgl_plot(gr,res,"r");
call mgl_plot(gr,in,"b");
@@ -5978,7 +6864,6 @@ In.Modify("0.3+sin(4*pi*x)");
gr.SetRanges(-1,1,-2,2);
gr.Plot(rnd,". ");
gr.Box();
-
ini[0], ini[1], ini[2] = 1, 1, 3;
gr.Fit(res,rnd,"a+b*sin(c*x)","abc",ini);
gr.Plot(res,"r"); gr.Plot(In,"b");
@@ -5986,17 +6871,16 @@ gr.Puts(-1,-1.3,0,"fitted:","L:r",-1);
gr.PutsFit(0,-1.8,0,"y = ","C:r",-1);
gr.Puts(0,2.2,0,"initial: y = 0.3+sin(2\\pi x)","C:b",-1);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Envelop sample, Sew sample, Fitting sample, Advanced features
@subsection Envelop sample
@cindex Envelop
-
@float
- at image{png/envelop, 7cm}
- at caption{Example of envelop reconstruction.}@c @tdref{envelop}}
+ at image{../png/envelop, 7cm}
+ at c @caption{Example of envelop reconstruction.}@c @tdref{envelop}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(1000);
@@ -6007,6 +6891,7 @@ gr->Plot(a, "r");
gr->Axis();
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new a 1000
fill a 'exp(-8*x^2)*sin(10*pi*x)'
@@ -6015,6 +6900,7 @@ envelop a
plot a 'r'
axis
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(1000,1,1);
@@ -6043,17 +6929,16 @@ a.Envelop("x");
gr.Plot(a,"r");
gr.Axis();
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Sew sample, STFA sample, Envelop sample, Advanced features
@subsection Sew sample
@cindex Sew
-
@float
- at image{png/sew, 7cm}
- at caption{Example of phase ``sewing''.}@c @tdref{sew}}
+ at image{../png/sew, 7cm}
+ at c @caption{Example of phase ``sewing''.}@c @tdref{sew}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(100, 100);
@@ -6067,6 +6952,7 @@ gr->Surf(a, "r");
gr->Box();
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new a 100 100
modify a 'mod((y^2-(1-x)^2)/2,0.1)'
@@ -6078,6 +6964,7 @@ sew a 'xy' 0.1
surf a 'r'
box
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(100,100,1);
@@ -6085,7 +6972,6 @@ mgl_data_modify(a, "mod((y^2-(1-x)^2)/2, 0.1)", 0);
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_alpha(gr,1);
-
mgl_surf(gr,a,"b");
mgl_data_sew(a,"xy",0.1);
mgl_surf(gr,a,"r");
@@ -6099,7 +6985,6 @@ call mgl_data_modify(a, 'mod((y^2-(1-x)^2)/2, 0.1)', 0)
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_alpha(gr,1)
-
call mgl_surf(gr,a,'b')
call mgl_data_sew(a,'xy',0.1)
call mgl_surf(gr,a,'r')
@@ -6115,17 +7000,16 @@ a.Sew("xy", 0.1);
gr.Surf(a, "r");
gr.Box();
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node STFA sample, PDE sample, Sew sample, Advanced features
@subsection STFA sample
@cindex STFA
-
@float
- at image{png/stfa, 7cm}
- at caption{Example of Short Time Fourier Analysis.}@c @tdref{stfa}}
+ at image{../png/stfa, 7cm}
+ at c @caption{Example of Short Time Fourier Analysis.}@c @tdref{stfa}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a(2000), b(2000);
@@ -6136,7 +7020,6 @@ gr->SubPlot(1, 2, 0);
gr->Plot(a);
gr->Axis();
gr->Label('x', "\\i t");
-
gr->SubPlot(1, 2, 1);
gr->STFA(a, b, 64);
gr->Axis();
@@ -6144,6 +7027,7 @@ gr->Label('x', "\\i t");
gr->Label('y', "\\omega", 0);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
new a 2000
new b 2000
@@ -6159,6 +7043,7 @@ axis
ylabel '\omega' 0
xlabel '\i t'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data_size(2000,1,1);
@@ -6169,7 +7054,6 @@ mgl_subplot(gr,1,2,0);
mgl_plot(gr,a,"");
mgl_axis(gr,"xy");
mgl_label(gr,'x', "\\i t");
-
mgl_subplot(gr,1,2,1);
mgl_stfa(gr,a,b,64,"",0.);
mgl_axis(gr,"xy");
@@ -6187,7 +7071,6 @@ call mgl_subplot(gr,1,2,0)
call mgl_plot(gr,a,'')
call mgl_axis(gr,'xy')
call mgl_label(gr,'x', '\i t')
-
call mgl_subplot(gr,1,2,1)
call mgl_stfa(gr,a,b,64,'',0.)
call mgl_axis(gr,'xy')
@@ -6203,25 +7086,23 @@ gr.SubPlot(1, 2, 0);
gr.Plot(a);
gr.Axis();
gr.Label('x', "\\i t");
-
gr.SubPlot(1, 2, 1);
gr.STFA(a, b, 64);
gr.Axis();
gr.Label('x', "\\i t");
gr.Label('y', "\\omega", 0);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node PDE sample, Beam tracing sample, STFA sample, Advanced features
@subsection PDE sample
@cindex mglPDE
@cindex mglRay
-
@float
- at image{png/pde, 7cm}
- at caption{Example of Partial Differential Eduation solving.}@c @tdref{pde}}
+ at image{../png/pde, 7cm}
+ at c @caption{Example of Partial Differential Eduation solving.}@c @tdref{pde}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData a,re(128),im(128);
@@ -6240,23 +7121,23 @@ gr->Title("\\r{Equation:} ik_0\\partial_zu + \\Delta u + x\\cdot u + \
i \\frac{x+z}{2}\\cdot u = 0", "iC", -1.5);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
HMDT a = mgl_create_data();
@@ -6265,7 +7146,6 @@ HMDT im = mgl_create_data_size(128,1,1);
mgl_axis(gr,"xyz");
mgl_label(gr,'x', "\\i x");
mgl_label(gr,'y', "\\i z");
-
mgl_data_fill_eq(gr,re,"exp(-48*(x+0.7)^2)", 0, 0);
a = mgl_pde_solve(gr, "p^2+q^2-x-1+i*0.5*(z+x)*(z>-x)", re, im, 0.01, 30.);
mgl_data_transpose(a, "yxz");
@@ -6288,7 +7168,6 @@ im = mgl_create_data_size(128,1,1)
call mgl_axis(gr,'xyz')
call mgl_label(gr,'x', '\i x')
call mgl_label(gr,'y', '\i z')
-
call mgl_data_fill_eq(gr,re,'exp(-48*(x+0.7)^2)', 0, 0)
a = mgl_pde_solve(gr, 'p^2+q^2-x-1+i*0.5*(z+x)*(z>-x)', re, im, 0.01, 30.)
call mgl_data_transpose(a, 'yxz')
@@ -6319,18 +7198,17 @@ gr.Puts(0, 0.85, 0., "absorption: (x+z)/2 for x+z>0");
gr.Title("\\r{Equation:} ik_0\\partial_zu + \\Delta u + x\\cdot u + \
i \\frac{x+z}{2}\\cdot u = 0", "iC", -1.5);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Beam tracing sample, Parser sample, PDE sample, Advanced features
@subsection Beam tracing sample
@cindex mglQO2d
@cindex mglRay
-
@float
- at image{png/qo2d, 7cm}
- at caption{Example of ray and beam tracing. Compare with @ref{PDE sample}.}@c @tdref{qo2d}}
+ at image{../png/qo2d, 7cm}
+ at c @caption{Example of ray and beam tracing. Compare with @ref{PDE sample}.}@c @tdref{qo2d}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
mglData r, xx, yy, a, im(128), re(128);
@@ -6349,6 +7227,7 @@ gr->Puts(mglPoint(0.7, -0.05), "central ray");
gr->Title("Beam and ray tracing", "C", -1.5);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
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
@@ -6356,14 +7235,12 @@ 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|'
@@ -6371,6 +7248,7 @@ 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
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
const char *ham = "p^2+q^2-x-1+i*0.5*(y+x)*(y>-x)";
@@ -6384,7 +7262,6 @@ mgl_plot_xy(gr, xx, yy, "k");
mgl_axis(gr,"xyz");
mgl_label(gr,'x',"\\i x");
mgl_label(gr,'y',"\\i z");
-
mgl_data_fill_eq(gr,re,"exp(-48*x^2)", 0, 0);
a = mgl_qo2d_solve(ham, re, im, r, 1, 30, xx, yy);
mgl_set_caxis(gr,0.,1.);
@@ -6403,7 +7280,6 @@ integer r, xx, yy, a, im, re, mgl_create_data_size
integer mgl_data_subdata, mgl_ray_trace, mgl_qo2d_solve
character*64 ham
ham = 'p^2+q^2-x-1+i*0.5*(y+x)*(y>-x)'
-
im = mgl_create_data_size(128,1,1)
re = mgl_create_data_size(128,1,1)
r = mgl_ray_trace(ham, -0.7, -1., 0., 0., 0.5, 0., 0.02, 2.)
@@ -6413,7 +7289,6 @@ call mgl_plot_xy(gr, xx, yy, 'k')
call mgl_axis(gr,'xyz')
call mgl_label(gr,'x','\i x')
call mgl_label(gr,'y','\i z')
-
call mgl_data_fill_eq(gr,re,'exp(-48*x^2)', 0, 0)
a = mgl_qo2d_solve(ham, re, im, r, 1., 30., xx, yy)
call mgl_set_caxis(gr,0.,1.)
@@ -6435,10 +7310,8 @@ ham = "p^2+q^2-x-1+i*0.5*(y+x)*(y>-x)";
r, xx, yy, a = mglData(), mglData(), mglData(), mglData();
im, re = mglData(128), mglData(128);
r = mglRay(ham, mglPoint(-0.7, -1), mglPoint(0, 0.5), 0.02, 2);
-
gr.Plot(r.SubData(0), r.SubData(1), "k");
gr.Axis(); gr.Label('x', "\\i x"); gr.Label('y', "\\i z");
-
gr.Fill(re,"exp(-48*x^2)");
a = mglQO2d(ham, re, im, r, 1, 30, xx, yy);
gr.SetCRange(0, 1);
@@ -6448,17 +7321,16 @@ gr.Puts(0, 0.85, 0, "absorption: (x+y)/2 for x+y>0");
gr.Puts(0.7, -0.05, 0, "central ray");
gr.Title("Beam and ray tracing", "C", -1.5);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Parser sample, Manual ticks sample, Beam tracing sample, Advanced features
@subsection Parser sample
@cindex mglParse
-
+ at ifclear UDAV
@float
- at image{png/parser, 7cm}
- at caption{Example of MGL parsing.}@c @tdref{parser}}
+ at image{../png/parser, 7cm}
+ at c @caption{Example of MGL parsing.}@c @tdref{parser}}
@end float
-
@strong{C++ code}
@verbatim
float a[100]; // let a_i = sin(4*pi*x), x=0...1
@@ -6532,17 +7404,16 @@ parser.Execute(gr, "xlabel 'x'\nylabel 'y'");
# also you may use cycles or conditions in script
parser.Execute(gr, "for $0 -1 1 0.1\nline 0 0 -1 $0 'r'\nnext");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Manual ticks sample, ColumnPlot sample, Parser sample, Advanced features
@subsection Tick values sample
@cindex SetTicksVal
-
@float
- at image{png/tval, 7cm}
- at caption{Example of MGL parsing.}@c @tdref{tval}}
+ at image{../png/tval, 7cm}
+ at c @caption{Example of manual tick values.}@c @tdref{tval}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
gr->Axis(mglPoint(-M_PI, 0), mglPoint(M_PI, 2));
@@ -6552,6 +7423,7 @@ gr->Axis(); gr->Grid();
gr->Plot("2*cos(x^2)^2", "r2", NAN, 300);
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
axis -pi 0 pi 2
xtick -pi '-\pi' -1.571 '-\pi/2' 0 '0' 0.886 'x^*' 1.571 '\pi/2' pi '\pi'
@@ -6559,6 +7431,7 @@ axis
grid
fplot '2*cos(x^2)^2' 'r2' nan 300
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
mgl_set_axis_2d(gr, -M_PI, 0, M_PI, 2);
@@ -6582,21 +7455,16 @@ parser.Execute(gr, "xtick -pi '-\pi' -1.571 '-\pi/2' 0 '0' "
gr.Axis(); gr.Grid();
gr.Plot("2*cos(x^2)^2", "r2", 300);
@end verbatim
-
-
-
-
-
+ at end ifclear
@c ------------------------------------------------------------------
@node ColumnPlot sample, StickPlot sample, Manual ticks sample, Advanced features
@subsection ColumnPlot sample
- at cindex SetTicksVal
-
+ at cindex ColumnPlot
@float
- at image{png/column, 7cm}
- at caption{Example of MGL parsing.}@c @tdref{tval}}
+ at image{../png/column, 7cm}
+ at c @caption{Example of ColumnPlot.}@c @tdref{column}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
char str[32];
@@ -6611,6 +7479,7 @@ for(int i=0;i<4;i++)
}
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
for $1 0 3
columnplot 4 $1
@@ -6619,6 +7488,7 @@ text -0.5 0.5 'Plot $1 of 4'
fplot 'sin(pi*x+pi*$1/2)'
next
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
int i;
@@ -6639,18 +7509,18 @@ NOT AVAILABLE
@end verbatim
@strong{Python}
@verbatim
+NOT AVAILABLE
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
- at node StickPlot sample, , ColumnPlot sample, Advanced features
+ at node StickPlot sample, Stereo image sample, ColumnPlot sample, Advanced features
@subsection StickPlot sample
- at cindex SetTicksVal
-
+ at cindex StickPlot
@float
- at image{png/column, 7cm}
- at caption{Example of MGL parsing.}@c @tdref{tval}}
+ at image{../png/stick, 7cm}
+ at c @caption{Example of StickPlot.}@c @tdref{stick}}
@end float
-
+ at ifclear UDAV
@strong{C++ code}
@verbatim
gr->SetRanges(-1, 1, -1, 1, 0, 1); gr->Light(true);
@@ -6666,6 +7536,7 @@ gr->Text(mglPoint(0.2, 0, 1.2), "z=2", "", -2);
gr->Label('x',"\\tau", 0); gr->Label('y', "\\rho");
@end verbatim
@strong{MGL code}
+ at end ifclear
@verbatim
ranges -1 1 -1 1 0 1:light on
stickplot 3 0 40 30 : axis 'xyz_'
@@ -6679,6 +7550,7 @@ fsurf 'exp(-10*y^2/5-6*x^2)/sqrt(5)'
text 0.2 0 1.2 'z=2' '' -2
xlabel '\tau' 0 : ylabel '\rho'
@end verbatim
+ at ifclear UDAV
@strong{Pure C code}
@verbatim
mgl_set_axis_3d(gr, -1, -1, 0, 1, 1, 1);
@@ -6716,4 +7588,83 @@ gr->Surf("exp(-10*y^2/5-6*x^2)/sqrt(5)");
gr->Text(mglPoint(0.2, 0, 1.2), "z=2", "", -2);
gr->Label('x',"\\tau", 0); gr->Label('y', "\\rho");
@end verbatim
+ at end ifclear
+ at c ------------------------------------------------------------------
+ at node Stereo image sample, , StickPlot sample, Advanced features
+ at subsection Stereo image sample
+ at float
+ at image{../png/stereo, 7cm}
+ at c @caption{Example of stereo image.}@c @tdref{stereo}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ code}
+ at verbatim
+mglData a(50,40);
+a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
+gr->Light(true);
+gr->SubPlot(2,1,0);
+gr->Rotate(40,60+3);
+gr->Box(); gr->Surf(a);
+gr->SubPlot(2,1,1);
+gr->Rotate(40,60-3);
+gr->Box(); gr->Surf(a);
+ at end verbatim
+ at strong{MGL code}
+ at end ifclear
+ at verbatim
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+light on
+subplot 2 1 0
+rotate 40 60+3
+box:surf a
+subplot 2 1 1
+rotate 40 60-3
+box:surf a
+ at end verbatim
+ at ifclear UDAV
+ at strong{Pure C code}
+ at verbatim
+HMDT a = mgl_create_data_size(50,40,1);
+mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
+mgl_set_light(gr,1);
+mgl_subplot(gr,2,1,0);
+mgl_rotate(gr,40.,60.+3.,0.);
+mgl_box(gr,1);
+mgl_surf(gr,a,0);
+mgl_subplot(gr,2,1,1);
+mgl_rotate(gr,40.,60.-3.,0.);
+mgl_box(gr,1);
+mgl_surf(gr,a,0);
+mgl_delete_data(a);
+ at end verbatim
+ at strong{Fortran code}
+ at verbatim
+integer a, mgl_create_data_size
+a = mgl_create_data_size(50,40,1);
+call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
+call mgl_set_light(gr,1)
+call mgl_subplot(gr,2,1,0)
+call mgl_rotate(gr,40.,60.+3.,0.)
+call mgl_box(gr,1)
+call mgl_surf(gr,a,'')
+call mgl_subplot(gr,2,1,1)
+call mgl_rotate(gr,40.,60.-3.,0.)
+call mgl_box(gr,1)
+call mgl_surf(gr,a,'')
+call mgl_delete_data(a)
+ at end verbatim
+ at strong{Python}
+ at verbatim
+a = mglData(50,40);
+a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))");
+gr.Light(True);
+gr.SubPlot(2,1,0);
+gr.Rotate(40,60+3);
+gr.Surf(a); gr.Box();
+gr.SubPlot(2,1,1);
+gr.Rotate(40,60-3);
+gr.Surf(a); gr.Box();
+ at end verbatim
+ at end ifclear
diff --git a/texinfo/samples_ru.texi b/texinfo/samples_ru.texi
index 4ee92f3..a60a6b9 100644
--- a/texinfo/samples_ru.texi
+++ b/texinfo/samples_ru.texi
@@ -1,13 +1,10 @@
@c ------------------------------------------------------------------
- at node Samples, Ð¡Ð¸Ð¼Ð²Ð¾Ð»Ñ TeX, MGL interface, Top
@chapter ÐÑимеÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ MathGL
-
-ÐÑа глава ÑодеÑÐ¶Ð¸Ñ Ð¼Ð½Ð¾Ð¶ÐµÑÑво пÑимеÑов кода Ð´Ð»Ñ Ð²ÑеÑ
Ñипов гÑаÑиков, наиболее важнÑÑ
возможноÑÑей библиоÑеки и ÑовеÑов. ÐналогиÑнÑе пÑимеÑÑ (Ñ ÐºÐ°ÑÑинками) можно найÑи на @uref{http://mathgl.sf.net/pictures.html}. ÐолÑÑинÑÑво пÑимеÑов ÑодеÑÐ¶Ð°Ñ ÐºÐ¾Ð´ на 5 ÑзÑкаÑ
: C++, MGL, C, Fortran и Python. Ðднако, в некоÑоÑÑÑ
Ñ Ð¿Ð¾Ð¼ÐµÑал ÑолÑко C++ код, поÑколÑÐºÑ ÑооÑвеÑÑÑвÑÑÑий код ÑлиÑком болÑÑой и ÑÑно как его можно пеÑепиÑаÑÑ Ð½Ð° дÑÑгие ÑзÑки.
-
+ÐÑа глава ÑодеÑÐ¶Ð¸Ñ Ð¼Ð½Ð¾Ð¶ÐµÑÑво пÑимеÑов кода Ð´Ð»Ñ Ð²ÑеÑ
Ñипов гÑаÑиков, наиболее важнÑÑ
возможноÑÑей библиоÑеки и ÑовеÑов. ÐналогиÑнÑе пÑимеÑÑ (Ñ ÐºÐ°ÑÑинками) можно найÑи на @uref{http://mathgl.sf.net/pictures.html}.
+ at ifclear UDAV
+MÐолÑÑинÑÑво пÑимеÑов ÑодеÑÐ¶Ð°Ñ ÐºÐ¾Ð´ на 5 ÑзÑкаÑ
: C++, MGL, C, Fortran и Python. Ðднако, в некоÑоÑÑÑ
Ñ Ð¿Ð¾Ð¼ÐµÑал ÑолÑко C++ код, поÑколÑÐºÑ ÑооÑвеÑÑÑвÑÑÑий код ÑлиÑком болÑÑой и ÑÑно как его можно пеÑепиÑаÑÑ Ð½Ð° дÑÑгие ÑзÑки.
ÐинималÑнÑй код Ð´Ð»Ñ Ð·Ð°Ð¿ÑÑка и пÑоÑмоÑÑа пÑимеÑов на ÑазлиÑнÑÑ
ÑзÑкаÑ
ÑледÑÑÑий.
-
@strong{C++ код}
-
ÐÐ»Ñ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии иÑполÑзÑйÑе: @code{g++ -o sample sample.cpp -lmgl}.
@verbatim
#include <mgl/mgl_zb.h>
@@ -22,7 +19,6 @@ int main()
}
@end verbatim
@strong{MGL ÑкÑипÑ}
-
ÐÐ»Ñ Ð¿ÑоÑмоÑÑа иÑполÑзÑйÑе: @code{mglview sample.mgl}.
@verbatim
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -31,7 +27,6 @@ int main()
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@end verbatim
@strong{C-Ñй код}
-
ÐÐ»Ñ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии иÑполÑзÑйÑе: @code{gcc -o sample sample.c -lmgl}.
@verbatim
#include <mgl/mgl_c.h>
@@ -47,7 +42,6 @@ int main()
}
@end verbatim
@strong{Fortran}
-
ÐÐ»Ñ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии иÑполÑзÑйÑе: @code{gfortran -o sample sample.f90 -lmgl}. ÐамеÑÑ, ÑÑо ÑоÑÑÑан не Ð¸Ð¼ÐµÐµÑ Ð¿ÑовеÑки аÑгÑменÑов. ÐоÑÑÐ¾Ð¼Ñ Ð¾Ð±ÑаÑиÑе оÑобое внимание на пеÑедаваемÑе аÑгÑменÑÑ -- не пÑÑайÑе ÑелÑе и дейÑÑвиÑелÑнÑе (Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей ÑоÑкой) ÑиÑла/аÑгÑменÑÑ. Ðикакого конÑÑÐ¾Ð»Ñ Ð² компилÑÑоÑе Ð´Ð»Ñ ÑÑого не пÑедÑÑмоÑÑено!!!
@verbatim
integer gr, mgl_create_graph_zb
@@ -60,7 +54,6 @@ call mgl_delete_graph(gr)
end
@end verbatim
@strong{Python}
-
ÐÐ»Ñ Ð¿ÑоÑмоÑÑа иÑполÑзÑйÑе: @code{python sample.py}.
@verbatim
from mathgl import *
@@ -70,31 +63,34 @@ gr = mglGraph();
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gr.ShowImage();
@end verbatim
-
-
+ at end ifclear
@menu
* 1D plotting samples::
* 2D plotting samples::
* 3D plotting samples::
* Dual plotting samples::
+* Basic features::
* Additional features::
* Advanced features::
@end menu
-
@c ------------------------------------------------------------------
@node 1D plotting samples, 2D plotting samples,, Samples
@section ÐÑимеÑÑ 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::
@@ -104,18 +100,17 @@ gr.ShowImage();
* Torus sample::
* Chart sample::
* Pie chart sample::
+* Ring chart sample::
@end menu
-
@c ------------------------------------------------------------------
@node Plot sample, Radar sample,, 1D plotting samples
@subsection Plot -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Plot
-
@float
- at image{png/plot, 7cm}
- at caption{Example of Plot. @tdref{plot}}
+ at image{../png/plot, 7cm}
+ at c @caption{Example of Plot. @tdref{plot}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData y(50,3);
@@ -126,6 +121,7 @@ gr->Box();
gr->Plot(y);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new y 50 3
modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
@@ -134,6 +130,7 @@ modify y 'cos(2*pi*x)' 2
box
plot y
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT y = mgl_create_data_size(50,3,1);
@@ -164,19 +161,16 @@ y.Modify("cos(2*pi*x)",2);
gr.Box();
gr.Plot(y);
@end verbatim
-
-
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Radar sample, Tens sample, Plot sample, 1D plotting samples
@subsection Radar -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Radar
-
@float
- at image{png/radar, 7cm}
- at caption{Example of Plot. @tdref{radar}}
+ at image{../png/radar, 7cm}
+ at c @caption{Example of Plot. @tdref{radar}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData y(10,3);
@@ -184,11 +178,13 @@ y.Modify("0.4*sin(pi*(2*x+y/2))+0.1*rnd");
gr->Radar(y,"#");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new y 10 3
modify y '0.4*sin(pi*(2*x+y/2))+0.1*rnd'
radar y '#'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT y = mgl_create_data_size(10,3,1);
@@ -210,18 +206,16 @@ y = mglData(10,3);
y.Modify("0.4*sin(pi*(2*x+y/2))+0.1*rnd");
gr.Radar(y,"#");
@end verbatim
-
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Tens sample, Area sample, Radar sample, 1D plotting samples
@subsection Tens -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Tens
-
@float
- at image{png/tens, 7cm}
- at caption{Example of Tens. @tdref{tens}}
+ at image{../png/tens, 7cm}
+ at c @caption{Example of Tens. @tdref{tens}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData y(50), c(50);
@@ -231,6 +225,7 @@ gr->Box();
gr->Tens(y,c);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new y 50
new c 50
@@ -239,6 +234,7 @@ modify c 'sin(2*pi*x)'
box
tens y c
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT y = mgl_create_data_size(50,1,1);
@@ -271,17 +267,16 @@ c.Modify("sin(2*pi*x)");
gr.Box();
gr.Tens(y,c);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
- at node Area sample, Bars sample, Tens sample, 1D plotting samples
+ at node Area sample, Area gradient sample, Tens sample, 1D plotting samples
@subsection Area -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Area
-
@float
- at image{png/area, 7cm}
- at caption{Example of Area. @tdref{area}}
+ at image{../png/area, 7cm}
+ at c @caption{Example of Area. @tdref{area}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData y(50,3);
@@ -293,6 +288,7 @@ gr->Box();
gr->Area(y);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new y 50 3
modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
@@ -302,6 +298,7 @@ origin 0 0
box
area y
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT y = mgl_create_data_size(50,3,1);
@@ -335,17 +332,81 @@ gr.SetOrigin(0.,0.);
gr.Box();
gr.Area(y);
@end verbatim
-
+ at end ifclear
+ at c ------------------------------------------------------------------
+ at node Area gradient sample, Bars sample, Tens sample, 1D plotting samples
+ at subsection Area Ñ Ð³ÑадиенÑной заливкой -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
+ at cindex Area
+ at float
+ at image{../png/area_2, 7cm}
+ at c @caption{Example of Area. @tdref{area}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ код}
+ at verbatim
+mglData y(50,3);
+y.Modify("0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)",0);
+y.Modify("sin(2*pi*x)",1);
+y.Modify("cos(2*pi*x)",2);
+gr->Org=mglPoint(0,0);
+gr->Box();
+gr->Area(y,"cbgGyr");
+ at end verbatim
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
+ at verbatim
+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'
+ at end verbatim
+ at ifclear UDAV
+ at strong{C-Ñй код}
+ at verbatim
+HMDT y = mgl_create_data_size(50,3,1);
+mgl_data_modify(y,"0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)",0);
+mgl_data_modify(y,"sin(2*pi*x)",1);
+mgl_data_modify(y,"cos(2*pi*x)",2);
+mgl_set_origin(gr,0.,0.,0.);
+mgl_box(gr,1);
+mgl_area(gr,y,"cbgGyr");
+mgl_delete_data(y);
+ at end verbatim
+ at strong{Fortran}
+ at verbatim
+integer y, mgl_create_data_size
+y = mgl_create_data_size(50,3,1)
+call mgl_data_modify(y,'0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)',0)
+call mgl_data_modify(y,'sin(2*pi*x)',1)
+call mgl_data_modify(y,'cos(2*pi*x)',2)
+call mgl_set_origin(gr,0.,0.,0.)
+call mgl_box(gr,1)
+call mgl_area(gr,y,'cbgGyr')
+call mgl_delete_data(y)
+ at end verbatim
+ at strong{Python}
+ at verbatim
+y = mglData(50,3);
+y.Modify("0.7*sin(2*pi*x)+0.5*cos(3*pi*x)+0.2*sin(pi*x)",0);
+y.Modify("sin(2*pi*x)",1);
+y.Modify("cos(2*pi*x)",2);
+gr.SetOrigin(0.,0.);
+gr.Box();
+gr.Area(y,"cbgGyr");
+ at end verbatim
+ at end ifclear
@c ------------------------------------------------------------------
- at node Bars sample, Barh sample, Area sample, 1D plotting samples
+ at node Bars sample, Bars 2 colors sample, Area gradient sample, 1D plotting samples
@subsection Bars -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Bars
-
@float
- at image{png/bars, 7cm}
- at caption{Example of Bars. @tdref{bars}}
+ at image{../png/bars, 7cm}
+ at c @caption{Example of Bars. @tdref{bars}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData y(10,3);
@@ -355,6 +416,7 @@ gr->Box();
gr->Bars(y);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new y 10 3
modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
@@ -362,6 +424,7 @@ origin 0 0
box
bars y
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT y = mgl_create_data_size(10,3,1);
@@ -389,17 +452,184 @@ gr.SetOrigin(0.,0.);
gr.Box();
gr.Bars(y);
@end verbatim
+ at end ifclear
+
+ at c ------------------------------------------------------------------
+ at node Bars 2 colors sample, Bars above sample, Bars sample, 1D plotting samples
+ at subsection Bars (2 ÑвеÑа) -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
+ at cindex Bars
+ at float
+ at image{../png/bars_2, 7cm}
+ at c @caption{Example of Bars. @tdref{bars}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ код}
+ at verbatim
+mglData y(10,3);
+y.Modify("0.8*sin(pi*(2*x+y/2))+0.2*rnd");
+gr->Org=mglPoint(0,0);
+gr->Box();
+gr->Bars(y,"cbgGyr");
+ at end verbatim
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
+ at verbatim
+new y 10 3
+modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
+origin 0 0
+box
+bars y 'cbgGyr'
+ at end verbatim
+ at ifclear UDAV
+ at strong{C-Ñй код}
+ at verbatim
+HMDT y = mgl_create_data_size(10,3,1);
+mgl_data_modify(y,"0.8*sin(pi*(2*x+y/2))+0.2*rnd");
+mgl_set_origin(gr,0.,0.,0.);
+mgl_box(gr,1);
+mgl_bars(gr,y,"cbgGyr");
+mgl_delete_data(y);
+ at end verbatim
+ at strong{Fortran}
+ at verbatim
+integer y, mgl_create_data_size
+y = mgl_create_data_size(10,3,1)
+call mgl_data_modify(y,'0.8*sin(pi*(2*x+y/2))+0.2*rnd')
+call mgl_set_origin(gr,0.,0.,0.)
+call mgl_box(gr,1)
+call mgl_bars(gr,y,'cbgGyr')
+call mgl_delete_data(y)
+ at end verbatim
+ at strong{Python}
+ at verbatim
+y = mglData(10,3);
+y.Modify("0.8*sin(pi*(2*x+y/2))+0.2*rnd");
+gr.SetOrigin(0.,0.);
+gr.Box();
+gr.Bars(y,"cbgGyr");
+ at end verbatim
+ at end ifclear
+ at c ------------------------------------------------------------------
+ at node Bars above sample, Bars fall sample, Bars 2 colors sample, 1D plotting samples
+ at subsection Bars (один над дÑÑгим) -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
+ at cindex Bars
+ at float
+ at image{../png/bars_a, 7cm}
+ at c @caption{Example of Bars. @tdref{bars}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ код}
+ at verbatim
+mglData y(10,3);
+y.Modify("0.8*sin(pi*(2*x+y/2))+0.2*rnd");
+gr->Org=mglPoint(0,0);
+gr->Box();
+gr->Bars(y,"a");
+ at end verbatim
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
+ at verbatim
+new y 10 3
+modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
+origin 0 0
+box
+bars y 'a'
+ at end verbatim
+ at ifclear UDAV
+ at strong{C-Ñй код}
+ at verbatim
+HMDT y = mgl_create_data_size(10,3,1);
+mgl_data_modify(y,"0.8*sin(pi*(2*x+y/2))+0.2*rnd");
+mgl_set_origin(gr,0.,0.,0.);
+mgl_box(gr,1);
+mgl_bars(gr,y,"a");
+mgl_delete_data(y);
+ at end verbatim
+ at strong{Fortran}
+ at verbatim
+integer y, mgl_create_data_size
+y = mgl_create_data_size(10,3,1)
+call mgl_data_modify(y,'0.8*sin(pi*(2*x+y/2))+0.2*rnd')
+call mgl_set_origin(gr,0.,0.,0.)
+call mgl_box(gr,1)
+call mgl_bars(gr,y,'a')
+call mgl_delete_data(y)
+ at end verbatim
+ at strong{Python}
+ at verbatim
+y = mglData(10,3);
+y.Modify("0.8*sin(pi*(2*x+y/2))+0.2*rnd");
+gr.SetOrigin(0.,0.);
+gr.Box();
+gr.Bars(y,"a");
+ at end verbatim
+ at end ifclear
+ at c ------------------------------------------------------------------
+ at node Bars fall sample, Bars above sample, Bars above sample, 1D plotting samples
+ at subsection Bars "водопад" -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
+ at cindex Bars
+ at float
+ at image{../png/bars_f, 7cm}
+ at c @caption{Example of Bars. @tdref{bars}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ код}
+ at verbatim
+mglData y(10,3);
+y.Modify("0.8*sin(pi*(2*x+y/2))+0.2*rnd");
+gr->Org=mglPoint(0,0);
+gr->Box();
+gr->Bars(y,"f");
+ at end verbatim
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
+ at verbatim
+new y 10 3
+modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
+origin 0 0
+box
+bars y 'f'
+ at end verbatim
+ at ifclear UDAV
+ at strong{C-Ñй код}
+ at verbatim
+HMDT y = mgl_create_data_size(10,3,1);
+mgl_data_modify(y,"0.8*sin(pi*(2*x+y/2))+0.2*rnd");
+mgl_set_origin(gr,0.,0.,0.);
+mgl_box(gr,1);
+mgl_bars(gr,y,"f");
+mgl_delete_data(y);
+ at end verbatim
+ at strong{Fortran}
+ at verbatim
+integer y, mgl_create_data_size
+y = mgl_create_data_size(10,3,1)
+call mgl_data_modify(y,'0.8*sin(pi*(2*x+y/2))+0.2*rnd')
+call mgl_set_origin(gr,0.,0.,0.)
+call mgl_box(gr,1)
+call mgl_bars(gr,y,'f')
+call mgl_delete_data(y)
+ at end verbatim
+ at strong{Python}
+ at verbatim
+y = mglData(10,3);
+y.Modify("0.8*sin(pi*(2*x+y/2))+0.2*rnd");
+gr.SetOrigin(0.,0.);
+gr.Box();
+gr.Bars(y,"f");
+ at end verbatim
+ at end ifclear
+
@c ------------------------------------------------------------------
- at node Barh sample, Step sample, Bars sample, 1D plotting samples
+ at node Barh sample, Step sample, Bars fall sample, 1D plotting samples
@subsection Barh -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Barh
-
@float
- at image{png/barh, 7cm}
- at caption{Example of Barh. @tdref{barh}}
+ at image{../png/barh, 7cm}
+ at c @caption{Example of Barh. @tdref{barh}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData y(10,3);
@@ -409,6 +639,7 @@ gr->Box();
gr->Barh(y);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new y 10 3
modify y '0.8*sin(pi*(2*x+y/2))+0.2*rnd'
@@ -416,6 +647,7 @@ origin 0 0
box
barh y
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT y = mgl_create_data_size(10,3,1);
@@ -443,17 +675,16 @@ gr.SetOrigin(0.,0.);
gr.Box();
gr.Barh(y);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Step sample, Stem sample, Barh sample, 1D plotting samples
@subsection Step -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Step
-
@float
- at image{png/step, 7cm}
- at caption{Example of Step. @tdref{step}}
+ at image{../png/step, 7cm}
+ at c @caption{Example of Step. @tdref{step}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData y(50,3);
@@ -464,6 +695,7 @@ gr->Box();
gr->Step(y);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new y 50 3
modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
@@ -472,6 +704,7 @@ modify y 'cos(2*pi*x)' 2
box
step y
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT y = mgl_create_data_size(50,3,1);
@@ -502,18 +735,17 @@ y.Modify("cos(2*pi*x)",2);
gr.Box();
gr.Step(y);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Stem sample, Region sample, Step sample, 1D plotting samples
@subsection Stem -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Stem
-
@float
- at image{png/stem, 7cm}
- at caption{Example of Stem. @tdref{stem}}
+ at image{../png/stem, 7cm}
+ at c @caption{Example of Stem. @tdref{stem}}
@end float
-
- at strong{C++ code}
+ at ifclear UDAV
+ at strong{C++ код}
@verbatim
mglData y(50,3);
y.Modify("0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)",0);
@@ -523,7 +755,8 @@ gr->Org=mglPoint(0,0);
gr->Box();
gr->Stem(y,"o");
@end verbatim
- at strong{MGL code}
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new y 50 3
modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
@@ -533,7 +766,8 @@ origin 0 0
box
stem y 'o'
@end verbatim
- at strong{Pure C code}
+ at ifclear UDAV
+ at strong{C-Ñй код}
@verbatim
HMDT y = mgl_create_data_size(50,3,1);
mgl_data_modify(y,"0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)",0);
@@ -544,7 +778,7 @@ mgl_box(gr,1);
mgl_stem(gr,y,"o");
mgl_delete_data(y);
@end verbatim
- at strong{Fortran code}
+ at strong{Fortran}
@verbatim
integer y, mgl_create_data_size
y = mgl_create_data_size(50,3,1)
@@ -566,17 +800,16 @@ gr.SetOrigin(0.,0.);
gr.Box();
gr.Stem(y,"o");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
- at node Region sample, Error sample, Stem sample, 1D plotting samples
+ at node Region sample, Region gradient sample, Stem sample, 1D plotting samples
@subsection Region -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Region
-
@float
- at image{png/region, 7cm}
- at caption{Example of Region. @tdref{region}}
+ at image{../png/region, 7cm}
+ at c @caption{Example of Region. @tdref{region}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData y1(50), y2(50);
@@ -588,6 +821,7 @@ gr->Plot(y1,"k2");
gr->Plot(y2,"k2");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new y1 50
new y2 50
@@ -598,6 +832,7 @@ region y1 y2 'r'
plot y1 'k2'
plot y2 'k2'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT y1 = mgl_create_data_size(50,1,1);
@@ -635,17 +870,86 @@ gr.Region(y1,y2,"r");
gr.Plot(y1,"k2");
gr.Plot(y2,"k2");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
- at node Error sample, BoxPlot sample, Region sample, 1D plotting samples
+ at node Region gradient sample, Error sample, Region sample, 1D plotting samples
+ at subsection Region Ñ Ð³ÑадиенÑной заливкой -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
+ at cindex Region
+ at float
+ at image{../png/region_2, 7cm}
+ at c @caption{Example of Region. @tdref{region}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ код}
+ at verbatim
+mglData y1(50), y2(50);
+y1.Modify("0.3*sin(2*pi*x)");
+y2.Modify("0.5+0.3*cos(2*pi*x)");
+gr->Box();
+gr->Region(y1,y2,"yr");
+gr->Plot(y1,"k2");
+gr->Plot(y2,"k2");
+ at end verbatim
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
+ at verbatim
+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'
+ at end verbatim
+ at ifclear UDAV
+ at strong{C-Ñй код}
+ at verbatim
+HMDT y1 = mgl_create_data_size(50,1,1);
+HMDT y2 = mgl_create_data_size(50,1,1);
+mgl_data_modify(y1,"0.3*sin(2*pi*x)",0);
+mgl_data_modify(y2,"0.5+0.3*cos(2*pi*x)",0);
+mgl_box(gr,1);
+mgl_region(gr,y1,y2,"yr",1);
+mgl_plot(gr,y1,"k2");
+mgl_plot(gr,y2,"k2");
+mgl_delete_data(y1);
+mgl_delete_data(y2);
+ at end verbatim
+ at strong{Fortran}
+ at verbatim
+integer y1, y2, mgl_create_data_size
+y1 = mgl_create_data_size(50,1,1);
+y2 = mgl_create_data_size(50,1,1);
+call mgl_data_modify(y1,'0.3*sin(2*pi*x)',0);
+call mgl_data_modify(y2,'0.5+0.3*cos(2*pi*x)',0);
+call mgl_box(gr,1);
+call mgl_region(gr,y1,y2,'yr',1);
+call mgl_plot(gr,y1,'k2');
+call mgl_plot(gr,y2,'k2');
+call mgl_delete_data(y1);
+call mgl_delete_data(y2);
+ at end verbatim
+ at strong{Python}
+ at verbatim
+y1, y2, x = mglData(50), mglData(50), mglData(50);
+y1.Modify("0.3*sin(2*pi*x)");
+y2.Modify("0.5+0.3*cos(2*pi*x)");
+gr.Box();
+gr.Region(y1,y2,"yr");
+gr.Plot(y1,"k2");
+gr.Plot(y2,"k2");
+ at end verbatim
+ at end ifclear
+ at c ------------------------------------------------------------------
+ at node Error sample, BoxPlot sample, Region gradient sample, 1D plotting samples
@subsection Error -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Error
-
@float
- at image{png/error, 7cm}
- at caption{Example of Error. @tdref{error}}
+ at image{../png/error, 7cm}
+ at c @caption{Example of Error. @tdref{error}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData y(50,1), x0(10), y0(10), ex(10), ey(10);
@@ -658,6 +962,7 @@ gr->Plot(y);
gr->Error(x0,y0,ex,ey,"ko");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new y 50
new x0 10
@@ -673,6 +978,7 @@ box
plot y
error x0 y0 ex ey 'ko'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT y = mgl_create_data_size(50,1,1);
@@ -684,7 +990,6 @@ mgl_data_modify(y,"0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)",0);
mgl_data_modify(x0,"2*x-1 + 0.1*rnd-0.05",0);
mgl_data_modify(y0,"0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x) + 0.2*rnd-0.1",0);
mgl_data_modify(ey,"0.2",0); mgl_data_modify(ex,"0.1",0);
-
mgl_box(gr,1);
mgl_plot(gr,y,NULL);
mgl_error_exy(gr,x0,y0,ex,ey,"ko");
@@ -706,7 +1011,6 @@ call mgl_data_modify(y0,'0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + &
0.2*sin(pi*x) + 0.2*rnd-0.1',0);
call mgl_data_modify(ey,'0.2',0)
call mgl_data_modify(ex,'0.1',0);
-
call mgl_box(gr,1)
call mgl_plot(gr,y,'')
call mgl_error_exy(gr,x0,y0,ex,ey,'ko')
@@ -726,17 +1030,16 @@ ey.Modify("0.2"); ex.Modify("0.1");
gr.Box(); gr.Plot(y);
gr.Error(x0,y0,ex,ey,"ko");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node BoxPlot sample, Mark sample, Error sample, 1D plotting samples
@subsection BoxPlot -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex BoxPlot
-
@float
- at image{png/boxplot, 7cm}
- at caption{Example of BoxPlot. @tdref{boxplot}}
+ at image{../png/boxplot, 7cm}
+ at c @caption{Example of BoxPlot. @tdref{boxplot}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(10,7);
@@ -746,6 +1049,7 @@ gr->BoxPlot(a);
gr->Plot(a," ko");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new a 10 7
modify a '(2*rnd-1)^3/2'
@@ -753,11 +1057,11 @@ box
boxplot a
plot a ' ko'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(10,7,1);
mgl_data_modify(a,"(2*rnd-1)^3/2",0);
-
mgl_box(gr,1);
mgl_plot(gr,a," ko");
mgl_boxplot(gr,a,NULL);
@@ -768,7 +1072,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
y = mgl_create_data_size(10,7,1)
call mgl_data_modify(a,'(2*rnd-1)^3/2',0);
-
call mgl_box(gr,1)
call mgl_plot(gr,a,' ko')
call mgl_boxplot(gr,a,'')
@@ -782,17 +1085,16 @@ gr.Box();
gr.Plot(a," ko");
gr.BoxPlot(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Mark sample, TextMark sample, BoxPlot sample, 1D plotting samples
@subsection Mark -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Mark
-
@float
- at image{png/mark, 7cm}
- at caption{Example of Mark. @tdref{mark}}
+ at image{../png/mark, 7cm}
+ at c @caption{Example of Mark. @tdref{mark}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData y(50,3), y1(50);
@@ -804,6 +1106,7 @@ gr->Box();
gr->Mark(y,y1,"bs");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new y 50 3
modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
@@ -814,6 +1117,7 @@ modify y1 '0.5+0.3*cos(2*pi*x)'
box
mark y y1 'bs'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT y = mgl_create_data_size(50,3,1);
@@ -850,17 +1154,16 @@ y1.Modify("0.5+0.3*cos(2*pi*x)");
gr.Box();
gr.Mark(y,y1,"bs");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node TextMark sample, Tube sample, Mark sample, 1D plotting samples
@subsection TextMark -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex TextMark
-
@float
- at image{png/textmark, 7cm}
- at caption{Example of TextMark. @tdref{textmark}}
+ at image{../png/textmark, 7cm}
+ at c @caption{Example of TextMark. @tdref{textmark}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData y(50,3), y1(50);
@@ -872,6 +1175,7 @@ gr->Box();
gr->TextMark(y,y1,"\\gamma");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new y 50 3
modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
@@ -882,6 +1186,7 @@ modify y1 '0.5+0.3*cos(2*pi*x)'
box
textmark y y1 '\gamma'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT y, y1;
@@ -919,48 +1224,46 @@ y1.Modify("0.5+0.3*cos(2*pi*x)");
gr.Box();
gr.TextMark(y,y1,"\\gamma");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Tube sample, Text sample, TextMark sample, 1D plotting samples
@subsection Tube -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Tube
-
@float
- at image{png/tube, 7cm}
- at caption{Example of Tube. @tdref{tube}}
+ at image{../png/tube, 7cm}
+ at c @caption{Example of Tube. @tdref{tube}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData y(50,3);
y.Modify("0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)",0);
y.Modify("sin(2*pi*x)",1);
y.Modify("cos(2*pi*x)",2);
-
gr->Rotate(40,60);
gr->Light(true);
gr->Box();
gr->Tube(y,0.05);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT y = mgl_create_data_size(50,3,1);
mgl_data_modify(y,"0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)",0);
mgl_data_modify(y,"sin(2*pi*x)",1);
mgl_data_modify(y,"cos(2*pi*x)",2);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -974,7 +1277,6 @@ y = mgl_create_data_size(50,3,1)
call mgl_data_modify(y,'0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)',0)
call mgl_data_modify(y,'sin(2*pi*x)',1)
call mgl_data_modify(y,'cos(2*pi*x)',2)
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -989,17 +1291,16 @@ y.Modify("sin(2*pi*x)",1); y.Modify("cos(2*pi*x)",2);
gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Tube(y,0.05);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Text sample, Torus sample, Tube sample, 1D plotting samples
@subsection Text -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Text
-
@float
- at image{png/text, 7cm}
- at caption{Example of Text. @tdref{text}}
+ at image{../png/text, 7cm}
+ at c @caption{Example of Text. @tdref{text}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData y(50,3);
@@ -1012,6 +1313,7 @@ gr->Text(y,"This is very long string drawn along a curve",":k");
gr->Text(y,"Another string drawn above a curve","T:r");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new y 50 3
modify y '0.7*sin(2*pi*x) + 0.5*cos(3*pi*x) + 0.2*sin(pi*x)'
@@ -1022,6 +1324,7 @@ 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'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT y = mgl_create_data_size(50,1,1);
@@ -1053,47 +1356,45 @@ gr.Plot(y.SubData(-1,0));
gr.Text(y,"This is very long string drawn along a curve",":k");
gr.Text(y,"Another string drawn above a curve","T:r");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Torus sample, Chart sample, Text sample, 1D plotting samples
@subsection Torus -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Torus
-
@float
- at image{png/torus, 7cm}
- at caption{Example of Torus. @tdref{torus}}
+ at image{../png/torus, 7cm}
+ at c @caption{Example of Torus. @tdref{torus}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData y1(50), y2(50);
y1.Modify("0.5+0.3*cos(2*pi*x)");
y2.Modify("0.3*sin(2*pi*x)");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Box();
gr->Torus(y1,y2,"pz");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT y1 = mgl_create_data_size(50,1,1);
HMDT y2 = mgl_create_data_size(50,1,1);
mgl_data_modify(y1,"0.5+0.3*cos(2*pi*x)",0);
mgl_data_modify(y2,"0.3*sin(2*pi*x)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -1108,7 +1409,6 @@ y1 = mgl_create_data_size(50,1,1);
y2 = mgl_create_data_size(50,1,1);
call mgl_data_modify(y1,"0.5+0.3*cos(2*pi*x)",0);
call mgl_data_modify(y2,"0.3*sin(2*pi*x)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -1125,42 +1425,40 @@ gr.Rotate(40,60); gr.Light(True);
gr.Box();
gr.Torus(y1,y2,"pz");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Chart sample, Pie chart sample, Torus sample, 1D plotting samples
@subsection Chart -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Chart
-
@float
- at image{png/chart, 7cm}
- at caption{Example of Chart. @tdref{chart}}
+ at image{../png/chart, 7cm}
+ at c @caption{Example of Chart. @tdref{chart}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData ch(7,2);
ch.Modify("rnd+0.1");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Box();
gr->Chart(ch,"#");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new ch 7 2
modify ch 'rnd+0.1'
-
rotate 40 60
light on
box
chart ch
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT ch = mgl_create_data_size(7,2,1);
mgl_data_modify(ch,"rnd+0.1",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -1172,7 +1470,6 @@ mgl_delete_data(ch);
integer ch, mgl_create_data_size
ch = mgl_create_data_size(7,2,1)
call mgl_data_modify(ch,'rnd+0.1',0)
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -1186,23 +1483,21 @@ gr.Rotate(40,60); gr.Light(True);
gr.Box();
gr.Chart(ch,"#");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
- at node Pie chart sample,, Chart sample, 1D plotting samples
+ at node Pie chart sample, Ring chart sample, Chart sample, 1D plotting samples
@subsection Pie chart -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Chart
@cindex Axis
-
@float
- at image{png/pie_chart, 7cm}
- at caption{Example of Chart in cylindrical coordinates. @tdref{pie_chart}}
+ at image{../png/pie_chart, 7cm}
+ at c @caption{Example of Chart in cylindrical coordinates. @tdref{pie_chart}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData ch(7,2);
ch.Modify("rnd+0.1");
-
gr->Rotate(40,60);
gr->Light(true);
gr->SetFunc("(y+1)/2*cos(pi*x)","(y+1)/2*sin(pi*x)");
@@ -1210,21 +1505,21 @@ gr->Box();
gr->Chart(ch,"bgr cmy#");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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#'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT ch = mgl_create_data_size(7,2,1);
mgl_data_modify(ch,"rnd+0.1",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_func(gr,"(y+1)/2*cos(pi*x)","(y+1)/2*sin(pi*x)",0);
@@ -1237,7 +1532,6 @@ mgl_delete_data(ch);
integer ch, mgl_create_data_size
ch = mgl_create_data_size(7,2,1)
call mgl_data_modify(ch,'rnd+0.1',0)
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_func(gr,'(y+1)/2*cos(pi*x)','(y+1)/2*sin(pi*x)','');
@@ -1253,11 +1547,74 @@ gr.SetFunc("(y+1)/2*cos(pi*x)","(y+1)/2*sin(pi*x)");
gr.Box();
gr.Chart(ch,"bgr cmy#");
@end verbatim
-
+ at end ifclear
+ at c ------------------------------------------------------------------
+ at node Ring chart sample, , Pie chart sample, 1D plotting samples
+ at subsection Ring chart -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
+ at cindex Chart
+ at cindex Axis
+ at float
+ at image{../png/ring_chart, 7cm}
+ at c @caption{Example of Chart in cylindrical coordinates. @tdref{pie_chart}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ код}
+ at verbatim
+mglData ch(7,2);
+ch.Modify("rnd+0.1");
+gr->Rotate(40,60);
+gr->Light(true);
+gr->SetFunc("(y+2)/3*cos(pi*x)","(y+2)/3*sin(pi*x)");
+gr->Box();
+gr->Chart(ch,"bgr cmy#");
+ at end verbatim
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
+ at verbatim
+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#'
+ at end verbatim
+ at ifclear UDAV
+ at strong{C-Ñй код}
+ at verbatim
+HMDT ch = mgl_create_data_size(7,2,1);
+mgl_data_modify(ch,"rnd+0.1",0);
+mgl_rotate(gr,40.,60.,0.);
+mgl_set_light(gr,1);
+mgl_set_func(gr,"(y+2)/3*cos(pi*x)","(y+2)/3*sin(pi*x)",0);
+mgl_box(gr,1);
+mgl_chart(gr,ch,"bgr cmy#");
+mgl_delete_data(ch);
+ at end verbatim
+ at strong{Fortran}
+ at verbatim
+integer ch, mgl_create_data_size
+ch = mgl_create_data_size(7,2,1)
+call mgl_data_modify(ch,'rnd+0.1',0)
+call mgl_rotate(gr,40.,60.,0.)
+call mgl_set_light(gr,1)
+call mgl_set_func(gr,'(y+2)/3*cos(pi*x)','(y+2)/3*sin(pi*x)','');
+call mgl_box(gr,1)
+call mgl_chart(gr,ch,'bgr cmy#')
+call mgl_delete_data(ch)
+ at end verbatim
+ at strong{Python}
+ at verbatim
+ch = mglData(7,2); ch.Modify("rnd+0.1");
+gr.Rotate(40,60); gr.Light(True);
+gr.SetFunc("(y+2)/3*cos(pi*x)","(y+2)/3*sin(pi*x)");
+gr.Box();
+gr.Chart(ch,"bgr cmy#");
+ at end verbatim
+ at end ifclear
@c ------------------------------------------------------------------
@node 2D plotting samples, 3D plotting samples, 1D plotting samples, Samples
@section ÐÑимеÑÑ 2D гÑаÑиков
-
@menu
* Surf sample::
* Transparent surface sample::
@@ -1273,43 +1630,41 @@ gr.Chart(ch,"bgr cmy#");
* ContF sample::
* ContD sample::
* Axial sample::
+* Grad sample::
@end menu
-
@c ------------------------------------------------------------------
@node Surf sample, Transparent surface sample,, 2D plotting samples
@subsection Surf -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Surf
-
@float
- at image{png/surf, 7cm}
- at caption{Example of Surf. @tdref{surf}}
+ at image{../png/surf, 7cm}
+ at c @caption{Example of Surf. @tdref{surf}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Box();
gr->Surf(a);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -1321,7 +1676,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -1335,23 +1689,21 @@ a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Surf(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Transparent surface sample, Surface in fog sample, Surf sample, 2D plotting samples
@subsection Transparent surface -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Surf
@cindex Alpha
-
@float
- at image{png/surf_alpha, 7cm}
- at caption{Example of Surf & Alpha. @tdref{surf_alpha}}
+ at image{../png/surf_alpha, 7cm}
+ at c @caption{Example of Surf & Alpha. @tdref{surf_alpha}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Alpha(true);
@@ -1359,21 +1711,21 @@ gr->Box();
gr->Surf(a);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_alpha(gr,1);
@@ -1386,7 +1738,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_alpha(gr,1)
@@ -1402,23 +1753,21 @@ gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Alpha(True);
gr.Surf(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Surface in fog sample, Sharp colors sample, Transparent surface sample, 2D plotting samples
@subsection Surface in fog -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Surf
@cindex Fog
-
@float
- at image{png/surf_fog, 7cm}
- at caption{Example of Surf & Fog. @tdref{surf_fog}}
+ at image{../png/surf_fog, 7cm}
+ at c @caption{Example of Surf & Fog. @tdref{surf_fog}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Fog(1);
@@ -1426,21 +1775,21 @@ gr->Box();
gr->Surf(a);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_fog(gr,1.,0.25);
@@ -1453,7 +1802,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_fog(gr,1.,0.25)
@@ -1469,42 +1817,40 @@ gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Fog(1);
gr.Surf(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Sharp colors sample, Mesh sample, Surface in fog sample, 2D plotting samples
@subsection Sharp colors -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Surf
-
@float
- at image{png/surf_sl, 7cm}
- at caption{Example of sharp color scheme. @tdref{surf_sl}}
+ at image{../png/surf_sl, 7cm}
+ at c @caption{Example of sharp color scheme. @tdref{surf_sl}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Box();
gr->Surf(a,"BbcyrR|");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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|'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -1516,7 +1862,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -1530,40 +1875,38 @@ a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Surf(a,"BbcyrR|");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Mesh sample, Fall sample, Sharp colors sample, 2D plotting samples
@subsection Mesh -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Mesh
-
@float
- at image{png/mesh, 7cm}
- at caption{Example of Mesh. @tdref{mesh}}
+ at image{../png/mesh, 7cm}
+ at c @caption{Example of Mesh. @tdref{mesh}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Box();
gr->Mesh(a);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
mgl_mesh(gr,a,0);
@@ -1574,7 +1917,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1)
call mgl_mesh(gr,a,'')
@@ -1587,40 +1929,38 @@ a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Mesh(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Fall sample, Belt sample, Mesh sample, 2D plotting samples
@subsection Fall -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Fall
-
@float
- at image{png/fall, 7cm}
- at caption{Example of Fall. @tdref{fall}}
+ at image{../png/fall, 7cm}
+ at c @caption{Example of Fall. @tdref{fall}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Box();
gr->Fall(a);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
mgl_fall(gr,a,0);
@@ -1631,7 +1971,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1)
call mgl_fall(gr,a,'')
@@ -1644,42 +1983,40 @@ a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Fall(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Belt sample, Tile sample, Fall sample, 2D plotting samples
@subsection Belt -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Belt
-
@float
- at image{png/belt, 7cm}
- at caption{Example of Belt. @tdref{belt}}
+ at image{../png/belt, 7cm}
+ at c @caption{Example of Belt. @tdref{belt}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Box();
gr->Belt(a);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -1691,7 +2028,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -1705,42 +2041,40 @@ a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Belt(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Tile sample, Boxs sample, Belt sample, 2D plotting samples
@subsection Tile -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Tile
-
@float
- at image{png/tile, 7cm}
- at caption{Example of Tile. @tdref{tile}}
+ at image{../png/tile, 7cm}
+ at c @caption{Example of Tile. @tdref{tile}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Box();
gr->Tile(a);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -1752,7 +2086,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -1766,17 +2099,16 @@ a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Tile(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Boxs sample, Dens sample, Tile sample, 2D plotting samples
@subsection Boxs -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Boxs
-
@float
- at image{png/boxs, 7cm}
- at caption{Example of Boxs. @tdref{boxs}}
+ at image{../png/boxs, 7cm}
+ at c @caption{Example of Boxs. @tdref{boxs}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40);
@@ -1787,6 +2119,7 @@ gr->Box();
gr->Boxs(a);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new a 50 40
modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
@@ -1796,11 +2129,11 @@ origin 0 0 0
box
boxs a
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_origin(gr,0.,0.,0.);
@@ -1813,7 +2146,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_origin(gr,0.,0.,0.);
@@ -1829,18 +2161,17 @@ gr.Rotate(40,60); gr.Light(True);
gr.SetOrigin(0.,0.,0.); gr.Box();
gr.Boxs(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Dens sample, Cont sample, Boxs sample, 2D plotting samples
@subsection Dens -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Dens
@cindex Colorbar
-
@float
- at image{png/dens, 7cm}
- at caption{Example of Dens & Colorbar. @tdref{dens}}
+ at image{../png/dens, 7cm}
+ at c @caption{Example of Dens & Colorbar. @tdref{dens}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40);
@@ -1850,6 +2181,7 @@ gr->Dens(a);
gr->Colorbar();
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new a 50 40
modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
@@ -1857,6 +2189,7 @@ box
dens a
colorbar
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
@@ -1884,17 +2217,16 @@ gr.Box();
gr.Dens(a);
gr.Colorbar();
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Cont sample, ContF sample, Dens sample, 2D plotting samples
@subsection Cont -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Cont
-
@float
- at image{png/cont, 7cm}
- at caption{Example of Cont. @tdref{cont}}
+ at image{../png/cont, 7cm}
+ at c @caption{Example of Cont. @tdref{cont}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40);
@@ -1904,6 +2236,7 @@ gr->Box();
gr->Cont(a);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new a 50 40
modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
@@ -1911,11 +2244,11 @@ rotate 40 60
box
cont a
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
mgl_cont(gr,a,0,7,NAN);
@@ -1929,7 +2262,6 @@ real zero, nan
zero = 0; nan = zero/zero
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1)
call mgl_cont(gr,a,'',7,nan)
@@ -1943,41 +2275,39 @@ gr.Rotate(40,60);
gr.Box();
gr.Cont(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node ContF sample, ContD sample, Cont sample, 2D plotting samples
@subsection ContF -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex ContF
-
@float
- at image{png/contf, 7cm}
- at caption{Example of ContF. @tdref{contf}}
+ at image{../png/contf, 7cm}
+ at c @caption{Example of ContF. @tdref{contf}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60); gr->Light(true);
gr->Box();
gr->ContF(a);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -1992,7 +2322,6 @@ real zero, nan
zero = 0; nan = zero/zero
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -2007,17 +2336,16 @@ gr.Rotate(40,60); gr.Light(True);
gr.Box();
gr.ContF(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node ContD sample, Axial sample, ContF sample, 2D plotting samples
@subsection ContD -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex ContD
-
@float
- at image{png/contd, 7cm}
- at caption{Example of ContD. @tdref{contd}}
+ at image{../png/contd, 7cm}
+ at c @caption{Example of ContD. @tdref{contd}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40), v(9);
@@ -2028,6 +2356,7 @@ gr->ContD(v,a);
gr->Colorbar(v);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new a 50 40
modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
@@ -2036,6 +2365,7 @@ box
contd v a
colorbar v
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
@@ -2070,22 +2400,20 @@ gr.Box();
gr.ContD(v,a);
gr.Colorbar(v);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
- at node Axial sample,, ContD sample, 2D plotting samples
+ at node Axial sample, Grad sample, ContD sample, 2D plotting samples
@subsection Axial -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Axial
-
@float
- at image{png/axial, 7cm}
- at caption{Example of Axial. @tdref{axial}}
+ at image{../png/axial, 7cm}
+ at c @caption{Example of Axial. @tdref{axial}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Alpha(true);
@@ -2093,21 +2421,21 @@ gr->Box();
gr->Axial(a);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_alpha(gr,1);
@@ -2120,7 +2448,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_alpha(gr,1)
@@ -2136,11 +2463,64 @@ gr.Rotate(40,60); gr.Light(True); gr.Alpha(True);
gr.Box();
gr.Axial(a);
@end verbatim
-
+ at end ifclear
+ at c ------------------------------------------------------------------
+ at node Grad sample, , Axial sample, 2D plotting samples
+ at subsection Grad -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
+ at cindex Grad
+ at float
+ at image{../png/grad, 7cm}
+ at c @caption{Example of Grad. @tdref{grad}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ код}
+ at verbatim
+mglData a(50,40);
+a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
+gr->Box(); gr->Alpha(true); gr->Dens(a);
+gr->Grad(a);
+ at end verbatim
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
+ at verbatim
+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
+ at end verbatim
+ at ifclear UDAV
+ at strong{C-Ñй код}
+ at verbatim
+HMDT a = mgl_create_data_size(50,40,1);
+mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
+mgl_box(gr,1);
+mgl_set_alpha(gr,1);
+mgl_dens(gr,a,0,0);
+mgl_grad(gr,a,0,0);
+mgl_delete_data(a);
+ at end verbatim
+ at strong{Fortran}
+ at verbatim
+integer a, mgl_create_data_size
+a = mgl_create_data_size(50,40,1);
+call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
+call mgl_box(gr,1)
+call mgl_set_alpha(gr,1)
+call mgl_dens(gr,a,'',0)
+call mgl_grad(gr,a,'',0)
+call mgl_delete_data(a)
+ at end verbatim
+ at strong{Python}
+ at verbatim
+a = mglData(50,40);
+a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))");
+gr.Box(); gr.Alpha(1); gr.Dens(a);
+gr.Colorbar();
+ at end verbatim
+ at end ifclear
@c ------------------------------------------------------------------
@node 3D plotting samples, Dual plotting samples, 2D plotting samples, Samples
@section ÐÑимеÑÑ 3D гÑаÑиков
-
@menu
* Surf3 sample::
* Cloud sample::
@@ -2151,25 +2531,22 @@ gr.Axial(a);
* Cont projection sample::
* Dens projection sample::
* CutMinMax sample::
-* ``Isocaps'' sample::
+* Isocaps sample::
* CutOff sample::
@end menu
-
@c ------------------------------------------------------------------
@node Surf3 sample, Cloud sample,, 3D plotting samples
@subsection Surf3 -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Surf3
-
@float
- at image{png/surf3, 7cm}
- at caption{Example of Surf3. @tdref{surf3}}
+ at image{../png/surf3, 7cm}
+ at c @caption{Example of Surf3. @tdref{surf3}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Alpha(true);
@@ -2177,21 +2554,21 @@ gr->Box();
gr->Surf3(a);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_alpha(gr,1);
@@ -2204,7 +2581,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_alpha(gr,1)
@@ -2220,42 +2596,40 @@ gr.Rotate(40,60); gr.Light(True); gr.Alpha(True);
gr.Box();
gr.Surf3(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Cloud sample, CloudP sample, Surf3 sample, 3D plotting samples
@subsection Cloud -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Cloud
-
@float
- at image{png/cloud, 7cm}
- at caption{Example of Cloud. @tdref{cloud}}
+ at image{../png/cloud, 7cm}
+ at c @caption{Example of Cloud. @tdref{cloud}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60);
gr->Alpha(true);
gr->Box();
gr->Cloud(a,"wyrRk");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_alpha(gr,1);
mgl_box(gr,1);
@@ -2267,7 +2641,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_alpha(gr,1)
call mgl_box(gr,1)
@@ -2282,36 +2655,33 @@ gr.Rotate(40,60); gr.Alpha(True);
gr.Box();
gr.Cloud(a,"wyrRk");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node CloudP sample, Dens3 sample, Cloud sample, 3D plotting samples
@subsection CloudP -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex CloudP
-
@float
- at image{png/cloudp, 7cm}
- at caption{Example of CloudP. @tdref{cloudp}}
+ at image{../png/cloudp, 7cm}
+ at c @caption{Example of CloudP. @tdref{cloudp}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60);
gr->Alpha(true);
gr->Box();
gr->CloudP(a,"wyrRk");
@end verbatim
@strong{MGL ÑкÑипÑ}
-
+ at end ifclear
Not available.
-
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_alpha(gr,1);
mgl_box(gr,1);
@@ -2323,7 +2693,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_alpha(gr,1)
call mgl_box(gr,1)
@@ -2331,36 +2700,32 @@ call mgl_cloudp(gr,a,'wyrRk',1.)
call mgl_delete_data(a)
@end verbatim
@strong{Python}
-
Not available.
-
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Dens3 sample, Cont3 sample, CloudP sample, 3D plotting samples
@subsection Dens3 -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Dens3
@cindex Axis
-
@float
- at image{png/densa, 7cm}
- at caption{Example of Dens3. @tdref{densa}}
+ at image{../png/densa, 7cm}
+ at c @caption{Example of Dens3. @tdref{densa}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60); gr->Alpha(true); gr->Org = mglPoint(0,0,0);
gr->Box();
gr->DensA(a);
gr->Axis();
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@@ -2368,11 +2733,11 @@ box
densa a
axis
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_alpha(gr,1);
mgl_set_origin(gr,0.,0.,0.);
@@ -2386,7 +2751,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_alpha(gr,1)
call mgl_set_origin(gr,0.,0.,0.);
@@ -2404,40 +2768,38 @@ gr.SetOrigin(0,0,0); gr.Box();
gr.Axis();
gr.DensA(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Cont3 sample, ContF3 sample, Dens3 sample, 3D plotting samples
@subsection Cont3 -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Cont3
-
@float
- at image{png/conta, 7cm}
- at caption{Example of Cont3. @tdref{conta}}
+ at image{../png/conta, 7cm}
+ at c @caption{Example of Cont3. @tdref{conta}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60);
gr->Box();
gr->ContA(a);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
mgl_cont_all(gr,a,0,7);
@@ -2448,7 +2810,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1)
call mgl_cont_all(gr,a,'',7)
@@ -2462,41 +2823,39 @@ gr.Rotate(40,60);
gr.Box();
gr.ContA(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node ContF3 sample, Cont projection sample, Cont3 sample, 3D plotting samples
@subsection ContF3 -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex ContF3
-
@float
- at image{png/contfa, 7cm}
- at caption{Example of ContF3. @tdref{contfa}}
+ at image{../png/contfa, 7cm}
+ at c @caption{Example of ContF3. @tdref{contfa}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60); gr->Light(true);
gr->Box();
gr->ContFA(a);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -2508,7 +2867,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -2523,24 +2881,22 @@ gr.Rotate(40,60); gr.Light(True);
gr.Box();
gr.ContFA(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Cont projection sample, Dens projection sample, ContF3 sample, 3D plotting samples
@subsection Cont projection -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex ContX
@cindex ContY
@cindex ContZ
-
@float
- at image{png/cont_xyz, 7cm}
- at caption{Example of projection by Cont[XYZ]. @tdref{cont_xyz}}
+ at image{../png/cont_xyz, 7cm}
+ at c @caption{Example of projection by Cont[XYZ]. @tdref{cont_xyz}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60);
gr->Box();
gr->ContX(a.Sum("x"),"",-1);
@@ -2548,10 +2904,10 @@ gr->ContY(a.Sum("y"),"",1);
gr->ContZ(a.Sum("z"),"",-1);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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'
@@ -2561,11 +2917,11 @@ conty s '' 1
sum s a 'z'
contz s '' -1
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(60,50,40), s;
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
s=mgl_data_sum(a,"x"); mgl_cont_x(gr,s,0,-1.,7); mgl_delete_data(s);
@@ -2578,7 +2934,6 @@ mgl_delete_data(a);
integer a,s, mgl_create_data_size, mgl_data_sum
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1)
s=mgl_data_sum(a,'x')
@@ -2601,24 +2956,22 @@ gr.ContX(a.Sum("x"),"",-1);
gr.ContY(a.Sum("y"),"",1);
gr.ContZ(a.Sum("z"),"",-1);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Dens projection sample, CutMinMax sample, Cont projection sample, 3D plotting samples
@subsection Dens projection -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex DensX
@cindex DensY
@cindex DensZ
-
@float
- at image{png/dens_xyz, 7cm}
- at caption{Example of projection by Dens[XYZ]. @tdref{dens_xyz}}
+ at image{../png/dens_xyz, 7cm}
+ at c @caption{Example of projection by Dens[XYZ]. @tdref{dens_xyz}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60);
gr->Box();
gr->DensX(a.Sum("x"),"",-1);
@@ -2626,10 +2979,10 @@ gr->DensY(a.Sum("y"),"",1);
gr->DensZ(a.Sum("z"),"",-1);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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'
@@ -2639,11 +2992,11 @@ densy s '' 1
sum s a 'z'
densz s '' -1
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a, s; a = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
s=mgl_data_sum(a,"x"); mgl_dens_x(gr,s,0,-1.); mgl_delete_data(s);
@@ -2656,7 +3009,6 @@ mgl_delete_data(a);
integer a,s, mgl_create_data_size, mgl_data_sum
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1)
s=mgl_data_sum(a,'x')
@@ -2679,24 +3031,22 @@ gr.DensX(a.Sum("x"),"",-1);
gr.DensY(a.Sum("y"),"",1);
gr.DensZ(a.Sum("z"),"",-1);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
- at node CutMinMax sample, ``Isocaps'' sample, Dens projection sample, 3D plotting samples
+ at node CutMinMax sample, Isocaps sample, Dens projection sample, 3D plotting samples
@subsection CutMinMax -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Surf3
@cindex CutMin
@cindex CutMax
-
@float
- at image{png/cutminmax, 7cm}
- at caption{Example of Surf3 & CutMin, CutMax. @tdref{cutminmax}}
+ at image{../png/cutminmax, 7cm}
+ at c @caption{Example of Surf3 & CutMin, CutMax. @tdref{cutminmax}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Alpha(true);
@@ -2705,10 +3055,10 @@ gr->Box();
gr->Surf3(a);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@@ -2716,11 +3066,11 @@ cut 0 -1 -1 1 0 1
box
surf3 a
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_alpha(gr,1);
@@ -2734,7 +3084,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_alpha(gr,1)
@@ -2751,25 +3100,23 @@ gr.Rotate(40,60); gr.Light(True); gr.Alpha(True);
gr.SetCutBox(0,-1,-1,1,0,1); gr.Box();
gr.Surf3(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
- at node ``Isocaps'' sample, CutOff sample, CutMinMax sample, 3D plotting samples
+ at node Isocaps sample, CutOff sample, CutMinMax sample, 3D plotting samples
@subsection ``Isocaps'' -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Surf3
@cindex ContF3
@cindex CutMin
@cindex CutMax
-
@float
- at image{png/cutminmax2, 7cm}
- at caption{Example of ``Isocaps''. @tdref{cutminmax2}}
+ at image{../png/cutminmax2, 7cm}
+ at c @caption{Example of ``Isocaps''. @tdref{cutminmax2}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(61,51,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60);
gr->Light(true);
gr->CutMin = mglPoint(0,-1,-1); gr->CutMax = mglPoint(1,0,1.1);
@@ -2779,10 +3126,10 @@ gr->ContF3(a,'x',-1); gr->ContF3(a,'y',-1);
gr->ContF3(a,'z', 0); gr->ContF3(a,'z',39);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@@ -2793,11 +3140,11 @@ contf3 a 'y' -1
contf3 a 'z' 0
contf3 a 'z' 39
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(61,51,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_cut_box(gr,0.,-1.,-1.,1.,0.,1.1);
@@ -2813,7 +3160,6 @@ mgl_delete_data(a);
@verbatim
a = mgl_create_data_size(61,51,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_cut_box(gr,0.,-1.,-1.,1.,0.,1.1);
@@ -2835,23 +3181,21 @@ gr.Surf3(-1,a);
gr.ContF3(a,"x",-1); gr.ContF3(a,"y",-1);
gr.ContF3(a,"z",0); gr.ContF3(a,"z",39);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
- at node CutOff sample,, ``Isocaps'' sample, 3D plotting samples
+ at node CutOff sample,, Isocaps sample, 3D plotting samples
@subsection CutOff -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Surf3
@cindex CutOff
-
@float
- at image{png/surf3_cutoff, 7cm}
- at caption{Example of Surf3 & CutOff. @tdref{surf3_cutoff}}
+ at image{../png/surf3_cutoff, 7cm}
+ at c @caption{Example of Surf3 & CutOff. @tdref{surf3_cutoff}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Alpha(true);
@@ -2860,10 +3204,10 @@ gr->Box();
gr->Surf3(a);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@@ -2871,11 +3215,11 @@ cut '(z>(x+0.5*y-1)^2-1) & (z>(x-0.5*y-1)^2-1)'
box
surf3 a
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_alpha(gr,1);
@@ -2889,7 +3233,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,'-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)',0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_alpha(gr,1)
@@ -2907,12 +3250,10 @@ gr.CutOff("(z>(x+0.5*y-1)^2-1) & (z>(x-0.5*y-1)^2-1)");
gr.Box();
gr.Surf3(a);
@end verbatim
-
-
+ at end ifclear
@c ------------------------------------------------------------------
- at node Dual plotting samples, Additional features, 3D plotting samples, Samples
+ at node Dual plotting samples, Basic features, 3D plotting samples, Samples
@section ÐÑимеÑÑ Ð¿Ð°ÑнÑÑ
/векÑоÑнÑÑ
гÑаÑиков
-
@menu
* SurfC sample::
* SurfA sample::
@@ -2935,47 +3276,44 @@ gr.Surf3(a);
* Crust sample::
* Dots sample::
@end menu
-
@c ------------------------------------------------------------------
@node SurfC sample, SurfA sample,, Dual plotting samples
@subsection SurfC -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex SurfC
-
@float
- at image{png/surfc, 7cm}
- at caption{Example of SurfC. @tdref{surfc}}
+ at image{../png/surfc, 7cm}
+ at c @caption{Example of SurfC. @tdref{surfc}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40), b(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Box();
gr->SurfC(a,b);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
HMDT b = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -2989,7 +3327,6 @@ a = mgl_create_data_size(50,40,1);
b = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
call mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -3006,23 +3343,21 @@ gr.Rotate(40,60); gr.Light(True);
gr.Box();
gr.SurfC(a,b);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node SurfA sample, TileS sample, SurfC sample, Dual plotting samples
@subsection SurfA -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex SurfA
-
@float
- at image{png/surfa, 7cm}
- at caption{Example of SurfA. @tdref{surfa}}
+ at image{../png/surfa, 7cm}
+ at c @caption{Example of SurfA. @tdref{surfa}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40), b(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Alpha(true);
@@ -3030,18 +3365,19 @@ gr->Box();
gr->SurfA(a,b);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a, b;
@@ -3049,7 +3385,6 @@ a = mgl_create_data_size(50,40,1);
b = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_alpha(gr,1);
@@ -3064,7 +3399,6 @@ a = mgl_create_data_size(50,40,1);
b = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
call mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_alpha(gr,1);
@@ -3082,36 +3416,35 @@ gr.Rotate(40,60); gr.Light(True); gr.Alpha(True);
gr.Box();
gr.SurfC(a,b);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node TileS sample, Map sample, SurfA sample, Dual plotting samples
- at subsection Tiles -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
+ at subsection TileS -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex TileS
-
@float
- at image{png/tiles, 7cm}
- at caption{Example of TileS. @tdref{tiles}}
+ at image{../png/tiles, 7cm}
+ at c @caption{Example of TileS. @tdref{tiles}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40), b(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Box();
gr->TileS(a,b);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a, b;
@@ -3119,7 +3452,6 @@ a = mgl_create_data_size(50,40,1);
b = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_box(gr,1);
mgl_tiles(gr,a,b,0);
mgl_delete_data(a); mgl_delete_data(b);
@@ -3131,7 +3463,6 @@ a = mgl_create_data_size(50,40,1);
b = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
call mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_box(gr,1)
call mgl_tiles(gr,a,b,'')
call mgl_delete_data(a)
@@ -3145,28 +3476,25 @@ b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Box();
gr.TileS(a,b);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Map sample, Traj sample, TileS sample, Dual plotting samples
@subsection Map -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Map
-
@float
- at image{png/map, 7cm}
- at caption{Example of Map. @tdref{map}}
+ at image{../png/map, 7cm}
+ at c @caption{Example of Map. @tdref{map}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50, 40), b(50, 40);
gr->Puts(mglPoint(0, 0), "\\to", "", -1.4);
gr->Axis(mglPoint(-1,-1,-2),mglPoint(1,1,2));
-
gr->SubPlot(2, 1, 0);
a.Fill("x", gr->Min, gr->Max); b.Fill("y", gr->Min, gr->Max);
gr->Puts(mglPoint(0, 1.1), "\\{x, y\\}", "C", -2); gr->Box();
gr->Map(a, b, "brgk", 0, false);
-
gr->SubPlot(2, 1, 1);
a.Fill("(x^3+y^3)/2", gr->Min, gr->Max);
b.Fill("(x-y)/2", gr->Min, gr->Max);
@@ -3175,19 +3503,18 @@ gr->Box();
gr->Map(a, b, "brgk", 0, false);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@@ -3195,27 +3522,25 @@ fill a '(x^3+y^3)/2'
fill b '(x-y)/2'
map a b 'brgk' 0 0
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
HMDT b = mgl_create_data_size(50,40,1);
mgl_puts_ext(gr, 0.,0.,0., "\\to", "", -1.4, 't');
mgl_set_axis_3d(gr,-1.,-1.,-2.,1.,1.,2.);
-
mgl_subplot(gr, 2, 1, 0);
mgl_data_fill_eq(gr, a, "x", 0, 0);
mgl_data_fill_eq(gr, b, "y", 0, 0);
mgl_puts_ext(gr, 0.,1.1,0., "\\{x, y\\}", "C", -2., 't');
mgl_box(gr,1);
mgl_map(gr, a, b, "brgk", 0, 0);
-
mgl_subplot(gr, 2, 1, 1);
mgl_data_fill_eq(gr, a, "(x^3+y^3)/2", 0, 0);
mgl_data_fill_eq(gr, b, "(x-y)/2", 0, 0);
mgl_puts_ext(gr, 0.,1.1,0., "\\{\\frac{x^3+y^3}{2}, \\frac{x-y}{2}\\}", "C", -2., 't');
mgl_box(gr,1);
mgl_map(gr, a, b, "brgk", 0, 0);
-
mgl_box(gr,1);
mgl_map(gr,a,b,0,0,1);
mgl_delete_data(a); mgl_delete_data(b);
@@ -3227,14 +3552,12 @@ a = mgl_create_data_size(50,40,1);
b = mgl_create_data_size(50,40,1);
call mgl_puts_ext(gr, 0.,0.,0., '\to', '', -1.4, 't');
call mgl_set_axis_3d(gr,-1.,-1.,-2.,1.,1.,2.);
-
call mgl_subplot(gr, 2, 1, 0);
call mgl_data_fill_eq(gr, a, 'x', 0, 0);
call mgl_data_fill_eq(gr, b, 'y', 0, 0);
call mgl_puts_ext(gr, 0.,1.1,0., '\{x, y\}', 'C', -2., 't');
call mgl_box(gr,1);
call mgl_map(gr, a, b, 'brgk', 0, 0);
-
call mgl_subplot(gr, 2, 1, 1);
call mgl_data_fill_eq(gr, a, '(x^3+y^3)/2', 0, 0);
call mgl_data_fill_eq(gr, b, '(x-y)/2', 0, 0);
@@ -3251,30 +3574,27 @@ call mgl_delete_data(b)
a, b = mglData(50,40), mglData(50,40);
gr.Puts(0, 0, 0, "\\to", "", -1.4);
gr.SetRanges(-1,1,-1,1,-2,2);
-
gr.SubPlot(2, 1, 0);
gr.Fill(a, "x"); gr.Fill(b, "y");
gr.Puts(0, 1.1, 0, "\\{x, y\\}", "C", -2);
gr.Box();
gr.Map(a, b, "brgk", 0, 0);
-
gr.SubPlot(2, 1, 1);
gr.Fill(a, "(x^3+y^3)/2"); gr.Fill(b, "(x-y)/2");
gr.Puts(0, 1.1, 0, "\\{\\frac{x^3+y^3}{2}, \\frac{x-y}{2}\\}", "C", -2);
gr.Box();
gr.Map(a, b, "brgk", 0, 0);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Traj sample, Vect sample, Map sample, Dual plotting samples
@subsection Traj -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Traj
-
@float
- at image{png/traj, 7cm}
- at caption{Example of Plot. @tdref{traj}}
+ at image{../png/traj, 7cm}
+ at c @caption{Example of Plot. @tdref{traj}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData y(50,3), x(50), y1(50), y2(50);
@@ -3284,12 +3604,12 @@ y.Modify("cos(2*pi*x)",2);
y1.Modify("0.5+0.3*cos(2*pi*x)");
y2.Modify("0.3*sin(2*pi*x)");
x.Fill(-1,1,'x');
-
gr->Box();
gr->Plot(x,y);
gr->Traj(x,y,y1,y2);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new y 50 3
new x 50
@@ -3305,6 +3625,7 @@ box
plot x y
traj x y y1 y2
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT y = mgl_create_data_size(50,3,1);
@@ -3357,28 +3678,26 @@ gr.Box();
gr.Plot(x,y);
gr.Traj(x,y,y1,y2);
@end verbatim
-
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Vect sample, VectL sample, Traj sample, Dual plotting samples
@subsection Vect -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Vect
-
@float
- at image{png/vect, 7cm}
- at caption{Example of Vect. @tdref{vect}}
+ at image{../png/vect, 7cm}
+ at c @caption{Example of Vect. @tdref{vect}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(20,30), b(20,30);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Box();
gr->Vect(a,b);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new a 20 30
new b 20 30
@@ -3387,13 +3706,13 @@ modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
box
vect a b
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(20,30,1);
HMDT b = mgl_create_data_size(20,30,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_box(gr,1);
mgl_vect_2d(gr,a,b,0,0.);
mgl_delete_data(a); mgl_delete_data(b);
@@ -3405,7 +3724,6 @@ a = mgl_create_data_size(20,30,1);
b = mgl_create_data_size(20,30,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
call mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_box(gr,1)
call mgl_vect_2d(gr,a,b,'',0.)
call mgl_delete_data(a)
@@ -3419,27 +3737,26 @@ b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Box();
gr.Vect(a,b);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node VectL sample, VectC sample, Vect sample, Dual plotting samples
@subsection VectL -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex VectL
-
@float
- at image{png/vectl, 7cm}
- at caption{Example of VectL. @tdref{vectl}}
+ at image{../png/vectl, 7cm}
+ at c @caption{Example of VectL. @tdref{vectl}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(20,30), b(20,30);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Box();
gr->VectL(a,b);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new a 20 30
new b 20 30
@@ -3448,6 +3765,7 @@ modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
box
vectl a b
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a, b;
@@ -3455,7 +3773,6 @@ a = mgl_create_data_size(20,30,1);
b = mgl_create_data_size(20,30,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_box(gr,1);
mgl_vectl_2d(gr,a,b,0,0.);
mgl_delete_data(a); mgl_delete_data(b);
@@ -3467,7 +3784,6 @@ a = mgl_create_data_size(20,30,1);
b = mgl_create_data_size(20,30,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
call mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_box(gr,1)
call mgl_vectl_2d(gr,a,b,'',0.)
call mgl_delete_data(a)
@@ -3481,28 +3797,26 @@ b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Box();
gr.VectL(a,b);
@end verbatim
-
-
+ at end ifclear
@c ------------------------------------------------------------------
@node VectC sample, Flow sample, VectL sample, Dual plotting samples
@subsection VectC -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex VectC
-
@float
- at image{png/vectc, 7cm}
- at caption{Example of VectC. @tdref{vectc}}
+ at image{../png/vectc, 7cm}
+ at c @caption{Example of VectC. @tdref{vectc}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(20,30), b(20,30);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Box();
gr->VectC(a,b);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new a 20 30
new b 20 30
@@ -3511,6 +3825,7 @@ modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
box
vectc a b
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a, b;
@@ -3518,7 +3833,6 @@ a = mgl_create_data_size(20,30,1);
b = mgl_create_data_size(20,30,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_box(gr,1);
mgl_vectc_2d(gr,a,b,0,0.);
mgl_delete_data(a); mgl_delete_data(b);
@@ -3530,7 +3844,6 @@ a = mgl_create_data_size(20,30,1);
b = mgl_create_data_size(20,30,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
call mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_box(gr,1)
call mgl_vectc_2d(gr,a,b,'',0.)
call mgl_delete_data(a)
@@ -3544,28 +3857,26 @@ b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Box();
gr.VectC(a,b);
@end verbatim
-
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Flow sample, Pipe sample, VectC sample, Dual plotting samples
@subsection Flow -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Flow
-
@float
- at image{png/flow, 7cm}
- at caption{Example of Flow. @tdref{flow}}
+ at image{../png/flow, 7cm}
+ at c @caption{Example of Flow. @tdref{flow}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(20,30), b(20,30);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Box();
gr->Flow(a,b);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new a 20 30
new b 20 30
@@ -3574,13 +3885,13 @@ modify b '0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))'
box
flow a b
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(20,30,1);
HMDT b = mgl_create_data_size(20,30,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_box(gr,1);
mgl_flow_2d(gr,a,b,0,5,1,0.);
mgl_delete_data(a); mgl_delete_data(b);
@@ -3592,7 +3903,6 @@ a = mgl_create_data_size(20,30,1);
b = mgl_create_data_size(20,30,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
call mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_box(gr,1)
call mgl_flow_2d(gr,a,b,'',5,1,0.)
call mgl_delete_data(a)
@@ -3606,17 +3916,16 @@ b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Box();
gr.Flow(a,b);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Pipe sample, Dew sample, Flow sample, Dual plotting samples
@subsection Pipe -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Pipe
-
@float
- at image{png/pipe, 7cm}
- at caption{Example of Pipe. @tdref{pipe}}
+ at image{../png/pipe, 7cm}
+ at c @caption{Example of Pipe. @tdref{pipe}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(20,30), b(20,30);
@@ -3627,6 +3936,7 @@ gr->Box();
gr->Pipe(a,b);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new a 20 30
new b 20 30
@@ -3636,6 +3946,7 @@ light on
box
pipe a b
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(20,30,1);
@@ -3668,17 +3979,16 @@ b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Light(True); gr.Box();
gr.Pipe(a,b);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Dew sample, Surf3C sample, Pipe sample, Dual plotting samples
@subsection Dew -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Dew
-
@float
- at image{png/dew, 7cm}
- at caption{Example of Dew. @tdref{dew}}
+ at image{../png/dew, 7cm}
+ at c @caption{Example of Dew. @tdref{dew}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(20,30), b(20,30);
@@ -3689,6 +3999,7 @@ gr->Light(true);
gr->Dew(a,b);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new a 20 30
new b 20 30
@@ -3698,6 +4009,7 @@ box
light on
dew a b
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(20,30,1);
@@ -3730,23 +4042,21 @@ b.Modify("0.6*cos(2*pi*x)*cos(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Light(True); gr.Box();
gr.Dew(a,b);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Surf3C sample, Surf3A sample, Dew sample, Dual plotting samples
@subsection Surf3C -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Surf3C
-
@float
- at image{png/surf3c, 7cm}
- at caption{Example of Surf3C. @tdref{surf3c}}
+ at image{../png/surf3c, 7cm}
+ at c @caption{Example of Surf3C. @tdref{surf3c}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(60,50,40), b(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
b.Modify("1-2*tanh(4*(x+y-1)^2)");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Alpha(true);
@@ -3754,25 +4064,25 @@ gr->Box();
gr->Surf3C(a, b);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(60,50,40);
HMDT b = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
mgl_data_modify(b,"1-2*tanh(4*(x+y-1)^2)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_alpha(gr,1);
@@ -3787,7 +4097,6 @@ a = mgl_create_data_size(60,50,40);
b = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
call mgl_data_modify(b,"1-2*tanh(4*(x+y-1)^2)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_alpha(gr,1)
@@ -3805,24 +4114,21 @@ gr.Rotate(40,60); gr.Light(True); gr.Alpha(True);
gr.Box();
gr.Surf3C(a,b);
@end verbatim
-
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Surf3A sample, Vect 3D sample, Surf3C sample, Dual plotting samples
@subsection Surf3A -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Surf3A
-
@float
- at image{png/surf3a, 7cm}
- at caption{Example of Surf3A. @tdref{surf3a}}
+ at image{../png/surf3a, 7cm}
+ at c @caption{Example of Surf3A. @tdref{surf3a}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(60,50,40), b(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
b.Modify("1-2*tanh(4*(x+y-1)^2)");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Alpha(true);
@@ -3830,25 +4136,25 @@ gr->Box();
gr->Surf3A(a, b);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a, b; a = mgl_create_data_size(60,50,40);
b = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
mgl_data_modify(b,"1-2*tanh(4*(x+y-1)^2)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_alpha(gr,1);
@@ -3863,7 +4169,6 @@ a = mgl_create_data_size(60,50,40);
b = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
call mgl_data_modify(b,"1-2*tanh(4*(x+y-1)^2)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_alpha(gr,1)
@@ -3881,17 +4186,16 @@ gr.Rotate(40,60); gr.Light(True); gr.Alpha(True);
gr.Box();
gr.Surf3A(a,b);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Vect 3D sample, VectL 3D sample, Surf3A sample, Dual plotting samples
@subsection Vect 3D -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Vect
-
@float
- at image{png/vect3, 7cm}
- at caption{Example of Vect in 3D. @tdref{vect3}}
+ at image{../png/vect3, 7cm}
+ at c @caption{Example of Vect in 3D. @tdref{vect3}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData ex(10,10,10), ey(10,10,10), ez(10,10,10);
@@ -3906,6 +4210,7 @@ gr->Box();
gr->Vect(ex, ey, ez, "bwr");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new ex 10 10 10
new ey 10 10 10
@@ -3913,11 +4218,11 @@ 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'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT ex, ey, ez;
@@ -3930,7 +4235,6 @@ mgl_data_fill_eq(gr, 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)",0,0);
mgl_data_fill_eq(gr, 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)",0,0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
mgl_vect_3d(gr,ex,ey,ez,"bwr");
@@ -3948,7 +4252,6 @@ call mgl_data_fill_eq(gr, 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)',0,0);
call mgl_data_fill_eq(gr, 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)',0,0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1);
call mgl_vect_3d(gr,ex,ey,ez,'bwr')
@@ -3968,17 +4271,16 @@ gr.Fill(ez, "0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - \
gr.Rotate(40,60); gr.Box();
gr.Vect(ex,ey,ez,"bwr");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node VectL 3D sample, VectC 3D sample, Vect 3D sample, Dual plotting samples
@subsection VectL 3D -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex VectL
-
@float
- at image{png/vectl3, 7cm}
- at caption{Example of VectL in 3D. @tdref{vectl3}}
+ at image{../png/vectl3, 7cm}
+ at c @caption{Example of VectL in 3D. @tdref{vectl3}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData ex(10,10,10), ey(10,10,10), ez(10,10,10);
@@ -3993,6 +4295,7 @@ gr->Box();
gr->VectL(ex, ey, ez, "bwr");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new ex 10 10 10
new ey 10 10 10
@@ -4000,11 +4303,11 @@ 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'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT ex, ey, ez;
@@ -4017,7 +4320,6 @@ mgl_data_fill_eq(gr, 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)",0,0);
mgl_data_fill_eq(gr, 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)",0,0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
mgl_vectl_3d(gr,ex,ey,ez,"bwr");
@@ -4035,7 +4337,6 @@ call mgl_data_fill_eq(gr, 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)',0,0);
call mgl_data_fill_eq(gr, 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)',0,0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1);
call mgl_vectl_3d(gr,ex,ey,ez,'bwr')
@@ -4055,17 +4356,16 @@ gr.Fill(ez, "0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - \
gr.Rotate(40,60); gr.Box();
gr.VectL(ex,ey,ez,"bwr");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node VectC 3D sample, Flow 3D sample, VectL 3D sample, Dual plotting samples
@subsection VectC 3D -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex VectC
-
@float
- at image{png/vectc3, 7cm}
- at caption{Example of VectC in 3D. @tdref{vectc3}}
+ at image{../png/vectc3, 7cm}
+ at c @caption{Example of VectC in 3D. @tdref{vectc3}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData ex(10,10,10), ey(10,10,10), ez(10,10,10);
@@ -4080,6 +4380,7 @@ gr->Box();
gr->VectC(ex, ey, ez, "bwr");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new ex 10 10 10
new ey 10 10 10
@@ -4087,11 +4388,11 @@ 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'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT ex, ey, ez;
@@ -4104,7 +4405,6 @@ mgl_data_fill_eq(gr, 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)",0,0);
mgl_data_fill_eq(gr, 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)",0,0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
mgl_vectc_3d(gr,ex,ey,ez,"bwr");
@@ -4122,7 +4422,6 @@ call mgl_data_fill_eq(gr, 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)',0,0);
call mgl_data_fill_eq(gr, 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)',0,0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1);
call mgl_vectc_3d(gr,ex,ey,ez,'bwr')
@@ -4142,17 +4441,16 @@ gr.Fill(ez, "0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - \
gr.Rotate(40,60); gr.Box();
gr.VectC(ex,ey,ez,"bwr");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Flow 3D sample, Pipe 3D sample, VectC 3D sample, Dual plotting samples
@subsection Flow 3D -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Flow
-
@float
- at image{png/flow3, 7cm}
- at caption{Example of Flow in 3D. @tdref{flow3}}
+ at image{../png/flow3, 7cm}
+ at c @caption{Example of Flow in 3D. @tdref{flow3}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData ex(30,30,30), ey(30,30,30), ez(30,30,30);
@@ -4167,6 +4465,7 @@ gr->Box();
gr->Flow(ex, ey, ez, "bwr");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new ex 30 30 30
new ey 30 30 30
@@ -4174,11 +4473,11 @@ 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'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT ex, ey, ez;
@@ -4191,7 +4490,6 @@ mgl_data_fill_eq(gr, 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)",0,0);
mgl_data_fill_eq(gr, 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)",0,0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
mgl_flow_3d(gr,ex,ey,ez,"bwr",3,1);
@@ -4209,7 +4507,6 @@ call mgl_data_fill_eq(gr, 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)',0,0);
call mgl_data_fill_eq(gr, 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)',0,0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1);
call mgl_flow_3d(gr,ex,ey,ez,'bwr',3,1)
@@ -4229,17 +4526,16 @@ gr.Fill(ez, "0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - \
gr.Rotate(40,60); gr.Box();
gr.Flow(ex,ey,ez,"bwr");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Pipe 3D sample, Crust sample, Flow 3D sample, Dual plotting samples
@subsection Pipe 3D -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Pipe
-
@float
- at image{png/pipe3, 7cm}
- at caption{Example of Pipe in 3D. @tdref{pipe3}}
+ at image{../png/pipe3, 7cm}
+ at c @caption{Example of Pipe in 3D. @tdref{pipe3}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData ex(10,10,10), ey(10,10,10), ez(10,10,10);
@@ -4255,6 +4551,7 @@ gr->Box();
gr->Pipe(ex, ey, ez, "bwr");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new ex 10 10 10
new ey 10 10 10
@@ -4262,12 +4559,12 @@ 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'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT ex, ey, ez;
@@ -4280,7 +4577,6 @@ mgl_data_fill_eq(gr, 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)",0,0);
mgl_data_fill_eq(gr, 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)",0,0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -4299,7 +4595,6 @@ call mgl_data_fill_eq(gr, 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)',0,0);
call mgl_data_fill_eq(gr, 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)',0,0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1);
call mgl_box(gr,1);
@@ -4320,17 +4615,16 @@ gr.Fill(ez, "0.2*(z-0.3)/pow(x^2+y^2+(z-0.3)^2,1.5) - \
gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Pipe(ex,ey,ez,"bwr");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Crust sample, Dots sample, Pipe 3D sample, Dual plotting samples
@subsection Crust -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Crust
-
@float
- at image{png/crust, 7cm}
- at caption{Example of Crust. @tdref{crust}}
+ at image{../png/crust, 7cm}
+ at c @caption{Example of Crust. @tdref{crust}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a("hotdogs.pts");
@@ -4341,6 +4635,7 @@ gr->Box();
gr->Crust(a,"p");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
read a 'hotdogs.pts'
norm a -1 1 on
@@ -4349,6 +4644,7 @@ light on
box
crust a 'p'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_file("hotdogs.pts");
@@ -4378,17 +4674,16 @@ gr.Rotate(40,60); gr.Light(True);
gr.Box();
gr.Crust(a);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Dots sample,, Crust sample, Dual plotting samples
@subsection Dots -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Dots
-
@float
- at image{png/dots, 7cm}
- at caption{Example of Dots. @tdref{dots}}
+ at image{../png/dots, 7cm}
+ at c @caption{Example of Dots. @tdref{dots}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a("hotdogs.pts");
@@ -4398,6 +4693,7 @@ gr->Box();
gr->Dots(a,"p");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
read a 'hotdogs.pts'
norm a -1 1 on
@@ -4405,6 +4701,7 @@ rotate 40 60
box
dots a 'p'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_file("hotdogs.pts");
@@ -4432,13 +4729,690 @@ gr.Rotate(40,60); gr.Light(True);
gr.Box();
gr.Dots(a);
@end verbatim
+ at end ifclear
+
+
+ at c ------------------------------------------------------------------
+ at node Basic features, Additional features, Dual plotting samples, Samples
+ at section ÐазовÑе возможноÑÑи
+ at 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::
+ at end menu
+ at c ------------------------------------------------------------------
+ at node 1D plot sample, 2D plot sample, , Basic features
+ at subsection ÐÑÐ¸Ð¼ÐµÑ Ð³ÑаÑиков 1D даннÑÑ
+ at cindex Plot
+ at cindex Bars
+ at cindex SubPlot
+ at float
+ at image{../png/sample8, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ код}
+ at verbatim
+mglData y0(50); y0.Modify("sin(pi*(2*x-1))");
+gr->SubPlot(2,2,0);
+gr->Plot(y0); gr->Box();
+
+gr->SubPlot(2,2,1);
+mglData y1(50,2);
+y1.Modify("sin(pi*2*x-pi)"); y1.Modify("cos(pi*2*x-pi)/2",1);
+gr->Plot(y1); gr->Box();
+
+mglData x(50); x.Modify("cos(pi*2*x-pi)");
+gr->Plot(x,y0,"Y+");
+
+gr->Plot(y1.SubData(-1,0),y1.SubData(-1,1),"q|");
+gr->SubPlot(2,2,2); gr->Rotate(60,40);
+mglData z(50); z.Modify("2*x-1");
+gr->Plot(x,y0,z); gr->Box();
+mglData y2(10,3); y2.Modify("cos(pi*(2*x-1-y))");
+y2.Modify("2*x-1",2);
+gr->Plot(y2.SubData(-1,0),y2.SubData(-1,1),y2.SubData(-1,2),"bo ");
+
+gr->SubPlot(2,2,3); gr->Rotate(60,40);
+gr->Bars(x,y0,z,"ri"); gr->Box();
+ at end verbatim
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
+ at verbatim
+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
+ at end verbatim
@c ------------------------------------------------------------------
- at node Additional features, Advanced features, Dual plotting samples, Samples
- at section ÐополниÑелÑнÑе возможноÑÑи
+ at node 2D plot sample, 3D plot sample, 1D plot sample, Basic features
+ at subsection ÐÑÐ¸Ð¼ÐµÑ Ð³ÑаÑиков 2D даннÑÑ
+ at cindex Surf
+ at cindex Dens
+ at cindex Alpha
+ at float
+ at image{../png/sample9, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ код}
+ at verbatim
+gr->Light(true);
+mglData a0(50,40);
+a0.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
+gr->SubPlot(2,2,0); gr->Rotate(60,40);
+gr->Surf(a0); gr->Box();
+
+mglData x(50,40),y(50,40),z(50,40);
+x.Modify("0.8*sin(2*pi*x)*sin(pi*y)");
+y.Modify("0.8*cos(2*pi*x)*sin(pi*y)");
+z.Modify("0.8*cos(pi*y)");
+gr->SubPlot(2,2,1); gr->Rotate(60,40);
+gr->Surf(x,y,z,"BbwrR"); gr->Box();
+
+mglData a1(50,40,3);
+a1.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
+a1.Modify("0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*sin(3*pi*(x*y))",1);
+a1.Modify("0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",2);
+gr->SubPlot(2,2,2); gr->Rotate(60,40);
+gr->Alpha(true);
+gr->Surf(a1); gr->Box();
+
+gr->SubPlot(2,2,3); gr->Rotate(60,40);
+gr->Dens(a1); gr->Box();
+ at end verbatim
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
+ at verbatim
+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
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node 3D plot sample, Line styles sample, 2D plot sample, Basic features
+ at subsection ÐÑÐ¸Ð¼ÐµÑ Ð³ÑаÑиков 3D даннÑÑ
+ at cindex Surf
+ at cindex Dens
+ at cindex Alpha
+ at float
+ at image{../png/sampleb, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ код}
+ at verbatim
+gr->Alpha(true); gr->Light(true); gr->Light(0,mglPoint(0,0,1));
+mglData a(30,30,30), b(30,30,30);
+a.Modify("exp(-16*((z-0.5)^2+(y-0.5)^2)/(1+4*x^2))");
+b.Modify("16*((z-0.5)^2+(y-0.5)^2)*(x)/(1+4*x^2)");
+gr->CAxis(0,1);
+
+gr->SubPlot(2,2,0); gr->Rotate(40,60);
+gr->Surf3(a,"wgk"); gr->Box();
+gr->SubPlot(2,2,1); gr->Rotate(40,60);
+gr->DensA(a); gr->Box(); gr->Axis();
+gr->SubPlot(2,2,2); gr->Rotate(40,60);
+gr->Cloud(a); gr->Box();
+gr->SubPlot(2,2,3); gr->Rotate(40,60);
+gr->Surf3A(b,a,"q"); gr->Box();
+ at end verbatim
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
+ at verbatim
+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
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node Line styles sample, Arrow styles sample, 3D plot sample, Basic features
+ at subsection ÐÑÐ¸Ð¼ÐµÑ ÑÑилей линий и маÑкеÑов
+ at cindex Mark
+ at cindex Line
+ at float
+ at image{../png/sample5, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ код}
+ at verbatim
+float d,x1,x2,x0,y=0.95;
+d=0.3, x0=0.2, x1=0.5, x2=0.6;
+gr->Line(mglPoint(x0,1-0*d),mglPoint(x1,1-0*d),"k-"); gr->Puts(mglPoint(x2,y-0*d),"Solid '-'","rL");
+gr->Line(mglPoint(x0,1-1*d),mglPoint(x1,1-1*d),"k|"); gr->Puts(mglPoint(x2,y-1*d),"Long Dash '|'","rL");
+gr->Line(mglPoint(x0,1-2*d),mglPoint(x1,1-2*d),"k;"); gr->Puts(mglPoint(x2,y-2*d),"Dash ';'","rL");
+gr->Line(mglPoint(x0,1-3*d),mglPoint(x1,1-3*d),"k="); gr->Puts(mglPoint(x2,y-3*d),"Small dash '='","rL");
+gr->Line(mglPoint(x0,1-4*d),mglPoint(x1,1-4*d),"kj"); gr->Puts(mglPoint(x2,y-4*d),"Dash-dot 'j'","rL");
+gr->Line(mglPoint(x0,1-5*d),mglPoint(x1,1-5*d),"ki"); gr->Puts(mglPoint(x2,y-5*d),"Small dash-dot 'i'","rL");
+gr->Line(mglPoint(x0,1-6*d),mglPoint(x1,1-6*d),"k:"); gr->Puts(mglPoint(x2,y-6*d),"Dots ':'","rL");
+gr->Line(mglPoint(x0,1-7*d),mglPoint(x1,1-7*d),"k "); gr->Puts(mglPoint(x2,y-7*d),"None ' '","rL");
+
+d=0.25; x1=-1; x0=-0.8; y = -0.05;
+gr->Mark(mglPoint(x1,5*d),'.'); gr->Puts(mglPoint(x0,y+5*d),"'.'","rL");
+gr->Mark(mglPoint(x1,4*d),'+'); gr->Puts(mglPoint(x0,y+4*d),"'+'","rL");
+gr->Mark(mglPoint(x1,3*d),'x'); gr->Puts(mglPoint(x0,y+3*d),"'x'","rL");
+gr->Mark(mglPoint(x1,2*d),'*'); gr->Puts(mglPoint(x0,y+2*d),"'*'","rL");
+gr->Mark(mglPoint(x1,d),'s'); gr->Puts(mglPoint(x0,y+d),"'s'","rL");
+gr->Mark(mglPoint(x1,0),'d'); gr->Puts(mglPoint(x0,y),"'d'","rL");
+gr->Mark(mglPoint(x1,-d,0),'o'); gr->Puts(mglPoint(x0,y-d),"'o'","rL");
+gr->Mark(mglPoint(x1,-2*d,0),'^'); gr->Puts(mglPoint(x0,y-2*d),"'\\^'","rL");
+gr->Mark(mglPoint(x1,-3*d,0),'v'); gr->Puts(mglPoint(x0,y-3*d),"'v'","rL");
+gr->Mark(mglPoint(x1,-4*d,0),'<'); gr->Puts(mglPoint(x0,y-4*d),"'<'","rL");
+gr->Mark(mglPoint(x1,-5*d,0),'>'); gr->Puts(mglPoint(x0,y-5*d),"'>'","rL");
+
+d=0.25; x1=-0.5; x0=-0.3; y = -0.05;
+gr->Mark(mglPoint(x1,5*d),'C'); gr->Puts(mglPoint(x0,y+5*d),"'\\#.'","rL");
+gr->Mark(mglPoint(x1,4*d),'P'); gr->Puts(mglPoint(x0,y+4*d),"'\\#+'","rL");
+gr->Mark(mglPoint(x1,3*d),'X'); gr->Puts(mglPoint(x0,y+3*d),"'\\#x'","rL");
+gr->Mark(mglPoint(x1,2*d),'Y'); gr->Puts(mglPoint(x0,y+2*d),"'\\#*'","rL");
+gr->Mark(mglPoint(x1,d),'S'); gr->Puts(mglPoint(x0,y+d),"'\\#s'","rL");
+gr->Mark(mglPoint(x1,0),'D'); gr->Puts(mglPoint(x0,y),"'\\#d'","rL");
+gr->Mark(mglPoint(x1,-d,0),'O'); gr->Puts(mglPoint(x0,y-d),"'\\#o'","rL");
+gr->Mark(mglPoint(x1,-2*d,0),'T'); gr->Puts(mglPoint(x0,y-2*d),"'\\#\\^'","rL");
+gr->Mark(mglPoint(x1,-3*d,0),'V'); gr->Puts(mglPoint(x0,y-3*d),"'\\#v'","rL");
+gr->Mark(mglPoint(x1,-4*d,0),'L'); gr->Puts(mglPoint(x0,y-4*d),"'\\#<'","rL");
+gr->Mark(mglPoint(x1,-5*d,0),'R'); gr->Puts(mglPoint(x0,y-5*d),"'\\#>'","rL");
+ at end verbatim
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
+ at verbatim
+NOT AVAILABLE
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node Arrow styles sample, Text styles sample, Line styles sample, Basic features
+ at subsection ÐÑÐ¸Ð¼ÐµÑ ÑÑилей ÑÑÑелок
+ at cindex Line
+ at float
+ at image{../png/sampled, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ код}
+ at verbatim
+float a=0.1,b=0.4,c=0.5;
+gr->Line(mglPoint(a,1),mglPoint(b,1),"k-A"); gr->Puts(mglPoint(c,1),"Style 'A' or 'A\\_'","rL");
+gr->Line(mglPoint(a,0.8),mglPoint(b,0.8),"k-V"); gr->Puts(mglPoint(c,0.8),"Style 'V' or 'V\\_'","rL");
+gr->Line(mglPoint(a,0.6),mglPoint(b,0.6),"k-K"); gr->Puts(mglPoint(c,0.6),"Style 'K' or 'K\\_'","rL");
+gr->Line(mglPoint(a,0.4),mglPoint(b,0.4),"k-I"); gr->Puts(mglPoint(c,0.4),"Style 'I' or 'I\\_'","rL");
+gr->Line(mglPoint(a,0.2),mglPoint(b,0.2),"k-D"); gr->Puts(mglPoint(c,0.2),"Style 'D' or 'D\\_'","rL");
+gr->Line(mglPoint(a,0),mglPoint(b,0),"k-S"); gr->Puts(mglPoint(c,0),"Style 'S' or 'S\\_'","rL");
+gr->Line(mglPoint(a,-0.2),mglPoint(b,-0.2),"k-O"); gr->Puts(mglPoint(c,-0.2),"Style 'O' or 'O\\_'","rL");
+gr->Line(mglPoint(a,-0.4),mglPoint(b,-0.4),"k-T"); gr->Puts(mglPoint(c,-0.4),"Style 'T' or 'T\\_'","rL");
+gr->Line(mglPoint(a,-0.6),mglPoint(b,-0.6),"k-_"); gr->Puts(mglPoint(c,-0.6),"Style '\\_' or none","rL");
+gr->Line(mglPoint(a,-0.8),mglPoint(b,-0.8),"k-AS"); gr->Puts(mglPoint(c,-0.8),"Style 'AS'","rL");
+gr->Line(mglPoint(a,-1),mglPoint(b,-1),"k-_A"); gr->Puts(mglPoint(c,-1),"Style '\\_A'","rL");
+
+a=-1; b=-0.7; c=-0.6;
+gr->Line(mglPoint(a,1),mglPoint(b,1),"kAA"); gr->Puts(mglPoint(c,1),"Style 'AA'","rL");
+gr->Line(mglPoint(a,0.8),mglPoint(b,0.8),"kVV"); gr->Puts(mglPoint(c,0.8),"Style 'VV'","rL");
+gr->Line(mglPoint(a,0.6),mglPoint(b,0.6),"kKK"); gr->Puts(mglPoint(c,0.6),"Style 'KK'","rL");
+gr->Line(mglPoint(a,0.4),mglPoint(b,0.4),"kII"); gr->Puts(mglPoint(c,0.4),"Style 'II'","rL");
+gr->Line(mglPoint(a,0.2),mglPoint(b,0.2),"kDD"); gr->Puts(mglPoint(c,0.2),"Style 'DD'","rL");
+gr->Line(mglPoint(a,0),mglPoint(b,0),"kSS"); gr->Puts(mglPoint(c,0),"Style 'SS'","rL");
+gr->Line(mglPoint(a,-0.2),mglPoint(b,-0.2),"kOO"); gr->Puts(mglPoint(c,-0.2),"Style 'OO'","rL");
+gr->Line(mglPoint(a,-0.4),mglPoint(b,-0.4),"kTT"); gr->Puts(mglPoint(c,-0.4),"Style 'TT'","rL");
+gr->Line(mglPoint(a,-0.6),mglPoint(b,-0.6),"k-__"); gr->Puts(mglPoint(c,-0.6),"Style '\\_\\_'","rL");
+gr->Line(mglPoint(a,-0.8),mglPoint(b,-0.8),"k-VA"); gr->Puts(mglPoint(c,-0.8),"Style 'VA'","rL");
+gr->Line(mglPoint(a,-1),mglPoint(b,-1),"k-AV"); gr->Puts(mglPoint(c,-1),"Style 'AV'","rL");
+ at end verbatim
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
+ at verbatim
+NOT AVAILABLE
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node Text styles sample, TeX parsing sample, Arrow styles sample, Basic features
+ at subsection ÐÑÐ¸Ð¼ÐµÑ ÑÑилей ÑекÑÑа
+ at cindex Puts
+ at float
+ at image{../png/sample4, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ код}
+ at verbatim
+gr->Putsw(mglPoint(0,1),L"Text can be in ASCII and in Unicode");
+gr->Puts(mglPoint(0,0.6),"It can be \\wire{wire}, \\big{big} or #r{colored}");
+gr->Puts(mglPoint(0,0.2),"One can change style in string: "
+ "\\b{bold}, \\i{italic, \\b{both}}");
+gr->Puts(mglPoint(0,-0.2),"Easy to \\a{overline} or "
+ "\\u{underline}");
+gr->Puts(mglPoint(0,-0.6),"Easy to change indexes ^{up} _{down} @{center}");
+gr->Puts(mglPoint(0,-1),"It parse TeX: \\int \\alpha \\cdot "
+ "\\sqrt3{sin(\\pi x)^2 + \\gamma_{i_k}} dx");
+ at end verbatim
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
+ at verbatim
+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'
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node TeX parsing sample, Font faces sample, Text styles sample, Basic features
+ at subsection ÐÑÐ¸Ð¼ÐµÑ TeX ÑоÑмÑлÑ
+ at cindex Puts
+ at float
+ at image{../png/samplee, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ код}
+ at verbatim
+gr->Puts(mglPoint(0), "\\sqrt{\\frac{\\alpha^{\\gamma^2}+"
+ "\\overset 1{\\big\\infty}}{\\sqrt3{2+b}}}", 0, -4);
+ at end verbatim
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
+ at verbatim
+text 0 0 '\sqrt{\frac{\alpha^{\gamma^2}+\overset 1{\big\infty}}{\sqrt3{2+b}}}' '' -4
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node Font faces sample, Colors sample, TeX parsing sample, Basic features
+ at subsection ÐÑимеÑÑ Ð½Ð°ÑеÑÑаний ÑÑиÑÑа
+ at cindex Puts
+ at float
+ at image{../png/fonts, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ код}
+ at verbatim
+float h=1.1, d=0.25;
+gr->LoadFont("STIX"); gr->Puts(mglPoint(0,h), "default font (STIX)");
+gr->LoadFont("adventor"); gr->Puts(mglPoint(0,h-d), "adventor font");
+gr->LoadFont("bonum"); gr->Puts(mglPoint(0,h-2*d), "bonum font");
+gr->LoadFont("chorus"); gr->Puts(mglPoint(0,h-3*d), "chorus font");
+gr->LoadFont("cursor"); gr->Puts(mglPoint(0,h-4*d), "cursor font");
+gr->LoadFont("heros"); gr->Puts(mglPoint(0,h-5*d), "heros font");
+gr->LoadFont("heroscn"); gr->Puts(mglPoint(0,h-6*d), "heroscn font");
+gr->LoadFont("pagella"); gr->Puts(mglPoint(0,h-7*d), "pagella font");
+gr->LoadFont("schola"); gr->Puts(mglPoint(0,h-8*d), "schola font");
+gr->LoadFont("termes"); gr->Puts(mglPoint(0,h-9*d), "termes font");
+ at end verbatim
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
+ at verbatim
+NOT AVAILABLE
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node Colors sample, Color schemes sample, Font faces sample, Basic features
+ at subsection ÐÑимеÑÑ ÑвеÑов
+ at float
+ at image{../png/colors, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ код}
+ at verbatim
+//#LENUQ
+gr->FaceZ(-1, -1, 0, 0.4, 0.3, "L#"); gr->Puts(mglPoint(-0.8,-0.9), "L", "C:w", -1.4);
+gr->FaceZ(-0.6, -1, 0, 0.4, 0.3, "E#"); gr->Puts(mglPoint(-0.4,-0.9), "E", "C:w", -1.4);
+gr->FaceZ(-0.2, -1, 0, 0.4, 0.3, "N#"); gr->Puts(mglPoint(0, -0.9), "N", "C:w", -1.4);
+gr->FaceZ(0.2, -1, 0, 0.4, 0.3, "U#"); gr->Puts(mglPoint(0.4,-0.9), "U", "C:w", -1.4);
+gr->FaceZ(0.6, -1, 0, 0.4, 0.3, "Q#"); gr->Puts(mglPoint(0.8,-0.9), "Q", "C:w", -1.4);
+//#lenuq
+gr->FaceZ(-1, -0.7, 0, 0.4, 0.3, "l#"); gr->Puts(mglPoint(-0.8,-0.6), "l", "C:k", -1.4);
+gr->FaceZ(-0.6, -0.7, 0, 0.4, 0.3, "e#"); gr->Puts(mglPoint(-0.4,-0.6), "e", "C:k", -1.4);
+gr->FaceZ(-0.2, -0.7, 0, 0.4, 0.3, "n#"); gr->Puts(mglPoint(0, -0.6), "n", "C:k", -1.4);
+gr->FaceZ(0.2, -0.7, 0, 0.4, 0.3, "u#"); gr->Puts(mglPoint(0.4,-0.6), "u", "C:k", -1.4);
+gr->FaceZ(0.6, -0.7, 0, 0.4, 0.3, "q#"); gr->Puts(mglPoint(0.8,-0.6), "q", "C:k", -1.4);
+//#CMYkP
+gr->FaceZ(-1, -0.4, 0, 0.4, 0.3, "C#"); gr->Puts(mglPoint(-0.8,-0.3), "C", "C:w", -1.4);
+gr->FaceZ(-0.6, -0.4, 0, 0.4, 0.3, "M#"); gr->Puts(mglPoint(-0.4,-0.3), "M", "C:w", -1.4);
+gr->FaceZ(-0.2, -0.4, 0, 0.4, 0.3, "Y#"); gr->Puts(mglPoint(0, -0.3), "Y", "C:w", -1.4);
+gr->FaceZ(0.2, -0.4, 0, 0.4, 0.3, "k#"); gr->Puts(mglPoint(0.4,-0.3), "k", "C:w", -1.4);
+gr->FaceZ(0.6, -0.4, 0, 0.4, 0.3, "P#"); gr->Puts(mglPoint(0.8,-0.3), "P", "C:w", -1.4);
+//#cmywp
+gr->FaceZ(-1, -0.1, 0, 0.4, 0.3, "c#"); gr->Puts(mglPoint(-0.8, 0), "c", "C:k", -1.4);
+gr->FaceZ(-0.6, -0.1, 0, 0.4, 0.3, "m#"); gr->Puts(mglPoint(-0.4, 0), "m", "C:k", -1.4);
+gr->FaceZ(-0.2, -0.1, 0, 0.4, 0.3, "y#"); gr->Puts(mglPoint(0, 0), "y", "C:k", -1.4);
+gr->FaceZ(0.2, -0.1, 0, 0.4, 0.3, "w#"); gr->Puts(mglPoint(0.4, 0), "w", "C:k", -1.4);
+gr->FaceZ(0.6, -0.1, 0, 0.4, 0.3, "p#"); gr->Puts(mglPoint(0.8, 0), "p", "C:k", -1.4);
+//#BGRHW
+gr->FaceZ(-1, 0.2, 0, 0.4, 0.3, "B#"); gr->Puts(mglPoint(-0.8, 0.3), "B", "C:w", -1.4);
+gr->FaceZ(-0.6, 0.2, 0, 0.4, 0.3, "G#"); gr->Puts(mglPoint(-0.4, 0.3), "G", "C:w", -1.4);
+gr->FaceZ(-0.2, 0.2, 0, 0.4, 0.3, "R#"); gr->Puts(mglPoint(0, 0.3), "R", "C:w", -1.4);
+gr->FaceZ(0.2, 0.2, 0, 0.4, 0.3, "H#"); gr->Puts(mglPoint(0.4, 0.3), "H", "C:w", -1.4);
+gr->FaceZ(0.6, 0.2, 0, 0.4, 0.3, "W#"); gr->Puts(mglPoint(0.8, 0.3), "W", "C:w", -1.4);
+//#bgrhw
+gr->FaceZ(-1, 0.2, 0, 0.4, 0.3, "b#"); gr->Puts(mglPoint(-0.8, 0.6), "b", "C:k", -1.4);
+gr->FaceZ(-0.6, 0.5, 0, 0.4, 0.3, "g#"); gr->Puts(mglPoint(-0.4, 0.6), "g", "C:k", -1.4);
+gr->FaceZ(-0.2, 0.2, 0, 0.4, 0.3, "r#"); gr->Puts(mglPoint(0, 0.6), "r", "C:k", -1.4);
+gr->FaceZ(0.2, 0.2, 0, 0.4, 0.3, "h#"); gr->Puts(mglPoint(0.4, 0.6), "h", "C:k", -1.4);
+gr->FaceZ(0.6, 0.2, 0, 0.4, 0.3, "w#"); gr->Puts(mglPoint(0.8, 0.6), "w", "C:k", -1.4);
+//#brighted
+gr->FaceZ(-1, 0.8, 0, 0.4, 0.3, "r1#"); gr->Puts(mglPoint(-0.8, 0.9), "r1", "C:w", -1.4);
+gr->FaceZ(-0.6, 0.8, 0, 0.4, 0.3, "r3#"); gr->Puts(mglPoint(-0.4, 0.9), "r3", "C:w", -1.4);
+gr->FaceZ(-0.2, 0.8, 0, 0.4, 0.3, "r5#"); gr->Puts(mglPoint(0, 0.9), "r5", "C:k", -1.4);
+gr->FaceZ(0.2, 0.8, 0, 0.4, 0.3, "r7#"); gr->Puts(mglPoint(0.4, 0.9), "r7", "C:k", -1.4);
+gr->FaceZ(0.6, 0.8, 0, 0.4, 0.3, "r9#"); gr->Puts(mglPoint(0.8, 0.9), "r9", "C:k", -1.4);
+ at end verbatim
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
+ at verbatim
+#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'
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node Color schemes sample, Normal transparency, Colors sample, Basic features
+ at subsection ÐÑимеÑÑ ÑвеÑовÑÑ
ÑÑ
ем
+ at cindex Colorbar
+ at float
+ at image{../png/color_schemes, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ код}
+ at verbatim
+mglData a(256,2); a.Fill(-1,1);
+gr->SubPlot(2,10,0,0.2); gr->Dens(a,"kw", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "kw", "C", -8);
+gr->SubPlot(2,10,1,0.2); gr->Dens(a,"wk", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "wk", "C", -8);
+gr->SubPlot(2,10,2,0.2); gr->Dens(a,"kHCcw", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "kHCcw", "C", -8);
+gr->SubPlot(2,10,3,0.2); gr->Dens(a,"kBbcw", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "kBbcw", "C", -8);
+gr->SubPlot(2,10,4,0.2); gr->Dens(a,"kRryw", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "kRryw", "C", -8);
+gr->SubPlot(2,10,5,0.2); gr->Dens(a,"kGgew", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "kGgew", "C", -8);
+gr->SubPlot(2,10,6,0.2); gr->Dens(a,"BbwrR", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "BbwrR", "C", -8);
+gr->SubPlot(2,10,7,0.2); gr->Dens(a,"BbwgG", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "BbwgG", "C", -8);
+gr->SubPlot(2,10,8,0.2); gr->Dens(a,"GgwmM", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "GgwmM", "C", -8);
+gr->SubPlot(2,10,9,0.2); gr->Dens(a,"UuwqR", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "UuwqR", "C", -8);
+gr->SubPlot(2,10,10,0.2); gr->Dens(a,"QqwcC", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "QqwcC", "C", -8);
+gr->SubPlot(2,10,11,0.2); gr->Dens(a,"CcwyY", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "CcwyY", "C", -8);
+gr->SubPlot(2,10,12,0.2); gr->Dens(a,"bcwyr", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "bcwyr", "C", -8);
+gr->SubPlot(2,10,13,0.2); gr->Dens(a,"bwr", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "bwr", "C", -8);
+gr->SubPlot(2,10,14,0.2); gr->Dens(a,"BbcyrR", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "BbcyrR", "C", -8);
+gr->SubPlot(2,10,15,0.2); gr->Dens(a,"UbcyqR", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "UbcyqR", "C", -8);
+gr->SubPlot(2,10,16,0.2); gr->Dens(a,"BbcwyrR", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "BbcwyrR", "C", -8);
+gr->SubPlot(2,10,17,0.2); gr->Dens(a,"bcyr", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "bcyr", "C", -8);
+gr->SubPlot(2,10,18,0.2); gr->Dens(a,"BbcyrR|", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "BbcyrR|", "C", -8);
+gr->SubPlot(2,10,19,0.2); gr->Dens(a,"bgr", nan);
+gr->Puts(mglPoint(-1.4, -0.3), "bgr", "C", -8);
+ at end verbatim
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
+ at verbatim
+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
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node Normal transparency, Glass-like transparency, Color schemes sample, Basic features
+ at subsection ÐбÑÑÐ½Ð°Ñ Ð¿ÑозÑаÑноÑÑÑ
+ at cindex TranspType
+ at float
+ at image{../png/type0, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ код}
+ at verbatim
+gr->Alpha(true); gr->Light(true);
+mglData a(50,40);
+a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
+
+gr->TranspType = 0; gr->Clf();
+gr->SubPlot(2,2,0); gr->Rotate(40,60); gr->Surf(a); gr->Box();
+gr->SubPlot(2,2,1); gr->Rotate(40,60); gr->Dens(a); gr->Box();
+gr->SubPlot(2,2,2); gr->Rotate(40,60); gr->Cont(a); gr->Box();
+gr->SubPlot(2,2,3); gr->Rotate(40,60); gr->Axial(a); gr->Box();
+ at end verbatim
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
+ at verbatim
+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
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node Glass-like transparency, Lamp-like transparency, Normal transparency, Basic features
+ at subsection "СÑеклÑннаÑ" пÑозÑаÑноÑÑÑ
+ at cindex TranspType
+ at float
+ at image{../png/type1, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ код}
+ at verbatim
+gr->Alpha(true); gr->Light(true);
+mglData a(50,40);
+a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
+
+gr->TranspType = 1; gr->Clf();
+gr->SubPlot(2,2,0); gr->Rotate(40,60); gr->Surf(a); gr->Box();
+gr->SubPlot(2,2,1); gr->Rotate(40,60); gr->Dens(a); gr->Box();
+gr->SubPlot(2,2,2); gr->Rotate(40,60); gr->Cont(a); gr->Box();
+gr->SubPlot(2,2,3); gr->Rotate(40,60); gr->Axial(a); gr->Box();
+ at end verbatim
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
+ at verbatim
+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
+ at end verbatim
+ at c ------------------------------------------------------------------
+ at node Lamp-like transparency, , Glass-like transparency, Basic features
+ at subsection "ÐамповаÑ" пÑозÑаÑноÑÑÑ
+ at cindex TranspType
+ at float
+ at image{../png/type2, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ код}
+ at verbatim
+gr->Alpha(true); gr->Light(true);
+mglData a(50,40);
+a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
+
+gr->TranspType = 2; gr->Clf();
+gr->SubPlot(2,2,0); gr->Rotate(40,60); gr->Surf(a); gr->Box();
+gr->SubPlot(2,2,1); gr->Rotate(40,60); gr->Dens(a); gr->Box();
+gr->SubPlot(2,2,2); gr->Rotate(40,60); gr->Cont(a); gr->Box();
+gr->SubPlot(2,2,3); gr->Rotate(40,60); gr->Axial(a); gr->Box();
+ at end verbatim
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
+ at verbatim
+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
+ at end verbatim
+
+
+
+
+
+
+
+
+ at c ------------------------------------------------------------------
+ at node Additional features, Advanced features, Basic features, Samples
+ at section ÐополниÑелÑнÑе возможноÑÑи
@menu
* Legend sample::
* Adding mesh sample::
@@ -4452,19 +5426,17 @@ gr.Dots(a);
* Drops sample::
* Molecules drawing sample::
@end menu
-
@c ------------------------------------------------------------------
@node Legend sample, Adding mesh sample,, Additional features
@subsection Legend -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Plot
@cindex Legend
@cindex AddLegend
-
@float
- at image{png/legend, 7cm}
- at caption{Example of Legend usage. @tdref{legend}}
+ at image{../png/legend, 7cm}
+ at c @caption{Example of Legend usage. @tdref{legend}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData f(50,3);
@@ -4479,12 +5451,12 @@ gr->AddLegend("sin(\\pi \\sqrt{\\a x})","r+");
gr->Legend();
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@@ -4494,6 +5466,7 @@ addlegend 'sin(\pi x)' 'g*'
addlegend 'sin(\pi \sqrt{\a x})' 'r+'
legend
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT f = mgl_create_data_size(50,3,1);
@@ -4517,7 +5490,6 @@ f = mgl_create_data_size(50,3,1)
call mgl_data_modify(f,'sin(2*pi*x*x)',0)
call mgl_data_modify(f,'sin(2*pi*x)',1)
call mgl_data_modify(f,'sin(2*pi*sqrt(x))',2)
-
call mgl_set_axis(gr, 0.,-1.,0., 1.,1.,1., 0.,0.,0.)
call mgl_box(gr,1)
call mgl_plot(gr,f,'')
@@ -4538,7 +5510,7 @@ gr.AddLegend("sin(\\pi x)","g*");
gr.AddLegend("sin(\\pi\\sqrt{\\a x})","r+");
gr.Legend();
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Adding mesh sample, Surf & Cont sample, Legend sample, Additional features
@subsection ÐобавлÑем ÑеÑкÑ
@@ -4547,19 +5519,17 @@ gr.Legend();
@cindex Dens
@cindex Cont
@cindex Axial
-
@float
- at image{png/samplea, 7cm}
- at caption{Example of adding mesh. @tdref{samplea}}
+ at image{../png/samplea, 7cm}
+ at c @caption{Example of adding mesh. @tdref{samplea}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
gr->Light(true);
gr->Alpha(true);
-
gr->SubPlot(2,2,0); gr->Rotate(40,60);
gr->Surf(a,"BbcyrR#"); gr->Box();
gr->SubPlot(2,2,1); gr->Rotate(40,60);
@@ -4570,13 +5540,12 @@ gr->SubPlot(2,2,3); gr->Rotate(40,60);
gr->Axial(a,"BbcyrR#"); gr->Box();
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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#'
@@ -4594,13 +5563,13 @@ rotate 40 60
axial a 'BbcyrR#'
box
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
mgl_set_alpha(gr,1);
mgl_set_light(gr,1);
-
mgl_subplot(gr,2,2,0); mgl_rotate(gr,40.,60.,0.);
mgl_surf(gr,a,"BbcyrR#"); mgl_box(gr,1);
mgl_subplot(gr,2,2,1); mgl_rotate(gr,40.,60.,0.);
@@ -4620,7 +5589,6 @@ a = mgl_create_data_size(50,40,1)
call mgl_data_modify(a,'0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))',0)
call mgl_set_alpha(gr,1)
call mgl_set_light(gr,1)
-
call mgl_subplot(gr,2,2,0)
call mgl_rotate(gr,40.,60.,0.)
call mgl_surf(gr,a,'BbcyrR#')
@@ -4653,24 +5621,21 @@ gr.Rotate(40,60); gr.Cont(a,"BbcyrR#"); gr.Box();
gr.SubPlot(2,2,3);
gr.Rotate(40,60); gr.Axial(a,"BbcyrR#"); gr.Box();
@end verbatim
-
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Surf & Cont sample, Flow & Dens sample, Adding mesh sample, Additional features
@subsection Surf & Cont -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Surf
@cindex Cont
-
@float
- at image{png/surf_cont_y, 7cm}
- at caption{Example of Surf & Cont. @tdref{surf_cont_y}}
+ at image{../png/surf_cont_y, 7cm}
+ at c @caption{Example of Surf & Cont. @tdref{surf_cont_y}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Box();
@@ -4678,21 +5643,21 @@ gr->Surf(a);
gr->Cont(a,"y");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -4707,7 +5672,6 @@ real zero, nan
zero = 0; nan = zero/zero
a = mgl_create_data_size(50,40,1)
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0)
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -4723,18 +5687,17 @@ gr.Rotate(40,60); gr.Light(True);
gr.Box();
gr.Surf(a); gr.Cont(a,"y");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Flow & Dens sample, Several light sample, Surf & Cont sample, Additional features
@subsection Flow & Dens -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Flow
@cindex Dens
-
@float
- at image{png/flow_dens, 7cm}
- at caption{Example of Flow & Dens. @tdref{flow_dens}}
+ at image{../png/flow_dens, 7cm}
+ at c @caption{Example of Flow & Dens. @tdref{flow_dens}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40), b(50,40), d(a);
@@ -4745,6 +5708,7 @@ gr->Box();
gr->Flow(a,b,"br"); gr->Dens(d,"BbcyrR");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new a 50 40
new b 50 40
@@ -4756,6 +5720,7 @@ box
flow a b 'br'
dens d 'BbcyrR'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a, b, d;
@@ -4765,7 +5730,6 @@ d = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
mgl_data_modify(d,"sqrt(v^2+w^2)",a,b);
-
mgl_box(gr,1);
mgl_flow_2d(gr,a,b,"br",5,1,0.);
mgl_dens(gr,d,"BbcyrR",-1.);
@@ -4780,7 +5744,6 @@ d = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
call mgl_data_modify(b,"0.6*cos(2*pi*x)*cos(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
call mgl_data_modify(d,"sqrt(v^2+w^2)",a,b);
-
call mgl_box(gr,1)
call mgl_flow_2d(gr,a,b,'br',5,1,0.)
call mgl_dens(gr,d,'BbcyrR',-1.);
@@ -4797,23 +5760,21 @@ d.Modify("sqrt(v^2+w^2)",a,b);
gr.Box();
gr.Flow(a,b,"br"); gr.Dens(d,"BbcyrR");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Several light sample, Mirrored surface sample, Flow & Dens sample, Additional features
@subsection ÐеÑколÑко иÑÑоÑников ÑвеÑа
@cindex Surf
@cindex Light
-
@float
- at image{png/several_light, 7cm}
- at caption{Example of Surf with several light. @tdref{several_light}}
+ at image{../png/several_light, 7cm}
+ at c @caption{Example of Surf with several light. @tdref{several_light}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40);
a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
-
gr->Rotate(40,60);
gr->Light(true);
gr->Light(1,mglPoint(0,1,0),'c');
@@ -4823,30 +5784,28 @@ gr->Box();
gr->Surf(a,"h");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_add_light_rgb(gr,1,0.,1.,0.,1, 0.,1.,1.,0.5);
mgl_add_light_rgb(gr,2,1.,0.,0.,1, 1.,1.,0.,0.5);
mgl_add_light_rgb(gr,3,0.,-1.,0.,1, 1.,0.,1.,0.5);
-
mgl_box(gr,1);
mgl_surf(gr,a,"h");
mgl_delete_data(a);
@@ -4856,13 +5815,11 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_add_light_rgb(gr,1,0.,1.,0.,1, 0.,1.,1.,0.5)
call mgl_add_light_rgb(gr,2,1.,0.,0.,1, 1.,1.,0.,0.5)
call mgl_add_light_rgb(gr,3,0.,-1.,0.,1, 1.,0.,1.,0.5)
-
call mgl_box(gr,1)
call mgl_surf(gr,a,'h')
call mgl_delete_data(a)
@@ -4878,33 +5835,31 @@ gr.AddLight(3,0,-1,0,"m");
gr.Box();
gr.Surf(a,"h")
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Mirrored surface sample, Cont with labels sample, Several light sample, Additional features
@subsection ÐÑÑажение повеÑÑ
ноÑÑи
@cindex Surf
-
@float
- at image{png/mirror, 7cm}
- at caption{Example of mirrored surface. @tdref{mirror}}
+ at image{../png/mirror, 7cm}
+ at c @caption{Example of mirrored surface. @tdref{mirror}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(30,40),x(30),y1(40),y2(40);
a.Modify("pi*(1-2*x)*exp(-4*y^2-4*(2*x-1)^2)");
x.Fill(-1,1); y1.Fill(0,1); y2.Fill(0,-1);
-
gr->Rotate(40,60);
gr->Light(true);
gr->Box();
gr->Surf(x,y1,a,"r"); gr->Surf(x,y2,a,"b");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@@ -4918,13 +5873,13 @@ 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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a,x,y1,y2;
@@ -4936,7 +5891,6 @@ mgl_data_modify(a,"pi*(1-2*x)*exp(-4*y^2-4*(2*x-1)^2)",0);
mgl_data_fill(x,-1.,1.,'x');
mgl_data_fill(y1,0.,1.,'x');
mgl_data_fill(y2,0.,-1.,'x');
-
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_box(gr,1);
@@ -4955,7 +5909,6 @@ call mgl_data_modify(a,'pi*(1-2*x)*exp(-4*y^2-4*(2*x-1)^2)',0)
call mgl_data_fill(x,-1.,1.,'x')
call mgl_data_fill(y1,0.,1.,'x')
call mgl_data_fill(y2,0.,-1.,'x')
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_box(gr,1)
@@ -4974,17 +5927,16 @@ x.Fill(-1,1); y1.Fill(0,1); y2.Fill(0,-1);
gr.Rotate(40,60); gr.Light(True); gr.Box();
gr.Surf(x,y1,a,"r"); gr.Surf(x,y2,a,"b");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Cont with labels sample, Ternary plot sample, Mirrored surface sample, Additional features
@subsection Cont и подпиÑи -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Cont
-
@float
- at image{png/contt, 7cm}
- at caption{Example of Cont with labels. @tdref{contt}}
+ at image{../png/contt, 7cm}
+ at c @caption{Example of Cont with labels. @tdref{contt}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(50,40);
@@ -4993,12 +5945,14 @@ gr->Box();
gr->Cont(a,"BbcyrRt");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(50,40,1);
@@ -5012,7 +5966,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(50,40,1);
call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
-
call mgl_box(gr,1)
call mgl_cont(gr,a,'BbcyrRt',7,0)
call mgl_delete_data(a)
@@ -5024,18 +5977,16 @@ a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))");
gr.Box();
gr.Cont(a,"BbcyrRt");
@end verbatim
-
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Ternary plot sample, Coloring by coordinates sample, Cont with labels sample, Additional features
@subsection Ternary plot -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Ternary
-
@float
- at image{png/ternary, 7cm}
- at caption{Example of Ternary plot. @tdref{ternary}}
+ at image{../png/ternary, 7cm}
+ at c @caption{Example of Ternary plot. @tdref{ternary}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData x(50),y(50),rx(10),ry(10), a(20,30);
@@ -5043,7 +5994,6 @@ a.Modify("4*x*y");
x.Modify("0.25*(1+cos(2*pi*x))");
y.Modify("0.25*(1+sin(2*pi*x))");
rx.Modify("rnd"); ry.Modify("(1-v)*rnd",rx);
-
gr->Text(mglPoint(-0.8,1.3), "Ternary plot (x+y+t=1)");
gr->Ternary(true);
gr->Plot(x,y,"r2");
@@ -5056,6 +6006,7 @@ gr->Label('y',"y comp.");
gr->Label('t',"t comp.");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new rx 10
new ry 10
@@ -5079,6 +6030,7 @@ xlabel 'x comp.'
ylabel 'y comp.'
tlabel 't comp.'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT x,y,rx,ry,a;
@@ -5092,13 +6044,11 @@ mgl_data_modify(y,"0.25*(1+sin(2*pi*x))",0);
mgl_data_modify(rx,"rnd",0);
mgl_data_modify_vw(ry,"(1-v)*rnd",rx,0);
mgl_data_modify(a,"4*x*y",0);
-
mgl_puts_ext(gr,-0.8,1.3,0.,"Ternary plot (x+y+t=1)","C",-1.4,'t');
mgl_set_ternary(gr,1);
mgl_plot_xy(gr,x,y,"r2");
mgl_plot_xy(gr,rx,ry,"q^ ");
mgl_cont(gr,a,"",7,0.);
-
mgl_line(gr,0.5,0.,0.,0.,0.75,0.,"g2",2);
mgl_axis(gr,"xyz");
mgl_axis_grid(gr,"xyz","B:");
@@ -5122,13 +6072,11 @@ call mgl_data_modify(y,'0.25*(1+sin(2*pi*x))',0)
call mgl_data_modify(rx,'rnd',0)
call mgl_data_modify_vw(ry,'(1-v)*rnd',rx,rx)
call mgl_data_modify(a,'4*x*y',0)
-
call mgl_puts_ext(gr,-0.8,1.3,0.,'Ternary plot (x+y+t=1)','C',-1.4,'t')
call mgl_set_ternary(gr,1)
call mgl_plot_xy(gr,x,y,'r2')
call mgl_plot_xy(gr,rx,ry,'q^ ')
call mgl_cont(gr,a,'',7,0.)
-
call mgl_line(gr,0.5,0.,0.,0.,0.75,0.,'g2',2)
call mgl_axis(gr,'xyz')
call mgl_axis_grid(gr,'xyz','B:')
@@ -5156,40 +6104,38 @@ gr.Label("x","x comp.");
gr.Label("y","y comp.");
gr.Label("t","t comp.");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Coloring by coordinates sample, Drops sample, Ternary plot sample, Additional features
@subsection ÐкÑаÑивание по Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð³Ñани
@cindex Surf3
-
@float
- at image{png/surf3_rgbd, 7cm}
- at caption{Example of Surf3 colored by coordinates. @tdref{surf3_rgbd}}
+ at image{../png/surf3_rgbd, 7cm}
+ at c @caption{Example of Surf3 colored by coordinates. @tdref{surf3_rgbd}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(60,50,40);
a.Modify("-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)");
-
gr->Rotate(40,60);
gr->Box();
gr->Surf3(a,"bgrd");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(60,50,40);
mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
mgl_rotate(gr,40.,60.,0.);
mgl_box(gr,1);
mgl_surf3(gr,a,"bgrd",3);
@@ -5200,7 +6146,6 @@ mgl_delete_data(a);
integer a, mgl_create_data_size
a = mgl_create_data_size(60,50,40);
call mgl_data_modify(a,"-2*((2*x-1)^2 + (2*y-1)^2 + (2*z-1)^4 - (2*z-1)^2 - 0.1)",0);
-
call mgl_rotate(gr,40.,60.,0.)
call mgl_box(gr,1)
call mgl_surf3(gr,a,'bgrd',3)
@@ -5213,17 +6158,16 @@ a.Modify("-2*((2*x-1)^2+(2*y-1)^2+(2*z-1)^4-(2*z-1)^2-0.1)");
gr.Rotate(40,60); gr.Box();
gr.Surf3(a,"bgrd");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Drops sample, Molecules drawing sample, Coloring by coordinates sample, Additional features
@subsection Drops -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Drop
-
@float
- at image{png/drops, 7cm}
- at caption{Example of Drop(s). @tdref{drops}}
+ at image{../png/drops, 7cm}
+ at c @caption{Example of Drop(s). @tdref{drops}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
gr->Light(true);
@@ -5242,6 +6186,7 @@ gr->Ball(mglPoint(1,0,1),'k');
gr->Line(mglPoint(-1,0,1),mglPoint(1,0,1),"b");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
light on
text -1 1.2 'sh=0'
@@ -5257,12 +6202,12 @@ 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'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
mgl_set_light(gr,1);
@@ -5312,22 +6257,20 @@ gr.Ball(-1,0,1,"k"); gr.Ball(-0.33,0,1,"k");
gr.Ball(0.33,0,1,"k"); gr.Ball(1,0,1,"k");
gr.Line(-1,0,1,1,0,1,"b");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Molecules drawing sample,, Drops sample, Additional features
@subsection РиÑование молекÑл
@cindex Drop
@cindex Sphere
-
@float
- at image{png/molecule, 7cm}
- at caption{Example of molecules drawing. @tdref{molecule}}
+ at image{../png/molecule, 7cm}
+ at c @caption{Example of molecules drawing. @tdref{molecule}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
gr->Alpha(true); gr->Light(true);
-
gr->SubPlot(2,2,0);
gr->Text(mglPoint(0,1.2),"Methane, CH_4",0,-3); gr->Rotate(60,120);
gr->Sphere(mglPoint(0,0,0),0.25,"k");
@@ -5339,7 +6282,6 @@ gr->Drop(mglPoint(0,0,0),mglPoint(0.47,0.82,-0.33),0.35,"h",1,2);
gr->Sphere(mglPoint(0.33,0.57,-0.23),0.25,"g");
gr->Drop(mglPoint(0,0,0),mglPoint(0.47,-0.82,-0.33),0.35,"h",1,2);
gr->Sphere(mglPoint(0.33,-0.57,-0.23),0.25,"g");
-
gr->SubPlot(2,2,1);
gr->Text(mglPoint(0,1.2),"Water, H{_2}O",0,-3); gr->Rotate(60,100);
gr->Sphere(mglPoint(0,0,0),0.25,"r");
@@ -5347,14 +6289,12 @@ gr->Drop(mglPoint(0,0,0),mglPoint(0.3,0.5,0),0.3,"m",1,2);
gr->Sphere(mglPoint(0.3,0.5,0),0.25,"g");
gr->Drop(mglPoint(0,0,0),mglPoint(0.3,-0.5,0),0.3,"m",1,2);
gr->Sphere(mglPoint(0.3,-0.5,0),0.25,"g");
-
gr->SubPlot(2,2,2);
gr->Text(mglPoint(0,1.2),"Oxygen, O_2",0,-3); gr->Rotate(60,120);
gr->Drop(mglPoint(0,0.5,0),mglPoint(0,-0.3,0),0.3,"m",1,2);
gr->Sphere(mglPoint(0,0.5,0),0.25,"r");
gr->Drop(mglPoint(0,-0.5,0),mglPoint(0,0.3,0),0.3,"m",1,2);
gr->Sphere(mglPoint(0,-0.5,0),0.25,"r");
-
gr->SubPlot(2,2,3);
gr->Text(mglPoint(0,1.2),"Ammonia, NH_3",0,-3); gr->Rotate(60,120);
gr->Sphere(mglPoint(0,0,0),0.25,"b");
@@ -5366,10 +6306,10 @@ gr->Drop(mglPoint(0,0,0),mglPoint(-0.65,0,0),0.32,"n",1,2);
gr->Sphere(mglPoint(-0.65,0,0),0.25,"g");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
alpha on
light on
-
subplot 2 2 0
text 0 1.2 'Methane, CH_4' '' -3
rotate 60 120
@@ -5382,7 +6322,6 @@ 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
@@ -5391,7 +6330,6 @@ 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
@@ -5399,7 +6337,6 @@ 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
@@ -5411,23 +6348,9 @@ 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'
@end verbatim
- at c @strong{C-Ñй код}
- at c @verbatim
- at c TO BE DONE
- at c @end verbatim
- at c @strong{Fortran}
- at c @verbatim
- at c TO BE DONE
- at c @end verbatim
- at c @strong{Python}
- at c @verbatim
- at c TO BE DONE
- at c @end verbatim
-
@c ------------------------------------------------------------------
@node Advanced features,, Additional features, Samples
@section "ÐÑодвинÑÑÑе" возможноÑÑи
-
@c ------------------------------------------------------------------
@menu
* Curvelinear coorinates sample::
@@ -5444,38 +6367,33 @@ sphere -0.65 0 0 0.25 'g'
* Manual ticks sample::
* ColumnPlot sample::
* StickPlot sample::
+* Stereo image sample::
@end menu
-
@node Curvelinear coorinates sample, 2-axes sample,, Advanced features
@subsection ÐÑиволинейнÑе кооÑдинаÑÑ
@cindex Axis
-
@float
- at image{png/sample3, 7cm}
- at caption{Example of curvelinear coorinates usage. @tdref{sample3}}
+ at image{../png/sample3, 7cm}
+ at c @caption{Example of curvelinear coorinates usage. @tdref{sample3}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
gr->Org = mglPoint(-1,1,-1);
-
gr->SubPlot(2,2,0); gr->Rotate(60,40);
gr->Line(mglPoint(-1,0.5,0),mglPoint(1,0.5,0),"r2",100);
gr->Axis(); gr->Grid();
gr->Text(mglPoint(0,1.3,1),"Cartesian");
-
gr->SubPlot(2,2,1); gr->Rotate(60,40);
gr->SetFunc("y*sin(pi*x)","y*cos(pi*x)");
gr->Line(mglPoint(-1,0.5,0),mglPoint(1,0.5,0),"r2",100);
gr->Axis(); gr->Grid();
gr->Text(mglPoint(0,1.3,1),"Cylindrical");
-
gr->SubPlot(2,2,2); gr->Rotate(60,40);
gr->SetFunc("2*y*x","y*y - x*x");
gr->Line(mglPoint(-1,0.5,0),mglPoint(1,0.5,0),"r2",100);
gr->Axis(); gr->Grid();
gr->Text(mglPoint(0,1.3,1),"Parabolic");
-
gr->SubPlot(2,2,3); gr->Rotate(60,40);
gr->SetFunc("y*sin(pi*x)","y*cos(pi*x)","x+z");
gr->Line(mglPoint(-1,0.5,0),mglPoint(1,0.5,0),"r2",100);
@@ -5484,16 +6402,15 @@ gr->Text(mglPoint(0,1.3,1),"Spiral");
gr->Axis(0,0,0); // set to default Cartesian
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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)' ''
@@ -5501,7 +6418,6 @@ 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' ''
@@ -5509,7 +6425,6 @@ 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'
@@ -5519,6 +6434,7 @@ grid
text 0 1.3 1 'Spiral'
axis '' '' '' # set to default Cartesian
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
mgl_set_origin(gr,-1,1,-1);
@@ -5526,19 +6442,16 @@ mgl_subplot(gr,2,2,0); mgl_rotate(gr,60,40,0);
mgl_line(gr,-1,0.5,0,1,0.5,0,"r2",100);
mgl_axis(gr,"xyz"); mgl_axis_grid(gr,"xyz","B");
mgl_text(gr,0,1.3,1,"Cartesian");
-
mgl_subplot(gr,2,2,1); mgl_rotate(gr,60,40,0);
mgl_set_func(gr,"y*sin(pi*x)","y*cos(pi*x)",0);
mgl_line(gr,-1,0.5,0,1,0.5,0,"r2",100);
mgl_axis(gr,"xyz"); mgl_axis_grid(gr,"xyz","B");
mgl_text(gr,0,1.3,1,"Cylindrical");
-
mgl_subplot(gr,2,2,2); mgl_rotate(gr,60,40,0);
mgl_set_func(gr,"2*y*x","y*y - x*x","");
mgl_line(gr,-1,0.5,0,1,0.5,0,"r2",100);
mgl_axis(gr,"xyz"); mgl_axis_grid(gr,"xyz","B");
mgl_text(gr,0,1.3,1,"Parabolic");
-
mgl_subplot(gr,2,2,3); mgl_rotate(gr,60,40,0);
mgl_set_func(gr,"y*sin(pi*x)","y*cos(pi*x)","x+z");
mgl_line(gr,-1,0.5,0,1,0.5,0,"r2",100);
@@ -5549,14 +6462,12 @@ mgl_set_func(gr,0,0,0); /* set to default Cartesian */
@strong{Fortran}
@verbatim
call mgl_set_origin(gr,-1.,1.,-1.)
-
call mgl_subplot(gr,2,2,0)
call mgl_rotate(gr,60.,40.,0.)
call mgl_line(gr,-1.,0.5,0.,1.,0.5,0.,'r2',100)
call mgl_axis(gr,'xyz')
call mgl_axis_grid(gr,'xyz','B')
call mgl_text(gr,0.,1.3,1.,'Cartesian')
-
call mgl_subplot(gr,2,2,1)
call mgl_rotate(gr,60.,40.,0.)
call mgl_set_func(gr,'y*sin(pi*x)','y*cos(pi*x)','')
@@ -5564,7 +6475,6 @@ call mgl_line(gr,-1.,0.5,0.,1.,0.5,0.,'r2',100)
call mgl_axis(gr,'xyz')
call mgl_axis_grid(gr,'xyz','B')
call mgl_text(gr,0.,1.3,1.,'Cylindrical')
-
call mgl_subplot(gr,2,2,2)
call mgl_rotate(gr,60.,40.,0.)
call mgl_set_func(gr,'2*y*x','y*y - x*x','')
@@ -5572,7 +6482,6 @@ call mgl_line(gr,-1.,0.5,0.,1.,0.5,0.,'r2',100)
call mgl_axis(gr,'xyz')
call mgl_axis_grid(gr,'xyz','B')
call mgl_text(gr,0.,1.3,1.,"Parabolic")
-
call mgl_subplot(gr,2,2,3)
call mgl_rotate(gr,60.,40.,0.)
call mgl_set_func(gr,'y*sin(pi*x)','y*cos(pi*x)','x+z')
@@ -5585,24 +6494,20 @@ call mgl_set_func(gr,'','','') ! set to default Cartesian
@strong{Python}
@verbatim
gr.SetOrigin(-1,1,-1);
-
gr.SubPlot(2,2,0); gr.Rotate(60,40);
gr.Line(-1,0.5,0,1,0.5,0,"r2",100);
gr.Axis(); gr.Grid();
gr.Puts(0,1.3,1,"Gartesian","rC",-1.5);
-
gr.SubPlot(2,2,1); gr.Rotate(60,40);
gr.SetFunc("y*sin(pi*x)","y*cos(pi*x)");
gr.Line(-1,0.5,0,1,0.5,0,"r2",100);
gr.Axis(); gr.Grid();
gr.Puts(0,1.3,1,"Cylindrical","rC",-1.5);
-
gr.SubPlot(2,2,2); gr.Rotate(60,40);
gr.SetFunc("2*y*x","y*y-x*x");
gr.Line(-1,0.5,0,1,0.5,0,"r2",100);
gr.Axis(); gr.Grid();
gr.Puts(0,1.3,1,"Parabolic","rC",-1.5);
-
gr.SubPlot(2,2,3); gr.Rotate(60,40);
gr.SetFunc("y*sin(pi*x)","y*cos(pi*x)","x+z");
gr.Line(-1,0.5,0,1,0.5,0,"r2",100);
@@ -5610,17 +6515,16 @@ gr.Axis(); gr.Grid();
gr.Puts(0,1.3,1,"Spiral","rC",-1.5);
gr.SetFunc("",""); # set to default Gartesian
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node 2-axes sample, Semi-log sample, Curvelinear coorinates sample, Advanced features
@subsection ÐеÑколÑко оÑей на одном гÑаÑике
@cindex Axis
-
@float
- at image{png/2_axis, 7cm}
- at caption{Example of 2 axes on the plot. @tdref{2_axis}}
+ at image{../png/2_axis, 7cm}
+ at c @caption{Example of 2 axes on the plot. @tdref{2_axis}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData y1(50), y2(50);
@@ -5633,6 +6537,7 @@ gr->Axis(); gr->Label('y',"axis 2",0);
gr->Stem(y2,"r");
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new y1 50
new y2 50
@@ -5649,6 +6554,7 @@ axis
ylabel 'axis 2' 0
stem y2 'r'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT y1 = mgl_create_data_size(50,1,1);
@@ -5660,7 +6566,6 @@ mgl_set_origin(gr,-1.,-1.,-1.);
mgl_axis(gr,"xyz");
mgl_label_ext(gr,'y',"axis 1",0,-1.4,0.);
mgl_plot(gr,y1,"b");
-
mgl_set_axis_2d(gr,0.,0.,1.,1.);
mgl_set_origin(gr,1.,1.,1.);
mgl_axis(gr,"xyz");
@@ -5679,7 +6584,6 @@ call mgl_set_origin(gr,-1.,-1.,-1.)
call mgl_axis(gr,'xyz')
call mgl_label_ext(gr,'y','axis 1',0,-1.4,0.)
call mgl_plot(gr,y1,'b')
-
call mgl_set_axis_2d(gr,0.,0.,1.,1.)
call mgl_set_origin(gr,1.,1.,1.)
call mgl_axis(gr,'xyz')
@@ -5693,49 +6597,44 @@ y1.Modify("0.3*sin(2*pi*x)"); y2.Modify("0.5+0.3*cos(2*pi*x)");
gr.SetRanges(-1,1,-1,1); gr.SetOrigin(-1,-1);
gr.Axis(); gr.Label("y","axis 1",0);
gr.Plot(y1,"b");
-
gr.SetRanges(0,1,0,1); gr.SetOrigin(1,1);
gr.Axis(); gr.Label("y","axis 2",0);
gr.Stem(y2,"r");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Semi-log sample, Log-log sample, 2-axes sample, Advanced features
@subsection Semi-log -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Axis
@cindex SetTicks
@cindex Plot
-
@float
- at image{png/semilog, 7cm}
- at caption{Example of semi-log plot. @tdref{semilog}}
+ at image{../png/semilog, 7cm}
+ at c @caption{Example of semi-log plot. @tdref{semilog}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData x(2000), y(2000);
x.Modify("0.01/(x+10^(-5))"); y.Modify("sin(1/v)",x);
-
gr->Axis(mglPoint(0.01,-1),mglPoint(1000,1),mglPoint(0.01,-1));
gr->SetFunc("lg(x)",0); gr->SetTicks('x',0);
-
gr->Box();
gr->Plot(x,y,"b2");
gr->Axis(); gr->Grid("xy","g");
gr->Label('x',"x",0); gr->Label('y', "y = sin 1/x",0);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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'
@@ -5743,17 +6642,16 @@ xlabel 'x' 0
ylabel 'y = sin 1/x' 0
box
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT x = mgl_create_data_size(2000,1,1);
HMDT y = mgl_create_data_size(2000,1,1);
mgl_data_modify(x,"0.01/(x+10^(-5))",0);
mgl_data_modify_vw(y,"sin(1/v)",x,0);
-
mgl_set_axis(gr,0.01,-1.,0.,1000.,1.,0.,0.01,-1.,0.);
mgl_set_func(gr,"lg(x)",0,0);
mgl_set_ticks(gr,0.,-5.,-5.);
-
mgl_box(gr,1);
mgl_plot_xy(gr,x,y,"b2");
mgl_axis(gr,"xy"); mgl_axis_grid(gr,"xy","g");
@@ -5768,11 +6666,9 @@ x = mgl_create_data_size(2000,1,1)
y = mgl_create_data_size(2000,1,1)
call mgl_data_modify(x,'0.01/(x+10^(-5))',0)
call mgl_data_modify_vw(y,'sin(1/v)',x,x)
-
call mgl_set_axis(gr,0.01,-1.,0.,1000.,1.,0.,0.01,-1.,0.)
call mgl_set_func(gr,'lg(x)','','')
call mgl_set_ticks(gr,0.,-5.,-5.)
-
call mgl_box(gr,1)
call mgl_plot_xy(gr,x,y,'b2')
call mgl_axis(gr,'xy')
@@ -5786,45 +6682,41 @@ call mgl_delete_data(y)
@verbatim
TO BE DONE
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Log-log sample, Fitting sample, Semi-log sample, Advanced features
@subsection Log-log -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Axis
@cindex SetTicks
@cindex Plot
-
@float
- at image{png/loglog, 7cm}
- at caption{Example of log-log plot. @tdref{loglog}}
+ at image{../png/loglog, 7cm}
+ at c @caption{Example of log-log plot. @tdref{loglog}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData x(100), y(100);
x.Modify("pow(10,6*x-3)"); y.Modify("sqrt(1+v^2)",x);
-
gr->Axis(mglPoint(0.001,0.1),mglPoint(1000,1000),mglPoint(0.001,0.1));
gr->SetFunc("lg(x)","lg(y)");
gr->SetTicks('x',0); gr->SetTicks('y',0);
-
gr->Box();
gr->Plot(x,y,"b2");
gr->Axis(); gr->Grid("xy","g;");
gr->Label('x',"x",0); gr->Label('y', "y=\\sqrt{1+x^2}",0);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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;'
@@ -5832,17 +6724,16 @@ xlabel 'x' 0
ylabel 'y=\sqrt{1+x^2}' 0
box
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT x = mgl_create_data_size(100,1,1);
HMDT y = mgl_create_data_size(100,1,1);
mgl_data_modify(x,"pow(10,6*x-3)",0);
mgl_data_modify_vw(y,"sqrt(1+v^2)",x,0);
-
mgl_set_axis(gr,0.001,0.1,0.,1000.,1000.,0.,0.001,0.1,0.);
mgl_set_func(gr,"lg(x)","lg(y)",0);
mgl_set_ticks(gr,0.,0.,-5.);
-
mgl_box(gr,1);
mgl_plot_xy(gr,x,y,"b2");
mgl_axis(gr,"xy"); mgl_axis_grid(gr,"xy","g;");
@@ -5857,11 +6748,9 @@ x = mgl_create_data_size(100,1,1)
y = mgl_create_data_size(100,1,1)
call mgl_data_modify(x,'pow(10,6*x-3)',0)
call mgl_data_modify_vw(y,'sqrt(1+v^2)',x,x)
-
call mgl_set_axis(gr,0.001,0.1,0.,1000.,1000.,0.,0.001,0.1,0.)
call mgl_set_func(gr,'lg(x)','lg(y)','')
call mgl_set_ticks(gr,0.,0.,-5.)
-
call mgl_box(gr,1)
call mgl_plot_xy(gr,x,y,'b2')
call mgl_axis(gr,'xy')
@@ -5882,28 +6771,25 @@ gr.Box(); gr.Plot(x,y,"b2");
gr.Axis(); gr.Grid("xy","g;");
gr.Label("x","x",0); gr.Label("y","y=\\sqrt{1+x^2}",0);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Fitting sample, Envelop sample, Log-log sample, Advanced features
@subsection Fitting -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Fit
@cindex PutsFit
-
@float
- at image{png/fit, 7cm}
- at caption{Example of nonlinear fitting. @tdref{fit}}
+ at image{../png/fit, 7cm}
+ at c @caption{Example of nonlinear fitting. @tdref{fit}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData rnd(100), in(100), res;
rnd.Fill("0.4*rnd+0.1+sin(2*pi*x)", gr->Min, gr->Max);
in.Fill("0.3+sin(2*pi*x)", gr->Min, gr->Max);
-
gr->Axis(mglPoint(-1,-2), mglPoint(1,2));
gr->Plot(rnd, ". ");
gr->Box();
-
float ini[3] = {1,1,3};
gr->Fit(res, rnd, "a+b*sin(c*x)", "abc", ini);
gr->Plot(res, "r");
@@ -5913,16 +6799,15 @@ gr->PutsFit(mglPoint(0, -1.8), "y = ", "C:r", -1);
gr->Text(mglPoint(0, 2.2), "initial: y = 0.3+sin(2\\pi x)", "C:b", -1);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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'
@@ -5931,6 +6816,7 @@ 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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT rnd,in,res;
@@ -5943,7 +6829,6 @@ mgl_data_modify(in,"0.3+sin(4*pi*x)",0);
mgl_set_axis_2d(gr,-1.,-2.,1.,2.);
mgl_plot(gr,rnd,". ");
mgl_box(gr,1);
-
mgl_fit_1(gr,res,rnd,"a+b*sin(c*x)","abc",ini);
mgl_plot(gr,res,"r"); mgl_plot(gr,in,"b");
mgl_puts_ext(gr,-1.,-1.3,0.,"fitted:","L:r",-1.,'t');
@@ -5963,7 +6848,6 @@ call mgl_data_modify(in,"0.3+sin(4*pi*x)",0);
call mgl_set_axis_2d(gr,-1.,-2.,1.,2.);
call mgl_plot(gr,rnd,". ");
call mgl_box(gr,1);
-
call mgl_fit_1(gr,res,rnd,"a+b*sin(c*x)","abc",ini);
call mgl_plot(gr,res,"r");
call mgl_plot(gr,in,"b");
@@ -5979,7 +6863,6 @@ In.Modify("0.3+sin(4*pi*x)");
gr.SetRanges(-1,1,-2,2);
gr.Plot(rnd,". ");
gr.Box();
-
ini[0], ini[1], ini[2] = 1, 1, 3;
gr.Fit(res,rnd,"a+b*sin(c*x)","abc",ini);
gr.Plot(res,"r"); gr.Plot(In,"b");
@@ -5987,17 +6870,16 @@ gr.Puts(-1,-1.3,0,"fitted:","L:r",-1);
gr.PutsFit(0,-1.8,0,"y = ","C:r",-1);
gr.Puts(0,2.2,0,"initial: y = 0.3+sin(2\\pi x)","C:b",-1);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Envelop sample, Sew sample, Fitting sample, Advanced features
@subsection Envelop -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Envelop
-
@float
- at image{png/envelop, 7cm}
- at caption{Example of envelop reconstruction.}@c @tdref{envelop}}
+ at image{../png/envelop, 7cm}
+ at c @caption{Example of envelop reconstruction.}@c @tdref{envelop}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(1000);
@@ -6008,6 +6890,7 @@ gr->Plot(a, "r");
gr->Axis();
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new a 1000
fill a 'exp(-8*x^2)*sin(10*pi*x)'
@@ -6016,6 +6899,7 @@ envelop a
plot a 'r'
axis
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(1000,1,1);
@@ -6044,17 +6928,16 @@ a.Envelop("x");
gr.Plot(a,"r");
gr.Axis();
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Sew sample, STFA sample, Envelop sample, Advanced features
@subsection Sew -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex Sew
-
@float
- at image{png/sew, 7cm}
- at caption{Example of phase ``sewing''.}@c @tdref{sew}}
+ at image{../png/sew, 7cm}
+ at c @caption{Example of phase ``sewing''.}@c @tdref{sew}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(100, 100);
@@ -6068,6 +6951,7 @@ gr->Surf(a, "r");
gr->Box();
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new a 100 100
modify a 'mod((y^2-(1-x)^2)/2,0.1)'
@@ -6079,6 +6963,7 @@ sew a 'xy' 0.1
surf a 'r'
box
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(100,100,1);
@@ -6086,7 +6971,6 @@ mgl_data_modify(a, "mod((y^2-(1-x)^2)/2, 0.1)", 0);
mgl_rotate(gr,40.,60.,0.);
mgl_set_light(gr,1);
mgl_set_alpha(gr,1);
-
mgl_surf(gr,a,"b");
mgl_data_sew(a,"xy",0.1);
mgl_surf(gr,a,"r");
@@ -6100,7 +6984,6 @@ call mgl_data_modify(a, 'mod((y^2-(1-x)^2)/2, 0.1)', 0)
call mgl_rotate(gr,40.,60.,0.)
call mgl_set_light(gr,1)
call mgl_set_alpha(gr,1)
-
call mgl_surf(gr,a,'b')
call mgl_data_sew(a,'xy',0.1)
call mgl_surf(gr,a,'r')
@@ -6116,17 +6999,16 @@ a.Sew("xy", 0.1);
gr.Surf(a, "r");
gr.Box();
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node STFA sample, PDE sample, Sew sample, Advanced features
@subsection STFA -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex STFA
-
@float
- at image{png/stfa, 7cm}
- at caption{Example of Short Time Fourier Analysis.}@c @tdref{stfa}}
+ at image{../png/stfa, 7cm}
+ at c @caption{Example of Short Time Fourier Analysis.}@c @tdref{stfa}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a(2000), b(2000);
@@ -6137,7 +7019,6 @@ gr->SubPlot(1, 2, 0);
gr->Plot(a);
gr->Axis();
gr->Label('x', "\\i t");
-
gr->SubPlot(1, 2, 1);
gr->STFA(a, b, 64);
gr->Axis();
@@ -6145,6 +7026,7 @@ gr->Label('x', "\\i t");
gr->Label('y', "\\omega", 0);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
new a 2000
new b 2000
@@ -6160,6 +7042,7 @@ axis
ylabel '\omega' 0
xlabel '\i t'
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data_size(2000,1,1);
@@ -6170,7 +7053,6 @@ mgl_subplot(gr,1,2,0);
mgl_plot(gr,a,"");
mgl_axis(gr,"xy");
mgl_label(gr,'x', "\\i t");
-
mgl_subplot(gr,1,2,1);
mgl_stfa(gr,a,b,64,"",0.);
mgl_axis(gr,"xy");
@@ -6188,7 +7070,6 @@ call mgl_subplot(gr,1,2,0)
call mgl_plot(gr,a,'')
call mgl_axis(gr,'xy')
call mgl_label(gr,'x', '\i t')
-
call mgl_subplot(gr,1,2,1)
call mgl_stfa(gr,a,b,64,'',0.)
call mgl_axis(gr,'xy')
@@ -6204,25 +7085,23 @@ gr.SubPlot(1, 2, 0);
gr.Plot(a);
gr.Axis();
gr.Label('x', "\\i t");
-
gr.SubPlot(1, 2, 1);
gr.STFA(a, b, 64);
gr.Axis();
gr.Label('x', "\\i t");
gr.Label('y', "\\omega", 0);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node PDE sample, Beam tracing sample, STFA sample, Advanced features
@subsection PDE -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex mglPDE
@cindex mglRay
-
@float
- at image{png/pde, 7cm}
- at caption{Example of Partial Differential Eduation solving.}@c @tdref{pde}}
+ at image{../png/pde, 7cm}
+ at c @caption{Example of Partial Differential Eduation solving.}@c @tdref{pde}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData a,re(128),im(128);
@@ -6241,23 +7120,23 @@ gr->Title("\\r{Equation:} ik_0\\partial_zu + \\Delta u + x\\cdot u + \
i \\frac{x+z}{2}\\cdot u = 0", "iC", -1.5);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
HMDT a = mgl_create_data();
@@ -6266,7 +7145,6 @@ HMDT im = mgl_create_data_size(128,1,1);
mgl_axis(gr,"xyz");
mgl_label(gr,'x', "\\i x");
mgl_label(gr,'y', "\\i z");
-
mgl_data_fill_eq(gr,re,"exp(-48*(x+0.7)^2)", 0, 0);
a = mgl_pde_solve(gr, "p^2+q^2-x-1+i*0.5*(z+x)*(z>-x)", re, im, 0.01, 30.);
mgl_data_transpose(a, "yxz");
@@ -6289,7 +7167,6 @@ im = mgl_create_data_size(128,1,1)
call mgl_axis(gr,'xyz')
call mgl_label(gr,'x', '\i x')
call mgl_label(gr,'y', '\i z')
-
call mgl_data_fill_eq(gr,re,'exp(-48*(x+0.7)^2)', 0, 0)
a = mgl_pde_solve(gr, 'p^2+q^2-x-1+i*0.5*(z+x)*(z>-x)', re, im, 0.01, 30.)
call mgl_data_transpose(a, 'yxz')
@@ -6320,18 +7197,17 @@ gr.Puts(0, 0.85, 0., "absorption: (x+z)/2 for x+z>0");
gr.Title("\\r{Equation:} ik_0\\partial_zu + \\Delta u + x\\cdot u + \
i \\frac{x+z}{2}\\cdot u = 0", "iC", -1.5);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Beam tracing sample, Parser sample, PDE sample, Advanced features
@subsection Beam tracing -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex mglQO2d
@cindex mglRay
-
@float
- at image{png/qo2d, 7cm}
- at caption{Example of ray and beam tracing. Compare with @ref{PDE sample}.}@c @tdref{qo2d}}
+ at image{../png/qo2d, 7cm}
+ at c @caption{Example of ray and beam tracing. Compare with @ref{PDE sample}.}@c @tdref{qo2d}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
mglData r, xx, yy, a, im(128), re(128);
@@ -6350,6 +7226,7 @@ gr->Puts(mglPoint(0.7, -0.05), "central ray");
gr->Title("Beam and ray tracing", "C", -1.5);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
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
@@ -6357,14 +7234,12 @@ 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|'
@@ -6372,6 +7247,7 @@ 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
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
const char *ham = "p^2+q^2-x-1+i*0.5*(y+x)*(y>-x)";
@@ -6385,7 +7261,6 @@ mgl_plot_xy(gr, xx, yy, "k");
mgl_axis(gr,"xyz");
mgl_label(gr,'x',"\\i x");
mgl_label(gr,'y',"\\i z");
-
mgl_data_fill_eq(gr,re,"exp(-48*x^2)", 0, 0);
a = mgl_qo2d_solve(ham, re, im, r, 1, 30, xx, yy);
mgl_set_caxis(gr,0.,1.);
@@ -6404,7 +7279,6 @@ integer r, xx, yy, a, im, re, mgl_create_data_size
integer mgl_data_subdata, mgl_ray_trace, mgl_qo2d_solve
character*64 ham
ham = 'p^2+q^2-x-1+i*0.5*(y+x)*(y>-x)'
-
im = mgl_create_data_size(128,1,1)
re = mgl_create_data_size(128,1,1)
r = mgl_ray_trace(ham, -0.7, -1., 0., 0., 0.5, 0., 0.02, 2.)
@@ -6414,7 +7288,6 @@ call mgl_plot_xy(gr, xx, yy, 'k')
call mgl_axis(gr,'xyz')
call mgl_label(gr,'x','\i x')
call mgl_label(gr,'y','\i z')
-
call mgl_data_fill_eq(gr,re,'exp(-48*x^2)', 0, 0)
a = mgl_qo2d_solve(ham, re, im, r, 1., 30., xx, yy)
call mgl_set_caxis(gr,0.,1.)
@@ -6436,10 +7309,8 @@ ham = "p^2+q^2-x-1+i*0.5*(y+x)*(y>-x)";
r, xx, yy, a = mglData(), mglData(), mglData(), mglData();
im, re = mglData(128), mglData(128);
r = mglRay(ham, mglPoint(-0.7, -1), mglPoint(0, 0.5), 0.02, 2);
-
gr.Plot(r.SubData(0), r.SubData(1), "k");
gr.Axis(); gr.Label('x', "\\i x"); gr.Label('y', "\\i z");
-
gr.Fill(re,"exp(-48*x^2)");
a = mglQO2d(ham, re, im, r, 1, 30, xx, yy);
gr.SetCRange(0, 1);
@@ -6449,17 +7320,16 @@ gr.Puts(0, 0.85, 0, "absorption: (x+y)/2 for x+y>0");
gr.Puts(0.7, -0.05, 0, "central ray");
gr.Title("Beam and ray tracing", "C", -1.5);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Parser sample, Manual ticks sample, Beam tracing sample, Advanced features
@subsection Parser -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex mglParse
-
+ at ifclear UDAV
@float
- at image{png/parser, 7cm}
- at caption{Example of MGL parsing.}@c @tdref{parser}}
+ at image{../png/parser, 7cm}
+ at c @caption{Example of MGL parsing.}@c @tdref{parser}}
@end float
-
@strong{C++ код}
@verbatim
float a[100]; // let a_i = sin(4*pi*x), x=0...1
@@ -6533,17 +7403,16 @@ parser.Execute(gr, "xlabel 'x'\nylabel 'y'");
# also you may use cycles or conditions in script
parser.Execute(gr, "for $0 -1 1 0.1\nline 0 0 -1 $0 'r'\nnext");
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node Manual ticks sample, ColumnPlot sample, Parser sample, Advanced features
@subsection ÐÑобÑе меÑки по оÑÑм
@cindex SetTicksVal
-
@float
- at image{png/tval, 7cm}
- at caption{Example of MGL parsing.}@c @tdref{tval}}
+ at image{../png/tval, 7cm}
+ at c @caption{Example of manual tick values.}@c @tdref{tval}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
gr->Axis(mglPoint(-M_PI, 0), mglPoint(M_PI, 2));
@@ -6553,6 +7422,7 @@ gr->Axis(); gr->Grid();
gr->Plot("2*cos(x^2)^2", "r2", NAN, 300);
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
axis -pi 0 pi 2
xtick -pi '-\pi' -1.571 '-\pi/2' 0 '0' 0.886 'x^*' 1.571 '\pi/2' pi '\pi'
@@ -6560,6 +7430,7 @@ axis
grid
fplot '2*cos(x^2)^2' 'r2' nan 300
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
mgl_set_axis_2d(gr, -M_PI, 0, M_PI, 2);
@@ -6583,17 +7454,16 @@ parser.Execute(gr, "xtick -pi '-\pi' -1.571 '-\pi/2' 0 '0' "
gr.Axis(); gr.Grid();
gr.Plot("2*cos(x^2)^2", "r2", 300);
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node ColumnPlot sample, StickPlot sample, Manual ticks sample, Advanced features
@subsection ColumnPlot -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex SetTicksVal
-
@float
- at image{png/column, 7cm}
- at caption{Example of MGL parsing.}@c @tdref{tval}}
+ at image{../png/column, 7cm}
+ at c @caption{Example of ColumnPlot.}@c @tdref{tval}}
@end float
-
+ at ifclear UDAV
@strong{C++ код}
@verbatim
char str[32];
@@ -6608,6 +7478,7 @@ for(int i=0;i<4;i++)
}
@end verbatim
@strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
for $1 0 3
columnplot 4 $1
@@ -6616,6 +7487,7 @@ text -0.5 0.5 'Plot $1 of 4'
fplot 'sin(pi*x+pi*$1/2)'
next
@end verbatim
+ at ifclear UDAV
@strong{C-Ñй код}
@verbatim
int i;
@@ -6636,20 +7508,19 @@ NOT AVAILABLE
@end verbatim
@strong{Python}
@verbatim
-
+NOT AVAILABLE
@end verbatim
-
+ at end ifclear
@c ------------------------------------------------------------------
@node StickPlot sample, , ColumnPlot sample, Advanced features
@subsection StickPlot -- пÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ
@cindex SetTicksVal
-
@float
- at image{png/column, 7cm}
- at caption{Example of MGL parsing.}@c @tdref{tval}}
+ at image{../png/stick, 7cm}
+ at c @caption{Example of StickPlot.}@c @tdref{tval}}
@end float
-
- at strong{C++ code}
+ at ifclear UDAV
+ at strong{C++ код}
@verbatim
gr->SetRanges(-1, 1, -1, 1, 0, 1); gr->Light(true);
gr->StickPlot(3, 0, 40, 30); gr->Axis("xyz_");
@@ -6663,7 +7534,8 @@ gr->Surf("exp(-10*y^2/5-6*x^2)/sqrt(5)");
gr->Text(mglPoint(0.2, 0, 1.2), "z=2", "", -2);
gr->Label('x',"\\tau", 0); gr->Label('y', "\\rho");
@end verbatim
- at strong{MGL code}
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
@verbatim
ranges -1 1 -1 1 0 1:light on
stickplot 3 0 40 30 : axis 'xyz_'
@@ -6677,7 +7549,8 @@ fsurf 'exp(-10*y^2/5-6*x^2)/sqrt(5)'
text 0.2 0 1.2 'z=2' '' -2
xlabel '\tau' 0 : ylabel '\rho'
@end verbatim
- at strong{Pure C code}
+ at ifclear UDAV
+ at strong{C-Ñй код}
@verbatim
mgl_set_axis_3d(gr, -1, -1, 0, 1, 1, 1);
mgl_set_light(gr, 1);
@@ -6696,11 +7569,91 @@ mgl_text(gr, 0.2, 0, 1.2, "z=2");
mgl_label(gr,'x',"\\tau");
mgl_label(gr,'y', "\\rho");
@end verbatim
- at strong{Fortran code}
+ at strong{Fortran}
@verbatim
NOT AVAILABLE
@end verbatim
@strong{Python}
@verbatim
+NOT AVAILABLE
+ at end verbatim
+ at end ifclear
+ at c ------------------------------------------------------------------
+ at node Stereo image sample, , StickPlot sample, Advanced features
+ at subsection ÐÑÐ¸Ð¼ÐµÑ ÑÑеÑео изобÑажениÑ
+ at float
+ at image{../png/stereo, 7cm}
+ at c @caption{Example of stereo image.}@c @tdref{stereo}}
+ at end float
+ at ifclear UDAV
+ at strong{C++ код}
+ at verbatim
+mglData a(50,40);
+a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))");
+gr->Light(true);
+gr->SubPlot(2,1,0);
+gr->Rotate(40,60+3);
+gr->Box(); gr->Surf(a);
+gr->SubPlot(2,1,1);
+gr->Rotate(40,60-3);
+gr->Box(); gr->Surf(a);
+ at end verbatim
+ at strong{MGL ÑкÑипÑ}
+ at end ifclear
+ at verbatim
+new a 50 40
+modify a '0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))'
+light on
+subplot 2 1 0
+rotate 40 60+3
+box:surf a
+subplot 2 1 1
+rotate 40 60-3
+box:surf a
+ at end verbatim
+ at ifclear UDAV
+ at strong{C-Ñй код}
+ at verbatim
+HMDT a = mgl_create_data_size(50,40,1);
+mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
+mgl_set_light(gr,1);
+mgl_subplot(gr,2,1,0);
+mgl_rotate(gr,40.,60.+3.,0.);
+mgl_box(gr,1);
+mgl_surf(gr,a,0);
+mgl_subplot(gr,2,1,1);
+mgl_rotate(gr,40.,60.-3.,0.);
+mgl_box(gr,1);
+mgl_surf(gr,a,0);
+mgl_delete_data(a);
@end verbatim
+ at strong{Fortran}
+ at verbatim
+integer a, mgl_create_data_size
+a = mgl_create_data_size(50,40,1);
+call mgl_data_modify(a,"0.6*sin(2*pi*x)*sin(3*pi*y) + 0.4*cos(3*pi*(x*y))",0);
+call mgl_set_light(gr,1)
+call mgl_subplot(gr,2,1,0)
+call mgl_rotate(gr,40.,60.+3.,0.)
+call mgl_box(gr,1)
+call mgl_surf(gr,a,'')
+call mgl_subplot(gr,2,1,1)
+call mgl_rotate(gr,40.,60.-3.,0.)
+call mgl_box(gr,1)
+call mgl_surf(gr,a,'')
+call mgl_delete_data(a)
+ at end verbatim
+ at strong{Python}
+ at verbatim
+a = mglData(50,40);
+a.Modify("0.6*sin(2*pi*x)*sin(3*pi*y)+0.4*cos(3*pi*(x*y))");
+gr.Light(True);
+gr.SubPlot(2,1,0);
+gr.Rotate(40,60+3);
+gr.Surf(a); gr.Box();
+gr.SubPlot(2,1,1);
+gr.Rotate(40,60-3);
+gr.Surf(a); gr.Box();
+ at end verbatim
+ at end ifclear
diff --git a/texinfo/widget_en.texi b/texinfo/widget_en.texi
new file mode 100644
index 0000000..eff4705
--- /dev/null
+++ b/texinfo/widget_en.texi
@@ -0,0 +1,289 @@
+
+ at c ------------------------------------------------------------------
+ at chapter Widget classes
+ at cindex mglGraphFLTK
+ at cindex mglGraphQT
+ at cindex mglGraphGLUT
+ at cindex Fl_MathGL
+ at cindex QMathGL
+ at cindex window
+ at cindex widgets
+
+There are set of ``window'' classes for making a window with MathGL graphics: @code{mglGraphFLTK}, @code{mglGraphQT}, @code{mglGraphGLUT}. All these classes allow user to show, rotate, export, and change view of the plot using keyboard. Most of them (except @code{mglGraphGLUT}) also have toolbar and menu for simplifying plot manipulation. Usually these classes (except @code{mglGraphGLUT}) are derived from @code{mglGraphZB} class and have a ``connected'' class for widget in corresponding window library. All window classes have the same set of functions (@pxref{mglGraphAB class}). Below the full list of classes with short comments.
+
+ at deftp {Class} mglGraphFLTK
+Class @code{mglGraphFLTK} adds the possibility to create plotting window with the help of FLTK library. It allows one to show, rotate, export, and change view of the plot by keyboard, menu and toolbar. ``Corresponding'' widget class is @code{Fl_MathGL}. Class is defined in @code{#include <mgl/mgl_fltk.h>}.
+ at end deftp
+
+ at deftp {Class} Fl_MathGL
+Class is FLTK widget for displaying the MathGL output. Class is defined in @code{#include <mgl/mgl_fltk.h>}.
+ at end deftp
+
+ at float
+ at image{fltk, 7cm}
+ at caption{Example of FLTK window with MathGL plot.}
+ at end float
+
+ at deftp {Class} mglGraphQT
+Class @code{mglGraphQT} adds the possibility to create plotting window with the help of QT library. It allows one to show, rotate, export, and change view of the plot by keyboard, menu and toolbar. ``Corresponding'' widget class is @code{QMathGL}. Class is defined in @code{#include <mgl/mgl_qt.h>}.
+ at end deftp
+
+ at deftp {Class} QMathGL
+Class is Qt widget for dysplaying the MathGL output. Class is defined in @code{#include <mgl/mgl_qt.h>}.
+ at end deftp
+
+ at float
+ at image{qt, 7cm}
+ at caption{Example of Qt window with MathGL plot.}
+ at end float
+
+ at deftp {Class} mglGraphGLUT
+Class @code{mglGraphGLUT} adds the possibility to create plotting window with the help of GLUT library. It allows one to show, rotate, export, and change view of the plot only by keyboard. Class is defined in @code{#include <mgl/mgl_glut.h>}.
+ at end deftp
+
+ at float
+ at image{glut, 7cm}
+ at caption{Example of GLUT window with MathGL plot.}
+ at end float
+
+ at menu
+* Fl_MathGL class::
+* QMathGL class::
+ at end menu
+
+ at c ------------------------------------------------------------------
+ at node Fl_MathGL class, QMathGL class, , Widget classes
+ at section Fl_MathGL class
+ at cindex Fl_MathGL
+ at cindex widgets
+
+Class is FLTK widget which display MathGL graphics (defined in @code{#include <mgl/mgl_fltk.h>}).
+
+ at deftypemethod Fl_MathGL @code{void} set_draw (@code{mglDraw *}dr)
+Sets drawing function from a class inherited from @code{mglDraw}.
+ at end deftypemethod
+ at deftypemethod Fl_MathGL @code{void} update (@code{mglGraph *}gr=@code{NULL})
+Update (redraw) plot using grapher @var{gr} (built-in by default).
+ at end deftypemethod
+ at deftypemethod Fl_MathGL @code{void} set_angle (@code{float} t, @code{float} p)
+Set angles for additional plot rotation
+ at end deftypemethod
+ at deftypemethod Fl_MathGL @code{void} set_state (@code{int} f)
+Set bitwise flags for general state (1-Alpha, 2-Light)
+ at end deftypemethod
+ at deftypemethod Fl_MathGL @code{void} set_state (@code{bool} z, @code{bool} r)
+Set flags for handling mouse: @var{z}=@code{true} allow zooming, @var{r}=@code{true} allow rotation/shifting/perspective and so on.
+ at end deftypemethod
+ at deftypemethod Fl_MathGL @code{void} set_zoom (@code{float} X1, @code{float} Y1, @code{float} X2, @code{float} Y2)
+Set zoom in/out region
+ at end deftypemethod
+ at deftypemethod Fl_MathGL @code{void} get_zoom (@code{float *}X1, @code{float *}Y1, @code{float *}X2, @code{float *}Y2)
+Get zoom in/out region
+ at end deftypemethod
+ at deftypemethod Fl_MathGL @code{void} set_popup (@code{const Fl_Menu_Item *}pmenu, @code{Fl_Widget *}w, @code{void *}v)
+Set popup menu pointer
+ at end deftypemethod
+ at deftypemethod Fl_MathGL @code{mglGraph *} get_graph ()
+Get pointer to grapher
+ at end deftypemethod
+
+ at deftypecv {Widget option} Fl_MathGL @code{Fl_Valuator *} tet_val
+Pointer to external tet-angle validator.
+ at end deftypecv
+ at deftypecv {Widget option} Fl_MathGL @code{Fl_Valuator *} phi_val
+Pointer to external phi-angle validator.
+ at end deftypecv
+ at deftypecv {Widget option} Fl_MathGL @code{mglGraphAB *} graph
+Pointer to grapher
+ at end deftypecv
+ at deftypecv {Widget option} Fl_MathGL @code{void *} draw_par
+Parameters for drawing function mglGraph::DrawFunc.
+ at end deftypecv
+ at deftypecv {Widget option} Fl_MathGL @code{int (*} draw_func @code{)(mglGraph *gr, void *par)}
+Drawing function for window procedure. It should return the number of frames.
+ at end deftypecv
+
+ at c ------------------------------------------------------------------
+ at node QMathGL class, , Fl_MathGL class, Widget classes
+ at section QMathGL class
+ at cindex QMathGL
+ at cindex widgets
+
+Class is Qt widget which display MathGL graphics (defined in @code{#include <mgl/mgl_qt.h>}).
+
+ at deftypemethod QMathGL @code{void} setDraw (@code{mglDraw *}dr)
+Sets drawing functions from a class inherited from @code{mglDraw}.
+ at end deftypemethod
+ at deftypemethod QMathGL @code{void} setDraw (@code{int (*}draw)(@code{mglGraph *}gr, @code{void *}p), @code{void *}par=@code{NULL})
+Sets the drawing function @var{draw}. There is support of a list of plots (frames). So as one can prepare a set of frames at first and redraw it fast later (but it requires more memory). Function should return positive number of frames for the list or zero if it will plot directly. Parameter @var{par} contains pointer to data for the plotting function @var{draw}.
+ at end deftypemethod
+
+ at deftypemethod QMathGL @code{void} setGraph (@code{mglGraphAB *}gr)
+Set pointer to external grapher (instead of built-in @code{mglGraphZB}). Note that QMathGL will automatically delete this object at destruction or at new @code{setGraph()} call.
+ at end deftypemethod
+
+ at deftypemethod QMathGL @code{void} setPopup (@code{QMenu *}p)
+Set popup menu pointer.
+ at end deftypemethod
+ at deftypemethod QMathGL @code{void} setSize (@code{int} w, @code{int} h)
+Set widget/picture sizes
+ at end deftypemethod
+ at deftypemethod QMathGL @code{double} getRatio ()
+Return aspect ratio of the picture.
+ at end deftypemethod
+
+ at deftypemethod QMathGL @code{int} getPer ()
+Get perspective value in percents.
+ at end deftypemethod
+ at deftypemethod QMathGL @code{int} getPhi ()
+Get Phi-angle value in degrees.
+ at end deftypemethod
+ at deftypemethod QMathGL @code{int} getTet ()
+Get Theta-angle value in degrees.
+ at end deftypemethod
+ at deftypemethod QMathGL @code{bool} getAlpha ()
+Get transparency state.
+ at end deftypemethod
+ at deftypemethod QMathGL @code{bool} getLight ()
+Get lightning state.
+ at end deftypemethod
+ at deftypemethod QMathGL @code{bool} getZoom ()
+Get mouse zooming state.
+ at end deftypemethod
+ at deftypemethod QMathGL @code{bool} getRotate ()
+Get mouse rotation state.
+ at end deftypemethod
+
+ at defop Slot QMathGL @code{void} refresh ()
+Redraw saved bitmap without executing drawing function.
+ at end defop
+ at defop Slot QMathGL @code{void} update (@code{mglGraph *}gr=@code{NULL})
+Update picture by executing drawing function.
+ at end defop
+ at defop Slot QMathGL @code{void} copy ()
+Copy graphics to clipboard.
+ at end defop
+ at defop Slot QMathGL @code{void} setPer (@code{int} val)
+Set perspective value.
+ at end defop
+ at defop Slot QMathGL @code{void} setPhi (@code{int} val)
+Set Phi-angle value.
+ at end defop
+ at defop Slot QMathGL @code{void} setTet (@code{int} val)
+Set Theta-angle value.
+ at end defop
+ at defop Slot QMathGL @code{void} setAlpha (@code{bool} val)
+Switch on/off transparency.
+ at end defop
+ at defop Slot QMathGL @code{void} setLight (@code{bool} val)
+Switch on/off lightning.
+ at end defop
+ at defop Slot QMathGL @code{void} setZoom (@code{bool} val)
+Switch on/off mouse zooming.
+ at end defop
+ at defop Slot QMathGL @code{void} setRotate (@code{bool} val)
+Switch on/off mouse rotation.
+ at end defop
+ at defop Slot QMathGL @code{void} zoomIn ()
+Zoom in graphics.
+ at end defop
+ at defop Slot QMathGL @code{void} zoomOut ()
+Zoom out graphics.
+ at end defop
+ at defop Slot QMathGL @code{void} restore ()
+Restore zoom and rotation to default values.
+ at end defop
+ at defop Slot QMathGL @code{void} reload ()
+Reload data and redraw graphics.
+ at end defop
+ at defop Slot QMathGL @code{void} shiftLeft ()
+Shift graphics to left direction.
+ at end defop
+ at defop Slot QMathGL @code{void} shiftRight ()
+Shift graphics to right direction.
+ at end defop
+ at defop Slot QMathGL @code{void}shiftUp ()
+Shift graphics to up direction.
+ at end defop
+ at defop Slot QMathGL @code{void} shiftDown ()
+Shift graphics to down direction.
+ at end defop
+ at defop Slot QMathGL @code{void} exportPNG (@code{QString} fname=@code{""})
+Export current picture to PNG file.
+ at end defop
+ at defop Slot QMathGL @code{void} exportPNGs (@code{QString} fname=@code{""})
+Export current picture to PNG file (no transparency).
+ at end defop
+ at defop Slot QMathGL @code{void} exportJPG (@code{QString} fname=@code{""})
+Export current picture to JPEG file.
+ at end defop
+ at defop Slot QMathGL @code{void} exportBPS (@code{QString} fname=@code{""})
+Export current picture to bitmap EPS file.
+ at end defop
+ at defop Slot QMathGL @code{void} exportEPS (@code{QString} fname=@code{""})
+Export current picture to vector EPS file.
+ at end defop
+ at defop Slot QMathGL @code{void} exportSVG (@code{QString} fname=@code{""})
+Export current picture to SVG file.
+ at end defop
+ at defop Slot QMathGL @code{void} exportIDTF (@code{QString} fname=@code{""})
+Export current picture to IDTF file.
+ at end defop
+ at defop Slot QMathGL @code{void} setMGLFont (@code{QString} path)
+Restore (@var{path}=@code{""}) or load font for graphics.
+ at end defop
+ at defop Slot QMathGL @code{void} print ()
+Print current picture
+ at end defop
+ at defop Slot QMathGL @code{void} adjust ()
+Adjust plot size to fill entire window. This function is executed only if graph is mglGraphQT instance.
+ at end defop
+ at defop Slot QMathGL @code{void} nextSlide ()
+Show next slide. This function is executed only if graph is mglGraphQT instance.
+ at end defop
+ at defop Slot QMathGL @code{void} prevSlide ()
+Show previous slide. This function is executed only if graph is mglGraphQT instance.
+ at end defop
+ at defop Slot QMathGL @code{void} animation (@code{bool} st=@code{true})
+Start animation. This function is executed only if graph is mglGraphQT instance.
+ at end defop
+ at defop Slot QMathGL @code{void} about ()
+Show about information.
+ at end defop
+ at defop Slot QMathGL @code{void} aboutQt ()
+Show information about Qt version.
+ at end defop
+
+ at defop Signal QMathGL @code{void} phiChanged (@code{int} val)
+Phi angle changed (by mouse or by toolbar).
+ at end defop
+ at defop Signal QMathGL @code{void} tetChanged (@code{int} val)
+Tet angle changed (by mouse or by toolbar).
+ at end defop
+ at defop Signal QMathGL @code{void} perChanged (@code{int} val)
+Perspective changed (by mouse or by toolbar).
+ at end defop
+ at defop Signal QMathGL @code{void} alphaChanged (@code{bool} val)
+Transparency changed (by toolbar).
+ at end defop
+ at defop Signal QMathGL @code{void} lightChanged (@code{bool} val)
+Lighting changed (by toolbar).
+ at end defop
+ at defop Signal QMathGL @code{void} zoomChanged (@code{bool} val)
+Zooming changed (by toolbar).
+ at end defop
+ at defop Signal QMathGL @code{void} rotateChanged (@code{bool} val)
+Rotation changed (by toolbar).
+ at end defop
+
+ at deftypecv {Widget option} QMathGL @code{QString} appName
+Application name for message boxes.
+ at end deftypecv
+ at deftypecv {Widget option} QMathGL @code{bool} autoResize
+Allow auto resizing (default is false).
+ at end deftypecv
+ at deftypecv {Widget option} QMathGL @code{int} animDelay
+Animation delay in ms.
+ at end deftypecv
+
+
diff --git a/texinfo/widget_ru.texi b/texinfo/widget_ru.texi
new file mode 100644
index 0000000..127bcc8
--- /dev/null
+++ b/texinfo/widget_ru.texi
@@ -0,0 +1,290 @@
+
+ at c ------------------------------------------------------------------
+ at chapter ``ÐконнÑе'' клаÑÑÑ
+ at cindex mglGraphFLTK
+ at cindex mglGraphQT
+ at cindex mglGraphGLUT
+ at cindex Fl_MathGL
+ at cindex QMathGL
+ at cindex window
+ at cindex widgets
+
+ÐÑÑÑ ÑелÑй Ð½Ð°Ð±Ð¾Ñ ``оконнÑÑ
'' клаÑÑов Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾ÐºÐ¾Ð½ Ñ Ð³ÑаÑикой MathGL: @code{mglGraphFLTK}, @code{mglGraphQT}, @code{mglGraphGLUT}. ÐÑе ÑÑи клаÑÑÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÑÑ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¿ÑоÑмоÑÑиваÑÑ, вÑаÑаÑÑ, ÑкÑпоÑÑиÑоваÑÑ ÑиÑÑнок. ÐолÑÑинÑÑво из ниÑ
(кÑоме @code{mglGraphGLUT}) ÑвлÑÑÑÑÑ Ð½Ð°Ñледниками клаÑÑа @code{mglGraphZB} и иÑполÑзÑÑÑ ``пÑиÑоединеннÑй'' клаÑÑ Ð´Ð»Ñ ÑенÑÑалÑного виджеÑа окна. ÐÑе оконнÑе клаÑÑÑ Ð¸Ð¼ÐµÑÑ ÑÑ
ожий Ð½Ð°Ð±Ð¾Ñ ÑÑнкÑий (@pxref{mglGraphAB class}). Ðиже пÑиведен ÑпиÑок клаÑÑов Ñ ÐºÑаÑкими комменÑаÑиÑми.
+
+ at deftp {Class} mglGraphFLTK
+Ð¡Ð¾Ð·Ð´Ð°ÐµÑ Ð¾ÐºÐ½Ð¾ иÑполÑзÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾ÑÐµÐºÑ FLTK. Ðкно Ð¸Ð¼ÐµÐµÑ Ð¿Ð°Ð½ÐµÐ»Ñ Ð¸Ð½ÑÑÑÑменÑов и Ð¼ÐµÐ½Ñ Ð´Ð»Ñ ÑпÑоÑÐµÐ½Ð¸Ñ Ð´ÐµÐ¹ÑÑвий Ñ Ð³ÑаÑиками. ``ÐÑиÑоединеннÑй'' клаÑÑ ÑлеменÑа инÑеÑÑейÑа -- @code{Fl_MathGL}. ÐлаÑÑ Ð¾Ð¿Ñеделен в @code{#include <mgl/mgl_fltk.h>}.
+ at end deftp
+
+ at deftp {Class} Fl_MathGL
+ÐлаÑÑ ÑеализÑÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¸Ð½ÑеÑÑейÑа FLTK Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð³ÑаÑики MathGL. ÐлаÑÑ Ð¾Ð¿Ñеделен в @code{#include <mgl/mgl_fltk.h>}.
+ at end deftp
+
+ at float
+ at image{fltk, 7cm}
+ at caption{ÐÑÐ¸Ð¼ÐµÑ Ð¾ÐºÐ½Ð° FLTK Ñ Ð³ÑаÑикой MathGL.}
+ at end float
+
+ at deftp {Class} mglGraphQT
+Ð¡Ð¾Ð·Ð´Ð°ÐµÑ Ð¾ÐºÐ½Ð¾ иÑполÑзÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾ÑÐµÐºÑ Qt. Ðкно Ð¸Ð¼ÐµÐµÑ Ð¿Ð°Ð½ÐµÐ»Ñ Ð¸Ð½ÑÑÑÑменÑов и Ð¼ÐµÐ½Ñ Ð´Ð»Ñ ÑпÑоÑÐµÐ½Ð¸Ñ Ð´ÐµÐ¹ÑÑвий Ñ Ð³ÑаÑиками. ``ÐÑиÑоединеннÑй'' клаÑÑ ÑлеменÑа инÑеÑÑейÑа -- @code{QMathGL}. ÐлаÑÑ Ð¾Ð¿Ñеделен в @code{#include <mgl/mgl_qt.h>}.
+ at end deftp
+
+ at deftp {Class} QMathGL
+ÐлаÑÑ ÑеализÑÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¸Ð½ÑеÑÑейÑа Qt Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð³ÑаÑики MathGL. ÐлаÑÑ Ð¾Ð¿Ñеделен в @code{#include <mgl/mgl_qt.h>}.
+ at end deftp
+
+ at float
+ at image{qt, 7cm}
+ at caption{ÐÑÐ¸Ð¼ÐµÑ Ð¾ÐºÐ½Ð° Qt Ñ Ð³ÑаÑикой MathGL.}
+ at end float
+
+ at deftp {Class} mglGraphGLUT
+Ð¡Ð¾Ð·Ð´Ð°ÐµÑ Ð¾ÐºÐ½Ð¾ иÑполÑзÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾ÑÐµÐºÑ GLUT. ÐлаÑÑ Ð¾Ð¿Ñеделен в @code{#include <mgl/mgl_glut.h>}.
+ at end deftp
+
+ at float
+ at image{glut, 7cm}
+ at caption{ÐÑÐ¸Ð¼ÐµÑ Ð¾ÐºÐ½Ð° GLUT Ñ Ð³ÑаÑикой MathGL.}
+ at end float
+
+ at menu
+* Fl_MathGL class::
+* QMathGL class::
+ at end menu
+
+ at c ------------------------------------------------------------------
+ at node Fl_MathGL class, QMathGL class, , Widget classes
+ at section ÐлаÑÑ Fl_MathGL
+ at cindex Fl_MathGL
+ at cindex widgets
+
+ÐлаÑÑ ÑеализÑÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¸Ð½ÑеÑÑейÑа FLTK Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð³ÑаÑики MathGL (опÑеделен в @code{#include <mgl/mgl_fltk.h>}).
+
+ at deftypemethod Fl_MathGL @code{void} set_draw (@code{mglDraw *}dr)
+ÐÐ°Ð´Ð°ÐµÑ ÑÑнкÑÐ¸Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð· клаÑÑа пÑоизводного Ð¾Ñ @code{mglDraw}.
+ at end deftypemethod
+ at deftypemethod Fl_MathGL @code{void} update (@code{mglGraph *}gr=@code{NULL})
+ÐбновлÑÐµÑ (пеÑеÑиÑовÑваеÑ) гÑаÑик, иÑполÑзÑÑ ÑкземплÑÑ ÐºÐ»Ð°ÑÑа @var{gr} (по ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÑÑÑоеннÑй).
+ at end deftypemethod
+ at deftypemethod Fl_MathGL @code{void} set_angle (@code{float} t, @code{float} p)
+ÐÐ°Ð´Ð°ÐµÑ ÑÐ³Ð»Ñ Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑного вÑаÑÐµÐ½Ð¸Ñ Ð³ÑаÑика.
+ at end deftypemethod
+ at deftypemethod Fl_MathGL @code{void} set_state (@code{int} f)
+ÐÐ°Ð´Ð°ÐµÑ Ð±Ð¸ÑовÑе Ñлаги длÑ: 1 - пÑозÑаÑноÑÑи, 2 - оÑвеÑениÑ.
+ at end deftypemethod
+ at deftypemethod Fl_MathGL @code{void} set_state (@code{bool} z, @code{bool} r)
+ÐÐ°Ð´Ð°ÐµÑ Ñлаги обÑабоÑки движений мÑÑи: @var{z}=@code{true} -- ÑазÑеÑÐ°ÐµÑ Ð¿Ñиближение вÑделениÑ, @var{r}=@code{true} ÑазÑеÑÐ°ÐµÑ Ð²ÑаÑение/Ñдвиг/пÑиближение/пеÑÑпекÑивÑ.
+ at end deftypemethod
+ at deftypemethod Fl_MathGL @code{void} set_zoom (@code{float} X1, @code{float} Y1, @code{float} X2, @code{float} Y2)
+ÐÐ°Ð´Ð°ÐµÑ Ð¾Ð±Ð»Ð°ÑÑÑ Ð¿ÑиближениÑ.
+ at end deftypemethod
+ at deftypemethod Fl_MathGL @code{void} get_zoom (@code{float *}X1, @code{float *}Y1, @code{float *}X2, @code{float *}Y2)
+ÐозвÑаÑÐ°ÐµÑ Ð¾Ð±Ð»Ð°ÑÑÑ Ð¿ÑиближениÑ.
+ at end deftypemethod
+ at deftypemethod Fl_MathGL @code{void} set_popup (@code{const Fl_Menu_Item *}pmenu, @code{Fl_Widget *}w, @code{void *}v)
+ÐÐ°Ð´Ð°ÐµÑ ÑказаÑÐµÐ»Ñ Ð½Ð° вÑплÑваÑÑее менÑ.
+ at end deftypemethod
+ at deftypemethod Fl_MathGL @code{mglGraph *} get_graph ()
+ÐозвÑаÑÐ°ÐµÑ ÑказаÑÐµÐ»Ñ Ð½Ð° клаÑÑ, ÑÑÑоÑÑий гÑаÑики.
+ at end deftypemethod
+
+ at deftypecv {Widget option} Fl_MathGL @code{Fl_Valuator *} tet_val
+УказаÑÐµÐ»Ñ Ð½Ð° внеÑний ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñгла tet.
+ at end deftypecv
+ at deftypecv {Widget option} Fl_MathGL @code{Fl_Valuator *} phi_val
+УказаÑÐµÐ»Ñ Ð½Ð° внеÑний ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñгла phi.
+ at end deftypecv
+ at deftypecv {Widget option} Fl_MathGL @code{mglGraphAB *} graph
+УказаÑÐµÐ»Ñ Ð½Ð° ÑкземплÑÑ ÐºÐ»Ð°ÑÑа Ð´Ð»Ñ Ð¿Ð¾ÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð³ÑаÑиков.
+ at end deftypecv
+ at deftypecv {Widget option} Fl_MathGL @code{void *} draw_par
+ÐаÑамеÑÑ Ð´Ð»Ñ ÑÑнкÑии ÑиÑованиÑ.
+ at end deftypecv
+ at deftypecv {Widget option} Fl_MathGL @code{int (*} draw_func @code{)(mglGraph *gr, void *par)}
+УказаÑÐµÐ»Ñ Ð½Ð° ÑÑнкÑÐ¸Ñ ÑиÑованиÑ.
+ at end deftypecv
+
+ at c ------------------------------------------------------------------
+ at node QMathGL class, , Fl_MathGL class, Widget classes
+ at section QMathGL class
+ at cindex QMathGL
+ at cindex widgets
+
+ÐлаÑÑ ÑеализÑÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¸Ð½ÑеÑÑейÑа Qt Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð³ÑаÑики MathGL (опÑеделен в @code{#include <mgl/mgl_qt.h>}).
+
+ at deftypemethod QMathGL @code{void} setDraw (@code{mglDraw *}dr)
+ÐÐ°Ð´Ð°ÐµÑ ÑÑнкÑÐ¸Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð· клаÑÑа пÑоизводного Ð¾Ñ @code{mglDraw}.
+ at end deftypemethod
+ at deftypemethod QMathGL @code{void} setDraw (@code{int (*}draw)(@code{mglGraph *}gr, @code{void *}p), @code{void *}par=@code{NULL})
+ÐÐ°Ð´Ð°ÐµÑ ÑÑнкÑÐ¸Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ @var{draw} и ÑкзаÑÐµÐ»Ñ @var{par} на паÑамеÑÑ Ð´Ð»Ñ Ð½ÐµÐµ.
+ at end deftypemethod
+
+ at deftypemethod QMathGL @code{void} setGraph (@code{mglGraphAB *}gr)
+УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÑказаÑÐµÐ»Ñ Ð½Ð° внеÑний ÑкземплÑÑ ÐºÐ»Ð°ÑÑа Ð´Ð»Ñ ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ (вмеÑÑо вÑÑÑоенного @code{mglGraphZB}). ÐÑмеÑÑ, ÑÑо QMathGL авÑомаÑиÑеÑки ÑÐ´Ð°Ð»Ð¸Ñ ÑÑÐ¾Ñ Ð¾Ð±ÑÐµÐºÑ Ð¿Ñи Ñдалении ÑлеменÑа инÑеÑÑейÑа или пÑи новом вÑзове @code{setGraph()}.
+ at end deftypemethod
+
+ at deftypemethod QMathGL @code{void} setPopup (@code{QMenu *}p)
+ÐÐ°Ð´Ð°ÐµÑ ÑказаÑÐµÐ»Ñ Ð½Ð° вÑплÑваÑÑее менÑ.
+ at end deftypemethod
+ at deftypemethod QMathGL @code{void} setSize (@code{int} w, @code{int} h)
+ÐÐ°Ð´Ð°ÐµÑ ÑазмеÑÑ ÑлеменÑа ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ каÑÑинки.
+ at end deftypemethod
+ at deftypemethod QMathGL @code{double} getRatio ()
+ÐозвÑаÑÐ°ÐµÑ ÑооÑноÑение ÑÑоÑон ÑиÑÑнка.
+ at end deftypemethod
+
+ at deftypemethod QMathGL @code{int} getPer ()
+ÐозвÑаÑÐ°ÐµÑ Ð²ÐµÐ»Ð¸ÑÐ¸Ð½Ñ Ð¿ÐµÑÑпекÑÐ¸Ð²Ñ Ð² пÑоÑенÑаÑ
.
+ at end deftypemethod
+ at deftypemethod QMathGL @code{int} getPhi ()
+ÐозвÑаÑÐ°ÐµÑ Ð²ÐµÐ»Ð¸ÑÐ¸Ð½Ñ Ñгла Phi в гÑадÑÑаÑ
.
+ at end deftypemethod
+ at deftypemethod QMathGL @code{int} getTet ()
+ÐозвÑаÑÐ°ÐµÑ Ð²ÐµÐ»Ð¸ÑÐ¸Ð½Ñ Ñгла Theta в гÑадÑÑаÑ
.
+ at end deftypemethod
+ at deftypemethod QMathGL @code{bool} getAlpha ()
+ÐозвÑаÑÐ°ÐµÑ ÑоÑÑоÑние пеÑеклÑÑаÑÐµÐ»Ñ Ð¿ÑозÑаÑноÑÑи.
+ at end deftypemethod
+ at deftypemethod QMathGL @code{bool} getLight ()
+ÐозвÑаÑÐ°ÐµÑ ÑоÑÑоÑние пеÑеклÑÑаÑÐµÐ»Ñ Ð¾ÑвеÑениÑ.
+ at end deftypemethod
+ at deftypemethod QMathGL @code{bool} getZoom ()
+ÐозвÑаÑÐ°ÐµÑ ÑоÑÑоÑние пеÑеклÑÑаÑÐµÐ»Ñ Ð¿ÑÐ¸Ð±Ð»Ð¸Ð¶ÐµÐ½Ð¸Ñ Ð¼ÑÑÑÑ.
+ at end deftypemethod
+ at deftypemethod QMathGL @code{bool} getRotate ()
+ÐозвÑаÑÐ°ÐµÑ ÑоÑÑоÑние пеÑеклÑÑаÑÐµÐ»Ñ Ð²ÑаÑÐµÐ½Ð¸Ñ Ð¼ÑÑÑÑ.
+ at end deftypemethod
+
+ at defop Slot QMathGL @code{void} refresh ()
+ÐеÑеÑиÑовÑÐ²Ð°ÐµÑ (обновлÑеÑ) ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð±ÐµÐ· вÑзова ÑÑнкÑии ÑиÑованиÑ.
+ at end defop
+ at defop Slot QMathGL @code{void} update (@code{mglGraph *}gr=@code{NULL})
+ÐбновлÑÐµÑ ÑиÑÑнок пÑÑем вÑзова ÑÑнкÑии ÑиÑованиÑ.
+ at end defop
+ at defop Slot QMathGL @code{void} copy ()
+ÐопиÑÑÐµÑ Ð³ÑаÑик в бÑÑÐµÑ Ð¾Ð±Ð¼ÐµÐ½Ð°.
+ at end defop
+ at defop Slot QMathGL @code{void} setPer (@code{int} val)
+ÐÐ°Ð´Ð°ÐµÑ Ð²ÐµÐ»Ð¸ÑÐ¸Ð½Ñ Ð¿ÐµÑÑпекÑивÑ.
+ at end defop
+ at defop Slot QMathGL @code{void} setPhi (@code{int} val)
+ÐÐ°Ð´Ð°ÐµÑ Ð²ÐµÐ»Ð¸ÑÐ¸Ð½Ñ Ñгла Phi.
+ at end defop
+ at defop Slot QMathGL @code{void} setTet (@code{int} val)
+ÐÐ°Ð´Ð°ÐµÑ Ð²ÐµÐ»Ð¸ÑÐ¸Ð½Ñ Ñгла Theta.
+ at end defop
+ at defop Slot QMathGL @code{void} setAlpha (@code{bool} val)
+ÐклÑÑаеÑ/вÑклÑÑÐ°ÐµÑ Ð¿ÑозÑаÑноÑÑÑ.
+ at end defop
+ at defop Slot QMathGL @code{void} setLight (@code{bool} val)
+ÐклÑÑаеÑ/вÑклÑÑÐ°ÐµÑ Ð¾ÑвеÑение.
+ at end defop
+ at defop Slot QMathGL @code{void} setZoom (@code{bool} val)
+ÐклÑÑаеÑ/вÑклÑÑÐ°ÐµÑ Ð¿Ñиближение мÑÑÑÑ.
+ at end defop
+ at defop Slot QMathGL @code{void} setRotate (@code{bool} val)
+ÐклÑÑаеÑ/вÑклÑÑÐ°ÐµÑ Ð²ÑаÑение мÑÑÑÑ.
+ at end defop
+ at defop Slot QMathGL @code{void} zoomIn ()
+ÐÑÐ¸Ð±Ð»Ð¸Ð°Ð¶ÐµÑ Ð³ÑаÑик.
+ at end defop
+ at defop Slot QMathGL @code{void} zoomOut ()
+ÐÑдалÑÐµÑ Ð³ÑаÑик.
+ at end defop
+ at defop Slot QMathGL @code{void} restore ()
+ÐоÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð¿Ñиближение и повоÑÐ¾Ñ Ð³ÑаÑика в знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑаниÑ.
+ at end defop
+ at defop Slot QMathGL @code{void} reload ()
+ÐбновлÑÐµÑ Ð´Ð°Ð½Ð½Ñе и пеÑеÑиÑовÑÐ²Ð°ÐµÑ Ð³ÑаÑик.
+ at end defop
+ at defop Slot QMathGL @code{void} shiftLeft ()
+Ð¡Ð´Ð²Ð¸Ð³Ð°ÐµÑ Ð³ÑаÑик влево.
+ at end defop
+ at defop Slot QMathGL @code{void} shiftRight ()
+Ð¡Ð´Ð²Ð¸Ð³Ð°ÐµÑ Ð³ÑаÑик впÑаво.
+ at end defop
+ at defop Slot QMathGL @code{void}shiftUp ()
+Ð¡Ð´Ð²Ð¸Ð³Ð°ÐµÑ Ð³ÑаÑик ввеÑÑ
.
+ at end defop
+ at defop Slot QMathGL @code{void} shiftDown ()
+Ð¡Ð´Ð²Ð¸Ð³Ð°ÐµÑ Ð³ÑаÑик вниз.
+ at end defop
+ at defop Slot QMathGL @code{void} exportPNG (@code{QString} fname=@code{""})
+СоÑ
ÑанÑÐµÑ ÑекÑÑий ÑиÑÑнок в PNG Ñайл.
+ at end defop
+ at defop Slot QMathGL @code{void} exportPNGs (@code{QString} fname=@code{""})
+СоÑ
ÑанÑÐµÑ ÑекÑÑий ÑиÑÑнок в PNG Ñайл без пÑозÑаÑноÑÑи.
+ at end defop
+ at defop Slot QMathGL @code{void} exportJPG (@code{QString} fname=@code{""})
+СоÑ
ÑанÑÐµÑ ÑекÑÑий ÑиÑÑнок в JPEG Ñайл.
+ at end defop
+ at defop Slot QMathGL @code{void} exportBPS (@code{QString} fname=@code{""})
+СоÑ
ÑанÑÐµÑ ÑекÑÑий ÑиÑÑнок в ÑаÑÑÑовÑй EPS Ñайл.
+Export current picture to bitmap EPS file.
+ at end defop
+ at defop Slot QMathGL @code{void} exportEPS (@code{QString} fname=@code{""})
+СоÑ
ÑанÑÐµÑ ÑекÑÑий ÑиÑÑнок в векÑоÑнÑй EPS Ñайл.
+ at end defop
+ at defop Slot QMathGL @code{void} exportSVG (@code{QString} fname=@code{""})
+СоÑ
ÑанÑÐµÑ ÑекÑÑий ÑиÑÑнок в векÑоÑнÑй SVG Ñайл.
+ at end defop
+ at defop Slot QMathGL @code{void} exportIDTF (@code{QString} fname=@code{""})
+СоÑ
ÑанÑÐµÑ ÑекÑÑий ÑиÑÑнок в IDTF Ñайл.
+ at end defop
+ at defop Slot QMathGL @code{void} setMGLFont (@code{QString} path)
+ÐоÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ (@var{path}=@code{""}) или загÑÑÐ¶Ð°ÐµÑ ÑÐ°Ð¹Ð»Ñ ÑÑиÑÑов.
+ at end defop
+ at defop Slot QMathGL @code{void} print ()
+ÐеÑаÑÐ°ÐµÑ ÑекÑÑий ÑиÑÑнок.
+ at end defop
+ at defop Slot QMathGL @code{void} adjust ()
+ÐодгонÑÐµÑ ÑÐ°Ð·Ð¼ÐµÑ ÐºÐ°ÑÑинки под ÑÐ°Ð·Ð¼ÐµÑ Ð¾ÐºÐ½Ð°. ФÑнкÑÐ¸Ñ Ð²ÑполнÑеÑÑÑ ÑолÑко еÑли graph -- ÑкземплÑÑ ÐºÐ»Ð°ÑÑа mglGraphQT.
+ at end defop
+ at defop Slot QMathGL @code{void} nextSlide ()
+ÐоказÑÐ²Ð°ÐµÑ ÑледÑÑÑий кадÑ. ФÑнкÑÐ¸Ñ Ð²ÑполнÑеÑÑÑ ÑолÑко еÑли graph -- ÑкземплÑÑ ÐºÐ»Ð°ÑÑа mglGraphQT.
+ at end defop
+ at defop Slot QMathGL @code{void} prevSlide ()
+ÐоказÑÐ²Ð°ÐµÑ Ð¿ÑедÑдÑÑий кадÑ. ФÑнкÑÐ¸Ñ Ð²ÑполнÑеÑÑÑ ÑолÑко еÑли graph -- ÑкземплÑÑ ÐºÐ»Ð°ÑÑа mglGraphQT.
+ at end defop
+ at defop Slot QMathGL @code{void} animation (@code{bool} st=@code{true})
+ÐапÑÑÐºÐ°ÐµÑ Ð°Ð½Ð¸Ð¼Ð°ÑиÑ. ФÑнкÑÐ¸Ñ Ð²ÑполнÑеÑÑÑ ÑолÑко еÑли graph -- ÑкземплÑÑ ÐºÐ»Ð°ÑÑа mglGraphQT.
+ at end defop
+ at defop Slot QMathGL @code{void} about ()
+ÐоказÑÐ²Ð°ÐµÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ пÑогÑамме.
+ at end defop
+ at defop Slot QMathGL @code{void} aboutQt ()
+ÐоказÑÐ²Ð°ÐµÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ веÑÑии Qt.
+ at end defop
+
+ at defop Signal QMathGL @code{void} phiChanged (@code{int} val)
+Угол Phi изменен.
+ at end defop
+ at defop Signal QMathGL @code{void} tetChanged (@code{int} val)
+Угол Tet изменен.
+ at end defop
+ at defop Signal QMathGL @code{void} perChanged (@code{int} val)
+ÐеÑÑпекÑива изменена.
+ at end defop
+ at defop Signal QMathGL @code{void} alphaChanged (@code{bool} val)
+ÐÑозÑаÑноÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð°.
+ at end defop
+ at defop Signal QMathGL @code{void} lightChanged (@code{bool} val)
+ÐÑвеÑение изменено.
+ at end defop
+ at defop Signal QMathGL @code{void} zoomChanged (@code{bool} val)
+Режим пÑÐ¸Ð±Ð»Ð¸Ð¶ÐµÐ½Ð¸Ñ Ð¼ÑÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½.
+ at end defop
+ at defop Signal QMathGL @code{void} rotateChanged (@code{bool} val)
+Режим вÑаÑÐµÐ½Ð¸Ñ Ð¼ÑÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½.
+ at end defop
+
+ at deftypecv {Widget option} QMathGL @code{QString} appName
+ÐÐ¼Ñ Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¾ÐºÐ¾Ð½ ÑообÑений.
+ at end deftypecv
+ at deftypecv {Widget option} QMathGL @code{bool} autoResize
+РазÑеÑиÑÑ Ð¸Ð·Ð¼ÐµÐ½ÑÑÑ ÑÐ°Ð·Ð¼ÐµÑ ÑиÑÑнка (по ÑмолÑÐ°Ð½Ð¸Ñ false).
+ at end deftypecv
+ at deftypecv {Widget option} QMathGL @code{int} animDelay
+ÐадеÑжка анимаÑии в мÑек.
+ at end deftypecv
+
+
diff --git a/utils/Makefile.am b/utils/Makefile.am
index 00afdcb..94619ce 100644
--- a/utils/Makefile.am
+++ b/utils/Makefile.am
@@ -23,7 +23,7 @@ mgl2svg_LDADD = $(top_builddir)/mgl/libmgl.la
if USE_FLTK
mglview_SOURCES = mglview.cpp
-mglview_LDADD = $(top_builddir)/widgets/libmgl-fltk.la
+mglview_LDADD = $(top_builddir)/widgets/libmgl-fltk.la $(top_builddir)/mgl/libmgl.la
mglview_CXXFLAGS = $(FLTK_FLAGS) $(AM_CXXFLAGS)
endif
diff --git a/utils/Makefile.in b/utils/Makefile.in
index ff4454c..8057592 100644
--- a/utils/Makefile.in
+++ b/utils/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -76,7 +76,8 @@ am__mglview_SOURCES_DIST = mglview.cpp
@USE_FLTK_TRUE at am_mglview_OBJECTS = mglview-mglview.$(OBJEXT)
mglview_OBJECTS = $(am_mglview_OBJECTS)
@USE_FLTK_TRUE at mglview_DEPENDENCIES = \
- at USE_FLTK_TRUE@ $(top_builddir)/widgets/libmgl-fltk.la
+ at USE_FLTK_TRUE@ $(top_builddir)/widgets/libmgl-fltk.la \
+ at USE_FLTK_TRUE@ $(top_builddir)/mgl/libmgl.la
mglview_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=link $(CXXLD) $(mglview_CXXFLAGS) $(CXXFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
@@ -143,6 +144,8 @@ GREP = @GREP@
GSL_FLAGS = @GSL_FLAGS@
GSL_LIBS = @GSL_LIBS@
HAVE_SWIG = @HAVE_SWIG@
+HDF4_FLAGS = @HDF4_FLAGS@
+HDF4_LIBS = @HDF4_LIBS@
HDF5_FLAGS = @HDF5_FLAGS@
HDF5_LIBS = @HDF5_LIBS@
INSTALL = @INSTALL@
@@ -163,6 +166,7 @@ LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MGL_AGE = @MGL_AGE@
MGL_CURRENT = @MGL_CURRENT@
+MGL_RELEASE = @MGL_RELEASE@
MGL_REVISION = @MGL_REVISION@
MKDIR_P = @MKDIR_P@
MOC = @MOC@
@@ -281,7 +285,7 @@ mgl2eps_LDADD = $(top_builddir)/mgl/libmgl.la
mgl2svg_SOURCES = mgl2svg.cpp
mgl2svg_LDADD = $(top_builddir)/mgl/libmgl.la
@USE_FLTK_TRUE at mglview_SOURCES = mglview.cpp
- at USE_FLTK_TRUE@mglview_LDADD = $(top_builddir)/widgets/libmgl-fltk.la
+ at USE_FLTK_TRUE@mglview_LDADD = $(top_builddir)/widgets/libmgl-fltk.la $(top_builddir)/mgl/libmgl.la
@USE_FLTK_TRUE at mglview_CXXFLAGS = $(FLTK_FLAGS) $(AM_CXXFLAGS)
@USE_GIF_TRUE at mgl2gif_SOURCES = mgl2gif.cpp
@USE_GIF_TRUE at mgl2gif_LDADD = $(top_builddir)/mgl/libmgl.la
diff --git a/utils/mgl2gif.cpp b/utils/mgl2gif.cpp
index f56a683..dcc0b42 100644
--- a/utils/mgl2gif.cpp
+++ b/utils/mgl2gif.cpp
@@ -70,6 +70,7 @@ int main(int narg, char **arg)
printf("\tHere N=0,1...9 is parameter ID and val is its value.\n");
printf("\tOption -Lval set locale to val.\n");
printf("\tOption -Aval add value of $0 for making animation.\n");
+ printf("\tOption -Cn1:n2 cycle from n1 to n2 for making animation.\n");
}
else
{
@@ -89,6 +90,18 @@ int main(int narg, char **arg)
if(cur) cur = new Str(cur,arg[i]+2);
else head = cur = new Str(0,arg[i]+2);
}
+ if(arg[i][0]=='-' && arg[i][1]=='C')
+ {
+ int n,n1,n2;
+ sscanf(arg[i]+2,"%d:%d",&n1,&n2);
+ char str[64];
+ for(n=n1;n<n2;n++)
+ {
+ sprintf(str,"%d",n);
+ if(cur) cur = new Str(cur,str);
+ else head = cur = new Str(0,str);
+ }
+ }
}
if(narg>2 && arg[2][0]!='-') strcpy(fname,arg[2]);
else
@@ -99,13 +112,25 @@ int main(int narg, char **arg)
// first read animation parameters from file
while(!feof(fp))
{
- fgetws(str,8192,fp);
+ if(!fgetws(str,8192,fp)) break;
wcstrim_mgl(str);
if(str[0]=='#' && str[1]=='#' && str[2]=='a' && str[3]==' ')
{
if(cur) cur = new Str(cur,str+4);
else head = cur = new Str(0,str+4);
}
+ if(str[0]=='#' && str[1]=='#' && str[2]=='c' && str[3]==' ')
+ {
+ float v1,v2,dv,v;
+ wscanf(str+4,"%g %g %g",&v1,&v2,&dv);
+ char ss[64];
+ for(v=v1;v<v2;v+=dv)
+ {
+ sprintf(ss,"%g",v);
+ if(cur) cur = new Str(cur,ss);
+ else head = cur = new Str(0,ss);
+ }
+ }
}
// now execute it and save
gr.Message = buf; *buf=0;
diff --git a/widgets/CMakeLists.txt b/widgets/CMakeLists.txt
index 55c56ab..8bd75cb 100644
--- a/widgets/CMakeLists.txt
+++ b/widgets/CMakeLists.txt
@@ -17,7 +17,7 @@ if(use_fltk)
target_link_libraries(mgl-fltk ${FLTK_LIBRARIES} mgl)
set_target_properties(mgl-fltk PROPERTIES SOVERSION 5.0.0)
install(
- TARGETS mgl-fltk
+ TARGETS mgl-fltk mgl-fltk-static
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
@@ -35,7 +35,7 @@ if(use_glut)
target_link_libraries(mgl-glut ${GLUT_LIBRARIES} ${OPENGL_LIBRARIES} mgl)
set_target_properties(mgl-glut PROPERTIES SOVERSION 5.0.0)
install(
- TARGETS mgl-glut
+ TARGETS mgl-glut mgl-glut-static
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
@@ -53,7 +53,7 @@ if(use_wx)
target_link_libraries(mgl-wx ${wxWidgets_LIBRARIES} mgl)
set_target_properties(mgl-wx PROPERTIES SOVERSION 5.0.0)
install(
- TARGETS mgl-wx
+ TARGETS mgl-wx mgl-wx-static
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
@@ -72,7 +72,7 @@ if(use_qt)
target_link_libraries(mgl-qt ${QT_LIBRARIES} mgl)
set_target_properties(mgl-qt PROPERTIES SOVERSION 5.0.0)
install(
- TARGETS mgl-qt
+ TARGETS mgl-qt mgl-qt-static
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
diff --git a/widgets/Makefile.in b/widgets/Makefile.in
index cc98296..250f511 100644
--- a/widgets/Makefile.in
+++ b/widgets/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -208,6 +208,8 @@ GREP = @GREP@
GSL_FLAGS = @GSL_FLAGS@
GSL_LIBS = @GSL_LIBS@
HAVE_SWIG = @HAVE_SWIG@
+HDF4_FLAGS = @HDF4_FLAGS@
+HDF4_LIBS = @HDF4_LIBS@
HDF5_FLAGS = @HDF5_FLAGS@
HDF5_LIBS = @HDF5_LIBS@
INSTALL = @INSTALL@
@@ -228,6 +230,7 @@ LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MGL_AGE = @MGL_AGE@
MGL_CURRENT = @MGL_CURRENT@
+MGL_RELEASE = @MGL_RELEASE@
MGL_REVISION = @MGL_REVISION@
MKDIR_P = @MKDIR_P@
MOC = @MOC@
diff --git a/widgets/mgl_fltk.cpp b/widgets/mgl_fltk.cpp
index 58dedeb..bd82199 100644
--- a/widgets/mgl_fltk.cpp
+++ b/widgets/mgl_fltk.cpp
@@ -95,28 +95,27 @@ void Fl_MathGL::draw()
void Fl_MathGL::update(mglGraph *gr)
{
if(gr==0) gr=graph;
- if(gr==0 || draw_func==0) return;
- if(gr!=graph || graph->ClfOnUpdate) gr->DefaultPlotParam();
- gr->Alpha(flag&1);
- gr->Light(flag&2);
- gr->View(tet,phi);
- gr->Zoom(x1,y1,x2,y2);
- gr->DrawFace = !rotate;
-
- gr->Message = new char[2048]; gr->Message[0] = 0;
- draw_func(gr, draw_par);
- if(gr->Message[0] != 0) fl_message("%s",gr->Message);
- delete []gr->Message; gr->Message = 0;
-
+ if(gr==0) return;
+ if(draw_func)
+ {
+ if(gr!=graph || graph->ClfOnUpdate) gr->DefaultPlotParam();
+ gr->Message = new char[2048]; gr->Message[0] = 0;
+ gr->Alpha(flag&1);
+ gr->Light(flag&2);
+ gr->View(tet,phi);
+ gr->Zoom(x1,y1,x2,y2);
+ gr->DrawFace = !rotate;
+ draw_func(gr, draw_par);
+ if(gr->Message[0] != 0) fl_message("%s",gr->Message);
+ delete []gr->Message; gr->Message = 0;
+ }
if(gr==graph && (graph->GetWidth()!=w() || graph->GetHeight()!=h()))
size(graph->GetWidth(), graph->GetHeight());
- redraw();
+ redraw(); Fl::flush();
}
//-----------------------------------------------------------------------------
void Fl_MathGL::resize(int x, int y, int w, int h)
-{
- Fl_Widget::resize(x,y,w,h);
-}
+{ Fl_Widget::resize(x,y,w,h); }
//-----------------------------------------------------------------------------
int Fl_MathGL::handle(int code)
{
@@ -688,7 +687,7 @@ int mglFlRun() { return Fl::run(); }
HMGL mgl_create_graph_fltk_dr(HMDR dr, const char *title)
{
mglGraphFLTK *g = new mglGraphFLTK;
- g->Window(0,0,dr,title);
+ g->Window(0,0,title,dr);
return g;
}
//-----------------------------------------------------------------------------
@@ -700,7 +699,7 @@ HMGL mgl_create_graph_fltk(int (*draw)(HMGL gr, void *p), const char *title, voi
}
//-----------------------------------------------------------------------------
void *mgl_fl_tmp(void *) { mglFlRun(); return 0; }
-void mgl_fltk_run() { mglFlRun(); }
+void mgl_fltk_run() { mglFlRun(); }
/*void mgl_fltk_thread()
{
static pthread_t tmp;
diff --git a/widgets/mgl_glut.cpp b/widgets/mgl_glut.cpp
index 214d135..70a10a7 100644
--- a/widgets/mgl_glut.cpp
+++ b/widgets/mgl_glut.cpp
@@ -143,8 +143,7 @@ void _mgl_key_up(unsigned char ch,int ,int )
_mgl_glwnd->WriteEPS(str, "Math GL");
}
if(ch==' ') _mgl_glwnd->Clf();
- if(ch=='m')
- _mgl_glwnd->tt = _mgl_glwnd->tt==0 ? 1:0;
+ if(ch=='m') _mgl_glwnd->tt = 1-_mgl_glwnd->tt;
rL = rL<0 ? 0 : (rL>5 ? 5 : rL);
_mgl_glwnd->Light(0,mglPoint(rL*cos(pL)*sin(tL), rL*sin(pL)*sin(tL), rL*cos(tL)),false);
_mgl_glwnd->Alpha(Alpha);
@@ -211,7 +210,7 @@ void mglGraphGLUT::Window(int argc, char **argv,int (*draw)(mglGraph *gr, void *
HMGL mgl_create_graph_glut(HMDR dr, const char *title)
{
mglGraphGLUT *g = new mglGraphGLUT;
- g->Window(0,0,dr,title);
+ g->Window(0,0,title,dr);
return g;
}
//-----------------------------------------------------------------------------
diff --git a/widgets/mgl_qt.cpp b/widgets/mgl_qt.cpp
index 2079db1..b7c0d0f 100644
--- a/widgets/mgl_qt.cpp
+++ b/widgets/mgl_qt.cpp
@@ -110,7 +110,7 @@ void QMathGL::paintEvent(QPaintEvent *)
//-----------------------------------------------------------------------------
void QMathGL::resizeEvent(QResizeEvent *ev)
{
- if(autoResize)
+ if(autoResize && ev->size().width()>0 && ev->size().height()>0)
{ graph->SetSize(ev->size().width(), ev->size().height()); update(); }
else resize(graph->GetWidth(), graph->GetHeight());
}
@@ -190,16 +190,18 @@ void QMathGL::zoomOut()
void QMathGL::update(mglGraph *gr)
{
if(gr==0) gr = graph;
- if(gr==0 || draw_func==0) return;
+ if(gr==0) return;
+ if(draw_func==0) { refresh(); return; }
if(gr!=graph || graph->ClfOnUpdate) gr->DefaultPlotParam();
+ char *buf=new char[2048]; buf[0]=0; gr->Message = buf;
+
gr->Alpha(alpha); gr->Light(light);
gr->View(tet,phi); gr->Org = mglPoint(NAN,NAN,NAN);
gr->Perspective(per);
gr->Zoom(x1,y1,x2,y2);
gr->DrawFace = !rotate;
-
- char *buf=new char[2048]; buf[0]=0; gr->Message = buf;
- draw_func(gr, draw_par);
+ draw_func(gr, draw_par);
+
if(buf[0] != 0) QMessageBox::warning(this, appName, buf);
gr->Message = 0; delete []buf;
mousePos="";
@@ -430,24 +432,19 @@ void QMathGL::aboutQt() { QMessageBox::aboutQt(this, tr("About Qt")); }
void QMathGL::print()
{
QPrinter *printer = new QPrinter;
+ printer->setOrientation(getRatio()>1 ? QPrinter::Landscape : QPrinter::Portrait);
QPrintDialog printDlg(printer, this);
if (printDlg.exec() == QDialog::Accepted)
{
- QPainter p;
- if(!p.begin(printer)) return; // paint on printer
- QRect r = p.viewport();
- int w = r.width(), h = r.height(), h1;
- h1 = int(w/getRatio());
- if(h1<h) h = h1; else w = int(h*getRatio());
- mglGraphZB gr(w, h);
- if(w*h > 240000) gr.BaseLineWidth = sqrt(w*h/2.4e5);
- update(&gr);
-
- uchar *grBuf=0;
- QPixmap pic;
- convertFromGraph(pic, &gr, &grBuf);
- p.drawPixmap(0,0,pic);
- delete []grBuf;
+ QRectF r = printer->pageRect(QPrinter::Inch);
+ int d1 = int(pic.width()/r.width()), d2 = int(pic.height()/r.height());
+ int dpi = printer->resolution();
+ if(dpi<d1) dpi=d1; if(dpi<d2) dpi=d2;
+ printer->setResolution(dpi);
+
+ QPainter p;
+ if(!p.begin(printer)) return; // paint on printer
+ p.drawPixmap(0,0,pic);
}
delete printer;
}
@@ -579,22 +576,21 @@ void mglGraphQT::Window(int argc, char **argv, int (*draw)(mglGraph *gr, void *p
Wnd = new QMainWindow; Wnd->resize(650,480);
Wnd->setWindowTitle(title);
scroll = new QScrollArea(Wnd);
- QMGL = new QMathGL(Wnd);
+ QMGL = new QMathGL(Wnd); makeMenu();
QMGL->setPopup(popup); QMGL->setGraph(this);
QMGL->setDraw(draw, par);
- makeMenu(); qApp->processEvents();
+ qApp->processEvents();
scroll->setWidget(QMGL);
Wnd->setCentralWidget(scroll);
QMGL->update();
- if(maximize)
- { Wnd->showMaximized(); }
- else Wnd->show();
+ if(!maximize) Wnd->show();
+ else Wnd->showMaximized();
}
//-----------------------------------------------------------------------------
HMGL mgl_create_graph_qt_dr(HMDR dr, const char *title)
{
mglGraphQT *g = new mglGraphQT;
- g->Window(0,0,dr,title);
+ g->Window(0,0,title,dr);
return g;
}
//-----------------------------------------------------------------------------
@@ -626,6 +622,7 @@ void *mgl_qt_tmp(void *) { mglQtRun(); return 0; }
pthread_detach(tmp);
}*/
//-----------------------------------------------------------------------------
+void mgl_qt_run() { mglQtRun(); }
void mgl_qt_run_() { mglQtRun(); }
//-----------------------------------------------------------------------------
#define TR QObject::tr
diff --git a/widgets/mgl_wx.cpp b/widgets/mgl_wx.cpp
index 7383c84..313972b 100644
--- a/widgets/mgl_wx.cpp
+++ b/widgets/mgl_wx.cpp
@@ -22,6 +22,8 @@
#include <wx/msgdlg.h>
#include <wx/clipbrd.h>
#include <wx/dataobj.h>
+#include <wx/menu.h>
+
#include "mgl/mgl_idtf.h"
#include "mgl/mgl_eps.h"
#include "mgl/mgl_wx.h"
@@ -91,7 +93,7 @@ void wxMathGL::OnSize(wxSizeEvent& event)
wxSize ev = event.GetSize();
if(graph->GetWidth()==ev.GetWidth() && graph->GetHeight()==ev.GetHeight())
return;
- if(AutoResize)
+ if(AutoResize && ev.GetWidth()>0 && ev.GetHeight()>0)
{ graph->SetSize(ev.GetWidth(), ev.GetHeight()); Update(); }
else SetSize(graph->GetWidth(), graph->GetHeight());
}
@@ -99,10 +101,7 @@ void wxMathGL::OnSize(wxSizeEvent& event)
void wxMathGL::OnNextSlide(wxTimerEvent& evt) { NextSlide(); }
//-----------------------------------------------------------------------------
void wxMathGL::SetPer(int p)
-{
- if(per!=p && p>=0 && p<100)
- { per = 100*p; Update(); }
-}
+{ if(per!=p && p>=0 && p<100) { per = 100*p; Update(); } }
//-----------------------------------------------------------------------------
void wxMathGL::SetPhi(int p)
{ if(phi!=p) { phi = p; Update(); } }
@@ -539,7 +538,7 @@ void mglGraphWX::Window(int argc, char **argv, int (*draw)(mglGraph *gr, void *p
int n = draw ? draw(this,par) : 0;
if(n<NumFig && n>=0) NumFig = n;
DrawFunc = draw; FuncPar = par;
- LoadFunc = reload;
+ LoadFunc = reload; popup = 0;
if(Wnd)
{
Wnd->SetLabel(wxString(title,wxConvLibc));
@@ -552,17 +551,29 @@ void mglGraphWX::Window(int argc, char **argv, int (*draw)(mglGraph *gr, void *p
if(!wxTheApp) { new wxApp; wxTheApp->SetExitOnFrameDelete(true); }
Wnd = new wxWindow; Wnd->SetSize(650,480);
- Wnd->SetLabel(wxString(title,wxConvLibc));
+ Wnd->SetLabel(wxString(title,wxConvLibc));
+
scroll = new wxScrolledWindow(Wnd);
- WMGL = new wxMathGL(scroll);
+ WMGL = new wxMathGL(scroll); MakeMenu();
WMGL->SetPopup(popup); WMGL->SetGraph(this);
WMGL->SetDraw(draw, par);
- MakeMenu();
+
WMGL->Update();
if(maximize) Wnd->SetSize(Wnd->GetMaxSize());
Wnd->Show();
}
-//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+void mglGraphWX::MakeMenu()
+{
+/* wxMenuBar *m = new wxMenuBar;
+ wxMenu *o, *oo;
+
+ o = new wxMenu; m->Append(o, wxT("&File"));
+ oo= new wxMenu; o->AppendSubMenu(oo,wxT("&Export as ..."));
+ o->Append(wxID_EXIT, wxT("&Close"));
+ Wnd->Connect(wxID_EXIT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(wxWindow::Close));
+*/
+}
/*void mglGraphQT::makeMenu()
{
QAction *a;
@@ -721,7 +732,7 @@ void mglGraphWX::Window(int argc, char **argv, int (*draw)(mglGraph *gr, void *p
HMGL mgl_create_graph_wx_dr(HMDR dr, const char *title)
{
mglGraphWX *g = new mglGraphWX;
- g->Window(0,0,dr,title);
+ g->Window(0,0,title,dr);
return g;
}
//-----------------------------------------------------------------------------
@@ -747,5 +758,4 @@ int mglWxRun() { return wxTheApp ? wxTheApp->MainLoop():0; }
//-----------------------------------------------------------------------------
void mgl_wx_run_() { mglWxRun(); }
//-----------------------------------------------------------------------------
-#endif
-//-----------------------------------------------------------------------------
+#endif
\ No newline at end of file
--
Packaging for mathgl
More information about the debian-science-commits
mailing list