diff options
author | Norbert Preining <norbert@preining.info> | 2020-06-13 03:02:55 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2020-06-13 03:02:55 +0000 |
commit | 2d0067edb74f15b431d7a1e3a42b4f525986cef0 (patch) | |
tree | 06198722777ad0af165eb45b12960c56b226b0cf /graphics/epix/doc | |
parent | c2fde990c352049f8aa6bc9629fee95bad518cde (diff) |
CTAN sync 202006130302
Diffstat (limited to 'graphics/epix/doc')
59 files changed, 0 insertions, 17739 deletions
diff --git a/graphics/epix/doc/Makefile.am b/graphics/epix/doc/Makefile.am deleted file mode 100644 index ec9ac95e5f..0000000000 --- a/graphics/epix/doc/Makefile.am +++ /dev/null @@ -1,45 +0,0 @@ -# Makefile.am for ePiX v1.x "doc" directory -# - -EPIXFLAGS = --no-defaults -I.. -L.. -lepix -v - -%.eepic: %.xp - ../epix-local $(EPIXFLAGS) $< - -XPS := $(wildcard *.xp) - -EEPICS = $(XPS:.xp=.eepic) - -CLEANFILES = *~ *.aux *.dvi *.log *.out *.idx *.ilg *.ind *.toc \ - epix.info.bz2 manual_src.tar manual.pdf manual.ps \ - manual_src.tar.gz manual.pdf.gz manual.ps.gz manual-stamp - -MAINTAINERCLEANFILES = *.eepic *.aux *.dvi *.log *.out *.toc *.idx *.ind *.ilg - -## Targets ## -doc_DATA = manual.pdf.gz manual.ps.gz manual_src.tar.gz epix.info.bz2 - - -# tar up tex, xp, and eepic files; build ps, pdf -manual-stamp: manual.tex $(XPS) $(EEPICS) - latex -interaction=batchmode manual &>/dev/null - latex -interaction=batchmode manual &>/dev/null - makeindex manual.idx &>/dev/null - ../laps-local --pdf manual.tex - touch manual-stamp - -manual_src.tar.gz: manual-stamp - tar -cf manual_src.tar manual.aux manual.ind manual.tex manual.toc \ - $(XPS) $(EEPICS) - gzip -9 manual_src.tar - -#PS -manual.ps.gz: manual-stamp - gzip -9 -c manual.ps > manual.ps.gz - -#PDF -manual.pdf.gz: manual-stamp - gzip -9 -c manual.pdf > manual.pdf.gz - -epix.info.bz2: manual-stamp epix.info - bzip2 -fk epix.info diff --git a/graphics/epix/doc/Makefile.in b/graphics/epix/doc/Makefile.in deleted file mode 100644 index 293c547251..0000000000 --- a/graphics/epix/doc/Makefile.in +++ /dev/null @@ -1,364 +0,0 @@ -# Makefile.in generated by automake 1.9.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Makefile.am for ePiX v1.x "doc" directory -# - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -subdir = doc -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(docdir)" -docDATA_INSTALL = $(INSTALL_DATA) -DATA = $(doc_DATA) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BASH_PATH = @BASH_PATH@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -ENABLE_EPIX_EL_FALSE = @ENABLE_EPIX_EL_FALSE@ -ENABLE_EPIX_EL_TRUE = @ENABLE_EPIX_EL_TRUE@ -EXEEXT = @EXEEXT@ -GREP = @GREP@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ -MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ -MAKEINFO = @MAKEINFO@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -RUNTIME_COMPILER = @RUNTIME_COMPILER@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build_alias = @build_alias@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host_alias = @host_alias@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -EPIXFLAGS = --no-defaults -I.. -L.. -lepix -v -XPS := $(wildcard *.xp) -EEPICS = $(XPS:.xp=.eepic) -CLEANFILES = *~ *.aux *.dvi *.log *.out *.idx *.ilg *.ind *.toc \ - epix.info.bz2 manual_src.tar manual.pdf manual.ps \ - manual_src.tar.gz manual.pdf.gz manual.ps.gz manual-stamp - -MAINTAINERCLEANFILES = *.eepic *.aux *.dvi *.log *.out *.toc *.idx *.ind *.ilg -doc_DATA = manual.pdf.gz manual.ps.gz manual_src.tar.gz epix.info.bz2 -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu doc/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -uninstall-info-am: -install-docDATA: $(doc_DATA) - @$(NORMAL_INSTALL) - test -z "$(docdir)" || $(mkdir_p) "$(DESTDIR)$(docdir)" - @list='$(doc_DATA)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \ - $(docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \ - done - -uninstall-docDATA: - @$(NORMAL_UNINSTALL) - @list='$(doc_DATA)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \ - rm -f "$(DESTDIR)$(docdir)/$$f"; \ - done -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(DATA) -installdirs: - for dir in "$(DESTDIR)$(docdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -clean: clean-am - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-docDATA - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-docDATA uninstall-info-am - -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am \ - install-docDATA install-exec install-exec-am install-info \ - install-info-am install-man install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ - pdf-am ps ps-am uninstall uninstall-am uninstall-docDATA \ - uninstall-info-am - - -%.eepic: %.xp - ../epix-local $(EPIXFLAGS) $< - -# tar up tex, xp, and eepic files; build ps, pdf -manual-stamp: manual.tex $(XPS) $(EEPICS) - latex -interaction=batchmode manual &>/dev/null - latex -interaction=batchmode manual &>/dev/null - makeindex manual.idx &>/dev/null - ../laps-local --pdf manual.tex - touch manual-stamp - -manual_src.tar.gz: manual-stamp - tar -cf manual_src.tar manual.aux manual.ind manual.tex manual.toc \ - $(XPS) $(EEPICS) - gzip -9 manual_src.tar - -#PS -manual.ps.gz: manual-stamp - gzip -9 -c manual.ps > manual.ps.gz - -#PDF -manual.pdf.gz: manual-stamp - gzip -9 -c manual.pdf > manual.pdf.gz - -epix.info.bz2: manual-stamp epix.info - bzip2 -fk epix.info -# 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. -.NOEXPORT: diff --git a/graphics/epix/doc/alignment.eepic b/graphics/epix/doc/alignment.eepic deleted file mode 100644 index 1c5d93bd48..0000000000 --- a/graphics/epix/doc/alignment.eepic +++ /dev/null @@ -1,19 +0,0 @@ -%% Generated from alignment.xp on Fri Jan 7 14:18:43 EST 2005 by -%% ePiX-1.0.3 -%% -%% Cartesian bounding box: [-1,1] x [-1,1] -%% Actual size: 72pt x 24pt -%% Figure offset: right by 0pt, up by 0pt -%% -\setlength{\unitlength}{1pt} -\begin{picture}(72,24)(-0,-0) -%% --- -\path(0.00140226,12)(12.001,12)(24.0006,12)(36.0002,12)(47.9998,12) - (59.9994,12)(71.999,12) -\path(36,0.00046742)(36,12.0001)(36,23.9997) -\put(36,12){\makebox(0,0)[bl]{\texttt{[tr]}}} -\put(36,12){\makebox(0,0)[c]{{\circle*{3}}}} -\put(36,12){\makebox(0,0)[br]{\texttt{[tl]}}} -\put(36,12){\makebox(0,0)[tl]{\texttt{[br]}}} -\put(36,12){\makebox(0,0)[tr]{\texttt{[bl]}}} -\end{picture} diff --git a/graphics/epix/doc/alignment.xp b/graphics/epix/doc/alignment.xp deleted file mode 100644 index e6bfc3c298..0000000000 --- a/graphics/epix/doc/alignment.xp +++ /dev/null @@ -1,26 +0,0 @@ -/* -*-ePiX-*- */ -/* alignment.c -- ePiX's reverse-LaTeX label alignment option */ -#include "epix.h" -using namespace ePiX; - -P O(0,0); - -int main() -{ - bounding_box(P(-1,-1), P(1,1)); - picture(P(72,24)); - unitlength("1pt"); - - begin(); - - Line(O, E_1); - Line(O, E_2); - - font_face("tt"); - dot(O, P(0,0), "[tr]", tr); - label(O, P(0,0), "[tl]", tl); - label(O, P(0,0), "[br]", br); - label(O, P(0,0), "[bl]", bl); - - end(); -} diff --git a/graphics/epix/doc/alignment_lr.eepic b/graphics/epix/doc/alignment_lr.eepic deleted file mode 100644 index 111098caf3..0000000000 --- a/graphics/epix/doc/alignment_lr.eepic +++ /dev/null @@ -1,17 +0,0 @@ -%% Generated from alignment_lr.xp on Fri Jan 7 14:18:31 EST 2005 by -%% ePiX-1.0.3 -%% -%% Cartesian bounding box: [-1,1] x [-1,1] -%% Actual size: 72pt x 24pt -%% Figure offset: right by 0pt, up by 0pt -%% -\setlength{\unitlength}{1pt} -\begin{picture}(72,24)(-0,-0) -%% --- -\put(0,12){\makebox(0,0)[r]{\texttt{[l]}}} -\put(0,12){\makebox(0,0)[c]{{\circle*{3}}}} -\put(0,12){\makebox(0,0)[l]{\texttt{[r]}}} -\put(72,12){\makebox(0,0)[b]{\texttt{[t]}}} -\put(72,12){\makebox(0,0)[c]{{\circle*{3}}}} -\put(72,12){\makebox(0,0)[t]{\texttt{[b]}}} -\end{picture} diff --git a/graphics/epix/doc/alignment_lr.xp b/graphics/epix/doc/alignment_lr.xp deleted file mode 100644 index a6871278e3..0000000000 --- a/graphics/epix/doc/alignment_lr.xp +++ /dev/null @@ -1,24 +0,0 @@ -/* -*-ePiX-*- */ -/* alignment_lr.c -- ePiX's reverse-LaTeX label alignment option */ -#include "epix.h" -using namespace ePiX; - -P p1(-1,0), p2(1,0); - -int main() -{ - bounding_box(P(-1,-1), P(1,1)); - picture(P(72,24)); - unitlength("1pt"); - - begin(); - - font_face("tt"); - dot(p1, P(0,0), "[l]", l); - label(p1, P(0,0), "[r]", r); - - dot(p2, P(0,0), "[t]", t); - label(p2, P(0,0), "[b]", b); - - end(); -} diff --git a/graphics/epix/doc/arrow.eepic b/graphics/epix/doc/arrow.eepic deleted file mode 100644 index 98adf21b49..0000000000 --- a/graphics/epix/doc/arrow.eepic +++ /dev/null @@ -1,22 +0,0 @@ -%% Generated from arrows.xp on Mon Jul 2 20:38:11 EDT 2007 by -%% ePiX-1.1.6 -%% -%% Cartesian bounding box: [-2,2] x [-1,1] -%% Actual size: 24 x 12pt -%% Figure offset: left by 0pt, down by 0pt -%% -\xdefinecolor{rgb_000000}{rgb}{0,0,0} -\setlength{\unitlength}{1pt} -\begin{picture}(24,12)(-0,-0) -\path(0,6)(24,6) -%% -\path(17.8125,4.875)(15.75,4.875) -\path(19.875,5.25)(15.75,5.25) -\path(21.9375,5.625)(15.75,5.625) -\path(24,6)(15.75,6) -\path(21.9375,6.375)(15.75,6.375) -\path(19.875,6.75)(15.75,6.75) -\path(17.8125,7.125)(15.75,7.125) -\path(15.75,6)(15.75,4.5)(24,6)(15.75,7.5)(15.75,6) -%% -\end{picture} diff --git a/graphics/epix/doc/arrow.xp b/graphics/epix/doc/arrow.xp deleted file mode 100644 index 34c47ad5e0..0000000000 --- a/graphics/epix/doc/arrow.xp +++ /dev/null @@ -1,18 +0,0 @@ -/* -*-ePiX-*- */ -#include "epix.h" -using namespace ePiX; - -int main() -{ - picture(P(-2,-1),P(2,1), "24x12pt"); - - begin(); -#ifdef CAMBER25 - arrow_camber(0.25); -#elif CAMBER50 - arrow_camber(0.5); -#endif - - arrow(P(xmin(),0), P(xmax(),0)); - end(); -} diff --git a/graphics/epix/doc/arrow25.eepic b/graphics/epix/doc/arrow25.eepic deleted file mode 100644 index 196889e2b2..0000000000 --- a/graphics/epix/doc/arrow25.eepic +++ /dev/null @@ -1,22 +0,0 @@ -%% Generated from arrows.xp on Mon Jul 2 20:38:23 EDT 2007 by -%% ePiX-1.1.6 -%% -%% Cartesian bounding box: [-2,2] x [-1,1] -%% Actual size: 24 x 12pt -%% Figure offset: left by 0pt, down by 0pt -%% -\xdefinecolor{rgb_000000}{rgb}{0,0,0} -\setlength{\unitlength}{1pt} -\begin{picture}(24,12)(-0,-0) -\path(0,6)(24,6) -%% -\path(17.8125,4.875)(16.2656,4.875) -\path(19.875,5.25)(16.7813,5.25) -\path(21.9375,5.625)(17.2969,5.625) -\path(24,6)(17.8125,6) -\path(21.9375,6.375)(17.2969,6.375) -\path(19.875,6.75)(16.7813,6.75) -\path(17.8125,7.125)(16.2656,7.125) -\path(17.8125,6)(15.75,4.5)(24,6)(15.75,7.5)(17.8125,6) -%% -\end{picture} diff --git a/graphics/epix/doc/arrow50.eepic b/graphics/epix/doc/arrow50.eepic deleted file mode 100644 index e22fec0fd0..0000000000 --- a/graphics/epix/doc/arrow50.eepic +++ /dev/null @@ -1,22 +0,0 @@ -%% Generated from arrows.xp on Mon Jul 2 20:38:34 EDT 2007 by -%% ePiX-1.1.6 -%% -%% Cartesian bounding box: [-2,2] x [-1,1] -%% Actual size: 24 x 12pt -%% Figure offset: left by 0pt, down by 0pt -%% -\xdefinecolor{rgb_000000}{rgb}{0,0,0} -\setlength{\unitlength}{1pt} -\begin{picture}(24,12)(-0,-0) -\path(0,6)(24,6) -%% -\path(17.8125,4.875)(16.7813,4.875) -\path(19.875,5.25)(17.8125,5.25) -\path(21.9375,5.625)(18.8438,5.625) -\path(24,6)(19.875,6) -\path(21.9375,6.375)(18.8438,6.375) -\path(19.875,6.75)(17.8125,6.75) -\path(17.8125,7.125)(16.7813,7.125) -\path(19.875,6)(15.75,4.5)(24,6)(15.75,7.5)(19.875,6) -%% -\end{picture} diff --git a/graphics/epix/doc/basepoint.eepic b/graphics/epix/doc/basepoint.eepic deleted file mode 100644 index efd76dfaa5..0000000000 --- a/graphics/epix/doc/basepoint.eepic +++ /dev/null @@ -1,16 +0,0 @@ -%% Generated from basepoint.xp on Tue Jan 4 15:32:04 EST 2005 by -%% ePiX-1.0.3 -%% -%% Cartesian bounding box: [0,3.75] x [0,1] -%% Actual size: 3.75pc x 1pc -%% Figure offset: right by 0pc, up by 0pc -%% -\setlength{\unitlength}{1pc} -\begin{picture}(3.75,1)(-0,-0) -%% --- -\path(0,-0.375)(3.75,-0.375)(3.75,1)(0,1)(0,-0.375) -\allinethickness{0.15pt}% -\path(0,0)(3.75,0) -\put(0,0){$y=f(x)$} -\put(0,0){\makebox(0,0)[c]{{\circle*{0.111111}}}} -\end{picture} diff --git a/graphics/epix/doc/basepoint.xp b/graphics/epix/doc/basepoint.xp deleted file mode 100644 index 7fc15f6cb1..0000000000 --- a/graphics/epix/doc/basepoint.xp +++ /dev/null @@ -1,36 +0,0 @@ -/* -*-ePiX-*- */ -#include "epix.h" -using namespace ePiX; - -int main() { - bounding_box(P(0,0),P(3.75,1)); - unitlength("1pc"); - picture(3.75,1); - // offset(-0.5,0); - - begin(); - - rect(P(x_min, y_min-0.375), P(x_max, y_max)); - - pen(0.15); - line(P(x_min,0), P(x_max,0)); - - dot_size(2); - - // std::cout << "\n\\LARGE"; - /* - label(P(0,0), P(0,0), "$b$"); - ddot(P(0,0)); - - label(P(1,0), P(0,0), "$f$"); - ddot(P(1,0)); - - label(P(2,0), P(0,0), "$p$"); - ddot(P(2,0)); - */ - - label(P(0,0), P(0,0), "$y=f(x)$"); - ddot(P(0,0)); - - end(); -} diff --git a/graphics/epix/doc/camera.eepic b/graphics/epix/doc/camera.eepic deleted file mode 100644 index 7da56f9987..0000000000 --- a/graphics/epix/doc/camera.eepic +++ /dev/null @@ -1,285 +0,0 @@ -%% Generated from camera.xp on Sat Sep 22 17:10:34 EDT 2007 by -%% ePiX-1.2.0 -%% -%% Cartesian bounding box: [-3.5,3.5] x [-3.5,2.5] -%% Actual size: 2.625 x 2.25in -%% Figure offset: left by 0in, down by 0in -%% -%% usepackages epic,eepic,xcolor -%% -\xdefinecolor{rgb_000000}{rgb}{0,0,0}% -\xdefinecolor{rgb_7f7f7f}{rgb}{0.498039,0.498039,0.498039}% -\xdefinecolor{rgb_e5e5e5}{rgb}{0.898039,0.898039,0.898039}% -\xdefinecolor{rgb_ffffff}{rgb}{1,1,1}% -\setlength{\unitlength}{1in}% -\begin{picture}(2.625,2.25)(0,0)% -\path(1.42243,1.30711)(1.4086,1.26997)(1.29561,1.27568) -\path(1.3125,1.3125)(1.4523,1.30564)(1.59359,1.29871) -\path(1.3125,1.3125)(1.3125,1.44704)(1.3125,1.58496) -\path(0.307912,0.721822)(0.173332,2.09409)(2.55902,2.04543) - (2.39965,0.566596)(0.307912,0.721822) -\put(1.58249,0.490175){\makebox(0,0)[l]{\colorbox{rgb_ffffff}{\hbox{\color{rgb_000000}\footnotesize \textbf{Sea}}}}} -\put(0.937572,1.11972){\makebox(0,0)[b]{\colorbox{rgb_ffffff}{\hbox{\color{rgb_000000}\footnotesize \textbf{Sky}}}}} -\put(0.735053,0.174015){\makebox(0,0)[r]{\colorbox{rgb_ffffff}{\hbox{\color{rgb_000000}\footnotesize \textbf{Eye}}}}} -\put(0.929482,0.537641){\makebox(0,0)[r]{\colorbox{rgb_ffffff}{\hbox{\color{rgb_000000}\footnotesize Viewpoint}}}} -\put(0.957156,0.537641){\color{rgb_000000}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\put(2.476,2.01776){\makebox(0,0)[tr]{\colorbox{rgb_ffffff}{\hbox{\color{rgb_000000}\footnotesize Canvas}}}} -\path(0.957156,0.537641)(1.17567,1.01413)(1.3125,1.3125) -\color{rgb_7f7f7f}% -\path(1.83216,0.911179)(1.84054,0.911179) -\path(1.82052,0.916691)(1.83729,0.916691) -\path(1.80888,0.922203)(1.83404,0.922203) -\path(1.79724,0.927715)(1.83079,0.927715) -\path(1.7856,0.933227)(1.82754,0.933227) -\path(1.77396,0.938739)(1.82429,0.938739) -\path(1.76232,0.944251)(1.82104,0.944251) -\path(1.75068,0.949763)(1.81779,0.949763) -\path(1.73904,0.955275)(1.81454,0.955275) -\path(1.7274,0.960787)(1.81129,0.960787) -\path(1.71576,0.966299)(1.80804,0.966299) -\path(1.70412,0.971811)(1.80479,0.971811) -\path(1.69248,0.977323)(1.80154,0.977323) -\path(1.68084,0.982835)(1.79829,0.982835) -\path(1.6692,0.988347)(1.79503,0.988347) -\path(1.65756,0.993859)(1.79178,0.993859) -\path(1.64592,0.999371)(1.78853,0.999371) -\path(1.63428,1.00488)(1.78528,1.00488) -\path(1.62264,1.0104)(1.78203,1.0104) -\path(1.611,1.01591)(1.77878,1.01591) -\path(1.60612,1.02142)(1.77553,1.02142) -\path(1.60892,1.02693)(1.77228,1.02693) -\path(1.61172,1.03244)(1.76903,1.03244) -\path(1.61452,1.03796)(1.76578,1.03796) -\path(1.61732,1.04347)(1.76253,1.04347) -\path(1.62012,1.04898)(1.75928,1.04898) -\path(1.62292,1.05449)(1.75603,1.05449) -\path(1.62572,1.06)(1.75278,1.06) -\path(1.62852,1.06551)(1.74952,1.06551) -\path(1.63132,1.07103)(1.74627,1.07103) -\path(1.63412,1.07654)(1.74302,1.07654) -\path(1.63692,1.08205)(1.73977,1.08205) -\path(1.63972,1.08756)(1.73652,1.08756) -\path(1.64252,1.09307)(1.73327,1.09307) -\path(1.64532,1.09859)(1.73002,1.09859) -\path(1.64812,1.1041)(1.72677,1.1041) -\path(1.65091,1.10961)(1.72352,1.10961) -\path(1.65371,1.11512)(1.72027,1.11512) -\path(1.65651,1.12063)(1.71702,1.12063) -\path(1.65931,1.12615)(1.71377,1.12615) -\path(1.66211,1.13166)(1.71052,1.13166) -\path(1.66491,1.13717)(1.70726,1.13717) -\path(1.66771,1.14268)(1.70401,1.14268) -\path(1.67051,1.14819)(1.70076,1.14819) -\path(1.67331,1.15371)(1.69751,1.15371) -\path(1.67611,1.15922)(1.69426,1.15922) -\path(1.67891,1.16473)(1.69101,1.16473) -\path(1.68171,1.17024)(1.68776,1.17024) -\path(1.83836,0.908239)(1.83836,0.914877) -\path(1.83293,0.910811)(1.83293,0.924087) -\path(1.8275,0.913384)(1.8275,0.933297) -\path(1.82207,0.915956)(1.82207,0.942506) -\path(1.81664,0.918528)(1.81664,0.951716) -\path(1.81121,0.9211)(1.81121,0.960926) -\path(1.80577,0.923672)(1.80577,0.970136) -\path(1.80034,0.926244)(1.80034,0.979345) -\path(1.79491,0.928816)(1.79491,0.988555) -\path(1.78948,0.931388)(1.78948,0.997765) -\path(1.78405,0.93396)(1.78405,1.00697) -\path(1.77862,0.936532)(1.77862,1.01618) -\path(1.77319,0.939104)(1.77319,1.02539) -\path(1.76775,0.941676)(1.76775,1.0346) -\path(1.76232,0.944248)(1.76232,1.04381) -\path(1.75689,0.94682)(1.75689,1.05302) -\path(1.75146,0.949392)(1.75146,1.06223) -\path(1.74603,0.951964)(1.74603,1.07144) -\path(1.7406,0.954536)(1.7406,1.08065) -\path(1.73517,0.957108)(1.73517,1.08986) -\path(1.72973,0.95968)(1.72973,1.09907) -\path(1.7243,0.962252)(1.7243,1.10828) -\path(1.71887,0.964824)(1.71887,1.11749) -\path(1.71344,0.967396)(1.71344,1.1267) -\path(1.70801,0.969968)(1.70801,1.13591) -\path(1.70258,0.97254)(1.70258,1.14512) -\path(1.69715,0.975112)(1.69715,1.15433) -\path(1.69171,0.977684)(1.69171,1.16354) -\path(1.68628,0.980256)(1.68628,1.17275) -\path(1.68085,0.982828)(1.68085,1.16855) -\path(1.67542,0.9854)(1.67542,1.15786) -\path(1.66999,0.987972)(1.66999,1.14716) -\path(1.66456,0.990544)(1.66456,1.13647) -\path(1.65912,0.993116)(1.65912,1.12577) -\path(1.65369,0.995689)(1.65369,1.11508) -\path(1.64826,0.998261)(1.64826,1.10439) -\path(1.64283,1.00083)(1.64283,1.09369) -\path(1.6374,1.0034)(1.6374,1.083) -\path(1.63197,1.00598)(1.63197,1.07231) -\path(1.62654,1.00855)(1.62654,1.06161) -\path(1.6211,1.01112)(1.6211,1.05092) -\path(1.61567,1.01369)(1.61567,1.04022) -\path(1.61024,1.01626)(1.61024,1.02953) -\color{rgb_000000}% -\path(1.68451,1.17575)(1.8438,0.905667)(1.60481,1.01884)(1.68451,1.17575) -\path(1.55858,1.06528)(1.62462,1.12321)(1.68451,1.17575) -\path(1.64966,0.825085)(1.75291,0.867943)(1.8438,0.905667) -\path(1.42984,0.888834)(1.52409,0.958865)(1.60481,1.01884) -\path(0.957156,0.537641)(1.4039,0.929569)(1.68451,1.17575) -\path(0.957156,0.537641)(1.50556,0.765274)(1.8438,0.905667) -\path(0.957156,0.537641)(1.35769,0.835234)(1.60481,1.01884) -\color{rgb_e5e5e5}% -\path(1.64572,0.826226)(1.5548,1.06009) -\path(1.63918,0.828123)(1.55101,1.0549) -\path(1.63264,0.830021)(1.54722,1.04971) -\path(1.6261,0.831918)(1.54344,1.04452) -\path(1.61955,0.833815)(1.53965,1.03933) -\path(1.61301,0.835712)(1.53586,1.03414) -\path(1.60647,0.837609)(1.53208,1.02895) -\path(1.59993,0.839507)(1.52829,1.02376) -\path(1.59339,0.841404)(1.5245,1.01857) -\path(1.58684,0.843301)(1.52072,1.01338) -\path(1.5803,0.845198)(1.51693,1.00819) -\path(1.57376,0.847095)(1.51314,1.003) -\path(1.56722,0.848993)(1.50936,0.997814) -\path(1.56068,0.85089)(1.50557,0.992624) -\path(1.55413,0.852787)(1.50178,0.987435) -\path(1.54759,0.854684)(1.498,0.982245) -\path(1.54105,0.856581)(1.49421,0.977056) -\path(1.53451,0.858479)(1.49042,0.971866) -\path(1.52797,0.860376)(1.48664,0.966677) -\path(1.52142,0.862273)(1.48285,0.961487) -\path(1.51488,0.86417)(1.47906,0.956298) -\path(1.50834,0.866067)(1.47528,0.951108) -\path(1.5018,0.867965)(1.47149,0.945919) -\path(1.49526,0.869862)(1.4677,0.940729) -\path(1.48871,0.871759)(1.46392,0.93554) -\path(1.48217,0.873656)(1.46013,0.93035) -\path(1.47563,0.875553)(1.45634,0.925161) -\path(1.46909,0.877451)(1.45256,0.919971) -\path(1.46255,0.879348)(1.44877,0.914781) -\path(1.456,0.881245)(1.44498,0.909592) -\path(1.44946,0.883142)(1.4412,0.904402) -\path(1.44292,0.885039)(1.43741,0.899213) -\path(1.43638,0.886937)(1.43362,0.894023) -\path(1.56052,1.06017)(1.55261,1.05709) -\path(1.56246,1.05506)(1.54664,1.04891) -\path(1.5644,1.04995)(1.54066,1.04072) -\path(1.56633,1.04484)(1.53469,1.03253) -\path(1.56827,1.03973)(1.52872,1.02435) -\path(1.57021,1.03461)(1.52274,1.01616) -\path(1.57215,1.0295)(1.51677,1.00797) -\path(1.57409,1.02439)(1.5108,0.999787) -\path(1.57602,1.01928)(1.50482,0.991601) -\path(1.57796,1.01417)(1.49885,0.983414) -\path(1.5799,1.00906)(1.49288,0.975228) -\path(1.58184,1.00395)(1.4869,0.967042) -\path(1.58377,0.998841)(1.48093,0.958855) -\path(1.58571,0.993731)(1.47496,0.950669) -\path(1.58765,0.988621)(1.46898,0.942483) -\path(1.58959,0.98351)(1.46301,0.934296) -\path(1.59152,0.9784)(1.45704,0.92611) -\path(1.59346,0.973289)(1.45106,0.917923) -\path(1.5954,0.968179)(1.44509,0.909737) -\path(1.59734,0.963068)(1.43911,0.901551) -\path(1.59928,0.957958)(1.43314,0.893364) -\path(1.60121,0.952847)(1.43369,0.887715) -\path(1.60315,0.947737)(1.44233,0.88521) -\path(1.60509,0.942626)(1.45097,0.882705) -\path(1.60703,0.937516)(1.45961,0.880199) -\path(1.60896,0.932405)(1.46825,0.877694) -\path(1.6109,0.927295)(1.47689,0.875189) -\path(1.61284,0.922184)(1.48552,0.872684) -\path(1.61478,0.917074)(1.49416,0.870179) -\path(1.61672,0.911963)(1.5028,0.867673) -\path(1.61865,0.906853)(1.51144,0.865168) -\path(1.62059,0.901742)(1.52008,0.862663) -\path(1.62253,0.896632)(1.52872,0.860158) -\path(1.62447,0.891521)(1.53736,0.857653) -\path(1.6264,0.886411)(1.54599,0.855147) -\path(1.62834,0.8813)(1.55463,0.852642) -\path(1.63028,0.87619)(1.56327,0.850137) -\path(1.63222,0.871079)(1.57191,0.847632) -\path(1.63416,0.865969)(1.58055,0.845127) -\path(1.63609,0.860858)(1.58919,0.842621) -\path(1.63803,0.855748)(1.59783,0.840116) -\path(1.63997,0.850637)(1.60646,0.837611) -\path(1.64191,0.845527)(1.6151,0.835106) -\path(1.64384,0.840416)(1.62374,0.8326) -\path(1.64578,0.835306)(1.63238,0.830095) -\path(1.64772,0.830195)(1.64102,0.82759) -\color{rgb_000000}% -\path(1.55858,1.06528)(1.64966,0.825085)(1.42984,0.888834)(1.55858,1.06528) -\path(1.69177,1.3845)(1.6229,1.16677)(1.54714,0.927292) -\put(1.69177,1.3845){\makebox(0,0)[b]{\colorbox{rgb_ffffff}{\hbox{\color{rgb_000000}\footnotesize Object}}}} -\path(2.05075,0.923554)(1.88188,0.980517)(1.71366,1.03726) -\put(2.05075,0.923554){\makebox(0,0)[l]{\colorbox{rgb_ffffff}{\hbox{\color{rgb_000000}\footnotesize Shadow}}}} -\put(1.12218,1.68556){\makebox(0,0)[b]{\colorbox{rgb_ffffff}{\hbox{\color{rgb_000000}\footnotesize Target}}}} -\path(1.12218,1.68556)(1.29391,1.34894) -\path(1.27634,1.40359)(1.2621,1.39054) -\path(1.27896,1.39892)(1.26528,1.38638) -\path(1.28062,1.39336)(1.26846,1.38222) -\path(1.28229,1.38781)(1.27164,1.37806) -\path(1.28395,1.38226)(1.27482,1.3739) -\path(1.28561,1.3767)(1.278,1.36974) -\path(1.28727,1.37115)(1.28118,1.36558) -\path(1.28893,1.3656)(1.28437,1.36142) -\path(1.29059,1.36005)(1.28755,1.35726) -\path(1.29225,1.35449)(1.29073,1.3531) -\path(1.25949,1.39395)(1.29061,1.35998) -\path(1.26348,1.39703)(1.28731,1.37102) -\path(1.26812,1.39939)(1.28401,1.38205) -\path(1.27276,1.40176)(1.28071,1.39309) -\path(1.26816,1.39941)(1.25892,1.3947)(1.29391,1.34894) - (1.2774,1.40413)(1.26816,1.39941) -\put(1.3125,1.3125){\color{rgb_000000}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\allinethickness{0.8pt}% -\path(0.957156,0.537641)(1.55482,0.490175) -\allinethickness{0.0055348in}% -\path(1.4989,0.489651)(1.50786,0.485229) -\path(1.49933,0.495061)(1.51726,0.486218) -\path(1.49976,0.500472)(1.52665,0.487207) -\path(1.50454,0.503736)(1.53604,0.488197) -\path(1.52968,0.496955)(1.54543,0.489186) -\path(1.54888,0.489549)(1.54985,0.491516) -\path(1.54293,0.488923)(1.54487,0.492858) -\path(1.53699,0.488297)(1.5399,0.494199) -\path(1.53104,0.487671)(1.53493,0.495541) -\path(1.5251,0.487045)(1.52995,0.496882) -\path(1.51916,0.486419)(1.52498,0.498223) -\path(1.51321,0.485792)(1.52001,0.499565) -\path(1.50727,0.485166)(1.51504,0.500906) -\path(1.50133,0.48454)(1.51006,0.502247) -\path(1.49903,0.491318)(1.50509,0.503589) -\allinethickness{0.8pt}% -\path(1.49929,0.494585)(1.49847,0.48424)(1.55482,0.490175) - (1.50012,0.50493)(1.49929,0.494585) -\path(0.957156,0.537641)(0.790401,0.174015) -\allinethickness{0.0055348in}% -\path(0.807364,0.192334)(0.808098,0.200697) -\path(0.80171,0.186228)(0.803178,0.202954) -\path(0.796055,0.180122)(0.798257,0.20521) -\path(0.807022,0.201191)(0.793617,0.202367) -\path(0.810836,0.196084)(0.793081,0.197642) -\path(0.806749,0.19167)(0.792545,0.192917) -\path(0.802662,0.187256)(0.792009,0.188191) -\path(0.798575,0.182843)(0.791473,0.183466) -\path(0.794488,0.178429)(0.790937,0.178741) -\allinethickness{0.8pt}% -\path(0.803586,0.202767)(0.794153,0.207092)(0.790401,0.174015) - (0.813019,0.198441)(0.803586,0.202767) -\path(0.957156,0.537641)(0.937572,1.09205) -\allinethickness{0.0055348in}% -\path(0.938782,1.08718)(0.936611,1.08655) -\path(0.939993,1.08231)(0.935649,1.08104) -\path(0.941204,1.07743)(0.934688,1.07554) -\path(0.942414,1.07256)(0.933727,1.07003) -\path(0.943625,1.06769)(0.932765,1.06453) -\path(0.944835,1.06282)(0.931804,1.05902) -\path(0.946046,1.05794)(0.930842,1.05352) -\path(0.947256,1.05307)(0.929881,1.04801) -\path(0.948467,1.0482)(0.929251,1.04261) -\path(0.931094,1.05496)(0.934635,1.0428) -\path(0.933253,1.06732)(0.940334,1.043) -\path(0.935413,1.07969)(0.946034,1.0432) -\allinethickness{0.8pt}% -\path(0.939306,1.04296)(0.949677,1.04333)(0.937572,1.09205) - (0.928935,1.0426)(0.939306,1.04296) -\end{picture}% diff --git a/graphics/epix/doc/camera.xp b/graphics/epix/doc/camera.xp deleted file mode 100644 index 66f8fdb334..0000000000 --- a/graphics/epix/doc/camera.xp +++ /dev/null @@ -1,86 +0,0 @@ -/* -*-ePiX-*- */ -#include "epix.h" -using namespace ePiX; - -const double ht(4); - -const P target(0,0,0); -const P observer(0,-4,0); -const P dtarg(-0.5,0,1); -const double dx(0.375); - -// location of label -const P obj_loc(1,0,0.25); - -P F(P arg) -{ - double x(arg.x2()); - return (ht/(ht+x))*P(arg.x1(), 0, arg.x3()); -} - -P P1(0.75, -1, -0.25); -P P2(1, -1.25, -0.75); -P P3(0.5, -1.5, -0.5 ); -P midpt((1.0/3)*(P1+P2+P3)); - -int main() { - bounding_box(P(-3.5,-3.5),P(3.5,2.5)); - unitlength("0.375in"); - picture(P(7,6)); - - begin(); - - camera.at(P(1.5,-10,3.5)); - camera.range(10); - - font_size("footnotesize"); - right_angle(target, E_1, -E_2); - - line(target, target+2*dx*E_1); - line(target, target+2*dx*E_3); - - // grid(P(-3,0,-2), P(3,0,2), 6, 8); - grid(P(-3,0,-2), P(3,0,2)); - - masklabel(observer+E_1, P(2,0), "\\textbf{Sea}", r); - masklabel(observer+E_3, P(0,2), "\\textbf{Sky}", t); - masklabel(observer-E_2, P(-4,0), "\\textbf{Eye}", l); - - masklabel(observer, P(-2,0), "Viewpoint", l); - dot(observer); - - masklabel(P(3,0,2), P(-6,-2), "Canvas", bl); - - line(observer, target); - - fill(Black(0.5)); - triangle(F(P1), F(P2), F(P3)); - - line(P1, F(P1)); - line(P2, F(P2)); - line(P3, F(P3)); - - line(observer, F(P1)); - line(observer, F(P2)); - line(observer, F(P3)); - - fill(Black(0.1)); - triangle(P1, P2, P3); - - line(obj_loc, midpt); - masklabel(obj_loc, P(0,0), "Object", t); - - line(P(2,0,-1), F(midpt)); - masklabel(P(2,0,-1), P(0,0), "Shadow", r); - - masklabel(target+dtarg, P(0,0), "Target", t); - arrow(target+dtarg, target+0.1*dtarg, 0.5); - dot(target); - - bold(); - arrow(observer, observer+E_1, 0.5); - arrow(observer, observer-E_2, 0.5); - arrow(observer, observer+E_3, 0.5); - - end(); -} diff --git a/graphics/epix/doc/cb.eepic b/graphics/epix/doc/cb.eepic deleted file mode 100644 index 7df0354645..0000000000 --- a/graphics/epix/doc/cb.eepic +++ /dev/null @@ -1,25 +0,0 @@ -%% Generated from cb.xp on Tue Jan 4 15:32:10 EST 2005 by -%% ePiX-1.0.3 -%% -%% Cartesian bounding box: [-2,2] x [-1,1] -%% Actual size: 1.5in x 0.75in -%% Figure offset: right by 0in, up by 0in -%% -\setlength{\unitlength}{1in} -\begin{picture}(1.5,0.75)(-0,-0) -%% --- -\path(0,0.375)(1.5,0.375) -\put(0,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}} -\put(0.375,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}} -\put(0.75,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}} -\put(1.125,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}} -\put(1.5,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}} -%% --- -\path(0.75,0)(0.75,0.75) -\put(0.75,0){\makebox(0,0)[c]{\rule{4pt}{0.5pt}}} -\put(0.75,0.75){\makebox(0,0)[c]{\rule{4pt}{0.5pt}}} -%% --- -\thicklines -\path(0,0.375)(0.375,0.75)(0.75,0.375)(1.125,0.75)(1.5,0.375) -\put(0.75,-0.055348){\makebox(0,0)[t]{\code{cb}}} -\end{picture} diff --git a/graphics/epix/doc/cb.xp b/graphics/epix/doc/cb.xp deleted file mode 100644 index e0434b483e..0000000000 --- a/graphics/epix/doc/cb.xp +++ /dev/null @@ -1,22 +0,0 @@ -/* -*-ePiX-*- */ -#include "epix.h" -using namespace ePiX; - -int main() -{ - bounding_box(P(-2,-1),P(2,1)); - unitlength("1in"); - picture(1.5,0.75); - - begin(); - - h_axis(4); - v_axis(1); - - bold(); - plot(cb, x_min, x_max, 4); - - label(P(0,y_min), P(0,-4), "\\code{cb}", b); - - end(); -} diff --git a/graphics/epix/doc/color_density.eepic b/graphics/epix/doc/color_density.eepic deleted file mode 100644 index 1b0ee79028..0000000000 --- a/graphics/epix/doc/color_density.eepic +++ /dev/null @@ -1,139 +0,0 @@ -%% Generated from color_density.xp on Thu Jul 5 10:01:14 EDT 2007 by -%% ePiX-1.1.6 -%% -%% Cartesian bounding box: [-2,2] x [0,1.375] -%% Actual size: 4 x 1.5in -%% Figure offset: left by 0in, down by 0in -%% -\newrgbcolor{rgb_000000}{0 0 0} -\newrgbcolor{rgb_005454}{0 0.329412 0.329412} -\newrgbcolor{rgb_00a9a9}{0 0.662745 0.662745} -\newrgbcolor{rgb_00fefe}{0 0.996078 0.996078} -\newrgbcolor{rgb_00ffff}{0 1 1} -\newrgbcolor{rgb_540000}{0.329412 0 0} -\newrgbcolor{rgb_54ffff}{0.329412 1 1} -\newrgbcolor{rgb_a90000}{0.662745 0 0} -\newrgbcolor{rgb_a9ffff}{0.662745 1 1} -\newrgbcolor{rgb_fe0000}{0.996078 0 0} -\newrgbcolor{rgb_feffff}{0.996078 1 1} -\newrgbcolor{rgb_ff0000}{1 0 0} -\newrgbcolor{rgb_ff5454}{1 0.329412 0.329412} -\newrgbcolor{rgb_ffa9a9}{1 0.662745 0.662745} -\newrgbcolor{rgb_fffefe}{1 0.996078 0.996078} -\psset{unit=1in,linewidth=0.4pt} -\begin{pspicture}(4,1.5)(-0,-0) -\psset{fillcolor=rgb_feffff}% -\psline[fillstyle=solid] - (-0.123,1.22727)(0.127,1.22727)(0.127,1.5)(-0.123,1.5)(-0.123,1.22727) -%% -\psline(-0.123,1.22727)(0.127,1.22727)(0.127,1.5)(-0.123,1.5)(-0.123,1.22727) -%% -\psset{fillcolor=rgb_a9ffff}% -\psline[fillstyle=solid] - (0.21,1.22727)(0.46,1.22727)(0.46,1.5)(0.21,1.5)(0.21,1.22727) -%% -\psline(0.21,1.22727)(0.46,1.22727)(0.46,1.5)(0.21,1.5)(0.21,1.22727) -%% -\psset{fillcolor=rgb_54ffff}% -\psline[fillstyle=solid] - (0.543,1.22727)(0.793,1.22727)(0.793,1.5)(0.543,1.5)(0.543,1.22727) -%% -\psline(0.543,1.22727)(0.793,1.22727)(0.793,1.5)(0.543,1.5)(0.543,1.22727) -%% -\psset{fillcolor=rgb_00fefe}% -\psline[fillstyle=solid] - (0.876,1.22727)(1.126,1.22727)(1.126,1.5)(0.876,1.5)(0.876,1.22727) -%% -\psline(0.876,1.22727)(1.126,1.22727)(1.126,1.5)(0.876,1.5)(0.876,1.22727) -%% -\psset{fillcolor=rgb_00a9a9}% -\psline[fillstyle=solid] - (1.209,1.22727)(1.459,1.22727)(1.459,1.5)(1.209,1.5)(1.209,1.22727) -%% -\psline(1.209,1.22727)(1.459,1.22727)(1.459,1.5)(1.209,1.5)(1.209,1.22727) -%% -\psset{fillcolor=rgb_005454}% -\psline[fillstyle=solid] - (1.542,1.22727)(1.792,1.22727)(1.792,1.5)(1.542,1.5)(1.542,1.22727) -%% -\psline(1.542,1.22727)(1.792,1.22727)(1.792,1.5)(1.542,1.5)(1.542,1.22727) -%% -\psset{fillcolor=rgb_000000}% -\psline[fillstyle=solid] - (1.875,1.22727)(2.125,1.22727)(2.125,1.5)(1.875,1.5)(1.875,1.22727) -%% -\psline(1.875,1.22727)(2.125,1.22727)(2.125,1.5)(1.875,1.5)(1.875,1.22727) -%% -\psset{fillcolor=rgb_540000}% -\psline[fillstyle=solid] - (2.208,1.22727)(2.458,1.22727)(2.458,1.5)(2.208,1.5)(2.208,1.22727) -%% -\psline(2.208,1.22727)(2.458,1.22727)(2.458,1.5)(2.208,1.5)(2.208,1.22727) -%% -\psset{fillcolor=rgb_a90000}% -\psline[fillstyle=solid] - (2.541,1.22727)(2.791,1.22727)(2.791,1.5)(2.541,1.5)(2.541,1.22727) -%% -\psline(2.541,1.22727)(2.791,1.22727)(2.791,1.5)(2.541,1.5)(2.541,1.22727) -%% -\psset{fillcolor=rgb_fe0000}% -\psline[fillstyle=solid] - (2.874,1.22727)(3.124,1.22727)(3.124,1.5)(2.874,1.5)(2.874,1.22727) -%% -\psline(2.874,1.22727)(3.124,1.22727)(3.124,1.5)(2.874,1.5)(2.874,1.22727) -%% -\psset{fillcolor=rgb_ff5454}% -\psline[fillstyle=solid] - (3.207,1.22727)(3.457,1.22727)(3.457,1.5)(3.207,1.5)(3.207,1.22727) -%% -\psline(3.207,1.22727)(3.457,1.22727)(3.457,1.5)(3.207,1.5)(3.207,1.22727) -%% -\psset{fillcolor=rgb_ffa9a9}% -\psline[fillstyle=solid] - (3.54,1.22727)(3.79,1.22727)(3.79,1.5)(3.54,1.5)(3.54,1.22727) -%% -\psline(3.54,1.22727)(3.79,1.22727)(3.79,1.5)(3.54,1.5)(3.54,1.22727) -%% -\psset{fillcolor=rgb_fffefe}% -\psline[fillstyle=solid] - (3.873,1.22727)(4.123,1.22727)(4.123,1.5)(3.873,1.5)(3.873,1.22727) -%% -\psline(3.873,1.22727)(4.123,1.22727)(4.123,1.5)(3.873,1.5)(3.873,1.22727) -%% -\psline(0,0)(4,0) -%% -\rput(0,0){\makebox(0,0){{$\rule{0.5pt}{4pt}$}}} -\rput(1,0){\makebox(0,0){{$\rule{0.5pt}{4pt}$}}} -\rput(2,0){\makebox(0,0){{$\rule{0.5pt}{4pt}$}}} -\rput(3,0){\makebox(0,0){{$\rule{0.5pt}{4pt}$}}} -\rput(4,0){\makebox(0,0){{$\rule{0.5pt}{4pt}$}}} -\psline(2,0)(2,1.09091) -%% -\rput(2,0){\makebox(0,0){{$\rule{4pt}{0.5pt}$}}} -\rput(2,1.09091){\makebox(0,0){{$\rule{4pt}{0.5pt}$}}} -\rput(0,-0.055348){\makebox(0,0)[t]{{$-2$}}} -\rput(1,-0.055348){\makebox(0,0)[t]{{$-1$}}} -\rput(2,-0.055348){\makebox(0,0)[t]{{$\phantom{-}0$}}} -\rput(3,-0.055348){\makebox(0,0)[t]{{$\phantom{-}1$}}} -\rput(4,-0.055348){\makebox(0,0)[t]{{$\phantom{-}2$}}} -\psset{linecolor=rgb_00ffff}% -\psline(0,1.09091)(1,1.09091) -%% -\psline(1,1.09091)(2,0) -%% -\psline(2,0)(3,0) -%% -\psline(3,0)(4,1.09091) -%% -\psset{linewidth=0.8pt}% -\psset{linecolor=rgb_ff0000}% -\psline - (0,1.09091)(1,0) -%% -\psline(1,0)(2,0) -%% -\psline(2,0)(3,1.09091) -%% -\psline(3,1.09091)(4,1.09091) -%% -\end{pspicture} diff --git a/graphics/epix/doc/color_density.xp b/graphics/epix/doc/color_density.xp deleted file mode 100644 index f561fa43e3..0000000000 --- a/graphics/epix/doc/color_density.xp +++ /dev/null @@ -1,42 +0,0 @@ -/* -*-ePiX-*- */ -#include "epix.h" -using namespace ePiX; - -double dX(0.125), dY(0.25); - -int main() -{ - picture(P(-2, 0), P(2, 1.125 + dY), "4 x 1.5in"); - - begin(); - - fill(); - for (int i=-6; i<=6; ++i) - { - const double x(0.333*i); - fill(Red(x)); - rect(P(x-dX, 1.125), P(x+dX, 1.125+dY)); - } - nofill(); - - h_axis(4); - v_axis(P(0,0), P(0,1), 1); - - h_axis_labels(4, P(0,-4), b); - red(-1); - line(P(-2,1), P(-1,1)); - line(P(-1,1), P(0,0)); - line(P(0,0), P(1,0)); - line(P(1,0), P(2,1)); - - red(); - bold(); - line(P(-2,1), P(-1,0)); - line(P(-1,0), P(0,0)); - - line(P(0,0), P(1,1)); - line(P(1,1), P(2,1)); - - pst_format(); - end(); -} diff --git a/graphics/epix/doc/dots.eepic b/graphics/epix/doc/dots.eepic deleted file mode 100644 index 839663481d..0000000000 --- a/graphics/epix/doc/dots.eepic +++ /dev/null @@ -1,19 +0,0 @@ -%% Generated from dots.xp on Tue Jan 4 15:32:12 EST 2005 by -%% ePiX-1.0.3 -%% -%% Cartesian bounding box: [0,8] x [0,1] -%% Actual size: 72pt x 12pt -%% Figure offset: right by 10pt, up by 2pt -%% -\setlength{\unitlength}{1pt} -\begin{picture}(72,12)(-10,-2) -%% --- -\put(0,0){\makebox(0,0)[c]{{\circle*{4.5}}}} -\put(9,0){\makebox(0,0)[c]{{\circle*{3}}}} -\put(18,0){\makebox(0,0)[c]{{\circle*{2}}}} -\put(36,0){\makebox(0,0)[c]{\rule{3pt}{3pt}}} -\put(45,0){\makebox(0,0)[c]{\rule{2pt}{2pt}}} -\path(58.5,0)(78.75,0) -\put(63,0){\makebox(0,0)[c]{{\circle{4.5}}}} -\whiten\put(72,0){\makebox(0,0)[c]{{\circle{3}}}} -\end{picture} diff --git a/graphics/epix/doc/dots.xp b/graphics/epix/doc/dots.xp deleted file mode 100644 index 1f13fb6099..0000000000 --- a/graphics/epix/doc/dots.xp +++ /dev/null @@ -1,28 +0,0 @@ -/* -*-ePiX-*- */ -/* dots.c -- Dot primitives */ -#include "epix.h" -using namespace ePiX; - -int main() -{ - unitlength("1pt"); - bounding_box(P(0,0), P(8,1)); - picture(P(72,12)); - offset(P(10,2)); - - begin(); - - spot(P(0,0)); - dot(P(1,0)); - ddot(P(2,0)); - - box(P(4,0)); - bbox(P(5,0)); - - line(P(6.5,0), P(8.75,0)); - - ring(P(7,0)); - circ(P(8,0)); - - end(); -} diff --git a/graphics/epix/doc/ePiX.eepic b/graphics/epix/doc/ePiX.eepic deleted file mode 100644 index 4bdec31118..0000000000 --- a/graphics/epix/doc/ePiX.eepic +++ /dev/null @@ -1,1099 +0,0 @@ -%% Generated from ePiX.xp on Sat Sep 22 20:16:03 EDT 2007 by -%% ePiX-1.2.0 -%% -%% Cartesian bounding box: [-0.5,5.75] x [2,10] -%% Actual size: 4 x 7.5in -%% Figure offset: left by 0in, down by 0in -%% -%% usepackages epic,eepic,xcolor -%% -\xdefinecolor{cmy_000019}{cmyk}{0,0,0.0980392,0}% -\xdefinecolor{rgb_0000ff}{rgb}{0,0,1}% -\xdefinecolor{rgb_009800}{rgb}{0,0.596078,0}% -\xdefinecolor{rgb_7f7f7f}{rgb}{0.498039,0.498039,0.498039}% -\xdefinecolor{rgb_ff0000}{rgb}{1,0,0}% -\setlength{\unitlength}{1in}% -\begin{picture}(4,7.5)(0,0)% -\color{rgb_7f7f7f}% -\path(0.32,7.03125)(0.96,7.03125) -\path(0.902922,7.02606)(0.931461,7.02606) -\path(0.902922,7.03125)(0.96,7.03125) -\path(0.902922,7.03644)(0.931461,7.03644) -\path(0.954811,7.03031)(0.954811,7.03219) -\path(0.949622,7.02936)(0.949622,7.03314) -\path(0.944433,7.02842)(0.944433,7.03408) -\path(0.939244,7.02748)(0.939244,7.03502) -\path(0.934056,7.02653)(0.934056,7.03597) -\path(0.928867,7.02559)(0.928867,7.03691) -\path(0.923678,7.02465)(0.923678,7.03785) -\path(0.918489,7.0237)(0.918489,7.0388) -\path(0.9133,7.02276)(0.9133,7.03974) -\path(0.908111,7.02182)(0.908111,7.04068) -\path(0.902922,7.02087)(0.902922,7.04163) -\path(0.902922,7.03125)(0.902922,7.02087)(0.96,7.03125) - (0.902922,7.04163)(0.902922,7.03125) -\put(0.32,7.0866){\makebox(0,0)[b]{\hbox{\color{rgb_7f7f7f}\footnotesize \texttt{xp}, \texttt{flx}}}} -\put(0.32,7.03125){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\put(0.97999,7.08981){\makebox(0,0)[b]{\hbox{\color{rgb_7f7f7f}\footnotesize \texttt{eepic}}}} -\put(0.96,7.03125){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\allinethickness{1.2pt}% -\color{rgb_ff0000}% -\path(0.96,7.03125)(0.963187,7.03115)(0.966347,7.03086) - (0.969482,7.03039)(0.972591,7.02972)(0.975676,7.02888) - (0.978736,7.02785)(0.981772,7.02665)(0.984785,7.02528) - (0.987774,7.02374)(0.990741,7.02203)(0.993685,7.02016) - (0.996608,7.01813)(0.999509,7.01594)(1.00239,7.0136) - (1.00525,7.01111)(1.00809,7.00847)(1.01091,7.00569) - (1.01371,7.00277)(1.01649,6.99972)(1.01926,6.99653) - (1.02201,6.99321)(1.02474,6.98976)(1.02745,6.98619)(1.03014,6.9825) - (1.03282,6.97869)(1.03549,6.97477)(1.03814,6.97074)(1.04077,6.9666) - (1.04339,6.96235)(1.046,6.95801)(1.04859,6.95356)(1.05117,6.94903) - (1.05374,6.9444)(1.0563,6.93968)(1.05884,6.93488)(1.06138,6.93) - (1.0639,6.92504)(1.06641,6.92)(1.06891,6.9149)(1.07141,6.90972) - (1.07389,6.90448)(1.07637,6.89918)(1.07884,6.89382)(1.0813,6.8884) - (1.08375,6.88293)(1.0862,6.87742)(1.08864,6.87185)(1.09107,6.86625) - (1.0935,6.86061)(1.09593,6.85493)(1.09835,6.84921)(1.10076,6.84347) - (1.10317,6.8377)(1.10558,6.83191)(1.10799,6.8261)(1.1104,6.82028) - (1.1128,6.81444)(1.1152,6.80859)(1.1176,6.80273)(1.12,6.79688) - (1.1224,6.79102)(1.1248,6.78516)(1.1272,6.77931)(1.1296,6.77347) - (1.13201,6.76765)(1.13442,6.76184)(1.13683,6.75605) - (1.13924,6.75028)(1.14165,6.74454)(1.14407,6.73882)(1.1465,6.73314) - (1.14893,6.7275)(1.15136,6.7219)(1.1538,6.71633)(1.15625,6.71082) - (1.1587,6.70535)(1.16116,6.69993)(1.16363,6.69457)(1.16611,6.68927) - (1.16859,6.68403)(1.17109,6.67885)(1.17359,6.67375)(1.1761,6.66871) - (1.17862,6.66375)(1.18116,6.65887)(1.1837,6.65407)(1.18626,6.64935) - (1.18883,6.64472)(1.19141,6.64019)(1.194,6.63574)(1.19661,6.6314) - (1.19923,6.62715)(1.20186,6.62301)(1.20451,6.61898) - (1.20718,6.61506)(1.20986,6.61125)(1.21255,6.60756) - (1.21526,6.60399)(1.21799,6.60054)(1.22074,6.59722) - (1.22351,6.59403)(1.22629,6.59098)(1.22909,6.58806) - (1.23191,6.58528)(1.23475,6.58264)(1.23761,6.58015) - (1.24049,6.57781)(1.24339,6.57562)(1.24631,6.57359) - (1.24926,6.57172)(1.25223,6.57001)(1.25522,6.56847)(1.25823,6.5671) - (1.26126,6.5659)(1.26432,6.56487)(1.26741,6.56403)(1.27052,6.56336) - (1.27365,6.56289)(1.27681,6.5626)(1.28,6.5625) -\path(1.28,6.5625)(1.6,6.5625) -\allinethickness{0.0055348in}% -\path(1.59481,6.56156)(1.59402,6.56359) -\path(1.58962,6.56061)(1.58804,6.56467) -\path(1.58443,6.55967)(1.58207,6.56576) -\path(1.57924,6.55873)(1.57609,6.56685) -\path(1.57406,6.55778)(1.57011,6.56793) -\path(1.56887,6.55684)(1.56413,6.56902) -\path(1.56368,6.5559)(1.55815,6.57011) -\path(1.55849,6.55495)(1.55217,6.5712) -\path(1.5533,6.55401)(1.5462,6.57228) -\path(1.54811,6.55307)(1.54292,6.56641) -\path(1.55244,6.57115)(1.54292,6.56745) -\path(1.56195,6.56942)(1.54292,6.56202) -\path(1.57146,6.56769)(1.54292,6.55659) -\path(1.58097,6.56596)(1.54755,6.55296) -\path(1.59049,6.56423)(1.57377,6.55773) -\allinethickness{1.2pt}% -\path(1.54292,6.5625)(1.54292,6.55212)(1.6,6.5625)(1.54292,6.57288)(1.54292,6.5625) -\path(1.6,6.5625)(2.24,6.5625) -\allinethickness{0.0055348in}% -\path(2.18926,6.57172)(2.18292,6.56591) -\path(2.19561,6.57057)(2.18292,6.55895) -\path(2.20195,6.56942)(2.1831,6.55216) -\path(2.20829,6.56827)(2.19259,6.55388) -\path(2.21463,6.56711)(2.20207,6.5556) -\path(2.22097,6.56596)(2.21155,6.55733) -\path(2.22732,6.56481)(2.22103,6.55905) -\path(2.23366,6.56365)(2.23052,6.56078) -\path(2.18292,6.5602)(2.18926,6.55328) -\path(2.18292,6.56827)(2.19561,6.55443) -\path(2.18674,6.57218)(2.20195,6.55558) -\path(2.19562,6.57057)(2.20829,6.55673) -\path(2.20449,6.56896)(2.21463,6.55789) -\path(2.21337,6.56734)(2.22097,6.55904) -\path(2.22225,6.56573)(2.22732,6.56019) -\path(2.23112,6.56411)(2.23366,6.56135) -\allinethickness{1.2pt}% -\path(2.18292,6.5625)(2.18292,6.55212)(2.24,6.5625) - (2.18292,6.57288)(2.18292,6.5625) -\put(1.6,6.61785){\makebox(0,0)[b]{\fboxrule0.1pt% -\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\footnotesize \texttt{dvi}}}}} -\put(1.6,6.5625){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\put(2.21793,6.59482){\makebox(0,0)[br]{\fboxrule0.1pt% -\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\footnotesize \texttt{ps}}}}} -\put(2.24,6.5625){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\path(0.96,6.09375)(0.963187,6.09385)(0.966347,6.09414) - (0.969482,6.09461)(0.972591,6.09528)(0.975676,6.09612) - (0.978736,6.09715)(0.981772,6.09835)(0.984785,6.09972) - (0.987774,6.10126)(0.990741,6.10297)(0.993685,6.10484) - (0.996608,6.10687)(0.999509,6.10906)(1.00239,6.1114) - (1.00525,6.11389)(1.00809,6.11653)(1.01091,6.11931) - (1.01371,6.12223)(1.01649,6.12528)(1.01926,6.12847) - (1.02201,6.13179)(1.02474,6.13524)(1.02745,6.13881)(1.03014,6.1425) - (1.03282,6.14631)(1.03549,6.15023)(1.03814,6.15426)(1.04077,6.1584) - (1.04339,6.16265)(1.046,6.16699)(1.04859,6.17144)(1.05117,6.17597) - (1.05374,6.1806)(1.0563,6.18532)(1.05884,6.19012)(1.06138,6.195) - (1.0639,6.19996)(1.06641,6.205)(1.06891,6.2101)(1.07141,6.21528) - (1.07389,6.22052)(1.07637,6.22582)(1.07884,6.23118)(1.0813,6.2366) - (1.08375,6.24207)(1.0862,6.24758)(1.08864,6.25315)(1.09107,6.25875) - (1.0935,6.26439)(1.09593,6.27007)(1.09835,6.27579)(1.10076,6.28153) - (1.10317,6.2873)(1.10558,6.29309)(1.10799,6.2989)(1.1104,6.30472) - (1.1128,6.31056)(1.1152,6.31641)(1.1176,6.32227)(1.12,6.32812) - (1.1224,6.33398)(1.1248,6.33984)(1.1272,6.34569)(1.1296,6.35153) - (1.13201,6.35735)(1.13442,6.36316)(1.13683,6.36895) - (1.13924,6.37472)(1.14165,6.38046)(1.14407,6.38618)(1.1465,6.39186) - (1.14893,6.3975)(1.15136,6.4031)(1.1538,6.40867)(1.15625,6.41418) - (1.1587,6.41965)(1.16116,6.42507)(1.16363,6.43043)(1.16611,6.43573) - (1.16859,6.44097)(1.17109,6.44615)(1.17359,6.45125)(1.1761,6.45629) - (1.17862,6.46125)(1.18116,6.46613)(1.1837,6.47093)(1.18626,6.47565) - (1.18883,6.48028)(1.19141,6.48481)(1.194,6.48926)(1.19661,6.4936) - (1.19923,6.49785)(1.20186,6.50199)(1.20451,6.50602) - (1.20718,6.50994)(1.20986,6.51375)(1.21255,6.51744) - (1.21526,6.52101)(1.21799,6.52446)(1.22074,6.52778) - (1.22351,6.53097)(1.22629,6.53402)(1.22909,6.53694) - (1.23191,6.53972)(1.23475,6.54236)(1.23761,6.54485) - (1.24049,6.54719)(1.24339,6.54938)(1.24631,6.55141) - (1.24926,6.55328)(1.25223,6.55499)(1.25522,6.55653)(1.25823,6.5579) - (1.26126,6.5591)(1.26432,6.56013)(1.26741,6.56097)(1.27052,6.56164) - (1.27365,6.56211)(1.27681,6.5624)(1.28,6.5625) -\put(0.97999,6.03519){\makebox(0,0)[t]{\fboxrule0.1pt% -\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\footnotesize \texttt{tex}}}}} -\put(0.96,6.09375){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\path(2.24,6.5625)(2.24533,6.55472)(2.25067,6.54701)(2.256,6.53936) - (2.26133,6.53177)(2.26667,6.52425)(2.272,6.5168)(2.27733,6.50941) - (2.28267,6.50208)(2.288,6.49482)(2.29333,6.48763)(2.29867,6.4805) - (2.304,6.47344)(2.30933,6.46644)(2.31467,6.45951)(2.32,6.45264) - (2.32533,6.44583)(2.33067,6.4391)(2.336,6.43242)(2.34133,6.42581) - (2.34667,6.41927)(2.352,6.41279)(2.35733,6.40638)(2.36267,6.40003) - (2.368,6.39375)(2.37333,6.38753)(2.37867,6.38138)(2.384,6.37529) - (2.38933,6.36927)(2.39467,6.36331)(2.4,6.35742)(2.40533,6.3516) - (2.41067,6.34583)(2.416,6.34014)(2.42133,6.33451)(2.42667,6.32894) - (2.432,6.32344)(2.43733,6.318)(2.44267,6.31263)(2.448,6.30732) - (2.45333,6.30208)(2.45867,6.29691)(2.464,6.2918)(2.46933,6.28675) - (2.47467,6.28177)(2.48,6.27686)(2.48533,6.27201)(2.49067,6.26722) - (2.496,6.2625)(2.50133,6.25785)(2.50667,6.25326)(2.512,6.24873) - (2.51733,6.24427)(2.52267,6.23988)(2.528,6.23555)(2.53333,6.23128) - (2.53867,6.22708)(2.544,6.22295)(2.54933,6.21888)(2.55467,6.21488) - (2.56,6.21094)(2.56533,6.20706)(2.57067,6.20326)(2.576,6.19951) - (2.58133,6.19583)(2.58667,6.19222)(2.592,6.18867)(2.59733,6.18519) - (2.60267,6.18177)(2.608,6.17842)(2.61333,6.17513)(2.61867,6.17191) - (2.624,6.16875)(2.62933,6.16566)(2.63467,6.16263)(2.64,6.15967) - (2.64533,6.15677)(2.65067,6.15394)(2.656,6.15117)(2.66133,6.14847) - (2.66667,6.14583)(2.672,6.14326)(2.67733,6.14076)(2.68267,6.13831) - (2.688,6.13594)(2.69333,6.13363)(2.69867,6.13138)(2.704,6.1292) - (2.70933,6.12708)(2.71467,6.12503)(2.72,6.12305)(2.72533,6.12113) - (2.73067,6.11927)(2.736,6.11748)(2.74133,6.11576)(2.74667,6.1141) - (2.752,6.1125)(2.75733,6.11097)(2.76267,6.10951)(2.768,6.10811) - (2.77333,6.10677)(2.77867,6.1055)(2.784,6.1043)(2.78933,6.10316) - (2.79467,6.10208)(2.8,6.10107)(2.80533,6.10013)(2.81067,6.09925) - (2.816,6.09844)(2.82133,6.09769)(2.82667,6.09701)(2.832,6.09639) - (2.83733,6.09583)(2.84267,6.09535)(2.848,6.09492)(2.85333,6.09456) - (2.85867,6.09427)(2.864,6.09404)(2.86933,6.09388)(2.87467,6.09378)(2.88,6.09375) -\allinethickness{0.0055348in}% -\path(2.82289,6.08916)(2.83102,6.08515) -\path(2.82293,6.09461)(2.83919,6.08659) -\path(2.82296,6.10005)(2.84735,6.08802) -\path(2.82634,6.10385)(2.85551,6.08945) -\path(2.84423,6.10048)(2.86367,6.09088) -\path(2.86211,6.09712)(2.87184,6.09232) -\path(2.8738,6.09266)(2.87482,6.09473) -\path(2.8676,6.09157)(2.86963,6.0957) -\path(2.8614,6.09048)(2.86445,6.09668) -\path(2.8552,6.0894)(2.85927,6.09765) -\path(2.84899,6.08831)(2.85408,6.09863) -\path(2.84279,6.08722)(2.8489,6.0996) -\path(2.83659,6.08613)(2.84372,6.10058) -\path(2.83039,6.08504)(2.83854,6.10155) -\path(2.82419,6.08395)(2.83335,6.10253) -\path(2.82292,6.09285)(2.82817,6.1035) -\allinethickness{1.2pt}% -\path(2.82292,6.0941)(2.82286,6.08372)(2.88,6.09375) - (2.82299,6.10448)(2.82292,6.0941) -\put(2.93535,6.09375){\makebox(0,0)[l]{\fboxrule0.1pt% -\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\footnotesize \texttt{pdf}}}}} -\put(2.88,6.09375){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\allinethickness{0.4pt}% -\color{rgb_7f7f7f}% -\path(2.24,6.5625)(2.24533,6.57028)(2.25067,6.57799)(2.256,6.58564) - (2.26133,6.59323)(2.26667,6.60075)(2.272,6.6082)(2.27733,6.61559) - (2.28267,6.62292)(2.288,6.63018)(2.29333,6.63737)(2.29867,6.6445) - (2.304,6.65156)(2.30933,6.65856)(2.31467,6.66549)(2.32,6.67236) - (2.32533,6.67917)(2.33067,6.6859)(2.336,6.69258)(2.34133,6.69919) - (2.34667,6.70573)(2.352,6.71221)(2.35733,6.71862)(2.36267,6.72497) - (2.368,6.73125)(2.37333,6.73747)(2.37867,6.74362)(2.384,6.74971) - (2.38933,6.75573)(2.39467,6.76169)(2.4,6.76758)(2.40533,6.7734) - (2.41067,6.77917)(2.416,6.78486)(2.42133,6.79049)(2.42667,6.79606) - (2.432,6.80156)(2.43733,6.807)(2.44267,6.81237)(2.448,6.81768) - (2.45333,6.82292)(2.45867,6.82809)(2.464,6.8332)(2.46933,6.83825) - (2.47467,6.84323)(2.48,6.84814)(2.48533,6.85299)(2.49067,6.85778) - (2.496,6.8625)(2.50133,6.86715)(2.50667,6.87174)(2.512,6.87627) - (2.51733,6.88073)(2.52267,6.88512)(2.528,6.88945)(2.53333,6.89372) - (2.53867,6.89792)(2.544,6.90205)(2.54933,6.90612)(2.55467,6.91012) - (2.56,6.91406)(2.56533,6.91794)(2.57067,6.92174)(2.576,6.92549) - (2.58133,6.92917)(2.58667,6.93278)(2.592,6.93633)(2.59733,6.93981) - (2.60267,6.94323)(2.608,6.94658)(2.61333,6.94987)(2.61867,6.95309) - (2.624,6.95625)(2.62933,6.95934)(2.63467,6.96237)(2.64,6.96533) - (2.64533,6.96823)(2.65067,6.97106)(2.656,6.97383)(2.66133,6.97653) - (2.66667,6.97917)(2.672,6.98174)(2.67733,6.98424)(2.68267,6.98669) - (2.688,6.98906)(2.69333,6.99137)(2.69867,6.99362)(2.704,6.9958) - (2.70933,6.99792)(2.71467,6.99997)(2.72,7.00195)(2.72533,7.00387) - (2.73067,7.00573)(2.736,7.00752)(2.74133,7.00924)(2.74667,7.0109) - (2.752,7.0125)(2.75733,7.01403)(2.76267,7.01549)(2.768,7.01689) - (2.77333,7.01823)(2.77867,7.0195)(2.784,7.0207)(2.78933,7.02184) - (2.79467,7.02292)(2.8,7.02393)(2.80533,7.02487)(2.81067,7.02575) - (2.816,7.02656)(2.82133,7.02731)(2.82667,7.02799)(2.832,7.02861) - (2.83733,7.02917)(2.84267,7.02965)(2.848,7.03008)(2.85333,7.03044) - (2.85867,7.03073)(2.864,7.03096)(2.86933,7.03112)(2.87467,7.03122)(2.88,7.03125) -\path(2.87464,7.03024)(2.87481,7.03216) -\path(2.86927,7.02923)(2.86961,7.03307) -\path(2.86391,7.02822)(2.86442,7.03399) -\path(2.85855,7.02721)(2.85922,7.0349) -\path(2.85318,7.02621)(2.85403,7.03581) -\path(2.84782,7.0252)(2.84883,7.03672) -\path(2.84246,7.02419)(2.84364,7.03763) -\path(2.8371,7.02318)(2.83844,7.03854) -\path(2.83173,7.02217)(2.83325,7.03946) -\path(2.82637,7.02116)(2.82805,7.04037) -\path(2.87938,7.03113)(2.82289,7.03609) -\path(2.86058,7.0276)(2.82292,7.0309) -\path(2.84178,7.02406)(2.82296,7.02571) -\path(2.82292,7.0309)(2.82299,7.02052)(2.88,7.03125) - (2.82286,7.04128)(2.82292,7.0309) -\put(2.86001,7.08981){\makebox(0,0)[b]{\hbox{\color{rgb_7f7f7f}\footnotesize \texttt{eps}}}} -\put(2.88,7.03125){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\path(2.88,7.03125)(3.52,7.03125) -\path(3.47434,7.03955)(3.46292,7.03623) -\path(3.48575,7.03748)(3.46292,7.03083) -\path(3.49717,7.0354)(3.46292,7.02543) -\path(3.50858,7.03333)(3.4706,7.02227) -\path(3.46292,7.03964)(3.46811,7.02182) -\path(3.46808,7.04069)(3.4733,7.02276) -\path(3.47385,7.03964)(3.47849,7.0237) -\path(3.47962,7.03859)(3.48368,7.02465) -\path(3.48539,7.03754)(3.48887,7.02559) -\path(3.49116,7.03649)(3.49406,7.02653) -\path(3.49692,7.03545)(3.49924,7.02748) -\path(3.50269,7.0344)(3.50443,7.02842) -\path(3.50846,7.03335)(3.50962,7.02936) -\path(3.51423,7.0323)(3.51481,7.03031) -\path(3.46292,7.03125)(3.46292,7.02087)(3.52,7.03125) - (3.46292,7.04163)(3.46292,7.03125) -\put(3.57535,7.03125){\makebox(0,0)[l]{\hbox{\color{rgb_7f7f7f}\footnotesize \begin{minipage}{0.225in}\texttt{png mng gif}\end{minipage}}}} -\put(3.52,7.03125){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\put(1.92,6.09375){\makebox(0,0)[c]{\hbox{\color{rgb_009800}\texttt{\Large laps}}}} -\allinethickness{1.2pt}% -\color{rgb_ff0000}% -\path(0.32,5.15625)(0.96,5.15625) -\allinethickness{0.0055348in}% -\path(0.902922,5.15435)(0.90863,5.14691) -\path(0.902922,5.16284)(0.914338,5.14795) -\path(0.907102,5.16587)(0.920046,5.14899) -\path(0.914659,5.16449)(0.925753,5.15002) -\path(0.922216,5.16312)(0.931461,5.15106) -\path(0.929773,5.16175)(0.937169,5.1521) -\path(0.93733,5.16037)(0.942877,5.15314) -\path(0.944886,5.159)(0.948584,5.15417) -\path(0.952443,5.15762)(0.954292,5.15521) -\path(0.948429,5.15415)(0.952865,5.15755) -\path(0.936859,5.15204)(0.945731,5.15884) -\path(0.925288,5.14994)(0.938596,5.16014) -\path(0.913717,5.14783)(0.931461,5.16144) -\path(0.902922,5.14633)(0.924326,5.16274) -\path(0.902922,5.15309)(0.917192,5.16403) -\path(0.902922,5.15986)(0.910057,5.16533) -\allinethickness{1.2pt}% -\path(0.902922,5.15625)(0.902922,5.14587)(0.96,5.15625) - (0.902922,5.16663)(0.902922,5.15625) -\put(0.32,5.2116){\makebox(0,0)[b]{\fboxrule0.1pt% -\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{xp}, \texttt{flx}}}}}} -\put(0.32,5.15625){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\put(0.97999,5.21481){\makebox(0,0)[b]{\fboxrule0.1pt% -\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{eepic}}}}}} -\put(0.96,5.15625){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\allinethickness{0.4pt}% -\color{rgb_7f7f7f}% -\path(0.96,5.15625)(0.963187,5.15615)(0.966347,5.15586) - (0.969482,5.15539)(0.972591,5.15472)(0.975676,5.15388) - (0.978736,5.15285)(0.981772,5.15165)(0.984785,5.15028) - (0.987774,5.14874)(0.990741,5.14703)(0.993685,5.14516) - (0.996608,5.14313)(0.999509,5.14094)(1.00239,5.1386) - (1.00525,5.13611)(1.00809,5.13347)(1.01091,5.13069) - (1.01371,5.12777)(1.01649,5.12472)(1.01926,5.12153) - (1.02201,5.11821)(1.02474,5.11476)(1.02745,5.11119)(1.03014,5.1075) - (1.03282,5.10369)(1.03549,5.09977)(1.03814,5.09574)(1.04077,5.0916) - (1.04339,5.08735)(1.046,5.08301)(1.04859,5.07856)(1.05117,5.07403) - (1.05374,5.0694)(1.0563,5.06468)(1.05884,5.05988)(1.06138,5.055) - (1.0639,5.05004)(1.06641,5.045)(1.06891,5.0399)(1.07141,5.03472) - (1.07389,5.02948)(1.07637,5.02418)(1.07884,5.01882)(1.0813,5.0134) - (1.08375,5.00793)(1.0862,5.00242)(1.08864,4.99685)(1.09107,4.99125) - (1.0935,4.98561)(1.09593,4.97993)(1.09835,4.97421)(1.10076,4.96847) - (1.10317,4.9627)(1.10558,4.95691)(1.10799,4.9511)(1.1104,4.94528) - (1.1128,4.93944)(1.1152,4.93359)(1.1176,4.92773)(1.12,4.92188) - (1.1224,4.91602)(1.1248,4.91016)(1.1272,4.90431)(1.1296,4.89847) - (1.13201,4.89265)(1.13442,4.88684)(1.13683,4.88105) - (1.13924,4.87528)(1.14165,4.86954)(1.14407,4.86382)(1.1465,4.85814) - (1.14893,4.8525)(1.15136,4.8469)(1.1538,4.84133)(1.15625,4.83582) - (1.1587,4.83035)(1.16116,4.82493)(1.16363,4.81957)(1.16611,4.81427) - (1.16859,4.80903)(1.17109,4.80385)(1.17359,4.79875)(1.1761,4.79371) - (1.17862,4.78875)(1.18116,4.78387)(1.1837,4.77907)(1.18626,4.77435) - (1.18883,4.76972)(1.19141,4.76519)(1.194,4.76074)(1.19661,4.7564) - (1.19923,4.75215)(1.20186,4.74801)(1.20451,4.74398) - (1.20718,4.74006)(1.20986,4.73625)(1.21255,4.73256) - (1.21526,4.72899)(1.21799,4.72554)(1.22074,4.72222) - (1.22351,4.71903)(1.22629,4.71598)(1.22909,4.71306) - (1.23191,4.71028)(1.23475,4.70764)(1.23761,4.70515) - (1.24049,4.70281)(1.24339,4.70063)(1.24631,4.69859) - (1.24926,4.69672)(1.25223,4.69501)(1.25522,4.69347)(1.25823,4.6921) - (1.26126,4.6909)(1.26432,4.68987)(1.26741,4.68903)(1.27052,4.68836) - (1.27365,4.68789)(1.27681,4.6876)(1.28,4.6875) -\path(1.28,4.6875)(1.6,4.6875) -\path(1.59287,4.6862)(1.59429,4.68854) -\path(1.58575,4.68491)(1.58858,4.68958) -\path(1.57862,4.68361)(1.58288,4.69061) -\path(1.5715,4.68232)(1.57717,4.69165) -\path(1.56437,4.68102)(1.57146,4.69269) -\path(1.55725,4.67973)(1.56575,4.69373) -\path(1.55012,4.67843)(1.56005,4.69476) -\path(1.543,4.67714)(1.55434,4.6958) -\path(1.54292,4.68744)(1.54863,4.69684) -\path(1.59185,4.68602)(1.58488,4.69025) -\path(1.58369,4.68453)(1.56976,4.693) -\path(1.57554,4.68305)(1.55464,4.69575) -\path(1.56738,4.68157)(1.54292,4.69643) -\path(1.55923,4.68009)(1.54292,4.68999) -\path(1.55108,4.6786)(1.54292,4.68356) -\path(1.54292,4.6875)(1.54292,4.67712)(1.6,4.6875)(1.54292,4.69788)(1.54292,4.6875) -\path(1.6,4.6875)(2.24,4.6875) -\path(2.22632,4.68501)(2.18292,4.69269) -\path(2.21185,4.68238)(2.18292,4.6875) -\path(2.19739,4.67975)(2.18292,4.68231) -\path(2.18811,4.69693)(2.18466,4.67744) -\path(2.1933,4.69599)(2.1902,4.67844) -\path(2.19849,4.69505)(2.19573,4.67945) -\path(2.20368,4.6941)(2.20126,4.68046) -\path(2.20887,4.69316)(2.2068,4.68146) -\path(2.21406,4.69222)(2.21233,4.68247) -\path(2.21924,4.69127)(2.21787,4.68348) -\path(2.22443,4.69033)(2.2234,4.68448) -\path(2.22962,4.68939)(2.22893,4.68549) -\path(2.23481,4.68844)(2.23447,4.68649) -\path(2.18292,4.6875)(2.18292,4.67712)(2.24,4.6875) - (2.18292,4.69788)(2.18292,4.6875) -\put(1.6,4.74285){\makebox(0,0)[b]{\hbox{\color{rgb_7f7f7f}\texttt{\footnotesize \texttt{dvi}}}}} -\put(1.6,4.6875){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\put(2.21793,4.71982){\makebox(0,0)[br]{\hbox{\color{rgb_7f7f7f}\texttt{\footnotesize \texttt{ps}}}}} -\put(2.24,4.6875){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\path(0.96,4.21875)(0.963187,4.21885)(0.966347,4.21914) - (0.969482,4.21961)(0.972591,4.22028)(0.975676,4.22112) - (0.978736,4.22215)(0.981772,4.22335)(0.984785,4.22472) - (0.987774,4.22626)(0.990741,4.22797)(0.993685,4.22984) - (0.996608,4.23188)(0.999509,4.23406)(1.00239,4.2364) - (1.00525,4.23889)(1.00809,4.24153)(1.01091,4.24431) - (1.01371,4.24723)(1.01649,4.25028)(1.01926,4.25347) - (1.02201,4.25679)(1.02474,4.26024)(1.02745,4.26381)(1.03014,4.2675) - (1.03282,4.27131)(1.03549,4.27523)(1.03814,4.27926)(1.04077,4.2834) - (1.04339,4.28765)(1.046,4.29199)(1.04859,4.29644)(1.05117,4.30097) - (1.05374,4.3056)(1.0563,4.31032)(1.05884,4.31512)(1.06138,4.32) - (1.0639,4.32496)(1.06641,4.33)(1.06891,4.3351)(1.07141,4.34028) - (1.07389,4.34552)(1.07637,4.35082)(1.07884,4.35618)(1.0813,4.3616) - (1.08375,4.36707)(1.0862,4.37258)(1.08864,4.37815)(1.09107,4.38375) - (1.0935,4.38939)(1.09593,4.39507)(1.09835,4.40079)(1.10076,4.40653) - (1.10317,4.4123)(1.10558,4.41809)(1.10799,4.4239)(1.1104,4.42972) - (1.1128,4.43556)(1.1152,4.44141)(1.1176,4.44727)(1.12,4.45312) - (1.1224,4.45898)(1.1248,4.46484)(1.1272,4.47069)(1.1296,4.47653) - (1.13201,4.48235)(1.13442,4.48816)(1.13683,4.49395) - (1.13924,4.49972)(1.14165,4.50546)(1.14407,4.51118)(1.1465,4.51686) - (1.14893,4.5225)(1.15136,4.5281)(1.1538,4.53367)(1.15625,4.53918) - (1.1587,4.54465)(1.16116,4.55007)(1.16363,4.55543)(1.16611,4.56073) - (1.16859,4.56597)(1.17109,4.57115)(1.17359,4.57625)(1.1761,4.58129) - (1.17862,4.58625)(1.18116,4.59113)(1.1837,4.59593)(1.18626,4.60065) - (1.18883,4.60528)(1.19141,4.60981)(1.194,4.61426)(1.19661,4.6186) - (1.19923,4.62285)(1.20186,4.62699)(1.20451,4.63102) - (1.20718,4.63494)(1.20986,4.63875)(1.21255,4.64244) - (1.21526,4.64601)(1.21799,4.64946)(1.22074,4.65278) - (1.22351,4.65597)(1.22629,4.65902)(1.22909,4.66194) - (1.23191,4.66472)(1.23475,4.66736)(1.23761,4.66985) - (1.24049,4.67219)(1.24339,4.67437)(1.24631,4.67641) - (1.24926,4.67828)(1.25223,4.67999)(1.25522,4.68153)(1.25823,4.6829) - (1.26126,4.6841)(1.26432,4.68513)(1.26741,4.68597)(1.27052,4.68664) - (1.27365,4.68711)(1.27681,4.6874)(1.28,4.6875) -\put(0.97999,4.16019){\makebox(0,0)[t]{\hbox{\color{rgb_7f7f7f}\texttt{\footnotesize \texttt{tex}}}}} -\put(0.96,4.21875){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\path(2.24,4.6875)(2.24533,4.67972)(2.25067,4.67201)(2.256,4.66436) - (2.26133,4.65677)(2.26667,4.64925)(2.272,4.6418)(2.27733,4.63441) - (2.28267,4.62708)(2.288,4.61982)(2.29333,4.61263)(2.29867,4.6055) - (2.304,4.59844)(2.30933,4.59144)(2.31467,4.58451)(2.32,4.57764) - (2.32533,4.57083)(2.33067,4.5641)(2.336,4.55742)(2.34133,4.55081) - (2.34667,4.54427)(2.352,4.53779)(2.35733,4.53138)(2.36267,4.52503) - (2.368,4.51875)(2.37333,4.51253)(2.37867,4.50638)(2.384,4.50029) - (2.38933,4.49427)(2.39467,4.48831)(2.4,4.48242)(2.40533,4.4766) - (2.41067,4.47083)(2.416,4.46514)(2.42133,4.45951)(2.42667,4.45394) - (2.432,4.44844)(2.43733,4.443)(2.44267,4.43763)(2.448,4.43232) - (2.45333,4.42708)(2.45867,4.42191)(2.464,4.4168)(2.46933,4.41175) - (2.47467,4.40677)(2.48,4.40186)(2.48533,4.39701)(2.49067,4.39222) - (2.496,4.3875)(2.50133,4.38285)(2.50667,4.37826)(2.512,4.37373) - (2.51733,4.36927)(2.52267,4.36488)(2.528,4.36055)(2.53333,4.35628) - (2.53867,4.35208)(2.544,4.34795)(2.54933,4.34388)(2.55467,4.33988) - (2.56,4.33594)(2.56533,4.33206)(2.57067,4.32826)(2.576,4.32451) - (2.58133,4.32083)(2.58667,4.31722)(2.592,4.31367)(2.59733,4.31019) - (2.60267,4.30677)(2.608,4.30342)(2.61333,4.30013)(2.61867,4.29691) - (2.624,4.29375)(2.62933,4.29066)(2.63467,4.28763)(2.64,4.28467) - (2.64533,4.28177)(2.65067,4.27894)(2.656,4.27617)(2.66133,4.27347) - (2.66667,4.27083)(2.672,4.26826)(2.67733,4.26576)(2.68267,4.26331) - (2.688,4.26094)(2.69333,4.25863)(2.69867,4.25638)(2.704,4.2542) - (2.70933,4.25208)(2.71467,4.25003)(2.72,4.24805)(2.72533,4.24613) - (2.73067,4.24427)(2.736,4.24248)(2.74133,4.24076)(2.74667,4.2391) - (2.752,4.2375)(2.75733,4.23597)(2.76267,4.23451)(2.768,4.23311) - (2.77333,4.23177)(2.77867,4.2305)(2.784,4.2293)(2.78933,4.22816) - (2.79467,4.22708)(2.8,4.22607)(2.80533,4.22513)(2.81067,4.22425) - (2.816,4.22344)(2.82133,4.22269)(2.82667,4.22201)(2.832,4.22139) - (2.83733,4.22083)(2.84267,4.22035)(2.848,4.21992)(2.85333,4.21956) - (2.85867,4.21927)(2.864,4.21904)(2.86933,4.21888)(2.87467,4.21878)(2.88,4.21875) -\path(2.82416,4.22925)(2.82805,4.20963) -\path(2.82975,4.2282)(2.83325,4.21054) -\path(2.83533,4.22715)(2.83844,4.21146) -\path(2.84091,4.2261)(2.84364,4.21237) -\path(2.8465,4.22505)(2.84883,4.21328) -\path(2.85208,4.224)(2.85403,4.21419) -\path(2.85767,4.22295)(2.85922,4.2151) -\path(2.86325,4.2219)(2.86442,4.21601) -\path(2.86883,4.22085)(2.86961,4.21693) -\path(2.87442,4.2198)(2.87481,4.21784) -\path(2.82289,4.21293)(2.86575,4.22143) -\path(2.82292,4.21845)(2.85149,4.22411) -\path(2.82295,4.22396)(2.83724,4.22679) -\path(2.82292,4.2191)(2.82286,4.20872)(2.88,4.21875) - (2.82299,4.22948)(2.82292,4.2191) -\put(2.93535,4.21875){\makebox(0,0)[l]{\hbox{\color{rgb_7f7f7f}\texttt{\footnotesize \texttt{pdf}}}}} -\put(2.88,4.21875){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\path(2.24,4.6875)(2.24533,4.69528)(2.25067,4.70299)(2.256,4.71064) - (2.26133,4.71823)(2.26667,4.72575)(2.272,4.7332)(2.27733,4.74059) - (2.28267,4.74792)(2.288,4.75518)(2.29333,4.76237)(2.29867,4.7695) - (2.304,4.77656)(2.30933,4.78356)(2.31467,4.79049)(2.32,4.79736) - (2.32533,4.80417)(2.33067,4.8109)(2.336,4.81758)(2.34133,4.82419) - (2.34667,4.83073)(2.352,4.83721)(2.35733,4.84362)(2.36267,4.84997) - (2.368,4.85625)(2.37333,4.86247)(2.37867,4.86862)(2.384,4.87471) - (2.38933,4.88073)(2.39467,4.88669)(2.4,4.89258)(2.40533,4.8984) - (2.41067,4.90417)(2.416,4.90986)(2.42133,4.91549)(2.42667,4.92106) - (2.432,4.92656)(2.43733,4.932)(2.44267,4.93737)(2.448,4.94268) - (2.45333,4.94792)(2.45867,4.95309)(2.464,4.9582)(2.46933,4.96325) - (2.47467,4.96823)(2.48,4.97314)(2.48533,4.97799)(2.49067,4.98278) - (2.496,4.9875)(2.50133,4.99215)(2.50667,4.99674)(2.512,5.00127) - (2.51733,5.00573)(2.52267,5.01012)(2.528,5.01445)(2.53333,5.01872) - (2.53867,5.02292)(2.544,5.02705)(2.54933,5.03112)(2.55467,5.03512) - (2.56,5.03906)(2.56533,5.04294)(2.57067,5.04674)(2.576,5.05049) - (2.58133,5.05417)(2.58667,5.05778)(2.592,5.06133)(2.59733,5.06481) - (2.60267,5.06823)(2.608,5.07158)(2.61333,5.07487)(2.61867,5.07809) - (2.624,5.08125)(2.62933,5.08434)(2.63467,5.08737)(2.64,5.09033) - (2.64533,5.09323)(2.65067,5.09606)(2.656,5.09883)(2.66133,5.10153) - (2.66667,5.10417)(2.672,5.10674)(2.67733,5.10924)(2.68267,5.11169) - (2.688,5.11406)(2.69333,5.11637)(2.69867,5.11862)(2.704,5.1208) - (2.70933,5.12292)(2.71467,5.12497)(2.72,5.12695)(2.72533,5.12887) - (2.73067,5.13073)(2.736,5.13252)(2.74133,5.13424)(2.74667,5.1359) - (2.752,5.1375)(2.75733,5.13903)(2.76267,5.14049)(2.768,5.14189) - (2.77333,5.14323)(2.77867,5.1445)(2.784,5.1457)(2.78933,5.14684) - (2.79467,5.14792)(2.8,5.14893)(2.80533,5.14987)(2.81067,5.15075) - (2.816,5.15156)(2.82133,5.15231)(2.82667,5.15299)(2.832,5.15361) - (2.83733,5.15417)(2.84267,5.15465)(2.848,5.15508)(2.85333,5.15544) - (2.85867,5.15573)(2.864,5.15596)(2.86933,5.15612)(2.87467,5.15622)(2.88,5.15625) -\path(2.86706,5.15382)(2.87286,5.1575) -\path(2.85412,5.15138)(2.86572,5.15876) -\path(2.84118,5.14895)(2.85857,5.16001) -\path(2.82824,5.14651)(2.85143,5.16126) -\path(2.82297,5.14896)(2.84429,5.16252) -\path(2.82293,5.15473)(2.83715,5.16377) -\path(2.8229,5.1605)(2.83,5.16503) -\path(2.8743,5.15518)(2.87281,5.15751) -\path(2.8686,5.1541)(2.86563,5.15877) -\path(2.8629,5.15303)(2.85844,5.16003) -\path(2.85719,5.15196)(2.85126,5.1613) -\path(2.85149,5.15089)(2.84407,5.16256) -\path(2.84579,5.14981)(2.83688,5.16382) -\path(2.84009,5.14874)(2.8297,5.16508) -\path(2.83439,5.14767)(2.82286,5.16579) -\path(2.82869,5.1466)(2.82292,5.15566) -\path(2.82292,5.1559)(2.82299,5.14552)(2.88,5.15625) - (2.82286,5.16628)(2.82292,5.1559) -\put(2.86001,5.21481){\makebox(0,0)[b]{\hbox{\color{rgb_7f7f7f}\texttt{\footnotesize \texttt{eps}}}}} -\put(2.88,5.15625){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\path(2.88,5.15625)(3.52,5.15625) -\path(3.51287,5.15495)(3.50817,5.1584) -\path(3.50573,5.15366)(3.49634,5.16055) -\path(3.4986,5.15236)(3.48451,5.1627) -\path(3.49146,5.15106)(3.47268,5.16485) -\path(3.48433,5.14976)(3.46292,5.16548) -\path(3.47719,5.14847)(3.46292,5.15895) -\path(3.47006,5.14717)(3.46292,5.15241) -\path(3.46863,5.16559)(3.46292,5.15782) -\path(3.47434,5.16455)(3.46292,5.14901) -\path(3.48005,5.16351)(3.46773,5.14675) -\path(3.48575,5.16248)(3.4752,5.1481) -\path(3.49146,5.16144)(3.48267,5.14946) -\path(3.49717,5.1604)(3.49013,5.15082) -\path(3.50288,5.15936)(3.4976,5.15218) -\path(3.50858,5.15833)(3.50507,5.15353) -\path(3.51429,5.15729)(3.51253,5.15489) -\path(3.46292,5.15625)(3.46292,5.14587)(3.52,5.15625) - (3.46292,5.16663)(3.46292,5.15625) -\put(3.57535,5.15625){\makebox(0,0)[l]{\hbox{\color{rgb_7f7f7f}\texttt{\footnotesize \begin{minipage}{0.225in}\texttt{png mng gif}\end{minipage}}}}} -\put(3.52,5.15625){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\put(1.92,4.21875){\makebox(0,0)[c]{\hbox{\color{rgb_009800}\texttt{\Large epix}}}} -\allinethickness{1.2pt}% -\color{rgb_ff0000}% -\path(0.32,3.28125)(0.96,3.28125) -\allinethickness{0.0055348in}% -\path(0.908111,3.29068)(0.902922,3.27138) -\path(0.9133,3.28974)(0.9085,3.27189) -\path(0.918489,3.2888)(0.914223,3.27293) -\path(0.923678,3.28785)(0.919945,3.27397) -\path(0.928867,3.28691)(0.925667,3.27501) -\path(0.934056,3.28597)(0.931389,3.27605) -\path(0.939244,3.28502)(0.937111,3.27709) -\path(0.944433,3.28408)(0.942833,3.27813) -\path(0.949622,3.28314)(0.948556,3.27917) -\path(0.954811,3.28219)(0.954278,3.28021) -\path(0.902922,3.27602)(0.914338,3.27295) -\path(0.902922,3.28116)(0.925753,3.27502) -\path(0.902922,3.28631)(0.937169,3.2771) -\path(0.902922,3.29145)(0.948584,3.27917) -\allinethickness{1.2pt}% -\path(0.902922,3.28125)(0.902922,3.27087)(0.96,3.28125) - (0.902922,3.29163)(0.902922,3.28125) -\put(0.32,3.3366){\makebox(0,0)[b]{\fboxrule0.1pt% -\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{xp}, \texttt{flx}}}}}} -\put(0.32,3.28125){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\put(0.97999,3.33981){\makebox(0,0)[b]{\fboxrule0.1pt% -\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{eepic}}}}}} -\put(0.96,3.28125){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\path(0.96,3.28125)(0.963187,3.28115)(0.966347,3.28086) - (0.969482,3.28039)(0.972591,3.27972)(0.975676,3.27888) - (0.978736,3.27785)(0.981772,3.27665)(0.984785,3.27528) - (0.987774,3.27374)(0.990741,3.27203)(0.993685,3.27016) - (0.996608,3.26813)(0.999509,3.26594)(1.00239,3.2636) - (1.00525,3.26111)(1.00809,3.25847)(1.01091,3.25569) - (1.01371,3.25277)(1.01649,3.24972)(1.01926,3.24653) - (1.02201,3.24321)(1.02474,3.23976)(1.02745,3.23619)(1.03014,3.2325) - (1.03282,3.22869)(1.03549,3.22477)(1.03814,3.22074)(1.04077,3.2166) - (1.04339,3.21235)(1.046,3.20801)(1.04859,3.20356)(1.05117,3.19903) - (1.05374,3.1944)(1.0563,3.18968)(1.05884,3.18488)(1.06138,3.18) - (1.0639,3.17504)(1.06641,3.17)(1.06891,3.1649)(1.07141,3.15972) - (1.07389,3.15448)(1.07637,3.14918)(1.07884,3.14382)(1.0813,3.1384) - (1.08375,3.13293)(1.0862,3.12742)(1.08864,3.12185)(1.09107,3.11625) - (1.0935,3.11061)(1.09593,3.10493)(1.09835,3.09921)(1.10076,3.09347) - (1.10317,3.0877)(1.10558,3.08191)(1.10799,3.0761)(1.1104,3.07028) - (1.1128,3.06444)(1.1152,3.05859)(1.1176,3.05273)(1.12,3.04688) - (1.1224,3.04102)(1.1248,3.03516)(1.1272,3.02931)(1.1296,3.02347) - (1.13201,3.01765)(1.13442,3.01184)(1.13683,3.00605) - (1.13924,3.00028)(1.14165,2.99454)(1.14407,2.98882)(1.1465,2.98314) - (1.14893,2.9775)(1.15136,2.9719)(1.1538,2.96633)(1.15625,2.96082) - (1.1587,2.95535)(1.16116,2.94993)(1.16363,2.94457)(1.16611,2.93927) - (1.16859,2.93403)(1.17109,2.92885)(1.17359,2.92375)(1.1761,2.91871) - (1.17862,2.91375)(1.18116,2.90887)(1.1837,2.90407)(1.18626,2.89935) - (1.18883,2.89472)(1.19141,2.89019)(1.194,2.88574)(1.19661,2.8814) - (1.19923,2.87715)(1.20186,2.87301)(1.20451,2.86898) - (1.20718,2.86506)(1.20986,2.86125)(1.21255,2.85756) - (1.21526,2.85399)(1.21799,2.85054)(1.22074,2.84722) - (1.22351,2.84403)(1.22629,2.84098)(1.22909,2.83806) - (1.23191,2.83528)(1.23475,2.83264)(1.23761,2.83015) - (1.24049,2.82781)(1.24339,2.82563)(1.24631,2.82359) - (1.24926,2.82172)(1.25223,2.82001)(1.25522,2.81847)(1.25823,2.8171) - (1.26126,2.8159)(1.26432,2.81487)(1.26741,2.81403)(1.27052,2.81336) - (1.27365,2.81289)(1.27681,2.8126)(1.28,2.8125) -\path(1.28,2.8125)(1.6,2.8125) -\allinethickness{0.0055348in}% -\path(1.54292,2.80731)(1.59652,2.81313) -\path(1.54292,2.8125)(1.57865,2.81638) -\path(1.54292,2.81769)(1.56079,2.81963) -\path(1.59481,2.81156)(1.5946,2.81348) -\path(1.58962,2.81061)(1.5892,2.81446) -\path(1.58443,2.80967)(1.58381,2.81544) -\path(1.57924,2.80873)(1.57841,2.81643) -\path(1.57406,2.80778)(1.57301,2.81741) -\path(1.56887,2.80684)(1.56761,2.81839) -\path(1.56368,2.8059)(1.56221,2.81937) -\path(1.55849,2.80495)(1.55682,2.82035) -\path(1.5533,2.80401)(1.55142,2.82133) -\path(1.54811,2.80307)(1.54602,2.82231) -\allinethickness{1.2pt}% -\path(1.54292,2.8125)(1.54292,2.80212)(1.6,2.8125)(1.54292,2.82288)(1.54292,2.8125) -\path(1.6,2.8125)(2.24,2.8125) -\allinethickness{0.0055348in}% -\path(2.23481,2.81156)(2.23373,2.81364) -\path(2.22962,2.81061)(2.22746,2.81478) -\path(2.22443,2.80967)(2.22119,2.81592) -\path(2.21924,2.80873)(2.21492,2.81706) -\path(2.21406,2.80778)(2.20864,2.8182) -\path(2.20887,2.80684)(2.20237,2.81934) -\path(2.20368,2.8059)(2.1961,2.82048) -\path(2.19849,2.80495)(2.18983,2.82162) -\path(2.1933,2.80401)(2.18356,2.82276) -\path(2.18811,2.80307)(2.18292,2.81306) -\path(2.19108,2.8214)(2.18292,2.81716) -\path(2.19923,2.81991)(2.18292,2.81144) -\path(2.20738,2.81843)(2.18292,2.80573) -\path(2.21554,2.81695)(2.18919,2.80326) -\path(2.22369,2.81547)(2.20612,2.80634) -\path(2.23185,2.81398)(2.22306,2.80942) -\allinethickness{1.2pt}% -\path(2.18292,2.8125)(2.18292,2.80212)(2.24,2.8125) - (2.18292,2.82288)(2.18292,2.8125) -\put(1.6,2.86785){\makebox(0,0)[b]{\fboxrule0.1pt% -\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{dvi}}}}}} -\put(1.6,2.8125){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\put(2.21793,2.84482){\makebox(0,0)[br]{\fboxrule0.1pt% -\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{ps}}}}}} -\put(2.24,2.8125){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\allinethickness{0.4pt}% -\color{rgb_7f7f7f}% -\path(0.96,2.34375)(0.963187,2.34385)(0.966347,2.34414) - (0.969482,2.34461)(0.972591,2.34528)(0.975676,2.34612) - (0.978736,2.34715)(0.981772,2.34835)(0.984785,2.34972) - (0.987774,2.35126)(0.990741,2.35297)(0.993685,2.35484) - (0.996608,2.35688)(0.999509,2.35906)(1.00239,2.3614) - (1.00525,2.36389)(1.00809,2.36653)(1.01091,2.36931) - (1.01371,2.37223)(1.01649,2.37528)(1.01926,2.37847) - (1.02201,2.38179)(1.02474,2.38524)(1.02745,2.38881)(1.03014,2.3925) - (1.03282,2.39631)(1.03549,2.40023)(1.03814,2.40426)(1.04077,2.4084) - (1.04339,2.41265)(1.046,2.41699)(1.04859,2.42144)(1.05117,2.42597) - (1.05374,2.4306)(1.0563,2.43532)(1.05884,2.44012)(1.06138,2.445) - (1.0639,2.44996)(1.06641,2.455)(1.06891,2.4601)(1.07141,2.46528) - (1.07389,2.47052)(1.07637,2.47582)(1.07884,2.48118)(1.0813,2.4866) - (1.08375,2.49207)(1.0862,2.49758)(1.08864,2.50315)(1.09107,2.50875) - (1.0935,2.51439)(1.09593,2.52007)(1.09835,2.52579)(1.10076,2.53153) - (1.10317,2.5373)(1.10558,2.54309)(1.10799,2.5489)(1.1104,2.55472) - (1.1128,2.56056)(1.1152,2.56641)(1.1176,2.57227)(1.12,2.57812) - (1.1224,2.58398)(1.1248,2.58984)(1.1272,2.59569)(1.1296,2.60153) - (1.13201,2.60735)(1.13442,2.61316)(1.13683,2.61895) - (1.13924,2.62472)(1.14165,2.63046)(1.14407,2.63618)(1.1465,2.64186) - (1.14893,2.6475)(1.15136,2.6531)(1.1538,2.65867)(1.15625,2.66418) - (1.1587,2.66965)(1.16116,2.67507)(1.16363,2.68043)(1.16611,2.68573) - (1.16859,2.69097)(1.17109,2.69615)(1.17359,2.70125)(1.1761,2.70629) - (1.17862,2.71125)(1.18116,2.71613)(1.1837,2.72093)(1.18626,2.72565) - (1.18883,2.73028)(1.19141,2.73481)(1.194,2.73926)(1.19661,2.7436) - (1.19923,2.74785)(1.20186,2.75199)(1.20451,2.75602) - (1.20718,2.75994)(1.20986,2.76375)(1.21255,2.76744) - (1.21526,2.77101)(1.21799,2.77446)(1.22074,2.77778) - (1.22351,2.78097)(1.22629,2.78402)(1.22909,2.78694) - (1.23191,2.78972)(1.23475,2.79236)(1.23761,2.79485) - (1.24049,2.79719)(1.24339,2.79937)(1.24631,2.80141) - (1.24926,2.80328)(1.25223,2.80499)(1.25522,2.80653)(1.25823,2.8079) - (1.26126,2.8091)(1.26432,2.81013)(1.26741,2.81097)(1.27052,2.81164) - (1.27365,2.81211)(1.27681,2.8124)(1.28,2.8125) -\put(0.97999,2.28519){\makebox(0,0)[t]{\hbox{\color{rgb_7f7f7f}\texttt{\footnotesize \texttt{tex}}}}} -\put(0.96,2.34375){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\allinethickness{1.2pt}% -\color{rgb_ff0000}% -\path(2.24,2.8125)(2.24533,2.80472)(2.25067,2.79701)(2.256,2.78936) - (2.26133,2.78177)(2.26667,2.77425)(2.272,2.7668)(2.27733,2.75941) - (2.28267,2.75208)(2.288,2.74482)(2.29333,2.73763)(2.29867,2.7305) - (2.304,2.72344)(2.30933,2.71644)(2.31467,2.70951)(2.32,2.70264) - (2.32533,2.69583)(2.33067,2.6891)(2.336,2.68242)(2.34133,2.67581) - (2.34667,2.66927)(2.352,2.66279)(2.35733,2.65638)(2.36267,2.65003) - (2.368,2.64375)(2.37333,2.63753)(2.37867,2.63138)(2.384,2.62529) - (2.38933,2.61927)(2.39467,2.61331)(2.4,2.60742)(2.40533,2.6016) - (2.41067,2.59583)(2.416,2.59014)(2.42133,2.58451)(2.42667,2.57894) - (2.432,2.57344)(2.43733,2.568)(2.44267,2.56263)(2.448,2.55732) - (2.45333,2.55208)(2.45867,2.54691)(2.464,2.5418)(2.46933,2.53675) - (2.47467,2.53177)(2.48,2.52686)(2.48533,2.52201)(2.49067,2.51722) - (2.496,2.5125)(2.50133,2.50785)(2.50667,2.50326)(2.512,2.49873) - (2.51733,2.49427)(2.52267,2.48988)(2.528,2.48555)(2.53333,2.48128) - (2.53867,2.47708)(2.544,2.47295)(2.54933,2.46888)(2.55467,2.46488) - (2.56,2.46094)(2.56533,2.45706)(2.57067,2.45326)(2.576,2.44951) - (2.58133,2.44583)(2.58667,2.44222)(2.592,2.43867)(2.59733,2.43519) - (2.60267,2.43177)(2.608,2.42842)(2.61333,2.42513)(2.61867,2.42191) - (2.624,2.41875)(2.62933,2.41566)(2.63467,2.41263)(2.64,2.40967) - (2.64533,2.40677)(2.65067,2.40394)(2.656,2.40117)(2.66133,2.39847) - (2.66667,2.39583)(2.672,2.39326)(2.67733,2.39076)(2.68267,2.38831) - (2.688,2.38594)(2.69333,2.38363)(2.69867,2.38138)(2.704,2.3792) - (2.70933,2.37708)(2.71467,2.37503)(2.72,2.37305)(2.72533,2.37113) - (2.73067,2.36927)(2.736,2.36748)(2.74133,2.36576)(2.74667,2.3641) - (2.752,2.3625)(2.75733,2.36097)(2.76267,2.35951)(2.768,2.35811) - (2.77333,2.35677)(2.77867,2.3555)(2.784,2.3543)(2.78933,2.35316) - (2.79467,2.35208)(2.8,2.35107)(2.80533,2.35013)(2.81067,2.34925) - (2.816,2.34844)(2.82133,2.34769)(2.82667,2.34701)(2.832,2.34639) - (2.83733,2.34583)(2.84267,2.34535)(2.848,2.34492)(2.85333,2.34456) - (2.85867,2.34427)(2.864,2.34404)(2.86933,2.34388)(2.87467,2.34378)(2.88,2.34375) -\allinethickness{0.0055348in}% -\path(2.82869,2.3534)(2.82294,2.34686) -\path(2.83439,2.35233)(2.82289,2.33925) -\path(2.84009,2.35126)(2.82501,2.3341) -\path(2.84579,2.35019)(2.83287,2.33548) -\path(2.85149,2.34911)(2.84072,2.33686) -\path(2.85719,2.34804)(2.84858,2.33823) -\path(2.8629,2.34697)(2.85643,2.33961) -\path(2.8686,2.3459)(2.86429,2.34099) -\path(2.8743,2.34482)(2.87214,2.34237) -\path(2.8229,2.34038)(2.82921,2.33484) -\path(2.82294,2.34704)(2.83556,2.33595) -\path(2.82298,2.35369)(2.84191,2.33706) -\path(2.83154,2.35287)(2.84826,2.33818) -\path(2.84123,2.35104)(2.8546,2.33929) -\path(2.85092,2.34922)(2.86095,2.34041) -\path(2.86062,2.3474)(2.8673,2.34152) -\path(2.87031,2.34557)(2.87365,2.34264) -\allinethickness{1.2pt}% -\path(2.82292,2.3441)(2.82286,2.33372)(2.88,2.34375) - (2.82299,2.35448)(2.82292,2.3441) -\put(2.93535,2.34375){\makebox(0,0)[l]{\fboxrule0.1pt% -\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{pdf}}}}}} -\put(2.88,2.34375){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\path(2.24,2.8125)(2.24533,2.82028)(2.25067,2.82799)(2.256,2.83564) - (2.26133,2.84323)(2.26667,2.85075)(2.272,2.8582)(2.27733,2.86559) - (2.28267,2.87292)(2.288,2.88018)(2.29333,2.88737)(2.29867,2.8945) - (2.304,2.90156)(2.30933,2.90856)(2.31467,2.91549)(2.32,2.92236) - (2.32533,2.92917)(2.33067,2.9359)(2.336,2.94258)(2.34133,2.94919) - (2.34667,2.95573)(2.352,2.96221)(2.35733,2.96862)(2.36267,2.97497) - (2.368,2.98125)(2.37333,2.98747)(2.37867,2.99362)(2.384,2.99971) - (2.38933,3.00573)(2.39467,3.01169)(2.4,3.01758)(2.40533,3.0234) - (2.41067,3.02917)(2.416,3.03486)(2.42133,3.04049)(2.42667,3.04606) - (2.432,3.05156)(2.43733,3.057)(2.44267,3.06237)(2.448,3.06768) - (2.45333,3.07292)(2.45867,3.07809)(2.464,3.0832)(2.46933,3.08825) - (2.47467,3.09323)(2.48,3.09814)(2.48533,3.10299)(2.49067,3.10778) - (2.496,3.1125)(2.50133,3.11715)(2.50667,3.12174)(2.512,3.12627) - (2.51733,3.13073)(2.52267,3.13512)(2.528,3.13945)(2.53333,3.14372) - (2.53867,3.14792)(2.544,3.15205)(2.54933,3.15612)(2.55467,3.16012) - (2.56,3.16406)(2.56533,3.16794)(2.57067,3.17174)(2.576,3.17549) - (2.58133,3.17917)(2.58667,3.18278)(2.592,3.18633)(2.59733,3.18981) - (2.60267,3.19323)(2.608,3.19658)(2.61333,3.19987)(2.61867,3.20309) - (2.624,3.20625)(2.62933,3.20934)(2.63467,3.21237)(2.64,3.21533) - (2.64533,3.21823)(2.65067,3.22106)(2.656,3.22383)(2.66133,3.22653) - (2.66667,3.22917)(2.672,3.23174)(2.67733,3.23424)(2.68267,3.23669) - (2.688,3.23906)(2.69333,3.24137)(2.69867,3.24362)(2.704,3.2458) - (2.70933,3.24792)(2.71467,3.24997)(2.72,3.25195)(2.72533,3.25387) - (2.73067,3.25573)(2.736,3.25752)(2.74133,3.25924)(2.74667,3.2609) - (2.752,3.2625)(2.75733,3.26403)(2.76267,3.26549)(2.768,3.26689) - (2.77333,3.26823)(2.77867,3.2695)(2.784,3.2707)(2.78933,3.27184) - (2.79467,3.27292)(2.8,3.27393)(2.80533,3.27487)(2.81067,3.27575) - (2.816,3.27656)(2.82133,3.27731)(2.82667,3.27799)(2.832,3.27861) - (2.83733,3.27917)(2.84267,3.27965)(2.848,3.28008)(2.85333,3.28044) - (2.85867,3.28073)(2.864,3.28096)(2.86933,3.28112)(2.87467,3.28122)(2.88,3.28125) -\allinethickness{0.0055348in}% -\path(2.82295,3.27579)(2.83249,3.27231) -\path(2.82292,3.28106)(2.84199,3.2741) -\path(2.82289,3.28633)(2.85149,3.27589) -\path(2.82456,3.29098)(2.861,3.27767) -\path(2.85228,3.28612)(2.8705,3.27946) -\path(2.87406,3.28013)(2.87481,3.28216) -\path(2.86813,3.27902)(2.86961,3.28307) -\path(2.86219,3.2779)(2.86442,3.28399) -\path(2.85626,3.27678)(2.85922,3.2849) -\path(2.85032,3.27567)(2.85403,3.28581) -\path(2.84439,3.27455)(2.84883,3.28672) -\path(2.83845,3.27343)(2.84364,3.28763) -\path(2.83252,3.27232)(2.83844,3.28854) -\path(2.82658,3.2712)(2.83325,3.28946) -\path(2.82295,3.27639)(2.82805,3.29037) -\allinethickness{1.2pt}% -\path(2.82292,3.2809)(2.82299,3.27052)(2.88,3.28125) - (2.82286,3.29128)(2.82292,3.2809) -\put(2.86001,3.33981){\makebox(0,0)[b]{\fboxrule0.1pt% -\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{eps}}}}}} -\put(2.88,3.28125){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\allinethickness{0.4pt}% -\color{rgb_7f7f7f}% -\path(2.88,3.28125)(3.52,3.28125) -\path(3.51481,3.28031)(3.51477,3.2822) -\path(3.50962,3.27936)(3.50954,3.28315) -\path(3.50443,3.27842)(3.50432,3.2841) -\path(3.49924,3.27748)(3.49909,3.28505) -\path(3.49406,3.27653)(3.49386,3.286) -\path(3.48887,3.27559)(3.48863,3.28695) -\path(3.48368,3.27465)(3.4834,3.2879) -\path(3.47849,3.2737)(3.47818,3.28885) -\path(3.4733,3.27276)(3.47295,3.2898) -\path(3.46811,3.27182)(3.46772,3.29076) -\path(3.48855,3.28697)(3.46292,3.28644) -\path(3.51417,3.28231)(3.46292,3.28125) -\path(3.49512,3.27673)(3.46292,3.27606) -\path(3.46292,3.28125)(3.46292,3.27087)(3.52,3.28125) - (3.46292,3.29163)(3.46292,3.28125) -\put(3.57535,3.28125){\makebox(0,0)[l]{\hbox{\color{rgb_7f7f7f}\texttt{\footnotesize \begin{minipage}{0.225in}\texttt{png mng gif}\end{minipage}}}}} -\put(3.52,3.28125){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\put(1.92,2.34375){\makebox(0,0)[c]{\hbox{\color{rgb_009800}\texttt{\Large elaps}}}} -\allinethickness{1.2pt}% -\color{rgb_ff0000}% -\path(0.32,1.40625)(0.96,1.40625) -\allinethickness{0.0055348in}% -\path(0.912435,1.4149)(0.902922,1.41097) -\path(0.921948,1.41317)(0.902922,1.40531) -\path(0.931461,1.41144)(0.902922,1.39966) -\path(0.940974,1.40971)(0.91102,1.39734) -\path(0.950487,1.40798)(0.93551,1.4018) -\path(0.902922,1.40939)(0.908111,1.39682) -\path(0.905721,1.41612)(0.9133,1.39776) -\path(0.911752,1.41502)(0.918489,1.3987) -\path(0.917783,1.41393)(0.923678,1.39965) -\path(0.923814,1.41283)(0.928867,1.40059) -\path(0.929845,1.41173)(0.934056,1.40153) -\path(0.935876,1.41064)(0.939244,1.40248) -\path(0.941907,1.40954)(0.944433,1.40342) -\path(0.947938,1.40844)(0.949622,1.40436) -\path(0.953969,1.40735)(0.954811,1.40531) -\allinethickness{1.2pt}% -\path(0.902922,1.40625)(0.902922,1.39587)(0.96,1.40625) - (0.902922,1.41663)(0.902922,1.40625) -\put(0.32,1.4616){\makebox(0,0)[b]{\fboxrule0.1pt% -\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{xp}, \texttt{flx}}}}}} -\put(0.32,1.40625){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\put(0.97999,1.46481){\makebox(0,0)[b]{\fboxrule0.1pt% -\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{eepic}}}}}} -\put(0.96,1.40625){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\path(0.96,1.40625)(0.963187,1.40615)(0.966347,1.40586) - (0.969482,1.40539)(0.972591,1.40472)(0.975676,1.40388) - (0.978736,1.40285)(0.981772,1.40165)(0.984785,1.40028) - (0.987774,1.39874)(0.990741,1.39703)(0.993685,1.39516) - (0.996608,1.39313)(0.999509,1.39094)(1.00239,1.3886) - (1.00525,1.38611)(1.00809,1.38347)(1.01091,1.38069) - (1.01371,1.37777)(1.01649,1.37472)(1.01926,1.37153) - (1.02201,1.36821)(1.02474,1.36476)(1.02745,1.36119)(1.03014,1.3575) - (1.03282,1.35369)(1.03549,1.34977)(1.03814,1.34574)(1.04077,1.3416) - (1.04339,1.33735)(1.046,1.33301)(1.04859,1.32856)(1.05117,1.32403) - (1.05374,1.3194)(1.0563,1.31468)(1.05884,1.30988)(1.06138,1.305) - (1.0639,1.30004)(1.06641,1.295)(1.06891,1.2899)(1.07141,1.28472) - (1.07389,1.27948)(1.07637,1.27418)(1.07884,1.26882)(1.0813,1.2634) - (1.08375,1.25793)(1.0862,1.25242)(1.08864,1.24685)(1.09107,1.24125) - (1.0935,1.23561)(1.09593,1.22993)(1.09835,1.22421)(1.10076,1.21847) - (1.10317,1.2127)(1.10558,1.20691)(1.10799,1.2011)(1.1104,1.19528) - (1.1128,1.18944)(1.1152,1.18359)(1.1176,1.17773)(1.12,1.17188) - (1.1224,1.16602)(1.1248,1.16016)(1.1272,1.15431)(1.1296,1.14847) - (1.13201,1.14265)(1.13442,1.13684)(1.13683,1.13105) - (1.13924,1.12528)(1.14165,1.11954)(1.14407,1.11382)(1.1465,1.10814) - (1.14893,1.1025)(1.15136,1.0969)(1.1538,1.09133)(1.15625,1.08582) - (1.1587,1.08035)(1.16116,1.07493)(1.16363,1.06957)(1.16611,1.06427) - (1.16859,1.05903)(1.17109,1.05385)(1.17359,1.04875)(1.1761,1.04371) - (1.17862,1.03875)(1.18116,1.03387)(1.1837,1.02907)(1.18626,1.02435) - (1.18883,1.01972)(1.19141,1.01519)(1.194,1.01074)(1.19661,1.0064) - (1.19923,1.00215)(1.20186,0.998013)(1.20451,0.99398) - (1.20718,0.990058)(1.20986,0.98625)(1.21255,0.982559) - (1.21526,0.978989)(1.21799,0.975542)(1.22074,0.972222) - (1.22351,0.969033)(1.22629,0.965977)(1.22909,0.963057) - (1.23191,0.960278)(1.23475,0.957642)(1.23761,0.955152) - (1.24049,0.952812)(1.24339,0.950625)(1.24631,0.948594) - (1.24926,0.946723)(1.25223,0.945015)(1.25522,0.943472) - (1.25823,0.942099)(1.26126,0.940898)(1.26432,0.939874) - (1.26741,0.939028)(1.27052,0.938364)(1.27365,0.937886) - (1.27681,0.937597)(1.28,0.9375) -\path(1.28,0.9375)(1.6,0.9375) -\allinethickness{0.0055348in}% -\path(1.54292,0.934917)(1.54926,0.928275) -\path(1.54292,0.942712)(1.55561,0.929428) -\path(1.54596,0.947325)(1.56195,0.930581) -\path(1.55497,0.945688)(1.56829,0.931735) -\path(1.56397,0.94405)(1.57463,0.932888) -\path(1.57298,0.942413)(1.58097,0.934041) -\path(1.58199,0.940775)(1.58732,0.935194) -\path(1.59099,0.939138)(1.59366,0.936347) -\path(1.59067,0.935804)(1.59366,0.938653) -\path(1.58135,0.934109)(1.58732,0.939806) -\path(1.57202,0.932413)(1.58097,0.940959) -\path(1.5627,0.930718)(1.57463,0.942112) -\path(1.55337,0.929022)(1.56829,0.943265) -\path(1.54405,0.927327)(1.56195,0.944419) -\path(1.54292,0.933461)(1.55561,0.945572) -\path(1.54292,0.940669)(1.54926,0.946725) -\allinethickness{1.2pt}% -\path(1.54292,0.9375)(1.54292,0.927122)(1.6,0.9375) - (1.54292,0.947878)(1.54292,0.9375) -\path(1.6,0.9375)(2.24,0.9375) -\allinethickness{0.0055348in}% -\path(2.23385,0.936381)(2.23481,0.938443) -\path(2.22769,0.935262)(2.22962,0.939387) -\path(2.22154,0.934143)(2.22443,0.94033) -\path(2.21538,0.933024)(2.21924,0.941274) -\path(2.20923,0.931905)(2.21406,0.942217) -\path(2.20308,0.930787)(2.20887,0.943161) -\path(2.19692,0.929668)(2.20368,0.944104) -\path(2.19077,0.928549)(2.19849,0.945047) -\path(2.18461,0.92743)(2.1933,0.945991) -\path(2.18292,0.935846)(2.18811,0.946934) -\path(2.23185,0.936017)(2.22148,0.940867) -\path(2.22369,0.934535)(2.20297,0.944233) -\path(2.21554,0.933052)(2.18445,0.9476) -\path(2.20738,0.93157)(2.18292,0.943017) -\path(2.19923,0.930087)(2.18292,0.937719) -\path(2.19108,0.928605)(2.18292,0.93242) -\allinethickness{1.2pt}% -\path(2.18292,0.9375)(2.18292,0.927122)(2.24,0.9375) - (2.18292,0.947878)(2.18292,0.9375) -\put(1.6,0.992848){\makebox(0,0)[b]{\fboxrule0.1pt% -\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{dvi}}}}}} -\put(1.6,0.9375){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\put(2.21793,0.969823){\makebox(0,0)[br]{\fboxrule0.1pt% -\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{ps}}}}}} -\put(2.24,0.9375){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\allinethickness{0.4pt}% -\color{rgb_7f7f7f}% -\path(0.96,0.46875)(0.963187,0.468847)(0.966347,0.469136) - (0.969482,0.469614)(0.972591,0.470278)(0.975676,0.471124) - (0.978736,0.472148)(0.981772,0.473349)(0.984785,0.474722) - (0.987774,0.476265)(0.990741,0.477973)(0.993685,0.479844) - (0.996608,0.481875)(0.999509,0.484062)(1.00239,0.486402) - (1.00525,0.488892)(1.00809,0.491528)(1.01091,0.494307) - (1.01371,0.497227)(1.01649,0.500283)(1.01926,0.503472) - (1.02201,0.506792)(1.02474,0.510239)(1.02745,0.513809) - (1.03014,0.5175)(1.03282,0.521308)(1.03549,0.52523) - (1.03814,0.529263)(1.04077,0.533403)(1.04339,0.537647) - (1.046,0.541992)(1.04859,0.546435)(1.05117,0.550972) - (1.05374,0.555601)(1.0563,0.560317)(1.05884,0.565118)(1.06138,0.57) - (1.0639,0.57496)(1.06641,0.579996)(1.06891,0.585103) - (1.07141,0.590278)(1.07389,0.595518)(1.07637,0.60082) - (1.07884,0.606181)(1.0813,0.611597)(1.08375,0.617065) - (1.0862,0.622582)(1.08864,0.628145)(1.09107,0.63375) - (1.0935,0.639394)(1.09593,0.645074)(1.09835,0.650786) - (1.10076,0.656528)(1.10317,0.662295)(1.10558,0.668086) - (1.10799,0.673896)(1.1104,0.679722)(1.1128,0.685562) - (1.1152,0.691411)(1.1176,0.697266)(1.12,0.703125)(1.1224,0.708984) - (1.1248,0.714839)(1.1272,0.720688)(1.1296,0.726528) - (1.13201,0.732354)(1.13442,0.738164)(1.13683,0.743955) - (1.13924,0.749722)(1.14165,0.755464)(1.14407,0.761176) - (1.1465,0.766856)(1.14893,0.7725)(1.15136,0.778105) - (1.1538,0.783668)(1.15625,0.789185)(1.1587,0.794653) - (1.16116,0.800069)(1.16363,0.80543)(1.16611,0.810732) - (1.16859,0.815972)(1.17109,0.821147)(1.17359,0.826254) - (1.1761,0.83129)(1.17862,0.83625)(1.18116,0.841132) - (1.1837,0.845933)(1.18626,0.850649)(1.18883,0.855278) - (1.19141,0.859815)(1.194,0.864258)(1.19661,0.868603) - (1.19923,0.872847)(1.20186,0.876987)(1.20451,0.88102) - (1.20718,0.884942)(1.20986,0.88875)(1.21255,0.892441) - (1.21526,0.896011)(1.21799,0.899458)(1.22074,0.902778) - (1.22351,0.905967)(1.22629,0.909023)(1.22909,0.911943) - (1.23191,0.914722)(1.23475,0.917358)(1.23761,0.919848) - (1.24049,0.922188)(1.24339,0.924375)(1.24631,0.926406) - (1.24926,0.928277)(1.25223,0.929985)(1.25522,0.931528) - (1.25823,0.932901)(1.26126,0.934102)(1.26432,0.935126) - (1.26741,0.935972)(1.27052,0.936636)(1.27365,0.937114) - (1.27681,0.937403)(1.28,0.9375) -\put(0.97999,0.410187){\makebox(0,0)[t]{\hbox{\color{rgb_7f7f7f}\texttt{\footnotesize \texttt{tex}}}}} -\put(0.96,0.46875){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\path(2.24,0.9375)(2.24533,0.92972)(2.25067,0.922005) - (2.256,0.914355)(2.26133,0.906771)(2.26667,0.899251) - (2.272,0.891797)(2.27733,0.884408)(2.28267,0.877083) - (2.288,0.869824)(2.29333,0.86263)(2.29867,0.855501)(2.304,0.848438) - (2.30933,0.841439)(2.31467,0.834505)(2.32,0.827637) - (2.32533,0.820833)(2.33067,0.814095)(2.336,0.807422) - (2.34133,0.800814)(2.34667,0.794271)(2.352,0.787793) - (2.35733,0.78138)(2.36267,0.775033)(2.368,0.76875) - (2.37333,0.762533)(2.37867,0.75638)(2.384,0.750293) - (2.38933,0.744271)(2.39467,0.738314)(2.4,0.732422) - (2.40533,0.726595)(2.41067,0.720833)(2.416,0.715137) - (2.42133,0.709505)(2.42667,0.703939)(2.432,0.698438) - (2.43733,0.693001)(2.44267,0.68763)(2.448,0.682324) - (2.45333,0.677083)(2.45867,0.671908)(2.464,0.666797) - (2.46933,0.661751)(2.47467,0.656771)(2.48,0.651855) - (2.48533,0.647005)(2.49067,0.64222)(2.496,0.6375)(2.50133,0.632845) - (2.50667,0.628255)(2.512,0.62373)(2.51733,0.619271) - (2.52267,0.614876)(2.528,0.610547)(2.53333,0.606283) - (2.53867,0.602083)(2.544,0.597949)(2.54933,0.59388) - (2.55467,0.589876)(2.56,0.585938)(2.56533,0.582064) - (2.57067,0.578255)(2.576,0.574512)(2.58133,0.570833) - (2.58667,0.56722)(2.592,0.563672)(2.59733,0.560189) - (2.60267,0.556771)(2.608,0.553418)(2.61333,0.55013) - (2.61867,0.546908)(2.624,0.54375)(2.62933,0.540658) - (2.63467,0.53763)(2.64,0.534668)(2.64533,0.531771) - (2.65067,0.528939)(2.656,0.526172)(2.66133,0.52347) - (2.66667,0.520833)(2.672,0.518262)(2.67733,0.515755) - (2.68267,0.513314)(2.688,0.510937)(2.69333,0.508626) - (2.69867,0.50638)(2.704,0.504199)(2.70933,0.502083) - (2.71467,0.500033)(2.72,0.498047)(2.72533,0.496126) - (2.73067,0.494271)(2.736,0.49248)(2.74133,0.490755) - (2.74667,0.489095)(2.752,0.4875)(2.75733,0.48597)(2.76267,0.484505) - (2.768,0.483105)(2.77333,0.481771)(2.77867,0.480501) - (2.784,0.479297)(2.78933,0.478158)(2.79467,0.477083)(2.8,0.476074) - (2.80533,0.47513)(2.81067,0.474251)(2.816,0.473437) - (2.82133,0.472689)(2.82667,0.472005)(2.832,0.471387) - (2.83733,0.470833)(2.84267,0.470345)(2.848,0.469922) - (2.85333,0.469564)(2.85867,0.469271)(2.864,0.469043) - (2.86933,0.46888)(2.87467,0.468783)(2.88,0.46875) -\path(2.86583,0.471416)(2.82296,0.474287) -\path(2.86567,0.466235)(2.82292,0.469098) -\path(2.84427,0.462478)(2.82289,0.46391) -\path(2.82817,0.478501)(2.82689,0.459429) -\path(2.83335,0.477526)(2.8322,0.460361) -\path(2.83854,0.476551)(2.83751,0.461293) -\path(2.84372,0.475576)(2.84282,0.462225) -\path(2.8489,0.474601)(2.84814,0.463157) -\path(2.85408,0.473625)(2.85345,0.464089) -\path(2.85927,0.47265)(2.85876,0.465021) -\path(2.86445,0.471675)(2.86407,0.465954) -\path(2.86963,0.4707)(2.86938,0.466886) -\path(2.87482,0.469725)(2.87469,0.467818) -\path(2.82292,0.469098)(2.82286,0.458721)(2.88,0.46875) - (2.82299,0.479476)(2.82292,0.469098) -\put(2.93535,0.46875){\makebox(0,0)[l]{\hbox{\color{rgb_7f7f7f}\texttt{\footnotesize \texttt{pdf}}}}} -\put(2.88,0.46875){\color{rgb_7f7f7f}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\allinethickness{1.2pt}% -\color{rgb_ff0000}% -\path(2.24,0.9375)(2.24533,0.94528)(2.25067,0.952995) - (2.256,0.960645)(2.26133,0.968229)(2.26667,0.975749) - (2.272,0.983203)(2.27733,0.990592)(2.28267,0.997917)(2.288,1.00518) - (2.29333,1.01237)(2.29867,1.0195)(2.304,1.02656)(2.30933,1.03356) - (2.31467,1.04049)(2.32,1.04736)(2.32533,1.05417)(2.33067,1.0609) - (2.336,1.06758)(2.34133,1.07419)(2.34667,1.08073)(2.352,1.08721) - (2.35733,1.09362)(2.36267,1.09997)(2.368,1.10625)(2.37333,1.11247) - (2.37867,1.11862)(2.384,1.12471)(2.38933,1.13073)(2.39467,1.13669) - (2.4,1.14258)(2.40533,1.1484)(2.41067,1.15417)(2.416,1.15986) - (2.42133,1.16549)(2.42667,1.17106)(2.432,1.17656)(2.43733,1.182) - (2.44267,1.18737)(2.448,1.19268)(2.45333,1.19792)(2.45867,1.20309) - (2.464,1.2082)(2.46933,1.21325)(2.47467,1.21823)(2.48,1.22314) - (2.48533,1.22799)(2.49067,1.23278)(2.496,1.2375)(2.50133,1.24215) - (2.50667,1.24674)(2.512,1.25127)(2.51733,1.25573)(2.52267,1.26012) - (2.528,1.26445)(2.53333,1.26872)(2.53867,1.27292)(2.544,1.27705) - (2.54933,1.28112)(2.55467,1.28512)(2.56,1.28906)(2.56533,1.29294) - (2.57067,1.29674)(2.576,1.30049)(2.58133,1.30417)(2.58667,1.30778) - (2.592,1.31133)(2.59733,1.31481)(2.60267,1.31823)(2.608,1.32158) - (2.61333,1.32487)(2.61867,1.32809)(2.624,1.33125)(2.62933,1.33434) - (2.63467,1.33737)(2.64,1.34033)(2.64533,1.34323)(2.65067,1.34606) - (2.656,1.34883)(2.66133,1.35153)(2.66667,1.35417)(2.672,1.35674) - (2.67733,1.35924)(2.68267,1.36169)(2.688,1.36406)(2.69333,1.36637) - (2.69867,1.36862)(2.704,1.3708)(2.70933,1.37292)(2.71467,1.37497) - (2.72,1.37695)(2.72533,1.37887)(2.73067,1.38073)(2.736,1.38252) - (2.74133,1.38424)(2.74667,1.3859)(2.752,1.3875)(2.75733,1.38903) - (2.76267,1.39049)(2.768,1.39189)(2.77333,1.39323)(2.77867,1.3945) - (2.784,1.3957)(2.78933,1.39684)(2.79467,1.39792)(2.8,1.39893) - (2.80533,1.39987)(2.81067,1.40075)(2.816,1.40156)(2.82133,1.40231) - (2.82667,1.40299)(2.832,1.40361)(2.83733,1.40417)(2.84267,1.40465) - (2.848,1.40508)(2.85333,1.40544)(2.85867,1.40573)(2.864,1.40596) - (2.86933,1.40612)(2.87467,1.40622)(2.88,1.40625) -\allinethickness{0.0055348in}% -\path(2.82288,1.41337)(2.82817,1.3965) -\path(2.82772,1.41543)(2.83335,1.39747) -\path(2.83353,1.41441)(2.83854,1.39845) -\path(2.83934,1.41339)(2.84372,1.39942) -\path(2.84515,1.41237)(2.8489,1.4004) -\path(2.85096,1.41135)(2.85408,1.40137) -\path(2.85677,1.41033)(2.85927,1.40235) -\path(2.86257,1.40931)(2.86445,1.40332) -\path(2.86838,1.40829)(2.86963,1.4043) -\path(2.87419,1.40727)(2.87482,1.40527) -\path(2.83547,1.39787)(2.86857,1.40826) -\path(2.82296,1.39954)(2.85714,1.41026) -\path(2.82293,1.40512)(2.84572,1.41227) -\path(2.82289,1.4107)(2.83429,1.41427) -\allinethickness{1.2pt}% -\path(2.82292,1.4059)(2.82299,1.39552)(2.88,1.40625) - (2.82286,1.41628)(2.82292,1.4059) -\put(2.86001,1.46481){\makebox(0,0)[b]{\fboxrule0.1pt% -\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \texttt{eps}}}}}} -\put(2.88,1.40625){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\path(2.88,1.40625)(3.52,1.40625) -\allinethickness{0.0055348in}% -\path(3.50867,1.40419)(3.51287,1.40755) -\path(3.49734,1.40213)(3.50573,1.40884) -\path(3.48601,1.40007)(3.4986,1.41014) -\path(3.47467,1.39801)(3.49146,1.41144) -\path(3.46334,1.39595)(3.48433,1.41274) -\path(3.46292,1.40262)(3.47719,1.41403) -\path(3.46292,1.40962)(3.47006,1.41533) -\path(3.51429,1.40521)(3.51235,1.40764) -\path(3.50858,1.40417)(3.5047,1.40903) -\path(3.50288,1.40314)(3.49705,1.41042) -\path(3.49717,1.4021)(3.4894,1.41181) -\path(3.49146,1.40106)(3.48175,1.41321) -\path(3.48575,1.40002)(3.47409,1.4146) -\path(3.48005,1.39899)(3.46644,1.41599) -\path(3.47434,1.39795)(3.46292,1.41222) -\path(3.46863,1.39691)(3.46292,1.40404) -\allinethickness{1.2pt}% -\path(3.46292,1.40625)(3.46292,1.39587)(3.52,1.40625) - (3.46292,1.41663)(3.46292,1.40625) -\put(3.57535,1.40625){\makebox(0,0)[l]{\fboxrule0.1pt% -\fcolorbox{rgb_ff0000}{cmy_000019}{\hbox{\color{rgb_0000ff}\texttt{\footnotesize \begin{minipage}{0.225in}\texttt{png mng gif}\end{minipage}}}}}} -\put(3.52,1.40625){\color{rgb_0000ff}$\allinethickness{0.0207555in}\circle{0.0207555}$}% -\put(1.92,0.46875){\makebox(0,0)[c]{\hbox{\color{rgb_009800}\texttt{\Large flix}}}} -\end{picture}% diff --git a/graphics/epix/doc/ePiX.xp b/graphics/epix/doc/ePiX.xp deleted file mode 100644 index c39e6b2ac0..0000000000 --- a/graphics/epix/doc/ePiX.xp +++ /dev/null @@ -1,156 +0,0 @@ -/* -*-ePiX-*- */ -#include "epix.h" -using namespace ePiX; - -void emph(const std::string& prog) -{ - if (prog == "all") - black(); - else - { - bbold(Red()); - label_color(Blue()); - label_mask(Yellow(0.1)); - label_border(Red(), "0.1pt"); - } -} - -void restore(const std::string& prog) -{ - if (prog == "all") - emph(prog); - - else - { - plain(); - black(0.5); - label_mask(Neutral()); - } -} - -void diagram(const std::string& prog) -{ - font_size("footnotesize"); - arrow_width(1.5); - restore(prog); - - if (prog != "laps") - emph(prog); - - arrow(P(0,1), P(1,1)); - - dot(P(0,1), P(0,4), "\\texttt{xp}, \\texttt{flx}", t); - dot(P(1,1), P(2,4), "\\texttt{eepic}", t); - restore(prog); - - if (prog != "epix") - emph(prog); - - spline(P(1,1), P(1.2,1), P(1.3,0.5), P(1.5,0.5)); - arrow(P(1.5,0.5), P(2,0.5)); - arrow(P(2,0.5), P(3,0.5)); - - dot(P(2,0.5), P(0,4), "\\texttt{dvi}", t); - dot(P(3,0.5), P(-2,2), "\\texttt{ps}", tl); - restore(prog); - - if(prog == "laps") - emph(prog); - - spline(P(1,0), P(1.2,0), P(1.3,0.5), P(1.5,0.5)); - - dot(P(1,0), P(2,-4), "\\texttt{tex}", b); - - if (prog == "elaps") // and laps - emph(prog); - - arrow(P(3,0.5), P(3.5,0), P(4,0)); - - dot(P(4,0), P(4,0), "\\texttt{pdf}", r); - restore(prog); - - if (prog == "elaps" || prog == "flix") - emph(prog); - - arrow(P(3,0.5), P(3.5,1), P(4,1)); - - dot(P(4,1), P(-2,4), "\\texttt{eps}", t); - restore(prog); - - if(prog == "flix") - emph(prog); - - arrow(P(4,1), P(5,1)); - - dot(P(5,1), P(4,0), - "\\begin{minipage}{0.225in}\\texttt{png mng gif}\\end{minipage}", r); - restore(prog); - - if (prog != "all") - { - font_size("Large"); - font_face("tt"); - label_color(Green(0.6)); - label(P(2.5,0), prog); - } - -} - -int main() -{ -#ifdef SHOW_ALL - picture(P(-0.5,0), P(5.75,10), "4 x 7.5 in"); -#else - picture(P(-0.5,2), P(5.75,10), "4 x 7.5 in"); -#endif - - begin(); - // border(); - - screen laps(P(0,0), P(5,1)); - activate(laps); - - diagram("laps"); - laps.v_scale(0.5, P(0,0.5)); - inset(laps, P(0,8), P(5,10)); - deactivate(laps); - - - screen epix(P(0,0), P(5,1)); - activate(epix); - - diagram("epix"); - epix.v_scale(0.5, P(0,0.5)); - inset(epix, P(0,6), P(5,8)); - deactivate(epix); - - - screen elaps(P(0,0), P(5,1)); - activate(elaps); - - diagram("elaps"); - elaps.v_scale(0.5, P(0,0.5)); - inset(elaps, P(0,4), P(5,6)); - deactivate(elaps); - - - screen flix(P(0,0), P(5,1)); - activate(flix); - - diagram("flix"); - flix.v_scale(0.5, P(0,0.5)); - inset(flix, P(0,2), P(5,4)); - deactivate(flix); - -#ifdef SHOW_ALL - screen all(P(0,0), P(5,1)); - activate(all); - - diagram("all"); - all.v_scale(0.5, P(0,0.5)); - inset(all, P(0,0), P(5,2)); - deactivate(all); -#endif - - end(); -} diff --git a/graphics/epix/doc/epix.info b/graphics/epix/doc/epix.info deleted file mode 100644 index 3b30c42c39..0000000000 --- a/graphics/epix/doc/epix.info +++ /dev/null @@ -1,4696 +0,0 @@ -This is epix.info, produced by makeinfo version 4.9 from epix.texi. - - This is the manual for ePiX, Version 1.2 Copyright (C) 2001, 2002, -2003, 2004, 2005, 2006, 2007 Andrew D. Hwang - - -File: epix.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir) - -ePiX manual -*********** - -This is the manual for ePiX, Version 1.2 Copyright (C) 2001, 2002, -2003, 2004, 2005, 2006, 2007 Andrew D. Hwang - -* Menu: - -* Introduction :: -* Getting Started :: -* Reference Manual :: -* Advanced Topics :: -* Software Freedom:: -* Acknowledgments:: -* Function Index:: -* Concept Index:: - - --- The Detailed Node Listing --- - -Introduction - -* Changes in Version 1.2:: -* Software Dependencies:: -* Installation:: - -Getting Started - -* Running `ePiX':: -* The Drawing Model:: -* Tutorial:: -* `C++' Basics:: -* Animation:: -* Layout Tricks:: - -Reference Manual - -* File Structure:: -* Picture Size and Aspect Ratio:: -* Color:: -* Scene Attributes:: -* Drawing Attributes:: -* Creating and Drawing Objects:: -* More About `C++':: -* Attribute Quick Reference:: - -Advanced Topics - -* Hidden Object Removal:: -* Extensions:: -* Programmer's Guide:: - - -File: epix.info, Node: Introduction, Next: Getting Started, Prev: Top, Up: Top - -1 Introduction -************** - -`ePiX', a collection of batch utilities, creates mathematically -accurate figures, plots, and animations containing `LaTeX' typography. -The input syntax is easy to learn, and the user interface resembles -that of `LaTeX' itself: You prepare a scene description in a text -editor, then "compile" the input file into a picture. `LaTeX'- and -web-compatible output types include a `LaTeX' picture-like environment -written with `PSTricks', `tikz', or `eepic' macros; vector images -(`eps', `ps', and `pdf'); and bitmapped images and movies (`png', -`mng', and `gif'). - - `ePiX''s strengths include: - - * Quality of output: `ePiX' creates accurate, publication-quality - figures whose appearance matches that of `LaTeX'. Typography may - be put in a figure as easily as in an ordinary `LaTeX' document. - - * Ease of use: Figure objects and their attributes are specified - by simple, descriptive commands. - - * Flexibility: Objects are described by attributes and Cartesian - location; as in `LaTeX', printed appearance is determined when the - figure is compiled. A well-designed figure can be altered - dramatically, yet precisely, with command-line switches or minor - changes to the input file. - - * Power and extendibility: `ePiX' inherits the power of `C++' as a - programming language; variables, data structures, loops, and - recursion can be used to draw complicated plots and figures with - just a few lines of input. External code can be incorporated in a - figure with a command line option or by using a Makefile. - - * Economy of storage and transmission: For a document containing - many figures, a compressed tar file of the `LaTeX' sources and - `ePiX' files is typically a few percent the size of the compressed - PostScript file. - - * License: `ePiX' is _free software_. You are granted the right to - use the program for whatever purpose, and to inspect, modify, - and re-distribute the source code, so long as you do not - restrict the rights of others to do the same. In short, the - license is similar to the terms under which theorems are - published. - - - `ePiX' facilitates logical, as opposed to visual, structuring of -mathematical figures, analogous to the relationship between `LaTeX' and -a word processor. A few stylistic defaults streamline the creation of -simple figures, but there are few internal restrictions on the contents -or appearance of a figure; aesthetic and practical decisions are left -to you. - - If you are a: - - * Potential user, you may wish to skip immediately to "Software - Dependencies" before investing additional time. - - * New user, proceed from here until you have enough understanding - to run the software, then experiment with the samples files while - reading Chapter *Note chapter:started::, , or return to the - manual as needed. - - * More advanced user, browse at will, probably starting with - Chapter *Note chapter:ref-man::, . - - - This manual is relatively conversational, and occasionally redundant, -especially between portions meant for readers at different levels of -familiarity. Throughout, you are assumed to be familiar with `LaTeX' -and basic linear algebra: the description of points, vectors, lines, -and planes in three-dimensional space. Other material, such as `C++' -syntax, is introduced as needed. - -* Menu: - -* Changes in Version 1.2:: -* Software Dependencies:: -* Installation:: - - -File: epix.info, Node: Changes in Version 1.2, Next: Software Dependencies, Prev: Introduction, Up: Introduction - -1.1 Changes in Version 1.2 -========================== - -`ePiX' 1.2.x has been written almost entirely from scratch. The -conceptual model is unchanged, but there are a few changes of syntax. -If you're new to `ePiX', please skip straight to Section *Note -section:software_deps::, . - - - -Except as noted below, `ePiX' 1.0 files will compile under Version 1.2. -Generally, global variables have been deprecated or removed, and should -be replaced by function calls in new files. The following changes are -either required, or else strongly recommended (and may become -mandatory). - - * (Mandatory) The global variable tix in a `flix' file must be - manipulated through the function tix(). - - * (Mandatory) The command `use_pstricks()' is obsolete. PSTricks - output is obtained systematically as an output format. - - * (Mandatory) Deprecated "aliases" no longer exist: `triple' (for - the `P' class), `D' (for `Deriv'), and `I' (for `Integral'). - Lowercase trig function names conflicted with the standard - namespace and have been removed. - - * (Mandatory) Geometric object commands (`circle', `plane', - `segment', and `sphere'), which formerly created class objects, - now perform drawing just as `ellipse', `line', `rect', etc., do. - The classes are available with capitalized names (`Circle', - etc.). - - * (Mandatory) Camera orientation is controlled with functions - named `tilt', `pan', and `roll'; each rotates the camera about - an axis through the viewpoint, not through the target. - - * (Recommended) The global size variables x_min, x_max, y_min, - y_max, x_size, and y_size should be replaced by the function - calls xmin(), etc. (No underscores.) - - * (Suggested) The camera may be accessed through the function - `cam()'. - - * (Suggested) The size and bounding box are given in one command, - such as `picture(P(-1,0), P(1,1), "4x3in")'. The old syntax will - be retained indefinitely. - - - - - * Output is cleanly separated from the internal representation. - Figures may be written with a choice of macros--`PSTricks', - `tikz', and `eepic' at present--and new output types are easily - coded so long as the format supports arbitrary line segments, - color, and the ability to place a `LaTeX' box at a specified - location. - - * Colors are a manipulable data type, available in RGB, CMY, CMYK, - and Gray models. `xcolor'-style operations, such as color model - conversion, blending, superposition, and inversion are provided. - - The camera has a filter which affects the colors of all scene - elements. Filters performing CMYK separation are provided. - - * Color filling is controlled with declarations, similarly to line - colors in `ePiX' 1.0. Arrows and markers of type spot, dot, ddot, - and circ are now colored like other markers. Parametric surfaces - may be color-shaded. - - If a figure contains many shaded elements, a color-capable output - format (e.g.\ `PSTricks' or `tikz') should be used for - efficiency. Filled regions are implemented as fine hatching in - `eepic'. - - * An `axis' class provides coordinate axes with labels in a - variety of styles: decimals or scientific notation of specified - precision, fractions, trig fractions, logarithmic labels in - arbitrary (integer) base, and user-supplied styles. - - * `ePiX' 1.2.x performs page layout. Sub-figures may be manipulated - flexibly. The sample files give several applications. - - * Non-member intersection operators for circles, planes, spheres, - and segments are provided. A "non-generic" intersection does not - throw an exception, but instead returns an undrawable "malformed" - object. - - - -File: epix.info, Node: Software Dependencies, Next: Installation, Prev: Changes in Version 1.2, Up: Introduction - -1.2 Software Dependencies -========================= - -If you run GNU/Linux, a BSD, or Solaris, you probably have (and can -surely install) all the external software needed to use `ePiX'. On Mac -OS X, you will need the Apple developer tools and an X server (XCode -and XDarwin on the Tiger disks), and the free `fink' package manager to -build a GNU environment. For Windows, you'll need to install Cygwin -and several packages. Detailed instructions are given below. - - "Under the hood", an input file is successively converted to a -`LaTeX' picture; `dvi'; PostScript, `pdf' or `eps'; and if desired, to -a bitmapped image or movie. Four shell scripts--`epix', `laps', -`elaps', and `flix'--automate the various file format conversions. - - `ePiX' consists of a `C++' library, header, and shell scripts, and -requires GNU `bash' and a compiler _for normal use_. For complete -functionality, you need `g++' (Version 3.2 or later), `bash', a text -editor (`ePiX' works particularly well with `emacs'), a `LaTeX' -distribution, `Ghostscript', `gv' (or your favorite PS/PDF previewer), -and `ImageMagick'. GNU `grep' and `sed' are good to have. You may need -additional "developer packages" (`binutils', `make') in order to build -`ePiX'. The more up to date your software is, the better your -experience is likely to be, but bleeding edge versions are not -necessary, or even always desirable. - - Aside from their reliance on specific programs, `ePiX''s shell -scripts are written using Unix-style pathnames. Thus, the most -straightforward way to use `ePiX' is to install a GNU environment. - - Jay Belanger's `emacs' mode allows you to write, compile, and view -`ePiX' figures without leaving `emacs'. If you use another editor, -you'll want to create template source files so you don't have to type -boilerplate code each time you write a new figure. - - - -Cygwin can be used to run `ePiX' under Windows. Download `setup.exe' -from `http://www.cygwin.com', then install the packages you need. The -following are recommended, and sufficient for the actions described in -this manual. - -(Archive) bzip2, tar -(Devel) binutils, coreutils, gcc, gcc-g++, make, sed -(Editors) emacs, emacs-X11, vim -(Graphics) ImageMagick, ghostscript-base, ghostscript-x11, gv -(Publishing) tetex (all) -(Shells) bash, bash-completion -(X11) X-start-menu-icons, X-startup-scripts, - XFree86-lib-compat, xorg-x11-fscl, xorg-x11-fsrv - - - -File: epix.info, Node: Installation, Prev: Software Dependencies, Up: Introduction - -1.3 Installation -================ - -`ePiX' is distributed over the World-Wide Web as source code. Packages -may be found at `http://mathcs.holycross.edu/~ahwang/epix/ePiX.html' -The latest stable release is also on the CTAN mirrors, in the -`graphics' directory. (Some users of Red Hat have reported file -permission problems when unpacking the CTAN tarballs. If you encounter -this difficulty, please try downloading the sources from the project -main page.) Unpack the compressed tar file with the appropriate -command: - - tar -zxvf epix-x.y.z.tar.gz - tar -jxvf epix-x.y.z.tar.bz2 - (`x.y.z' is the version number) or, if your `tar' doesn't do -decompression, - - gunzip -c epix-x.y.z.tar.gz | tar -xvf - - bzcat epix-x.y.z.tar.bz2 | tar -xvf - - `cd' to the source directory, `epix-x.y.z'. The `INSTALL' file -contains detailed installation instructions. If you're impatient, the -short of it is `./configure [--options]; make; make install'. Run -`./configure --help' for a list of options. - - By default, `ePiX' installs in subdirectories of `/usr/local'; if -you want to install elsewhere, supply `./configure' with the -appropriate `--prefix'. You may also want to consult `POST-INSTALL' for -information on setting your `PATH' variable so your shell can find -`ePiX'. The manual and sample files are in `/usr/local/share/doc/epix'. - - - -There are two mailing lists, one for user questions, one for -development discussion. Please visit -`http://savannah.nongnu.org/mail/?group=epix' to subscribe. - - -File: epix.info, Node: Getting Started, Next: Reference Manual, Prev: Introduction, Up: Top - -2 Getting Started -***************** - -This chapter describes the basics of creating figures in `ePiX' for -readers familiar with `LaTeX' but completely new to `C++'. No detailed -knowledge of `C++' is needed to use `ePiX', only a bit of grammar that -is easily absorbed by example. - - Section *Note section:running::, describes the commands (shell -scripts) comprising `ePiX', and explains how to set up a graphical -environment using standard *nix programs. Section *Note -section:overview::, briefly describes figure creation. Section *Note -section:tutorial::, presents a few files side-by-side with their -output, and should be read at a computer so you can run the exercises. - -* Menu: - -* Running `ePiX':: -* The Drawing Model:: -* Tutorial:: -* `C++' Basics:: -* Animation:: -* Layout Tricks:: - - -File: epix.info, Node: Running `ePiX', Next: The Drawing Model, Prev: Getting Started, Up: Getting Started - -2.1 Running `ePiX' -================== - -An "input file" is a human-written figure specification containing -`ePiX' commands. An "output file" is machine-created, and is included -directly into a `LaTeX' document with the appropriate packages. - - Conversion ("compiling" a figure) is accomplished with four shell -scripts, `laps', `epix', `elaps', and `flix'. Each script has a -preferred extension for its input files, and is invoked with a command -of the form - - <script> [options] <input file(s)> - Often, no options are necessary. `<script> --help' describes -`<script>''s options. - - By default, output file names are constructed by replacing the input -extension with the (preferred) output extension. For brevity, -extensions may be omitted. If the script has doubts about your intent, -it proceeds with default behavior and prints a warning message. - - The author is a great fan of <TAB> completion, under which a shell, -based on what has been typed so far, automatically fills in a command -when the <TAB> key is pressed. `ePiX' comes with code snippets that -complete intelligently when the first part of a command is one of the -shell scripts. For example, if command completion is active, typing -`epix' <TAB> prints only names of `epix' input files. To use this -feature, you must install Ian MacDonald's `bash completion' package. -The `INSTALL' and `POST_INSTALL' files contain details. - - - -`laps' performs `LaTeX' to PostScript/PDF conversion, and is -independent of the rest of `ePiX'. By default, `laps' invokes `LaTeX' -and `dvips'. The option `--pdf' creates a PDF file by post-processing -the PostScript with `ps2pdf'. Other `TeX'-family processors -(`pslatex', `pdftex', etc.) may be used instead of `LaTeX' by invoking -`laps' with an appropriate option. - - - -`epix' compiles an input file into a `LaTeX' picture. The input file -should have extension `xp' (for eXtended Picture). Jay Belanger's -`emacs' mode is Highly Recommended; the installation procedure can be -found in the `POST_INSTALL' file. When this mode is active, `emacs' -automatically inserts a preamble template when a new `xp' file is -created. In addition, you can peruse `ePiX''s info file, or format, -compile, and preview files, all from within `emacs'. - - Output files from the script `epix' have extension `eepic', after -Conrad Kwok's enhancements to the `LaTeX' picture environment. In -Version 1.2, however, an output file need not contain `eepic' macros at -all. - - An output file is `input' directly into a `LaTeX' document whose -preamble contains appropriate `usepackage' lines. Rotated text -requires the `rotating' package. - - - -`elaps' creates stand-alone vector images (`eps' or `pdf') from `epix' -input files or `eepic' figures, even those not produced with `epix'. -`elaps' automatically loads the `LaTeX' packages needed for features -described in this manual. Additional `LaTeX' packages and `dvips' -options may be specified on the command line. - - - -`flix' creates bitmapped images and movies, Section *Note -section:animation::, . Input files should have extension `flx', and -must contain a valid `epix' header as well as additional code. Jay -Belanger's `emacs' mode facilitates creation of `flix' files. - - -File: epix.info, Node: The Drawing Model, Next: Tutorial, Prev: Running `ePiX', Up: Getting Started - -2.2 The Drawing Model -===================== - -To draw a figure manually, you select a sheet of paper of appropriate -size and add paths, markers, and labels. These scene elements have -attributes (line color, line width, fill color, font size, etc.) -affecting their appearance. - - `ePiX''s drawing model behaves similarly. A `picture' command sets -the _canvas_ (or logical drawing area, a Cartesian rectangle) and the -true size of the final figure. A `begin' command initializes the -"virtual paper" for drawing. Subsequent _drawing commands_ add objects -to the scene: lines, curves, function plots, labels, and the like. The -printed appearance of scene elements is determined by the current -"attribute state" and controlled by _style declaration_ which remain in -effect until superseded. Finally, an `end' command closes the figure and -prints it to the output file. - - In this manual, command descriptions follow a few conventions. -Optional arguments are enclosed in square brackets. A `len' argument is -either a number (representing a length in `pt') or a double-quoted -string containing a number and a two-letter `LaTeX' length unit, such -as `"1.5pt"' or `"6cm"'. A `color' argument is a named primary -(`Red()', `Cyan()', `White()', etc.), or a `Color' specified by -densities (`RGB(r,g,b)', `CMY(c,m,y)', etc.) - - * Fill color: `fill(color)', `nofill()'. - - * Line color and width: `plain([color])', `bold([color])'. - - * Text size: `font_size([size])', returns to `normalsize' if no - argument is given. - - - \noindent A complete list of style commands is found in Section -*Note section:quickref::, , starting on page *Note section:quickref::. - - To handle three-dimensional scenes, a `camera' performs point -projection from a selected spatial location to the canvas. As a user, -you'll need to control relatively few of the `camera''s parameters. -Keep in mind, however, that elements are added to a scene in the same -order their commands appear in the output file, and that later elements -generally cover earlier ones. Some three-dimensional scenes require -manual ordering of the input file; such ordering is dependent on the -`camera''s location. - - By default, `ePiX' draws thin, solid, black lines, performs no -filling of regions, prints text in a 12 pt Roman font, and looks down -the z axis from a large distance, giving orthogonal projection on the -(x,y) plane. When the `camera' is moved, the z axis points vertically -up on the page. - - -File: epix.info, Node: Tutorial, Next: `C++' Basics, Prev: The Drawing Model, Up: Getting Started - -2.3 Tutorial -============ - -This section presents sample input files side-by-side with their output -so you can compare what you write with what you'll see on the screen or -page. `ePiX' provides standard drawing capabilities, but like all -software has its own idioms and personality. The basic syntax, which -comes from `C'/`C++', should be mostly self-explanatory. One-line -comments begin with the string "//". - - To use the sample files interactively, you'll need working software: -`bash', `emacs', `ePiX', `g++', `gv', and a running X server. To -complete your "GUI", start `gv' and select "Watch file" from the "State" -menu. The loaded file will update automatically when it changes. - - Create a "scratch" directory, `cd' into it, and run the command - - tar -zxf /usr/local/share/doc/epix/sample_src.tar.gz - (Change the path as appropriate for your installation.) This unpacks -copies of the sample files into your scratch directory, including all -the files mentioned in this manual. The `README' file serves as a table -of contents. - - Open a sample file in `emacs', compile it from the drop-down menu -(or with the keyboard command), then open the `EPS' file in `gv'. Now -you're ready to follow the tutorial interactively. A few suggested -exercises are included with each file. Naturally, as you study more -files, you'll be able to make more interesting changes on your own. - - - -The first sample, `hello.xp', contains code needed to specify the -figure's size, followed by the classic greeting. The `border' command -draws a box around the figure in the specified color and width, and -serves here merely to delimit the output from the surrounding page. - -/* -*-ePiX-*- */ -#include "epix.h" // These lines are analogous -using namespace ePiX; // to a usepackage command. - -int main() -{ - picture(P(-1,-1), P(1,1), "2 x 1in"); // corners, true size - - begin(); // ---- Figure body starts here ---- - - border(Black(), "1pt"); // color, line width - - font_size("Huge"); // May be any font size, e.g. "scriptsize" - label(P(0,0), "Hello, world!"); - - end(); // ---- End figure; write output file ---- -} - - -[Image] - - * Change the color and width of the border. (`RGB(r,g,b);' creates - an RGB color, CMY colors are analogous. Named primaries are - available. The densities should be between 0 and 1 for - "expected" behavior.) - - * Add `backing(Cyan());' after the `border' command. - - * Put the command `crop_ellipse();' before the `border' command. - Permute the `crop_ellipse' command with the `border' and - `backing' lines, and note how the attribute (`crop') affects - objects (`border', `backing'). - - - - -Our next file uses simple objects to draw a 2-D house-and-sun scene. - - -int main() -{ - picture(P(0,0), P(5,2), "3.75 x 1.5in"); - - begin(); - - triangle(P(0.9, 1), P(3.1, 1), P(2, 1.5)); // vertices - circle(P(4,1.5), 0.25); // center and radius - - rect(P(1,0), P(3,1)); // opposite corners - - fill(Black(0.1)); // light gray - rect(P(2.3,0), P(2.7,0.8)); // the door - nofill(); - - bold(); // draw thicker lines - grid(P(1.4, 0.2), P(2, 0.6), 2, 2); // corners, number of squares - - line(P(xmin(), 0), P(xmax(), 0)); // endpoints - - end(); -} - - -[Image] - - * Add declarations such as `bold(RGB(1,0.9,0.5))' or - `fill(Yellow())' to color the scene. (Color and filling are - orthogonal attributes.) - - \noindent The sample file `house.flx' uses loops to draw gradient -fills of the lawn, sky, and sun, and animates a sunset. - - - -Plotted functions must be defined in the "preamble", before `main'. -"High-level" elements--coordinate axes and grids, axis labels, and -graphs--are drawn with mnemonically-named commands. - -// double = double-precision floating point -double f(double x) { return 0.75*Sin(x) - 0.25*Sin(2*x); } - -int main() -{ - picture(P(-2,-1), P(2,1), "5 x 1in"); // [-2,2] x [-1,1] - - begin(); - revolutions(); // set angle units, [0,1] = one turn - - h_axis(16); // axes w/default endpts - v_axis(4); - h_axis_labels(4, P(0,-4), b); // shift down 4pt, align below - - plain(Red()); - plot(f, xmin(), xmax(), 120); // use 120 intervals - - end(); -} - - -[Image] - - * Define and plot some different functions; adjust the bounding - box as necessary. (Use repeated multiplication for polynomials. - The `polarplot' command graphs r=f(\theta).) - - * Change the arguments to `h_axis_labels'. The first specifies the - number of intervals to label; the second gives the label offset - in `pt'. The last puts each label below (`b') its Cartesian - location. - - - - -Functions of two or three variables are defined just like functions of -one variable, but for plotting the return type must be a point (`P'), -not a real number (`double'). The `domain' class specifies the set of -inputs to plot. - - -P f(double r, double th) -{ - return P(r*Cos(th), r*Sin(th), pow(r, 3)*Cos(3*th)); -} - -int main() -{ - picture(P(-1,-1), P(1, 1), "2 x 1in"); - begin(); - pst_format(); // use PSTricks macros for output - - // corners ([0,1] x [0,2\pi]) and fineness - // (8x40 rectangles, plotted at 16x120 resolution) - domain R(P(0,0), P(1, 2*M_PI), mesh(8,40), mesh(16,120)); - - camera.at(P(3,1,2)); // set the viewpoint - arrow(P(0,0,0), P(1.25,0,0)); // coordinate axes - arrow(P(0,0,0), P(0,1.25,0)); - - plain(Blue(1.2)); // line color and width - fill(Yellow()); // shading color - surface(f, R); - - end(); -} - - -[Image] - - - -A function can be defined by an arbitrary algorithm, and a `domain' may -be used to plot a family of functions for several values of one -variable. - - -P sin_n(double x, double n) // Taylor polynomial of sin x -{ - const int N((int) floor(n)); // convert n to an index bound - const double sqx(-pow(x, 2)); // -x^2 - double val(x), summand(x); - - for (int i=1; i <= 2*N+1; i += 2) - { - summand *= (sqx/((i+1)*(i+2))); // (-1)^i x^{2i+1}/(2i+1)! - val += summand; - } - - return P(x, val); // return (x, y) -} - -int main() -{ - picture(P(0, -1), P(6*M_PI, 1), "5 x 1in"); - - begin(); - - set_crop(); - bold(Green()); - plot(Sin, 0, xmax(), 120); - - domain R(P(0,1), P(6*M_PI, 41), mesh(60, 40), mesh(120, 40)); - for (int i=3; 0 <= i; --i) // print in descending degree - { - bold(RGB(0.25*i, 0, 1-0.25*i)); // degree-dependent color - plot(sin_n, R.slice2(5*i+1)); // plot for n = 5i+1 - } - end(); -} - - -[Image] - - - -Page layout can be composed from sub-pages with `screen' objects. In -the loop body below, objects are added to the "active" `screen', then -`inset' into the "canvas", the screen representing the entire figure. - - -P f(double u, double v) -{ - return P((u-v)*(u+v), 2*u*v, u); -} - -int main() -{ - picture(P(0,0), P(2,3), "5x7.5in"); // overall size - - begin(); - - domain R(P(-1,-1), P(1,1), mesh(12,12), mesh(24,24)); - - for (int i=0; i<2; ++i) - for (int j=0; j<3; ++j) - { - screen my(P(-3,-3), P(3,3)); - activate(my); - border(Red(0.6), "1pt"); - // frame-dependent viewpoint - camera.at(sph(10, (2*j+i+1)*M_PI/8, M_PI/6)); - - plot(f, R); - arrow(P(0,0,0), 2*E_1); - arrow(P(0,0,0), 2*E_2); - // SW corner at (i, 2-j), padded by 0.05 on all sides - inset(P(i+0.05,2.05-j), P(i+0.95,2.95-j)); - } - - end(); -} - - -[Image] - - -File: epix.info, Node: `C++' Basics, Next: Animation, Prev: Tutorial, Up: Getting Started - -2.4 `C++' Basics -================ - -An `ePiX' source file is a `C++' program. If you've successfully -modified and compiled the sample files, you know enough `C++' to use -`ePiX'. In the author's experience, `C' grammar suffices for most -applications. An excellent introduction to definitions of functions -and variables, control statements, and overall program structure is -Kernighan and Ritchie's _The `C' Programming Language_, second edition -`KnR'. - - - -Jay Belanger's `emacs' mode for `ePiX' inserts a file template when an -empty buffer is opened with the extension `xp'. This section explains -the purposes served by the template. A few additional remarks may help -you avoid basic syntax pitfalls. - - A `C++' file consists of "statements", analogous to ordinary -sentences. Common types include _declarations_ (which "register" a -function, variable, or type name with the compiler), _definitions_ -(which assign meaning to declared names), and _function calls_ (which -cause a named function to execute). Most statements in an `ePiX' input -file are function calls ("commands"). Plain declarations are -relatively rare in user files, since a definition serves to declare any -new names that it contains. - - Every statement ends with a semicolon, and conventionally a file -contains at most one statement per line. The compiler ignores nearly -all whitespace (spaces, tabs, and newlines), which should be used -freely to make files easy to read. Other punctuation (periods, commas, -(semi)colons, parentheses, braces, and quotes) dictates file parsing, -and must adhere stringently to grammar. - - An `ePiX' file always begins with the lines - -#include "epix.h" // N.B. pre-processor directive, no semicolon -using namespace ePiX; - The first line is analogous to a `LaTeX' `usepackage' command: It -loads the contents of the "header" file `epix.h', importing the names -of commands provided by `ePiX'. To avoid name conflicts, `ePiX''s -commands are enclosed in a "namespace". For example, the `label' -command is actually known to the compiler as `ePiX::label'. The second -line above tells the compiler to apply the prefix tacitly. - - - -Definitions of variables and functions play the same role in a figure -that macro definitions play in a `LaTeX' document: gathering and -organizing information on which the figure depends. A variable is -defined by supplying its type, name, and initial value. By far the most -common data types in `ePiX' are `double' (double-precision floating -point number), `P', and `int'. The name of a variable may consist -(only) of letters (including the underscore character) and digits, and -must begin with a letter: - -my_var, var2, MY_var, aLongVariableName; // valid -my-var, 2var, \v@@riable, $x, ${MY_VARIABLE}; // not valid - Variable names are case-sensitive, and numerous (non-universal) -conventions govern the significance of capitalization. Generally, make -names descriptive but not unwieldy, and avoid language keywords (such -as `const', `true', `double', `class', or `public') and names that -begin with an underscore. - - A function accepts "arguments" and "returns a value". To define a -function in `C++', you must specify the return type, the name of the -function, the types of the arguments, and the algorithm by which the -value is computed from the inputs. The code block - -double f(double x) -{ - return sqrt(1-x*x); -} - specifies the `double'-valued function f of one `double' variable -defined by the formula f(x)=\sqrt1-x^2. - - - -`C++' has two types of comments. `C'-style comments, which may span -several lines, are delimited by the strings `/*' and `*/'. One-line -comments, analogous to the `LaTeX' `\%', are begun with `//'. A -one-line comment may appear within a multi-line comment, but a -`C'-style comment may not; the compiler will mistake the first `*/' it -encounters as the end of the current multi-line comment. - - - -All the "action" in a `C++' program occurs inside the special function -`main'. Running a compiled `C++' program is viewed by the operating -system as calling the program's `main' function. The return value (an -`int') is the program's exit status. The contents of the output file -start with `begin()' and terminate with `end()'. Intervening -statements constitute the _body_ of the file. - - In `C++', a function may not be defined inside another function. -Thus, variables may be defined inside `main', but functions cannot be. - - - -In `C++', a `string' is a sequence of characters. Most `string's in -`ePiX' input files are _literals_, double-quoted `string's whose value -is read from the input. In a string literal, backslash is an escape -character; a single backslash is produced by a double backslash in the -input file. Certain letters have special meanings when -backslash-escaped, including "\n" (newline) and "\t" (<TAB>). Unlike -`LaTeX', `C++' does not require a space to separate an escape sequence -from following text; the string "\\textwidth" literally represents a -`LaTeX' command, while "\textwidth" is read "`TABextwidth'" by the -compiler. - - Though not commonly needed, raw text can be printed to the output -file. The functions `write', `pre_write', and `post_write' accept -`string' arguments. `write' prints its argument where the call appears -in the input file. The other functions print their arguments before or -after the completed picture, respectively. These commands must be in -the file body. As an application, a complete `LaTeX' `figure' -environment (with caption and label) can be produced by an `ePiX' file, -Figure *Note fig:captioned::, . - - -#include "epix.h" -using namespace ePiX; - -int main() -{ - picture(P(-1,-1), P(1,1), "10cm x 3in); - begin(); - pre_write("\@float Figure[hbt]"); // comes before the picture - - post_write("\@caption{A \@code{LaTeX}\ figure.}"); // and after - post_write("\@end float"); - - < ... other ePiX commands ... > - write("%% A comment near the end, but inside the picture."); - end(); -} // End of main() - -Figure: Generating a self-contained figure in `ePiX'. - - - -An algorithm's behavior usually depends on internal state. A -_conditional statement_ causes blocks of code to be executed according -to criteria. A _loop_ repeatedly executes a code block, usually -changing the values of variables in a predictable way, so that the loop -exits after finitely many traversals. - - -File: epix.info, Node: Animation, Next: Layout Tricks, Prev: `C++' Basics, Up: Getting Started - -2.5 Animation -============= - -`ePiX' is well-suited to the creation of mathematically accurate -animations: If a figure depends suitably upon a "time" parameter, then -a loop can be used to draw the entire figure for multiple time values, -yielding successive "snapshots" of the figure as time progresses. The -shell script `flix' automates the process of compiling a suitable input -file into a collection of `png's and assembling these frames into a -`mng' or `gif' animation. ImageMagick is the image-handling engine. - - A `flix' file is an `epix' file with two restrictions: - * The `double' variable `tix()' is used as "clock". - - * `main' accepts two command line arguments and sets `tix()' - accordingly. - Jay Belanger's `emacs' mode recognizes the file extension `.flx' and -inserts template code if an empty buffer is opened. Creation of `flix' -files is as easy as creation of `epix' files. The `samples' directory -contains a handful of `flix' files that may be consulted for ideas. - - By default, `flix' creates movies with 24 frames, in which `tix()' -runs from 0 to 1, and animates at 0.08 sec/frame. These and other -parameters can be changed with command-line options. - - A "typical" `.flx' file may take 30 seconds to a few minutes to -compile, depending on the number of frames and the complexity of each -frame. To facilitate debugging, `elaps' can be run on a `flix' file. -`elaps' runs in a fraction of the time, and if `elaps' can't produce a -viewable image, `flix' will surely fail. While running, `flix' prints -a progress bar counting the number of `eps' files that have been -created. There will be a delay of a few seconds (or more) after the -last frame is produced, during which ImageMagick's `convert' utility -assembles the movie. - - -File: epix.info, Node: Layout Tricks, Prev: Animation, Up: Getting Started - -2.6 Layout Tricks -================= - - - -Stereograms are created by drawing a single scene twice from slightly -different points of view. To create a stereogram with `ePiX', write a -"scene" function containing the necessary drawing commands, then set -the camera appropriately and call the scene function twice, once for -each frame. - - - -The sample files `lorenz.xp' and `twisted_cubic.xp' use page layout to -draw crossed-eyes stereograms. For each frame, create and activate a -`screen', set the camera, and call the scene function. The frames are -inset side by side in the final picture. For a crossed-eyes stereogram, -the frame from the "rightmost" camera position is placed on the left. - - - -The sample files `cube.flx' and `mirrorball.flx' contain animated -red-cyan stereograms, suitable for viewing with 3-D glasses. The -technique works best with black-and-white line drawings, but the basic -approach is the same as for crossed-eyes stereograms: Create a scene -function and call it twice, setting the camera appropriately. Layout is -unnecessary since the frames are superposed. Pen colors should be -close to red and cyan, but "optimal" choices depend on one's eyes and -3-D glasses. - - - -Either form of stereogram can be animated in a `.flx' file, but keeping -one's eyes properly crossed requires practice while most people can -instantly see depth with 3-D glasses. As always when using `flix', -debug the scene with `elaps' before compiling a movie. If a -stereoscopic effect is difficult to see in a still image, it will be -even harder to perceive in a movie. - - - -`ePiX' can place external images into a figure, similarly to Rolf -Niepraschk's `overpic' package. You provide the Cartesian center point, -the file name, and optionally the true height and/or width of the image: - - label(P(a,b), "\\includegraphics[width=w,height=h]{file}"); - This effect requires the `graphicx' package. When compiling a -stand-alone graphic containing an external image, you must specify the -`graphicx' package on the command line: `elaps -p graphicx <file>' - - -File: epix.info, Node: Reference Manual, Next: Advanced Topics, Prev: Getting Started, Up: Top - -3 Reference Manual -****************** - -This chapter details `ePiX''s capabilities, discussing attributes and -data types, and listing available commands in the form - - label(P posn, [P offset], string text, [align]); - circle(P ctr, double rad=1, normal=P(0,0,1)); - As in Chapter *Note chapter:started::, , function arguments are given -by type (`P', `double', `string', etc.)\ and name, or by name alone if -the type is clear. Optional arguments are enclosed in square brackets. -A few argument types, such as `[align]' above, admit only a small -number of values; these cases are explained when the corresponding -command is first introduced. - - A name followed by an equals sign and a value indicates a default -argument; if omitted in an input file, the compiler substitutes the -default value. Only trailing arguments may be specified this way. For -example, if the `rad' argument of the `circle' command is omitted, the -`normal' argument _must_ be omitted as well. - - In an input file, only an argument's value is given, not the type: - - label(P(0,0), P(0,-4), "Hello world", b); - circle(P(0,-0.25), sqrt(2)); // use default normal - - Generally, `len' signifies either a number (representing a length in -`pt') or a double-quoted string containing a number and a two-letter -`LaTeX' length unit, such as `"1.5pt"' or `"6cm"'. `color' represents a -`Color' object constructed from a named primary (`Blue()', -`Magenta(0.7)', etc.), a color specification (`RGB(r,g,b)', -`CMY(c,m,y)', etc.), or an operator applied to an existing `Color'. - -* Menu: - -* File Structure:: -* Picture Size and Aspect Ratio:: -* Color:: -* Scene Attributes:: -* Drawing Attributes:: -* Creating and Drawing Objects:: -* More About `C++':: -* Attribute Quick Reference:: - - -File: epix.info, Node: File Structure, Next: Picture Size and Aspect Ratio, Prev: Reference Manual, Up: Reference Manual - -3.1 File Structure -================== - -An `ePiX' input file constitutes a short `C++' program. When this -program is compiled and run by one of the shell scripts, it creates a -figure file suitable for inclusion in `LaTeX'. - - Like a `LaTeX' document, an `ePiX' file contains a _preamble_, which -sets up a drawing environment, and a _body_, which contains actual -figure-generating commands. The minimal file has the form - -#include "epix.h" // N.B. no semicolon -using namespace ePiX; - -int main() { - picture(P(a1,b1), P(a2,b2), "n1 [unit1] x n2 unit2"); - begin(); // end of preamble, start of body - end(); // end of body -} - `ePiX' commands are of four general types: drawing, attribute setting, -definitions (of data and functions), and operations on existing -objects. Except as noted below, drawing and attribute commands must -appear in the body, between `begin()' and `end()'. Function definitions -must come in the preamble, before `main()'. Data definitions may appear -in the preamble or body. - - - -The `end()' command writes the output file to `stdout', using `eepic' -macros by default. The shell scripts redirect `stdout' to an -appropriate disk file. - - The attribute-setting command `pst_format()' causes the output file -to be written using `PSTricks' macros when `end' is called. Similarly, -`tikz_format()' causes the file to be written using `tikz' macros, and -`eepic_format()' causes the file to be written using `eepic' macros. -These commands may appear anywhere in the figure body. There is no -reason for a file to contain more than one such command. - - The output format may be selected on the command line, overriding any -explicit request in the input file. Supplying `epix', `elaps', or -`flix' with one of the options `--pst', `--tikz', or `--eepic' is -tantamount to issuing a `pst_format()' (etc.)\ command just before the -end of the file. These options are listed in decreasing precedence. If -more than one is given, the "strongest" applies, regardless of the -command line order. - - A figure may be written directly to a specified disk file, in a -format unaffected by the command line flags above. The command - - print_eepic("file.tex"); - writes the figure to the named file using `eepic' macros. Analogous -commands exist for the formats `pst' and `tikz'. These commands perform -an immediate action. Consequently, the command's location in the input -file is significant, and multiple commands may appear in a single file, -so long as distinct file name arguments are provided. Applications -include writing the same figure in multiple formats, or creating -successive "snapshots" of a lengthy computation. - - -File: epix.info, Node: Picture Size and Aspect Ratio, Next: Color, Prev: File Structure, Up: Reference Manual - -3.2 Picture Size and Aspect Ratio -================================= - -The `picture' command specifies a figure's logical and true sizes. In -the "minimal file" snippet above, the _canvas_ is the Cartesian -rectangle [a_1,a_2]\times[b_1,b_2] whose corners are given. Either pair -of opposite corners is acceptable, but confusion is less likely when -the SW and NE corners are given, in this order. - - The true (printed) width and height are read from `picture''s third -argument, a "size `string'" such as "4cm x 1in", containing a number -and optional `LaTeX' length unit, an `x', another number, and a -mandatory length unit. Spaces may be used for legibility. The -mandatory length unit becomes the `LaTeX' `unitlength'. The argument -"4cm x 1in" creates a picture 4 cm wide and 1 in high, but internally -converts 4 cm to inches. Recognized length units are `pt' (points, the -default), `cm' (centimeters), `in' (inches), `mm' (millimeters), `pc' -(picas), and `bp' (big points). (`1in = 2.54cm = 72bp = 72.27pt', `1pc -= 12pt'.) - - The logical and true sizes may be defined separately with the -commands - - bounding_box(P(a1,b1), P(a2,b2)); - picture(n1, n2); - unitlength(len); // len a length string, not a double - One way or another, the logical and true dimensions _must_ have -positive values when the `begin()' command is issued. - - `LaTeX' treats the contents of a picture environment as a single box, -aligned by default on its lower left corner. An `offset' command -accepts two `double' arguments or a size `string' and shifts the page -location accordingly. The command `offset("0.25 x -0.5cm")' shifts the -picture right 0.25 cm and down 0.5 cm. If the `unitlength' is 1 cm, -the command `offset(0.25, -0.5)' has the same effect. - - A non-zero `offset' causes a picture's contents to appear in a -location where `LaTeX' does not expect them. This can be useful in a -`LaTeX' document, but should be avoided when compiling a stand-alone -image, since `dvips' may crop according to rules of its own. - - The canvas's corners are `(xmin(),ymin())' and `(xmax(),ymax())', -while its width and height are `xsize()' and `ysize()'. The canvas is a -virtual, advisory data structure; its dimensions are not directly -related to the figure's printed size, and picture elements may lie -outside the canvas. Affine scaling maps the canvas to the page when the -output file is written. -[Image] - - The figure's aspect ratio is controlled by sizing the canvas. The -aspect ratio is "true" if the canvas and page rectangles are -geometrically similar, e.g., if both boxes are 1.5 times as wide as -they are tall. - - -File: epix.info, Node: Color, Next: Scene Attributes, Prev: Picture Size and Aspect Ratio, Up: Reference Manual - -3.3 Color -========= - -`ePiX' provides a `Color' data type. Four models are implemented: -`RGB', `CMY', `CMYK', and `Gray'. A `Color' holds primary color -"channels", each carrying an intensity between 0 (no color) and 1 (full -saturation). "No color" means black in `RGB' and `Gray', white in -`CMY(K)'. `RGB', `CMY', and `CMYK' colors are written to the output -file as commands in the corresponding model. `Gray' shades are written -in `RGB'. - - Operations on red-green-blue colors are described below. -Functionally, colors are converted to `RGB', operated upon, then -converted back to the original model. Conversions are as described in -Uwe Kern's `xcolor' manual `xcolor'. - - - -Each color model has a "constructor" creating a color of specified -densities. The `RGB' and `CMY' models have named "primary" -constructors; the density argument is optional and defaults to 1. - - // red-green-blue colors - RGB(double r=0, double g=0, double b=0); - Red(d=1); Green(d=1); Blue(d=1); - White(d=1); Black(d=1); - - - // cyan-magenta-yellow colors - CMY(double c=0, double m=0, double y=0); - Cyan(d=1); Magenta(d=1); Yellow(d=1); - CMY_White(d=1); CMY_Black(d=1); - - // gray - Gray(double d=0); // equivalent to RGB(d, d, d) - Each `CMY' constructor has a corresponding `CMYK' function, e.g.\ -`CyanK()' or `CMYK_White()'. - - Though color densities lie between 0 and 1, `ePiX''s primary color -constructors take arguments mod 4, viewed as elements of [-2,2]. -Consider `Red(d)', "red with density d". For integer values of d, the -constructor has the following meanings: `Red(0)' is black, `Red(1)' is -red, `Red(2)'=`Red(-2)' is white, and `Red(-1)' is anti-red, or cyan. -For non-integer d, the constructor interpolates between the bracketing -integer values, Figure *Note fig:densities::, . Other primary -constructors work analogously. - - -[Image] - -Figure[hbt] - - Let \delta:[-2,2]\to[0,1] be the piecewise-linear function that -converts real numbers to primary color densities, \clip:R\to[0,1] the -clipping function. The non-primary constructor `RGB(r, g, b)' computes -the density of the red channel as -\clip\bigl(\delta(r)+\delta(-g)+\delta(-b)\bigr); the green and blue -channel densities are computed similarly. Every color can be created -with arguments between 0 and 1, but the constructor accepts arbitrary -real arguments and returns colors varying "continuously and -periodically". - - Colors possess an "alpha-channel" for transparency. Except as -supported by the output format, this feature is a stub. - - - -Colors can be scaled, inverted, blended, superposed, and filtered. In -the code below, `tint' is a `Color'. The effect of each operation is -described in the `rgb' model; the visual result is the same in all -models. - - tint *= double c; // multiply channels by c, rebuild - tint.invert(); // (r, g, b) -> (1-r, 1-g, 1-b) - tint.blend(Color col, double t); // (1-t)*tint + t*col - tint.superpose(col); // add channels, then clip to [0,1] - tint.alpha(double d); // set alpha channel to clip(d) - - tint.filter(col); // return min density in each channel - Except for `filter', these operators modify their object. `filter' -simulates the effect of viewing `col' through a transparent sheet of -`tint', and returns a new `Color' object having the same model as -`tint' without modifying `tint' itself. - - -File: epix.info, Node: Scene Attributes, Next: Drawing Attributes, Prev: Color, Up: Reference Manual - -3.4 Scene Attributes -==================== - -Objects in a scene sit in 3-dimensional space. A _camera_ maps objects -to the _active screen_. The active `screen' may, in turn crop its -contents. Each drawing command creates an object, "photographs" it, and -adds the image to the active `screen'. This section describes the -`Camera' and `screen' classes and a few associated concepts. - - - -By default, angles are measured in `radian's. Two other angular modes -are available: `degrees' and `revolutions'. The angular mode is set -with a named command, `radians()', `degrees()', or `revolutions()'. The -current angular mode affects all trigonometric functions and operations. - - - -Three-dimensional scenes are drawn on flat paper by applying a -mathematical transformation. By default, `ePiX' uses _point -projection_, the technique used by art students when they trace on a -window with grease pencil, Figure *Note fig:camera::, . - - -[Image] - -Figure[hbt] - - `ePiX' depicts a Cartesian world by projecting mathematically to a -screen plane, then affinely scaling to a printed page. The camera, -which maps the world to the screen, consists of a _body_ (data that -determines the position and orientation of the camera), a _lens_ (the -actual mapping to the screen plane), and a _filter_ (a color through -which the scene is viewed). - - - -The camera's spatial orientation is described by a triple of mutually -perpendicular unit vectors. In memory of happy days at the beach, -these vectors are called _sea_, _sky_, and _eye_. The screen plane is -parallel to the sea-sky plane; the sea vector points horizontally to -the right, sky points vertically upward. The eye is their cross -product, which points directly at the viewer. - - The sea-sky-eye basis is located at the _viewpoint_, the camera's -spatial location. The _target_, the origin of the screen plane, lies on -the line through the viewpoint in the direction opposite the eye -vector. The distance from the viewpoint to the target is the _range_. -The _camera sphere_ is centered at the viewpoint and passes through the -target. The orientation, viewpoint, target, and range completely (and -redundantly) determine the camera's geometric situation in the world. - - - -A _lens_ maps the world to the screen. `ePiX' comes with four lenses: -_shadow_ (the default), _orthogonal_, _fisheye_, and _bubble_. Each -lens simulates the appearance of world objects as seen by an observer -at the viewpoint. The shadow lens is point projection from the -viewpoint to the screen plane. The orthogonal lens projects from -infinite distance. Each of the other lenses performs radial projection -to the camera sphere, then maps the sphere to the screen plane; the -fisheye lens does orthogonal projection (so the entire image lies -inside the disk centered at the target whose radius is the range) while -the bubble lens does stereographic projection from the target's -antipode. - - An input file normally uses a single camera, so a global object named -`camera' is defined automatically. At the start of a figure, the -`camera' looks down on the (x_1,x_2)-plane from a distant point on the -x_3-axis. The resulting view, essentially projection along the axis, is -suitable for 2-dimensional figures. - - The `camera' is manipulated similarly to a real camera: - - camera.at(P posn); // set viewpoint to posn - camera.look_at(P targ); // set target to targ - camera.range(double dist); // fix target, move viewpoint - camera.focus(double dist); // fix viewpoint, move target - camera.tilt(double angle); // rotate about the sea axis - camera.pan(double angle); // rotate about the sky axis - camera.roll(double angle); // rotate about the eye axis - camera.clip_range(dist); // cull scenery closer than dist - Explicitly setting the viewpoint or target makes the sky vector -parallel to the projection of the x_3 axis when possible; otherwise the -x_2-axis is used. Setting the range or focus moves the `camera' -parallel along the eye line. Each command re-sizes the image; note that -increasing the focus _enlarges_ the image. The three rotation -operations fix the viewpoint, but only roll fixes the target. - - - -The `camera' has a _filter_ through which all scene `Color's pass. For -uniformity, the filter should only be set at the start of the file -body, before any visible elements have been placed in the scene. The -filter has two primary uses--model conversion and color separation--but -can also be used for special effects. - - There is a `Neutral' color, for which filtering has no effect at -all. The `camera''s default filter is `Neutral'. In addition, each -color model has a _neutral_ representative, `RGB_Neutral', etc. Passing -`Color's through a neutral filter preserves their appearance but -converts them to the neutral `Color''s model. - - Filtering can be used to "split" a `Color' into primary -constituents. For `RGB' channels, the primaries themselves are suitable -filters. For `CMYK' channels, there are special _process_ filters, -named C_Process, etc. - - camera.filter(CMY_Neutral()); // convert all colors to CMY - camera.filter(Gray_Neutral()); // black and white photography - camera.filter(Green()); // the green channel - camera.filter(M_Process()); // the magenta channel - camera.filter(Red(1.4)); // la vie en rose? - - - - -Two operations handle elements lying far from the target. _Cropping_ -culls elements based on their screen location, and is described later. -_Clipping_ removes objects whose spatial location lies outside the -"clip region". - - Initially, the clip region is a very large box centered at the -origin. Commands are provided to resize this box, keeping the faces -parallel to coordinate planes. - - clip_box(P pt1, P pt2); // opposite corners - clip_box(P pt); // opposite corners pt and -pt - clip_to (P pt); // pt and P(0,0,0) - clip_box(); // very large box - Additional "clippers" may be added manually. Individual clipping -planes are specified by a point and inward-pointing normal vector. -Parallel planes cutting a "slice" or "slab" are described by a -location, direction, and a distance. The location lies halfway between -the clipping planes, and the planes' normals point toward the location. - - clip_face(P loc, P perp); // perp points inward - clip_slice(loc, perp); // very close parallel planes - clip_slice(loc, perp, dist); // planes separated by dist - clip_restore(); // remove manually-added clip planes - Like `clip_restore', the `clip_box' and `clip_to' commands remove all -user-specified half spaces. - - - -By default, drawing occurs in the Cartesian coordinate system of the -`canvas'. However, insets and subfigures are most naturally composed in -"local" coordinates, then placed into their final location as a unit, a -process called _layout_. `ePiX' implements layout with the `screen' -class. - - - -A `screen' is a Cartesian plane containing a distinguished coordinate -rectangle, its _bounding box_. The `canvas' of a figure is a `screen', -as is the internal representation of the printed page. At any point of -a file body, some `screen' is _active_, or "open for drawing". A new -`screen' is created from a pair of opposite corners, but is not used -until explicitly activated. - - screen subfig(P(a1,b1), P(a2,b2)); // [a1, a2] x [b1, b2] - activate(subfig); // open subfig for drawing - // commands to draw in subfig - deactivate(subfig); // re-activate the previous screen - - The `canvas' is automatically drawn at the `end' of the input file. -The contents of other `screen's must be incorporated into the `canvas' -explicitly with an `import' or `inset' command. `import' affinely -scales the bounding box of the "child" `screen' to the `canvas'. `inset' -specifies corners in the "parent" where the child is placed. - - import(); // active screen to canvas - import(subfig); // subfig to canvas - inset(P sw, P ne); // active screen to specified rectangle - inset(subfig, sw, ne); // subfig to specified rectangle - inset(subfig); // inset to subfig's corners - - - -The portion of a `screen' enclosed by a specified rectangle can be -_extracted_. Each of the commands - - subfig.extract(P sw, P ne); - canvas().extract(P sw, P ne); - returns the `screen' having stated corners and containing part of -`subfig' or the `canvas', respectively. Elliptical and diamond-shaped -portions of a `screen' may be extracted. The contents occupy the -ellipse or diamond inscribed in the given rectangle. - - subfig.extract_ellipse(sw, ne); - canvas().extract_diamond(sw, ne); - The `screen' returned by `extract' (or its variants) may be used just -like a manually-constructed `screen', for example to construct a -magnified inset. - - - -On occasion, it is necessary to draw at known page size, independently -of the unit length. For 2-dimensional drawing in the (x_1,x_2)-plane -with the `camera' in its default location, the coordinates (horizontal, -vertical, or both) of a `screen' may be interpreted as true pt offsets -relative to a specified point rather than as Cartesian coordinates. - - inlay(subfig, P loc); - inlay_horizontal(subfig, loc); - inlay_vertical(subfig, loc); - Each command maps the origin of `subfig' to the specified location in -the active `screen'. The first performs affine scaling so that one -Cartesian unit in `subfig' maps to one true pt on the page. The second -and third commands perform this scaling only in the named direction. - - The `inlay' functions are suitable only for 2-dimensional effects. -For 3-dimensional true-size drawing, the function `pt_to_screen' -converts a true length of 1 pt into Cartesian coordinates in the active -`screen'. For example, the command `line(P(0,0), -P(pt_to_screen(12),0))' draws a line segment 12 pt long with its left -endpoint at the Cartesian origin. True size drawing is unusual in an -input file, but has definite uses in library code; `ePiX''s right angle -marker is a typical application. - - Either type of true-size drawing works as described when drawing in -the `canvas', and _only_ when drawing in a `screen' imported to the -`canvas' at "true Cartesian" size (one `screen' unit maps to one -Cartesian unit in the `canvas'). In other situations, the true size -coordinate(s) will be scaled by additional affine transformation(s). - - - -A `screen' has a _crop mask_: rectangular (default), elliptical, or -diamond-shaped. If cropping is switched on in the active `screen', -added elements are cropped to the crop mask. For example, cropping by -the default crop mask in the `canvas' ensures the figure lies inside -the printed region allocated by `LaTeX'. - - The `crop' commands below affect the active `screen' only. Cropping -is not a "global" attribute, but must be set or unset explicitly for -each `screen'. By default, cropping is switched off. - - set_crop(); // activate cropping - set_crop(false); // deactivate cropping - crop_diamond(); // <>-shaped mask, set crop state - crop_ellipse(); // etc... - crop(); // crop active screen's contents - Normally the crop mask is inscribed in the `screen''s bounding box. -The commands `crop_diamond' and `crop_ellipse' also accept a pair of -`P' arguments, which are treated as corners of the crop box. - - The active `screen' may be decorated with a `border' (outline of -specified color and line width) and `backing' (solid fill color). The -crop mask determines the shape of the `border' and `backing'. - - border(color, len); - backing(color); - Identically-named member functions can be applied to an arbitrary -`screen' whether or not it is active: - - scr.crop_rectangle().backing(Blue(1.8)); - canvas().crop(); - - - -A _plane affine map_ has the form T(x) = Ax+b for some invertible -2\times2 matrix A and a constant vector b. `ePiX''s `affine' class -allows affine maps to be built and applied to `screen's' contents. - - An affine map is uniquely determined by the images of three -non-collinear points. The constructor returns the affine map sending -the points (1,0), (0,1), and (0,0) to `pt1', `pt2', and `pt0', -respectively. - - affine af(P pt1, P pt2, P pt0=P(0,0)); - To emphasize, the arguments are locations, not displacements, and the -image of the origin comes last. There is also a `void' constructor -(taking no arguments) which returns the identity map. - - To facilitate construction of affine maps, an existing `affine' may -be post-composed with a variety of "elementary" affine transformations. -In the commands below, `th' is an angle (in current units), `sc' is a -non-zero `double', and `ctr' is a point fixed by the composing -transformation. In each command, `ctr' defaults to (0,0). - - affine af; // the identity map - af.shift(P arg); // translate by arg - af.rotate(th, [ctr]); // counterclockwise rotation about ctr - af.reflect(th, [ctr]); // reflect across line through ctr - - af.h_scale(sc, [ctr]); // horizontal scaling - af.v_scale(sc, [ctr]); // vertical scaling - af.scale(sc, [ctr]); // dilatation - - af.h_shear(sc, [ctr]); // shear preserving horizontals - af.v_shear(sc, [ctr]); // shear preserving verticals - - af.invert(); // the inverse - af.postcomp(affine f); // post-compose with f - af(f); // pre-compose, af not modified - A non-invertible `affine' can be created _only_ by shearing or scaling -with an extremely large or extremely small argument, or by supplying -three collinear points to the constructor. Calling `invert' on a -non-invertible map merely issues a warning and performs no action. - - An `affine' may be applied to a `screen''s current contents. The -`screen' class has eight member functions (`shift' through `shear') -with syntax identical to the affine map functions. In addition, an -arbitrary `affine' may be applied to a `screen': - - scr.shift(arg); // shift scr's contents by arg; etc. - scr.apply(f); // apply f to scr's contents - To apply a composition of several maps to a `screen', it's best to -build an `affine' map by composition, then `apply' the map. Composing -`affine's is cheap; `apply'ing an `affine' is costly in proportion to -the number of elements in the `screen'. - - Applying an `affine' to a `screen' has no effect on the bounding -box, `border', or `backing', and may move elements outside the bounding -box even if cropping is active. To ensure a `screen''s contents lie -inside the bounding box, `crop' the `screen' _after_ `apply'ing the -`affine'(s). - - The sample file `inverse.xp' uses `affine' maps to depict branches -of inverse functions in one variable, `symmetry.xp' depicts the -permutation group S_3 by its action on a regular hexagon. - - -File: epix.info, Node: Drawing Attributes, Next: Creating and Drawing Objects, Prev: Scene Attributes, Up: Reference Manual - -3.5 Drawing Attributes -====================== - -`ePiX' maintains drawing states for filled regions, paths, and text -objects. - - - -Filling is either on or off. When filling is active, closed paths are -filled with the current _fill color_. - - fill(); // turn filling on - fill(color); // turn filling on, specify color - nofill(); // turn filling off, same as fill(false); - - - -Paths and borders of filled regions are drawn with two _pen_s, each -described by color and line width. The _line pen_ draws all path-like -objects. The _base pen_ does nothing unless it is wider then the line -pen, in which case it draws an "underlayer" or "border" on the line pen. - - pen(len); // set line pen width - pen(color); // set line color, keep width - pen(color, len); // set color and width - As usual, `len' may be either a length string or a `double', -interpreted as a width in `pt'. There are `base' functions with the -same signatures and analogous meanings for the base pen. - - The line width can be set with named declarations; the optional -argument sets the line color: - - plain([color]); // 0.4pt - bold([color]); // 0.8pt - bbold([color]); // 1.6pt - - - -By default, path-like objects are drawn with solid lines. Dashed, -dotted, and free-form path style patterns are also available. (The -`base' underlayer is always solid.) The page length of a pattern -defaults to 12 pt, but can be set. - - line_style(string); - dash_size(len=12); - The path style is set with a WYSIWYG string of dashes, spaces, and -periods, representing a pattern of dashes, gaps, and dots. In the -sample styles below, the repeating units have the same page size, 12 pt. -[Image] - - For brevity and uniformity, named commands are provided. - - solid(); "-" dashed(); "- -" dotted(); " . " - A sequence of n dashes, spaces, and dots corresponds to a dash/dot -pattern in an interval divided into n subintervals of equal length. If -the ith character is a dash or space, the ith subinterval is drawn -solid or empty, respectively. If the ith character is a period, a dot is -placed at the midpoint of the ith subinterval. - - This pattern is applied to a path-like object as follows. The page -length of each edge is divided by the current `dash_size' and the -ceiling (next largest integer) taken. This many copies of the current -path style are scaled onto the edge. The first and last characters are -adjacent in repeated units. - - There are three inequivalent ways to adjust the dash length/dot -spacing in a non-line path: Change the `dash_length', create a path -with a different number of points, or use a longer, repetitive pattern. -For best results, the style string should not be longer than about a -dozen characters. - - If you need several dashed/dotted line styles in multiple figures, -it's best to define a custom header instead of hard-coding line styles. -See Section *Note section:extensions::, for guidance. - - - -Two types of textual element may appear in a file: _labels_ (text -boxes) and _markers_ (`LaTeX' symbols). A marker occupies a box of zero -size, and is placed at a specified Cartesian location. A label has -typographical size, and is usually offset from its Cartesian location. -For placement, an _alignment point_ is attached to each label, and -Cartesian coordinates position the alignment point. - - - -A label is printed as a `LaTeX' box. By default, the alignment point -is its reference point, the intersection of the left edge and the -baseline, which is used by `LaTeX' to position the box on the -page:[Image] - - The alignment point may be _offset_ manually by a specified number -of `pt'. Additionally, a label's location with respect to the alignment -point can be chosen with an optional `LaTeX'-style alignment option. -This scheme allows labels to be placed easily where they will not -overlap other parts of the figure, and ensures labels stay properly -positioned when the size or aspect ratio of a figure changes. - - label(P posn, P offset, string msg, [align]); - label(posn, msg); - The first two components of the `offset' argument are numbers of `pt' -to shift the alignment point right and up. The optional `align' -argument may be one--or an appropriate pair--of `t', `b', `r', or `l' -(top, bottom, right, left), or `c' (center). These alignment options -specify the position of the label _relative to the Cartesian location_ -`posn', namely they work _opposite_ to the way they work in `LaTeX'. -[Image]\qquad [Image] - - The `msg' argument is usually a snippet of `LaTeX' code enclosed in -double quotes. `C++' treats "\" as an escape character, so a double -backslash is needed in the source to get a single backslash in the -output. For example, - - label(P(0,0), P(2,-1), "$\\rho = \\sin\\theta$", br); - positions an alignment point `2pt' right and `1pt' below the -(Cartesian) origin, and typesets the equation \rho=\sin\theta below and -to the right. - - Labels can be rotated; the (counterclockwise) angle is set in current -angle units with the command `label_angle(theta)'. For example, a -rotation angle of 90 degrees prints labels along a vertical axis. -Though label rotation has legitimate uses, it can make labels more -difficult to read, defeating their purpose. Do not use rotated labels -merely because they are available. As a practical matter, if an output -file contains rotated labels, the enclosing document must use the -`rotating' package. `elaps' automatically loads this package. - - An `affine' behaves moderately intelligently when acting on a marker -or label. The mapping is applied to the label's location, and the -"linear part" is used to adjust the offset and label angle. No attempt -is made to treat alignment. For best results, if a `screen' will have -an `affine' applied to it, label positions should be fine-tuned only -with offsets, not alignment arguments. In all situations, the font -itself is unchanged; no attempt is made to print sheared, scaled, or -reflected text. The sample file `inverse.xp' illustrates the effect of -affine maps on labels. - - - -By default, the font in an `ePiX' figure is that of the enclosing -document. The font size and face are changed with "declaration-style" -commands such as - -font_size("Large"); -font_face("sc"); - The argument of font_size is a valid `LaTeX' size. If no argument is -given, `normalsize' is understood. font_face accepts a two-letter -string, appended to the string "`text'" to give a `LaTeX' font -declaration command ("`textsc'" above). Finer-grained control is -accomplished by placing `LaTeX' commands into the label text. - - - -Each label command has a corresponding "mask" version (`masklabel') -that draws an opaque rectangle under the label text. The mask size -exceeds the label's size by an amount of _padding_, and the mask is -itself surrounded by a rectangular _border_, of specified color and -width. - - label_color(color); // set label text color - label_mask(color=White()); // set mask color - label_pad(string len); - - label_border(color, [len]); // set color (and line width) - label_border(len); // set line width only - no_label_border(); // turn off label borders - - - -`ePiX''s marker types, listed in Table *Note table:marker::, , are -obtained with the command marker(P pt, <MARKER TYPE>); Several -"dot-like" marker types are available by name: [Image] - - spot(P pt); dot(P pt); ddot(P pt); - --- box(P pt); bbox(P pt); - ring(P pt); circ(P pt); --- - A `circ' is filled with the current `mask_color', and a `ring' is -"hollow". Each dot-like marker can also be called with label syntax, -generating a labeled marker with one command. - - dot(P posn, offset=P(0,0), msg="", align=none); // etc. - - By default, `spot' and `ring' are 4 pt in diameter; `dot', `box', -and `circ' are 3 pt in diameter; `ddot' and `bbox' are 2 pt in -diameter. At arbitrary diameter, a `spot' is 4/3 the diameter of a `dot' -and a `ddot' is 2/3 the diameter. The command `dot_size(diam=3)' sets -the diameter of a `dot', and hence the size of all dot-like markers. - - -[Image] - -Table[tb] - - - -When constructing and placing a label, - * Offsets are specified in `pt' (true length), not Cartesian - units: A label's location relative to its alignment point should - not depend on the logical or printed size of the figure. - - * The label text is enclosed in double quotes (the single - character `"'), and contains the `LaTeX' code to generate the - label. Backslashes are doubled. - - - -Old-style color declarations set the fill color, line color, and text -color. - - rgb(r, g, b); cmyk(c, m, y, k); - rgb(P); cmyk(P); // for function-controlled colors - red(d); // similarly for other primaries - - - -File: epix.info, Node: Creating and Drawing Objects, Next: More About `C++', Prev: Drawing Attributes, Up: Reference Manual - -3.6 Creating and Drawing Objects -================================ - -Scene elements include geometric objects, coordinate grids, axis -labels, and function plots. A few commands create an object (a point, -line segment, circle, sphere, or plane) that can be used in subsequent -computations, but most drawing commands automatically create, draw, and -discard objects. - - - -The simplest object in the world, and by far the most common named data -structure, is `P', an ordered triple of real numbers (double-precision -floats). The function `P(x1,x2,x3)' creates the point (x_1,x_2,x_3). If -only two arguments are provided, x_3=0 by default. This convention -allows `ePiX' to treat 2- and 3-dimensional figures uniformly. The -standard basis is available: `E_1=P(1,0,0)', etc. - - Depending on context, a `P' may represent either a _location_ -(point) or a _displacement_ (vector). Almost all `ePiX' functions treat -a `P' as a point. However, algebraic operators and commands that plot -vector fields treat `P' arguments as displacements. - - Polar, cylindrical, and spherical coordinate `P' constructors are -sensitive to the current angular mode. - - P pt=polar(r,t); // (r*Cos(t), r*Sin(t), 0) - P pt=cis(t); // (Cos(t), Sin(t), 0) = polar(1, t) - P pt=cyl(r,t,z); // (r*Cos(t), r*Sin(t), z) - P pt=sph(r,t,phi); // polar(r,t)*Cos(phi) + (0,0,r*Sin(phi)) - - Algebraic operations--addition/subtraction, scalar multiplication; -scalar, cross, and componentwise products; orthogonalization--can be -performed on `P's. In compound expressions, the binary operators below -should be enclosed in parentheses, and scalars must be collected at -left, `P's at right. - - double u=pt.x1(); // first coordinate of pt, etc. - P(a,b,c)|P(x,y,z); // scalar product, ax+by+cz - P(a,b,c)&P(x,y,z); // componentwise product (ax, by, cz) - P(a,b,c)*P(x,y,z); // cross product (bz-cy, cx-az, ay-bx) - J(p); // quarter turn about the x3-axis - p%q; // orthogonalization, p (mod q) - Explicitly, `p\%q' is the unique vector `p+k*q' perpendicular to `q'. - - `P' operations express mathematical relationships, and therefore -imbue a figure with logical structure, making the input file easier to -read, modify, and maintain. Commonly, a file preamble will define a few -named points with hard-coded coordinates, then define additional points -of interest using `P' operators. - - - -In addition to `P', objects of type `Circle', `Plane', `Segment', and -`Sphere' can be used for Euclidean geometry constructions. Simple -affine operations are supplied for each type, as is a `draw()' -function, which represents the object as a path in the screen. - - obj.shift(P arg); // translate by arg - obj.move_to(P arg); // move center to arg - obj.scale(double c); // scale about center by c - obj.draw(); - A `Segment''s "center" is its midpoint. A `Plane' has no center; -`move_to' translates the `Plane' to pass through `arg', and `scale' has -no effect. - - A `Circle' data structure consists of a center, radius, and a -perpendicular unit vector. Three constructors are provided: - - Circle(center=P(0,0,0), double rad=1, normal=E_3); - Circle(P center, P point); - Circle(P p1, P p2, P p3); - The second constructor creates the `Circle' parallel to the (x_1,x_2) -plane, with given center, and radius equal to the distance between the -arguments. (A warning is printed if the second argument does not lie on -the circle, namely, if the arguments do not lie in a plane parallel to -the (x_1,x_2) plane.) The third returns the `Circle' passing through -the given points; the points must not be collinear. - - The data defining a `Circle' are recovered with member functions -named `center()', `radius()', and `perp()'. - - A `Plane' is specified by a point and normal vector, or by three -non-collinear points. The `draw()' function clips the plane and draws -the resulting polygon. Unless the clip box has been set manually, the -clipped polygon's vertices will have large coordinates. - - A `Segment' is constructed from its endpoints. The member function -`midpoint()' returns the center. - - A `Sphere' is specified by a point and a radius--by default the -origin and unity, or by the center and a point on the sphere. Member -functions `center()' and `radius()' return the defining data. -Capabilities specific to geography and spherical geometry are described -below, pp. *Note non-eucl::ff. - - The `draw()' function of a `Sphere' draws the horizon visible from -the current viewpoint. While this horizon is a circle in object space, -its image in the screen is generally an ellipse. Antipodal points are -not generally mapped to points symmetrically placed with respect to the -center of this ellipse. These effects are most pronounced when the -viewpoint is close to the `Sphere' and the center is not close to the -`target'. - - - -To facilitate geometric computation, `ePiX''s `Circle', `Plane', -`Segment', and `Sphere' classes can be intersected with the `*' -operator. - - A `Circle' has a center, radius, and unit normal; a `Plane' has a -distinguished point and unit normal; a `Segment' has two endpoints; a -`Sphere' has a center and radius. An object is _malformed_ if these -conditions are not met. The constructors return well-formed objects -with two exceptions: `Circle' and `Plane' create malformed objects if -called with three collinear points. The operator `*' returns a -malformed object if either argument is malformed, or if the operands -are disjoint, tangent, or coincident. Malformedness is benign: Calling -`draw()' on a malformed object does nothing. - - - -A `frame' comprises three mutually perpendicular unit vectors. The -constructor takes three vectors. The `frame''s third vector e_3 is -positively proportional to `v3', the second vector e_2 is positively -proportional to `v2\%v3', and the first is the cross product, -e_1=e_2\times e_3. Thus, a `frame' is right-handed, and does not depend -on `v1'. - - The elements of a `frame' are named `sea', `sky', and `eye', just as -for the `camera'. A `frame' can be rotated through an arbitrary angle -about any of its elements. - - frame(); // the standard basis {E_1, E_2, E_3} - frame fr(v1, v2, v3); // orthonormalize {v1, v2, v3} - fr.sea(); // the first element of fr, etc. - fr.rot1(theta); // rotate fr through theta about sea, etc. - - - -Basic path-like objects are drawn with named commands. Arguments of -polygon commands are endpoints/vertices. Except for `line' and `Line', -the following are subject to filling. - - line(P p1, P p2, [double expand]); - Line(p1, p2); // draw line through p1, p2 (crop required) - triangle(P p1, P p2, P p3); - rect(P p1, P p2); - quad(P p1, P p2, P p3, P p4); // quadrilateral - circle(ctr=P(0,0,0), rad=1, normal=E_3); - circle(ctr, pt); - circle(pt1, pt2, pt3); - The optional `line' argument is an expansion parameter: -`line(p1,p2,t);' draws a segment centered at the midpoint of `p1' and -`p2', with length scaled by 2^t/100. (Setting t=100 doubles the length, -while t=-100 halves the length.) The arguments of `rect()' must lie in -a plane parallel to a coordinate plane. The arguments to `circle' -commands are the same as for `Circle' constructors. - - Quadratic and cubic splines are described by their control points. A -list of `P' is drawn as a "natural" spline (the C^2 piecewise cubic -curve with vanishing second derivatives at the endpoints); the number -of points per cubic segment must be specified. Circular and elliptical -arcs are given by center, a basis, angular range, and an optional -number of intervals. - - spline(P p1, P p2, P p3, [int n]); // quadratic - spline(P p1, P p2, P p3, P p4, [int n]); // cubic - spline(vector<P>, int n); // natural spline - - arc(P ctr, rad, t_min, t_max); // parallel to (x1,x2)-plane - ellipse(P ctr, P v1, P v2); // in plane spanned by v1, v2 - ellipse(P ctr, P v1, P v2, t_min, t_max, [int n]); - If parameter bounds are omitted in an `ellipse' command, the entire -ellipse is drawn. When the angular range subtends one or more full -turns in an `arc' or `ellipse' the curve is subject to filling. - - Commands for planar (half-)ellipses remain from `ePiX''s early days: - - ellipse(P ctr, P radius); - ellipse_left(P ctr, P radius); - ellipse_right(P ctr, P radius); - ellipse_top(P ctr, P radius); - ellipse_bottom(P ctr, P radius); - If `radius' is `P(a,b)', these commands draw all or half of the -ellipse with given center in the (x_1,x_2) plane, axes parallel to the -coordinate axes, and axis lengths 2a and 2b. - - Two commands are available to mark off right angles or a subtended -angle. Each accepts a spatial location and two non-zero directions, and -draws a scene element in the plane spanned by the vectors. - - right_angle(P loc, P v1, P v2, scale=8); - arc_measure(P loc, P v1, P v2, scale=8); - arc_measure(P loc, P v1, P v2, offset, text, align, scale=8); - The `right_angle' command does not check its arguments for -perpendicularity. The `arc_measure' commands mark the _small_ angle -subtended by the directions; the label form places a label at the -midpoint of the arc. The (optional) `scale' argument is the true size -in `pt' of the marker. - - - -Consider a path made up of equal-length segments that can point at any -angle of the form 2\pi k/n radians, for 0\leq k<n, like spokes on a -wheel. A path is specified by a finite sequence of integers, taken -modulo n. For example, if n=6, then the sequence 0, 1, -1, 0 corresponds -to the ASCII path _/_. `ePiX''s fractal approximation starts with such -a "seed" then recursively (up to a specified depth) replaces each -segment with a scaled and rotated copy of the seed, Figure *Note -fig:fractal::, . The seed above generates the standard von Koch -snowflake fractal. In code: - - const int seed[] = {6, 4, 0, 1, -1, 0}; - fractal(P(a,b), P(c,d), depth, seed); - The first entry of `seed[]' (here 6) is the number of "spokes" n, the -second (4) is the number of terms in the seed, and the remaining -entries are the seed proper. The final path joins (a,b) to (c,d). The -number of segments in the final path grows exponentially in the depth, -so depths larger than 5 or 6 are likely to exceed the capabilities of -`LaTeX' and/or PostScript. - -[Image] - -Figure[hbt] - - - -Line segments, splines, and arcs can be drawn with arrowheads at one -end. In profile, an arrowhead's width is `3pt', and its height is 5.5 -times the width. The actual printed height depends on the head's -orientation with respect to the camera. By default, an arrowhead is a -filled triangle. The shape and size are adjusted with declarations: - - arrow_width(w=3); // width in pt - arrow_ratio(r=5.5); // height-to-width - arrow_inset(c=0); // base indent as frac of ht - [Image]\qquad [Image]\qquad [Image] \\ The `inset' must be between -1 -and 1. Each `arrow' command accepts an optional `scale' argument, which -scales the arrowhead. - - arrow(P tail, P tip, [scale]); - arrow(P p1, P p2, P p3, [scale]); // spline arrows - arrow(P p1, P p2, P p3, P p4, [scale]); - arrow(P ctr, P v1, P v2, t_min, t_max, [scale]); // ellipse - A few "special-purpose" commands are supplied: - - dart (P p1, P p2); // same as arrow(p1, p2, 0.5); - aarrow(P p1, P p2); // double-headed arrow <---> - arc_arrow(ctr, rad, t_min, t_max, [scale]); - If an `arc_arrow' is too short, nothing is drawn. - - - -`ePiX' provides an `axis' class for coordinate axes. Labels are -generated automatically in a variety of styles: decimal, scientific -notation, fraction, and trigonometric fraction. Logarithmic axes and -labels are available. Axis and labeling commands from Version 1.0 have -been retained. - - - -An `axis' consists of a line segment divided into a specified number of -equal-length subintervals by "major" (long) tick marks. Each -subinterval may be divided further by "minor" (short) tick marks. -Minor ticks may be equally-spaced ("Cartesian") or logarithmically -placed. Finally, a label is written at each major tick mark with -specified offset and alignment. Labels are generated automatically from -the endpoints, so the line should be parallel to a coordinate axis. -Label attributes (masking, borders, font size and face, rotation angle) -are determined by the current label style, not by the `axis'. - - The command - - axis(P tail, P head, int n, P offset=P(0,0), [align = none]); - creates an axis joining `tail' to `head', divided into `n' segments of -equal length, with a major tick mark and label at each division point -and endpoint. The `offset' and `align' arguments have the same meaning -as for ordinary labels. - - The number and length of minor ticks, and the alignment of ticks, are -controlled with member functions: - - axis Ax(P(a,c), P(b,c), n); - Ax.subdivide(n); // put n-1 minor ticks in each axis segment - Ax.tick_ratio(r); // minor length = r*major length - Ax.align(AL=c); // align all ticks; AL = t, b, l, r, or c - By default, major ticks are `6pt' long and twice the length of minor -ticks. The global declaration `tick_size(len)' sets the major length, -subject to "reasonable stylistic limits". For visual consistency, tick -lengths should not be changed casually. - - Labels on an `axis' may be drawn in several styles, selected with -member functions: - - Ax.dec(); // decimals (default) - Ax.frac(); // fractions, e.g. 0.5 -> \frac{1}{2} - Ax.trig(); // fractional multiples of \pi - Ax.sci(); // scientific notation, k\times base^N - - Ax.unmark(double); // remove label at selected location - Ax.precision(p); // set number of digits for decimal labels - Ax.align_labels(AL); // re-align labels - Arbitrary textual labels depending on one coordinate are obtained by -writing a `string'-valued function of `double' and "registering" it: - - // f represents x as a string in given precision and base - std::string f(double x, unsigned int prec, unsigned int base); - Ax.label_rep(f); - For example, textual tags can be printed instead of numeric labels. - - By default, an `axis' is Cartesian. The member function `log(int -b=10)' converts an `axis' to "log mode" with specified base; this -affects both tick marks and labeling. If `b' is at least 3, minor tick -marks appropriate for a logarithmic axis base `b' are drawn. Second, -labels are written in decimal or scientific notation appropriately for -a logarithmic axis; that is, "k\times b^N" (or its decimal value) is -written at location N+\log_b k. - - Minor ticks of a log `axis' may be labeled individually; again, this -is controlled with member functions: - - Ax.tag(d); // labels at N+log_b(d) - Ax.tag235(); // tag 2, 3, and 5 if b=10 - Ax.tags(); // tag 1, ..., b-1 - Ax.untag(); // remove all tags, including 1 - Ax.untag(double); // remove one tag, e.g. Ax.untag(9); - - For convenience, an `axis' object along an edge of the active -`screen' can be created with a named command: - - top_axis(n, offset, align); - bottom_axis(n, offset, align); - left_axis(n, offset, align); - right_axis(n, offset, align); - The ticks automatically point into the bounding box. - - The functions above create objects or set `axis' attributes, but -write no output. Tick marks and labels can be printed separately, or at -once: - - Ax.draw(); // axis, tick marks, and labels - Ax.draw_ticks(); // axis and ticks only - Ax.draw_labels(); - - - -`ePiX' formerly supplied commands for drawing simple axes and their -labels. These commands have been kept for compatibility. Horizontal -axes are generated with - - h_axis(p1, p2, n, align=c); // n subintervals (n+1 ticks) - h_log_axis(p1, p2, n, align=c, base=10); - For vertical axes, use `v_axis'. The style of tick mark is -appropriate for an axis of the given type. Horizontal axis tick marks -may be aligned `t' (above the axis) or `b' (below). Similarly, vertical -axis ticks may be aligned `r' or `l'. - - The endpoint arguments of a coordinate axis may be omitted, in which -case they default to p_1=(x_min,0) and p_2=(x_max,0) for a horizontal -axis, or to p_1=(0,y_min) and p_2=(0,y_max) for a vertical axis. If the -bounding box has integer width and/or height, omitting the number of -points draws tick marks one unit apart. - - Labels for a horizontal Cartesian or logarithmic axis are generated -with the commands - - h_axis_labels(P p1, P p2, int n, P offset, [align]); - h_axis_masklabels(p1, p2, n, offset, [align]); - h_axis_log_labels(p1, p2, [n], offset, [align], base=10); - h_axis_log_masklabels(p1, p2, [n], offset, [align], base=10); - Labels for a vertical axis are generated with `v_axis_labels', etc. -The labels are automatically generated to match their horizontal -location. The first puts (n+1) evenly-spaced labels on the segment -joining `p1' and `p2'. As with ordinary labels, the `offset' is in -`pt', and the optional `LaTeX'-style alignment option positions the -labels using their corners. The second command draws masked labels -according to the current label masking attributes. The third writes -labels in exponential notation, using the Cartesian coordinate as -exponent. - - As for coordinate axes, the initial and final points may be omitted -in an `axis_[mask]labels' command, with the same defaults. The -`offset' and number of labels must always be specified. - - - -Broken axes are best drawn using page layout, especially if axis labels -are to be drawn. To accomplish the task, create a screen for each piece -of axis, using appropriate Cartesian coordinates for the corners, then -`inset' the screens so the axis pieces are nearly end to end. A zig-zag -glyph signifies the break: - - axis_break(P, P, scale=12); - The `P' arguments are the screen coordinates of the ends to be joined; -the optional third argument is the true height and width in `pt' of the -glyph. The sample file `coord_tricks.xp' uses layout and axis breaks. - - - -Cartesian grids fill a coordinate rectangle, and have a specified -number of lines in each direction. A polar grid has specified radius, -and numbers of rings and sectors. - - grid(n1, n2); // fills the bounding box - grid(p1, p2, n1, n2); // fills the box with corners p1, p2 - polar_grid(r, n1, n2); - - Log and semi-log grids are drawn with analogous syntax: - - log_grid (p1, p2, n1, n2, [base1], [base2]); // log-log - log1_grid(p1, p2, n1, n2, [base]); // log-lin - log2_grid(p1, p2, n1, n2, [base]); // lin-log - The n_i arguments dictate the number of squares, namely the number of -orders of magnitude spanned in the logarithmic direction(s). The -(optional) base arguments default to 10, and control the number of -lines drawn per order of magnitude. As with Cartesian grids, the -corners are optional; if omitted, the grid fills the bounding box. - - Graph paper may be created by superimposing grids: - - pen(0.25); - grid(10*xsize(), 10*ysize()); - pen(0.5); - grid(2*xsize(), 2*ysize()); - pen(1); - grid(xsize(), ysize()); - - - -A `path' data structure is an ordered list of points that can be -cropped, clipped, mapped, concatenated, and drawn. The first four -constructors mirror polygon-drawing commands above. Function graphs -and parametric paths are built from a real- or `P'-valued function `f' -of one variable. - - path(p1, p2, expand=0); // line (endpoints) - path(p1, p2, p3, [n]); // quadratic spline - path(p1, p2, p3, p4, [n]); // cubic spline - path(p1, v1, v2, t_min, t_max, [n]); // ellipse - path(f, t_min, t_max, [n]); - - The member function `pt()' accepts a `P' or three (or two) doubles -and appends the specified point to a `path'. This snippet creates a -regular n-gon: - - path ngon; // declare new path - for (int i=0; i<=n; ++i) - ngon.pt(cis(i*full_turn()/n)); // works in all angle modes - Compound paths may be built by concatenation. If `path1' and `path2' -share an endpoint, the commands - - path1 += path2; - path1 -= path2; - replace `path1' with the result of traversing `path1' "forward", then -following `path2' in the forward or reverse direction (respectively). -For expected results, the first (or last) point on `path2' should be -the last point of `path1'. The notation suggests 1-dimensional homology -chains. The sample file `contour.xp' illustrates path creation and -manipulation. - - A `path' is a data structure, and must be drawn explicitly to create -visible output. By default a `path' is not a closed loop (even if the -first and last points are the same), and is not filled when drawn. -Member functions perform these tasks. Continuing the n-gon snippet -above, - - ngon.close(); // mark path as closed - ngon.fill(); // draw filled region if filling is active - ngon.draw(); // print to the screen - `path::close()' adds a closing edge if necessary. Once a `path' is -closed, no more points can be added. A closed path clips and crops -differently than an open `path' with the same data. `path::fill()' has -no effect on an unclosed `path'. - - - -The noun "map" refers to a `C++' function that accepts one or more -`double' arguments and returns a `double' or a `P'. Mathematically, a -map can be depicted in two ways: as a graph (which retains information -about the domain), or as a parametrized curve or surface (which -discards domain information). `ePiX' assumes that `double'-valued maps -are graphed and `P'-valued maps are drawn parametrically. Either sort -of depiction is called a "plot". `ePiX' plots are either "wire mesh", -produced by a `plot' command, or "shaded", produced by a `surface' -command. - - - -For the moment, "function" means "function of one variable" (precisely, -a `double'-valued function of a `double' variable). A function graph -depends on the domain and the number of points to use. Each of the -commands - - plot(f, t_min, t_max, n); - polarplot(f, t_min, t_max, n); - shadeplot(f, t_min, t_max, n); - graphs the function `f' on the interval `[t_min, t_max]' by dividing -the interval into `n' subintervals of equal length. The first gives a -Cartesian plot, the second a polar plot with bounds in current angular -units, the third shades the region between the graph and the horizontal -axis. If two functions are given to `shadeplot', the region between -their graphs is shaded. - - - -An `ePiX' `domain' is a coordinate box of dimension one, two, or three, -specified by a pair of opposite corners and two _meshes_ ("coarse" and -"fine", respectively) which specify the amount of data to be plotted. -Plotting is explained in detail below. - - // [a1,a2] x [b1,b2]: n1 x n2 rectangles, m1 x m2 intervals - domain R2(P(a1,b1), P(a2,b2), mesh(n1,n2), [mesh(m1,m2)]); - - // [a1,a2] x [b1,b2] x [c1,c2] divided analogously - domain R3(P(a1,b1,c1), P(a2,b2,c2), - mesh(n1,n2,n3), [mesh(m1,m2,m3)]); - If unspecified, the fine mesh is the same as the coarse mesh. For -expected behavior, the coarse mesh should "divide" the fine mesh, in -that m_i should be a (usually small) integer multiple of n_i for each i. - - A `domain' may be _resized_ in any coordinate for which the -thickness is positive, and can be _sliced_ by setting one variable to a -constant. The result of slicing is a `domain' whose dimension is one -smaller than the original. Finally, "`slices'" operators return the -list of `domain's obtained by setting one variable to evenly-spaced -constants. By default, the number of slices is specified by the coarse -mesh. An optional argument specifies the number of slices. This -argument need not be related to the coarse mesh. - - R2.resize2(a,b); // [a1,b1] x [a,b] - R2.slice1(t); // set x1 = t - R3.slices3([n]); // (n+1) domains with x3 = const -[Image] - - \smallskip When possible, resizing preserves grid square sizes. -Generally, though, integer truncation occurs: If `R=domain(P(0,0), -P(1,1), mesh(10,6))', then `R.resize1(0,0.25)' is the rectangle -[0,0.25]\times[0,1] subdivided into 2\times6 subrectangles, since -10\div4=2 in integer arithmetic. For expected behavior, choose mesh -sizes to avoid integer truncation. - - The arguments of a `plot' command are a map, followed by either a -domain or its logical equivalent. - - double f(double t) { return t*t; } - P F(double u, double v) { return P(u, v, exp(u)*Sin(v)); } - P G(double u, double v, double w) { return P(v*w, u*w, u*v); } - - plot(f, a, b, n); // f:[a,b] -> R, using n intervals - plot(F, R2); // graph of exp(u)*Sin(v) - plot(G, R3.slice2(0.5); // G: R^3 -> R^3 restricted to y=0.5 - By (compiler-enforced) convention, `plot' commands involving a -`P'-valued map accept a `domain' argument, as in the second and third -commands above. To plot a `double'-valued function, by contrast, supply -the logical equivalent of a `domain', usually the endpoints and the -number of intervals, as in the first `plot' command above. - - Resizing and slicing allow a map `F' to be plotted selectively over -parts of its domain. This can be used to emphasize parts of the image, -layer scene elements, patch surfaces together, and so forth. Resize -and slice(s) commands may be used directly in a `plot' command: - - plot(F, R2.resize1(0,0.5)); - plot(F, R2.slices1()); - - - -The `P' arguments of a `domain' are a pair of opposite corners. The -first `mesh' argument, the _coarse_ mesh, specifies the number of -subdivisions in each coordinate direction. The second `mesh', the -_fine_ mesh, determines the number of points used in each direction -when plotting. - - Separating the roles of coarse and fine meshes allows a plot to -conform closely to a surface without using a fine grid of curves. Both -parts of Figure *Note fig:plot::, are drawn with a 6\times20 coarse -mesh. In the first picture, the fine mesh is also 6\times20, while in -the second, the fine mesh is 12\times60. - - -[Image] [Image] - -Figure[hbt] - - The coarse mesh is significant only for domains of dimension at -least 2. The coarse mesh's size determines the number of curves or -surfaces plotted _perpendicularly_ to a coordinate direction, while the -fine mesh's size determines the number of segments used _along_ that -direction. For predictable results, the fine mesh should be a small -multiple of the coarse mesh. - - Plotting works analogously for 3-dimensional `domain's and maps -depending on three variables: The "one-dimensional skeleton" of the -`domain''s image is drawn. A `P'-valued map of three variables can be -plotted over a 1- or 2-dimensional `domain'. (The effect may be -unexpected unless the domain arises by slicing, however.) A map -depending on one or two variables cannot be plotted over a -3-dimensional `domain'. - - - -`ePiX''s shaded surface plotting implements a degree of hidden surface -removal. The algorithm breaks a surface into mesh fragments, sorts them -in decreasing (approximate) distance to the camera, and prints them. -If filling is active, a mesh fragment is shaded according to the angle -between the normal vector and the direction to the camera, simulating -constant ambient lighting; otherwise, the current fill color is used. -This technique works fairly well for surfaces without intersection, and -even acceptably handles intersecting surfaces for which mesh elements -intersect only along boundaries. - - The syntax of a `surface' command is identical to a `plot' command -when only a single surface is drawn. For example, - - surface(F, R, cull=0); - plots the `P'-valued function `F' over the domain `R', the shaded -equivalent of the corresponding `plot' command. The optional `cull' -argument removes elements that point toward (`cull=-1') or away from -(`cull=1') the camera. Naturally, orientation of mesh elements depends -on the parametrization `F', not merely on the surface. Culling reduces -the output file size, but is useful mostly for closed, convex surfaces. - - There are special commands for surfaces of rotation; each accepts a -final `cull' argument. - - surface_rev(f, t_min, t_max, n_lats, n_longs); - surface_rev(f, g, t_min, t_max, n_lats, n_longs=24); - surface_rev(f, g, R, frame coords); - The first revolves the graph of f about the x-axis, the second uses -the parametric curve t\mapsto\bigl(f(t),g(t)\bigr) as profile. In each -case, the parameter interval [t_min,t_max] is divided into n_lats -equal-length subintervals, n_longs copies of the profile curve are -drawn, and the complete surface (one full turn) is drawn. - - The third form uses a `domain' to control the range of longitudes, -and draws a surface of rotation in the Cartesian coordinate system -defined by the orthonormal basis `coords', by default the standard -basis. The arguments `f' and `g' define a parametric curve in the plane -spanned by the first two elements of `coords', and the first element is -the axis of rotation. - - As in wire mesh plotting, the fine mesh is used to draw the -boundaries of surface patches; this tends to make surfaces look -smoother for modest-sized coarse meshes. If the coarse mesh is too -coarse, however, two visually undesirable effects can occur. First, -adjacent regions of the surface may be shaded very differently, since -shading is constant over patches defined by the coarse mesh. Second, a -patch nearly tangent to a line of sight may be drawn badly if the patch -bends back on itself, since the boundary of the _patch_ is drawn, not -the visible edge of the mathematical surface. See -`samples/artifacts.xp'. - - - -A scene containing two or more shaded surfaces cannot generally be -built up one surface at a time. Instead, multiple surfaces must be -assembled into a single data structure before they can be drawn. -Multiple surfaces are built from one or more maps and one or more -2-dimensional `domain's. In the code snippets below, `F' and `G' are -`P'-valued functions of 3 variables, and `R' is a 3-dimensional -`domain'. - - To plot the images of several `domain's under a _single map_, -assemble the `domain's into a list if necessary, then issue a `surface' -command: - - surface(F, R.slices3(), cull=0); - - domain_list DL(R.slice1(0)); // build domain list - DL.add(R.slice2(0.5)); // add a domain, etc. - surface(G, DL, cull=0); // draw - For multiple maps, `ePiX' provides the `scenery' class. Conceptually, -`scenery' is an agglomeration of shaded surfaces, built one surface at -a time from maps and 2-dimensional `domain's. The `add' function -accepts two arguments--a map, and either a `domain' or a list of -`domain's--and contributes its data to the `scenery' rather than -plotting immediately. Completed `scenery' is drawn manually. - - scenery S(F, R.slice3(0.25)); // S contains one surface - S.add(F, R.slice2(0)); // S contains two surfaces - S.add(G, R.slices1(3)); // S contains six surfaces - S.draw(cull=0); - Complete examples are included in the `samples' directory: -`spherical.xp' and `minkowski.xp'. - - In principle, a scene may contain arbitrarily many surfaces. However, -figures that contain many objects tend to tax `LaTeX''s internal -stacks. Frequent color changes exacerbate the problem. Even if you use -`hugelatex' (or increase `LaTeX''s memory), a figure containing more -than a few thousand mesh elements is unlikely to compile. At moderate -resolution, a surface can easily contain 1000 patches. Each shell -script has a command-line option to invoke `hugelatex'; your mileage -may vary. - - - -By default, a `surface' or `scenery' is colored according to the -current fill color. For finer control, each `surface', `surface_rev', -and `scenery' command accepts an optional position-dependent `color' -specification. - - surface(F, R, color, cull=0); - surface_rev(f, [g], t_min, t_max, n_lats, n_longs, color); - surface_rev(f, g, R, color, [coords]); - - scenery S(F, R, color); - S.add(F, R, color); - The `color' argument is a `P'-valued function of two or three -`double's whose output is interpreted as a set of `RGB' densities. If -`color' takes two arguments, they are `domain' coordinates, and the -surface is colored according to parameter values. If `color' takes -three arguments, they are Cartesian coordinates, and the surface is -colored according to spatial location. Please see the sample files -`surface_shade.xp' and `S2_harmonics.xp'. - - - -`ePiX' provides high-level commands for plotting derivatives and -definite integrals, Riemann sums, tangent lines, slope- and vector -fields, and solutions of planar and spatial systems of differential -equations. - - In this section, `f' and `g' are `double'-valued functions of one -variable. - - - - - sup(f, a, b); // max/min of f on [a,b] - inf(f, a, b); - newton(f, g, x0); // find approximate crossing point - Newton's method returns the crossing point of the given functions, -starting from the specified seed, which should be reasonably close to -the expected solution. If a critical point is hit or 5 iterations pass, -a warning is issued and the current result (probably incorrect) is -returned. The second function g defaults to the zero function if -omitted. - - - -The classes `Deriv' and `Integral' are used to calculate values of -derivatives and integrals, and to plot these functions. - - Deriv df(f); // function object: df(x) = f'(x) - df.eval(t); // return f'(t) - df.left(t); // deriv from left at t: (f(t)-f(t-dt))/dt - df.right(t); // deriv from right at t: (f(t+dt)-f(t))/dt - - Integral prim(f,a); // function object: prim(x) = int_a^x f - prim.eval(b); // numerical integral of f over [a,b] - double val(Integral(f).eval(1)); // val = \int_0^1 f - The lower limit on an integral is 0 by default. `Deriv's and -`Integral's can be used directly in a `plot' command: - - plot(Deriv(f), a, b, n); // plot f' over [a,b] - plot(Integral(f, x0), a, b, n); - riemann_sum(f, a, b, n, TYPE); - The second graphs the definite integral x\mapsto\int_x_0^x f(t)\,dt -over [a,b]. As above, x_0 defaults to 0. The third draws rectangles or -trapezoids whose area approximates the definite integral of f over -[a,b]. The `TYPE' may be `UPPER', `LOWER', `LEFT', `RIGHT', `MIDPT', or -`TRAP'. - - Tangent lines and envelopes (families of tangent lines) are drawn -with - - tan_line(f, t); // f real- or vector-valued - envelope(f, t_min, t_max, n); // family of tangent lines - tan_field(f, g, t_min, t_max, n); // field of tangents - The sample files `conic.xp' and `lissajous.xp' illustrate these -features. - - - -Let `F' be a `P'-valued function of two or three variables. - - ode_plot(F, p_0, t_min, t_max, n); - flow(F, p_0, t_max, n); - The first plots the solution curve of the initial-value problem -\dotx=F(x), x(0)=p_0, over the specified time interval. If t_min is -omitted, its value is 0, so the curve starts at p_0. With manual -calculation to rotate a planar field a quarter turn, `ode_plot' can be -used to draw level curves (isobars) of a function of two variables; see -the sample file `dipole.xp'. The `flow' function returns the result of -starting at p_0 and flowing by F for time t_max, using Euler's method -with n time steps. This is useful for placing markers or arrowheads -precisely along a flow line. - - A planar or spatial vector field itself may be plotted over a domain -`R' in three styles: - - vector_field(F, R, [scale]); // true length - dart_field (F, R, [scale]); // const length - slope_field (F, R, [scale]); // const length - The field is sampled at the grid points of the coarse mesh. If the -domain is 2-dimensional, the plot is a planar slice of the field, even -if the field depends on three variables. If the domain is -3-dimensional, the field is drawn in successive slices x_3=const, -starting at the height of the first corner of `R' and ending at the -height of the second corner. - - The optional final argument, which defaults to 1, scales the -arrowheads in a vector field, and scales the (constant) length of field -elements for slope and dart fields. The sample files `layout2.xp', -`lorenz.xp', `slopefield.xp', and `vfield.xp' illustrate usage. - - In each field-plotting command, the domain argument may be replaced -by two points, representing corners of a coordinate rectangle, and two -integers, the number of grid intervals in the selected coordinate -directions. Only planar slices of a vector field can be plotted using -the alternative syntax. - - - -`ePiX' provides limited features for spherical and hyperbolic geometry: -the ability to draw lines in the half-plane and Poincar\'e disk models -of the hyperbolic plane, and to draw latitudes, longitudes, great -circle arcs, spherical triangles, regular polyhedra, and parametrized -curves on a sphere. - - Hyperbolic line segments are specified by their endpoints in the -upper half space or ball (Poincar\'e) models. In each case there is no -output if either endpoint lies outside the model. - - hyperbolic_line(p, q); - disk_line(p, q); - For compatibility with 2-dimensional hyperbolic space, the half-space -model is the set \(x_1,x_2,x_3)\mid x_2>0\. - - A `frame' determines geographical coordinates on a `Sphere': the -first element points toward longitude 0 on the equator, the third -element points to the north pole. A latitude line depends on a -`Sphere', a `frame', the numerical latitude, and a range of longitudes. -A longitude line is described similarly. - - latitude(lat, long_min, long_max, Sphere S, frame coords); - longitude(lngtd, lat_min, lat_max, Sphere S, frame coords); - By default, `coords' is the standard `frame' and `S' is the unit -sphere. These commands draw only the portion of the curve that is -visible from the current viewpoint. The function `back_latitude' draws -the invisible portion of a latitude line. - - Spherical arcs and triangles are described by their endpoints. Only -the direction vector from the center of the sphere to an endpoint is -significant; if a sphere is scaled or moved, the same function call -will draw the corresponding object on the new sphere. - - The following draw the visible (front) portions of great circle arcs: - - front_arc(p1, p2, S); // short arc on S from p1 to p2 - front_arc2(p1, p2, S); // arc from p1 to -p1 through p2 - front_line(p1, p2, S); // great circle through p1 and p2 - Triangles and regular (Platonic) polyhedra are provided. The sample -file `sample/polyhedra.xp' illustrates usage. - - front_triangle(p1, p2, p3, S); // spherical triangle - front_tetra(S, coords); // regular tetrahedron - front_cube(S, coords); // hexahedron - front_octa(S, coords); // octahedron - front_dodeca(S, coords); // dodecahedron - front_icosa(S, coords); // icosahedron - Each function has a `back' version, which draws the hidden portion. -The tetrahedron, cube, and octahedron are (up to scale) inscribed in -the cube of side length 2 centered at the origin whose sides are -parallel to `frame'. The point (1,1,1) is a vertex of the tetrahedron. - - Up to scale, the icosahedron's vertices lie on the golden rectangle -with vertices (\pm\gamma,0,\pm1) and its images under cyclic -permutation of coordinates. The dodecahedron is dual to the icosahedron. - - - -Parametrized paths on a `Sphere S' (by default the unit sphere) can be -specified either by radial projection of a `P'-valued curve, or by -stereographic projection of a plane curve given as a pair of -`double'-valued functions: - - frontplot_R(phi, t_min, t_max, n, [S]); // radial - frontplot_N(f1, f2, t_min, t_max, n, [S]); // from north pole - frontplot_S(f1, f2, t_min, t_max, n, [S]); // from south pole - Attempts to perform radial projection on a path through the origin -will generate division-by-zero errors. Stereographic projection maps -the equatorial plane \x_3=0\ to the unit sphere by projection from the -corresponding pole: N=(0,0,1), S=(0,0,-1). - - Each spherical plot command has a `back' version that prints only -the portion of the path invisible from the current viewpoint. Because -of the way `ePiX' layers output, it is generally best to put hidden -portions of the input before visible portions, with line width and/or -style that suggests hidden lines. - - - -Files of numerical data can be created, manipulated, analyzed, plotted -(paths, scatter plots, and histograms), read, and written. The format -for a data file is one or more floating-point numbers per line, with -the same number of entries per line. Anything that appears on a line -after the `LaTeX' comment character `\%' is a comment. - - `ePiX' provides two `plot' commands for file data. The first -facilitates plotting selected columns; the second simplifies plotting -the first two columns with one or both scales logarithmic. Either form -can be used to plot selected columns logarithmically. - - The general commands read numbers from two or three columns of a -specified file, pass them as arguments to a `P'-valued function `F', -and plot the resulting points: - - plot("filename", STYLE, [i_1], [i_2], [i_3], [F]); - plot("filename", STYLE, F, [i_1], [i_2], [i_3]); - The first argument is the name of the data file. The `STYLE' may be -`PATH', which joins the points in the order they appear, or any of the -marker types in Table *Note table:marker::, . The integers i_k specify -columns from which to extract data; these default, respectively, to the -first column, second column, and null (a column of zeroes). If the -"coordinate system" `F' is omitted in the first command, it defaults to -the Cartesian point constructor. The function `F' is mandatory in the -second form; useful choices include `log_log', `log_lin', and -`lin_log', which plot the corresponding coordinate logarithmically. - - - -For more elaborate analysis, the `data_file' class presents an -interface to a file as an ordered list of columns. There are two -general ways to create a `data_file': read in an external file, or -generate data (up to three columns) using specified `double'-valued -functions. In the constructors below, each function `fi' is a -`double'-valued function of one variable. - - data_file DF("my_data"); // read data from disk file - data_file DF(f1, t_min, t_max, num_pts); // values of f1 - data_file DF(f1, f2, t_min, t_max, num_pts); - data_file DF(f1, f2, f3, t_min, t_max, num_pts); - data_file DF(3); // create empty data_file with 3 columns - DF.read("file1"); // read a disk file - - Columns of a `data_file' can be transformed by a user-specified -function, averaged, correlated, extracted (for use by other code), -scatter plotted, and written to a disk file at specified precision. -Below, the function `f' is a `double'-valued function of one variable -and `F' is a `P'-valued function of two or three variables, whose -components are written back to the selected columns. - - DF.transform(f, i); // apply f to selected column(s) - DF.transform(F, i=1, j=2); - DF.transform(F, i, j, k); - Basic statistical operations on columns are provided. - - DF.dot(i,j); // dot product of columns i, j - DF.avg(i); // mean of column i - DF.var(i); // population variance - DF.covar(i,j); // covariance - DF.regression(i,j); // plot regression line - A `data_file' is scatter plotted using syntax as described above. % -The output is cropped automatically to the bounding box. - - DF.plot(STYLE, [i1], [i2], [i3], [F]); - DF.plot(STYLE, F, [i1], [i2], [i3]); - Histograms and bar charts are described below. - - A `data_file' can be written to a disk file as raw data, or in -specified format. Below, `fmt' denotes a `string'-valued formatting -function of two variables and `myfile' is the name of the disk file to -be written. - - DF.precision(4); // set to 4 significant figures - DF.write("myfile"); // write as tab-separated columns - DF.write("myfile", fmt, [i1], [i2]); // apply fmt to cols - A column can be extracted as a `C++' `vector' for use by another -function. - - DF.column(i); // i-th column - DF.column(f, i); // i-th column, transformed by f - - - -`ePiX' provides a `data_mask' class for culling data from a file -according to the values in a specified column, and a `data_bins' class -for sorting data by value. - - A `data_mask' consists of an interval of numbers and a "filter" -function. The (closed, open, or half-open) interval is given as a -string in standard mathematical notation, or by its endpoints (for a -closed interval). The filter is a `double'-valued function of -`double', by default the identity, f(x)=x. - - data_mask dm("[a, b]", [f]); - data_mask dm(a, b, [f]); - A `data_mask' "passes" inputs x if f(x) lies in the interval. The -member function `reverse()' inverts this logical test. - - The `data_file' class has `prune' functions to cull rows for which a -specified column's entry satisfies a `data_mask''s criterion. - - DF.prune(dm, i); // remove row if i-th column entry fails - DF.prune(a, b, i); // remove row if i-th column outside [a,b] - - A `data_bins' object models an interval divided at specified -locations into "bins", not necessarily of equal length. Numerical data -is read in and the number of points in each bin counted. The lifetime -of a `data_bins' object has two stages. First, "cuts" (endpoints of -subintervals) are added. Then, once data is read, the cuts are "locked" -and cannot subsequently be changed. - - // [xmin, xmax] divided into n equal intervals, 1 by default - data_bins db(xmin, xmax, [n]); - db.cut(x); // add a cut at x (if x is in bounds) - db.read(vector<double>); // read data, lock bins - - A `data_bins' object can be plotted as a histogram (rectangles' -_area_ is proportional to the bin population), bar chart (rectangles' -_height_ is proportional to the bin population), or spline -interpolation of a bar chart. - - db.histogram(c=1); // c = vertical scale factor - db.bar_chart(c=1); - db.plot(c=1); - By default (`c=1'), the height of a bar chart rectangle is the -fraction of the total population contained in the bin; thus, the height -is always between 0 and 1. For a histogram, the height of a rectangle -is the fraction of the population per horizontal unit in the bin; thus, -the total area over an interval [a,b] does not depend on how [a,b] has -been subdivided. The sample files `dataplot.xp' and `histogram.xp' -illustrate use. - - Statistical convention dictates cuts be chosen distinctly from data -values; that is, values should all fall strictly within a bin, not at a -boundary point. With large, unknown data sets, this convention may be -difficult to uphold. `ePiX' attempts to handle anomalous data -intelligently, by keeping counts of values "out-of-range" or "on-cut". - - In detail, if x<a or x>b is a data value, it is counted as -out-of-range and does not contribute to the histogram population. If -x=a or x=b, the value counts as both out-of-range and on-cut but is -added to the population of the lowest or highest bin, respectively. Any -other cut appearing as a data input is flagged as on-cut, and -increments the population of each adjacent bin by one-half. When a -histogram or bar chart is written, `ePiX' prints a warning message -summarizing the number of anomalous data seen. - - - -Simple horizontal and vertical error bars are provided. The final -(optional) argument is the true height or width (respectively) in pt. - - h_error_bar(P location, double error, <mark type>, ht=6); - v_error_bar(P location, double error, <mark type>, wd=6); - - To create more complex elements, such as asymmetric bars, whisker -plots, labeled error bars, and the like, write a custom function using -true-size drawing, see page *Note truesize::. For example, a fillable, -labeled, asymmetric, vertical rectangular error bar can be implemented -(entirely in `ePiX') like this: - - void error_bar(P loc, double lo, double hi, P offset, - std::string text, align, double wd=6) - { - const double width(pt_to_screen(0.5*wd)); // converts to 3pt - rect(loc - P(width, lo), loc + P(width, hi)); - line(loc - P(width, 0), loc + P(width, 0)); - label(loc + P(width, 0), offset, text, align); - } - For stylistic uniformity, functions such as this should be put into a -library and used systematically. Section *Note section:extensions::, -outlines the process of writing, compiling, and using a custom library. - - - -A `legend' systematically labels different parts of a plot by -associating visual "keys" with explanatory text. This tends to be most -useful for plots containing several distinct but conceptually related -graphs requiring contrast. - - Visually, a `legend' is represented as an aligned list of rows, each -containing a box (the key), a gap (the label skip), and some text. -These rows are printed in a (usually large) masked label. By default, -keys are `12pt' squares bordered in black, the label skip is `6pt', the -background is white, and the border is plain black. These attributes -are controlled (simultaneously for all items) with member functions. -Parameters of type `double' represent lengths in `pt'. - - legend L; - L.backing(color); // set background - L.border(color, [double]); // set border color [and width] - L.border(double); // border width - - L.item_border(color, [double]); - L.item_border(double); // same, for item borders - - L.label_skip(double); - L.key_size(double); - - - -There are three types of legend key, representing filled regions, -paths, and markers. Fill and path keys get their visual attributes from -the current drawing state. A mark key must be told the marker type. -Each is created by specifying the item text. - - L.fill_item(text); - L.path_item(text); - L.mark_item(<mark type>, text); - Keys in the printed legend appear in the same order they are created -in the input file. - - - -Normally, a `legend' is defined near the start of a file, and an item -is added at the point in the file where the corresponding object or -plot is drawn, so that the item receives the correct attributes. A -`legend' is placed into the figure with the `draw' function. The -arguments have the same meaning as for ordinary `label's. - - L.draw(P location, P offset, align); - All three arguments are mandatory. "Global" `legend' settings -(border, backing, etc.) may be changed anywhere between the `legend''s -creation and `draw' function. The sample file `legend.xp' revisits the -example on page *Note taylor_poly::, including a trig-labeled axis and a -legend. The file `shadeplot.xp' contains filled keys, and `dataplot.xp' -contains a `legend' with items of mixed type. - - -File: epix.info, Node: More About `C++', Next: Attribute Quick Reference, Prev: Creating and Drawing Objects, Up: Reference Manual - -3.7 More About `C++' -==================== - -A textbook or similarly detailed reference is essential for serious -study of `C' or `C++'. _The `C' Programming Language_, second edition, -by Kernighan and Ritchie `KnR', is an excellent, manageable resource -for the basics of procedural programming. _C++ Primer Plus_, by Stephen -Prata `Prata', clearly lays out the extensive details of `C++'. -Marshall Cline's _`C++' FAQ Lite_ `Cline' engagingly discusses common -points of confusion and furnishes tips on good design and programming. - - `C++' is a powerful, complex language whose syntax is similar to that -of `C', or to the scripting languages of Maple and Mathematica. An -`ePiX' input file is source code for a `C++' program that writes a -`LaTeX' picture as output. `ePiX' may be viewed as an extension to -`C++'; in the same way that `LaTeX' furnishes a high-level interface to -`TeX', `ePiX' provides a high-level bridge between the computational -power of `C++' and the `LaTeX' `picture' environment. - - Like all high-level programming languages, `C++' provides variables, -functions, and control structures. Variables hold pieces of data such -as numerical values and geometric locations, while functions operate on -data. A control structure, such as a loop or conditional statement, -affects the program's course according to the program's current state. -A source file is composed primarily of "statements", which perform -actions ranging from defining variables and functions to setting figure -attributes, performing calculations, and writing objects to the output -file. - - - -Names of variables and functions may consist (only) of letters, digits, -and the underscore character. The first character of a name must not be -a digit, and the language standard reserves names starting with -underscore for library authors. Names are case-sensitive, but it's -usually a bad idea to use a single name capitalized and uncapitalized -in a single file. Numerous capitalization conventions are used -informally; this document uses uncapitalized words separated by -underscores for variables and functions, and occasionally uses all -capitals for constants. As with names of `LaTeX' macros, primary -considerations are clarity (of meaning), readability, and consistency. - - Every variable in `C++' has a "type", such as integer (`int'), -double-precision floating point (`double'), or Boolean (`bool', true or -false). `ePiX' provides additional types, the most common of which is -`P', for point. The construct `P(x,y,z)' creates (x,y,z), while -`P(x,y)' gives (x,y,0), which is effectively the pair (x,y). A variable -is defined by giving its type, its name, and an initializing expression. - - In `C' and `C++', a _pointer_ variable holds the memory address of -another variable. Pointers are useful for manipulating (possibly large) -data structures through "handles" of fixed small size. `C++' also -provides _references_, which bind an additional name to an existing -object and allow the object to be manipulated through this alias. The -statements - - double x=1; // ordinary variable definition - double& rx=x; // bind a reference, signified by & - define a variable `x' having the value 1, and bind a reference -variable `rx' to it. As long as `rx' exists, it refers to `x'. If the -value of `x' changes, the value of `rx' does as well. Conversely, the -value of `x' can be altered by assigning to `rx'. However, `rx' is the -size of a pointer, regardless of the size of `x', so `rx' can be passed -efficiently in a function call. - - - -In a programming language, the term "function" refers to a block of -code that is executable by name. A `C++' function takes a list of -"arguments", and has a "return value". This information, together with -the function's name, must be provided when a function is defined. A -function may not be defined inside another function. However, a -function may call other functions (including itself) as part of its -execution: - - int factorial(unsigned int n) - { - if (n == 0) return 1; - else return n*factorial(n-1); - } - - The special type `void' represents a "null type". A function that -performs an action but does not return a value has return type `void'. -A function that takes no arguments may be viewed as taking a single -`void' argument. - - Every `C++' program has a special function `main()', which is called -by the operating system when the program is run. The arguments of -`main()' are command-line arguments, and the return type is an integer -that signals success or failure. User-specified functions must be -defined before the call to `main()' or in a separately-compiled file. - - Functions in `C++' may be as simple as an algebraic formula or as -complex as an arbitrary algorithm. Greatest common divisors, finite -sums, numerical derivatives and integrals, solutions of differential -equations, recursively generated fractal curves, and curves of best fit -are a few applications in `ePiX'. Several sample files contain -user-level algorithms, which do not require knowledge of `ePiX''s -internal data structures. The source file `functions.cc' contains -simple functions defined by algorithms, and `functions.h' illustrates -the use of `C++' templates. Other source files, such as `plots.cc', may -be consulted for Simpson's rule, Euler's method, and the like. - - - -`C++' knows several familiar mathematical functions by name: - - sqrt exp log log10 ceil floor fabs - (`fabs' is the absolute value for a floating-point argument.) `ePiX' -provides trig and inverse trig functions sensitive to angular mode: - - Cos Sin Tan - Sec Csc Cot - Acos Asin Atan - The inverse functions are principle branches. - - The function `pow(x,y)' returns x^y when x>0, and `atan2(y,x)' (N.B. -argument order) returns Arg(x+iy)\in(-\pi,\pi], the principle branch of -arg. `C++' knows many constants to 20 decimal places, such as `M_PI', -`M_PI_2', and `M_E' for \pi, \pi/2, and e respectively. `ePiX' defines -a few additional functions: - - sgn zero sinx cb - `sgn' is the signum function; `zero' is the constant function; `sinx' -is the function x\mapsto \sin(x)/x with the discontinuity removed; `cb' -(for "Charlie Brown") is the period-2 extension of the absolute value -function on [-1,1]. - - The GNU `C++' library defines other functions, including inverse -hyperbolic functions (`acosh', etc.), `log' and `exp' with base 2, 10, -or arbitrary b (`log2', etc.), the error and gamma functions (`erf' and -`tgamma' [sic], respectively), and Bessel functions of first and second -kind: `j0', `j1', `y0', etc. Use, e.g., `jn(5, )' to get higher -indices. The GNU `C' library reference manual `GNUC' describes these -and other functions in detail. - - Functions may be used in subsequent definitions, and functions of two -(or more) variables are defined in direct analogy to functions of one -variable: - -double f(double t) { return t*t*log(t*t); } // t^2 \ln(t^2) -double g(double s, double t) { return exp(2*s)*Sin(t); } - - - - -Unlike `C', `C++' supports "object-oriented programming". In a -nutshell, a _class_ is an abstraction in computer code of some concept, -such as a point, a sphere, a mapping that can be plotted, or a camera. -Classes allow a programmer to separate an object's _interface_ (the set -of meaningful operations) from its _implementation_ (the data -structures and algorithms that realize the interface). - - A class implementation consists of _members_ (named data elements) -and _member functions_ (functions that belong to the class and have -free access to members). `C++' classes enforce access permissions on -their members, protecting data from being manipulated except as -promised by the interface. - - An ideal interface looks like a black box: It hides the -implementation completely. In order to cooperate, two classes need -only know each other's interfaces. This separation of form and function -modularizes a program, and facilitates debugging, code reuse, and -overall maintainability, particularly in large programs. - - In simple programming, classes may be treated like built-in types. -Each class object has its own member functions, whose call syntax -differs from standard function calls: - - Circle C1(P(1,0), 1.5); // circle of given center and radius - C1.draw(); // member function Circle::draw(); - Naturally, this call draws the circle `C1'. Generally, a member -function call consists of a class object's name, a period, and the name -of the member function. Arguments, if any, go in the parentheses after -the member function name, just as in a regular function call. - - A few short paragraphs cannot do more than scratch the surface of -classes and object-oriented programming. For more details, please -consult a book, such as Prata `Prata' or Stroustrup `S', or Cline's -on-line FAQ `Cline'. - - - -`C' and `C++' are "call by value" languages. Variables are not passed -to a function; instead a copy of the value is made, and the function -operates only on the copy. Though this feature causes occasional -inconvenience, it prevents an object from being altered unexpectedly by -a function call in a different part of the program. Calling by value -helps localize the logic of a program, and circumvents easy-to-write -but extremely hard-to-find bugs. - - In `C++', a function may accept reference arguments. Passing an -object by reference grants the calling function access to the object -itself, not to a copy. There are two common applications: The object is -a large data structure for which copying is "expensive", or the -function _needs_ to modify its arguments (e.g., a function `swap(x,y)' -that exchanges the values of `x' and `y'). - - For the first situation, `C++' provides the `const' keyword, which -ensures the function does not modify its arguments, but accepts a -reference merely for efficiency. Any attempt to modify a `const' -argument will be caught by the compiler. Most `ePiX' commands accept -`const' reference arguments. - - The ability to pass function arguments by reference is sometimes -touted as a feature in `C++' texts. However, the technique circumvents -the data encapsulation of calling by value, and should be avoided -unless absolutely necessary. If a function merely "updates" the value -of a variable, probably the variable should be of class type, and the -update should be performed by a member function. - - A function declaration must indicate that its arguments are -references. The declarations below have the indicated idiomatic -meanings. - - class matrix; - double det(matrix); // call by value, perhaps inefficient - matrix& transpose(matrix&); // probably changes its argument - double trace(const matrix&); // does not change its argument - Unlike pointer arguments, reference arguments impose no syntactic -burden on the user. If `A' is a `matrix', then `transpose(A);' and -`trace(A);' will compile. You need not declare explicit reference -variables and pass those to the function. - - - -`C++' provides "overloading": Multiple functions can be given the same -name, so long as the number and/or type of their arguments differ. (It -is _not_ enough for the return types alone to differ. The compiler -must be able to select a function from its calling syntax.) To the -user, the appearance is that a single function intelligently handles -multiple argument lists. Naturally, overloaded names should refer to -functions that are conceptually related. - - - -A `C++' statement ends with a semicolon. A collection of statements -enclosed by curly braces is a "code block", and may be viewed as a -single logical statement. Curly braces determine a "scope", inside -which variable names may be re-used without ambiguity. Function bodies -are code blocks, as are the alternatives associated to control -statements. A variable defined between curly braces is said to be -_local_ to the scope in which it is defined; its value cannot be used -out of scope. Variables should be declared in the smallest scope -possible. - - The compiler is not picky about spaces, tabs, and newlines, so an -input file should be formatted to make local scopes visually apparent. -`emacs' automatically indents code to reflect scope, though the default -behavior does not please all users. As with variable naming, clarity -and consistency are paramount. - - - -A `C++' source file is compiled in multiple stages that occur -transparently to the user. The first step, pre-processing, involves -simple text replacement for file inclusion, macro expansion and -conditional compilation. Next, the source is compiled and assembled: -Human-readable language instructions are parsed, then represented in -assembly language. Finally, the object files are linked: Function calls -are resolved to hard-coded file offsets, possibly involving external -library files, and the program instructions are packaged into an -executable binary that the operating system can run. - - Pre-processing is used much less in `C++' than in `C'; the language -itself supports safer and more featureful alternatives to macros, such -as `const' variables and inline functions. File inclusion and -conditional compilation are the chief uses of the pre-processor. Lines -of the form - - #include <iostream> - #include "epix.h" - cause the contents of a _header file_ to be read into the source file. -A header file contains variable and function _declarations_, statements -that specify types and names but do not define actual data. -Declarations tell the compiler just enough to resolve expressions and -function calls without knowing specific values or function definitions. - - Conditional compilation is similar to conditional `LaTeX' code. For -example, a file might produce either color or monochrome output as -follows: - -#ifdef COLOR - ... // code for generating color figure -#endif /* COLOR */ -#ifndef COLOR - ... // monochrome code -#endif /* undef COLOR */ - The "compiler symbol" `COLOR' is an ordinary `C++' name. To control -compilation, either put a `\#define COLOR' line in the file, or -(better) supply the flag on the command line: \\ epix -DCOLOR -<file.xp> \\ Every `\#ifdef' must have a matching `\#endif'. Commenting -the `\#endif' is a good habit; in a realistic file, the start and end -of a conditional block may be separated by more than one screen. - - - -As a programming language, `C++' provides certain features common to -all languages (such as `LaTeX', MetaPost, Perl, Lisp\ldots) and adheres -to rules of grammar. Salient differences between `LaTeX' and `C++' -include: - - 1. Every `C++' statement and function call must end with a - semicolon. An omitted semicolon may result in a cryptic error - message from the compiler. Pre-processor directives, which start - with a `\#', do not end with a semicolon. - - 2. Backslash is an escape character in `C++': - // Put label $y=\sin x$ at (2,1) - // Note single ^ backslash in output - label(P(2,1), P(0,0), "$y=\\sin x$"); - // Double backslash ^^ in source - - 3. Variable and function names may contain letters (including - underscore) and digits _only_, are case sensitive, and must - begin with a letter. - - 4. Variables in `C++' must have a declared _type_, such as `int' - (integer) or `double' (double-precision floating point). If a - variable has global scope and its value does not change, the - definition should probably come in the preamble or at the - beginning of `main'. Local variables should be defined in the - smallest possible scope. Unlike `C', `C++' allows variables to be - defined where they first appear. - - 5. `C++' requires explicit use of `*' to denote multiplication; - juxtaposition is not enough. `C++' does not support the use of ^ - for exponentiation, e.g., t^2 is invalid. Instead, use `t*t' or - `pow(t,2)'. - - 6. `C++' has single- and multi-line comments. Everything between a - double slash and the next newline is ignored, while the strings - /* and */ delimit multi-line comments. A single-line comment may - appear within a multi-line comment, but the compiler does not - nest multi-line comments. - - - Between them, `C' and `C++' have about 100 reserved keywords which -cannot be used as function or variable names. - - -File: epix.info, Node: Attribute Quick Reference, Prev: More About `C++', Up: Reference Manual - -3.8 Attribute Quick Reference -============================= - -In the body of an input file, the "drawing state" determines the -figure's appearance. Attributes are declarations, set by commands that -accept arguments of the stated type. - - A `len' argument is a double-quoted string containing a number and a -two-letter `LaTeX' length unit, such as `"1.5pt"' or `"6cm"'. A `color' -argument is a named primary (`Red()', `Cyan()', `White()', etc.), a -`Color' specified by densities (`RGB(...)', `CMYK(...)', etc.), or a -`Color' object. Using `Neutral()' as a `Color' argument generally turns -off the corresponding attribute. - - * Angular mode: `radians()', `degrees()', or `revolutions()'. - - The angular mode affects all trigonometric operations, including - camera rotations, the drawing of arcs and ellipses, polar plotting, - label angle, and the trig functions themselves. Angle-sensitive - trig functions are capitalized, e.g., `Cos', `Tan'. - - * Fill style: `fill(color)', `fill(bool)', `nofill()'. - - * Path style: - - * Width: `plain()', `bold()', `bbold()', `pen(len)'. - - * Line style: `line_style(string)'. The argument is a - WYSIWYG sequence of dashes, spaces, and periods. - `dash_size(double)' and `dot_sep(double)' set the - (approximate) length in `pt' of the pattern. The commands - `solid()', `dashed()', `dotted()' define "standard" - defaults for brevity. - - * Path color: Paths can be drawn using _two_ pens, one atop - the other. When the "base" pen is white (or the - background color) and wider than the "line" pen, a path - masks parts of the figure it crosses. A 3-D effect may be - obtained by making the base pen a darker shade than the - "line" pen. - - `pen(color,[len])', `base(color,[len])' - - Standard widths: `plain(color)', `bold(color)', - `bbold(color)' - - - * Text attributes: - - * Color: `label_color(color)' - - * Mask: `label_mask(color)', `label_pad(len)' - - * Border: `label_border(color, [len])', - `label_border(len)'. The command `no_label_border()' - turns off label borders. - - * Font size: `font_size(LaTeX size)', no argument means - `normalsize'. - - * Font face: `font_face(LaTeX font)', two-letter font - selection string, default is `rm'. - - * Rotation: `label_angle(double)' - - - - Do not confuse `Color' constructors with the similarly-named -(deprecated) lowercase attribute-setting commands, `rgb(r,g,b)', -`cmyk(c,m,y,k)', `red(d)', etc. These commands affect text, paths, and -filled regions. For example, the single command `red()' has the same -effect as the three commands `pen(Red())', `fill(Red())', and -`label_color(Red())'. - - -File: epix.info, Node: Advanced Topics, Next: Software Freedom, Prev: Reference Manual, Up: Top - -4 Advanced Topics -***************** - -This chapter covers _ad hoc_ tricks and open-ended techniques that -require relatively more programming sophistication. You will almost -surely need an external `C++' reference if you do not speak the -language. - -* Menu: - -* Hidden Object Removal:: -* Extensions:: -* Programmer's Guide:: - - -File: epix.info, Node: Hidden Object Removal, Next: Extensions, Prev: Advanced Topics, Up: Advanced Topics - -4.1 Hidden Object Removal -========================= - -`ePiX' writes the output file in the same order that objects appear in -the input. The order is significant because PostScript builds a figure -in layers: Objects are drawn over objects that come earlier in the -file. Shaded polygons can be used to obtain surprisingly effective -hidden object removal in surface meshes. This section describes the -data structures defined in the source files `surface.*'. - - The basic idea is to create a shaded polygon class that knows its -approximate distance to the camera. For computational simplicity, a -mesh "facet" is treated as a quadrilateral, located at the arithmetic -mean of its vertices. A facet's boundary is created from a map and a -domain by tracing a fine mesh rectangle counterclockwise. - - To draw a parametrized surface, facets are stored in a `C++' vector, -sorted in decreasing order of distance to the camera, and printed to -the output file. If filling is active, the gray density of a facet -depends on the cosine of the angle between the normal vector and the -vector from the camera to the element. - - This simple algorithm works surprisingly well when mesh elements -intersect at most along complete edges. To incorporate line-like -elements (e.g., coordinate axes, wire-mesh plots) with shaded surfaces, -the best technique is often to order high-level scene elements -manually, breaking up shaded surfaces (for example, with domain -resizing or clipping) as necessary. The sample file `saddle.xp' -illustrates possible techniques. - - Shaded surfaces can be decorated with a bit of hackery. For example, -the `facet::draw' function in `facet.cc' can be modified easily to draw -line elements, tangents, or normal vectors along with the facet itself. -The sample file `decorate.xp' contains a couple of ideas. (The -decorations are activated by compiler flags; please consult the file -itself for information on compiling.) - - -File: epix.info, Node: Extensions, Next: Programmer's Guide, Prev: Hidden Object Removal, Up: Advanced Topics - -4.2 Extensions -============== - -Thanks to a suggestion of Andrew Sterian, `ePiX' is extensible. User -extensions span a spectrum, from header files that require only basic -knowledge of `C++' to separately compiled libraries that add -substantial new features. The structure of the source code is outlined -in Section *Note section:programmers::, . - - - -A `C++' header file conventionally has suffix `.h', as in `myheader.h'. -To use this custom header, put a line `\#include "myheader.h"' in your -source file. - - User definitions can be easily and robustly implemented with "inline -functions". Inline functions are superficially similar to macros, but -are far more safe and featureful (since they are handled by the -compiler rather than by the pre-processor). Examples are - - inline void Bold() { pen(1.6); } - inline void purple() { rgb(0.5, 0, 0.7); } - inline void draw_square(double s) { rect(P(-s,-s),P(s,s)); } - inline double cube(double x) { return pow(x,3); // x^3 } - The keyword `void' signifies a function that does not return a value, -or (when used as an implicit parameter) a function that does not accept -arguments. Inline function definitions are syntactically identical to -ordinary function definitions, but _must_ occur in a header file or in -the source file where they are used. The examples above might be used -in an input file as follows: - - Bold(); - draw_square(cube(1.25)); - - - -The next few sections outline the creation of a "static library" on -GNU/Linux, and explain how to incorporate custom features at runtime. -The extensively-commented sample files `std_F.cc' and `std_F.h' -illustrate the techniques described below, and may be used for guidance -and experimentation. - - A small library is usually written as a _header_ file, which -contains class and function declarations (also called "prototypes"), -and a _source_ file, which contains the actual code. Conventionally -(under *nix), these files have extension `.h' and `.cc' respectively. -Header and source files may "include" other header files, to -incorporate additional functionality. - -/* my_code.h */ -#ifndef MY_CODE -#define MY_CODE -#include <cmath> // standard library math header -#include "epix.h" // ePiX header -using ePiX::P; - -namespace Mine { // to avoid name conflicts - // functions for special relativity - double lorentz_norm(const P&); - bool spacelike(const P&); -} // end of namespace -#endif /* MY_CODE */ - This file exhibits two "safety features". The three `MY_CODE' lines -prevent the file from being included multiple times. In a file of this -size, inclusion protection is overkill, but as your code base grows and -the number of header files increases, this protection is essential. -Second, the header introduces a "Mine" namespace. Inside this -namespace, two functions are declared as prototypes, giving the -function's return type, name, and argument type(s). A header file -should be commented fairly liberally, so that a year or two from now -you'll be able to decipher the file's contents. For a longer file, -version and contact information, an overall comment describing the -file's features, and license information are appropriate. - - Next, the corresponding source file; definitions are also placed into -the namespace, and must match their prototypes from the header file -exactly. - -/* my_code.cc */ -#include "my_code.h" -using namespace ePiX; - -namespace Mine { - double lorentz_norm(const P& arg) - { - double x(arg.x1()), y(arg.x2()), z(arg.x3()); // extract coords - return (y-x)*(y+x) + z*z; // -x^2 + y^2 + z^2 - } - bool spacelike(const P& arg) - { - return (lorentz_norm(arg) > 0); // true if inequality is - } -} // end of namespace - Copies of these files are included with the source code so you can -experiment with them. Next, the source file must be "compiled", -"archived", and "indexed". In the commands below, the percent sign is -the prompt. - -% g++ -c my_code.cc -% ar -ru libcustom.a my_code.o -% ranlib libcustom.a - Please see your system documentation for details on command options -and what each step does. For linking (below), the name of the library -file must begin "lib" and have the extension `.a'. Once these steps are -successfully completed, put the library `libcustom.a' and header file -`my_code.h' in your project directory. You're ready to use the code in -an `ePiX' figure. - - - -The script `epix' allows input files to be linked with external -libraries at run time, when the input file is compiled into a temporary -executable. - - `epix' recognizes command line options and passes them verbatim to -the compiler. The most commonly used options are those of the form - - -I<include> -L<libdir> -l<lib> - For example, to link `figure.xp' against `mylibs/libcustom.a', run the -command - - epix -Lmylibs -lcustom figure - The options `-I. -L.' tell the compiler to look in the current -directory for header and library files. Compiler options may appear in -any order, but must come before the name of the input file(s). - - Compiler options may be placed in the configuration file -`\$HOME/.epixrc', with syntax as above. A line in the config file that -contains a pound sign (`\#') is a comment, no matter where in the line -the `\#' appears. If any non-comment line fails to start with a dash, -the rest of the file is silently discarded. Command-line options are -read before the config file. - - - -The script `epix' links by default against the `C' math library -`libm.a' and the `ePiX' library `libepix.a'. The command option -`--no-defaults' clears the header and include paths and removes -`libepix.a' from the link list. The script may therefore be used with -multiple versions of `ePiX', a potentially useful feature if you -regularly need to compile old source files, or simply prefer the syntax -of an older version. - - To install and use (say) Version 1.0.0, build the package according -to its `INSTALL' instructions, but _do not use the makefile to -install_. Instead, manually install the header and library only, using -their version number: - -# install -m 644 epix.h /usr/local/include/epix-1.0.h -# install -m 644 libepix.a /usr/local/lib/libepix-1.0.a - A non-system directory may be used instead of `/usr/local'. To use -the old version, a source file must `include' the appropriate header -file (which is identified by its version number). To compile, issue a -command such as - -epix --no-defaults -I/usr/local -L/usr/local -lepix-1.0 file.xp - - -File: epix.info, Node: Programmer's Guide, Prev: Extensions, Up: Advanced Topics - -4.3 Programmer's Guide -====================== - -This section briefly surveys `ePiX''s implementation, and is intended -for (potential) programmers. The source code is divided into modules -with small, well-defined responsibilities, but the user interface is -mostly compatible with the syntax of Version 1.0. These constraints -demanded a degree of implementation hiding. For example, the -user-visible classes defined in `Color.h', `path.h', and `screen.h' -contain only a pointer to the implementation class, and style data is -hidden behind global commands. - - Functionally, the code consists of the user interface; implementation -class\-es comprising drawing attributes, spatial objects, screens and -representations of their elements, and output; and miscellaneous -utility functions. The headers in each group, and their contents, are -described in Section *Note section:interface::, . - - The user interface headers are assembled into a single file, -`epix.h', and installed in `/usr/local/include' by default. In normal -use, the shell scripts read only the user interface header. The -individual headers, including the components of `epix.h', are installed -in `/usr/local/include/epix'. These are provided for authors of -external libraries, who may need access to implementation details. - - - -`ePiX' harnesses the computational power of `C++' to the typographical -capabilities of `LaTeX'. Consequently, `ePiX' should be viewed in part -as a framework for expressing numerical data visually. - - In the course of your work, you may develop specialized code filling -a gap in `ePiX''s functionality. If your code seems likely to be of -interest to other users, please consider bundling it as an external -package and notifying the `ePiX' community so your work can be linked -from the project pages and distributed to interested users. - - There are no formal requirements for external packages, but in the -interest of uniformity contributed code should follow the GNU Coding -Standards `GNUCoding'. At a minimum, an external package should build -with the standard `./configure; make; make install' commands, and the -`configure' script should accept an option `--with-epix' for the user -to specify a non-default `ePiX' install directory. - - If an external package builds a static library, it should provide a -single header containing all the package's entry points, and enclose -its interface in a namespace. Entry points should not collide with -`ePiX' functions. Naming the package "`epix-<...>'" is a good idea, but -not essential. For example, a package providing textual nodes and -diagram layout might be named `epix-nodes'. Input files would use the -package with the lines - - #include "epix-nodes.h" - using namespace ePiX-nodes; - and be compiled with - - epix -lepix-nodes <file> - - The user and internal interfaces of `ePiX'-1.2 are not likely to -change. Still, it's prudent to rely only on the user interface in -contributed code whenever possible. Doing so also simplifies your work -as an author; your library can simply `include' the user header file, -and deal only with high-level objects and drawing attributes. - - - -These files (in order) comprise the global header `epix.h'. - - `enums.h' Marker, alignment, Riemann integral, and vector field -types. - - `length.h' Physical lengths, conceptually a number and two-letter -`LaTeX' length unit. - - `interval.h' Closed, open, and half-open interval ranges for data -culling. - - `triples.h' The `P' class. - - `functions.h' Angle-sensitive trig functions, miscellaneous utility -functions, the `Deriv' and `Integral' classes. - - `pairs.h' Screen locations and displacements, with complex -arithmetic operations. - - `Color.h' The Color class interface, named primaries and -constructors. - - `state.h' Angle mode; clipping and cropping; label styles; filling; -arrow head style; dot and tick sizes, dash length; line style; line and -base pen attributes; color-setting commands. - - `frame.h' Orthonormal bases. - - `domain.h' Coordinate boxes for function plotting. - - `camera.h' The camera. - - `screen.h' The screen class. - - `picture.h' Dimension-setting, offset, layout, decoration, verbatim -text, and output format commands. - - `markers.h' Point markers, axis labels, and coordinate axes. - - `axis.h' Coordinate axes and labels in various styles. - - `legend.h' Plot legends. - - `path.h' The path class. - - `curves.h' Polygons, arrows, ellipses, arcs, splines, coordinate -grids, and recursive fractal curves. - - `circle.h' The `Circle' shape object class. - - `plane.h' The `Plane' shape object class. - - `segment.h' The `Segment' shape object class. - - `sphere.h' The `Sphere' shape object class. - - `intersections.h' Shape object intersection operators. - - `plots.h' Plotting commands. - - `surface.h' Shaded surface plots. - - `data_mask.h' Helper class for data pruning. - - `data_file.h' Class for storing and representing data. - - `data_bins.h' Class for sorting and counting data. - - `geometry.h' Latitudes and longitudes; spherical plotting, arcs, -polygons, and polyhedra; hyperbolic arcs. - - - -`Color_Base.h' The Color implementation interface. - - `Color_CMY.h' The CMY color model. - - `Color_CMYK.h' The CMYK color model. - - `Color_Gray.h' The Gray color model. - - `Color_Neutral.h' Each color class has a "Neutral" member that -converts colors to that model by filtering. This file defines the -unique "model-less" Neutral color for which filtering performs no -action. - - `Color_RGB.h' The RGB color model. - - `Color_Sep.h' Classes for CMYK separation. - - `active_screen.h' Simple manipulator for the active screen. - - `picture_data.h' Picture implementation: two `screen' s -(representing the `canvas' and the output page), true dimensions and -offsets, pointer to output format, list of colors, and lists of -verbatim text to write before and after printing the `picture' -environment in the output file. For simplicity, the `screen's and -dimensions are public; encapsulation from the user results from -"hiding" this header. - - - -Declaration-style attributes are maintained with functions returning -static references: `the_angle_style()', `the_arrowhead_style()', -`the_label_style()', `the_mark_size()', `the_paint_style()', and -`the_path_style()'. Each function is declared in the analogously-named -header. - - `angle_units.h' Angular modes: `radians' , `revolutions', and -`degrees'. - - `arrow_style.h' Arrow head style data: width, ratio, and inset. - - `label_style.h' Text object style: Label and mask colors, padding, -border color and width, alignment, font size, font face, and angle. - - `marker_style.h' Dot and tick sizes. - - `paint_style.h' Line and base pens, fill color. - - `path_style.h' Solid, dashed, dotted lines. - - `pen_data.h' The pen class. - - - -`arrow_data.h' Arrow representation. - - `facet.h' Shaded surface elements. - - `label_data.h' Text (label and marker) objects. - - `legend_item.h' Items for `legend' s. - - `path_data.h' Path implementation. - - `spline.h' The natural spline class. - - `spline_data.h' Templates for quadratic and cubic splines. - - - -Elements in a `screen' are represented polymorphically as "`tile's", of -which there are six types: `glyph' (textual elements), `pen_arrow' -(arrows), `pen_fill' (filled regions), `pen_line' (path-like elements), -`verbatim' (raw text), and `legend_tile' (legends). - - Border and background shape are dictated by the `screen_mask' class. -The cropping algorithm assumes the contour of a screen mask is convex. - - `affine.h' Affine maps. - - `cropping.h' Screen mask cropping. - - `glyph.h' Markers and labels. - - `legend_tile.h' Screen representation of a `legend' . - - `mask_diamond.h' Screen diamond mask. - - `mask_ellipse.h' Screen elliptical mask. - - `mask_rectangle.h' Screen rectangular mask. - - `pen_arrow.h' Arrows. - - `pen_fill.h' Filled regions. - - `pen_line.h' Paths. - - `screen_data.h' Screen implementation class. - - `screen_mask.h' Screen mask interface. - - `tile.h' Screen element interface. - - `verbatim.h' Text in output stream. - - - -Output is divided into a couple of high-level operations and several -"atomic" low-level operations. To create a new output format, one need -only implement the `format' interface for the desired file type. Paths -and filled regions may be implemented however the output type dictates. - - `eepic.h' eepic macros. - - `fmt_template.h' "skeleton" header for new output formats. - - `format.h' The output interface. - - `pst.h' PSTricks macros. - - `tikz.h' tikz macros. - - - -`Color_Utils.h' Functions for setting color channel densities. - - `clipping.h' The clip box. - - `constants.h' Global constants: Line widths; dot, tick, and dash -sizes; arrowhead parameters; miscellaneous numerical constants and -internal parameters. - - `crop_algorithms.h' Path and loop clipping templates. - - `deriv.h' Finite difference template. - - `edge_data.h' Path element representation template. - - `errors.h' Warning and error messages. - - `frac.h' Rational numbers and operators. - - `halfspace.h' Halfspace cutting. - - `hatching.h' Filling regions in eepic. - - `lens.h' Camera lenses. - - `map.h' Wrappers for templated plotting. - - `plot_algorithms.h' Plotting templates. - - `screen_crop.h' Crop paths and loops. - - `utils.h' Truncation, date and time, line breaking. - - -File: epix.info, Node: Software Freedom, Next: Acknowledgments, Prev: Advanced Topics, Up: Top - -Appendix A Software Freedom -*************************** - -Academics in general, and mathematicians in particular, depend on free -exchange of information. We prove theorems or establish experimental -results, write up formal accounts, place preprints on public file -servers, and submit papers to peer-reviewed journals. If accepted, the -results--data, techniques, methods of reasoning, citations, and -conclusions--are published in print and become part of the public -record, governed by copyright law. Libraries purchase journal -subscriptions, but researchers and scholars may use ideas from the -literature merely by giving appropriate citations in their own work. -"Theft" arises from false claims of authorship. - - Carried over to software, the academic process would guarantee rights -similar to those provided by the GNU General Public License (GPL): - - * (GPL 0) To run a program for any purpose. - - * (GPL 1) To study how the program works, and adapt it to your - needs. - - * (GPL 2) To redistribute copies of the program. - - * (GPL 3) To improve the program, and release improvements to the - public, so that the whole community benefits. - - - In reality, attitudes toward software differ markedly. Most academics -work on a proprietary platform, use proprietary software for research -and teaching, and share information with colleagues and students in -proprietary, even obfuscated, data formats. Contrary to the academic -ethic, proprietary software licenses restrict access to information: -preventing users from learning how a program works internally ("reverse -engineering"), limiting the number of users who may run a piece of -software, and forbidding users from running (or sometimes even -installing) a purchased copy on multiple machines. - - Restrictions on use aside, if one cannot examine a program's source -code, one cannot fully trust the output, any more than one can trust -(for purposes of scientific publication) results of a commercial -testing lab. - - Consider a hypothetical future world in which scholarly results are -disseminated like software. Instead of subscriptions, journals sell -licenses granting readership to a specified number of individuals. -Photocopying an article for a class or research seminar constitutes -"piracy", though if the institution has purchased a sufficiently large -site license the teacher or speaker may bring the physical volume to -class and project the pages onto a screen. - - Of course, reading an article is scarcely enlightening. Mathematics -papers contain only the statements of theorems. Merely opening the -journal binds the reader to a lengthy legal agreement, stating that -theorems be used only for specific purposes and threatening serious -legal consequences for attempting to discover the author's proofs. - - The actions of a single student, employee, or faculty member can -expose an institution to a costly "journal audit" from the Mathematical -Society of America (MSA), with the institution responsible for legal -costs if the audit reveals license violations anywhere in the -organization. - - Mathematicians who long for the Old Days when papers contained -proofs and were shared freely are dismissed as idealistic cranks or -labeled anti-business communists. Common knowledge asserts the obvious -superiority of proprietary journals, and the necessity of licenses for -keeping mathematicians gainfully employed. - - Back in our world, some vendors have attempted to placate opponents -of closed source with "shared source" licenses, under which one may -sign a non-disclosure agreement and subsequently examine source code. -In the future world analogy, a shared source agreement would allow -journal licensees to sign an NDA, then see the proofs of theorems. -Readers could thereby correct errors in proofs (benefitting the -publisher by improving the reliability of the journal), but would be -legally forbidden from using the ideas elsewhere (denying benefit to -other mathematicians). - - Legally and conceptually codifying software as a commodity ignores a -fundamental reality: Like an idea or recipe, software can be copied -without loss of the original. The perception of "theft" by copying -arises from an artificial belief that software has an owner who must be -monetarily compensated each time a person acquires a copy. The nature -of software does not enforce the "sale" model in the way services and -physical commodities do. It therefore seems philosophically -inappropriate to treat software as a commodity, and perilous to conform -the legal system to the enforcement of such a model. - - At its best, software enhances our productivity and creativity. -Sharing software, like sharing ideas, benefits a larger number of -people without detriment to existing users. I hope this modest program -is, in conjunction with the much larger efforts of others (especially -Donald Knuth, Richard Stallman, and the many people who have -contributed to the authorship of `LaTeX' and its packages), useful to -you in your mathematical work. - - Please visit the Free Software Foundation, at `http://www.fsf.org', -to learn more about free software and how you can contribute to its -development and adoption. - - -File: epix.info, Node: Acknowledgments, Next: Function Index, Prev: Software Freedom, Up: Top - -Appendix B Acknowledgments -************************** - -`ePiX' is built on the work of many people (unfortunately, most of whom -I am unaware). The following people have contributed, sometimes -unknowingly but always generously: - - *Infrastructure* Donald Knuth, Conrad Kwok, Leslie Lamport, Tim -Morgan, Piet van Oostrum, Sunil Podar, Richard Stallman, Till Tantau, -Herbert Voss, Timothy van Zandt - - *Enhancements* Jay Belanger, Robin Blume-Kohout, Julian Gilbey, -Marcus Hanwell, Yvon Henel, Svend Daugaard Pedersen, Andrew Sterian - - *Porting and packaging* Julian Gilbey (Debian); Tsuguru Kato -(FreeBSD); Markus Dittrich, Danny van Dyk, Christian Faulhammer, -Olivier Fisette, Chris Gianelloni, Michael Hanselmann, Marcus Hanwell, -David Holm, Peter Johanson, Patrick Kursawe, Tobias Scherbaum, Markus -Ullmann (Gentoo); Guido Gonzato (RPM); Rene Rebe (T2) - - *Debugging, advice, and other assistance* Jay Belanger, Felipe Paulo -Guazzi Bergo, Karl Berry, Robin Blume-Kohout, Patrick Cousot, Stephen -Gibson, Julian Gilbey, Dov Grobgeld, Bob Grover, Jim Hefferon, Jacques -L'helgoual, Yvon Henel, Hartmut Henkel, Herng-Jeng Jou, Walter -Kehowski, Kevin McCormick, Ross Moore, Thorsten Riess, Alan Sill, Neel -Smith, Michael Somos, Andrew Sterian, Ryszard Tanas, Kai Trukenmueller, -Torbjorn Vik, Wenguang Wang, Gabe Weaver, Mariusz Wodzicki - - -File: epix.info, Node: Function Index, Next: Concept Index, Prev: Acknowledgments, Up: Top - -Function Index -************** - - -* Menu: - -* aarrow: Creating and Drawing Objects. - (line 248) -* Acos: More About C++. (line 112) -* activate: Scene Attributes. (line 161) -* affine: Scene Attributes. (line 271) -* apply: Scene Attributes. (line 307) -* arc: Creating and Drawing Objects. - (line 167) -* arc_arrow: Creating and Drawing Objects. - (line 248) -* arc_measure: Creating and Drawing Objects. - (line 193) -* arrow: Creating and Drawing Objects. - (line 242) -* arrow_inset: Creating and Drawing Objects. - (line 235) -* arrow_ratio: Creating and Drawing Objects. - (line 235) -* arrow_width: Creating and Drawing Objects. - (line 235) -* Asin: More About C++. (line 112) -* Atan: More About C++. (line 112) -* axis: Creating and Drawing Objects. - (line 275) -* axis.align: Creating and Drawing Objects. - (line 284) -* axis.align_labels: Creating and Drawing Objects. - (line 296) -* axis.dec: Creating and Drawing Objects. - (line 296) -* axis.draw: Creating and Drawing Objects. - (line 342) -* axis.draw_labels: Creating and Drawing Objects. - (line 342) -* axis.draw_ticks: Creating and Drawing Objects. - (line 342) -* axis.frac: Creating and Drawing Objects. - (line 296) -* axis.label_rep: Creating and Drawing Objects. - (line 307) -* axis.precision: Creating and Drawing Objects. - (line 296) -* axis.sci: Creating and Drawing Objects. - (line 296) -* axis.subdivide: Creating and Drawing Objects. - (line 284) -* axis.tag: Creating and Drawing Objects. - (line 323) -* axis.tag235: Creating and Drawing Objects. - (line 323) -* axis.tags: Creating and Drawing Objects. - (line 323) -* axis.tick_ratio: Creating and Drawing Objects. - (line 284) -* axis.trig: Creating and Drawing Objects. - (line 296) -* axis.unmark: Creating and Drawing Objects. - (line 296) -* axis.untag: Creating and Drawing Objects. - (line 323) -* axis_break: Creating and Drawing Objects. - (line 394) -* back_arc: Creating and Drawing Objects. - (line 851) -* back_arc2: Creating and Drawing Objects. - (line 851) -* back_cube: Creating and Drawing Objects. - (line 857) -* back_dodeca: Creating and Drawing Objects. - (line 857) -* back_icosa: Creating and Drawing Objects. - (line 857) -* back_latitude: Creating and Drawing Objects. - (line 837) -* back_line: Creating and Drawing Objects. - (line 851) -* back_longitude: Creating and Drawing Objects. - (line 837) -* back_octa: Creating and Drawing Objects. - (line 857) -* back_tetra: Creating and Drawing Objects. - (line 857) -* back_triangle: Creating and Drawing Objects. - (line 857) -* backing: Scene Attributes. (line 252) -* backplot_N: Creating and Drawing Objects. - (line 879) -* backplot_R: Creating and Drawing Objects. - (line 879) -* backplot_S: Creating and Drawing Objects. - (line 879) -* bbold: Drawing Attributes. (line 33) -* bbox: Drawing Attributes. (line 174) -* begin: File Structure. (line 12) -* Black: Color. (line 23) -* Blue: Color. (line 23) -* bold: Drawing Attributes. (line 33) -* border: Scene Attributes. (line 252) -* bottom_axis: Creating and Drawing Objects. - (line 332) -* bounding_box: Picture Size and Aspect Ratio. - (line 24) -* box: Drawing Attributes. (line 174) -* Camera.at: Scene Attributes. (line 75) -* Camera.clip_range: Scene Attributes. (line 75) -* Camera.focus: Scene Attributes. (line 75) -* Camera.look_at: Scene Attributes. (line 75) -* Camera.pan: Scene Attributes. (line 75) -* Camera.range: Scene Attributes. (line 75) -* Camera.roll: Scene Attributes. (line 75) -* Camera.tilt: Scene Attributes. (line 75) -* canvas: Scene Attributes. (line 183) -* cb: More About C++. (line 123) -* circ: Drawing Attributes. (line 174) -* circle: Creating and Drawing Objects. - (line 145) -* Circle: Creating and Drawing Objects. - (line 70) -* cis: Creating and Drawing Objects. - (line 27) -* clip_box: Scene Attributes. (line 127) -* clip_face: Scene Attributes. (line 137) -* clip_restore: Scene Attributes. (line 137) -* clip_slice: Scene Attributes. (line 137) -* clip_to: Scene Attributes. (line 127) -* CMY: Color. (line 29) -* CMY_Black: Color. (line 29) -* CMY_White: Color. (line 29) -* cmyk: Drawing Attributes. (line 210) -* CMYK: Color. (line 29) -* Color.alpha: Color. (line 73) -* Color.blend: Color. (line 73) -* Color.filter: Color. (line 73) -* Color.invert: Color. (line 73) -* Color.superpose: Color. (line 73) -* Cos: More About C++. (line 112) -* Cot: More About C++. (line 112) -* crop: Scene Attributes. (line 239) -* crop_diamond: Scene Attributes. (line 239) -* crop_ellipse: Scene Attributes. (line 239) -* Csc: More About C++. (line 112) -* Cyan: Color. (line 29) -* cyl: Creating and Drawing Objects. - (line 27) -* dart: Creating and Drawing Objects. - (line 248) -* dart_field: Creating and Drawing Objects. - (line 793) -* dash_size: Drawing Attributes. (line 44) -* dashed: Drawing Attributes. (line 53) -* data_bins: Creating and Drawing Objects. - (line 1006) -* data_bins.bar_chart: Creating and Drawing Objects. - (line 1016) -* data_bins.cut: Creating and Drawing Objects. - (line 1006) -* data_bins.histogram: Creating and Drawing Objects. - (line 1016) -* data_bins.plot: Creating and Drawing Objects. - (line 1016) -* data_bins.read: Creating and Drawing Objects. - (line 1006) -* data_file: Creating and Drawing Objects. - (line 931) -* data_file.avg: Creating and Drawing Objects. - (line 950) -* data_file.column: Creating and Drawing Objects. - (line 973) -* data_file.covar: Creating and Drawing Objects. - (line 950) -* data_file.dot: Creating and Drawing Objects. - (line 950) -* data_file.plot: Creating and Drawing Objects. - (line 958) -* data_file.precision: Creating and Drawing Objects. - (line 967) -* data_file.read: Creating and Drawing Objects. - (line 931) -* data_file.regression: Creating and Drawing Objects. - (line 950) -* data_file.transform: Creating and Drawing Objects. - (line 945) -* data_file.var: Creating and Drawing Objects. - (line 950) -* data_file.write: Creating and Drawing Objects. - (line 967) -* data_mask: Creating and Drawing Objects. - (line 988) -* data_mask.prune: Creating and Drawing Objects. - (line 996) -* ddot: Drawing Attributes. (line 174) -* deactivate: Scene Attributes. (line 161) -* Deriv: Creating and Drawing Objects. - (line 745) -* Deriv.eval: Creating and Drawing Objects. - (line 745) -* Deriv.left: Creating and Drawing Objects. - (line 745) -* Deriv.right: Creating and Drawing Objects. - (line 745) -* disk_line: Creating and Drawing Objects. - (line 826) -* domain: Creating and Drawing Objects. - (line 512) -* domain.resize: Creating and Drawing Objects. - (line 531) -* domain.slice: Creating and Drawing Objects. - (line 531) -* domain.slices: Creating and Drawing Objects. - (line 531) -* domain_list: Creating and Drawing Objects. - (line 668) -* domain_list.add: Creating and Drawing Objects. - (line 668) -* dot: Drawing Attributes. (line 174) -* dot_size: Drawing Attributes. (line 185) -* dotted: Drawing Attributes. (line 53) -* draw: Creating and Drawing Objects. - (line 59) -* ellipse: Creating and Drawing Objects. - (line 167) -* ellipse_bottom: Creating and Drawing Objects. - (line 180) -* ellipse_left: Creating and Drawing Objects. - (line 180) -* ellipse_right: Creating and Drawing Objects. - (line 180) -* ellipse_top: Creating and Drawing Objects. - (line 180) -* end: File Structure. (line 12) -* envelope: Creating and Drawing Objects. - (line 768) -* extract: Scene Attributes. (line 183) -* extract_diamond: Scene Attributes. (line 190) -* extract_ellipse: Scene Attributes. (line 190) -* fill: Drawing Attributes. (line 12) -* flow: Creating and Drawing Objects. - (line 778) -* font_face: Drawing Attributes. (line 144) -* font_size: Drawing Attributes. (line 144) -* fractal: Creating and Drawing Objects. - (line 214) -* frame: Creating and Drawing Objects. - (line 134) -* front_arc: Creating and Drawing Objects. - (line 851) -* front_arc2: Creating and Drawing Objects. - (line 851) -* front_cube: Creating and Drawing Objects. - (line 857) -* front_dodeca: Creating and Drawing Objects. - (line 857) -* front_icosa: Creating and Drawing Objects. - (line 857) -* front_line: Creating and Drawing Objects. - (line 851) -* front_octa: Creating and Drawing Objects. - (line 857) -* front_tetra: Creating and Drawing Objects. - (line 857) -* front_triangle: Creating and Drawing Objects. - (line 857) -* frontplot_N: Creating and Drawing Objects. - (line 879) -* frontplot_R: Creating and Drawing Objects. - (line 879) -* frontplot_S: Creating and Drawing Objects. - (line 879) -* Gray: Color. (line 29) -* Green: Color. (line 23) -* grid: Creating and Drawing Objects. - (line 405) -* h_axis: Creating and Drawing Objects. - (line 352) -* h_axis_labels: Creating and Drawing Objects. - (line 368) -* h_axis_log_labels: Creating and Drawing Objects. - (line 368) -* h_axis_log_masklabels: Creating and Drawing Objects. - (line 368) -* h_axis_masklabels: Creating and Drawing Objects. - (line 368) -* h_error_bar: Creating and Drawing Objects. - (line 1047) -* h_log_axis: Creating and Drawing Objects. - (line 352) -* h_scale: Scene Attributes. (line 282) -* h_shear: Scene Attributes. (line 282) -* hyperbolic_line: Creating and Drawing Objects. - (line 826) -* import: Scene Attributes. (line 172) -* include: C++ Basics. (line 37) -* inf: Creating and Drawing Objects. - (line 731) -* inlay: Scene Attributes. (line 204) -* inlay_horizontal: Scene Attributes. (line 204) -* inlay_vertical: Scene Attributes. (line 204) -* inset: Scene Attributes. (line 172) -* Integral: Creating and Drawing Objects. - (line 745) -* Integral.eval: Creating and Drawing Objects. - (line 745) -* J: Creating and Drawing Objects. - (line 38) -* label <1>: Drawing Attributes. (line 99) -* label: Layout Tricks. (line 46) -* label_border: Drawing Attributes. (line 160) -* label_color: Drawing Attributes. (line 160) -* label_mask: Drawing Attributes. (line 160) -* label_pad: Drawing Attributes. (line 160) -* latitude: Creating and Drawing Objects. - (line 837) -* left_axis: Creating and Drawing Objects. - (line 332) -* legend: Creating and Drawing Objects. - (line 1083) -* legend.backing: Creating and Drawing Objects. - (line 1083) -* legend.border: Creating and Drawing Objects. - (line 1083) -* legend.draw: Creating and Drawing Objects. - (line 1115) -* legend.fill_item: Creating and Drawing Objects. - (line 1101) -* legend.item_border: Creating and Drawing Objects. - (line 1083) -* legend.key_size: Creating and Drawing Objects. - (line 1083) -* legend.label_skip: Creating and Drawing Objects. - (line 1083) -* legend.mark_item: Creating and Drawing Objects. - (line 1101) -* legend.path_item: Creating and Drawing Objects. - (line 1101) -* Line: Creating and Drawing Objects. - (line 145) -* line: Creating and Drawing Objects. - (line 145) -* line_style: Drawing Attributes. (line 44) -* log1_grid: Creating and Drawing Objects. - (line 411) -* log2_grid: Creating and Drawing Objects. - (line 411) -* log_grid: Creating and Drawing Objects. - (line 411) -* longitude: Creating and Drawing Objects. - (line 837) -* Magenta: Color. (line 29) -* move_to: Creating and Drawing Objects. - (line 59) -* newton: Creating and Drawing Objects. - (line 731) -* no_label_border: Drawing Attributes. (line 160) -* nofill: Drawing Attributes. (line 12) -* ode_plot: Creating and Drawing Objects. - (line 778) -* P: Creating and Drawing Objects. - (line 27) -* P.x1: Creating and Drawing Objects. - (line 38) -* P.x2: Creating and Drawing Objects. - (line 38) -* P.x3: Creating and Drawing Objects. - (line 38) -* path: Creating and Drawing Objects. - (line 437) -* path.close: Creating and Drawing Objects. - (line 468) -* path.draw: Creating and Drawing Objects. - (line 468) -* path.fill: Creating and Drawing Objects. - (line 468) -* pen <1>: Creating and Drawing Objects. - (line 422) -* pen: Drawing Attributes. (line 23) -* picture <1>: Picture Size and Aspect Ratio. - (line 24) -* picture: File Structure. (line 12) -* plain: Drawing Attributes. (line 33) -* Plane: Creating and Drawing Objects. - (line 85) -* plot: Creating and Drawing Objects. - (line 495) -* polar: Creating and Drawing Objects. - (line 27) -* polar_grid: Creating and Drawing Objects. - (line 405) -* polarplot: Creating and Drawing Objects. - (line 495) -* post_write: C++ Basics. (line 122) -* postcomp: Scene Attributes. (line 282) -* pre_write: C++ Basics. (line 122) -* pt_to_screen: Scene Attributes. (line 214) -* quad: Creating and Drawing Objects. - (line 145) -* rect: Creating and Drawing Objects. - (line 145) -* Red: Color. (line 23) -* reflect: Scene Attributes. (line 282) -* rgb: Drawing Attributes. (line 210) -* RGB: Color. (line 23) -* riemann_sum: Creating and Drawing Objects. - (line 756) -* right_angle: Creating and Drawing Objects. - (line 193) -* right_axis: Creating and Drawing Objects. - (line 332) -* ring: Drawing Attributes. (line 174) -* rotate: Scene Attributes. (line 282) -* scale <1>: Creating and Drawing Objects. - (line 59) -* scale: Scene Attributes. (line 282) -* scenery: Creating and Drawing Objects. - (line 680) -* scenery.add: Creating and Drawing Objects. - (line 680) -* scenery.draw: Creating and Drawing Objects. - (line 680) -* Sec: More About C++. (line 112) -* Segment: Creating and Drawing Objects. - (line 90) -* set_crop: Scene Attributes. (line 239) -* sgn: More About C++. (line 123) -* shadeplot: Creating and Drawing Objects. - (line 495) -* shift <1>: Creating and Drawing Objects. - (line 59) -* shift: Scene Attributes. (line 282) -* Sin: More About C++. (line 112) -* sinx: More About C++. (line 123) -* slope_field: Creating and Drawing Objects. - (line 793) -* solid: Drawing Attributes. (line 53) -* sph: Creating and Drawing Objects. - (line 27) -* Sphere: Creating and Drawing Objects. - (line 93) -* spline: Creating and Drawing Objects. - (line 167) -* spot: Drawing Attributes. (line 174) -* sup: Creating and Drawing Objects. - (line 731) -* surface: Creating and Drawing Objects. - (line 616) -* surface_rev: Creating and Drawing Objects. - (line 627) -* Tan: More About C++. (line 112) -* tan_field: Creating and Drawing Objects. - (line 768) -* tan_line: Creating and Drawing Objects. - (line 768) -* top_axis: Creating and Drawing Objects. - (line 332) -* triangle: Creating and Drawing Objects. - (line 145) -* unitlength: Picture Size and Aspect Ratio. - (line 24) -* v_axis: Creating and Drawing Objects. - (line 352) -* v_axis_labels: Creating and Drawing Objects. - (line 368) -* v_axis_log_labels: Creating and Drawing Objects. - (line 368) -* v_axis_log_masklabels: Creating and Drawing Objects. - (line 368) -* v_axis_masklabels: Creating and Drawing Objects. - (line 368) -* v_error_bar: Creating and Drawing Objects. - (line 1047) -* v_log_axis: Creating and Drawing Objects. - (line 352) -* v_scale: Scene Attributes. (line 282) -* v_shear: Scene Attributes. (line 282) -* vector_field: Creating and Drawing Objects. - (line 793) -* White: Color. (line 23) -* write: C++ Basics. (line 122) -* Yellow: Color. (line 29) -* zero: More About C++. (line 123) - - -File: epix.info, Node: Concept Index, Prev: Function Index, Up: Top - -Concept Index -************* - - -* Menu: - -* Affine map: Scene Attributes. (line 264) -* Affine map!action on labels: Drawing Attributes. (line 130) -* Angle units <1>: Drawing Attributes. (line 121) -* Angle units: Scene Attributes. (line 14) -* Angular mode <1>: More About C++. (line 112) -* Angular mode: Creating and Drawing Objects. - (line 27) -* Animation: Animation. (line 6) -* Arrow: Creating and Drawing Objects. - (line 231) -* Axes: Creating and Drawing Objects. - (line 257) -* Axes!broken: Creating and Drawing Objects. - (line 390) -* Axes!labeling: Creating and Drawing Objects. - (line 257) -* Axes!logarithmic: Creating and Drawing Objects. - (line 350) -* Bar Charts: Creating and Drawing Objects. - (line 1013) -* Bounding box: Scene Attributes. (line 156) -* Camera <1>: Hidden Object Removal. - (line 13) -* Camera: Scene Attributes. (line 21) -* Camera!color separation: Scene Attributes. (line 94) -* Camera!lens: Scene Attributes. (line 57) -* Camera!manipulation: Scene Attributes. (line 69) -* Camera!manipulation of: Scene Attributes. (line 116) -* Camera!viewpoint: Scene Attributes. (line 31) -* canvas: The Drawing Model. (line 11) -* Circle: Creating and Drawing Objects. - (line 69) -* Classes: More About C++. (line 149) -* Clipping: Scene Attributes. (line 120) -* Color <1>: Drawing Attributes. (line 215) -* Color: Color. (line 6) -* Color!separation: Scene Attributes. (line 94) -* Color!surface plotting: Creating and Drawing Objects. - (line 700) -* Color!transparency: Color. (line 65) -* Conditional statement: More About C++. (line 22) -* Cplusplus@C++ <1>: More About C++. (line 6) -* Cplusplus@C++: C++ Basics. (line 6) -* Cropping: Scene Attributes. (line 231) -* Data plotting: Creating and Drawing Objects. - (line 897) -* Domain: Creating and Drawing Objects. - (line 509) -* Emacs@emacs <1>: Animation. (line 19) -* Emacs@emacs <2>: C++ Basics. (line 16) -* Emacs@emacs <3>: Running ePiX. (line 50) -* Emacs@emacs: Software Dependencies. - (line 36) -* Error bars: Creating and Drawing Objects. - (line 1046) -* Filling: Drawing Attributes. (line 11) -* Fonts: Drawing Attributes. (line 142) -* Free software <1>: Software Freedom. (line 6) -* Free software: Introduction. (line 42) -* Function: More About C++. (line 22) -* Function!call syntax: More About C++. (line 186) -* Function!class member: More About C++. (line 156) -* Function!mathematical: More About C++. (line 108) -* Function!overloaded: More About C++. (line 229) -* Function!returning void: More About C++. (line 84) -* Graph paper: Creating and Drawing Objects. - (line 422) -* Graphical interface: Tutorial. (line 13) -* Hidden object removal: Hidden Object Removal. - (line 6) -* Histograms: Creating and Drawing Objects. - (line 1013) -* Input file!comment in: More About C++. (line 337) -* Input file!conditional compilation: More About C++. (line 281) -* Installation <1>: Installation. (line 31) -* Installation: Software Dependencies. - (line 6) -* Intersection: Creating and Drawing Objects. - (line 109) -* Labels <1>: More About C++. (line 310) -* Labels: Drawing Attributes. (line 80) -* Labels!alignment: Drawing Attributes. (line 80) -* Labels!axis: Creating and Drawing Objects. - (line 257) -* Labels!backslash in: Drawing Attributes. (line 205) -* Labels!fonts in: Drawing Attributes. (line 142) -* Labels!in double quotes: Drawing Attributes. (line 205) -* Labels!rotated: Drawing Attributes. (line 121) -* Layout <1>: Scene Attributes. (line 148) -* Layout: Layout Tricks. (line 6) -* Legends: Creating and Drawing Objects. - (line 1072) -* Mac OS X: Software Dependencies. - (line 6) -* Marker types: Drawing Attributes. (line 172) -* Output format: File Structure. (line 31) -* Path: Drawing Attributes. (line 11) -* Path!class: Creating and Drawing Objects. - (line 433) -* Path!filled: Drawing Attributes. (line 11) -* Path!fractal: Creating and Drawing Objects. - (line 206) -* Path!style: Drawing Attributes. (line 41) -* Picture!aspect ratio: Picture Size and Aspect Ratio. - (line 44) -* Picture!bounding box: Picture Size and Aspect Ratio. - (line 44) -* Picture!offset: Picture Size and Aspect Ratio. - (line 6) -* Picture!size: Picture Size and Aspect Ratio. - (line 6) -* Plane: Creating and Drawing Objects. - (line 85) -* Plotting: Creating and Drawing Objects. - (line 480) -* Plotting!calculus: Creating and Drawing Objects. - (line 721) -* Plotting!data: Creating and Drawing Objects. - (line 897) -* Plotting!spherical: Creating and Drawing Objects. - (line 833) -* Plotting!surface: Creating and Drawing Objects. - (line 605) -* Point: Creating and Drawing Objects. - (line 14) -* Pointer: More About C++. (line 52) -* post_write: C++ Basics. (line 122) -* pre_write: C++ Basics. (line 122) -* Preamble: File Structure. (line 10) -* Screen: Scene Attributes. (line 21) -* Screen!active: Scene Attributes. (line 148) -* Segment: Creating and Drawing Objects. - (line 90) -* Sphere: Creating and Drawing Objects. - (line 93) -* Stereograms: Layout Tricks. (line 8) -* Variable!local: More About C++. (line 239) -* Variable!names: More About C++. (line 34) -* Variable!pointer: More About C++. (line 52) -* Variable!reference: More About C++. (line 186) -* Variable!type of: More About C++. (line 45) -* Viewpoint: Scene Attributes. (line 31) -* Windows operating system: Software Dependencies. - (line 40) -* write: C++ Basics. (line 122) - - - -Tag Table: -Node: Top185 -Node: Introduction1105 -Node: Changes in Version 1.24664 -Node: Software Dependencies8541 -Ref: section:software_deps8714 -Node: Installation11086 -Node: Getting Started12670 -Ref: chapter:started12806 -Node: Running `ePiX'13556 -Ref: section:running13709 -Node: The Drawing Model16861 -Ref: section:overview17013 -Node: Tutorial19428 -Ref: section:tutorial19560 -Ref: taylor_poly24927 -Node: `C++' Basics26756 -Ref: fig:captioned32767 -Node: Animation33131 -Ref: section:animation33262 -Node: Layout Tricks34998 -Ref: section:layout35116 -Node: Reference Manual37114 -Ref: chapter:ref-man37255 -Node: File Structure38952 -Node: Picture Size and Aspect Ratio41705 -Ref: page:scaling44202 -Node: Color44417 -Ref: section:color44557 -Ref: fig:densities46382 -Node: Scene Attributes47847 -Ref: fig:camera48882 -Ref: truesize56642 -Node: Drawing Attributes62495 -Ref: table:marker70626 -Node: Creating and Drawing Objects71285 -Ref: fig:fractal81596 -Ref: fig:plot96868 -Ref: non-eucl107182 -Node: More About `C++'121128 -Ref: references130049 -Node: Attribute Quick Reference137418 -Ref: section:quickref137580 -Node: Advanced Topics140341 -Ref: chapter:adv140481 -Node: Hidden Object Removal140765 -Ref: section:hidden140932 -Node: Extensions142805 -Ref: section:extensions142953 -Node: Programmer's Guide149302 -Ref: section:programmers149436 -Ref: section:interface152502 -Node: Software Freedom158743 -Node: Acknowledgments164009 -Node: Function Index165447 -Node: Concept Index200200 - -End Tag Table diff --git a/graphics/epix/doc/graphpaper.eepic b/graphics/epix/doc/graphpaper.eepic deleted file mode 100644 index 94a18e8085..0000000000 --- a/graphics/epix/doc/graphpaper.eepic +++ /dev/null @@ -1,101 +0,0 @@ -%% Generated from graphpaper.xp on Tue Jan 4 15:32:14 EST 2005 by -%% ePiX-1.0.3 -%% -%% Cartesian bounding box: [-2,2] x [-1,1] -%% Actual size: 2in x 1in -%% Figure offset: right by 0in, up by 0in -%% -\setlength{\unitlength}{0.01in} -\begin{picture}(200,100)(-0,-0) -%% --- -\allinethickness{0.25pt}% -\path(0,0)(0,100) -\path(5,0)(5,100) -\path(10,0)(10,100) -\path(15,0)(15,100) -\path(20,0)(20,100) -\path(25,0)(25,100) -\path(30,0)(30,100) -\path(35,0)(35,100) -\path(40,0)(40,100) -\path(45,0)(45,100) -\path(50,0)(50,100) -\path(55,0)(55,100) -\path(60,0)(60,100) -\path(65,0)(65,100) -\path(70,0)(70,100) -\path(75,0)(75,100) -\path(80,0)(80,100) -\path(85,0)(85,100) -\path(90,0)(90,100) -\path(95,0)(95,100) -\path(100,0)(100,100) -\path(105,0)(105,100) -\path(110,0)(110,100) -\path(115,0)(115,100) -\path(120,0)(120,100) -\path(125,0)(125,100) -\path(130,0)(130,100) -\path(135,0)(135,100) -\path(140,0)(140,100) -\path(145,0)(145,100) -\path(150,0)(150,100) -\path(155,0)(155,100) -\path(160,0)(160,100) -\path(165,0)(165,100) -\path(170,0)(170,100) -\path(175,0)(175,100) -\path(180,0)(180,100) -\path(185,0)(185,100) -\path(190,0)(190,100) -\path(195,0)(195,100) -\path(200,0)(200,100) -\path(0,0)(200,0) -\path(0,5)(200,5) -\path(0,10)(200,10) -\path(0,15)(200,15) -\path(0,20)(200,20) -\path(0,25)(200,25) -\path(0,30)(200,30) -\path(0,35)(200,35) -\path(0,40)(200,40) -\path(0,45)(200,45) -\path(0,50)(200,50) -\path(0,55)(200,55) -\path(0,60)(200,60) -\path(0,65)(200,65) -\path(0,70)(200,70) -\path(0,75)(200,75) -\path(0,80)(200,80) -\path(0,85)(200,85) -\path(0,90)(200,90) -\path(0,95)(200,95) -\path(0,100)(200,100) -%% --- -\allinethickness{0.5pt}% -\path(0,0)(0,100) -\path(25,0)(25,100) -\path(50,0)(50,100) -\path(75,0)(75,100) -\path(100,0)(100,100) -\path(125,0)(125,100) -\path(150,0)(150,100) -\path(175,0)(175,100) -\path(200,0)(200,100) -\path(0,0)(200,0) -\path(0,25)(200,25) -\path(0,50)(200,50) -\path(0,75)(200,75) -\path(0,100)(200,100) -%% --- -\allinethickness{1pt}% -\path(0,0)(0,100) -\path(50,0)(50,100) -\path(100,0)(100,100) -\path(150,0)(150,100) -\path(200,0)(200,100) -\path(0,0)(200,0) -\path(0,50)(200,50) -\path(0,100)(200,100) -%% --- -\end{picture} diff --git a/graphics/epix/doc/graphpaper.xp b/graphics/epix/doc/graphpaper.xp deleted file mode 100644 index 795c499d4d..0000000000 --- a/graphics/epix/doc/graphpaper.xp +++ /dev/null @@ -1,24 +0,0 @@ -/* -*-ePiX-*- */ -/* graphpaper.c -- July 6, 2002 */ -#include "epix.h" -using namespace ePiX; - -int main() -{ - bounding_box(P(-2,-1), P(2,1)); - picture(P(200,100)); - unitlength("0.01in"); - - begin(); - - pen(0.25); - grid(10*x_size, 10*y_size); - - pen(0.5); - grid(2*x_size, 2*y_size); - - pen(1); - grid(x_size, y_size); - - end(); -} diff --git a/graphics/epix/doc/hello.eepic b/graphics/epix/doc/hello.eepic deleted file mode 100644 index 9b58fefc81..0000000000 --- a/graphics/epix/doc/hello.eepic +++ /dev/null @@ -1,15 +0,0 @@ -%% Generated from hello.xp on Thu Jun 28 11:33:40 EDT 2007 by -%% ePiX-1.1.6 -%% -%% Cartesian bounding box: [-1,1] x [-1,1] -%% Actual size: 2 x 1in -%% Figure offset: left by 0in, down by 0in -%% -\xdefinecolor{rgb_000000}{rgb}{0,0,0} -\setlength{\unitlength}{1in} -\begin{picture}(2,1)(-0,-0) -\put(1,0.5){\makebox(0,0)[c]{{\Huge Hello, world!}}} -\allinethickness{1pt}% -\path(2,0)(2,1)(0,1)(0,0)(2,0) -%% -\end{picture} diff --git a/graphics/epix/doc/hello.xp b/graphics/epix/doc/hello.xp deleted file mode 100644 index c8bd3739b9..0000000000 --- a/graphics/epix/doc/hello.xp +++ /dev/null @@ -1,20 +0,0 @@ -/* -*-ePiX-*- */ -#include "epix.h" -using namespace ePiX; - -int main() -{ - picture(P(-1,-1),P(1,1), "2x1in"); - - begin(); - - // uncomment and permute these lines - // crop_ellipse(); - // backing(Yellow()); - border(Black(), "1pt"); - - font_size("Huge"); - label(P(0,0), "Hello, world!"); - - end(); -} diff --git a/graphics/epix/doc/koch.eepic b/graphics/epix/doc/koch.eepic deleted file mode 100644 index 1f949958c0..0000000000 --- a/graphics/epix/doc/koch.eepic +++ /dev/null @@ -1,160 +0,0 @@ -%% Generated from koch.xp on Tue Jan 4 15:32:16 EST 2005 by -%% ePiX-1.0.3 -%% -%% Cartesian bounding box: [0,3] x [0,0.5] -%% Actual size: 3in x 0.5in -%% Figure offset: right by 0in, up by 0.25in -%% -\setlength{\unitlength}{1in} -\begin{picture}(3,0.5)(-0,-0.25) -%% --- -\path(0,0)(0.25,0)(0.25,0.25)(0.5,0.25)(0.5,0)(0.5,-0.25)(0.75,-0.25) - (0.75,0)(1,0) -%% --- -\path(1,0)(1.0625,0)(1.0625,0.0625)(1.125,0.0625)(1.125,0)(1.125,-0.0625) - (1.1875,-0.0625)(1.1875,0)(1.25,0)(1.25,0.0625)(1.1875,0.0625) - (1.1875,0.125)(1.25,0.125)(1.3125,0.125)(1.3125,0.1875)(1.25,0.1875) - (1.25,0.25)(1.3125,0.25)(1.3125,0.3125)(1.375,0.3125)(1.375,0.25) - (1.375,0.1875)(1.4375,0.1875)(1.4375,0.25)(1.5,0.25)(1.5,0.1875) - (1.5625,0.1875)(1.5625,0.125)(1.5,0.125)(1.4375,0.125)(1.4375,0.0625) - (1.5,0.0625)(1.5,0)(1.5,-0.0625)(1.5625,-0.0625)(1.5625,-0.125) - (1.5,-0.125)(1.4375,-0.125)(1.4375,-0.1875)(1.5,-0.1875)(1.5,-0.25) - (1.5625,-0.25)(1.5625,-0.1875)(1.625,-0.1875)(1.625,-0.25)(1.625,-0.3125) - (1.6875,-0.3125)(1.6875,-0.25)(1.75,-0.25)(1.75,-0.1875)(1.6875,-0.1875) - (1.6875,-0.125)(1.75,-0.125)(1.8125,-0.125)(1.8125,-0.0625)(1.75,-0.0625) - (1.75,0)(1.8125,0)(1.8125,0.0625)(1.875,0.0625)(1.875,0) -\path(1.875,0)(1.875,-0.0625)(1.9375,-0.0625)(1.9375,0)(2,0) -%% --- -\path(2,0)(2.01562,0)(2.01562,0.015625)(2.03125,0.015625)(2.03125,0) - (2.03125,-0.015625)(2.04688,-0.015625)(2.04688,0)(2.0625,0) - (2.0625,0.015625)(2.04688,0.015625)(2.04688,0.03125)(2.0625,0.03125) - (2.07812,0.03125)(2.07812,0.046875)(2.0625,0.046875)(2.0625,0.0625) - (2.07812,0.0625)(2.07812,0.078125)(2.09375,0.078125)(2.09375,0.0625) - (2.09375,0.046875)(2.10938,0.046875)(2.10938,0.0625)(2.125,0.0625) - (2.125,0.046875)(2.14062,0.046875)(2.14062,0.03125)(2.125,0.03125) - (2.10938,0.03125)(2.10938,0.015625)(2.125,0.015625)(2.125,0) - (2.125,-0.015625)(2.14062,-0.015625)(2.14062,-0.03125)(2.125,-0.03125) - (2.10938,-0.03125)(2.10938,-0.046875)(2.125,-0.046875)(2.125,-0.0625) - (2.14062,-0.0625)(2.14062,-0.046875)(2.15625,-0.046875)(2.15625,-0.0625) - (2.15625,-0.078125)(2.17188,-0.078125)(2.17188,-0.0625)(2.1875,-0.0625) - (2.1875,-0.046875)(2.17188,-0.046875)(2.17188,-0.03125)(2.1875,-0.03125) - (2.20312,-0.03125)(2.20312,-0.015625)(2.1875,-0.015625)(2.1875,0) - (2.20312,0)(2.20312,0.015625)(2.21875,0.015625)(2.21875,0) -\path(2.21875,0)(2.21875,-0.015625)(2.23438,-0.015625)(2.23438,0)(2.25,0) - (2.25,0.015625)(2.23438,0.015625)(2.23438,0.03125)(2.25,0.03125) - (2.26562,0.03125)(2.26562,0.046875)(2.25,0.046875)(2.25,0.0625) - (2.23438,0.0625)(2.23438,0.046875)(2.21875,0.046875)(2.21875,0.0625) - (2.21875,0.078125)(2.20312,0.078125)(2.20312,0.0625)(2.1875,0.0625) - (2.1875,0.078125)(2.17188,0.078125)(2.17188,0.09375)(2.1875,0.09375) - (2.20312,0.09375)(2.20312,0.109375)(2.1875,0.109375)(2.1875,0.125) - (2.20312,0.125)(2.20312,0.140625)(2.21875,0.140625)(2.21875,0.125) - (2.21875,0.109375)(2.23438,0.109375)(2.23438,0.125)(2.25,0.125) - (2.26562,0.125)(2.26562,0.140625)(2.28125,0.140625)(2.28125,0.125) - (2.28125,0.109375)(2.29688,0.109375)(2.29688,0.125)(2.3125,0.125) - (2.3125,0.140625)(2.29688,0.140625)(2.29688,0.15625)(2.3125,0.15625) - (2.32812,0.15625)(2.32812,0.171875)(2.3125,0.171875)(2.3125,0.1875) - (2.29688,0.1875)(2.29688,0.171875)(2.28125,0.171875)(2.28125,0.1875) - (2.28125,0.203125)(2.26562,0.203125)(2.26562,0.1875) -\path(2.26562,0.1875)(2.25,0.1875)(2.25,0.203125)(2.23438,0.203125) - (2.23438,0.21875)(2.25,0.21875)(2.26562,0.21875)(2.26562,0.234375) - (2.25,0.234375)(2.25,0.25)(2.26562,0.25)(2.26562,0.265625) - (2.28125,0.265625)(2.28125,0.25)(2.28125,0.234375)(2.29688,0.234375) - (2.29688,0.25)(2.3125,0.25)(2.3125,0.265625)(2.29688,0.265625) - (2.29688,0.28125)(2.3125,0.28125)(2.32812,0.28125)(2.32812,0.296875) - (2.3125,0.296875)(2.3125,0.3125)(2.32812,0.3125)(2.32812,0.328125) - (2.34375,0.328125)(2.34375,0.3125)(2.34375,0.296875)(2.35938,0.296875) - (2.35938,0.3125)(2.375,0.3125)(2.375,0.296875)(2.39062,0.296875) - (2.39062,0.28125)(2.375,0.28125)(2.35938,0.28125)(2.35938,0.265625) - (2.375,0.265625)(2.375,0.25)(2.375,0.234375)(2.39062,0.234375) - (2.39062,0.21875)(2.375,0.21875)(2.35938,0.21875)(2.35938,0.203125) - (2.375,0.203125)(2.375,0.1875)(2.39062,0.1875)(2.39062,0.203125) - (2.40625,0.203125)(2.40625,0.1875)(2.40625,0.171875)(2.42188,0.171875) - (2.42188,0.1875)(2.4375,0.1875)(2.4375,0.203125)(2.42188,0.203125) -\path(2.42188,0.203125)(2.42188,0.21875)(2.4375,0.21875)(2.45312,0.21875) - (2.45312,0.234375)(2.4375,0.234375)(2.4375,0.25)(2.45312,0.25) - (2.45312,0.265625)(2.46875,0.265625)(2.46875,0.25)(2.46875,0.234375) - (2.48438,0.234375)(2.48438,0.25)(2.5,0.25)(2.5,0.234375) - (2.51562,0.234375)(2.51562,0.21875)(2.5,0.21875)(2.48438,0.21875) - (2.48438,0.203125)(2.5,0.203125)(2.5,0.1875)(2.51562,0.1875) - (2.51562,0.203125)(2.53125,0.203125)(2.53125,0.1875)(2.53125,0.171875) - (2.54688,0.171875)(2.54688,0.1875)(2.5625,0.1875)(2.5625,0.171875) - (2.57812,0.171875)(2.57812,0.15625)(2.5625,0.15625)(2.54688,0.15625) - (2.54688,0.140625)(2.5625,0.140625)(2.5625,0.125)(2.54688,0.125) - (2.54688,0.109375)(2.53125,0.109375)(2.53125,0.125)(2.53125,0.140625) - (2.51562,0.140625)(2.51562,0.125)(2.5,0.125)(2.48438,0.125) - (2.48438,0.109375)(2.46875,0.109375)(2.46875,0.125)(2.46875,0.140625) - (2.45312,0.140625)(2.45312,0.125)(2.4375,0.125)(2.4375,0.109375) - (2.45312,0.109375)(2.45312,0.09375)(2.4375,0.09375)(2.42188,0.09375) -\path(2.42188,0.09375)(2.42188,0.078125)(2.4375,0.078125)(2.4375,0.0625) - (2.45312,0.0625)(2.45312,0.078125)(2.46875,0.078125)(2.46875,0.0625) - (2.46875,0.046875)(2.48438,0.046875)(2.48438,0.0625)(2.5,0.0625) - (2.5,0.046875)(2.51562,0.046875)(2.51562,0.03125)(2.5,0.03125) - (2.48438,0.03125)(2.48438,0.015625)(2.5,0.015625)(2.5,0)(2.5,-0.015625) - (2.51562,-0.015625)(2.51562,-0.03125)(2.5,-0.03125)(2.48438,-0.03125) - (2.48438,-0.046875)(2.5,-0.046875)(2.5,-0.0625)(2.51562,-0.0625) - (2.51562,-0.046875)(2.53125,-0.046875)(2.53125,-0.0625) - (2.53125,-0.078125)(2.54688,-0.078125)(2.54688,-0.0625)(2.5625,-0.0625) - (2.5625,-0.078125)(2.57812,-0.078125)(2.57812,-0.09375)(2.5625,-0.09375) - (2.54688,-0.09375)(2.54688,-0.109375)(2.5625,-0.109375)(2.5625,-0.125) - (2.54688,-0.125)(2.54688,-0.140625)(2.53125,-0.140625)(2.53125,-0.125) - (2.53125,-0.109375)(2.51562,-0.109375)(2.51562,-0.125)(2.5,-0.125) - (2.48438,-0.125)(2.48438,-0.140625)(2.46875,-0.140625)(2.46875,-0.125) - (2.46875,-0.109375)(2.45312,-0.109375)(2.45312,-0.125)(2.4375,-0.125) -\path(2.4375,-0.125)(2.4375,-0.140625)(2.45312,-0.140625)(2.45312,-0.15625) - (2.4375,-0.15625)(2.42188,-0.15625)(2.42188,-0.171875)(2.4375,-0.171875) - (2.4375,-0.1875)(2.45312,-0.1875)(2.45312,-0.171875)(2.46875,-0.171875) - (2.46875,-0.1875)(2.46875,-0.203125)(2.48438,-0.203125)(2.48438,-0.1875) - (2.5,-0.1875)(2.5,-0.203125)(2.51562,-0.203125)(2.51562,-0.21875) - (2.5,-0.21875)(2.48438,-0.21875)(2.48438,-0.234375)(2.5,-0.234375) - (2.5,-0.25)(2.51562,-0.25)(2.51562,-0.234375)(2.53125,-0.234375) - (2.53125,-0.25)(2.53125,-0.265625)(2.54688,-0.265625)(2.54688,-0.25) - (2.5625,-0.25)(2.5625,-0.234375)(2.54688,-0.234375)(2.54688,-0.21875) - (2.5625,-0.21875)(2.57812,-0.21875)(2.57812,-0.203125)(2.5625,-0.203125) - (2.5625,-0.1875)(2.57812,-0.1875)(2.57812,-0.171875)(2.59375,-0.171875) - (2.59375,-0.1875)(2.59375,-0.203125)(2.60938,-0.203125)(2.60938,-0.1875) - (2.625,-0.1875)(2.625,-0.203125)(2.64062,-0.203125)(2.64062,-0.21875) - (2.625,-0.21875)(2.60938,-0.21875)(2.60938,-0.234375)(2.625,-0.234375) - (2.625,-0.25)(2.625,-0.265625)(2.64062,-0.265625)(2.64062,-0.28125) -\path(2.64062,-0.28125)(2.625,-0.28125)(2.60938,-0.28125) - (2.60938,-0.296875)(2.625,-0.296875)(2.625,-0.3125)(2.64062,-0.3125) - (2.64062,-0.296875)(2.65625,-0.296875)(2.65625,-0.3125) - (2.65625,-0.328125)(2.67188,-0.328125)(2.67188,-0.3125)(2.6875,-0.3125) - (2.6875,-0.296875)(2.67188,-0.296875)(2.67188,-0.28125)(2.6875,-0.28125) - (2.70312,-0.28125)(2.70312,-0.265625)(2.6875,-0.265625)(2.6875,-0.25) - (2.70312,-0.25)(2.70312,-0.234375)(2.71875,-0.234375)(2.71875,-0.25) - (2.71875,-0.265625)(2.73438,-0.265625)(2.73438,-0.25)(2.75,-0.25) - (2.75,-0.234375)(2.73438,-0.234375)(2.73438,-0.21875)(2.75,-0.21875) - (2.76562,-0.21875)(2.76562,-0.203125)(2.75,-0.203125)(2.75,-0.1875) - (2.73438,-0.1875)(2.73438,-0.203125)(2.71875,-0.203125)(2.71875,-0.1875) - (2.71875,-0.171875)(2.70312,-0.171875)(2.70312,-0.1875)(2.6875,-0.1875) - (2.6875,-0.171875)(2.67188,-0.171875)(2.67188,-0.15625)(2.6875,-0.15625) - (2.70312,-0.15625)(2.70312,-0.140625)(2.6875,-0.140625)(2.6875,-0.125) - (2.70312,-0.125)(2.70312,-0.109375)(2.71875,-0.109375)(2.71875,-0.125) - (2.71875,-0.140625)(2.73438,-0.140625) -\path(2.73438,-0.140625)(2.73438,-0.125)(2.75,-0.125)(2.76562,-0.125) - (2.76562,-0.109375)(2.78125,-0.109375)(2.78125,-0.125)(2.78125,-0.140625) - (2.79688,-0.140625)(2.79688,-0.125)(2.8125,-0.125)(2.8125,-0.109375) - (2.79688,-0.109375)(2.79688,-0.09375)(2.8125,-0.09375)(2.82812,-0.09375) - (2.82812,-0.078125)(2.8125,-0.078125)(2.8125,-0.0625)(2.79688,-0.0625) - (2.79688,-0.078125)(2.78125,-0.078125)(2.78125,-0.0625) - (2.78125,-0.046875)(2.76562,-0.046875)(2.76562,-0.0625)(2.75,-0.0625) - (2.75,-0.046875)(2.73438,-0.046875)(2.73438,-0.03125)(2.75,-0.03125) - (2.76562,-0.03125)(2.76562,-0.015625)(2.75,-0.015625)(2.75,0)(2.76562,0) - (2.76562,0.015625)(2.78125,0.015625)(2.78125,0)(2.78125,-0.015625) - (2.79688,-0.015625)(2.79688,0)(2.8125,0)(2.8125,0.015625) - (2.79688,0.015625)(2.79688,0.03125)(2.8125,0.03125)(2.82812,0.03125) - (2.82812,0.046875)(2.8125,0.046875)(2.8125,0.0625)(2.82812,0.0625) - (2.82812,0.078125)(2.84375,0.078125)(2.84375,0.0625)(2.84375,0.046875) - (2.85938,0.046875)(2.85938,0.0625)(2.875,0.0625)(2.875,0.046875) -\path(2.875,0.046875)(2.89062,0.046875)(2.89062,0.03125)(2.875,0.03125) - (2.85938,0.03125)(2.85938,0.015625)(2.875,0.015625)(2.875,0) - (2.875,-0.015625)(2.89062,-0.015625)(2.89062,-0.03125)(2.875,-0.03125) - (2.85938,-0.03125)(2.85938,-0.046875)(2.875,-0.046875)(2.875,-0.0625) - (2.89062,-0.0625)(2.89062,-0.046875)(2.90625,-0.046875)(2.90625,-0.0625) - (2.90625,-0.078125)(2.92188,-0.078125)(2.92188,-0.0625)(2.9375,-0.0625) - (2.9375,-0.046875)(2.92188,-0.046875)(2.92188,-0.03125)(2.9375,-0.03125) - (2.95312,-0.03125)(2.95312,-0.015625)(2.9375,-0.015625)(2.9375,0) - (2.95312,0)(2.95312,0.015625)(2.96875,0.015625)(2.96875,0) - (2.96875,-0.015625)(2.98438,-0.015625)(2.98438,0)(3,0) -%% --- -\end{picture} diff --git a/graphics/epix/doc/koch.xp b/graphics/epix/doc/koch.xp deleted file mode 100644 index d1a04e1c0f..0000000000 --- a/graphics/epix/doc/koch.xp +++ /dev/null @@ -1,24 +0,0 @@ -/* -*-ePiX-*- */ -/* koch.c -- Simple fractal "curve" generation. -- June 6, 2002 */ - -#include "epix.h" -using namespace ePiX; - -// const int koch_seed[] = {6, 4, 0, 1, -1, 0}; -const int seed[] = {4, 8, 0, 1, 0, 3, 3, 0, 1, 0}; - -int main() -{ - bounding_box(P(0,0), P(3, 0.5)); - picture(P(3, 0.5)); - unitlength("1in"); - offset(P(0,0.25)); - - begin(); - - for (int i=1; i <= 3; ++i) - fractal(P(i-1,0), P(i,0), i, seed); - - end(); -} - diff --git a/graphics/epix/doc/layout.eepic b/graphics/epix/doc/layout.eepic deleted file mode 100644 index 07eec3fcb6..0000000000 --- a/graphics/epix/doc/layout.eepic +++ /dev/null @@ -1,1511 +0,0 @@ -%% Generated from layout.xp on Sat Jun 30 12:16:41 EDT 2007 by -%% ePiX-1.1.6 -%% -%% Cartesian bounding box: [0,2] x [0,3] -%% Actual size: 5 x 7.5in -%% Figure offset: left by 0in, down by 0in -%% -\xdefinecolor{rgb_000000}{rgb}{0,0,0} -\xdefinecolor{rgb_980000}{rgb}{0.596078,0,0} -\setlength{\unitlength}{1in} -\begin{picture}(5,7.5)(-0,-0) -\path(1.95438,5.77398)(1.9095,5.84756)(1.86459,5.91634) - (1.81949,5.98073)(1.77406,6.04108)(1.72817,6.09772) - (1.68169,6.15093)(1.63449,6.20095)(1.58643,6.24802) - (1.53738,6.29233)(1.4872,6.33406)(1.43575,6.37337)(1.38287,6.41039) - (1.32843,6.44527)(1.27224,6.4781)(1.21415,6.50899)(1.15394,6.53802) - (1.09144,6.56528)(1.02641,6.59083)(0.958625,6.61472) - (0.887817,6.63701)(0.813702,6.65773)(0.735966,6.67692) - (0.654259,6.69459)(0.568192,6.71076) -%% -\path(1.7999,5.73751)(1.76689,5.81018)(1.7333,5.87809) - (1.69903,5.94164)(1.66399,6.00118)(1.6281,6.05703)(1.59125,6.10945) - (1.55336,6.15868)(1.51431,6.20496)(1.47401,6.24846) - (1.43234,6.28936)(1.38918,6.32782)(1.34441,6.36396) - (1.29789,6.39792)(1.24946,6.4298)(1.19898,6.45968)(1.14626,6.48766) - (1.09112,6.5138)(1.03334,6.53816)(0.972699,6.5608) - (0.908939,6.58175)(0.841779,6.60103)(0.770903,6.61868) - (0.69596,6.6347)(0.616556,6.64908) -%% -\path(1.64758,5.71257)(1.62656,5.78375)(1.60445,5.85027) - (1.5812,5.91251)(1.55677,5.97079)(1.53112,6.02543)(1.50418,6.07667) - (1.4759,6.12475)(1.4462,6.16989)(1.41501,6.21226)(1.38225,6.25204) - (1.34781,6.28935)(1.31159,6.32435)(1.27348,6.35712) - (1.23334,6.38779)(1.19104,6.41643)(1.14642,6.44311)(1.09929,6.4679) - (1.04947,6.49085)(0.996736,6.512)(0.940842,6.53138)(0.881517,6.549) - (0.818452,6.56488)(0.7513,6.579)(0.679669,6.59135) -%% -\path(1.49959,5.69983)(1.49052,5.76899)(1.47988,5.83363) - (1.46769,5.89408)(1.45395,5.95068)(1.43865,6.00371)(1.42178,6.0534) - (1.4033,6.09999)(1.38319,6.14367)(1.36138,6.18461)(1.33782,6.22297) - (1.31245,6.25888)(1.28517,6.29246)(1.2559,6.32381)(1.22453,6.35304) - (1.19093,6.3802)(1.15497,6.40538)(1.11648,6.42861)(1.0753,6.44994) - (1.03121,6.4694)(0.983998,6.48701)(0.933394,6.50277) - (0.879107,6.51667)(0.820805,6.52869)(0.758105,6.53879) -%% -\path(1.35808,5.69964)(1.36071,5.7663)(1.36137,5.82859) - (1.36012,5.88685)(1.35701,5.94137)(1.35206,5.99243) - (1.34528,6.04024)(1.33669,6.08502)(1.32628,6.12695) - (1.31402,6.16618)(1.29989,6.20287)(1.28384,6.23713)(1.2658,6.26908) - (1.24573,6.2988)(1.22352,6.32638)(1.19908,6.35188)(1.17229,6.37536) - (1.14301,6.39686)(1.1111,6.41641)(1.07637,6.43402)(1.03861,6.4497) - (0.997597,6.46343)(0.953048,6.47519)(0.904656,6.48495)(0.852063,6.49264) -%% -\path(1.22499,5.71201)(1.23894,5.77574)(1.25058,5.83529) - (1.26001,5.89099)(1.26732,5.94311)(1.27257,5.99188) - (1.27581,6.03753)(1.27707,6.08023)(1.27637,6.12016) - (1.27372,6.15746)(1.26912,6.19226)(1.26255,6.22468)(1.25398,6.2548) - (1.24336,6.28272)(1.23063,6.30849)(1.21572,6.33218) - (1.19853,6.35383)(1.17897,6.37346)(1.1569,6.3911)(1.13216,6.40674) - (1.10459,6.42038)(1.07398,6.43198)(1.04008,6.44151) - (1.00263,6.44891)(0.961291,6.45409) -%% -\path(1.10205,5.73661)(1.12678,5.79705)(1.14894,5.85356) - (1.16867,5.90641)(1.18608,5.95585)(1.20126,6.00209)(1.2143,6.04534) - (1.22526,6.08575)(1.23418,6.12348)(1.2411,6.15867)(1.24604,6.19142) - (1.24901,6.22184)(1.25,6.25)(1.249,6.27598)(1.24597,6.29984) - (1.24087,6.32162)(1.23364,6.34134)(1.22419,6.35903) - (1.21243,6.37468)(1.19825,6.3883)(1.1815,6.39984)(1.16202,6.40927) - (1.13961,6.41653)(1.11404,6.42153)(1.08505,6.42418) -%% -\path(0.990653,5.77275)(1.02551,5.82968)(1.05762,5.88291) - (1.08714,5.93269)(1.11422,5.97925)(1.13897,6.02279)(1.1615,6.06346) - (1.18189,6.10143)(1.20023,6.13683)(1.21656,6.16978) - (1.23095,6.20036)(1.24341,6.22868)(1.25398,6.2548)(1.26266,6.27878) - (1.26945,6.30066)(1.27433,6.32047)(1.27727,6.33823) - (1.27824,6.35395)(1.27716,6.36761)(1.27397,6.37919) - (1.26857,6.38865)(1.26084,6.39593)(1.25063,6.40095) - (1.23778,6.40361)(1.22209,6.40378) -%% -\path(0.891818,5.81952)(0.936069,5.87276)(0.977467,5.92257) - (1.01619,5.96916)(1.05241,6.01272)(1.08626,6.05343) - (1.11788,6.09143)(1.14736,6.12687)(1.17482,6.15986) - (1.20032,6.19049)(1.22395,6.21886)(1.24576,6.24504)(1.2658,6.26908) - (1.28412,6.29103)(1.30073,6.31092)(1.31565,6.32877) - (1.32889,6.34458)(1.34044,6.35836)(1.35028,6.37006) - (1.35839,6.37967)(1.36472,6.38712)(1.3692,6.39234)(1.37176,6.39522) - (1.3723,6.39566)(1.37069,6.39349) -%% -\path(0.806183,5.87573)(0.85904,5.92524)(0.909007,5.97156) - (0.956284,6.01489)(1.00105,6.0554)(1.04347,6.09324) - (1.08369,6.12855)(1.12183,6.16142)(1.15802,6.19198) - (1.19236,6.22029)(1.22494,6.24644)(1.25585,6.27048) - (1.28517,6.29246)(1.31296,6.31241)(1.33928,6.33035) - (1.36418,6.34629)(1.3877,6.36022)(1.40988,6.37214)(1.43074,6.38199) - (1.4503,6.38973)(1.46858,6.3953)(1.48558,6.3986)(1.50128,6.39953) - (1.51567,6.39793)(1.52872,6.39365) -%% -\path(0.734,5.94009)(0.794644,5.98587)(0.852427,6.02873) - (0.907559,6.06882)(0.960235,6.1063)(1.01063,6.14129) - (1.05891,6.17391)(1.10521,6.20425)(1.14968,6.2324)(1.19244,6.25843) - (1.23361,6.28241)(1.27329,6.30437)(1.31159,6.32435)(1.3486,6.34237) - (1.38441,6.35845)(1.41911,6.37258)(1.45277,6.38474) - (1.48548,6.39492)(1.5173,6.40305)(1.54832,6.40909)(1.57859,6.41296) - (1.6082,6.41454)(1.63721,6.41373)(1.6657,6.41035)(1.69373,6.40423) -%% -\path(0.675166,6.01119)(0.742777,6.05334)(0.807609,6.09281) - (0.869881,6.12974)(0.929796,6.16426)(0.987543,6.19647) - (1.0433,6.22648)(1.09722,6.25436)(1.14946,6.28019)(1.20016,6.30402) - (1.24947,6.32591)(1.29751,6.34588)(1.34441,6.36396) - (1.39029,6.38017)(1.43528,6.39451)(1.47948,6.40696)(1.52302,6.4175) - (1.56602,6.42609)(1.60861,6.43269)(1.65091,6.43722)(1.69305,6.4396) - (1.73517,6.4397)(1.77744,6.43741)(1.82002,6.43255)(1.86308,6.42493) -%% -\path(0.62927,6.08763)(0.703045,6.12629)(0.774167,6.1625) - (0.842861,6.1964)(0.909337,6.22808)(0.973792,6.25763) - (1.03641,6.28514)(1.09737,6.31068)(1.15683,6.3343)(1.21496,6.35605) - (1.27191,6.37597)(1.32783,6.39408)(1.38287,6.41039) - (1.43719,6.42493)(1.49093,6.43766)(1.54425,6.44859) - (1.59729,6.45768)(1.65023,6.46488)(1.70324,6.47014) - (1.75649,6.47337)(1.81019,6.4745)(1.86455,6.47339)(1.9198,6.46991) - (1.97622,6.46388)(2.03409,6.4551) -%% -\path(1.95438,5.77398)(1.877,5.75436)(1.7999,5.73751) - (1.72333,5.72355)(1.64758,5.71257)(1.57291,5.70464) - (1.49959,5.69983)(1.4279,5.69816)(1.35808,5.69964)(1.29037,5.70427) - (1.22499,5.71201)(1.16216,5.72282)(1.10205,5.73661) - (1.04484,5.75329)(0.990653,5.77275)(0.939616,5.79488) - (0.891818,5.81952)(0.847326,5.84652)(0.806183,5.87573) - (0.768408,5.90698)(0.734,5.94009)(0.702933,5.97489) - (0.675166,6.01119)(0.650637,6.04883)(0.62927,6.08763) -%% -\path(1.86459,5.91634)(1.79875,5.89596)(1.7333,5.87809) - (1.66845,5.86282)(1.60445,5.85027)(1.54151,5.84052) - (1.47988,5.83363)(1.41976,5.82964)(1.36137,5.82859) - (1.30491,5.83047)(1.25058,5.83529)(1.19853,5.843)(1.14894,5.85356) - (1.10193,5.86689)(1.05762,5.88291)(1.01611,5.90151) - (0.977467,5.92257)(0.941756,5.94597)(0.909007,5.97156) - (0.879232,5.9992)(0.852427,6.02873)(0.828566,6.05999) - (0.807609,6.09281)(0.789499,6.12704)(0.774167,6.1625) -%% -\path(1.77406,6.04108)(1.71877,6.02)(1.66399,6.00118) - (1.60993,5.98475)(1.55677,5.97079)(1.50471,5.95942) - (1.45395,5.95068)(1.40465,5.94465)(1.35701,5.94137) - (1.31118,5.94086)(1.26732,5.94311)(1.22558,5.94812) - (1.18608,5.95585)(1.14892,5.96625)(1.11422,5.97925) - (1.08203,5.99478)(1.05241,6.01272)(1.02541,6.03297)(1.00105,6.0554) - (0.97933,6.07989)(0.960235,6.1063)(0.943738,6.13447) - (0.929796,6.16426)(0.918352,6.19551)(0.909337,6.22808) -%% -\path(1.68169,6.15093)(1.63613,6.12916)(1.59125,6.10945) - (1.54721,6.09191)(1.50418,6.07667)(1.46232,6.0638)(1.42178,6.0534) - (1.38272,6.04553)(1.34528,6.04024)(1.3096,6.03757)(1.27581,6.03753) - (1.24401,6.04012)(1.2143,6.04534)(1.18677,6.05313)(1.1615,6.06346) - (1.13852,6.07626)(1.11788,6.09143)(1.0996,6.1089)(1.08369,6.12855) - (1.07013,6.15026)(1.05891,6.17391)(1.04998,6.19936)(1.0433,6.22648) - (1.0388,6.25512)(1.03641,6.28514) -%% -\path(1.58643,6.24802)(1.54994,6.22555)(1.51431,6.20496) - (1.47969,6.18637)(1.4462,6.16989)(1.41399,6.15563)(1.38319,6.14367) - (1.35391,6.13409)(1.32628,6.12695)(1.3004,6.12229)(1.27637,6.12016) - (1.25427,6.12056)(1.23418,6.12348)(1.21615,6.12892) - (1.20023,6.13683)(1.18644,6.14717)(1.17482,6.15986) - (1.16535,6.17483)(1.15802,6.19198)(1.15281,6.21121)(1.14968,6.2324) - (1.14858,6.25544)(1.14946,6.28019)(1.15223,6.30652)(1.15683,6.3343) -%% -\path(1.4872,6.33406)(1.45923,6.31085)(1.43234,6.28936) - (1.40664,6.26972)(1.38225,6.25204)(1.35927,6.23642) - (1.33782,6.22297)(1.318,6.21176)(1.29989,6.20287)(1.28357,6.19636) - (1.26912,6.19226)(1.2566,6.19061)(1.24604,6.19142)(1.23748,6.19468) - (1.23095,6.20036)(1.22644,6.20844)(1.22395,6.21886) - (1.22346,6.23156)(1.22494,6.24644)(1.22834,6.26342) - (1.23361,6.28241)(1.24068,6.30328)(1.24947,6.32591) - (1.25991,6.35018)(1.27191,6.37597) -%% -\path(1.38287,6.41039)(1.36299,6.38639)(1.34441,6.36396) - (1.32725,6.34324)(1.31159,6.32435)(1.29754,6.30738) - (1.28517,6.29246)(1.27457,6.27966)(1.2658,6.26908)(1.25892,6.26077) - (1.25398,6.2548)(1.251,6.2512)(1.25,6.25)(1.251,6.2512) - (1.25398,6.2548)(1.25892,6.26077)(1.2658,6.26908)(1.27457,6.27966) - (1.28517,6.29246)(1.29754,6.30738)(1.31159,6.32435) - (1.32725,6.34324)(1.34441,6.36396)(1.36299,6.38639)(1.38287,6.41039) -%% -\path(1.27224,6.4781)(1.26007,6.45322)(1.24946,6.4298) - (1.24053,6.40794)(1.23334,6.38779)(1.22799,6.36945) - (1.22453,6.35304)(1.22302,6.33865)(1.22352,6.32638) - (1.22604,6.31631)(1.23063,6.30849)(1.23727,6.30299) - (1.24597,6.29984)(1.25671,6.29906)(1.26945,6.30066) - (1.28414,6.30462)(1.30073,6.31092)(1.31913,6.31951) - (1.33928,6.33035)(1.36108,6.34335)(1.38441,6.35845) - (1.40918,6.37553)(1.43528,6.39451)(1.46257,6.41526)(1.49093,6.43766) -%% -\path(1.15394,6.53802)(1.14916,6.51218)(1.14626,6.48766) - (1.14532,6.46459)(1.14642,6.44311)(1.14962,6.42333) - (1.15497,6.40538)(1.16252,6.38935)(1.17229,6.37536)(1.18429,6.3635) - (1.19853,6.35383)(1.21499,6.34643)(1.23364,6.34134)(1.25442,6.3386) - (1.27727,6.33823)(1.30213,6.34023)(1.32889,6.34458) - (1.35745,6.35126)(1.3877,6.36022)(1.41952,6.37141)(1.45277,6.38474) - (1.48732,6.40014)(1.52302,6.4175)(1.55973,6.43672)(1.59729,6.45768) -%% -\path(1.02641,6.59083)(1.02876,6.56389)(1.03334,6.53816) - (1.04022,6.51377)(1.04947,6.49085)(1.06115,6.46953)(1.0753,6.44994) - (1.09195,6.4322)(1.1111,6.41641)(1.13276,6.40268)(1.1569,6.3911) - (1.18348,6.38175)(1.21243,6.37468)(1.24369,6.36996) - (1.27716,6.36761)(1.31274,6.36764)(1.35028,6.37006) - (1.38967,6.37486)(1.43074,6.38199)(1.47334,6.39141)(1.5173,6.40305) - (1.56245,6.41685)(1.60861,6.43269)(1.6556,6.45049)(1.70324,6.47014) -%% -\path(0.887817,6.63701)(0.897069,6.60884)(0.908939,6.58175) - (0.923508,6.55588)(0.940842,6.53138)(0.960994,6.50838) - (0.983998,6.48701)(1.00987,6.46741)(1.03861,6.4497)(1.0702,6.43398) - (1.10459,6.42038)(1.14172,6.40897)(1.1815,6.39984)(1.22383,6.39305) - (1.26857,6.38865)(1.31559,6.38667)(1.36472,6.38712) - (1.41578,6.39001)(1.46858,6.3953)(1.52292,6.40297)(1.57859,6.41296) - (1.63537,6.42519)(1.69305,6.4396)(1.75139,6.45607)(1.81019,6.4745) -%% -\path(0.735966,6.67692)(0.7519,6.64732)(0.770903,6.61868) - (0.793063,6.59115)(0.818452,6.56488)(0.847122,6.54) - (0.879107,6.51667)(0.91442,6.49502)(0.953048,6.47519) - (0.994955,6.45732)(1.04008,6.44151)(1.08834,6.42788) - (1.13961,6.41653)(1.19376,6.40753)(1.25063,6.40095) - (1.31003,6.39684)(1.37176,6.39522)(1.43559,6.39612) - (1.50128,6.39953)(1.56857,6.40541)(1.63721,6.41373) - (1.70692,6.42442)(1.77744,6.43741)(1.84849,6.45261)(1.9198,6.46991) -%% -\path(0.568192,6.71076)(0.590579,6.67951)(0.616556,6.64908) - (0.646225,6.61965)(0.679669,6.59135)(0.716949,6.56435) - (0.758105,6.53879)(0.803148,6.51484)(0.852063,6.49264) - (0.904803,6.47235)(0.961291,6.45409)(1.02142,6.43799) - (1.08505,6.42418)(1.15201,6.41274)(1.22209,6.40378) - (1.29507,6.39734)(1.37069,6.39349)(1.44868,6.39226) - (1.52872,6.39365)(1.61052,6.39765)(1.69373,6.40423) - (1.77803,6.41335)(1.86308,6.42493)(1.94854,6.43888)(2.03409,6.4551) -%% -\path(1.25,6.25)(0.90831,5.83754) -%% -\path(0.929086,5.88702)(0.940008,5.90021) -\path(0.922161,5.87053)(0.944004,5.8969) -\path(0.915235,5.85404)(0.947999,5.89359) -\path(0.90831,5.83754)(0.951995,5.89028) -\path(0.923227,5.84742)(0.955991,5.88697) -\path(0.938144,5.85729)(0.959987,5.88366) -\path(0.953061,5.86716)(0.963983,5.88035) -\path(0.951995,5.89028)(0.936012,5.90352)(0.90831,5.83754) - (0.967979,5.87704)(0.951995,5.89028) -%% -\path(1.25,6.25)(1.9921,6.09631) -%% -\path(1.90984,6.09745)(1.88348,6.10291) -\path(1.93726,6.09707)(1.88453,6.10799) -\path(1.96468,6.09669)(1.88558,6.11307) -\path(1.9921,6.09631)(1.88663,6.11815) -\path(1.96678,6.10685)(1.88768,6.12323) -\path(1.94147,6.11739)(1.88874,6.12831) -\path(1.91616,6.12793)(1.88979,6.13339) -\path(1.88663,6.11815)(1.88242,6.09782)(1.9921,6.09631) - (1.89084,6.13847)(1.88663,6.11815) -%% -\allinethickness{1pt}% -\color{rgb_980000}% -\path(2.375,5.125) - (2.375,7.375)(0.125,7.375)(0.125,5.125)(2.375,5.125) -%% -\allinethickness{0.4pt}% -\color{rgb_000000}% -\path(1.57249,2.99581) - (1.60208,3.08238)(1.62568,3.16486)(1.6436,3.24353)(1.65613,3.31869) - (1.66348,3.39059)(1.66589,3.45945)(1.66353,3.52548) - (1.65656,3.58888)(1.64515,3.64982)(1.6294,3.70847)(1.60943,3.76497) - (1.58534,3.81945)(1.5572,3.87205)(1.52509,3.92289)(1.48905,3.97206) - (1.44912,4.01968)(1.40534,4.06584)(1.35773,4.11062)(1.3063,4.15411) - (1.25104,4.19638)(1.19195,4.23751)(1.129,4.27756)(1.06218,4.3166)(0.991435,4.35469) -%% -\path(1.39706,3.04908)(1.43364,3.12654)(1.46419,3.20061) - (1.48899,3.27155)(1.50828,3.33955)(1.52226,3.40482) - (1.53114,3.46754)(1.53508,3.52788)(1.53423,3.58598)(1.5287,3.64199) - (1.51863,3.69603)(1.50409,3.74824)(1.48518,3.79871) - (1.46195,3.84755)(1.43447,3.89487)(1.40276,3.94074) - (1.36687,3.98526)(1.3268,4.02851)(1.28256,4.07055)(1.23414,4.11145) - (1.18153,4.1513)(1.12471,4.19013)(1.06363,4.22802) - (0.998248,4.26502)(0.928503,4.30119) -%% -\path(1.24877,3.10605)(1.29092,3.17474)(1.32712,3.24068) - (1.3576,3.30403)(1.38257,3.36496)(1.40221,3.42363)(1.41669,3.48018) - (1.42614,3.53473)(1.43068,3.5874)(1.43043,3.6383)(1.42548,3.68755) - (1.4159,3.73523)(1.40174,3.78143)(1.38307,3.82624)(1.35991,3.86973) - (1.33228,3.91199)(1.3002,3.95308)(1.26366,3.99306)(1.22265,4.03201) - (1.17713,4.06997)(1.12708,4.107)(1.07245,4.14315)(1.01316,4.17848) - (0.94915,4.21303)(0.88033,4.24685) -%% -\path(1.12691,3.16617)(1.17344,3.22652)(1.21419,3.28463) - (1.24934,3.34063)(1.27907,3.39466)(1.30353,3.44682) - (1.32285,3.49721)(1.33713,3.54595)(1.34648,3.59312) - (1.35097,3.63881)(1.35067,3.68311)(1.34564,3.72607)(1.3359,3.76779) - (1.32149,3.80832)(1.30242,3.84773)(1.27869,3.88608) - (1.25028,3.92343)(1.21716,3.95982)(1.17931,3.99531) - (1.13666,4.02995)(1.08914,4.06378)(1.0367,4.09685)(0.979215,4.1292) - (0.916597,4.16087)(0.848721,4.19189) -%% -\path(1.03051,3.22888)(1.08046,3.28136)(1.12486,3.33203) - (1.16386,3.38098)(1.1976,3.42832)(1.22618,3.47411)(1.24971,3.51846) - (1.26827,3.56143)(1.28193,3.60309)(1.29073,3.64351) - (1.29472,3.68275)(1.29392,3.72088)(1.28835,3.75794)(1.27801,3.794) - (1.26288,3.82909)(1.24294,3.86327)(1.21815,3.89658) - (1.18844,3.92907)(1.15376,3.96077)(1.11403,3.99173) - (1.06914,4.02198)(1.01898,4.05155)(0.963433,4.08048) - (0.902342,4.10881)(0.835544,4.13656) -%% -\path(0.958412,3.29368)(1.01103,3.3388)(1.05838,3.38244) - (1.10059,3.42468)(1.13773,3.4656)(1.1699,3.50525)(1.19715,3.54369) - (1.21956,3.58099)(1.23714,3.61719)(1.24993,3.65234)(1.25794,3.6865) - (1.26117,3.7197)(1.25961,3.75199)(1.25324,3.78341)(1.242,3.814) - (1.22584,3.84379)(1.20471,3.87282)(1.1785,3.90111)(1.14713,3.92871) - (1.11049,3.95563)(1.06842,3.98191)(1.02079,4.00758) - (0.967431,4.03266)(0.90814,4.05717)(0.842708,4.08114) -%% -\path(0.909289,3.36006)(0.964025,3.39834)(1.01381,3.43541) - (1.05873,3.47132)(1.09883,3.50614)(1.13418,3.5399)(1.16481,3.57265) - (1.19075,3.60442)(1.212,3.63526)(1.22857,3.66521)(1.24045,3.69429) - (1.2476,3.72255)(1.25,3.75)(1.24758,3.77668)(1.24029,3.80262) - (1.22803,3.82784)(1.21071,3.85236)(1.18821,3.87622)(1.1604,3.89941) - (1.12714,3.92198)(1.08825,3.94394)(1.04353,3.9653) - (0.992768,3.98607)(0.935726,4.00629)(0.872128,4.02595) -%% -\path(0.881704,3.42756)(0.938175,3.45953)(0.990033,3.4905) - (1.03733,3.5205)(1.08009,3.54957)(1.11835,3.57774)(1.15212,3.60504) - (1.1814,3.63149)(1.20618,3.65713)(1.22644,3.68198)(1.24213,3.70606) - (1.25321,3.72939)(1.25961,3.75199)(1.26127,3.77388) - (1.25808,3.79508)(1.24993,3.8156)(1.2367,3.83545)(1.21824,3.85464) - (1.19439,3.87319)(1.16495,3.89111)(1.12973,3.9084)(1.08847,3.92506) - (1.04091,3.94111)(0.986766,3.95654)(0.92569,3.97136) -%% -\path(0.874138,3.49573)(0.93211,3.52194)(0.985819,3.54729) - (1.03529,3.5718)(1.08054,3.5955)(1.12156,3.61841)(1.15836,3.64055) - (1.19091,3.66193)(1.21917,3.68256)(1.24311,3.70247) - (1.26267,3.72167)(1.27778,3.74015)(1.28835,3.75794) - (1.29429,3.77504)(1.29547,3.79146)(1.29177,3.80719) - (1.28303,3.82225)(1.26907,3.83662)(1.2497,3.85032)(1.22469,3.86333) - (1.1938,3.87564)(1.15674,3.88726)(1.1132,3.89816)(1.06282,3.90834)(1.0052,3.91777) -%% -\path(0.885031,3.56419)(0.944391,3.58516)(0.999849,3.60537) - (1.05141,3.62484)(1.09907,3.64357)(1.14282,3.66157) - (1.18263,3.67886)(1.21846,3.69544)(1.25027,3.71131)(1.278,3.72648) - (1.30157,3.74095)(1.32091,3.75472)(1.3359,3.76779)(1.34643,3.78015) - (1.35237,3.7918)(1.35356,3.80272)(1.34982,3.81291)(1.34096,3.82236) - (1.32674,3.83103)(1.30692,3.83893)(1.28121,3.84601) - (1.24929,3.85226)(1.21078,3.85763)(1.16529,3.8621)(1.11235,3.86562) -%% -\path(0.912807,3.63258)(0.973544,3.64883)(1.03075,3.66437) - (1.0844,3.67923)(1.1345,3.69339)(1.18102,3.70686)(1.22391,3.71963) - (1.26313,3.73171)(1.29863,3.74309)(1.33033,3.75376) - (1.35815,3.76372)(1.38199,3.77294)(1.40174,3.78143) - (1.41728,3.78915)(1.42844,3.7961)(1.43507,3.80224)(1.43696,3.80755) - (1.43391,3.812)(1.42567,3.81556)(1.41195,3.81818)(1.39244,3.81982) - (1.36679,3.82042)(1.33458,3.81993)(1.29537,3.81827)(1.24863,3.81537) -%% -\path(0.955906,3.70059)(1.01809,3.7126)(1.0771,3.72394) - (1.13294,3.73461)(1.18557,3.74461)(1.23497,3.75392) - (1.28108,3.76253)(1.32387,3.77044)(1.36326,3.77762) - (1.39918,3.78406)(1.43155,3.78974)(1.46025,3.79463) - (1.48518,3.79871)(1.5062,3.80194)(1.52314,3.8043)(1.53585,3.80574) - (1.54411,3.80622)(1.54771,3.80568)(1.54637,3.80407) - (1.53982,3.80133)(1.52771,3.79737)(1.50967,3.79211) - (1.48526,3.78546)(1.45399,3.7773)(1.4153,3.76751) -%% -\path(1.0128,3.76793)(1.07655,3.77617)(1.13751,3.78375) - (1.19566,3.79067)(1.25098,3.7969)(1.30343,3.80242)(1.35296,3.80723) - (1.39954,3.81129)(1.44308,3.81459)(1.48353,3.81709) - (1.52079,3.81875)(1.55477,3.81956)(1.58534,3.81945) - (1.61238,3.81839)(1.63574,3.81633)(1.65524,3.8132)(1.67069,3.80894) - (1.68186,3.80347)(1.68849,3.79671)(1.6903,3.78856)(1.68695,3.77892) - (1.67805,3.76764)(1.66317,3.7546)(1.64178,3.73963)(1.61332,3.72254) -%% -\path(1.57249,2.99581)(1.48135,3.02195)(1.39706,3.04908) - (1.31956,3.07714)(1.24877,3.10605)(1.1846,3.13575)(1.12691,3.16617) - (1.0756,3.19723)(1.03051,3.22888)(0.991504,3.26105) - (0.958412,3.29368)(0.931066,3.3267)(0.909289,3.36006) - (0.892898,3.3937)(0.881704,3.42756)(0.875516,3.46158) - (0.874138,3.49573)(0.877376,3.52995)(0.885031,3.56419) - (0.896906,3.59842)(0.912807,3.63258)(0.932537,3.66665) - (0.955906,3.70059)(0.982723,3.73436)(1.0128,3.76793) -%% -\path(1.62568,3.16486)(1.54188,3.18217)(1.46419,3.20061) - (1.39261,3.22013)(1.32712,3.24068)(1.26766,3.26219) - (1.21419,3.28463)(1.16661,3.30793)(1.12486,3.33203) - (1.08882,3.35689)(1.05838,3.38244)(1.03343,3.40863) - (1.01381,3.43541)(0.999398,3.46271)(0.990033,3.4905) - (0.985561,3.51871)(0.985819,3.54729)(0.990638,3.57619) - (0.999849,3.60537)(1.01328,3.63478)(1.03075,3.66437) - (1.05208,3.69411)(1.0771,3.72394)(1.10564,3.75384)(1.13751,3.78375) -%% -\path(1.65613,3.31869)(1.57945,3.32854)(1.50828,3.33955) - (1.44265,3.3517)(1.38257,3.36496)(1.32805,3.37929)(1.27907,3.39466) - (1.2356,3.41101)(1.1976,3.42832)(1.165,3.44653)(1.13773,3.4656) - (1.11571,3.48548)(1.09883,3.50614)(1.087,3.52752)(1.08009,3.54957) - (1.07798,3.57225)(1.08054,3.5955)(1.08762,3.61929)(1.09907,3.64357) - (1.11475,3.66828)(1.1345,3.69339)(1.15816,3.71885)(1.18557,3.74461) - (1.21656,3.77064)(1.25098,3.7969) -%% -\path(1.66589,3.45945)(1.59601,3.46292)(1.53114,3.46754) - (1.47135,3.4733)(1.41669,3.48018)(1.36718,3.48816)(1.32285,3.49721) - (1.2837,3.50732)(1.24971,3.51846)(1.22088,3.53059)(1.19715,3.54369) - (1.17849,3.55772)(1.16481,3.57265)(1.15605,3.58843) - (1.15212,3.60504)(1.15293,3.62242)(1.15836,3.64055)(1.1683,3.65937) - (1.18263,3.67886)(1.20121,3.69896)(1.22391,3.71963) - (1.25058,3.74084)(1.28108,3.76253)(1.31526,3.78468)(1.35296,3.80723) -%% -\path(1.65656,3.58888)(1.59309,3.58689)(1.53423,3.58598) - (1.48007,3.58615)(1.43068,3.5874)(1.38614,3.58973)(1.34648,3.59312) - (1.31173,3.59758)(1.28193,3.60309)(1.25706,3.60963) - (1.23714,3.61719)(1.22213,3.62574)(1.212,3.63526)(1.2067,3.64574) - (1.20618,3.65713)(1.21037,3.66942)(1.21917,3.68256) - (1.23251,3.69654)(1.25027,3.71131)(1.27235,3.72684) - (1.29863,3.74309)(1.32898,3.76003)(1.36326,3.77762) - (1.40135,3.79582)(1.44308,3.81459) -%% -\path(1.6294,3.70847)(1.57186,3.70176)(1.51863,3.69603) - (1.4698,3.69129)(1.42548,3.68755)(1.38575,3.68482)(1.35067,3.68311) - (1.32031,3.68242)(1.29472,3.68275)(1.27392,3.68411)(1.25794,3.6865) - (1.24679,3.68989)(1.24045,3.69429)(1.23891,3.69969) - (1.24213,3.70606)(1.25007,3.71339)(1.26267,3.72167) - (1.27987,3.73086)(1.30157,3.74095)(1.3277,3.75191)(1.35815,3.76372) - (1.3928,3.77634)(1.43155,3.78974)(1.47426,3.80389)(1.52079,3.81875) -%% -\path(1.58534,3.81945)(1.53323,3.80866)(1.48518,3.79871) - (1.44131,3.78962)(1.40174,3.78143)(1.36658,3.77414)(1.3359,3.76779) - (1.3098,3.76239)(1.28835,3.75794)(1.27161,3.75448)(1.25961,3.75199) - (1.25241,3.7505)(1.25,3.75)(1.25241,3.7505)(1.25961,3.75199) - (1.27161,3.75448)(1.28835,3.75794)(1.3098,3.76239)(1.3359,3.76779) - (1.36658,3.77414)(1.40174,3.78143)(1.44131,3.78962) - (1.48518,3.79871)(1.53323,3.80866)(1.58534,3.81945) -%% -\path(1.52509,3.92289)(1.47784,3.90853)(1.43447,3.89487) - (1.39512,3.88192)(1.35991,3.86973)(1.32897,3.85833) - (1.30242,3.84773)(1.28036,3.83798)(1.26288,3.82909) - (1.25007,3.82109)(1.242,3.814)(1.23872,3.80784)(1.24029,3.80262) - (1.24673,3.79836)(1.25808,3.79508)(1.27433,3.79277) - (1.29547,3.79146)(1.3215,3.79113)(1.35237,3.7918)(1.38804,3.79345) - (1.42844,3.7961)(1.47351,3.79972)(1.52314,3.8043)(1.57726,3.80985)(1.63574,3.81633) -%% -\path(1.44912,4.01968)(1.40612,4.00221)(1.36687,3.98526) - (1.33151,3.96887)(1.3002,3.95308)(1.27308,3.93792)(1.25028,3.92343) - (1.23193,3.90964)(1.21815,3.89658)(1.20904,3.8843)(1.20471,3.87282) - (1.20524,3.86216)(1.21071,3.85236)(1.22118,3.84345)(1.2367,3.83545) - (1.25731,3.82837)(1.28303,3.82225)(1.31387,3.81709) - (1.34982,3.81291)(1.39086,3.80973)(1.43696,3.80755) - (1.48807,3.80638)(1.54411,3.80622)(1.60502,3.80707)(1.67069,3.80894) -%% -\path(1.35773,4.11062)(1.31832,4.09041)(1.28256,4.07055) - (1.25061,4.05107)(1.22265,4.03201)(1.19883,4.01341) - (1.17931,3.99531)(1.16424,3.97775)(1.15376,3.96077) - (1.14802,3.94441)(1.14713,3.92871)(1.15123,3.91369)(1.1604,3.89941) - (1.17476,3.8859)(1.19439,3.87319)(1.21935,3.86132)(1.2497,3.85032) - (1.28549,3.84021)(1.32674,3.83103)(1.37347,3.82281) - (1.42567,3.81556)(1.48331,3.80931)(1.54637,3.80407) - (1.61479,3.79987)(1.68849,3.79671) -%% -\path(1.25104,4.19638)(1.2145,4.17376)(1.18153,4.1513) - (1.15234,4.12903)(1.12708,4.107)(1.10596,4.08523)(1.08914,4.06378) - (1.07681,4.04268)(1.06914,4.02198)(1.06629,4.00171) - (1.06842,3.98191)(1.07569,3.96264)(1.08825,3.94394) - (1.10622,3.92584)(1.12973,3.9084)(1.15889,3.89165)(1.1938,3.87564) - (1.23455,3.86042)(1.28121,3.84601)(1.33383,3.83246) - (1.39244,3.81982)(1.45707,3.80811)(1.52771,3.79737) - (1.60435,3.78763)(1.68695,3.77892) -%% -\path(1.129,4.27756)(1.09455,4.25281)(1.06363,4.22802) - (1.03643,4.20324)(1.01316,4.17848)(0.994019,4.15379) - (0.979215,4.1292)(0.968952,4.10475)(0.963433,4.08048) - (0.96286,4.05644)(0.967431,4.03266)(0.977337,4.00919) - (0.992768,3.98607)(1.0139,3.96337)(1.04091,3.94111) - (1.07396,3.91936)(1.1132,3.89816)(1.15877,3.87757)(1.21078,3.85763) - (1.26936,3.8384)(1.33458,3.81993)(1.40653,3.80226)(1.48526,3.78546) - (1.5708,3.76955)(1.66317,3.7546) -%% -\path(0.991435,4.35469)(0.958234,4.32805)(0.928503,4.30119) - (0.902461,4.27411)(0.88033,4.24685)(0.862339,4.21944) - (0.848721,4.19189)(0.83971,4.16426)(0.835544,4.13656) - (0.836464,4.10884)(0.842708,4.08114)(0.854517,4.05349) - (0.872128,4.02595)(0.895776,3.99856)(0.92569,3.97136) - (0.962093,3.94442)(1.0052,3.91777)(1.05522,3.89149) - (1.11235,3.86562)(1.17676,3.84023)(1.24863,3.81537)(1.3281,3.79111) - (1.4153,3.76751)(1.51034,3.74463)(1.61332,3.72254) -%% -\path(1.25,3.75)(0.507902,3.59631) -%% -\path(0.583844,3.62793)(0.610211,3.63339) -\path(0.55853,3.61739)(0.611263,3.62831) -\path(0.533216,3.60685)(0.612315,3.62323) -\path(0.507902,3.59631)(0.613368,3.61815) -\path(0.535321,3.59669)(0.61442,3.61307) -\path(0.56274,3.59707)(0.615472,3.60799) -\path(0.590158,3.59745)(0.616525,3.60291) -\path(0.613368,3.61815)(0.609159,3.63847)(0.507902,3.59631) - (0.617577,3.59782)(0.613368,3.61815) -%% -\path(1.25,3.75)(1.59169,3.33754) -%% -\path(1.54694,3.36716)(1.53602,3.38035) -\path(1.56186,3.35729)(1.54001,3.38366) -\path(1.57677,3.34742)(1.54401,3.38697) -\path(1.59169,3.33754)(1.548,3.39028) -\path(1.58476,3.35404)(1.552,3.39359) -\path(1.57784,3.37053)(1.556,3.3969) -\path(1.57091,3.38702)(1.55999,3.40021) -\path(1.548,3.39028)(1.53202,3.37704)(1.59169,3.33754) - (1.56399,3.40352)(1.548,3.39028) -%% -\allinethickness{1pt}% -\color{rgb_980000}% -\path(2.375,2.625) - (2.375,4.875)(0.125,4.875)(0.125,2.625)(2.375,2.625) -%% -\allinethickness{0.4pt}% -\color{rgb_000000}% -\path - (0.927506,0.495809)(1.01757,0.548834)(1.10157,0.602843) - (1.17947,0.657739)(1.25125,0.713425)(1.3169,0.769804) - (1.37643,0.826777)(1.42989,0.884247)(1.47732,0.94212) - (1.51879,1.0003)(1.55438,1.0587)(1.58419,1.11722)(1.60833,1.17579) - (1.62692,1.23431)(1.64008,1.2927)(1.64797,1.35089)(1.65074,1.40881) - (1.64854,1.46638)(1.64154,1.52354)(1.62991,1.58023) - (1.61383,1.63639)(1.59347,1.69196)(1.56902,1.7469)(1.54066,1.80115)(1.50857,1.85469) -%% -\path(0.8777,0.611715)(0.959433,0.655571)(1.03581,0.700614) - (1.10675,0.74677)(1.17219,0.793961)(1.2321,0.842109) - (1.28645,0.891132)(1.33522,0.940947)(1.37842,0.991473) - (1.41609,1.04262)(1.44824,1.09432)(1.47494,1.14647)(1.49626,1.199) - (1.51227,1.25182)(1.52307,1.30486)(1.52876,1.35804) - (1.52946,1.41127)(1.52529,1.46449)(1.51639,1.51763)(1.5029,1.57062) - (1.48496,1.62339)(1.46273,1.67588)(1.43637,1.72802) - (1.40604,1.77978)(1.37192,1.83108) -%% -\path(0.850911,0.713606)(0.924836,0.749547)(0.993963,0.786789) - (1.05819,0.825281)(1.11743,0.864964)(1.17161,0.905781) - (1.22068,0.947667)(1.26458,0.990557)(1.3033,1.03438) - (1.33682,1.07908)(1.36514,1.12456)(1.38829,1.17077) - (1.40628,1.21763)(1.41917,1.26507)(1.42702,1.313)(1.42989,1.36136) - (1.42787,1.41007)(1.42105,1.45906)(1.40954,1.50826) - (1.39346,1.55759)(1.37292,1.607)(1.34805,1.6564)(1.31901,1.70574) - (1.28592,1.75496)(1.24895,1.80399) -%% -\path(0.844563,0.803527)(0.911256,0.832549)(0.97359,0.862922) - (1.03145,0.894614)(1.08472,0.927588)(1.13332,0.961802) - (1.17715,0.997213)(1.21616,1.03377)(1.25029,1.07143) - (1.27949,1.11013)(1.30374,1.14982)(1.32302,1.19043) - (1.33734,1.23191)(1.3467,1.27419)(1.35115,1.31721)(1.35071,1.3609) - (1.34544,1.40519)(1.33541,1.45002)(1.32069,1.49531) - (1.30138,1.54101)(1.27758,1.58703)(1.24938,1.63332)(1.21692,1.6798) - (1.18032,1.72642)(1.13972,1.7731) -%% -\path(0.856643,0.883119)(0.916712,0.906022)(0.972764,0.930277) - (1.02467,0.955868)(1.0723,0.982778)(1.11556,1.01098) - (1.15433,1.04046)(1.18853,1.07117)(1.21807,1.10309) - (1.24291,1.13617)(1.26297,1.17038)(1.27822,1.20567)(1.28864,1.242) - (1.2942,1.27931)(1.29492,1.31754)(1.29079,1.35666)(1.28185,1.39658) - (1.26815,1.43727)(1.24972,1.47865)(1.22664,1.52067) - (1.19897,1.56326)(1.16682,1.60635)(1.13027,1.64988) - (1.08945,1.69379)(1.04445,1.73802) -%% -\path(0.885577,0.953717)(0.93965,0.971145)(0.989968,0.989888) - (1.03639,1.00995)(1.07878,1.03132)(1.11702,1.05399) - (1.15098,1.07797)(1.18055,1.10322)(1.20565,1.12975) - (1.22618,1.15751)(1.24206,1.1865)(1.25323,1.21667)(1.25963,1.24801) - (1.26123,1.28046)(1.258,1.314)(1.24993,1.34858)(1.23701,1.38415) - (1.21926,1.42067)(1.1967,1.45809)(1.16937,1.49635)(1.13734,1.5354) - (1.10065,1.57517)(1.0594,1.61562)(1.01366,1.65667)(0.963551,1.69828) -%% -\path(0.930139,1.01641)(0.97886,1.02889)(1.02402,1.04261) - (1.06548,1.05759)(1.10308,1.07385)(1.13669,1.09139) - (1.16618,1.11021)(1.19141,1.13032)(1.21227,1.15172)(1.22866,1.1744) - (1.24046,1.19834)(1.2476,1.22355)(1.25,1.25)(1.24758,1.27767) - (1.2403,1.30654)(1.22812,1.33658)(1.211,1.36775)(1.18893,1.40004) - (1.16191,1.43338)(1.12996,1.46775)(1.0931,1.50311)(1.05137,1.53939) - (1.00483,1.57655)(0.95355,1.61455)(0.897604,1.65331) -%% -\path(0.989383,1.07211)(1.03341,1.08005)(1.07402,1.08915) - (1.11107,1.09943)(1.14439,1.11092)(1.17383,1.12362) - (1.19925,1.13757)(1.22049,1.15278)(1.23743,1.16926) - (1.24993,1.18702)(1.25787,1.20606)(1.26114,1.22639) - (1.25963,1.24801)(1.25325,1.2709)(1.24192,1.29508)(1.22557,1.32052) - (1.20414,1.3472)(1.17758,1.37511)(1.14587,1.40423)(1.10898,1.43452) - (1.06692,1.46596)(1.0197,1.49852)(0.967353,1.53214) - (0.909912,1.5668)(0.84744,1.60244) -%% -\path(1.0626,1.12156)(1.1026,1.12531)(1.1393,1.1301) - (1.17253,1.13598)(1.20212,1.14296)(1.22791,1.15108) - (1.24973,1.16037)(1.26742,1.17086)(1.28083,1.18256)(1.2898,1.19551) - (1.29418,1.20972)(1.29384,1.22521)(1.28864,1.242)(1.27846,1.26009) - (1.26319,1.27949)(1.24272,1.30021)(1.21697,1.32225)(1.18585,1.3456) - (1.14931,1.37026)(1.10728,1.39622)(1.05973,1.42347) - (1.00664,1.45198)(0.948007,1.48173)(0.883841,1.51269)(0.81417,1.54484) -%% -\path(1.14927,1.16539)(1.18593,1.16521)(1.21938,1.16596) - (1.24942,1.16766)(1.27589,1.17035)(1.2986,1.17407)(1.31737,1.17886) - (1.33202,1.18475)(1.34238,1.19178)(1.34825,1.19998) - (1.34948,1.20938)(1.3459,1.22002)(1.33734,1.23191)(1.32364,1.2451) - (1.30466,1.25959)(1.28026,1.27541)(1.2503,1.29259)(1.21467,1.31112) - (1.17326,1.33103)(1.12598,1.35233)(1.07274,1.375)(1.01349,1.39906) - (0.948177,1.4245)(0.876769,1.45131)(0.799255,1.47948) -%% -\path(1.24904,1.20411)(1.28307,1.20023)(1.31396,1.19712) - (1.3415,1.19483)(1.3655,1.19339)(1.38577,1.19284)(1.4021,1.19323) - (1.41431,1.19461)(1.42218,1.197)(1.42551,1.20046)(1.4241,1.20502) - (1.41776,1.21074)(1.40628,1.21763)(1.38947,1.22576) - (1.36714,1.23514)(1.33911,1.24583)(1.3052,1.25784)(1.26524,1.27122) - (1.21907,1.28599)(1.16656,1.30219)(1.10756,1.31982) - (1.04196,1.33891)(0.969654,1.35948)(0.890556,1.38154)(0.804598,1.4051) -%% -\path(1.3617,1.23817)(1.39385,1.23075)(1.4229,1.22394) - (1.44865,1.21779)(1.47089,1.21232)(1.48943,1.2076)(1.50402,1.20365) - (1.51446,1.20053)(1.52052,1.19829)(1.52196,1.19696) - (1.51856,1.19661)(1.51007,1.19727)(1.49626,1.199)(1.47689,1.20184) - (1.45173,1.20585)(1.42053,1.21107)(1.38308,1.21755) - (1.33914,1.22534)(1.28849,1.23448)(1.23092,1.24502) - (1.16623,1.25701)(1.09423,1.27047)(1.01474,1.28546) - (0.927602,1.30199)(0.83267,1.32012) -%% -\path(1.4872,1.26793)(1.51821,1.2571)(1.5462,1.2467) - (1.57093,1.23677)(1.5922,1.22735)(1.60978,1.21849)(1.62342,1.21022) - (1.63288,1.20259)(1.6379,1.19565)(1.63823,1.18945)(1.6336,1.18404) - (1.62373,1.17947)(1.60833,1.17579)(1.58713,1.17306) - (1.55982,1.17134)(1.52613,1.17068)(1.48574,1.17114) - (1.43836,1.17279)(1.3837,1.17569)(1.32146,1.17988)(1.25135,1.18545) - (1.17308,1.19243)(1.08639,1.20091)(0.99101,1.21092)(0.886683,1.22254) -%% -\path(0.927506,0.495809)(0.899539,0.55566)(0.8777,0.611715) - (0.861604,0.664274)(0.850911,0.713606)(0.845319,0.759952) - (0.844563,0.803527)(0.848407,0.844524)(0.856643,0.883119) - (0.869088,0.919469)(0.885577,0.953717)(0.90597,0.985993) - (0.930139,1.01641)(0.957975,1.04509)(0.989383,1.07211) - (1.02428,1.09758)(1.0626,1.12156)(1.10428,1.14414)(1.14927,1.16539) - (1.19753,1.18536)(1.24904,1.20411)(1.30377,1.2217)(1.3617,1.23817) - (1.42285,1.25356)(1.4872,1.26793) -%% -\path(1.10157,0.602843)(1.06552,0.653288)(1.03581,0.700614) - (1.01206,0.745046)(0.993963,0.786789)(0.981224,0.826026) - (0.97359,0.862922)(0.970837,0.897627)(0.972764,0.930277) - (0.979193,0.960993)(0.989968,0.989888)(1.00495,1.01706) - (1.02402,1.04261)(1.04708,1.06661)(1.07402,1.08915) - (1.10479,1.11029)(1.1393,1.1301)(1.17751,1.14864)(1.21938,1.16596) - (1.26487,1.1821)(1.31396,1.19712)(1.36664,1.21106)(1.4229,1.22394) - (1.48275,1.23581)(1.5462,1.2467) -%% -\path(1.25125,0.713425)(1.20852,0.754966)(1.17219,0.793961) - (1.14193,0.830577)(1.11743,0.864964)(1.09844,0.89726) - (1.08472,0.927588)(1.07607,0.95606)(1.0723,0.982778) - (1.07325,1.00784)(1.07878,1.03132)(1.08876,1.0533)(1.10308,1.07385) - (1.12165,1.09304)(1.14439,1.11092)(1.17123,1.12754) - (1.20212,1.14296)(1.23702,1.15721)(1.27589,1.17035) - (1.31872,1.18239)(1.3655,1.19339)(1.41622,1.20335)(1.47089,1.21232) - (1.52955,1.22032)(1.5922,1.22735) -%% -\path(1.37643,0.826777)(1.32827,0.85999)(1.28645,0.891132) - (1.25067,0.920321)(1.22068,0.947667)(1.19624,0.973268) - (1.17715,0.997213)(1.16324,1.01959)(1.15433,1.04046) - (1.15028,1.0599)(1.15098,1.07797)(1.15631,1.09472)(1.16618,1.11021) - (1.18051,1.12448)(1.19925,1.13757)(1.22233,1.14953) - (1.24973,1.16037)(1.28142,1.17014)(1.31737,1.17886)(1.3576,1.18655) - (1.4021,1.19323)(1.4509,1.19893)(1.50402,1.20365)(1.56151,1.20741)(1.62342,1.21022) -%% -\path(1.47732,0.94212)(1.42478,0.967642)(1.37842,0.991473) - (1.338,1.01369)(1.3033,1.03438)(1.27412,1.05361)(1.25029,1.07143) - (1.23165,1.08791)(1.21807,1.10309)(1.20944,1.11702) - (1.20565,1.12975)(1.20662,1.1413)(1.21227,1.15172)(1.22256,1.16103) - (1.23743,1.16926)(1.25686,1.17643)(1.28083,1.18256) - (1.30933,1.18768)(1.34238,1.19178)(1.37998,1.19488)(1.42218,1.197) - (1.469,1.19814)(1.52052,1.19829)(1.57679,1.19746)(1.6379,1.19565) -%% -\path(1.55438,1.0587)(1.49833,1.07721)(1.44824,1.09432) - (1.4039,1.11009)(1.36514,1.12456)(1.3318,1.13779)(1.30374,1.14982) - (1.28083,1.16067)(1.26297,1.17038)(1.25007,1.17898)(1.24206,1.1865) - (1.23887,1.19294)(1.24046,1.19834)(1.2468,1.20271)(1.25787,1.20606) - (1.27366,1.20839)(1.29418,1.20972)(1.31944,1.21005) - (1.34948,1.20938)(1.38435,1.20771)(1.4241,1.20502)(1.46881,1.20133) - (1.51856,1.19661)(1.57345,1.19085)(1.6336,1.18404) -%% -\path(1.60833,1.17579)(1.54946,1.18798)(1.49626,1.199) - (1.44858,1.20887)(1.40628,1.21763)(1.36924,1.22531) - (1.33734,1.23191)(1.3105,1.23747)(1.28864,1.242)(1.2717,1.24551) - (1.25963,1.24801)(1.25241,1.2495)(1.25,1.25)(1.25241,1.2495) - (1.25963,1.24801)(1.2717,1.24551)(1.28864,1.242)(1.3105,1.23747) - (1.33734,1.23191)(1.36924,1.22531)(1.40628,1.21763) - (1.44858,1.20887)(1.49626,1.199)(1.54946,1.18798)(1.60833,1.17579) -%% -\path(1.64008,1.2927)(1.5789,1.29929)(1.52307,1.30486) - (1.47248,1.30943)(1.42702,1.313)(1.3866,1.31559)(1.35115,1.31721) - (1.3206,1.31786)(1.29492,1.31754)(1.27406,1.31626)(1.258,1.314) - (1.24675,1.31076)(1.2403,1.30654)(1.23868,1.30132)(1.24192,1.29508) - (1.25007,1.28781)(1.26319,1.27949)(1.28135,1.27009) - (1.30466,1.25959)(1.33321,1.24795)(1.36714,1.23514) - (1.40659,1.22112)(1.45173,1.20585)(1.50274,1.18927)(1.55982,1.17134) -%% -\path(1.65074,1.40881)(1.5876,1.4105)(1.52946,1.41127) - (1.47624,1.41113)(1.42787,1.41007)(1.38428,1.40809) - (1.34544,1.40519)(1.3113,1.40136)(1.28185,1.39658)(1.25709,1.39085) - (1.23701,1.38415)(1.22163,1.37646)(1.211,1.36775)(1.20515,1.35801) - (1.20414,1.3472)(1.20805,1.33529)(1.21697,1.32225)(1.23101,1.30803) - (1.2503,1.29259)(1.27497,1.27588)(1.3052,1.25784)(1.34116,1.23842) - (1.38308,1.21755)(1.43118,1.19515)(1.48574,1.17114) -%% -\path(1.64154,1.52354)(1.57665,1.52102)(1.51639,1.51763) - (1.4607,1.51338)(1.40954,1.50826)(1.36288,1.50224)(1.32069,1.49531) - (1.28297,1.48746)(1.24972,1.47865)(1.22095,1.46887)(1.1967,1.45809) - (1.177,1.44627)(1.16191,1.43338)(1.15151,1.41938)(1.14587,1.40423) - (1.14509,1.38787)(1.14931,1.37026)(1.15864,1.35134) - (1.17326,1.33103)(1.19333,1.30928)(1.21907,1.28599)(1.2507,1.26109) - (1.28849,1.23448)(1.33271,1.20605)(1.3837,1.17569) -%% -\path(1.61383,1.63639)(1.54727,1.6303)(1.48496,1.62339) - (1.42684,1.61563)(1.37292,1.607)(1.32316,1.59747)(1.27758,1.58703) - (1.23617,1.57563)(1.19897,1.56326)(1.16601,1.54986)(1.13734,1.5354) - (1.11301,1.51983)(1.0931,1.50311)(1.0777,1.48517)(1.06692,1.46596) - (1.06088,1.44542)(1.05973,1.42347)(1.06362,1.40002)(1.07274,1.375) - (1.08731,1.3483)(1.10756,1.31982)(1.13377,1.28943)(1.16623,1.25701) - (1.20529,1.2224)(1.25135,1.18545) -%% -\path(1.56902,1.7469)(1.50078,1.73787)(1.43637,1.72802) - (1.37578,1.71732)(1.31901,1.70574)(1.26605,1.69325)(1.21692,1.6798) - (1.17165,1.66536)(1.13027,1.64988)(1.09284,1.63332)(1.0594,1.61562) - (1.03003,1.59672)(1.00483,1.57655)(0.983899,1.55505) - (0.967353,1.53214)(0.955336,1.50773)(0.948007,1.48173) - (0.945551,1.45402)(0.948177,1.4245)(0.956122,1.39304) - (0.969654,1.35948)(0.989078,1.32368)(1.01474,1.28546) - (1.04703,1.24461)(1.08639,1.20091) -%% -\path(1.50857,1.85469)(1.43853,1.8433)(1.37192,1.83108) - (1.30872,1.81799)(1.24895,1.80399)(1.1926,1.78904)(1.13972,1.7731) - (1.09032,1.75611)(1.04445,1.73802)(1.00217,1.71876) - (0.963551,1.69828)(0.928663,1.67649)(0.897604,1.65331) - (0.870487,1.62866)(0.84744,1.60244)(0.828611,1.57454) - (0.81417,1.54484)(0.80431,1.5132)(0.799255,1.47948) - (0.799255,1.44351)(0.804598,1.4051)(0.815612,1.36405) - (0.83267,1.32012)(0.856198,1.27305)(0.886683,1.22254) -%% -\path(1.25,1.25)(0.600163,1.38459) -%% -\path(0.68242,1.38345)(0.708786,1.37799) -\path(0.655001,1.38383)(0.707734,1.37291) -\path(0.627582,1.38421)(0.706681,1.36782) -\path(0.600163,1.38459)(0.705629,1.36274) -\path(0.625477,1.37404)(0.704577,1.35766) -\path(0.650792,1.3635)(0.703524,1.35258) -\path(0.676106,1.35296)(0.702472,1.3475) -\path(0.705629,1.36274)(0.709838,1.38307)(0.600163,1.38459) - (0.70142,1.34242)(0.705629,1.36274) -%% -\path(1.25,1.25)(0.90831,0.837544) -%% -\path(0.929086,0.887024)(0.940008,0.900207) -\path(0.922161,0.870531)(0.944004,0.896897) -\path(0.915235,0.854037)(0.947999,0.893587) -\path(0.90831,0.837544)(0.951995,0.890277) -\path(0.923227,0.847417)(0.955991,0.886966) -\path(0.938144,0.85729)(0.959987,0.883656) -\path(0.953061,0.867163)(0.963983,0.880346) -\path(0.951995,0.890277)(0.936012,0.903518)(0.90831,0.837544) - (0.967979,0.877035)(0.951995,0.890277) -%% -\allinethickness{1pt}% -\color{rgb_980000}% -\path(2.375,0.125) - (2.375,2.375)(0.125,2.375)(0.125,0.125)(2.375,0.125) -%% -\allinethickness{0.4pt}% -\color{rgb_000000}% -\path(4.32177,5.61398) - (4.31023,5.69921)(4.29571,5.77929)(4.27832,5.85466) - (4.25813,5.92574)(4.23521,5.99286)(4.20959,6.05635)(4.1813,6.11649) - (4.15036,6.17352)(4.11676,6.22769)(4.0805,6.27919)(4.04155,6.32822) - (3.99986,6.37493)(3.9554,6.41949)(3.90809,6.46204)(3.85786,6.50269) - (3.80463,6.54158)(3.7483,6.5788)(3.68874,6.61445)(3.62584,6.64863) - (3.55945,6.68142)(3.48941,6.71289)(3.41554,6.74311) - (3.33764,6.77214)(3.25551,6.80006) -%% -\path(4.13841,5.61911)(4.13845,5.69921)(4.13499,5.7746) - (4.12815,5.84568)(4.11806,5.91278)(4.10479,5.97624) - (4.08842,6.03631)(4.06899,6.09326)(4.04655,6.14732) - (4.02109,6.19867)(3.99263,6.24751)(3.96116,6.29401) - (3.92663,6.33832)(3.88902,6.38056)(3.84826,6.42088) - (3.80428,6.45939)(3.75699,6.49618)(3.70631,6.53136) - (3.65209,6.56502)(3.59422,6.59722)(3.53254,6.62806) - (3.46687,6.65758)(3.39703,6.68587)(3.32279,6.71296)(3.24391,6.73891) -%% -\path(3.97074,5.63438)(3.98145,5.70897)(3.98827,5.77929) - (3.99133,5.84568)(3.99078,5.90844)(3.98672,5.96784) - (3.97923,6.02413)(3.96839,6.07752)(3.95423,6.12822) - (3.93678,6.17639)(3.91605,6.22222)(3.89204,6.26583) - (3.86473,6.30736)(3.83407,6.34695)(3.80002,6.38469)(3.7625,6.42068) - (3.72142,6.45502)(3.67668,6.4878)(3.62816,6.51909)(3.57571,6.54895) - (3.51917,6.57745)(3.45835,6.60465)(3.39303,6.63059) - (3.32299,6.65533)(3.24794,6.6789) -%% -\path(3.82031,5.65946)(3.84076,5.72828)(3.85704,5.79325) - (3.8693,5.85466)(3.87769,5.91278)(3.88234,5.96784)(3.88333,6.02004) - (3.88074,6.06957)(3.87462,6.1166)(3.86501,6.16129)(3.85192,6.20378) - (3.83536,6.24419)(3.81529,6.28265)(3.79169,6.31924) - (3.76451,6.35408)(3.73366,6.38723)(3.69906,6.41879) - (3.66061,6.44883)(3.61816,6.47739)(3.57157,6.50455) - (3.52065,6.53035)(3.46521,6.55484)(3.40502,6.57805) - (3.33981,6.60002)(3.26928,6.62077) -%% -\path(3.68828,5.69383)(3.71752,5.75673)(3.74242,5.81619) - (3.76316,5.87245)(3.77989,5.92574)(3.79272,5.97624) - (3.80176,6.02413)(3.80708,6.06957)(3.80875,6.1127)(3.80678,6.15367) - (3.80122,6.19257)(3.79205,6.22953)(3.77926,6.26463) - (3.76282,6.29797)(3.74266,6.32962)(3.71872,6.35966) - (3.69089,6.38814)(3.65907,6.41512)(3.62312,6.44066) - (3.58287,6.46478)(3.53814,6.48754)(3.4887,6.50895)(3.43432,6.52905) - (3.37469,6.54785)(3.3095,6.56536) -%% -\path(3.57536,5.73678)(3.61246,5.79374)(3.64519,5.84764) - (3.6737,5.89868)(3.69814,5.94703)(3.71864,5.99286)(3.73529,6.03631) - (3.74816,6.07752)(3.75733,6.1166)(3.76282,6.15367)(3.76466,6.18881) - (3.76284,6.22212)(3.75735,6.25368)(3.74816,6.28355)(3.7352,6.3118) - (3.71839,6.33848)(3.69766,6.36364)(3.67286,6.38731) - (3.64387,6.40955)(3.6105,6.43036)(3.57256,6.44976)(3.52982,6.46778) - (3.48202,6.48442)(3.42884,6.49968)(3.36994,6.51354) -%% -\path(3.48182,5.78746)(3.52593,5.83858)(3.5657,5.88698) - (3.6013,5.93282)(3.63287,5.97624)(3.66052,6.01738)(3.68434,6.05635) - (3.70443,6.09326)(3.72082,6.12822)(3.73357,6.16129) - (3.74268,6.19257)(3.74817,6.22212)(3.75,6.25)(3.74815,6.27626) - (3.74256,6.30096)(3.73315,6.32411)(3.71983,6.34577) - (3.70247,6.36595)(3.68092,6.38466)(3.65502,6.40193) - (3.62455,6.41774)(3.58928,6.43209)(3.54893,6.44498) - (3.50317,6.45637)(3.45165,6.46623) -%% -\path(3.40754,5.84494)(3.45785,5.89041)(3.50396,5.93346) - (3.54601,5.97421)(3.58414,6.0128)(3.61846,6.04931)(3.64906,6.08384) - (3.67601,6.11649)(3.69937,6.14732)(3.71917,6.17639) - (3.73544,6.20378)(3.74817,6.22953)(3.75735,6.25368) - (3.76295,6.27626)(3.76491,6.29732)(3.76315,6.31686)(3.75758,6.3349) - (3.74809,6.35145)(3.73451,6.36651)(3.71669,6.38006)(3.69441,6.3921) - (3.66744,6.40258)(3.63549,6.41148)(3.59823,6.41875)(3.55529,6.42432) -%% -\path(3.352,5.90822)(3.40781,5.9483)(3.45961,5.98623) - (3.50754,6.0221)(3.55172,6.05601)(3.59226,6.08804)(3.62924,6.11826) - (3.66274,6.14674)(3.69281,6.17352)(3.71948,6.19867) - (3.74278,6.22222)(3.76271,6.24419)(3.77926,6.26463)(3.7924,6.28355) - (3.80208,6.30096)(3.80823,6.31686)(3.81077,6.33125) - (3.80957,6.34412)(3.8045,6.35546)(3.79539,6.36522)(3.78206,6.37338) - (3.76426,6.37987)(3.74171,6.38464)(3.7141,6.3876)(3.68106,6.38866) -%% -\path(3.31441,5.97626)(3.37509,6.01129)(3.432,6.04439) - (3.48528,6.07564)(3.53504,6.10512)(3.58139,6.13288)(3.6244,6.15897) - (3.66415,6.18345)(3.70069,6.20635)(3.73405,6.22769) - (3.76427,6.24751)(3.79135,6.26583)(3.81529,6.28265) - (3.83606,6.29797)(3.85363,6.3118)(3.86794,6.32411)(3.8789,6.3349) - (3.88643,6.34412)(3.89039,6.35175)(3.89064,6.35772) - (3.88701,6.36198)(3.87927,6.36444)(3.86717,6.36501) - (3.85042,6.36359)(3.82865,6.36003) -%% -\path(3.29368,6.04807)(3.35869,6.07842)(3.42021,6.10703) - (3.47839,6.13398)(3.53332,6.1593)(3.5851,6.18306)(3.63381,6.20527) - (3.67954,6.22597)(3.72232,6.24518)(3.7622,6.26292)(3.79922,6.27919) - (3.8334,6.29401)(3.86473,6.30736)(3.89321,6.31924)(3.91881,6.32962) - (3.94149,6.33848)(3.9612,6.34577)(3.97785,6.35145)(3.99135,6.35546) - (4.00158,6.35772)(4.00838,6.35815)(4.01158,6.35663) - (4.01096,6.35306)(4.00627,6.34727)(3.99719,6.33908) -%% -\path(3.28857,6.12268)(3.35743,6.14874)(3.42314,6.17324) - (3.4858,6.19622)(3.54552,6.21772)(3.60241,6.23776)(3.65653,6.25637) - (3.70797,6.27356)(3.75678,6.28934)(3.80302,6.30372) - (3.84672,6.31668)(3.88792,6.32822)(3.92663,6.33832) - (3.96287,6.34695)(3.99662,6.35408)(4.02787,6.35966) - (4.05658,6.36364)(4.08272,6.36595)(4.10621,6.36651) - (4.12697,6.36522)(4.14491,6.36198)(4.15988,6.35663) - (4.17173,6.34904)(4.18026,6.33901)(4.18525,6.32631) -%% -\path(3.29768,6.19917)(3.37001,6.22136)(3.43952,6.24213) - (3.50631,6.26151)(3.57051,6.27953)(3.63219,6.29619) - (3.69145,6.31151)(3.74836,6.32549)(3.80299,6.33812)(3.85541,6.3494) - (3.90567,6.35932)(3.95381,6.36784)(3.99986,6.37493) - (4.04387,6.38056)(4.08585,6.38469)(4.1258,6.38723)(4.16374,6.38814) - (4.19966,6.38731)(4.23353,6.38466)(4.26532,6.38006) - (4.29499,6.37338)(4.32247,6.36444)(4.34769,6.35306) - (4.37053,6.33901)(4.39086,6.32202) -%% -\path(4.32177,5.61398)(4.22824,5.61526)(4.13841,5.61911) - (4.0525,5.62549)(3.97074,5.63438)(3.89329,5.64572)(3.82031,5.65946) - (3.75194,5.67553)(3.68828,5.69383)(3.6294,5.71428)(3.57536,5.73678) - (3.52617,5.76121)(3.48182,5.78746)(3.4423,5.81541)(3.40754,5.84494) - (3.37747,5.87592)(3.352,5.90822)(3.33103,5.94171)(3.31441,5.97626) - (3.30201,6.01176)(3.29368,6.04807)(3.28926,6.08509) - (3.28857,6.12268)(3.29144,6.16074)(3.29768,6.19917) -%% -\path(4.29571,5.77929)(4.2137,5.77577)(4.13499,5.7746) - (4.05978,5.77577)(3.98827,5.77929)(3.92064,5.78512) - (3.85704,5.79325)(3.79759,5.80362)(3.74242,5.81619)(3.6916,5.83089) - (3.64519,5.84764)(3.60322,5.86637)(3.5657,5.88698)(3.53263,5.90938) - (3.50396,5.93346)(3.47965,5.95911)(3.45961,5.98623) - (3.44377,6.01469)(3.432,6.04439)(3.42419,6.07521)(3.42021,6.10703) - (3.41991,6.13974)(3.42314,6.17324)(3.42973,6.2074)(3.43952,6.24213) -%% -\path(4.25813,5.92574)(4.18659,5.9182)(4.11806,5.91278) - (4.05273,5.90952)(3.99078,5.90844)(3.93239,5.90952) - (3.87769,5.91278)(3.82683,5.9182)(3.77989,5.92574)(3.73697,5.93537) - (3.69814,5.94703)(3.66343,5.96068)(3.63287,5.97624) - (3.60644,5.99364)(3.58414,6.0128)(3.56592,6.03362)(3.55172,6.05601) - (3.54146,6.07988)(3.53504,6.10512)(3.53237,6.13163)(3.53332,6.1593) - (3.53775,6.18804)(3.54552,6.21772)(3.55649,6.24825)(3.57051,6.27953) -%% -\path(4.20959,6.05635)(4.1476,6.04537)(4.08842,6.03631) - (4.03224,6.02922)(3.97923,6.02413)(3.92955,6.02106) - (3.88333,6.02004)(3.8407,6.02106)(3.80176,6.02413)(3.7666,6.02922) - (3.73529,6.03631)(3.70786,6.04537)(3.68434,6.05635)(3.66475,6.0692) - (3.64906,6.08384)(3.63724,6.10022)(3.62924,6.11826) - (3.62499,6.13787)(3.6244,6.15897)(3.62738,6.18147)(3.63381,6.20527) - (3.64358,6.23027)(3.65653,6.25637)(3.67254,6.28349)(3.69145,6.31151) -%% -\path(4.15036,6.17352)(4.0971,6.15956)(4.04655,6.14732) - (3.99887,6.13685)(3.95423,6.12822)(3.91277,6.12146)(3.87462,6.1166) - (3.83992,6.11368)(3.80875,6.1127)(3.7812,6.11368)(3.75733,6.1166) - (3.7372,6.12146)(3.72082,6.12822)(3.70822,6.13685)(3.69937,6.14732) - (3.69425,6.15956)(3.69281,6.17352)(3.69498,6.18914) - (3.70069,6.20635)(3.70984,6.22505)(3.72232,6.24518) - (3.73801,6.26664)(3.75678,6.28934)(3.77849,6.3132)(3.80299,6.33812) -%% -\path(4.0805,6.27919)(4.03524,6.26259)(3.99263,6.24751) - (3.95285,6.23403)(3.91605,6.22222)(3.88236,6.21212) - (3.85192,6.20378)(3.82484,6.19726)(3.80122,6.19257) - (3.78114,6.18975)(3.76466,6.18881)(3.75183,6.18975) - (3.74268,6.19257)(3.73722,6.19726)(3.73544,6.20378) - (3.73731,6.21212)(3.74278,6.22222)(3.7518,6.23403)(3.76427,6.24751) - (3.78012,6.26259)(3.79922,6.27919)(3.82147,6.29725) - (3.84672,6.31668)(3.87484,6.3374)(3.90567,6.35932) -%% -\path(3.99986,6.37493)(3.96191,6.35595)(3.92663,6.33832) - (3.89419,6.32209)(3.86473,6.30736)(3.83839,6.29419) - (3.81529,6.28265)(3.79555,6.27278)(3.77926,6.26463) - (3.76651,6.25825)(3.75735,6.25368)(3.75184,6.25092)(3.75,6.25) - (3.75184,6.25092)(3.75735,6.25368)(3.76651,6.25825) - (3.77926,6.26463)(3.79555,6.27278)(3.81529,6.28265) - (3.83839,6.29419)(3.86473,6.30736)(3.89419,6.32209) - (3.92663,6.33832)(3.96191,6.35595)(3.99986,6.37493) -%% -\path(3.90809,6.46204)(3.8768,6.44088)(3.84826,6.42088) - (3.82261,6.40212)(3.80002,6.38469)(3.78061,6.36864) - (3.76451,6.35408)(3.75182,6.34105)(3.74266,6.32962)(3.7371,6.31986) - (3.7352,6.3118)(3.73701,6.30549)(3.74256,6.30096)(3.75186,6.29823) - (3.76491,6.29732)(3.78166,6.29823)(3.80208,6.30096)(3.8261,6.30549) - (3.85363,6.3118)(3.88457,6.31986)(3.91881,6.32962)(3.9562,6.34105) - (3.99662,6.35408)(4.03989,6.36864)(4.08585,6.38469) -%% -\path(3.80463,6.54158)(3.77938,6.5184)(3.75699,6.49618) - (3.73762,6.47503)(3.72142,6.45502)(3.70853,6.43625) - (3.69906,6.41879)(3.69315,6.40273)(3.69089,6.38814) - (3.69237,6.37509)(3.69766,6.36364)(3.7068,6.35385)(3.71983,6.34577) - (3.73676,6.33944)(3.75758,6.3349)(3.78227,6.33216)(3.81077,6.33125) - (3.84301,6.33216)(3.8789,6.3349)(3.91834,6.33944)(3.9612,6.34577) - (4.00733,6.35385)(4.05658,6.36364)(4.10878,6.37509)(4.16374,6.38814) -%% -\path(3.68874,6.61445)(3.66891,6.58934)(3.65209,6.56502) - (3.63846,6.54157)(3.62816,6.51909)(3.62135,6.49766) - (3.61816,6.47739)(3.61871,6.45836)(3.62312,6.44066) - (3.63148,6.42436)(3.64387,6.40955)(3.66033,6.39629) - (3.68092,6.38466)(3.70565,6.37472)(3.73451,6.36651) - (3.76748,6.36008)(3.8045,6.35546)(3.8455,6.35268)(3.89039,6.35175) - (3.93905,6.35268)(3.99135,6.35546)(4.04713,6.36008) - (4.10621,6.36651)(4.16841,6.37472)(4.23353,6.38466) -%% -\path(3.55945,6.68142)(3.54439,6.65444)(3.53254,6.62806) - (3.52408,6.60236)(3.51917,6.57745)(3.51798,6.55341) - (3.52065,6.53035)(3.52733,6.50836)(3.53814,6.48754) - (3.55319,6.46798)(3.57256,6.44976)(3.59633,6.43299) - (3.62455,6.41774)(3.65725,6.40408)(3.69441,6.3921)(3.73603,6.38184) - (3.78206,6.37338)(3.83242,6.36674)(3.88701,6.36198) - (3.94571,6.35911)(4.00838,6.35815)(4.07484,6.35911) - (4.14491,6.36198)(4.21837,6.36674)(4.29499,6.37338) -%% -\path(3.41554,6.74311)(3.40457,6.71429)(3.39703,6.68587) - (3.39312,6.65793)(3.39303,6.63059)(3.39694,6.60393) - (3.40502,6.57805)(3.41743,6.55306)(3.43432,6.52905) - (3.45581,6.50614)(3.48202,6.48442)(3.51304,6.464)(3.54893,6.44498) - (3.58974,6.42744)(3.63549,6.41148)(3.68616,6.39719) - (3.74171,6.38464)(3.80208,6.37389)(3.86717,6.36501) - (3.93685,6.35806)(4.01096,6.35306)(4.08932,6.35005) - (4.17173,6.34904)(4.25793,6.35005)(4.34769,6.35306) -%% -\path(3.25551,6.80006)(3.24787,6.76939)(3.24391,6.73891) - (3.24387,6.70872)(3.24794,6.6789)(3.25635,6.64955)(3.26928,6.62077) - (3.28694,6.59267)(3.3095,6.56536)(3.33712,6.53894)(3.36994,6.51354) - (3.40808,6.48927)(3.45165,6.46623)(3.5007,6.44454)(3.55529,6.42432) - (3.61541,6.40566)(3.68106,6.38866)(3.75217,6.37343) - (3.82865,6.36003)(3.91038,6.34856)(3.99719,6.33908) - (4.08889,6.33165)(4.18525,6.32631)(4.286,6.32309)(4.39086,6.32202) -%% -\path(3.75,6.25)(3.14565,5.94783) -%% -\path(3.19923,5.99202)(3.21941,6.00211) -\path(3.18137,5.97729)(3.22173,5.99747) -\path(3.16351,5.96256)(3.22405,5.99283) -\path(3.14565,5.94783)(3.22637,5.98819) -\path(3.16815,5.95328)(3.22869,5.98355) -\path(3.19065,5.95872)(3.23101,5.9789) -\path(3.21315,5.96417)(3.23333,5.97426) -\path(3.22637,5.98819)(3.21709,6.00675)(3.14565,5.94783) - (3.23565,5.96962)(3.22637,5.98819) -%% -\path(3.75,6.25)(4.35435,5.94783) -%% -\path(4.28685,5.96417)(4.26667,5.97426) -\path(4.30935,5.95872)(4.26899,5.9789) -\path(4.33185,5.95328)(4.27131,5.98355) -\path(4.35435,5.94783)(4.27363,5.98819) -\path(4.33649,5.96256)(4.27595,5.99283) -\path(4.31863,5.97729)(4.27827,5.99747) -\path(4.30077,5.99202)(4.28059,6.00211) -\path(4.27363,5.98819)(4.26435,5.96962)(4.35435,5.94783) - (4.28291,6.00675)(4.27363,5.98819) -%% -\allinethickness{1pt}% -\color{rgb_980000}% -\path(4.875,5.125) - (4.875,7.375)(2.625,7.375)(2.625,5.125)(4.875,5.125) -%% -\allinethickness{0.4pt}% -\color{rgb_000000}% -\path(3.75,2.95191) - (3.81752,3.02689)(3.87769,3.10015)(3.93077,3.17175) - (3.97698,3.24175)(4.01655,3.3102)(4.04971,3.37715)(4.07667,3.44266) - (4.09761,3.50676)(4.11274,3.5695)(4.12223,3.63093)(4.12626,3.69108) - (4.125,3.75)(4.11861,3.80772)(4.10725,3.86428)(4.09106,3.91971) - (4.07018,3.97405)(4.04476,4.02733)(4.01493,4.07958) - (3.98081,4.13082)(3.94252,4.1811)(3.90018,4.23043)(3.85391,4.27884) - (3.80382,4.32635)(3.75,4.373) -%% -\path(3.62348,3.04636)(3.69014,3.11055)(3.75,3.17364) - (3.80325,3.23566)(3.85004,3.29665)(3.89055,3.35662)(3.92492,3.4156) - (3.9533,3.47361)(3.97585,3.53068)(3.9927,3.58684)(4.00399,3.64209) - (4.00986,3.69647)(4.01042,3.75)(4.0058,3.80269)(3.99613,3.85457) - (3.98152,3.90564)(3.96208,3.95594)(3.93793,4.00548) - (3.90916,4.05428)(3.87589,4.10235)(3.8382,4.1497)(3.79621,4.19636) - (3.75,4.24234)(3.69967,4.28766)(3.64529,4.33232) -%% -\path(3.52707,3.13497)(3.59209,3.1895)(3.65084,3.24339) - (3.70344,3.29667)(3.75,3.34934)(3.79061,3.40141)(3.82538,3.45289) - (3.85441,3.5038)(3.87779,3.55414)(3.89561,3.60392)(3.90797,3.65315) - (3.91496,3.70184)(3.91667,3.75)(3.91317,3.79764)(3.90456,3.84476) - (3.89092,3.89138)(3.87233,3.93749)(3.84887,3.98312) - (3.82061,4.02827)(3.78763,4.07294)(3.75,4.11715)(3.7078,4.16089) - (3.6611,4.20419)(3.60997,4.24703)(3.55447,4.28944) -%% -\path(3.45806,3.21828)(3.52096,3.26413)(3.57809,3.30969) - (3.6295,3.35496)(3.67526,3.39995)(3.71541,3.44466)(3.75,3.4891) - (3.77909,3.53325)(3.80273,3.57714)(3.82096,3.62075)(3.83384,3.6641) - (3.84142,3.70718)(3.84375,3.75)(3.84087,3.79256)(3.83283,3.83486) - (3.81967,3.8769)(3.80146,3.91869)(3.77822,3.96024)(3.75,4.00153) - (3.71685,4.04257)(3.67882,4.08337)(3.63594,4.12393) - (3.58827,4.16425)(3.53583,4.20433)(3.47868,4.24417) -%% -\path(3.41407,3.29673)(3.47461,3.33478)(3.52983,3.37277) - (3.57974,3.41071)(3.62435,3.44861)(3.66367,3.48645) - (3.69771,3.52425)(3.72649,3.56199)(3.75,3.59969)(3.76826,3.63734) - (3.78129,3.67494)(3.78909,3.7125)(3.79167,3.75)(3.78904,3.78746) - (3.78121,3.82486)(3.76819,3.86222)(3.75,3.89953)(3.72664,3.9368) - (3.69812,3.97401)(3.66445,4.01118)(3.62564,4.0483)(3.58171,4.08537) - (3.53265,4.1224)(3.47849,4.15938)(3.41923,4.19631) -%% -\path(3.39296,3.37075)(3.4511,3.40176)(3.50433,3.43287) - (3.55261,3.46409)(3.59592,3.49541)(3.63424,3.52685) - (3.66754,3.55839)(3.69579,3.59005)(3.71897,3.62182) - (3.73705,3.65369)(3.75,3.68568)(3.7578,3.71779)(3.76042,3.75) - (3.75783,3.78233)(3.75,3.81477)(3.73691,3.84733)(3.71853,3.88) - (3.69483,3.91279)(3.66578,3.9457)(3.63135,3.97872)(3.59152,4.01186) - (3.54625,4.04512)(3.49552,4.0785)(3.43929,4.112)(3.37755,4.14562) -%% -\path(3.39286,3.44071)(3.44871,3.46535)(3.5,3.49019) - (3.54669,3.51523)(3.58871,3.54048)(3.62601,3.56593) - (3.65854,3.59158)(3.68622,3.61745)(3.70902,3.64352) - (3.72685,3.66981)(3.73967,3.69632)(3.74741,3.72305)(3.75,3.75) - (3.74738,3.77718)(3.7395,3.80458)(3.72627,3.83222)(3.70763,3.86009) - (3.68351,3.8882)(3.65385,3.91654)(3.61856,3.94513)(3.57759,3.97397) - (3.53084,4.00306)(3.47826,4.0324)(3.41976,4.062)(3.35526,4.09185) -%% -\path(3.41207,3.50691)(3.46585,3.5258)(3.51542,3.54493) - (3.56068,3.56429)(3.60155,3.58389)(3.63797,3.60374) - (3.66983,3.62385)(3.69705,3.6442)(3.71955,3.66482)(3.73723,3.6857) - (3.75,3.70686)(3.75776,3.72829)(3.76042,3.75)(3.75786,3.772) - (3.75,3.79429)(3.73672,3.81688)(3.71791,3.83978)(3.69345,3.86299) - (3.66325,3.88651)(3.62716,3.91036)(3.58508,3.93454) - (3.53687,3.95906)(3.48241,3.98392)(3.42157,4.00914)(3.3542,4.03471) -%% -\path(3.44909,3.56967)(3.50114,3.58335)(3.54927,3.59725) - (3.59338,3.61138)(3.63338,3.62575)(3.66914,3.64036) - (3.70058,3.65523)(3.72757,3.67034)(3.75,3.68572)(3.76775,3.70137) - (3.7807,3.71729)(3.78871,3.7335)(3.79167,3.75)(3.78942,3.7668) - (3.78182,3.7839)(3.76873,3.80132)(3.75,3.81907)(3.72546,3.83715) - (3.69495,3.85557)(3.6583,3.87434)(3.61533,3.89348)(3.56585,3.91299) - (3.50967,3.93289)(3.4466,3.95318)(3.37642,3.97388) -%% -\path(3.50255,3.62924)(3.55328,3.63818)(3.60037,3.64731) - (3.6437,3.65662)(3.68317,3.66613)(3.71864,3.67584)(3.75,3.68576) - (3.7771,3.69589)(3.79982,3.70624)(3.81799,3.71682)(3.83148,3.72763) - (3.84012,3.73869)(3.84375,3.75)(3.8422,3.76157)(3.83527,3.77341) - (3.8228,3.78553)(3.80457,3.79794)(3.78037,3.81064)(3.75,3.82366) - (3.71321,3.837)(3.66978,3.85067)(3.61944,3.8647)(3.56192,3.87908) - (3.49696,3.89383)(3.42425,3.90898) -%% -\path(3.57125,3.68585)(3.62111,3.6905)(3.66761,3.69525) - (3.71062,3.70012)(3.75,3.70511)(3.78562,3.71023)(3.81734,3.71548) - (3.84501,3.72086)(3.86847,3.72638)(3.88754,3.73205) - (3.90206,3.73787)(3.91183,3.74385)(3.91667,3.75)(3.91636,3.75632) - (3.91068,3.76281)(3.89941,3.7695)(3.8823,3.77637)(3.85908,3.78346) - (3.82949,3.79075)(3.79324,3.79827)(3.75,3.80602)(3.69946,3.81401) - (3.64125,3.82226)(3.57502,3.83078)(3.50036,3.83958) -%% -\path(3.65406,3.73974)(3.70358,3.74046)(3.75,3.74121) - (3.79318,3.74198)(3.833,3.74276)(3.86929,3.74358)(3.90191,3.74441) - (3.93068,3.74527)(3.95544,3.74616)(3.976,3.74708)(3.99216,3.74802) - (4.0037,3.74899)(4.01042,3.75)(4.01206,3.75104)(4.00837,3.75211) - (3.99908,3.75322)(3.9839,3.75437)(3.96252,3.75556)(3.9346,3.75679) - (3.89979,3.75807)(3.8577,3.75939)(3.80792,3.76076)(3.75,3.76219) - (3.68346,3.76367)(3.60778,3.76522) -%% -\path(3.75,3.79107)(3.79972,3.78823)(3.84661,3.7853) - (3.89054,3.78228)(3.93135,3.77916)(3.9689,3.77593)(4.00301,3.7726) - (4.03353,3.76915)(4.06025,3.76559)(4.08298,3.7619)(4.10151,3.75807) - (4.1156,3.75411)(4.125,3.75)(4.12945,3.74573)(4.12867,3.7413) - (4.12234,3.7367)(4.11013,3.73191)(4.09167,3.72692)(4.06658,3.72172) - (4.03443,3.71631)(3.99475,3.71065)(3.94705,3.70474) - (3.89077,3.69857)(3.8253,3.6921)(3.75,3.68532) -%% -\path(3.75,2.95191)(3.68279,2.9999)(3.62348,3.04636) - (3.57169,3.09136)(3.52707,3.13497)(3.4893,3.17726)(3.45806,3.21828) - (3.43308,3.25809)(3.41407,3.29673)(3.40078,3.33428) - (3.39296,3.37075)(3.39039,3.40622)(3.39286,3.44071) - (3.40015,3.47426)(3.41207,3.50691)(3.42844,3.5387)(3.44909,3.56967) - (3.47384,3.59984)(3.50255,3.62924)(3.53507,3.6579)(3.57125,3.68585) - (3.61095,3.71312)(3.65406,3.73974)(3.70045,3.76571)(3.75,3.79107) -%% -\path(3.87769,3.10015)(3.81014,3.13738)(3.75,3.17364) - (3.69699,3.20897)(3.65084,3.24339)(3.61129,3.27696) - (3.57809,3.30969)(3.55101,3.34161)(3.52983,3.37277) - (3.51434,3.40318)(3.50433,3.43287)(3.49961,3.46187)(3.5,3.49019) - (3.50533,3.51787)(3.51542,3.54493)(3.53012,3.57138) - (3.54927,3.59725)(3.57273,3.62255)(3.60037,3.64731) - (3.63203,3.67153)(3.66761,3.69525)(3.70697,3.71847)(3.75,3.74121) - (3.79658,3.76348)(3.84661,3.7853) -%% -\path(3.97698,3.24175)(3.91004,3.26948)(3.85004,3.29665) - (3.79676,3.32326)(3.75,3.34934)(3.70956,3.3749)(3.67526,3.39995) - (3.64691,3.42452)(3.62435,3.44861)(3.60741,3.47223) - (3.59592,3.49541)(3.58974,3.51816)(3.58871,3.54048) - (3.59269,3.56239)(3.60155,3.58389)(3.61516,3.60501) - (3.63338,3.62575)(3.65609,3.64612)(3.68317,3.66613) - (3.71451,3.68579)(3.75,3.70511)(3.78953,3.7241)(3.833,3.74276) - (3.8803,3.76111)(3.93135,3.77916) -%% -\path(4.04971,3.37715)(3.98409,3.39652)(3.92492,3.4156) - (3.87206,3.43439)(3.82538,3.45289)(3.78474,3.47113)(3.75,3.4891) - (3.72103,3.5068)(3.69771,3.52425)(3.67992,3.54144)(3.66754,3.55839) - (3.66045,3.57511)(3.65854,3.59158)(3.6617,3.60783)(3.66983,3.62385) - (3.68282,3.63964)(3.70058,3.65523)(3.723,3.6706)(3.75,3.68576) - (3.78148,3.70072)(3.81734,3.71548)(3.85752,3.73004) - (3.90191,3.74441)(3.95043,3.7586)(4.00301,3.7726) -%% -\path(4.09761,3.50676)(4.03372,3.51878)(3.97585,3.53068) - (3.9239,3.54247)(3.87779,3.55414)(3.83742,3.56569)(3.80273,3.57714) - (3.77361,3.58847)(3.75,3.59969)(3.73181,3.61081)(3.71897,3.62182) - (3.7114,3.63272)(3.70902,3.64352)(3.71176,3.65422)(3.71955,3.66482) - (3.73232,3.67532)(3.75,3.68572)(3.77252,3.69603)(3.79982,3.70624) - (3.83182,3.71636)(3.86847,3.72638)(3.90969,3.73632) - (3.95544,3.74616)(4.00565,3.75592)(4.06025,3.76559) -%% -\path(4.12223,3.63093)(4.06031,3.63652)(4.00399,3.64209) - (3.95323,3.64764)(3.90797,3.65315)(3.86819,3.65864)(3.83384,3.6641) - (3.80489,3.66953)(3.78129,3.67494)(3.76301,3.68033)(3.75,3.68568) - (3.74223,3.69101)(3.73967,3.69632)(3.74227,3.7016)(3.75,3.70686) - (3.76282,3.71209)(3.7807,3.71729)(3.8036,3.72248)(3.83148,3.72763) - (3.86431,3.73277)(3.90206,3.73787)(3.94468,3.74296) - (3.99216,3.74802)(4.04444,3.75306)(4.10151,3.75807) -%% -\path(4.125,3.75)(4.0651,3.75)(4.01042,3.75)(3.96094,3.75) - (3.91667,3.75)(3.8776,3.75)(3.84375,3.75)(3.8151,3.75) - (3.79167,3.75)(3.77344,3.75)(3.76042,3.75)(3.7526,3.75)(3.75,3.75) - (3.7526,3.75)(3.76042,3.75)(3.77344,3.75)(3.79167,3.75) - (3.8151,3.75)(3.84375,3.75)(3.8776,3.75)(3.91667,3.75) - (3.96094,3.75)(4.01042,3.75)(4.0651,3.75)(4.125,3.75) -%% -\path(4.10725,3.86428)(4.04926,3.85943)(3.99613,3.85457) - (3.94789,3.84967)(3.90456,3.84476)(3.8662,3.83982)(3.83283,3.83486) - (3.80449,3.82987)(3.78121,3.82486)(3.76304,3.81983)(3.75,3.81477) - (3.74214,3.80969)(3.7395,3.80458)(3.7421,3.79945)(3.75,3.79429) - (3.76323,3.78911)(3.78182,3.7839)(3.80582,3.77867)(3.83527,3.77341) - (3.87021,3.76812)(3.91068,3.76281)(3.95672,3.75748) - (4.00837,3.75211)(4.06567,3.74672)(4.12867,3.7413) -%% -\path(4.07018,3.97405)(4.01387,3.96504)(3.96208,3.95594) - (3.91488,3.94676)(3.87233,3.93749)(3.8345,3.92814)(3.80146,3.91869) - (3.77327,3.90916)(3.75,3.89953)(3.73173,3.88982)(3.71853,3.88) - (3.71047,3.87009)(3.70763,3.86009)(3.71008,3.84998) - (3.71791,3.83978)(3.73119,3.82947)(3.75,3.81907)(3.77443,3.80855) - (3.80457,3.79794)(3.84049,3.78721)(3.8823,3.77637)(3.93007,3.76543) - (3.9839,3.75437)(4.04389,3.7432)(4.11013,3.73191) -%% -\path(4.01493,4.07958)(3.95994,4.06701)(3.90916,4.05428) - (3.86269,4.04136)(3.82061,4.02827)(3.78301,4.01499)(3.75,4.00153) - (3.72167,3.98787)(3.69812,3.97401)(3.67945,3.95996)(3.66578,3.9457) - (3.6572,3.93123)(3.65385,3.91654)(3.65582,3.90164)(3.66325,3.88651) - (3.67625,3.87116)(3.69495,3.85557)(3.71949,3.83974)(3.75,3.82366) - (3.78662,3.80733)(3.82949,3.79075)(3.87877,3.77391)(3.9346,3.75679) - (3.99715,3.7394)(4.06658,3.72172) -%% -\path(3.94252,4.1811)(3.8884,4.16554)(3.8382,4.1497) - (3.79203,4.13357)(3.75,4.11715)(3.71222,4.10042)(3.67882,4.08337) - (3.64992,4.066)(3.62564,4.0483)(3.60613,4.03026)(3.59152,4.01186) - (3.58195,3.9931)(3.57759,3.97397)(3.57857,3.95446)(3.58508,3.93454) - (3.59727,3.91422)(3.61533,3.89348)(3.63943,3.8723)(3.66978,3.85067) - (3.70656,3.82859)(3.75,3.80602)(3.8003,3.78296)(3.8577,3.75939) - (3.92244,3.73529)(3.99475,3.71065) -%% -\path(3.85391,4.27884)(3.80014,4.26079)(3.75,4.24234) - (3.70361,4.22348)(3.6611,4.20419)(3.62261,4.18445)(3.58827,4.16425) - (3.55823,4.14357)(3.53265,4.1224)(3.51169,4.10072)(3.49552,4.0785) - (3.48431,4.05574)(3.47826,4.0324)(3.47756,4.00847)(3.48241,3.98392) - (3.49304,3.95874)(3.50967,3.93289)(3.53255,3.90634) - (3.56192,3.87908)(3.59806,3.85106)(3.64125,3.82226) - (3.69179,3.79265)(3.75,3.76219)(3.81621,3.73084)(3.89077,3.69857) -%% -\path(3.75,4.373)(3.69598,4.35293)(3.64529,4.33232) - (3.59808,4.31117)(3.55447,4.28944)(3.51462,4.26712) - (3.47868,4.24417)(3.44683,4.22058)(3.41923,4.19631) - (3.39607,4.17133)(3.37755,4.14562)(3.36387,4.11914) - (3.35526,4.09185)(3.35196,4.06372)(3.3542,4.03471)(3.36226,4.00478) - (3.37642,3.97388)(3.39698,3.94196)(3.42425,3.90898) - (3.45859,3.87487)(3.50036,3.83958)(3.54995,3.80305) - (3.60778,3.76522)(3.6743,3.726)(3.75,3.68532) -%% -\path(3.75,3.75)(3,3.75) -%% -\path(3.08562,3.76557)(3.11416,3.76557) -\path(3.05708,3.76038)(3.11416,3.76038) -\path(3.02854,3.75519)(3.11416,3.75519) -\path(3,3.75)(3.11416,3.75) -\path(3.02854,3.74481)(3.11416,3.74481) -\path(3.05708,3.73962)(3.11416,3.73962) -\path(3.08562,3.73443)(3.11416,3.73443) -\path(3.11416,3.75)(3.11416,3.77076)(3,3.75)(3.11416,3.72924)(3.11416,3.75) -%% -\path(3.75,3.75)(3.75,3.29644) -%% -\path(3.73443,3.33925)(3.73443,3.35352) -\path(3.73962,3.32498)(3.73962,3.35352) -\path(3.74481,3.31071)(3.74481,3.35352) -\path(3.75,3.29644)(3.75,3.35352) -\path(3.75519,3.31071)(3.75519,3.35352) -\path(3.76038,3.32498)(3.76038,3.35352) -\path(3.76557,3.33925)(3.76557,3.35352) -\path(3.75,3.35352)(3.72924,3.35352)(3.75,3.29644)(3.77076,3.35352)(3.75,3.35352) -%% -\allinethickness{1pt}% -\color{rgb_980000}% -\path(4.875,2.625) - (4.875,4.875)(2.625,4.875)(2.625,2.625)(4.875,2.625) -%% -\allinethickness{0.4pt}% -\color{rgb_000000}% -\path(3.17823,0.61398) - (3.2696,0.641697)(3.35808,0.672175)(3.44338,0.705355) - (3.52526,0.741164)(3.60346,0.779511)(3.67777,0.820294) - (3.748,0.863394)(3.81395,0.908683)(3.87549,0.956019) - (3.93248,1.00525)(3.98483,1.05622)(4.03246,1.10877) - (4.07534,1.16272)(4.11344,1.2179)(4.14676,1.27413)(4.17536,1.33125) - (4.19927,1.38908)(4.21858,1.44744)(4.23339,1.50617) - (4.24381,1.56512)(4.24998,1.62413)(4.25204,1.68304) - (4.25015,1.74173)(4.24449,1.80006) -%% -\path(3.20899,0.72735)(3.28831,0.749673)(3.36501,0.774599) - (3.43887,0.802101)(3.50964,0.832134)(3.57711,0.86464) - (3.64108,0.899549)(3.70136,0.936774)(3.75778,0.976219) - (3.8102,1.01777)(3.85849,1.06132)(3.90256,1.10672)(3.94232,1.15384) - (3.97773,1.20253)(4.00875,1.25265)(4.03538,1.30404) - (4.05764,1.35653)(4.07557,1.40997)(4.08922,1.46419) - (4.09868,1.51905)(4.10405,1.57438)(4.10544,1.63004) - (4.10297,1.68587)(4.0968,1.74173)(4.08706,1.79749) -%% -\path(3.25032,0.823133)(3.31889,0.840786)(3.38504,0.860893) - (3.44855,0.883449)(3.50922,0.908436)(3.56683,0.935822) - (3.62121,0.965564)(3.67218,0.997604)(3.7196,1.03187) - (3.76331,1.06829)(3.8032,1.10676)(3.83917,1.14717)(3.87115,1.18943) - (3.89907,1.23339)(3.92291,1.27893)(3.94265,1.32592) - (3.95829,1.37421)(3.96988,1.42366)(3.97745,1.47411) - (3.98107,1.52542)(3.98083,1.57745)(3.97684,1.63004)(3.9692,1.68304) - (3.95805,1.73632)(3.94353,1.78975) -%% -\path(3.30152,0.904095)(3.36048,0.917621)(3.41712,0.933458) - (3.47125,0.951621)(3.52267,0.972112)(3.5712,0.994925) - (3.61667,1.02004)(3.65892,1.04742)(3.6978,1.07702)(3.73319,1.10879) - (3.76496,1.14265)(3.79303,1.17853)(3.81732,1.21634) - (3.83777,1.25597)(3.85434,1.29732)(3.86702,1.34026) - (3.87582,1.38467)(3.88074,1.43043)(3.88184,1.47739) - (3.87918,1.52542)(3.87283,1.57438)(3.8629,1.62413)(3.84948,1.67451) - (3.83271,1.72541)(3.81271,1.77667) -%% -\path(3.36219,0.972363)(3.41251,0.982168)(3.46056,0.994146) - (3.50614,1.00833)(3.54909,1.02474)(3.58923,1.04339)(3.6264,1.06427) - (3.66046,1.08739)(3.69125,1.1127)(3.71867,1.14019)(3.74261,1.16981) - (3.76296,1.20149)(3.77966,1.23517)(3.79266,1.27077)(3.8019,1.3082) - (3.80739,1.34736)(3.80911,1.38814)(3.80708,1.43043) - (3.80136,1.47411)(3.79199,1.51905)(3.77905,1.56512) - (3.76263,1.61219)(3.74284,1.66012)(3.71979,1.70877)(3.69363,1.75801) -%% -\path(3.43214,1.02959)(3.4747,1.03597)(3.51496,1.04439) - (3.55275,1.0549)(3.58792,1.06753)(3.6203,1.08231)(3.64973,1.09927) - (3.67607,1.1184)(3.6992,1.13971)(3.71899,1.16319)(3.73534,1.18881) - (3.74816,1.21653)(3.75738,1.24631)(3.76294,1.27809)(3.7648,1.3118) - (3.76296,1.34736)(3.7574,1.38467)(3.74815,1.42366)(3.73525,1.46419) - (3.71875,1.50617)(3.69874,1.54948)(3.67529,1.59398) - (3.64852,1.63955)(3.61855,1.68606)(3.58552,1.73338) -%% -\path(3.51138,1.07706)(3.54694,1.08023)(3.58016,1.0853) - (3.61086,1.09235)(3.63888,1.10142)(3.66407,1.11255) - (3.68628,1.12577)(3.70537,1.14113)(3.72121,1.15862) - (3.73369,1.17827)(3.74271,1.20006)(3.74817,1.22398)(3.75,1.25) - (3.74815,1.27809)(3.74259,1.3082)(3.73328,1.34026)(3.72024,1.37421) - (3.70349,1.40997)(3.68306,1.44744)(3.65901,1.48653) - (3.63142,1.52713)(3.60039,1.56912)(3.56602,1.61239) - (3.52843,1.65681)(3.48778,1.70226) -%% -\path(3.60007,1.11578)(3.62936,1.11587)(3.65621,1.11774) - (3.68045,1.12147)(3.70192,1.1271)(3.72047,1.13471)(3.73595,1.14434) - (3.74823,1.15603)(3.75716,1.16982)(3.76264,1.18573) - (3.76456,1.20378)(3.76283,1.22398)(3.75738,1.24631) - (3.74815,1.27077)(3.73509,1.29732)(3.7182,1.32592)(3.69748,1.35653) - (3.67293,1.38908)(3.6446,1.42349)(3.61256,1.4597)(3.57688,1.49759) - (3.53766,1.53708)(3.49501,1.57805)(3.44908,1.62039)(3.40001,1.66397) -%% -\path(3.69855,1.14651)(3.72225,1.14361)(3.74337,1.14236) - (3.76176,1.14283)(3.77726,1.14511)(3.78969,1.14925) - (3.79892,1.15533)(3.8048,1.16341)(3.80719,1.17352)(3.80598,1.18573) - (3.80105,1.20006)(3.7923,1.21653)(3.77966,1.23517)(3.76307,1.25597) - (3.74248,1.27893)(3.71787,1.30404)(3.68923,1.33125) - (3.65659,1.36053)(3.61998,1.39183)(3.57947,1.42509) - (3.53514,1.46021)(3.48708,1.49713)(3.43543,1.53574) - (3.38033,1.57593)(3.32194,1.6176) -%% -\path(3.80729,1.16986)(3.82604,1.16398)(3.84208,1.15962) - (3.85522,1.15685)(3.86529,1.15577)(3.87214,1.15645)(3.8756,1.15897) - (3.87551,1.16341)(3.87174,1.16982)(3.86415,1.17827) - (3.85261,1.18881)(3.83704,1.20149)(3.81732,1.21634)(3.7934,1.23339) - (3.76522,1.25265)(3.73275,1.27413)(3.69598,1.29782) - (3.65492,1.32371)(3.60961,1.35175)(3.56011,1.3819)(3.50651,1.41411) - (3.4489,1.44831)(3.38744,1.48442)(3.32226,1.52235)(3.25354,1.56199) -%% -\path(3.92693,1.18624)(3.94139,1.17736)(3.95296,1.16985) - (3.96145,1.1638)(3.96668,1.1593)(3.96848,1.15645)(3.96666,1.15533) - (3.96105,1.15603)(3.95151,1.15862)(3.93788,1.16319) - (3.92002,1.16981)(3.89781,1.17853)(3.87115,1.18943) - (3.83994,1.20253)(3.80413,1.2179)(3.76366,1.23554)(3.71851,1.25549) - (3.66869,1.27773)(3.61423,1.30227)(3.55518,1.32909) - (3.49162,1.35815)(3.42367,1.38939)(3.35146,1.42277) - (3.27515,1.45821)(3.19494,1.49562) -%% -\path(4.05827,1.19595)(4.06911,1.18399)(4.07686,1.17324) - (4.08133,1.1638)(4.08232,1.15577)(4.07962,1.14925)(4.07305,1.14434) - (4.06242,1.14113)(4.04754,1.13971)(4.02825,1.14019) - (4.00437,1.14265)(3.97577,1.14717)(3.94232,1.15384)(3.9039,1.16272) - (3.86043,1.17387)(3.81183,1.18736)(3.75806,1.20321) - (3.69912,1.22147)(3.63501,1.24216)(3.56578,1.26527)(3.4915,1.29081) - (3.41229,1.31874)(3.32827,1.34904)(3.23963,1.38165)(3.14657,1.4165) -%% -\path(4.20232,1.19917)(4.21023,1.18399)(4.21485,1.16985) - (4.21597,1.15685)(4.21335,1.14511)(4.20679,1.13471) - (4.19606,1.12577)(4.18094,1.1184)(4.16122,1.1127)(4.1367,1.10879) - (4.10719,1.10676)(4.07249,1.10672)(4.03246,1.10877)(3.98694,1.113) - (3.93582,1.11951)(3.87898,1.12838)(3.81635,1.13966)(3.7479,1.15344) - (3.67361,1.16975)(3.59351,1.18864)(3.50765,1.21013) - (3.41613,1.23423)(3.31908,1.26093)(3.21668,1.2902)(3.10914,1.32202) -%% -\path(3.17823,0.61398)(3.19224,0.673067)(3.20899,0.72735) - (3.22838,0.77725)(3.25032,0.823133)(3.27472,0.865321) - (3.30152,0.904095)(3.33069,0.939703)(3.36219,0.972363) - (3.39601,1.00227)(3.43214,1.02959)(3.47059,1.05448) - (3.51138,1.07706)(3.55453,1.09746)(3.60007,1.11578)(3.64806,1.1321) - (3.69855,1.14651)(3.7516,1.15908)(3.80729,1.16986)(3.8657,1.1789) - (3.92693,1.18624)(3.99108,1.19191)(4.05827,1.19595) - (4.12864,1.19837)(4.20232,1.19917) -%% -\path(3.35808,0.672175)(3.35983,0.72558)(3.36501,0.774599) - (3.37347,0.819598)(3.38504,0.860893)(3.39963,0.898765) - (3.41712,0.933458)(3.43745,0.965188)(3.46056,0.994146) - (3.4864,1.0205)(3.51496,1.04439)(3.54621,1.06595)(3.58016,1.0853) - (3.61682,1.10254)(3.65621,1.11774)(3.69838,1.13099) - (3.74337,1.14236)(3.79125,1.15188)(3.84208,1.15962)(3.89595,1.1656) - (3.95296,1.16985)(4.01323,1.17239)(4.07686,1.17324) - (4.14402,1.17239)(4.21485,1.16985) -%% -\path(3.52526,0.741164)(3.51545,0.788632)(3.50964,0.832134) - (3.50762,0.871978)(3.50922,0.908436)(3.51427,0.941744) - (3.52267,0.972112)(3.5343,0.999723)(3.54909,1.02474) - (3.56698,1.0473)(3.58792,1.06753)(3.61189,1.08554)(3.63888,1.10142) - (3.66888,1.11525)(3.70192,1.1271)(3.73803,1.13704)(3.77726,1.14511) - (3.81965,1.15134)(3.86529,1.15577)(3.91427,1.15842)(3.96668,1.1593) - (4.02266,1.15842)(4.08232,1.15577)(4.14583,1.15134)(4.21335,1.14511) -%% -\path(3.67777,0.820294)(3.65721,0.861701)(3.64108,0.899549) - (3.62915,0.934095)(3.62121,0.965564)(3.6171,0.994154) - (3.61667,1.02004)(3.6198,1.04337)(3.6264,1.06427)(3.6364,1.08287) - (3.64973,1.09927)(3.66636,1.11354)(3.68628,1.12577) - (3.70947,1.13602)(3.73595,1.14434)(3.76576,1.15076) - (3.79892,1.15533)(3.83551,1.15806)(3.8756,1.15897)(3.91928,1.15806) - (3.96666,1.15533)(4.01786,1.15076)(4.07305,1.14434) - (4.13239,1.13602)(4.19606,1.12577) -%% -\path(3.81395,0.908683)(3.7835,0.944037)(3.75778,0.976219) - (3.73655,1.00544)(3.7196,1.03187)(3.70673,1.05569)(3.6978,1.07702) - (3.69268,1.09599)(3.69125,1.1127)(3.69345,1.12725)(3.6992,1.13971) - (3.70846,1.15015)(3.72121,1.15862)(3.73744,1.16517) - (3.75716,1.16982)(3.7804,1.1726)(3.80719,1.17352)(3.83761,1.1726) - (3.87174,1.16982)(3.90966,1.16517)(3.95151,1.15862) - (3.99741,1.15015)(4.04754,1.13971)(4.10207,1.12725)(4.16122,1.1127) -%% -\path(3.93248,1.00525)(3.89302,1.03469)(3.85849,1.06132) - (3.82862,1.08529)(3.8032,1.10676)(3.78203,1.12584)(3.76496,1.14265) - (3.75186,1.15728)(3.74261,1.16981)(3.73712,1.1803)(3.73534,1.18881) - (3.73721,1.19538)(3.74271,1.20006)(3.75182,1.20285) - (3.76456,1.20378)(3.78095,1.20285)(3.80105,1.20006) - (3.82491,1.19538)(3.85261,1.18881)(3.88428,1.1803)(3.92002,1.16981) - (3.95999,1.15728)(4.00437,1.14265)(4.05336,1.12584)(4.10719,1.10676) -%% -\path(4.03246,1.10877)(3.9849,1.13255)(3.94232,1.15384) - (3.90448,1.17276)(3.87115,1.18943)(3.84215,1.20393) - (3.81732,1.21634)(3.79653,1.22673)(3.77966,1.23517) - (3.76664,1.24168)(3.75738,1.24631)(3.75184,1.24908)(3.75,1.25) - (3.75184,1.24908)(3.75738,1.24631)(3.76664,1.24168) - (3.77966,1.23517)(3.79653,1.22673)(3.81732,1.21634) - (3.84215,1.20393)(3.87115,1.18943)(3.90448,1.17276) - (3.94232,1.15384)(3.9849,1.13255)(4.03246,1.10877) -%% -\path(4.11344,1.2179)(4.05862,1.23638)(4.00875,1.25265) - (3.96358,1.26681)(3.92291,1.27893)(3.88655,1.28908) - (3.85434,1.29732)(3.82617,1.30368)(3.8019,1.3082)(3.78147,1.3109) - (3.7648,1.3118)(3.75185,1.3109)(3.74259,1.3082)(3.737,1.30368) - (3.73509,1.29732)(3.73691,1.28908)(3.74248,1.27893) - (3.75189,1.26681)(3.76522,1.25265)(3.78259,1.23638)(3.80413,1.2179) - (3.83001,1.1971)(3.86043,1.17387)(3.89561,1.14806)(3.93582,1.11951) -%% -\path(4.17536,1.33125)(4.1141,1.34487)(4.05764,1.35653) - (4.00578,1.36629)(3.95829,1.37421)(3.91502,1.38033) - (3.87582,1.38467)(3.84055,1.38727)(3.80911,1.38814) - (3.78141,1.38727)(3.7574,1.38467)(3.73702,1.38033)(3.72024,1.37421) - (3.70706,1.36629)(3.69748,1.35653)(3.69152,1.34487) - (3.68923,1.33125)(3.69069,1.3156)(3.69598,1.29782)(3.70521,1.27783) - (3.71851,1.25549)(3.73607,1.23067)(3.75806,1.20321) - (3.78473,1.17295)(3.81635,1.13966) -%% -\path(4.21858,1.44744)(4.1516,1.45669)(4.08922,1.46419) - (4.03123,1.46999)(3.97745,1.47411)(3.9277,1.47657)(3.88184,1.47739) - (3.83976,1.47657)(3.80136,1.47411)(3.76654,1.46999) - (3.73525,1.46419)(3.70743,1.45669)(3.68306,1.44744) - (3.66212,1.43639)(3.6446,1.42349)(3.63055,1.40867)(3.61998,1.39183) - (3.61298,1.3729)(3.60961,1.35175)(3.60998,1.32826)(3.61423,1.30227) - (3.62251,1.27364)(3.63501,1.24216)(3.65195,1.20761)(3.67361,1.16975) -%% -\path(4.24381,1.56512)(4.17177,1.57053)(4.10405,1.57438) - (4.04046,1.57668)(3.98083,1.57745)(3.925,1.57668)(3.87283,1.57438) - (3.82422,1.57053)(3.77905,1.56512)(3.73724,1.55811) - (3.69874,1.54948)(3.66348,1.53917)(3.63142,1.52713) - (3.60256,1.51329)(3.57688,1.49759)(3.5544,1.47993)(3.53514,1.46021) - (3.51915,1.43832)(3.50651,1.41411)(3.49729,1.38745) - (3.49162,1.35815)(3.48963,1.32601)(3.4915,1.29081)(3.49742,1.25228)(3.50765,1.21013) -%% -\path(4.25204,1.68304)(4.1755,1.68516)(4.10297,1.68587) - (4.03426,1.68516)(3.9692,1.68304)(3.90765,1.6795)(3.84948,1.67451) - (3.79458,1.66806)(3.74284,1.66012)(3.69417,1.65063) - (3.64852,1.63955)(3.60582,1.62683)(3.56602,1.61239) - (3.52909,1.59616)(3.49501,1.57805)(3.46379,1.55795) - (3.43543,1.53574)(3.40997,1.51128)(3.38744,1.48442) - (3.36791,1.45499)(3.35146,1.42277)(3.3382,1.38755)(3.32827,1.34904) - (3.32183,1.30695)(3.31908,1.26093) -%% -\path(4.24449,1.80006)(4.16396,1.79942)(4.08706,1.79749) - (4.01364,1.79428)(3.94353,1.78975)(3.87659,1.78389) - (3.81271,1.77667)(3.75175,1.76806)(3.69363,1.75801) - (3.63824,1.74647)(3.58552,1.73338)(3.53538,1.71867) - (3.48778,1.70226)(3.44267,1.68406)(3.40001,1.66397) - (3.35977,1.64186)(3.32194,1.6176)(3.28653,1.59104)(3.25354,1.56199) - (3.22299,1.53026)(3.19494,1.49562)(3.16944,1.4578)(3.14657,1.4165) - (3.12642,1.37138)(3.10914,1.32202) -%% -\path(3.75,1.25)(3.27753,1.48623) -%% -\path(3.34504,1.46989)(3.36522,1.4598) -\path(3.32254,1.47533)(3.3629,1.45515) -\path(3.30004,1.48078)(3.36058,1.45051) -\path(3.27753,1.48623)(3.35825,1.44587) -\path(3.29539,1.4715)(3.35593,1.44123) -\path(3.31325,1.45677)(3.35361,1.43659) -\path(3.33111,1.44204)(3.35129,1.43195) -\path(3.35825,1.44587)(3.36754,1.46444)(3.27753,1.48623) - (3.34897,1.42731)(3.35825,1.44587) -%% -\path(3.75,1.25)(3.14565,0.947826) -%% -\path(3.19923,0.99202)(3.21941,1.00211) -\path(3.18137,0.977289)(3.22173,0.997469) -\path(3.16351,0.962557)(3.22405,0.992827) -\path(3.14565,0.947826)(3.22637,0.988186) -\path(3.16815,0.953275)(3.22869,0.983545) -\path(3.19065,0.958724)(3.23101,0.978904) -\path(3.21315,0.964173)(3.23333,0.974263) -\path(3.22637,0.988186)(3.21709,1.00675)(3.14565,0.947826) - (3.23565,0.969622)(3.22637,0.988186) -%% -\allinethickness{1pt}% -\color{rgb_980000}% -\path(4.875,0.125) - (4.875,2.375)(2.625,2.375)(2.625,0.125)(4.875,0.125) -%% -\end{picture} diff --git a/graphics/epix/doc/layout.xp b/graphics/epix/doc/layout.xp deleted file mode 100644 index cd3e201011..0000000000 --- a/graphics/epix/doc/layout.xp +++ /dev/null @@ -1,36 +0,0 @@ -/* -*-ePiX-*- */ -/* layout.xp -- June 27, 2007 */ -#include "epix.h" -using namespace ePiX; - -const double a(sqrt(3)); -P f(double u, double v) -{ - return P((u-v)*(u+v), 2*u*v, u); //u*(u-a*v)*(u+a*v)); -} - -int main() -{ - picture(P(0,0), P(2,3), "5x7.5in"); - - begin(); - - domain R(P(-1,-1), P(1,1), mesh(12,12), mesh(24,24)); - - for (int i=0; i<2; ++i) - for (int j=0; j<3; ++j) - { - screen my(P(-3,-3), P(3,3)); - activate(my); - border(Red(0.6), "1pt"); - camera.at(sph(10, (2*j+i+1)*M_PI/8, M_PI/6)); - - plot(f, R); - arrow(P(0,0,0), 2*E_1); - arrow(P(0,0,0), 2*E_2); - inset(P(i+0.05,2.05-j), P(i+0.95,2.95-j)); - } - - end(); -} - diff --git a/graphics/epix/doc/manual.pdf b/graphics/epix/doc/manual.pdf Binary files differdeleted file mode 100644 index bd8fc76619..0000000000 --- a/graphics/epix/doc/manual.pdf +++ /dev/null diff --git a/graphics/epix/doc/manual.tex b/graphics/epix/doc/manual.tex deleted file mode 100644 index 71aa59aa97..0000000000 --- a/graphics/epix/doc/manual.tex +++ /dev/null @@ -1,5030 +0,0 @@ -%% Version 1.2.0 -\documentclass[12pt]{book} -\usepackage{amsmath,latexsym,epic,eepic,pstricks,xcolor,comment} -\usepackage[dvips,hyperref]{hyperref} - -\usepackage{makeidx} -\makeindex - -\renewcommand{\thefigure}{\arabic{chapter}.\arabic{figure}} - -\newcommand{\code}[1]{\texttt{#1}} -\newcommand{\filename}[1]{\texttt{#1}} -\newcommand{\Key}[1]{\texttt{#1}} -\newcommand{\URL}[1]{\texttt{#1}} - -%% \setlength{\topmargin}{0.5in} -\newcommand{\ePiX}{\code{ePiX}} -\newcommand{\ext}{\code{ePiX\_ext}} -\newcommand{\epix}{\code{epix}} -\newcommand{\eepic}{\code{eepic}} -\newcommand{\C}{\code{C}} -\newcommand{\CXX}{\code{C++}} -\newcommand{\pyepix}{\code{Pyepix}} - -\DeclareMathOperator{\clip}{clip} - -\newcommand{\Header}[1]{\smallskip\noindent\texttt{#1}% - \index{Header file!{#1}@\texttt{#1}}\quad} - -%% Substitution commands easily removable by sed for texinfo: -%% Remove recalcitrant chunks, -\newcommand{\texicomment}{} -\newcommand{\texicommentend}{} - -%% mark simple math, -\newcommand{\teximath}[1]{$#1$} -%% make function index entries, -\newcommand{\findex}[1]{} - -%% top-level division (first argument for texinfo node name) -\newcommand{\texinfochapter}[2]{\chapter{#2}} -\newcommand{\texinfoappendix}[2]{\chapter{#2}} - -%%\renewcommand{\subsection*}[1]{\subsection{#1}} - -\title{ \ePiX\ Tutorial and \\ Reference Manual} -\author{Andrew D. Hwang \\ - Department\ of Math and CS \\ - College of the Holy Cross} -\date{Version 1.2, September, 2007} - -\begin{document} - -\maketitle - -\tableofcontents - -\texinfochapter{1}{Introduction} - -\ePiX, a collection of batch utilities, creates mathematically -accurate figures, plots, and animations containing \LaTeX\ typography. -The input syntax is easy to learn, and the user interface resembles -that of \LaTeX\ itself: You prepare a scene description in a text -editor, then ``compile'' the input file into a picture. \LaTeX- and -web-compatible output types include a \LaTeX\ picture-like environment -written with \code{PSTricks}, \code{tikz}, or \code{eepic} macros; -vector images (\code{eps}, \code{ps}, and~\code{pdf}); and bitmapped -images and movies (\code{png}, \code{mng}, and~\code{gif}). - -\ePiX's strengths include: - -\begin{itemize} -\item Quality of output: \ePiX\ creates accurate, publication-quality - figures whose appearance matches that of \LaTeX. Typography may be - put in a figure as easily as in an ordinary \LaTeX\ document. - -\item Ease of use: Figure objects and their attributes are specified - by simple, descriptive commands. - -\item Flexibility: Objects are described by attributes and Cartesian - location; as in \LaTeX, printed appearance is determined when the - figure is compiled. A well-designed figure can be altered - dramatically, yet precisely, with command-line switches or minor - changes to the input file. - -\item Power and extendibility: \ePiX\ inherits the power of \CXX\ as a - programming language; variables, data structures, loops, and - recursion can be used to draw complicated plots and figures with - just a few lines of input. External code can be incorporated in a - figure with a command line option or by using a Makefile. - -\item Economy of storage and transmission: For a document containing - many figures, a compressed tar file of the \LaTeX\ sources and - \ePiX\ files is typically a few percent the size of the compressed - PostScript file. - -\item License: \ePiX\ is \emph{free software}.\index{Free software} - You are granted the right to use the program for whatever purpose, - and to inspect, modify, and re-distribute the source code, so long - as you do not restrict the rights of others to do the same. In - short, the license is similar to the terms under which theorems are - published. - -\end{itemize} - - -\ePiX\ facilitates logical, as opposed to visual, structuring of -mathematical figures, analogous to the relationship between \LaTeX\ -and a word processor. A few stylistic defaults streamline the creation -of simple figures, but there are few internal restrictions on the -contents or appearance of a figure; aesthetic and practical decisions -are left to you. - -If you are a: - -\begin{itemize} - -\item Potential user, you may wish to skip immediately to ``Software - Dependencies'' before investing additional time. - -\item New user, proceed from here until you have enough understanding - to run the software, then experiment with the samples files while - reading Chapter~\ref{chapter:started}, or return to the manual as - needed. - -\item More advanced user, browse at will, probably starting with - Chapter~\ref{chapter:ref-man}. - -\end{itemize} - -This manual is relatively conversational, and occasionally redundant, -especially between portions meant for readers at different levels of -familiarity. Throughout, you are assumed to be familiar with \LaTeX\ -and basic linear algebra: the description of points, vectors, lines, -and planes in three-dimensional space. Other material, such as \CXX\ -syntax, is introduced as needed. - - -\section{Changes in Version~1.2} - -\ePiX~1.2.x has been written almost entirely from scratch. The -conceptual model is unchanged, but there are a few changes of -syntax. If you're new to~\ePiX, please skip straight to -Section~\ref{section:software_deps}. - - -\subsection{Syntax Changes} - -Except as noted below, \ePiX~1.0 files will compile under -Version~1.2. Generally, global variables have been deprecated or -removed, and should be replaced by function calls in new files. The -following changes are either required, or else strongly recommended -(and may become mandatory). - -\begin{itemize} - -\item (Mandatory) The global variable \verb+tix+ in a \filename{flix} - file must be manipulated through the function \verb+tix()+. - -\item (Mandatory) The command \code{use\_pstricks()} is obsolete. - PSTricks output is obtained systematically as an output format. - -\item (Mandatory) Deprecated ``aliases'' no longer exist: - \code{triple} (for the \code{P} class), \code{D}~(for \code{Deriv}), - and \code{I}~(for \code{Integral}). Lowercase trig function names - conflicted with the standard namespace and have been removed. - -\item (Mandatory) Geometric object commands (\code{circle}, - \code{plane}, \code{segment}, and~\code{sphere}), which formerly - created class objects, now perform drawing just as \code{ellipse}, - \code{line}, \code{rect}, etc., do. The classes are available with - capitalized names (\code{Circle}, etc.). - -\item (Mandatory) Camera orientation is controlled with functions - named \code{tilt}, \code{pan}, and~\code{roll}; each rotates - the camera about an axis through the viewpoint, not through the - target. - -\item (Recommended) The global size variables \verb+x_min+, - \verb+x_max+, \verb+y_min+, \verb+y_max+, \verb+x_size+, and - \verb+y_size+ should be replaced by the function calls - \verb+xmin()+, etc. (No underscores.) - -\item (Suggested) The camera may be accessed through the function - \code{cam()}. - -\item (Suggested) The size and bounding box are given in one command, - such as \code{picture(P(-1,0), P(1,1), "4x3in")}. The old syntax - will be retained indefinitely. - -\end{itemize} - - -\subsection{New Features} - -\begin{itemize} - -\item Output is cleanly separated from the internal representation. - Figures may be written with a choice of macros---\code{PSTricks}, - \code{tikz}, and \code{eepic} at present---and new output types - are easily coded so long as the format supports arbitrary line - segments, color, and the ability to place a \LaTeX\ box at a - specified location. - -\item Colors are a manipulable data type, available in RGB, CMY, CMYK, - and Gray models. \filename{xcolor}-style operations, such as color - model conversion, blending, superposition, and inversion are - provided. - - The camera has a filter which affects the colors of all scene - elements. Filters performing CMYK separation are provided. - -\item Color filling is controlled with declarations, similarly to line - colors in \ePiX~1.0. Arrows and markers of type spot, dot, ddot, - and~circ are now colored like other markers. Parametric surfaces - may be color-shaded. - - If a figure contains many shaded elements, a color-capable output - format (e.g.\ \code{PSTricks}~or \code{tikz}) should be used for - efficiency. Filled regions are implemented as fine hatching in - \filename{eepic}. - -\item An \code{axis} class provides coordinate axes with labels in a - variety of styles: decimals or scientific notation of specified - precision, fractions, trig fractions, logarithmic labels in - arbitrary (integer) base, and user-supplied styles. - -\item \ePiX~1.2.x performs page layout. Sub-figures may be manipulated - flexibly. The sample files give several applications. - -\item Non-member intersection operators for circles, planes, spheres, - and segments are provided. A ``non-generic'' intersection does not - throw an exception, but instead returns an undrawable ``malformed'' - object. - -\end{itemize} - - -\section{Software Dependencies} -\label{section:software_deps} - -\index{Installation|(} -\index{Mac OS X} - -If you run GNU/Linux, a BSD, or Solaris, you probably have (and can -surely install) all the external software needed to use \ePiX. On -Mac~OS~X, you will need the Apple developer tools and an X~server -(XCode and XDarwin on the Tiger disks), and the free~\code{fink} -package manager to build a GNU environment. For Windows, you'll need -to install Cygwin and several packages. Detailed instructions are -given below. - -``Under the hood'', an input file is successively converted to a -\LaTeX\ picture; \code{dvi}; PostScript, \code{pdf}~or \code{eps}; and -if desired, to a bitmapped image or movie. Four shell -scripts---\epix, \code{laps}, \code{elaps}, and~\code{flix}---automate -the various file format conversions. - -\ePiX\ consists of a \CXX\ library, header, and shell scripts, and -requires GNU \code{bash} and a compiler \emph{for normal use}. For -complete functionality, you need \code{g++} (Version~3.2 or later), -\code{bash}, a text editor (\ePiX\ works particularly well with -\code{emacs}), a \LaTeX\ distribution, \code{Ghostscript}, \code{gv} -(or your favorite PS/PDF previewer), and \code{ImageMagick}. GNU -\code{grep} and \code{sed} are good to have. You may need additional -``developer packages'' (\code{binutils}, \code{make}) in order to -build \ePiX. The more up to date your software is, the better your -experience is likely to be, but bleeding edge versions are not -necessary, or even always desirable. - -Aside from their reliance on specific programs, \ePiX's shell scripts -are written using Unix-style pathnames. Thus, the most straightforward -way to use \ePiX\ is to install a GNU environment. - -Jay Belanger's \code{emacs} mode allows you to write, compile, and -view \ePiX\ figures without leaving \code{emacs}. If you use another -editor, you'll want to create template source files so you don't have -to type boilerplate code each time you write a new figure. -\index{Emacs@\code{emacs}} - - -\subsection{Setting up an Environment Under Windows} - -\index{Windows operating system|(} -\begin{comment} -Version~1.0.4 of \ePiX\ has been implemented in Python~2.2 by Andrew -Sterian, making \ePiX\ available on any platform that supports Python, -and without requiring a \CXX~compiler or~\code{bash}. Python is a -GPL-ed scripting language, and is available with a Windows installer -and detailed instructions. The easiest alternative for Windows users -is probably to install Python~2.2 or later (if necessary) and -\code{Pyepix}. The \code{pyepix} project home page is: -\URL{claymore.engineer.gvsu.edu/~steriana/Python/index.html} -\end{comment} - -Cygwin can be used to run \ePiX\ under Windows. Download -\filename{setup.exe} from \URL{www.cygwin.com}, then install the -packages you need. The following are recommended, and sufficient for -the actions described in this manual. -\begin{verbatim} -(Archive) bzip2, tar -(Devel) binutils, coreutils, gcc, gcc-g++, make, sed -(Editors) emacs, emacs-X11, vim -(Graphics) ImageMagick, ghostscript-base, ghostscript-x11, gv -(Publishing) tetex (all) -(Shells) bash, bash-completion -(X11) X-start-menu-icons, X-startup-scripts, - XFree86-lib-compat, xorg-x11-fscl, xorg-x11-fsrv -\end{verbatim} -\index{Windows operating system|)} - - -\section{Installation} - -\ePiX\ is distributed over the World-Wide Web as source code. Packages -may be found at \URL{mathcs.holycross.edu/\~{}ahwang/epix/ePiX.html} -The latest stable release is also on the CTAN mirrors, in the -\code{graphics} directory. (Some users of Red Hat have reported file -permission problems when unpacking the CTAN tarballs. If you encounter -this difficulty, please try downloading the sources from the project -main page.) Unpack the compressed tar file with the appropriate -command: -\begin{verbatim} - tar -zxvf epix-x.y.z.tar.gz - tar -jxvf epix-x.y.z.tar.bz2 -\end{verbatim} -(\code{x.y.z}~is the version number) or, if your \code{tar} -doesn't do decompression, -\begin{verbatim} - gunzip -c epix-x.y.z.tar.gz | tar -xvf - - bzcat epix-x.y.z.tar.bz2 | tar -xvf - -\end{verbatim} -\code{cd} to the source directory, \filename{epix-x.y.z}. The -\filename{INSTALL} file contains detailed installation instructions. -If you're impatient, the short of it is \code{./configure [--options]; - make; make install}. Run \code{./configure --help} for a list of -options. - -By default, \ePiX\ installs in subdirectories of -\filename{/usr/local}; if you want to install elsewhere, supply -\code{./configure} with the appropriate \code{--prefix}. You may also -want to consult \filename{POST-INSTALL} for information on setting -your \code{PATH} variable so your shell can find \ePiX. The manual -and sample files are in \filename{/usr/local/share/doc/epix}. -\index{Installation|)} - - -\subsection{Development} - -There are two mailing lists, one for user questions, one for -development discussion. Please visit -\URL{savannah.nongnu.org/mail/?group=epix} to subscribe. - - -\texinfochapter{2}{Getting Started} -\label{chapter:started} - -This chapter describes the basics of creating figures in \ePiX\ for -readers familiar with \LaTeX\ but completely new to~\CXX. No detailed -knowledge of~\CXX\ is needed to use \ePiX, only a bit of grammar that -is easily absorbed by example. - -Section~\ref{section:running} describes the commands (shell scripts) -comprising \ePiX, and explains how to set up a graphical environment -using standard *nix programs. Section~\ref{section:overview} briefly -describes figure creation. Section~\ref{section:tutorial} presents a -few files side-by-side with their output, and should be read at a -computer so you can run the exercises. - - -\section{Running \ePiX} -\label{section:running} - -An ``input file'' is a human-written figure specification containing -\ePiX\ commands. An ``output file'' is machine-created, and is -included directly into a \LaTeX\ document with the appropriate -packages. - -Conversion (``compiling'' a figure) is accomplished with four shell -scripts, \code{laps}, \code{epix}, \code{elaps}, and \code{flix}. -Each script has a preferred extension for its input files, and is -invoked with a command of the form -\begin{verbatim} - <script> [options] <input file(s)> -\end{verbatim} -Often, no options are necessary. \code{<script> --help} -describes \code{<script>}'s options. -\texicomment -Figure~\ref{fig:programs} (page~\pageref{fig:programs}) diagrams the -shell scripts and the file types they process. -\texicommentend - -By default, output file names are constructed by replacing the input -extension with the (preferred) output extension. For brevity, -extensions may be omitted. If the script has doubts about your intent, -it proceeds with default behavior and prints a warning message. - -The author is a great fan of \Key{TAB} completion, under which a -shell, based on what has been typed so far, automatically fills in a -command when the \Key{TAB} key is pressed. \ePiX\ comes with code -snippets that complete intelligently when the first part of a command -is one of the shell scripts. For example, if command completion is -active, typing \code{epix} \Key{TAB} prints only names of \code{epix} -input files. To use this feature, you must install Ian MacDonald's -\code{bash completion} package. The \filename{INSTALL} and -\filename{POST\_INSTALL} files contain details. - - -\subsubsection*{\code{laps}} - -\code{laps} performs \LaTeX\ to PostScript/PDF conversion, and is -independent of the rest of \ePiX. By default, \code{laps} invokes -\LaTeX~and \code{dvips}. The option \code{--pdf} creates a PDF~file by -post-processing the PostScript with~\code{ps2pdf}. Other \TeX-family -processors (\code{pslatex}, \code{pdftex}, etc.) may be used instead -of~\LaTeX\ by invoking \code{laps} with an appropriate option. - - -\subsubsection*{\code{epix}} - -\code{epix} compiles an input file into a \LaTeX\ picture. The input -file should have extension \filename{xp} (for eXtended Picture). Jay -Belanger's \code{emacs} mode is Highly Recommended; the installation -procedure can be found in the \filename{POST\_INSTALL} file. When this -mode is active, \code{emacs} automatically inserts a preamble template -when a new \filename{xp} file is created. In addition, you can peruse -\ePiX's info file, or format, compile, and preview files, all from -within \code{emacs}. -\index{Emacs@\code{emacs}} - -Output files from the script \code{epix} have extension -\filename{eepic}, after Conrad Kwok's enhancements to the \LaTeX\ -picture environment. In Version~1.2, however, an output file need not -contain \code{eepic} macros at all. - -An output file is \code{input} directly into a \LaTeX\ document whose -preamble contains appropriate \code{usepackage} lines. -\texicomment -\begin{center} - \begin{tabular}{cc} - Format & Required Package(s) \\ - \hline - \code{eepic} & \code{epic,eepic,xcolor} \\ - \code{pst} & \code{pstricks} \\ - \code{tikz} & \code{tikz} - \end{tabular} -\end{center} -\texicommentend -Rotated text requires the \code{rotating} package. - - -\subsubsection*{\code{elaps}} - -\code{elaps} creates stand-alone vector images (\filename{eps}~or -\filename{pdf}) from \code{epix} input files or \filename{eepic} -figures, even those not produced with \code{epix}. \code{elaps} -automatically loads the \LaTeX\ packages needed for features described -in this manual. Additional \LaTeX\ packages and \code{dvips} options -may be specified on the command line. - - -\subsubsection*{\code{flix}} - -\code{flix} creates bitmapped images and movies, -Section~\ref{section:animation}. Input files should have extension -\filename{flx}, and must contain a valid \code{epix} header as well as -additional code. Jay Belanger's \code{emacs} mode facilitates creation -of \code{flix} files. - - -\section{The Drawing Model} -\label{section:overview} - -To draw a figure manually, you select a sheet of paper of appropriate -size and add paths, markers, and labels. These scene elements have -attributes (line color, line width, fill color, font size, etc.) -affecting their appearance. - -\index{canvas} -\ePiX's drawing model behaves similarly. A \code{picture} command -sets the \emph{canvas} (or logical drawing area, a Cartesian -rectangle) and the true size of the final figure. A \code{begin} -command initializes the ``virtual paper'' for drawing. Subsequent -\emph{drawing commands} add objects to the scene: lines, curves, -function plots, labels, and the like. The printed appearance of scene -elements is determined by the current ``attribute state'' and -controlled by \emph{style declaration} which remain in effect until -superseded. Finally, an \code{end} command closes the figure and -prints it to the output file. - -In this manual, command descriptions follow a few -conventions. Optional arguments are enclosed in square brackets. A -\code{len} argument is either a number (representing a length in -\code{pt}) or a double-quoted string containing a number and a -two-letter \LaTeX\ length unit, such as \code{"1.5pt"} or -\code{"6cm"}. A \code{color} argument is a named primary -(\code{Red()}, \code{Cyan()}, \code{White()}, etc.), or a \code{Color} -specified by densities (\code{RGB(r,g,b)}, \code{CMY(c,m,y)}, etc.) - -\begin{itemize} - -\item Fill color: \code{fill(color)}, \code{nofill()}. - -\item Line color and width: \code{plain([color])}, - \code{bold([color])}. - -\item Text size: \code{font\_size([size])}, returns to - \code{normalsize} if no argument is given. - -\end{itemize} - -\noindent A complete list of style commands is found in -Section~\ref{section:quickref}, starting on -page~\pageref{section:quickref}. - -To handle three-dimensional scenes, a \code{camera} performs point -projection from a selected spatial location to the canvas. As a user, -you'll need to control relatively few of the \code{camera}'s -parameters. Keep in mind, however, that elements are added to a scene -in the same order their commands appear in the output file, and that -later elements generally cover earlier ones. Some three-dimensional -scenes require manual ordering of the input file; such ordering is -dependent on the \code{camera}'s location. - -By default, \ePiX\ draws thin, solid, black lines, performs no filling -of regions, prints text in a 12~pt Roman font, and looks down the -\teximath{z}~axis from a large distance, giving orthogonal projection -on the \teximath{(x,y)}~plane. When the \code{camera} is moved, the -\teximath{z}~axis points vertically up on the page. - - -\section{Tutorial} -\label{section:tutorial} - -This section presents sample input files side-by-side with their -output so you can compare what you write with what you'll see on the -screen or page. \ePiX\ provides standard drawing capabilities, but -like all software has its own idioms and personality. The basic -syntax, which comes from \code{C}/\CXX, should be mostly -self-explanatory. One-line comments begin with the -string~``\verb+//+''. - - -%%\index{Emacs@\code{emacs}} -\index{Graphical interface} -To use the sample files interactively, you'll need working software: -\filename{bash}, \filename{emacs}, \ePiX, \filename{g++}, -\filename{gv}, and a running X~server. To complete your ``GUI'', -start~\filename{gv} and select ``Watch file'' from the ``State'' -menu. The loaded file will update automatically when it changes. - -Create a ``scratch'' directory, \code{cd} into it, and run the command -\begin{verbatim} - tar -zxf /usr/local/share/doc/epix/sample_src.tar.gz -\end{verbatim} -(Change the path as appropriate for your installation.) This unpacks -copies of the sample files into your scratch directory, including all -the files mentioned in this manual. The \filename{README} file serves -as a table of contents. - -Open a sample file in \filename{emacs}, compile it from the drop-down -menu (or with the keyboard command), then open the \filename{EPS} file -in~\filename{gv}. Now you're ready to follow the tutorial -interactively. A few suggested exercises are included with each -file. Naturally, as you study more files, you'll be able to make more -interesting changes on your own. - - -\subsubsection*{Basic Drawing} - -The first sample, \filename{hello.xp}, contains code needed to specify -the figure's size, followed by the classic greeting. The \code{border} -command draws a box around the figure in the specified color and -width, and serves here merely to delimit the output from the -surrounding page. -\begin{verbatim} -/* -*-ePiX-*- */ -#include "epix.h" // These lines are analogous -using namespace ePiX; // to a usepackage command. - -int main() -{ - picture(P(-1,-1), P(1,1), "2 x 1in"); // corners, true size - - begin(); // ---- Figure body starts here ---- - - border(Black(), "1pt"); // color, line width - - font_size("Huge"); // May be any font size, e.g. "scriptsize" - label(P(0,0), "Hello, world!"); - - end(); // ---- End figure; write output file ---- -} -\end{verbatim} - -\begin{center} - \input{hello.eepic} -\end{center} - -\begin{itemize} - -\item Change the color and width of the - border. (\code{RGB(r,g,b);} creates an RGB color, CMY colors are - analogous. Named primaries are available. The densities should be - between \teximath{0}~and \teximath{1} for ``expected'' behavior.) - -\item Add \code{backing(Cyan());} after the \code{border} command. - -\item Put the command \code{crop\_ellipse();} before the \code{border} - command. Permute the \code{crop\_ellipse} command with the - \code{border} and \code{backing} lines, and note how the attribute - (\code{crop}) affects objects (\code{border}, \code{backing}). - -\end{itemize} - - -\subsubsection*{Geometric Objects} - -Our next file uses simple objects to draw a 2-D house-and-sun scene. - -\begin{verbatim} -int main() -{ - picture(P(0,0), P(5,2), "3.75 x 1.5in"); - - begin(); - - triangle(P(0.9, 1), P(3.1, 1), P(2, 1.5)); // vertices - circle(P(4,1.5), 0.25); // center and radius - - rect(P(1,0), P(3,1)); // opposite corners - - fill(Black(0.1)); // light gray - rect(P(2.3,0), P(2.7,0.8)); // the door - nofill(); - - bold(); // draw thicker lines - grid(P(1.4, 0.2), P(2, 0.6), 2, 2); // corners, number of squares - - line(P(xmin(), 0), P(xmax(), 0)); // endpoints - - end(); -} -\end{verbatim} - -\begin{center} - \input{objects.eepic} -\end{center} - -\begin{itemize} - -\item Add declarations such as \code{bold(RGB(1,0.9,0.5))} or - \code{fill(Yellow())} to color the scene. (Color and filling are - orthogonal attributes.) -\end{itemize} - -\noindent The sample file \filename{house.flx} uses loops to draw -gradient fills of the lawn, sky, and sun, and animates a sunset. - - -\subsubsection*{Function Plotting} - -Plotted functions must be defined in the ``preamble'', before -\code{main}. ``High-level'' elements---coordinate axes and grids, axis -labels, and graphs---are drawn with mnemonically-named commands. -\begin{verbatim} -// double = double-precision floating point -double f(double x) { return 0.75*Sin(x) - 0.25*Sin(2*x); } - -int main() -{ - picture(P(-2,-1), P(2,1), "5 x 1in"); // [-2,2] x [-1,1] - - begin(); - revolutions(); // set angle units, [0,1] = one turn - - h_axis(16); // axes w/default endpts - v_axis(4); - h_axis_labels(4, P(0,-4), b); // shift down 4pt, align below - - plain(Red()); - plot(f, xmin(), xmax(), 120); // use 120 intervals - - end(); -} -\end{verbatim} - -\begin{center} - \input{plotting.eepic} -\end{center} - -\begin{itemize} - -\item Define and plot some different functions; adjust the bounding - box as necessary. (Use repeated multiplication for polynomials. - The \code{polarplot} command graphs \teximath{r=f(\theta)}.) - -\item Change the arguments to \code{h\_axis\_labels}. The first - specifies the number of intervals to label; the second gives the - label offset in~\code{pt}. The last puts each label below~(\code{b}) - its Cartesian location. - -\end{itemize} - - -\subsubsection*{Multivariable Plotting} - -Functions of two or three variables are defined just like functions of -one variable, but for plotting the return type must be a -point~(\code{P}), not a real number~(\code{double}). The \code{domain} -class specifies the set of inputs to plot. - -\begin{verbatim} -P f(double r, double th) -{ - return P(r*Cos(th), r*Sin(th), pow(r, 3)*Cos(3*th)); -} - -int main() -{ - picture(P(-1,-1), P(1, 1), "2 x 1in"); - begin(); - pst_format(); // use PSTricks macros for output - - // corners ([0,1] x [0,2\pi]) and fineness - // (8x40 rectangles, plotted at 16x120 resolution) - domain R(P(0,0), P(1, 2*M_PI), mesh(8,40), mesh(16,120)); - - camera.at(P(3,1,2)); // set the viewpoint - arrow(P(0,0,0), P(1.25,0,0)); // coordinate axes - arrow(P(0,0,0), P(0,1.25,0)); - - plain(Blue(1.2)); // line color and width - fill(Yellow()); // shading color - surface(f, R); - - end(); -} -\end{verbatim} - -\begin{center} - \input{plotting2.eepic} -\end{center} - - -\subsubsection*{Loops and Control Structures} -\label{taylor_poly} - -A function can be defined by an arbitrary algorithm, and a -\code{domain} may be used to plot a family of functions for several -values of one variable. - -\begin{footnotesize} -\begin{verbatim} -P sin_n(double x, double n) // Taylor polynomial of sin x -{ - const int N((int) floor(n)); // convert n to an index bound - const double sqx(-pow(x, 2)); // -x^2 - double val(x), summand(x); - - for (int i=1; i <= 2*N+1; i += 2) - { - summand *= (sqx/((i+1)*(i+2))); // (-1)^i x^{2i+1}/(2i+1)! - val += summand; - } - - return P(x, val); // return (x, y) -} - -int main() -{ - picture(P(0, -1), P(6*M_PI, 1), "5 x 1in"); - - begin(); - - set_crop(); - bold(Green()); - plot(Sin, 0, xmax(), 120); - - domain R(P(0,1), P(6*M_PI, 41), mesh(60, 40), mesh(120, 40)); - for (int i=3; 0 <= i; --i) // print in descending degree - { - bold(RGB(0.25*i, 0, 1-0.25*i)); // degree-dependent color - plot(sin_n, R.slice2(5*i+1)); // plot for n = 5i+1 - } - end(); -} -\end{verbatim} -\end{footnotesize} - -\begin{center} - \input{plotting3.eepic} -\end{center} - - -\subsubsection*{Page Layout} - -Page layout can be composed from sub-pages with \code{screen} objects. -In the loop body below, objects are added to the ``active'' -\code{screen}, then \code{inset} into the ``canvas'', the screen -representing the entire figure. - -\begin{verbatim} -P f(double u, double v) -{ - return P((u-v)*(u+v), 2*u*v, u); -} - -int main() -{ - picture(P(0,0), P(2,3), "5x7.5in"); // overall size - - begin(); - - domain R(P(-1,-1), P(1,1), mesh(12,12), mesh(24,24)); - - for (int i=0; i<2; ++i) - for (int j=0; j<3; ++j) - { - screen my(P(-3,-3), P(3,3)); - activate(my); - border(Red(0.6), "1pt"); - // frame-dependent viewpoint - camera.at(sph(10, (2*j+i+1)*M_PI/8, M_PI/6)); - - plot(f, R); - arrow(P(0,0,0), 2*E_1); - arrow(P(0,0,0), 2*E_2); - // SW corner at (i, 2-j), padded by 0.05 on all sides - inset(P(i+0.05,2.05-j), P(i+0.95,2.95-j)); - } - - end(); -} -\end{verbatim} - -\begin{center} - \input{layout.eepic} -\end{center} - - -\section{\CXX\ Basics} - -\index{Cplusplus@\CXX|(} -An \ePiX\ source file is a \CXX~program. If you've successfully -modified and compiled the sample files, you know enough~\CXX\ to use -\ePiX. In the author's experience, \code{C}~grammar suffices for most -applications. An excellent introduction to definitions of functions -and variables, control statements, and overall program structure is -Kernighan~and Ritchie's \emph{The \code{C} Programming Language}, -second edition~\cite{KnR}. - - -\subsection{File Format} - -\index{Emacs@\code{emacs}} -Jay Belanger's \code{emacs} mode for \code{ePiX} inserts a file -template when an empty buffer is opened with the extension~\code{xp}. -This section explains the purposes served by the template. A few -additional remarks may help you avoid basic syntax pitfalls. - -A \CXX\ file consists of ``statements'', analogous to ordinary -sentences. Common types include \emph{declarations} (which -``register'' a function, variable, or type name with the compiler), -\emph{definitions} (which assign meaning to declared names), and -\emph{function calls} (which cause a named function to execute). Most -statements in an \ePiX\ input file are function calls (``commands''). -Plain declarations are relatively rare in user files, since a -definition serves to declare any new names that it contains. - -Every statement ends with a semicolon, and conventionally a file -contains at most one statement per line. The compiler ignores -nearly all whitespace (spaces, tabs, and newlines), which should be -used freely to make files easy to read. Other punctuation -(periods, commas, (semi)colons, parentheses, braces, and quotes) -dictates file parsing, and must adhere stringently to grammar. - -An \ePiX\ file always begins with the lines -\findex{include} -\begin{verbatim} -#include "epix.h" // N.B. pre-processor directive, no semicolon -using namespace ePiX; -\end{verbatim} -The first line is analogous to a \LaTeX\ \code{usepackage} command: It -loads the contents of the ``header'' file \filename{epix.h}, importing -the names of commands provided by~\ePiX. To avoid name conflicts, -\ePiX's commands are enclosed in a ``namespace''. For example, the -\code{label} command is actually known to the compiler as -\code{ePiX::label}. The second line above tells the compiler to apply -the prefix tacitly. - - -\subsection{Variables and Functions} -%% \index{Variable}\index{Variable!names} -%% \index{Function}\index{Function!names} - -Definitions of variables and functions play the same role in a figure -that macro definitions play in a \LaTeX\ document: gathering and -organizing information on which the figure depends. A variable is -defined by supplying its type, name, and initial value. By far the -most common data types in~\ePiX\ are \code{double} (double-precision -floating point number), \code{P}, and \code{int}. The name of a -variable may consist (only) of letters (including the underscore -character) and digits, and must begin with a letter: -\begin{verbatim} -my_var, var2, MY_var, aLongVariableName; // valid -my-var, 2var, \v@riable, $x, ${MY_VARIABLE}; // not valid -\end{verbatim} -Variable names are case-sensitive, and numerous (non-universal) -conventions govern the significance of capitalization. Generally, make -names descriptive but not unwieldy, and avoid language keywords (such -as \code{const}, \code{true}, \code{double}, \code{class}, or -\code{public}) and names that begin with an underscore. - -A function accepts ``arguments'' and ``returns a value''. To define a -function in~\CXX, you must specify the return type, the name of the -function, the types of the arguments, and the algorithm by which the -value is computed from the inputs. The code block -\begin{verbatim} -double f(double x) -{ - return sqrt(1-x*x); -} -\end{verbatim} -specifies the \code{double}-valued function~\teximath{f} of one \code{double} -variable defined by the formula \teximath{f(x)=\sqrt{1-x^2}}. - - -\subsection{Comments} - -\CXX\ has two types of comments. \code{C}-style comments, which may -span several lines, are delimited by the strings \code{/*}~and -\code{*/}. One-line comments, analogous to the \LaTeX~\code{\%}, are -begun with \code{//}. A one-line comment may appear within a multi-line -comment, but a \code{C}-style comment may not; the compiler will -mistake the first~\code{*/} it encounters as the end of the current -multi-line comment. - - -\subsection{Program Execution} - -All the ``action'' in a \CXX\ program occurs inside the special -function~\code{main}. Running a compiled \CXX~program is viewed by the -operating system as calling the program's \code{main} function. The -return value (an \code{int}) is the program's exit status. The -contents of the output file start with \code{begin()} and terminate -with \code{end()}. Intervening statements constitute the \emph{body} -of the file. - -In \CXX, a function may not be defined inside another function. Thus, -variables may be defined inside \code{main}, but functions cannot be. - - -\subsection{Strings and Raw Output} - -In \CXX, a \code{string} is a sequence of characters. Most -\code{string}s in \ePiX\ input files are \emph{literals}, -double-quoted \code{string}s whose value is read from the input. In a -string literal, backslash is an escape character; a single backslash -is produced by a double backslash in the input file. Certain letters -have special meanings when backslash-escaped, including ``\verb+\n+'' -(newline) and ``\verb+\t+'' (\Key{TAB}). Unlike~\LaTeX, \CXX~does not -require a space to separate an escape sequence from following text; -the string ``\verb+\\textwidth+'' literally represents a \LaTeX\ -command, while ``\verb+\textwidth+'' is read ``\code{TABextwidth}'' by -the compiler. - -Though not commonly needed, raw text can be printed to the output -file. The functions \code{write}, \code{pre\_write}, and -\code{post\_write} accept \code{string} arguments. \code{write} prints -its argument where the call appears in the input file. The other -functions print their arguments before or after the completed picture, -respectively. These commands must be in the file body. As an -application, a complete \LaTeX\ \code{figure} environment (with -caption and label) can be produced by an \ePiX\ file, -Figure~\ref{fig:captioned}. - -\index{pre\_write} -\index{post\_write} -\index{write} -\findex{pre\_write} -\findex{post\_write} -\findex{write} -\begin{figure} -\begin{footnotesize} -\begin{verbatim} -#include "epix.h" -using namespace ePiX; - -int main() -{ - picture(P(-1,-1), P(1,1), "10cm x 3in); - begin(); - pre_write("\\begin{figure}[hbt]"); // comes before the picture - - post_write("\\caption{A \\LaTeX\\ figure.}"); // and after - post_write("\\end{figure}"); - - < ... other ePiX commands ... > - write("%% A comment near the end, but inside the picture."); - end(); -} // End of main() -\end{verbatim} -\end{footnotesize} -\caption{Generating a self-contained figure in \ePiX.} -\label{fig:captioned} -\end{figure} - - -\subsection{Conditionals and Loops} - -An algorithm's behavior usually depends on internal state. A -\emph{conditional statement} causes blocks of code to be executed -according to criteria. A \emph{loop} repeatedly executes a code -block, usually changing the values of variables in a predictable way, -so that the loop exits after finitely many traversals. - -\texicomment -Figure~\ref{fig:gcd} illustrates conditionals and loops with -Euclid's algorithm for the greatest common divisor. Three pieces of -notation require explanation: \code{j\%i} means~``\teximath{j\pmod i}'', -\code{||} is logical~``or'', and \code{==} is ``test for equality''. -(A single~``\code{=}'' is the assignment operator.) - -\index{Function!Euclidean algorithm} -\begin{figure}[hbt] -\begin{footnotesize} -\begin{verbatim} -int gcd (int i, int j) -{ - int temp(i); // initialization syntax - if (i==0 || j==0) - return i+j; // define gcd(k,0) = k - - else { - if (j < i) // swap them - { - temp = j; - j = i; - i = temp; - } - // the work is done here... - while (0 != (temp = j%i)) // assign temp, test for zero - { - j = i; - i = temp; - } - return i; - } -} -\end{verbatim} -\end{footnotesize} -\caption{Euclid's division algorithm in~\CXX.} -\label{fig:gcd} -\end{figure} -\texicommentend - -%% \noindent For details on conditionals, or for more advanced techniques -%% of \CXX\ programming, please consult a textbook or online tutorial. -\index{Cplusplus@\CXX|)} - -%% Force previous two figures onto the same page -%%\clearpage - -\section{Animation} -\label{section:animation} - -\index{Animation|(} -\ePiX\ is well-suited to the creation of mathematically accurate -animations: If a figure depends suitably upon a ``time'' parameter, -then a loop can be used to draw the entire figure for multiple time -values, yielding successive ``snapshots'' of the figure as time -progresses. The shell script~\code{flix} automates the process of -compiling a suitable input file into a collection of \filename{png}s -and assembling these frames into a \filename{mng}~or \filename{gif} -animation. ImageMagick is the image-handling engine. - -A \code{flix} file is an \code{epix} file with two restrictions: -\begin{itemize} - \item The \code{double} variable \code{tix()} is used as - ``clock''. - - \item \code{main} accepts two command line arguments and sets - \code{tix()} accordingly. -\end{itemize} -\index{Emacs@\code{emacs}} -Jay Belanger's \code{emacs} mode recognizes the file -extension~\filename{.flx} and inserts template code if an empty buffer -is opened. Creation of \code{flix} files is as easy as creation of -\code{epix} files. The \filename{samples} directory contains a -handful of \code{flix} files that may be consulted for ideas. - -By default, \code{flix} creates movies with 24~frames, in which -\code{tix()} runs from~0 to~1, and animates at -\teximath{0.08}~sec/frame. These and other parameters can be changed -with command-line options. - -A ``typical'' \code{.flx} file may take 30~seconds to a few minutes to -compile, depending on the number of frames and the complexity of each -frame. To facilitate debugging, \code{elaps} can be run on a -\code{flix} file. \code{elaps} runs in a fraction of the time, and if -\code{elaps} can't produce a viewable image, \code{flix} will surely -fail. While running, \code{flix} prints a progress bar counting the -number of \filename{eps} files that have been created. There will be -a delay of a few seconds (or more) after the last frame is produced, -during which ImageMagick's \code{convert} utility assembles the movie. -\index{Animation|)} - - -\section{Layout Tricks} -\label{section:layout} -\index{Layout} - -\subsection{Stereograms} -\index{Stereograms} -Stereograms are created by drawing a single scene twice from slightly -different points of view. To create a stereogram with \ePiX, write a -``scene'' function containing the necessary drawing commands, then set -the camera appropriately and call the scene function twice, once for -each frame. - -\subsubsection*{Crossed-Eyes Stereograms} - -The sample files \filename{lorenz.xp}~and \filename{twisted\_cubic.xp} -use page layout to draw crossed-eyes stereograms. For each frame, -create and activate a \code{screen}, set the camera, and call the -scene function. The frames are inset side by side in the final -picture. For a crossed-eyes stereogram, the frame from the -``rightmost'' camera position is placed on the left. - -\subsubsection*{Bi-Color Stereograms} - -The sample files \filename{cube.flx}~and \filename{mirrorball.flx} -contain animated red-cyan stereograms, suitable for viewing with 3-D -glasses. The technique works best with black-and-white line drawings, -but the basic approach is the same as for crossed-eyes stereograms: -Create a scene function and call it twice, setting the camera -appropriately. Layout is unnecessary since the frames are superposed. -Pen colors should be close to red and cyan, but ``optimal'' choices -depend on one's eyes and 3-D glasses. - -\subsubsection*{Stereographic Movies} - -Either form of stereogram can be animated in a \code{.flx} file, but -keeping one's eyes properly crossed requires practice while most -people can instantly see depth with 3-D glasses. As always when using -\code{flix}, debug the scene with \code{elaps} before compiling a -movie. If a stereoscopic effect is difficult to see in a still image, -it will be even harder to perceive in a movie. - - -\subsection{Inset Images} - -\ePiX\ can place external images into a figure, similarly to -Rolf Niepraschk's \code{overpic} package. You provide the Cartesian -center point, the file name, and optionally the true height and/or -width of the image: -\findex{label} -\begin{verbatim} - label(P(a,b), "\\includegraphics[width=w,height=h]{file}"); -\end{verbatim} -This effect requires the \filename{graphicx} package. When compiling a -stand-alone graphic containing an external image, you must specify the -\filename{graphicx} package on the command line: \code{elaps -p -graphicx <file>} - -\texicomment -\begin{figure}[hbt] - \begin{center} - \input{ePiX.eepic} - \end{center} - \caption{Visual guide to \ePiX's shell scripts} - \label{fig:programs} -\end{figure} -\texicommentend - - -\texinfochapter{3}{Reference Manual} -\label{chapter:ref-man} - -This chapter details \ePiX's capabilities, discussing attributes and -data types, and listing available commands in the form -\begin{verbatim} - label(P posn, [P offset], string text, [align]); - circle(P ctr, double rad=1, normal=P(0,0,1)); -\end{verbatim} -As in Chapter~\ref{chapter:started}, function arguments are given by -type (\code{P}, \code{double}, \code{string}, etc.)\ and name, or by -name alone if the type is clear. Optional arguments are enclosed in -square brackets. A few argument types, such as \code{[align]} above, -admit only a small number of values; these cases are explained when -the corresponding command is first introduced. - -A name followed by an equals sign and a value indicates a default -argument; if omitted in an input file, the compiler substitutes the -default value. Only trailing arguments may be specified this way. For -example, if the \code{rad} argument of the \code{circle} command is -omitted, the \code{normal} argument \emph{must} be omitted as well. - -In an input file, only an argument's value is given, not the type: -\begin{verbatim} - label(P(0,0), P(0,-4), "Hello world", b); - circle(P(0,-0.25), sqrt(2)); // use default normal -\end{verbatim} - -Generally, \code{len} signifies either a number (representing a length -in \code{pt}) or a double-quoted string containing a number and a -two-letter \LaTeX\ length unit, such as \code{"1.5pt"} or -\code{"6cm"}. \code{color} represents a \code{Color} object -constructed from a named primary (\code{Blue()}, \code{Magenta(0.7)}, -etc.), a color specification (\code{RGB(r,g,b)}, \code{CMY(c,m,y)}, -etc.), or an operator applied to an existing \code{Color}. - - -\section{File Structure} - -An \ePiX\ input file constitutes a short \CXX\ program. When this -program is compiled and run by one of the shell scripts, it creates a -figure file suitable for inclusion in \LaTeX. - -\index{Preamble} -Like a \LaTeX\ document, an \ePiX\ file contains a \emph{preamble}, -which sets up a drawing environment, and a \emph{body}, which contains -actual figure-generating commands. The minimal file has the form -\findex{picture} -\findex{begin} -\findex{end} -\begin{verbatim} -#include "epix.h" // N.B. no semicolon -using namespace ePiX; - -int main() { - picture(P(a1,b1), P(a2,b2), "n1 [unit1] x n2 unit2"); - begin(); // end of preamble, start of body - end(); // end of body -} -\end{verbatim} -\ePiX\ commands are of four general types: drawing, attribute setting, -definitions (of data and functions), and operations on existing -objects. Except as noted below, drawing and attribute commands must -appear in the body, between \code{begin()}~and \code{end()}. Function -definitions must come in the preamble, before \code{main()}. Data -definitions may appear in the preamble or body. - - -\subsubsection*{Output Format} -\index{Output format} - -The \code{end()} command writes the output file to \code{stdout}, -using \code{eepic} macros by default. The shell scripts redirect -\code{stdout} to an appropriate disk file. - -The attribute-setting command \code{pst\_format()} causes the output -file to be written using \code{PSTricks} macros when \code{end} is -called. Similarly, \code{tikz\_format()} causes the file to be written -using \code{tikz} macros, and \code{eepic\_format()} causes the file -to be written using \code{eepic} macros. These commands may appear -anywhere in the figure body. There is no reason for a file to contain -more than one such command. - -The output format may be selected on the command line, overriding any -explicit request in the input file. Supplying \code{epix}, -\code{elaps}, or \code{flix} with one of the options \code{--pst}, -\code{--tikz}, or \code{--eepic} is tantamount to issuing a -\code{pst\_format()} (etc.)\ command just before the end of the -file. These options are listed in decreasing precedence. If more than -one is given, the ``strongest'' applies, regardless of the command -line order. - -A figure may be written directly to a specified disk file, in a format -unaffected by the command line flags above. The command -\begin{verbatim} - print_eepic("file.tex"); -\end{verbatim} -writes the figure to the named file using \code{eepic} -macros. Analogous commands exist for the formats \code{pst}~and -\code{tikz}. These commands perform an immediate action. Consequently, -the command's location in the input file is significant, and multiple -commands may appear in a single file, so long as distinct file name -arguments are provided. Applications include writing the same figure -in multiple formats, or creating successive ``snapshots'' of a lengthy -computation. - - -\section{Picture Size and Aspect Ratio} - -\index{Picture!size} -\index{Picture!offset} -The \code{picture} command specifies a figure's logical and true -sizes. In the ``minimal file'' snippet above, the \emph{canvas} is the -Cartesian rectangle \teximath{[a_1,a_2]\times[b_1,b_2]} whose corners -are given. Either pair of opposite corners is acceptable, but -confusion is less likely when the SW~and NE corners are given, in this -order. - -The true (printed) width and height are read from \code{picture}'s -third argument, a ``size \code{string}'' such as \verb+"4cm x 1in"+, -containing a number and optional \LaTeX\ length unit, an~\code{x}, -another number, and a mandatory length unit. Spaces may be used for -legibility. The mandatory length unit becomes the \LaTeX\ -\code{unitlength}. The argument \verb+"4cm x 1in"+ creates a picture -4~cm wide and 1~in high, but internally converts 4~cm to inches. -Recognized length units are \code{pt} (points, the default), \code{cm} -(centimeters), \code{in} (inches), \code{mm} (millimeters), \code{pc} -(picas), and \code{bp} (big points). -(\code{1in = 2.54cm = 72bp = 72.27pt}, \code{1pc = 12pt}.) - -The logical and true sizes may be defined separately with the commands -\findex{bounding\_box} -\findex{picture} -\findex{unitlength} -\begin{verbatim} - bounding_box(P(a1,b1), P(a2,b2)); - picture(n1, n2); - unitlength(len); // len a length string, not a double -\end{verbatim} -One way or another, the logical and true dimensions \emph{must} have -positive values when the \code{begin()} command is issued. - -\LaTeX\ treats the contents of a picture environment as a single box, -aligned by default on its lower left corner. An \code{offset} command -accepts two \code{double} arguments or a size \code{string} and shifts -the page location accordingly. The command -\code{offset("0.25 x -0.5cm")} shifts the picture right -\teximath{0.25}~cm and down \teximath{0.5}~cm. If the -\code{unitlength} is 1~cm, the command \code{offset(0.25, -0.5)} has -the same effect. - -A non-zero \code{offset} causes a picture's contents to appear in a -location where \LaTeX\ does not expect them. This can be useful in a -\LaTeX\ document, but should be avoided when compiling a stand-alone -image, since \code{dvips} may crop according to rules of its own. - - -\index{Picture!aspect ratio} -\index{Picture!bounding box} -The canvas's corners are \code{(xmin(),ymin())} and -\code{(xmax(),ymax())}, while its width and height are -\code{xsize()}~and \code{ysize()}. The canvas is a virtual, advisory -data structure; its dimensions are not directly related to the -figure's printed size, and picture elements may lie outside the -canvas. Affine scaling maps the canvas to the page when the output -file is written. -\begin{center} -\input{scaling.eepic} -\end{center} -\label{page:scaling} -The figure's aspect ratio is controlled by sizing the canvas. The -aspect ratio is ``true'' if the canvas and page rectangles are -geometrically similar, e.g., if both boxes are 1.5~times as wide as -they are tall. - - -\section{Color} -\label{section:color} - -\index{Color|(} -\ePiX\ provides a \code{Color} data type. Four models are implemented: -\code{RGB}, \code{CMY}, \code{CMYK}, and \code{Gray}. A \code{Color} -holds primary color ``channels'', each carrying an intensity between -0~(no color) and~1 (full saturation). ``No color'' means black in -\code{RGB} and \code{Gray}, white in \code{CMY(K)}. \code{RGB}, -\code{CMY}, and~\code{CMYK} colors are written to the output file as -commands in the corresponding model. \code{Gray} shades are written -in~\code{RGB}. - -Operations on red-green-blue colors are described below. Functionally, -colors are converted to~\code{RGB}, operated upon, then converted back -to the original model. Conversions are as described in Uwe Kern's -\filename{xcolor} manual~\cite{xcolor}. - - -\subsection{Constructors} - -Each color model has a ``constructor'' creating a color of specified -densities. The \code{RGB}~and \code{CMY} models have named ``primary'' -constructors; the density argument is optional and defaults to~1. -\findex{RGB} -\findex{Red} -\findex{Green} -\findex{Blue} -\findex{White} -\findex{Black} -\begin{verbatim} - // red-green-blue colors - RGB(double r=0, double g=0, double b=0); - Red(d=1); Green(d=1); Blue(d=1); - White(d=1); Black(d=1); -\end{verbatim} -\findex{CMY} -\findex{Cyan} -\findex{Magenta} -\findex{Yellow} -\findex{CMY\_White} -\findex{CMY\_Black} -\findex{CMYK} -\findex{Gray} -\begin{verbatim} - // cyan-magenta-yellow colors - CMY(double c=0, double m=0, double y=0); - Cyan(d=1); Magenta(d=1); Yellow(d=1); - CMY_White(d=1); CMY_Black(d=1); - - // gray - Gray(double d=0); // equivalent to RGB(d, d, d) -\end{verbatim} -Each \code{CMY} constructor has a corresponding \code{CMYK} function, -e.g.\ \code{CyanK()}~or \code{CMYK\_White()}. - -Though color densities lie between 0~and 1, \ePiX's primary color -constructors take arguments mod~4, viewed as elements -of~\teximath{[-2,2]}. Consider \code{Red(d)}, ``red with -density~\teximath{d}''. For integer values of~\teximath{d}, the -constructor has the following meanings: \code{Red(0)}~is black, -\code{Red(1)}~is red, \code{Red(2)}=\code{Red(-2)}~is white, and -\code{Red(-1)}~is anti-red, or cyan. For non-integer~\teximath{d}, the -constructor interpolates between the bracketing integer values, -Figure~\ref{fig:densities}. Other primary constructors work -analogously. - -\begin{figure}[hbt] - \begin{center} - \input{color_density.eepic} - \end{center} - \caption{The red primary constructor.} -\label{fig:densities} -\end{figure} - -Let \teximath{\delta:[-2,2]\to[0,1]} be the piecewise-linear function -that converts real numbers to primary color densities, -\teximath{\clip:\mathbf{R}\to[0,1]} the clipping function. The -non-primary constructor \code{RGB(r, g, b)} computes the density of -the red channel as -\teximath{\clip\bigl(\delta(r)+\delta(-g)+\delta(-b)\bigr)}; the green -and blue channel densities are computed similarly. Every color can be -created with arguments between 0~and 1, but the constructor accepts -arbitrary real arguments and returns colors varying ``continuously and -periodically''. - -\index{Color!transparency} -Colors possess an ``alpha-channel'' for transparency. Except as -supported by the output format, this feature is a stub. - - -\subsection{Color Operations} - -Colors can be scaled, inverted, blended, superposed, and filtered. In -the code below, \code{tint}~is a \code{Color}. The effect of each -operation is described in the \code{rgb} model; the visual result is -the same in all models. -\findex{Color.invert} -\findex{Color.blend} -\findex{Color.superpose} -\findex{Color.alpha} -\findex{Color.filter} -\begin{verbatim} - tint *= double c; // multiply channels by c, rebuild - tint.invert(); // (r, g, b) -> (1-r, 1-g, 1-b) - tint.blend(Color col, double t); // (1-t)*tint + t*col - tint.superpose(col); // add channels, then clip to [0,1] - tint.alpha(double d); // set alpha channel to clip(d) - - tint.filter(col); // return min density in each channel -\end{verbatim} -Except for \code{filter}, these operators modify their object. -\code{filter} simulates the effect of viewing \code{col} -through a transparent sheet of \code{tint}, and returns a new -\code{Color} object having the same model as \code{tint} without -modifying \code{tint} itself. - - -\section{Scene Attributes} - -Objects in a scene sit in 3-dimensional space. A \emph{camera} -maps objects to the \emph{active screen}. The active \code{screen} -may, in turn crop its contents. Each drawing command creates an -object, ``photographs'' it, and adds the image to the active -\code{screen}. This section describes the \code{Camera} and -\code{screen} classes and a few associated concepts. - - -\subsection{Angular Mode} -\index{Angle units} - -By default, angles are measured in \code{radian}s. Two other angular -modes are available: \code{degrees}~and \code{revolutions}. The -angular mode is set with a named command, \code{radians()}, -\code{degrees()}, or \code{revolutions()}. The current angular mode -affects all trigonometric functions and operations. - - -\subsection{The Camera} -\index{Camera|(emph} -\index{Screen|(} - -Three-dimensional scenes are drawn on flat paper by applying a -mathematical transformation. By default, \ePiX\ uses \emph{point -projection}, the technique used by art students when they trace on a -window with grease pencil, Figure~\ref{fig:camera}. - -\begin{figure}[hbt] - \begin{center} - \input{camera.eepic} - \end{center} - \vspace*{-0.25in} - \caption{Point projection.} - \label{fig:camera} -\end{figure} - -\index{Camera!viewpoint} -\index{Viewpoint} -\ePiX\ depicts a Cartesian world by projecting mathematically to a -screen plane, then affinely scaling to a printed page. The camera, -which maps the world to the screen, consists of a \emph{body} (data -that determines the position and orientation of the camera), a -\emph{lens} (the actual mapping to the screen plane), and a -\emph{filter} (a color through which the scene is viewed). - - -\subsubsection*{Body} - -The camera's spatial orientation is described by a triple of mutually -perpendicular unit vectors. In memory of happy days at the beach, -these vectors are called \emph{sea}, \emph{sky}, and~\emph{eye}. The -screen plane is parallel to the sea-sky plane; the sea vector points -horizontally to the right, sky points vertically upward. The eye is -their cross product, which points directly at the viewer. - -The sea-sky-eye basis is located at the \emph{viewpoint}, the camera's -spatial location. The \emph{target}, the origin of the screen plane, -lies on the line through the viewpoint in the direction opposite the -eye vector. The distance from the viewpoint to the target is the -\emph{range}. The \emph{camera sphere} is centered at the viewpoint -and passes through the target. The orientation, viewpoint, target, -and range completely (and redundantly) determine the camera's -geometric situation in the world. - - -\subsubsection*{The Lens} -\index{Camera!lens} - -A \emph{lens} maps the world to the screen. \ePiX\ comes with four -lenses: \emph{shadow} (the default), \emph{orthogonal}, -\emph{fisheye}, and \emph{bubble}. Each lens simulates the appearance -of world objects as seen by an observer at the viewpoint. The shadow -lens is point projection from the viewpoint to the screen plane. The -orthogonal lens projects from infinite distance. Each of the other -lenses performs radial projection to the camera sphere, then maps the -sphere to the screen plane; the fisheye lens does orthogonal -projection (so the entire image lies inside the disk centered at the -target whose radius is the range) while the bubble lens does -stereographic projection from the target's antipode. -\index{Screen|)} - - -\index{Camera!manipulation|(} -An input file normally uses a single camera, so a global object named -\code{camera} is defined automatically. At the start of a figure, the -\code{camera} looks down on the \teximath{(x_1,x_2)}-plane from a -distant point on the \teximath{x_3}-axis. The resulting view, -essentially projection along the axis, is suitable for 2-dimensional -figures. - -The \code{camera} is manipulated similarly to a real camera: -\findex{Camera.at} -\findex{Camera.look\_at} -\findex{Camera.range} -\findex{Camera.focus} -\findex{Camera.tilt} -\findex{Camera.pan} -\findex{Camera.roll} -\findex{Camera.clip\_range} -\begin{verbatim} - camera.at(P posn); // set viewpoint to posn - camera.look_at(P targ); // set target to targ - camera.range(double dist); // fix target, move viewpoint - camera.focus(double dist); // fix viewpoint, move target - camera.tilt(double angle); // rotate about the sea axis - camera.pan(double angle); // rotate about the sky axis - camera.roll(double angle); // rotate about the eye axis - camera.clip_range(dist); // cull scenery closer than dist -\end{verbatim} -Explicitly setting the viewpoint or target makes the sky vector -parallel to the projection of the \teximath{x_3}~axis when possible; -otherwise the \teximath{x_2}-axis is used. Setting the range or focus -moves the \code{camera} parallel along the eye line. Each command -re-sizes the image; note that increasing the focus \emph{enlarges} the -image. The three rotation operations fix the viewpoint, but only roll -fixes the target. - - -\subsubsection*{Filtering and Color Separation} -\index{Color!separation} -\index{Camera!color separation} - -The \code{camera} has a \emph{filter} through which all scene -\code{Color}s pass. For uniformity, the filter should only be set at -the start of the file body, before any visible elements have been -placed in the scene. The filter has two primary uses---model -conversion and color separation---but can also be used for special -effects. - -There is a \code{Neutral} color, for which filtering has no effect at -all. The \code{camera}'s default filter is \code{Neutral}. In -addition, each color model has a \emph{neutral} representative, -\code{RGB\_Neutral}, etc. Passing \code{Color}s through a neutral -filter preserves their appearance but converts them to the neutral -\code{Color}'s model. - -Filtering can be used to ``split'' a \code{Color} into primary -constituents. For \code{RGB} channels, the primaries themselves are -suitable filters. For \code{CMYK} channels, there are special -\emph{process} filters, named \verb+C_Process+, etc. -\begin{verbatim} - camera.filter(CMY_Neutral()); // convert all colors to CMY - camera.filter(Gray_Neutral()); // black and white photography - camera.filter(Green()); // the green channel - camera.filter(M_Process()); // the magenta channel - camera.filter(Red(1.4)); // la vie en rose? -\end{verbatim} -\index{Camera!manipulation of|)} -\index{Camera|)} - - -\subsection{Clipping} - -\index{Clipping|(} - -Two operations handle elements lying far from the target. -\emph{Cropping} culls elements based on their screen location, and is -described later. \emph{Clipping} removes objects whose spatial -location lies outside the ``clip region''. - -Initially, the clip region is a very large box centered at the -origin. Commands are provided to resize this box, keeping the faces -parallel to coordinate planes. -\findex{clip\_box} -\findex{clip\_to} -\begin{verbatim} - clip_box(P pt1, P pt2); // opposite corners - clip_box(P pt); // opposite corners pt and -pt - clip_to (P pt); // pt and P(0,0,0) - clip_box(); // very large box -\end{verbatim} -Additional ``clippers'' may be added manually. Individual clipping -planes are specified by a point and inward-pointing normal vector. -Parallel planes cutting a ``slice'' or ``slab'' are described by a -location, direction, and a distance. The location lies halfway between -the clipping planes, and the planes' normals point toward the location. -\findex{clip\_face} -\findex{clip\_slice} -\findex{clip\_restore} -\begin{verbatim} - clip_face(P loc, P perp); // perp points inward - clip_slice(loc, perp); // very close parallel planes - clip_slice(loc, perp, dist); // planes separated by dist - clip_restore(); // remove manually-added clip planes -\end{verbatim} -Like \code{clip\_restore}, the \code{clip\_box} and \code{clip\_to} -commands remove all user-specified half spaces. -\index{Clipping|)} - - -\subsection{Screens and Page Layout} -\index{Screen|(} -\index{Screen!active} -\index{Layout} - -By default, drawing occurs in the Cartesian coordinate system of the -\code{canvas}. However, insets and subfigures are most naturally -composed in ``local'' coordinates, then placed into their final -location as a unit, a process called \emph{layout}. \ePiX\ implements -layout with the \code{screen} class. - - -\subsubsection*{Screens} -\index{Bounding box} - -A \code{screen} is a Cartesian plane containing a distinguished -coordinate rectangle, its \emph{bounding box}. The \code{canvas} of a -figure is a \code{screen}, as is the internal representation of the -printed page. At any point of a file body, some \code{screen} is -\emph{active}, or ``open for drawing''. A new \code{screen} is created -from a pair of opposite corners, but is not used until explicitly -activated. -\findex{activate} -\findex{deactivate} -\begin{verbatim} - screen subfig(P(a1,b1), P(a2,b2)); // [a1, a2] x [b1, b2] - activate(subfig); // open subfig for drawing - // commands to draw in subfig - deactivate(subfig); // re-activate the previous screen -\end{verbatim} - -The \code{canvas} is automatically drawn at the \code{end} of the -input file. The contents of other \code{screen}s must be incorporated -into the \code{canvas} explicitly with an \code{import}~or -\code{inset} command. \code{import} affinely scales the bounding box -of the ``child'' \code{screen} to the \code{canvas}. \code{inset} -specifies corners in the ``parent'' where the child is -placed. -\findex{import} -\findex{inset} -\begin{verbatim} - import(); // active screen to canvas - import(subfig); // subfig to canvas - inset(P sw, P ne); // active screen to specified rectangle - inset(subfig, sw, ne); // subfig to specified rectangle - inset(subfig); // inset to subfig's corners -\end{verbatim} - - -\subsubsection*{Extracting} - -The portion of a \code{screen} enclosed by a specified rectangle can -be \emph{extracted}. Each of the commands -\findex{extract} -\findex{canvas} -\begin{verbatim} - subfig.extract(P sw, P ne); - canvas().extract(P sw, P ne); -\end{verbatim} -returns the \code{screen} having stated corners and containing part of -\code{subfig} or the \code{canvas}, respectively. Elliptical and -diamond-shaped portions of a \code{screen} may be extracted. The -contents occupy the ellipse or diamond inscribed in the given -rectangle. -\findex{extract\_diamond} -\findex{extract\_ellipse} -\begin{verbatim} - subfig.extract_ellipse(sw, ne); - canvas().extract_diamond(sw, ne); -\end{verbatim} -The \code{screen} returned by \code{extract} (or its variants) may be -used just like a manually-constructed \code{screen}, for example to -construct a magnified inset. - - -\subsubsection*{True-Size Drawing} -\label{truesize} - -On occasion, it is necessary to draw at known page size, independently -of the unit length. For 2-dimensional drawing in the -\teximath{(x_1,x_2)}-plane with the \code{camera} in its default -location, the coordinates (horizontal, vertical, or both) of a -\code{screen} may be interpreted as true~pt offsets relative to a -specified point rather than as Cartesian coordinates. -\findex{inlay} -\findex{inlay\_horizontal} -\findex{inlay\_vertical} -\begin{verbatim} - inlay(subfig, P loc); - inlay_horizontal(subfig, loc); - inlay_vertical(subfig, loc); -\end{verbatim} -Each command maps the origin of \code{subfig} to the specified -location in the active \code{screen}. The first performs affine -scaling so that one Cartesian unit in \code{subfig} maps to one -true~pt on the page. The second and third commands perform this -scaling only in the named direction. - -\findex{pt\_to\_screen} -The \code{inlay} functions are suitable only for 2-dimensional -effects. For 3-dimensional true-size drawing, the function -\code{pt\_to\_screen} converts a true length of 1~pt into Cartesian -coordinates in the active \code{screen}. For example, the command -\code{line(P(0,0), P(pt\_to\_screen(12),0))} draws a line segment -12~pt long with its left endpoint at the Cartesian origin. True size -drawing is unusual in an input file, but has definite uses in library -code; \ePiX's right angle marker is a typical application. - -Either type of true-size drawing works as described when drawing in -the \code{canvas}, and \emph{only} when drawing in a \code{screen} -imported to the \code{canvas} at ``true Cartesian'' size (one -\code{screen} unit maps to one Cartesian unit in the \code{canvas}). -In other situations, the true size coordinate(s) will be scaled by -additional affine transformation(s). - - -\subsubsection*{Cropping and Decorations} - -\index{Cropping} -A \code{screen} has a \emph{crop mask}: rectangular (default), -elliptical, or diamond-shaped. If cropping is switched on in the -active \code{screen}, added elements are cropped to the crop mask. -For example, cropping by the default crop mask in the \code{canvas} -ensures the figure lies inside the printed region allocated by -\LaTeX. - -The \code{crop} commands below affect the active \code{screen} -only. Cropping is not a ``global'' attribute, but must be set or unset -explicitly for each \code{screen}. By default, cropping is switched -off. -\findex{crop} -\findex{crop\_ellipse} -\findex{crop\_diamond} -\findex{set\_crop} -\begin{verbatim} - set_crop(); // activate cropping - set_crop(false); // deactivate cropping - crop_diamond(); // <>-shaped mask, set crop state - crop_ellipse(); // etc... - crop(); // crop active screen's contents -\end{verbatim} -Normally the crop mask is inscribed in the \code{screen}'s bounding -box. The commands \code{crop\_diamond} and \code{crop\_ellipse} also -accept a pair of \code{P}~arguments, which are treated as corners of -the crop box. - -The active \code{screen} may be decorated with a \code{border} -(outline of specified color and line width) and \code{backing} (solid -fill color). The crop mask determines the shape of the \code{border} -and \code{backing}. -\findex{border} -\findex{backing} -\begin{verbatim} - border(color, len); - backing(color); -\end{verbatim} -Identically-named member functions can be applied to an arbitrary -\code{screen} whether or not it is active: -\begin{verbatim} - scr.crop_rectangle().backing(Blue(1.8)); - canvas().crop(); -\end{verbatim} - - -\subsubsection*{Affine Maps} -\index{Affine map} - -A \emph{plane affine map} has the form \teximath{T(x) = Ax+b} for some -invertible \teximath{2\times2} matrix~\teximath{A} and a constant -vector~\teximath{b}. \ePiX's \code{affine} class allows affine maps to -be built and applied to \code{screen}s' contents. - -An affine map is uniquely determined by the images of three -non-collinear points. The constructor returns the affine map sending -the points \teximath{(1,0)}, \teximath{(0,1)}, and~\teximath{(0,0)} to -\code{pt1}, \code{pt2}, and~\code{pt0}, respectively. -\findex{affine} -\begin{verbatim} - affine af(P pt1, P pt2, P pt0=P(0,0)); -\end{verbatim} -To emphasize, the arguments are locations, not displacements, and the -image of the origin comes last. There is also a \code{void} -constructor (taking no arguments) which returns the identity map. - -To facilitate construction of affine maps, an existing \code{affine} -may be post-composed with a variety of ``elementary'' affine -transformations. In the commands below, \code{th} is an angle (in -current units), \code{sc} is a non-zero \code{double}, and \code{ctr} -is a point fixed by the composing transformation. In each command, -\code{ctr} defaults to \teximath{(0,0)}. -\findex{shift} -\findex{rotate} -\findex{reflect} -\findex{h\_scale} -\findex{v\_scale} -\findex{scale} -\findex{h\_shear} -\findex{v\_shear} -\findex{postcomp} -\begin{verbatim} - affine af; // the identity map - af.shift(P arg); // translate by arg - af.rotate(th, [ctr]); // counterclockwise rotation about ctr - af.reflect(th, [ctr]); // reflect across line through ctr - - af.h_scale(sc, [ctr]); // horizontal scaling - af.v_scale(sc, [ctr]); // vertical scaling - af.scale(sc, [ctr]); // dilatation - - af.h_shear(sc, [ctr]); // shear preserving horizontals - af.v_shear(sc, [ctr]); // shear preserving verticals - - af.invert(); // the inverse - af.postcomp(affine f); // post-compose with f - af(f); // pre-compose, af not modified -\end{verbatim} -A non-invertible \code{affine} can be created \emph{only} by shearing -or scaling with an extremely large or extremely small argument, or by -supplying three collinear points to the constructor. Calling -\code{invert} on a non-invertible map merely issues a warning and -performs no action. - -An \code{affine} may be applied to a \code{screen}'s current contents. -The \code{screen} class has eight member functions (\code{shift} -through \code{shear}) with syntax identical to the affine map -functions. In addition, an arbitrary \code{affine} may be applied to a -\code{screen}: -\findex{apply} -\begin{verbatim} - scr.shift(arg); // shift scr's contents by arg; etc. - scr.apply(f); // apply f to scr's contents -\end{verbatim} -To apply a composition of several maps to a \code{screen}, it's best -to build an \code{affine} map by composition, then \code{apply} the -map. Composing \code{affine}s is cheap; \code{apply}ing an -\code{affine} is costly in proportion to the number of elements in the -\code{screen}. - -Applying an \code{affine} to a \code{screen} has no effect on the -bounding box, \code{border}, or \code{backing}, and may move elements -outside the bounding box even if cropping is active. To ensure a -\code{screen}'s contents lie inside the bounding box, \code{crop} the -\code{screen} \emph{after} \code{apply}ing the \code{affine}(s). - -The sample file \filename{inverse.xp} uses \code{affine} maps to -depict branches of inverse functions in one variable, -\filename{symmetry.xp} depicts the permutation group~\teximath{S_3} -by its action on a regular hexagon. -\index{Screen|)} - - -\section{Drawing Attributes} - -\ePiX\ maintains drawing states for filled regions, paths, and text -objects. - - -\subsection{Filled Regions} - -\index{Filling} -\index{Path|(} -\index{Path!filled} -Filling is either on or off. When filling is active, closed paths are -filled with the current \emph{fill color}. -\findex{fill} -\findex{nofill} -\begin{verbatim} - fill(); // turn filling on - fill(color); // turn filling on, specify color - nofill(); // turn filling off, same as fill(false); -\end{verbatim} - - -\subsection{Paths} - -Paths and borders of filled regions are drawn with two \emph{pen}s, -each described by color and line width. The \emph{line pen} draws -all path-like objects. The \emph{base pen} does nothing unless it is -wider then the line pen, in which case it draws an ``underlayer'' or -``border'' on the line pen. -\findex{pen} -\begin{verbatim} - pen(len); // set line pen width - pen(color); // set line color, keep width - pen(color, len); // set color and width -\end{verbatim} -As usual, \code{len} may be either a length string or a \code{double}, -interpreted as a width in~\code{pt}. There are \code{base} functions -with the same signatures and analogous meanings for the base pen. - -The line width can be set with named declarations; the optional -argument sets the line color: -\findex{plain} -\findex{bold} -\findex{bbold} -\begin{verbatim} - plain([color]); // 0.4pt - bold([color]); // 0.8pt - bbold([color]); // 1.6pt -\end{verbatim} - - -\subsubsection*{Path Style} - -\index{Path!style} -By default, path-like objects are drawn with solid lines. Dashed, -dotted, and free-form path style patterns are also available. (The -\code{base} underlayer is always solid.) The page length of a pattern -defaults to 12~pt, but can be set. -\findex{line\_style} -\findex{dash\_size} -\begin{verbatim} - line_style(string); - dash_size(len=12); -\end{verbatim} -The path style is set with a WYSIWYG string of dashes, spaces, and -periods, representing a pattern of dashes, gaps, and dots. In the -sample styles below, the repeating units have the same page size, -12~pt. -\begin{center} - \input{pathstyle.eepic} -\end{center} -For brevity and uniformity, named commands are provided. -\findex{solid} -\findex{dashed} -\findex{dotted} -\begin{verbatim} - solid(); "-" dashed(); "- -" dotted(); " . " -\end{verbatim} -A sequence of \teximath{n}~dashes, spaces, and dots corresponds to a -dash/dot pattern in an interval divided into \teximath{n}~subintervals -of equal length. If the \teximath{i}th character is a dash or space, -the \teximath{i}th~subinterval is drawn solid or empty, -respectively. If the \teximath{i}th~character is a period, a dot is -placed at the midpoint of the \teximath{i}th~subinterval. - -This pattern is applied to a path-like object as follows. The page -length of each edge is divided by the current \code{dash\_size} and -the ceiling (next largest integer) taken. This many copies of the -current path style are scaled onto the edge. The first and last -characters are adjacent in repeated units. - -There are three inequivalent ways to adjust the dash length/dot -spacing in a non-line path: Change the \code{dash\_length}, create a -path with a different number of points, or use a longer, repetitive -pattern. For best results, the style string should not be longer than -about a dozen characters. - -If you need several dashed/dotted line styles in multiple figures, -it's best to define a custom header instead of hard-coding line -styles. See Section~\ref{section:extensions} for guidance. -\index{Path|)} - - -\subsection{Text Objects} - -\index{Labels|(emph} -\index{Labels!alignment} - -Two types of textual element may appear in a file: \emph{labels} (text -boxes) and \emph{markers} (\LaTeX\ symbols). A marker occupies a box -of zero size, and is placed at a specified Cartesian location. A label -has typographical size, and is usually offset from its Cartesian -location. For placement, an \emph{alignment point} is attached to each -label, and Cartesian coordinates position the alignment point. - -\subsubsection*{Labels} - -A label is printed as a \LaTeX\ box. By default, the alignment point -is its reference point, the intersection of the left edge and the -baseline, which is used by \LaTeX\ to position the box on the -page:\input{basepoint.eepic} - -\index{Labels!alignment|(} -The alignment point may be \emph{offset} manually by a specified -number of \code{pt}. Additionally, a label's location with respect to -the alignment point can be chosen with an optional \LaTeX-style -alignment option. This scheme allows labels to be placed easily where -they will not overlap other parts of the figure, and ensures labels -stay properly positioned when the size or aspect ratio of a figure -changes. -\findex{label} -\begin{verbatim} - label(P posn, P offset, string msg, [align]); - label(posn, msg); -\end{verbatim} -The first two components of the \code{offset} argument are numbers -of~\code{pt} to shift the alignment point right and up. The optional -\code{align} argument may be one---or an appropriate pair---of -\code{t}, \code{b}, \code{r}, or~\code{l} (top, bottom, right, left), -or~\code{c} (center). These alignment options specify the position of -the label \emph{relative to the Cartesian location}~\code{posn}, -namely they work \emph{opposite} to the way they work in \LaTeX. -\begin{center} - \input{alignment_lr.eepic}\qquad - \input{alignment.eepic} -\end{center} -\index{Labels!alignment|)} - -The \code{msg} argument is usually a snippet of \LaTeX\ code enclosed -in double quotes. \CXX~treats ``\verb+\+'' as an escape character, so -a double backslash is needed in the source to get a single backslash -in the output. For example, -\begin{verbatim} - label(P(0,0), P(2,-1), "$\\rho = \\sin\\theta$", br); -\end{verbatim} -positions an alignment point \code{2pt}~right and \code{1pt}~below the -(Cartesian) origin, and typesets the equation -\teximath{\rho=\sin\theta} below and to the right. - -\index{Labels!rotated} -\index{Angle units} -Labels can be rotated; the (counterclockwise) angle is set in current -angle units with the command \code{label\_angle(theta)}. For example, -a rotation angle of~90 degrees prints labels along a vertical -axis. Though label rotation has legitimate uses, it can make labels -more difficult to read, defeating their purpose. Do not use rotated -labels merely because they are available. As a practical matter, if an -output file contains rotated labels, the enclosing document must use -the \code{rotating} package. \code{elaps} automatically loads this -package. - -\index{Affine map!action on labels} -An \code{affine} behaves moderately intelligently when acting on a -marker or label. The mapping is applied to the label's location, and -the ``linear part'' is used to adjust the offset and label angle. No -attempt is made to treat alignment. For best results, if a -\code{screen} will have an \code{affine} applied to it, label -positions should be fine-tuned only with offsets, not alignment -arguments. In all situations, the font itself is unchanged; no -attempt is made to print sheared, scaled, or reflected text. The -sample file \filename{inverse.xp} illustrates the effect of affine -maps on labels. - - -\subsubsection*{Fonts and Type Size} - -\index{Fonts} -\index{Labels!fonts in} -By default, the font in an \ePiX\ figure is that of the enclosing -document. The font size and face are changed with -``declaration-style'' commands such as -\findex{font\_size} -\findex{font\_face} -\begin{verbatim} -font_size("Large"); -font_face("sc"); -\end{verbatim} -The argument of \verb+font_size+ is a valid \LaTeX\ size. If no -argument is given, \code{normalsize} is understood. \verb+font_face+ -accepts a two-letter string, appended to the string ``\code{text}'' to -give a \LaTeX\ font declaration command (``\code{textsc}'' above). -Finer-grained control is accomplished by placing \LaTeX\ commands -into the label text. - - -\subsubsection*{Label Attributes and Masked Labels} - -Each label command has a corresponding ``mask'' version -(\code{masklabel}) that draws an opaque rectangle under the label -text. The mask size exceeds the label's size by an amount of -\emph{padding}, and the mask is itself surrounded by a rectangular -\emph{border}, of specified color and width. -\findex{label\_color} -\findex{label\_mask} -\findex{label\_pad} -\findex{label\_border} -\findex{no\_label\_border} -\begin{verbatim} - label_color(color); // set label text color - label_mask(color=White()); // set mask color - label_pad(string len); - - label_border(color, [len]); // set color (and line width) - label_border(len); // set line width only - no_label_border(); // turn off label borders -\end{verbatim} - - -\subsubsection*{Markers} - -\index{Marker types|(} -\ePiX's marker types, listed in Table~\ref{table:marker}, are obtained -with the command \verb+marker(P pt, <MARKER TYPE>);+ Several -``dot-like'' marker types are available by name: \input{dots.eepic} -\findex{spot} -\findex{dot} -\findex{ddot} -\findex{box} -\findex{bbox} -\findex{ring} -\findex{circ} -\begin{verbatim} - spot(P pt); dot(P pt); ddot(P pt); - --- box(P pt); bbox(P pt); - ring(P pt); circ(P pt); --- -\end{verbatim} -A \code{circ} is filled with the current \code{mask\_color}, and a -\code{ring} is ``hollow''. Each dot-like marker can also be called -with label syntax, generating a labeled marker with one command. -\begin{verbatim} - dot(P posn, offset=P(0,0), msg="", align=none); // etc. -\end{verbatim} - -\findex{dot\_size} -By default, \code{spot}~and \code{ring} are 4~pt in diameter; -\code{dot}, \code{box}, and~\code{circ} are 3~pt in diameter; -\code{ddot}~and \code{bbox} are 2~pt in diameter. At arbitrary -diameter, a \code{spot} is \teximath{4/3}~the diameter of a~\code{dot} -and a~\code{ddot} is \teximath{2/3}~the diameter. The command -\code{dot\_size(diam=3)} sets the diameter of a \code{dot}, and hence -the size of all dot-like markers. - -\begin{table}[tb] - \begin{center} - \input{marker.eepic} - \end{center} - \caption{\ePiX's \code{marker} types.} - \label{table:marker} -\end{table} -\index{Marker types|)} - - - -\subsubsection*{Reminders} - -When constructing and placing a label, -\begin{itemize} -\item Offsets are specified in \code{pt} (true length), not Cartesian - units: A label's location relative to its alignment point should not - depend on the logical or printed size of the figure. - -\item The label text is enclosed in double quotes (the single - character~\code{"}), and contains the \LaTeX\ code to generate the - label. Backslashes are doubled. - \index{Labels!backslash in} - \index{Labels!in double quotes} -\end{itemize} -\index{Labels|)} - - -\subsection{Color Declarations} - -Old-style color declarations set the fill color, line color, and -text color. -\findex{rgb} -\findex{cmyk} -\begin{verbatim} - rgb(r, g, b); cmyk(c, m, y, k); - rgb(P); cmyk(P); // for function-controlled colors - red(d); // similarly for other primaries -\end{verbatim} -\index{Color|)} - - -\section{Creating and Drawing Objects} - -Scene elements include geometric objects, coordinate grids, axis -labels, and function plots. A few commands create an object (a point, -line segment, circle, sphere, or plane) that can be used in subsequent -computations, but most drawing commands automatically create, draw, -and discard objects. - - -\subsection{Geometric Data Structures} - -\index{Point|(} -The simplest object in the world, and by far the most common named -data structure, is~\code{P}, an ordered triple of real numbers -(double-precision floats). The function~\code{P(x1,x2,x3)} creates the -point~\teximath{(x_1,x_2,x_3)}. If only two arguments are provided, -\teximath{x_3=0} by default. This convention allows \ePiX\ to treat -2-~and 3-dimensional figures uniformly. The standard basis is -available: \code{E\_1=P(1,0,0)}, etc. - -Depending on context, a \code{P} may represent either a -\emph{location} (point) or a \emph{displacement} (vector). Almost all -\ePiX\ functions treat a~\code{P} as a point. However, algebraic -operators and commands that plot vector fields treat \code{P} -arguments as displacements. - -Polar, cylindrical, and spherical coordinate \code{P}~constructors are -sensitive to the current angular mode. -\index{Angular mode} -\findex{P} -\findex{polar} -\findex{cis} -\findex{cyl} -\findex{sph} -\begin{verbatim} - P pt=polar(r,t); // (r*Cos(t), r*Sin(t), 0) - P pt=cis(t); // (Cos(t), Sin(t), 0) = polar(1, t) - P pt=cyl(r,t,z); // (r*Cos(t), r*Sin(t), z) - P pt=sph(r,t,phi); // polar(r,t)*Cos(phi) + (0,0,r*Sin(phi)) -\end{verbatim} - -Algebraic operations---addition/subtraction, scalar multiplication; -scalar, cross, and componentwise products; orthogonalization---can -be performed on~\code{P}s. In compound expressions, the binary -operators below should be enclosed in parentheses, and scalars must be -collected at left, \code{P}s at right. -\findex{P.x1} -\findex{P.x2} -\findex{P.x3} -\findex{J} -\begin{verbatim} - double u=pt.x1(); // first coordinate of pt, etc. - P(a,b,c)|P(x,y,z); // scalar product, ax+by+cz - P(a,b,c)&P(x,y,z); // componentwise product (ax, by, cz) - P(a,b,c)*P(x,y,z); // cross product (bz-cy, cx-az, ay-bx) - J(p); // quarter turn about the x3-axis - p%q; // orthogonalization, p (mod q) -\end{verbatim} -Explicitly, \code{p\%q}~is the unique vector \code{p+k*q} -perpendicular to~\code{q}. - -\code{P}~operations express mathematical relationships, and therefore -imbue a figure with logical structure, making the input file easier to -read, modify, and maintain. Commonly, a file preamble will define a -few named points with hard-coded coordinates, then define additional -points of interest using \code{P}~operators. -\index{Point|)} - - -\subsubsection*{Other Geometric Classes} - -In addition to~\code{P}, objects of type \code{Circle}, \code{Plane}, -\code{Segment}, and \code{Sphere} can be used for Euclidean geometry -constructions. Simple affine operations are supplied for each type, as -is a \code{draw()} function, which represents the object as a path in -the screen. -\findex{shift} -\findex{move\_to} -\findex{scale} -\findex{draw} -\begin{verbatim} - obj.shift(P arg); // translate by arg - obj.move_to(P arg); // move center to arg - obj.scale(double c); // scale about center by c - obj.draw(); -\end{verbatim} -A \code{Segment}'s ``center'' is its midpoint. A \code{Plane} has no -center; \code{move\_to} translates the \code{Plane} to pass through -\code{arg}, and \code{scale} has no effect. - -\index{Circle} -A \code{Circle} data structure consists of a center, radius, and a -perpendicular unit vector. Three constructors are provided: -\findex{Circle} -\begin{verbatim} - Circle(center=P(0,0,0), double rad=1, normal=E_3); - Circle(P center, P point); - Circle(P p1, P p2, P p3); -\end{verbatim} -The second constructor creates the \code{Circle} parallel to the -\teximath{(x_1,x_2)}~plane, with given center, and radius equal to the distance -between the arguments. (A warning is printed if the second argument -does not lie on the circle, namely, if the arguments do not lie in a -plane parallel to the \teximath{(x_1,x_2)}~plane.) The third returns the -\code{Circle} passing through the given points; the points must not be -collinear. - -The data defining a \code{Circle} are recovered with member functions -named \code{center()}, \code{radius()}, and \code{perp()}. - -\index{Plane} -\findex{Plane} -A \code{Plane} is specified by a point and normal vector, or by three -non-collinear points. The \code{draw()} function clips the plane and -draws the resulting polygon. Unless the clip box has been set -manually, the clipped polygon's vertices will have large coordinates. - -\index{Segment} -\findex{Segment} -A \code{Segment} is constructed from its endpoints. The member -function \code{midpoint()} returns the center. - -\index{Sphere} -\findex{Sphere} -A \code{Sphere} is specified by a point and a radius---by default the -origin and unity, or by the center and a point on the sphere. Member -functions \code{center()}~and \code{radius()} return the defining -data. Capabilities specific to geography and spherical geometry are -described below, pp.~\pageref{non-eucl}ff. - -The \code{draw()} function of a \code{Sphere} draws the horizon -visible from the current viewpoint. While this horizon is a circle in -object space, its image in the screen is generally an ellipse. -Antipodal points are not generally mapped to points symmetrically -placed with respect to the center of this ellipse. These effects are -most pronounced when the viewpoint is close to the \code{Sphere} and -the center is not close to the \code{target}. - - -\subsubsection*{Intersection} - -\index{Intersection} - -To facilitate geometric computation, \ePiX's \code{Circle}, -\code{Plane}, \code{Segment}, and \code{Sphere} classes can be -intersected with the \code{*}~operator. -\texicomment -Table~\ref{table:intersect} -lists the return types for each pair of arguments. Intersection is -commutative, so only the top half of the table is shown. For purposes -of intersection, a \code{Segment} is extended into a line. -The sample file \filename{pascal.xp} gives typical applications of -objects and intersection. -\findex{intersection} -\begin{table}[hbt] -\begin{center} - \begin{tabular}{c|cccc} - \code{*} & - \code{Segment} & \code{Circle} & \code{Plane} & \code{Sphere} \\ - \hline - \code{Segment} & \code{P} & \code{Segment} & \code{P} & \code{Segment} \\ - \code{Circle} & & \code{Segment} & \code{Segment} & \code{Segment} \\ - \code{Plane} & & & \code{Segment} & \code{Circle} \\ - \code{Sphere} & & & & \code{Circle} - \end{tabular} - \caption{Object intersection types.} - \label{table:intersect} -\end{center} -\end{table} -\texicommentend - -A \code{Circle} has a center, radius, and unit normal; a \code{Plane} -has a distinguished point and unit normal; a \code{Segment} has two -endpoints; a \code{Sphere} has a center and radius. An object is -\emph{malformed} if these conditions are not met. The constructors -return well-formed objects with two exceptions: \code{Circle} and -\code{Plane} create malformed objects if called with three collinear -points. The operator~\code{*} returns a malformed object if either -argument is malformed, or if the operands are disjoint, tangent, or -coincident. Malformedness is benign: Calling \code{draw()} on a -malformed object does nothing. - - -\subsubsection*{Orthonormal Frames} - -A \code{frame} comprises three mutually perpendicular unit -vectors. The constructor takes three vectors. The \code{frame}'s third -vector~\teximath{e_3} is positively proportional to~\code{v3}, the -second vector~\teximath{e_2} is positively proportional to -\code{v2\%v3}, and the first is the cross product, -\teximath{e_1=e_2\times e_3}. Thus, a \code{frame} is right-handed, -and does not depend on~\code{v1}. - -The elements of a \code{frame} are named \code{sea}, \code{sky}, and -\code{eye}, just as for the \code{camera}. A \code{frame} can be -rotated through an arbitrary angle about any of its elements. -\findex{frame} -\begin{verbatim} - frame(); // the standard basis {E_1, E_2, E_3} - frame fr(v1, v2, v3); // orthonormalize {v1, v2, v3} - fr.sea(); // the first element of fr, etc. - fr.rot1(theta); // rotate fr through theta about sea, etc. -\end{verbatim} - - -\subsection{Path-Like Elements} - -Basic path-like objects are drawn with named commands. Arguments of -polygon commands are endpoints/vertices. Except for \code{line}~and -\code{Line}, the following are subject to filling. -\findex{line} -\findex{Line} -\findex{triangle} -\findex{rect} -\findex{quad} -\findex{circle} -\begin{verbatim} - line(P p1, P p2, [double expand]); - Line(p1, p2); // draw line through p1, p2 (crop required) - triangle(P p1, P p2, P p3); - rect(P p1, P p2); - quad(P p1, P p2, P p3, P p4); // quadrilateral - circle(ctr=P(0,0,0), rad=1, normal=E_3); - circle(ctr, pt); - circle(pt1, pt2, pt3); -\end{verbatim} -The optional \code{line} argument is an expansion parameter: -\code{line(p1,p2,t);} draws a segment centered at the midpoint of -\code{p1}~and \code{p2}, with length scaled -by~\teximath{2^{t/100}}. (Setting \teximath{t=100} doubles the length, -while \teximath{t=-100} halves the length.) The arguments of -\code{rect()} must lie in a plane parallel to a coordinate plane. The -arguments to \code{circle} commands are the same as for \code{Circle} -constructors. - -Quadratic and cubic splines are described by their control points. A -list of~\code{P} is drawn as a ``natural'' spline (the \teximath{C^2} -piecewise cubic curve with vanishing second derivatives at the -endpoints); the number of points per cubic segment must be specified. -Circular and elliptical arcs are given by center, a basis, angular -range, and an optional number of intervals. -\findex{spline} -\findex{arc} -\findex{ellipse} -\begin{verbatim} - spline(P p1, P p2, P p3, [int n]); // quadratic - spline(P p1, P p2, P p3, P p4, [int n]); // cubic - spline(vector<P>, int n); // natural spline - - arc(P ctr, rad, t_min, t_max); // parallel to (x1,x2)-plane - ellipse(P ctr, P v1, P v2); // in plane spanned by v1, v2 - ellipse(P ctr, P v1, P v2, t_min, t_max, [int n]); -\end{verbatim} -\texicomment -Mathematically, these commands draw parametric paths -\begin{align*} - \text{Spline:}\quad&(1-t)^2 p_1 + 2(1-t)t p_2 + t^2 p_3, - && t\in[0,1] \\ - \text{Spline:}\quad&(1-t)^3 p_1 + 3(1-t)^2t p_2 + 3(1-t)t^2 p_3 + t^3p_4, - && t\in[0,1] \\ - \text{Arc:}\quad&\mathrm{ctr} + (\cos t)(\mathrm{rad},0,0) - + (\sin t)(0,\mathrm{rad},0), - && t\in[t_\mathrm{min}, t_\mathrm{max}] \\ - \text{Ellipse:}\quad&\mathrm{ctr} + (\cos t)v_1 + (\sin t)v_2, - && t\in[t_\mathrm{min}, t_\mathrm{max}]. -\end{align*} -\texicommentend -If parameter bounds are omitted in an \code{ellipse} command, the -entire ellipse is drawn. When the angular range subtends one or more -full turns in an \code{arc}~or \code{ellipse} the curve is subject to -filling. - -Commands for planar (half-)ellipses remain from \ePiX's early days: -\findex{ellipse} -\findex{ellipse\_left} -\findex{ellipse\_right} -\findex{ellipse\_top} -\findex{ellipse\_bottom} -\begin{verbatim} - ellipse(P ctr, P radius); - ellipse_left(P ctr, P radius); - ellipse_right(P ctr, P radius); - ellipse_top(P ctr, P radius); - ellipse_bottom(P ctr, P radius); -\end{verbatim} -If \code{radius} is \code{P(a,b)}, these commands draw all or half of -the ellipse with given center in the \teximath{(x_1,x_2)} plane, axes -parallel to the coordinate axes, and axis lengths \teximath{2a}~and -\teximath{2b}. - -Two commands are available to mark off right angles or a subtended -angle. Each accepts a spatial location and two non-zero directions, -and draws a scene element in the plane spanned by the vectors. -\findex{right\_angle} -\findex{arc\_measure} -\begin{verbatim} - right_angle(P loc, P v1, P v2, scale=8); - arc_measure(P loc, P v1, P v2, scale=8); - arc_measure(P loc, P v1, P v2, offset, text, align, scale=8); -\end{verbatim} -The \code{right\_angle} command does not check its arguments for -perpendicularity. The \code{arc\_measure} commands mark the -\emph{small} angle subtended by the directions; the label form places -a label at the midpoint of the arc. The (optional) \code{scale} -argument is the true size in~\code{pt} of the marker. - - -\subsubsection*{Recursive Fractal Curves} - -\index{Path!fractal} -Consider a path made up of equal-length segments that can point at any -angle of the form~\teximath{2\pi k/n} radians, for \teximath{0\leq -k<n}, like spokes on a wheel. A path is specified by a finite sequence -of integers, taken modulo~\teximath{n}. For example, if -\teximath{n=6}, then the sequence \teximath{0, 1, -1, 0} corresponds -to the ASCII path \verb+_/\_+. \ePiX's fractal approximation starts -with such a ``seed'' then recursively (up to a specified depth) -replaces each segment with a scaled and rotated copy of the seed, -Figure~\ref{fig:fractal}. The seed above generates the standard -von~Koch snowflake fractal. In code: -\findex{fractal} -\begin{verbatim} - const int seed[] = {6, 4, 0, 1, -1, 0}; - fractal(P(a,b), P(c,d), depth, seed); -\end{verbatim} -The first entry of \code{seed[]} (here~6) is the number of -``spokes''~\teximath{n}, the second~(4) is the number of terms in the -seed, and the remaining entries are the seed proper. The final path -joins \teximath{(a,b)}~to \teximath{(c,d)}. The number of segments in -the final path grows exponentially in the depth, so depths larger than -5~or 6 are likely to exceed the capabilities of \LaTeX\ and/or -PostScript. -\begin{figure}[hbt] - \begin{center} - \input{koch.eepic} - \end{center} - \caption{Successive iterations of \{\code{4,8,0,1,0,3,3,0,1,0}\}} - \label{fig:fractal} -\end{figure} - - -\subsubsection*{Arrows} - -\index{Arrow} -Line segments, splines, and arcs can be drawn with arrowheads at one -end. In profile, an arrowhead's width is \code{3pt}, and its height -is 5.5~times the width. The actual printed height depends on the -head's orientation with respect to the camera. By default, an -arrowhead is a filled triangle. The shape and size are adjusted with -declarations: -\findex{arrow\_width} -\findex{arrow\_ratio} -\findex{arrow\_inset} -\begin{verbatim} - arrow_width(w=3); // width in pt - arrow_ratio(r=5.5); // height-to-width - arrow_inset(c=0); // base indent as frac of ht -\end{verbatim} -\input{arrow.eepic} Inset\teximath{=0}\qquad -\input{arrow25.eepic} Inset\teximath{=0.25}\qquad -\input{arrow50.eepic} Inset\teximath{=0.5} \\ -The \code{inset} must be between \teximath{-1}~and \teximath{1}. Each -\code{arrow} command accepts an optional \code{scale} argument, which -scales the arrowhead. -\findex{arrow} -\begin{verbatim} - arrow(P tail, P tip, [scale]); - arrow(P p1, P p2, P p3, [scale]); // spline arrows - arrow(P p1, P p2, P p3, P p4, [scale]); - arrow(P ctr, P v1, P v2, t_min, t_max, [scale]); // ellipse -\end{verbatim} -A few ``special-purpose'' commands are supplied: -\findex{dart} -\findex{aarrow} -\findex{arc\_arrow} -\begin{verbatim} - dart (P p1, P p2); // same as arrow(p1, p2, 0.5); - aarrow(P p1, P p2); // double-headed arrow <---> - arc_arrow(ctr, rad, t_min, t_max, [scale]); -\end{verbatim} -If an \code{arc\_arrow} is too short, nothing is drawn. - - -\subsection{Coordinate Axes and Labels} - -\index{Labels!axis|(} -\index{Axes!labeling} -\index{Axes|(} -\ePiX\ provides an \code{axis} class for coordinate axes. Labels are -generated automatically in a variety of styles: decimal, scientific -notation, fraction, and trigonometric fraction. Logarithmic axes and -labels are available. Axis and labeling commands from Version~1.0 have -been retained. - - -\subsubsection*{The \code{axis} Class} - -An \code{axis} consists of a line segment divided into a specified -number of equal-length subintervals by ``major'' (long) tick marks. -Each subinterval may be divided further by ``minor'' (short) tick -marks. Minor ticks may be equally-spaced (``Cartesian'') or -logarithmically placed. Finally, a label is written at each major tick -mark with specified offset and alignment. Labels are generated -automatically from the endpoints, so the line should be parallel to a -coordinate axis. Label attributes (masking, borders, font size and -face, rotation angle) are determined by the current label style, not -by the \code{axis}. - -The command -\findex{axis} -\begin{verbatim} - axis(P tail, P head, int n, P offset=P(0,0), [align = none]); -\end{verbatim} -creates an axis joining \code{tail} to \code{head}, divided into -\code{n}~segments of equal length, with a major tick mark and label at -each division point and endpoint. The \code{offset} and \code{align} -arguments have the same meaning as for ordinary labels. - -The number and length of minor ticks, and the alignment of ticks, are -controlled with member functions: -\findex{axis.subdivide} -\findex{axis.tick\_ratio} -\findex{axis.align} -\begin{verbatim} - axis Ax(P(a,c), P(b,c), n); - Ax.subdivide(n); // put n-1 minor ticks in each axis segment - Ax.tick_ratio(r); // minor length = r*major length - Ax.align(AL=c); // align all ticks; AL = t, b, l, r, or c -\end{verbatim} -By default, major ticks are \code{6pt}~long and twice the length of -minor ticks. The global declaration \code{tick\_size(len)} sets the -major length, subject to ``reasonable stylistic limits''. For visual -consistency, tick lengths should not be changed casually. - -\index{Axes!labeling} -Labels on an \code{axis} may be drawn in several styles, selected with -member functions: -\findex{axis.dec} -\findex{axis.frac} -\findex{axis.trig} -\findex{axis.sci} -\findex{axis.unmark} -\findex{axis.precision} -\findex{axis.align\_labels} -\begin{verbatim} - Ax.dec(); // decimals (default) - Ax.frac(); // fractions, e.g. 0.5 -> \frac{1}{2} - Ax.trig(); // fractional multiples of \pi - Ax.sci(); // scientific notation, k\times base^N - - Ax.unmark(double); // remove label at selected location - Ax.precision(p); // set number of digits for decimal labels - Ax.align_labels(AL); // re-align labels -\end{verbatim} -Arbitrary textual labels depending on one coordinate are obtained by -writing a \code{string}-valued function of~\code{double} and -``registering'' it: -\findex{axis.label\_rep} -\begin{verbatim} - // f represents x as a string in given precision and base - std::string f(double x, unsigned int prec, unsigned int base); - Ax.label_rep(f); -\end{verbatim} -For example, textual tags can be printed instead of numeric labels. - -By default, an \code{axis} is Cartesian. The member function -\code{log(int b=10)} converts an \code{axis} to ``log mode'' with -specified base; this affects both tick marks and labeling. If \code{b} -is at least~3, minor tick marks appropriate for a logarithmic axis -base~\code{b} are drawn. Second, labels are written in decimal or -scientific notation appropriately for a logarithmic axis; that is, -``\teximath{k\times b^N}'' (or its decimal value) is written at -location \teximath{N+\log_b k}. - -Minor ticks of a log \code{axis} may be labeled individually; again, -this is controlled with member functions: -\findex{axis.tag} -\findex{axis.tag235} -\findex{axis.tags} -\findex{axis.untag} -\begin{verbatim} - Ax.tag(d); // labels at N+log_b(d) - Ax.tag235(); // tag 2, 3, and 5 if b=10 - Ax.tags(); // tag 1, ..., b-1 - Ax.untag(); // remove all tags, including 1 - Ax.untag(double); // remove one tag, e.g. Ax.untag(9); -\end{verbatim} - -For convenience, an \code{axis} object along an edge of the active -\code{screen} can be created with a named command: -\findex{top\_axis} -\findex{bottom\_axis} -\findex{left\_axis} -\findex{right\_axis} -\begin{verbatim} - top_axis(n, offset, align); - bottom_axis(n, offset, align); - left_axis(n, offset, align); - right_axis(n, offset, align); -\end{verbatim} -The ticks automatically point into the bounding box. - -The functions above create objects or set \code{axis} attributes, but -write no output. Tick marks and labels can be printed separately, or -at once: -\findex{axis.draw} -\findex{axis.draw\_ticks} -\findex{axis.draw\_labels} -\begin{verbatim} - Ax.draw(); // axis, tick marks, and labels - Ax.draw_ticks(); // axis and ticks only - Ax.draw_labels(); -\end{verbatim} - - -\subsubsection*{Other Axis-Drawing Commands} - -\index{Axes!logarithmic} -\ePiX\ formerly supplied commands for drawing simple axes and their -labels. These commands have been kept for compatibility. Horizontal -axes are generated with -\findex{h\_axis} -\findex{h\_log\_axis} -\findex{v\_axis} -\findex{v\_log\_axis} -\begin{verbatim} - h_axis(p1, p2, n, align=c); // n subintervals (n+1 ticks) - h_log_axis(p1, p2, n, align=c, base=10); -\end{verbatim} -For vertical axes, use \code{v\_axis}. The style of tick mark is -appropriate for an axis of the given type. Horizontal axis tick marks -may be aligned \code{t}~(above the axis) or~\code{b} -(below). Similarly, vertical axis ticks may be aligned \code{r}~or -\code{l}. - -The endpoint arguments of a coordinate axis may be omitted, in which -case they default to \teximath{p_1=(x_\mathrm{min},0)} and -\teximath{p_2=(x_\mathrm{max},0)} for a horizontal axis, or to -\teximath{p_1=(0,y_\mathrm{min})} and -\teximath{p_2=(0,y_\mathrm{max})} for a vertical axis. If the bounding -box has integer width and/or height, omitting the number of points -draws tick marks one unit apart. - -Labels for a horizontal Cartesian or logarithmic axis are generated -with the commands -\findex{h\_axis\_labels} -\findex{h\_axis\_masklabels} -\findex{h\_axis\_log\_labels} -\findex{h\_axis\_log\_masklabels} -\findex{v\_axis\_labels} -\findex{v\_axis\_masklabels} -\findex{v\_axis\_log\_labels} -\findex{v\_axis\_log\_masklabels} -\begin{verbatim} - h_axis_labels(P p1, P p2, int n, P offset, [align]); - h_axis_masklabels(p1, p2, n, offset, [align]); - h_axis_log_labels(p1, p2, [n], offset, [align], base=10); - h_axis_log_masklabels(p1, p2, [n], offset, [align], base=10); -\end{verbatim} -Labels for a vertical axis are generated with \code{v\_axis\_labels}, -etc. The labels are automatically generated to match their horizontal -location. The first puts \teximath{(n+1)}~evenly-spaced labels on the segment -joining \code{p1}~and \code{p2}. As with ordinary labels, the -\code{offset} is in~\code{pt}, and the optional \LaTeX-style alignment -option positions the labels using their corners. The second command -draws masked labels according to the current label masking -attributes. The third writes labels in exponential notation, using the -Cartesian coordinate as exponent. - -As for coordinate axes, the initial and final points may be omitted in -an \code{axis\_[mask]labels} command, with the same defaults. The -\code{offset} and number of labels must always be specified. - - -\subsubsection*{Broken Axes} -\index{Axes!broken} - -Broken axes are best drawn using page layout, especially if axis -labels are to be drawn. To accomplish the task, create a screen for -each piece of axis, using appropriate Cartesian coordinates for the -corners, then \code{inset} the screens so the axis pieces are nearly -end to end. A zig-zag glyph signifies the break: -\findex{axis\_break} -\begin{verbatim} - axis_break(P, P, scale=12); -\end{verbatim} -The \code{P} arguments are the screen coordinates of the ends to be -joined; the optional third argument is the true height and width -in~\code{pt} of the glyph. The sample file \filename{coord\_tricks.xp} -uses layout and axis breaks. - - -\subsubsection*{Coordinate Grids} - -Cartesian grids fill a coordinate rectangle, and have a specified -number of lines in each direction. A polar grid has specified radius, -and numbers of rings and sectors. -\findex{grid} -\findex{polar\_grid} -\begin{verbatim} - grid(n1, n2); // fills the bounding box - grid(p1, p2, n1, n2); // fills the box with corners p1, p2 - polar_grid(r, n1, n2); -\end{verbatim} - -Log and semi-log grids are drawn with analogous syntax: -\findex{log\_grid} -\findex{log1\_grid} -\findex{log2\_grid} -\begin{verbatim} - log_grid (p1, p2, n1, n2, [base1], [base2]); // log-log - log1_grid(p1, p2, n1, n2, [base]); // log-lin - log2_grid(p1, p2, n1, n2, [base]); // lin-log -\end{verbatim} -The~\teximath{n_i} arguments dictate the number of squares, namely the number -of orders of magnitude spanned in the logarithmic direction(s). The -(optional) base arguments default to~10, and control the number of -lines drawn per order of magnitude. As with Cartesian grids, the -corners are optional; if omitted, the grid fills the bounding box. - -\index{Graph paper} -Graph paper may be created by superimposing grids: -\texicomment -\begin{center} - \begin{minipage}[b]{2.5in} - \begin{footnotesize} -\texicommentend -\findex{pen} -\findex{grid} -\begin{verbatim} - pen(0.25); - grid(10*xsize(), 10*ysize()); - pen(0.5); - grid(2*xsize(), 2*ysize()); - pen(1); - grid(xsize(), ysize()); -\end{verbatim} -\texicomment - \end{footnotesize} - \end{minipage} - \qquad - \input{graphpaper.eepic} -\end{center} -\index{Axes|)} -\texicommentend - -\subsection{The Path Class} - -\index{Path!class} -A \code{path} data structure is an ordered list of points that can be -cropped, clipped, mapped, concatenated, and drawn. The first four -constructors mirror polygon-drawing commands above. Function graphs -and parametric paths are built from a real- or \code{P}-valued -function~\code{f} of one variable. -\findex{path} -\begin{verbatim} - path(p1, p2, expand=0); // line (endpoints) - path(p1, p2, p3, [n]); // quadratic spline - path(p1, p2, p3, p4, [n]); // cubic spline - path(p1, v1, v2, t_min, t_max, [n]); // ellipse - path(f, t_min, t_max, [n]); -\end{verbatim} - -The member function \code{pt()} accepts a~\code{P} or three (or two) -doubles and appends the specified point to a \code{path}. This -snippet creates a regular \teximath{n}-gon: -\begin{verbatim} - path ngon; // declare new path - for (int i=0; i<=n; ++i) - ngon.pt(cis(i*full_turn()/n)); // works in all angle modes -\end{verbatim} -Compound paths may be built by concatenation. If \code{path1}~and -\code{path2} share an endpoint, the commands -\begin{verbatim} - path1 += path2; - path1 -= path2; -\end{verbatim} -replace \code{path1} with the result of traversing \code{path1} -``forward'', then following \code{path2} in the forward or reverse -direction (respectively). For expected results, the first -(or last) point on~\code{path2} should be the last point -of~\code{path1}. The notation suggests 1-dimensional homology -chains. The sample file \filename{contour.xp} illustrates path -creation and manipulation. - -A \code{path} is a data structure, and must be drawn explicitly to -create visible output. By default a \code{path} is not a closed loop -(even if the first and last points are the same), and is not filled -when drawn. Member functions perform these tasks. Continuing the -\teximath{n}-gon snippet above, -\findex{path.close} -\findex{path.fill} -\findex{path.draw} -\begin{verbatim} - ngon.close(); // mark path as closed - ngon.fill(); // draw filled region if filling is active - ngon.draw(); // print to the screen -\end{verbatim} -\code{path::close()} adds a closing edge if necessary. Once a -\code{path} is closed, no more points can be added. A closed path -clips and crops differently than an open \code{path} with the same -data. \code{path::fill()} has no effect on an unclosed \code{path}. - - -\subsection{Function Plotting} - -\index{Plotting|(} -The noun ``map'' refers to a \CXX\ function that accepts one or -more \code{double} arguments and returns a \code{double}~or -a~\code{P}. Mathematically, a map can be depicted in two ways: as a -graph (which retains information about the domain), or as a -parametrized curve or surface (which discards domain -information). \ePiX\ assumes that \code{double}-valued maps are -graphed and \code{P}-valued maps are drawn parametrically. Either sort -of depiction is called a ``plot''. \ePiX\ plots are either ``wire -mesh'', produced by a \code{plot} command, or ``shaded'', produced by -a \code{surface} command. - - -\subsubsection*{Basic Plotting} - -For the moment, ``function'' means ``function of one variable'' -(precisely, a \code{double}-valued function of a \code{double} -variable). A function graph depends on the domain and the number of -points to use. Each of the commands -\findex{plot} -\findex{polarplot} -\findex{shadeplot} -\begin{verbatim} - plot(f, t_min, t_max, n); - polarplot(f, t_min, t_max, n); - shadeplot(f, t_min, t_max, n); -\end{verbatim} -graphs the function~\code{f} on the interval \code{[t\_min, t\_max]} -by dividing the interval into \code{n}~subintervals of equal length. -The first gives a Cartesian plot, the second a polar plot with bounds -in current angular units, the third shades the region between the -graph and the horizontal axis. If two functions are given to -\code{shadeplot}, the region between their graphs is shaded. - - -\subsubsection*{Domains and Wiremesh Plots} - -\index{Domain|(} -An \ePiX\ \code{domain} is a coordinate box of dimension one, two, or -three, specified by a pair of opposite corners and two \emph{meshes} -(``coarse'' and ``fine'', respectively) which specify the amount of -data to be plotted. Plotting is explained in detail below. -\findex{domain} -\begin{verbatim} - // [a1,a2] x [b1,b2]: n1 x n2 rectangles, m1 x m2 intervals - domain R2(P(a1,b1), P(a2,b2), mesh(n1,n2), [mesh(m1,m2)]); - - // [a1,a2] x [b1,b2] x [c1,c2] divided analogously - domain R3(P(a1,b1,c1), P(a2,b2,c2), - mesh(n1,n2,n3), [mesh(m1,m2,m3)]); -\end{verbatim} -If unspecified, the fine mesh is the same as the coarse mesh. For -expected behavior, the coarse mesh should ``divide'' the fine mesh, in -that \teximath{m_i}~should be a (usually small) integer multiple -of~\teximath{n_i} for each~\teximath{i}. - -A \code{domain} may be \emph{resized} in any coordinate for which the -thickness is positive, and can be \emph{sliced} by setting one -variable to a constant. The result of slicing is a \code{domain} whose -dimension is one smaller than the original. Finally, -``\code{slices}'' operators return the list of \code{domain}s obtained -by setting one variable to evenly-spaced constants. By default, the -number of slices is specified by the coarse mesh. An optional argument -specifies the number of slices. This argument need not be related to -the coarse mesh. -\findex{domain.resize} -\findex{domain.slice} -\findex{domain.slices} -\begin{verbatim} - R2.resize2(a,b); // [a1,b1] x [a,b] - R2.slice1(t); // set x1 = t - R3.slices3([n]); // (n+1) domains with x3 = const -\end{verbatim} -\begin{center} - \input{slices.eepic} -\end{center} -\smallskip -When possible, resizing preserves grid square sizes. Generally, -though, integer truncation occurs: If \code{R=domain(P(0,0), P(1,1), -mesh(10,6))}, then \code{R.resize1(0,0.25)} is the rectangle -\teximath{[0,0.25]\times[0,1]} subdivided into \teximath{2\times6} -subrectangles, since \teximath{10\div4=2} in integer arithmetic. For -expected behavior, choose mesh sizes to avoid integer truncation. - - -The arguments of a \code{plot} command are a map, followed by either a -domain or its logical equivalent. -\findex{plot} -\begin{verbatim} - double f(double t) { return t*t; } - P F(double u, double v) { return P(u, v, exp(u)*Sin(v)); } - P G(double u, double v, double w) { return P(v*w, u*w, u*v); } - - plot(f, a, b, n); // f:[a,b] -> R, using n intervals - plot(F, R2); // graph of exp(u)*Sin(v) - plot(G, R3.slice2(0.5); // G: R^3 -> R^3 restricted to y=0.5 -\end{verbatim} -By (compiler-enforced) convention, \code{plot} commands involving a -\code{P}-valued map accept a \code{domain} argument, as in the second -and third commands above. To plot a \code{double}-valued function, by -contrast, supply the logical equivalent of a \code{domain}, usually -the endpoints and the number of intervals, as in the first \code{plot} -command above. - -Resizing and slicing allow a map~\code{F} to be plotted selectively -over parts of its domain. This can be used to emphasize parts of the -image, layer scene elements, patch surfaces together, and so forth. -Resize and slice(s) commands may be used directly in a \code{plot} -command: -\findex{plot} -\begin{verbatim} - plot(F, R2.resize1(0,0.5)); - plot(F, R2.slices1()); -\end{verbatim} - - -\subsubsection*{Meshes and Plotting} - -The \code{P}~arguments of a \code{domain} are a pair of opposite -corners. The first \code{mesh} argument, the \emph{coarse} mesh, -specifies the number of subdivisions in each coordinate direction. -The second \code{mesh}, the \emph{fine} mesh, determines the number of -points used in each direction when plotting. - -\begin{comment} -Suppose the \code{domain}~\code{R2} is, as above, the rectangle -\teximath{[0,3]\times[-1,2]}. The argument \code{mesh(12,6)} divides the -rectangle a \teximath{12\times6}~array of subrectangles known as the -\emph{coarse mesh}. A \code{P}-valued map~\code{F} of two variables is -plotted over the edges of the coarse mesh. Rather than drawing -quadrilaterals, however, \ePiX\ draws the image curves at the -resolution specified by the argument \code{mesh(60,60)}, the -\emph{fine mesh}. In this example, the curves in each direction are -drawn using 60~line segments. -\end{comment} - -Separating the roles of coarse and fine meshes allows a plot to -conform closely to a surface without using a fine grid of curves. -Both parts of Figure~\ref{fig:plot} are drawn with a -\teximath{6\times20} coarse mesh. In the first picture, the fine mesh -is also \teximath{6\times20}, while in the second, the fine mesh is -\teximath{12\times60}. - -\begin{figure}[hbt] - \begin{center} - \input{plot_a.eepic}\hspace*{0.5in} - \input{plot_b.eepic} - \caption{Coarse and fine meshes.} - \label{fig:plot} - \end{center} -\end{figure} - -The coarse mesh is significant only for domains of dimension at -least~2. The coarse mesh's size determines the number of curves or -surfaces plotted \emph{perpendicularly} to a coordinate direction, -while the fine mesh's size determines the number of segments used -\emph{along} that direction. For predictable results, the fine mesh -should be a small multiple of the coarse mesh. - -Plotting works analogously for 3-dimensional \code{domain}s and maps -depending on three variables: The ``one-dimensional skeleton'' of the -\code{domain}'s image is drawn. A \code{P}-valued map of -three variables can be plotted over a 1-~or 2-dimensional -\code{domain}. (The effect may be unexpected unless the domain arises -by slicing, however.) A map depending on one or two variables cannot -be plotted over a 3-dimensional \code{domain}. -\index{Domain|)} - - -\subsubsection*{Shaded Surfaces} - -\index{Plotting!surface|(} - -\ePiX's shaded surface plotting implements a degree of hidden surface -removal. The algorithm breaks a surface into mesh fragments, sorts -them in decreasing (approximate) distance to the camera, and prints -them. If filling is active, a mesh fragment is shaded according to -the angle between the normal vector and the direction to the camera, -simulating constant ambient lighting; otherwise, the current fill -color is used. This technique works fairly well for surfaces without -intersection, and even acceptably handles intersecting surfaces for -which mesh elements intersect only along boundaries. - -The syntax of a \code{surface} command is identical to a \code{plot} -command when only a single surface is drawn. For example, -\findex{surface} -\begin{verbatim} - surface(F, R, cull=0); -\end{verbatim} -plots the \code{P}-valued function~\code{F} over the domain~\code{R}, -the shaded equivalent of the corresponding \code{plot} command. The -optional \code{cull} argument removes elements that point toward -(\code{cull=-1}) or away from (\code{cull=1}) the camera. Naturally, -orientation of mesh elements depends on the parametrization~\code{F}, -not merely on the surface. Culling reduces the output file size, but -is useful mostly for closed, convex surfaces. - -There are special commands for surfaces of rotation; each accepts a -final \code{cull} argument. -\findex{surface\_rev} -\begin{verbatim} - surface_rev(f, t_min, t_max, n_lats, n_longs); - surface_rev(f, g, t_min, t_max, n_lats, n_longs=24); - surface_rev(f, g, R, frame coords); -\end{verbatim} -The first revolves the graph of~\teximath{f} about the -\teximath{x}-axis, the second uses the parametric curve -\teximath{t\mapsto\bigl(f(t),g(t)\bigr)} as profile. In each case, the -parameter interval \verb+[t_min,t_max]+ is divided into \verb+n_lats+ -equal-length subintervals, \verb+n_longs+ copies of the profile curve -are drawn, and the complete surface (one full turn) is drawn. - -The third form uses a \code{domain} to control the range of -longitudes, and draws a surface of rotation in the Cartesian -coordinate system defined by the orthonormal basis \code{coords}, by -default the standard basis. The arguments \code{f}~and \code{g} define -a parametric curve in the plane spanned by the first two elements -of~\code{coords}, and the first element is the axis of rotation. - -As in wire mesh plotting, the fine mesh is used to draw the boundaries -of surface patches; this tends to make surfaces look smoother for -modest-sized coarse meshes. If the coarse mesh is too coarse, however, -two visually undesirable effects can occur. First, adjacent regions of -the surface may be shaded very differently, since shading is constant -over patches defined by the coarse mesh. Second, a patch nearly -tangent to a line of sight may be drawn badly if the patch bends back -on itself, since the boundary of the \emph{patch} is drawn, not the -visible edge of the mathematical surface. See -\filename{samples/artifacts.xp}. - - -\subsubsection*{Multiple Domains and/or Maps} - -A scene containing two or more shaded surfaces cannot generally be -built up one surface at a time. Instead, multiple surfaces must be -assembled into a single data structure before they can be drawn. -Multiple surfaces are built from one or more maps and one or more -2-dimensional \code{domain}s. In the code snippets below, \code{F}~and -\code{G} are \code{P}-valued functions of 3~variables, and~\code{R} is -a 3-dimensional \code{domain}. - -To plot the images of several \code{domain}s under a \emph{single -map}, assemble the \code{domain}s into a list if necessary, then issue -a \code{surface} command: -\findex{surface} -\findex{domain\_list} -\findex{domain\_list.add} -\begin{verbatim} - surface(F, R.slices3(), cull=0); - - domain_list DL(R.slice1(0)); // build domain list - DL.add(R.slice2(0.5)); // add a domain, etc. - surface(G, DL, cull=0); // draw -\end{verbatim} -For multiple maps, \ePiX\ provides the \code{scenery} -class. Conceptually, \code{scenery} is an agglomeration of shaded -surfaces, built one surface at a time from maps and 2-dimensional -\code{domain}s. The \code{add} function accepts two arguments---a map, -and either a \code{domain} or a list of \code{domain}s---and -contributes its data to the \code{scenery} rather than plotting -immediately. Completed \code{scenery} is drawn manually. -\findex{scenery} -\findex{scenery.add} -\findex{scenery.draw} -\begin{verbatim} - scenery S(F, R.slice3(0.25)); // S contains one surface - S.add(F, R.slice2(0)); // S contains two surfaces - S.add(G, R.slices1(3)); // S contains six surfaces - S.draw(cull=0); -\end{verbatim} -Complete examples are included in the \filename{samples} directory: -\filename{spherical.xp}~and \filename{minkowski.xp}. - -In principle, a scene may contain arbitrarily many surfaces. However, -figures that contain many objects tend to tax \LaTeX's internal -stacks. Frequent color changes exacerbate the problem. Even if you -use \filename{hugelatex} (or increase \LaTeX's memory), a figure -containing more than a few thousand mesh elements is unlikely to -compile. At moderate resolution, a surface can easily contain -1000~patches. Each shell script has a command-line option to invoke -\filename{hugelatex}; your mileage may vary. - - -\subsubsection*{User-Specified Color Shading} - -\index{Color!surface plotting} -By default, a \code{surface} or \code{scenery} is colored according to -the current fill color. For finer control, each \code{surface}, -\code{surface\_rev}, and \code{scenery} command accepts an optional -position-dependent \code{color} specification. -\findex{surface} -\findex{surface\_rev} -\findex{scenery} -\findex{scenery.add} -\begin{verbatim} - surface(F, R, color, cull=0); - surface_rev(f, [g], t_min, t_max, n_lats, n_longs, color); - surface_rev(f, g, R, color, [coords]); - - scenery S(F, R, color); - S.add(F, R, color); -\end{verbatim} -The \code{color} argument is a \code{P}-valued function of two or -three \code{double}s whose output is interpreted as a set of -\code{RGB}~densities. If \code{color} takes two arguments, they are -\code{domain} coordinates, and the surface is colored according to -parameter values. If \code{color} takes three arguments, they are -Cartesian coordinates, and the surface is colored according to spatial -location. Please see the sample files -\filename{surface\_shade.xp}~and \filename{S2\_harmonics.xp}. -\index{Plotting!surface|)} - - -\subsection{Calculus Plotting} -\index{Plotting!calculus|(} - -\ePiX\ provides high-level commands for plotting derivatives and -definite integrals, Riemann sums, tangent lines, slope- and vector -fields, and solutions of planar and spatial systems of differential -equations. - -In this section, \code{f}~and \code{g} are \code{double}-valued -functions of one variable. - -\subsubsection*{Utility Functions} - -\findex{sup} -\findex{inf} -\findex{newton} -\begin{verbatim} - sup(f, a, b); // max/min of f on [a,b] - inf(f, a, b); - newton(f, g, x0); // find approximate crossing point -\end{verbatim} -Newton's method returns the crossing point of the given functions, -starting from the specified seed, which should be reasonably close to -the expected solution. If a critical point is hit or 5~iterations -pass, a warning is issued and the current result (probably incorrect) -is returned. The second function~\teximath{g} defaults to the zero function if -omitted. - -\subsubsection*{Derivatives and Integrals} - -The classes \code{Deriv}~and \code{Integral} are used to calculate -values of derivatives and integrals, and to plot these functions. -\findex{Deriv} -\findex{Deriv.eval} -\findex{Deriv.left} -\findex{Deriv.right} -\findex{Integral} -\findex{Integral.eval} -\begin{verbatim} - Deriv df(f); // function object: df(x) = f'(x) - df.eval(t); // return f'(t) - df.left(t); // deriv from left at t: (f(t)-f(t-dt))/dt - df.right(t); // deriv from right at t: (f(t+dt)-f(t))/dt - - Integral prim(f,a); // function object: prim(x) = int_a^x f - prim.eval(b); // numerical integral of f over [a,b] - double val(Integral(f).eval(1)); // val = \int_0^1 f -\end{verbatim} -The lower limit on an integral is~0 by default. \code{Deriv}s and -\code{Integral}s can be used directly in a \code{plot} command: -\findex{plot} -\findex{riemann\_sum} -\begin{verbatim} - plot(Deriv(f), a, b, n); // plot f' over [a,b] - plot(Integral(f, x0), a, b, n); - riemann_sum(f, a, b, n, TYPE); -\end{verbatim} -The second graphs the definite integral \teximath{x\mapsto\int_{x_0}^x -f(t)\,dt} over~\teximath{[a,b]}. As above, \teximath{x_0}~defaults -to~0. The third draws rectangles or trapezoids whose area approximates -the definite integral of~\teximath{f} over~\teximath{[a,b]}. The -\code{TYPE} may be \code{UPPER}, \code{LOWER}, \code{LEFT}, -\code{RIGHT}, \code{MIDPT}, or~\code{TRAP}. - -Tangent lines and envelopes (families of tangent lines) are drawn with -\findex{tan\_line} -\findex{envelope} -\findex{tan\_field} -\begin{verbatim} - tan_line(f, t); // f real- or vector-valued - envelope(f, t_min, t_max, n); // family of tangent lines - tan_field(f, g, t_min, t_max, n); // field of tangents -\end{verbatim} -The sample files \filename{conic.xp}~and \filename{lissajous.xp} -illustrate these features. - - -\subsubsection*{Systems of Differential Equations} - -Let \code{F}~be a \code{P}-valued function of two or three variables. -\findex{ode\_plot} -\findex{flow} -\begin{verbatim} - ode_plot(F, p_0, t_min, t_max, n); - flow(F, p_0, t_max, n); -\end{verbatim} -The first plots the solution curve of the initial-value problem -\teximath{\dot{x}=F(x)}, \teximath{x(0)=p_0}, over the specified time -interval. If \teximath{t_\mathrm{min}} is omitted, its value is~0, so -the curve starts at~\teximath{p_0}. With manual calculation to rotate -a planar field a quarter turn, \code{ode\_plot} can be used to draw -level curves (isobars) of a function of two variables; see the sample -file \filename{dipole.xp}. The \code{flow} function returns the -result of starting at~\teximath{p_0} and flowing by~\teximath{F} for -time~\teximath{t_\mathrm{max}}, using Euler's method with~\teximath{n} -time steps. This is useful for placing markers or arrowheads precisely -along a flow line. - -A planar or spatial vector field itself may be plotted over a -domain~\code{R} in three styles: -\findex{vector\_field} -\findex{dart\_field} -\findex{slope\_field} -\begin{verbatim} - vector_field(F, R, [scale]); // true length - dart_field (F, R, [scale]); // const length - slope_field (F, R, [scale]); // const length -\end{verbatim} -The field is sampled at the grid points of the coarse mesh. If the -domain is 2-dimensional, the plot is a planar slice of the field, even -if the field depends on three variables. If the domain is -3-dimensional, the field is drawn in successive slices -\teximath{x_3=\mathrm{const}}, starting at the height of the first -corner of~\code{R} and ending at the height of the second corner. - -The optional final argument, which defaults to~\teximath{1}, scales the -arrowheads in a vector field, and scales the (constant) length of -field elements for slope and dart fields. The sample files -\filename{layout2.xp}, \filename{lorenz.xp}, \filename{slopefield.xp}, -and \filename{vfield.xp} illustrate usage. - -In each field-plotting command, the domain argument may be replaced by -two points, representing corners of a coordinate rectangle, and two -integers, the number of grid intervals in the selected coordinate -directions. Only planar slices of a vector field can be plotted using -the alternative syntax. -\index{Plotting|)} - - -\subsection{Non-Euclidean Geometry} -\label{non-eucl} - -\ePiX\ provides limited features for spherical and hyperbolic -geometry: the ability to draw lines in the half-plane and Poincar\'e -disk models of the hyperbolic plane, and to draw latitudes, -longitudes, great circle arcs, spherical triangles, regular polyhedra, -and parametrized curves on a sphere. - -Hyperbolic line segments are specified by their endpoints in the upper -half space or ball (Poincar\'e) models. In each case there is no -output if either endpoint lies outside the model. -\findex{hyperbolic\_line} -\findex{disk\_line} -\begin{verbatim} - hyperbolic_line(p, q); - disk_line(p, q); -\end{verbatim} -For compatibility with 2-dimensional hyperbolic space, the half-space -model is the set \teximath{\{(x_1,x_2,x_3)\mid x_2>0\}}. - -\index{Plotting!spherical|(} -A \code{frame} determines geographical coordinates on a \code{Sphere}: -the first element points toward longitude~0 on the equator, the third -element points to the north pole. A latitude line depends on a -\code{Sphere}, a \code{frame}, the numerical latitude, and a range of -longitudes. A longitude line is described similarly. -\findex{latitude} -\findex{longitude} -\findex{back\_latitude} -\findex{back\_longitude} -\begin{verbatim} - latitude(lat, long_min, long_max, Sphere S, frame coords); - longitude(lngtd, lat_min, lat_max, Sphere S, frame coords); -\end{verbatim} -By default, \code{coords} is the standard \code{frame} and \code{S} is -the unit sphere. These commands draw only the portion of the curve -that is visible from the current viewpoint. The function -\code{back\_latitude} draws the invisible portion of a latitude line. - -Spherical arcs and triangles are described by their endpoints. Only -the direction vector from the center of the sphere to an endpoint is -significant; if a sphere is scaled or moved, the same function call -will draw the corresponding object on the new sphere. - -The following draw the visible (front) portions of great circle arcs: -\findex{front\_arc} -\findex{front\_arc2} -\findex{front\_line} -\findex{back\_arc} -\findex{back\_arc2} -\findex{back\_line} -\begin{verbatim} - front_arc(p1, p2, S); // short arc on S from p1 to p2 - front_arc2(p1, p2, S); // arc from p1 to -p1 through p2 - front_line(p1, p2, S); // great circle through p1 and p2 -\end{verbatim} -Triangles and regular (Platonic) polyhedra are provided. The sample -file \filename{sample/polyhedra.xp} illustrates usage. -\findex{front\_triangle} -\findex{front\_tetra} -\findex{front\_cube} -\findex{front\_octa} -\findex{front\_dodeca} -\findex{front\_icosa} -\findex{back\_triangle} -\findex{back\_tetra} -\findex{back\_cube} -\findex{back\_octa} -\findex{back\_dodeca} -\findex{back\_icosa} -\begin{verbatim} - front_triangle(p1, p2, p3, S); // spherical triangle - front_tetra(S, coords); // regular tetrahedron - front_cube(S, coords); // hexahedron - front_octa(S, coords); // octahedron - front_dodeca(S, coords); // dodecahedron - front_icosa(S, coords); // icosahedron -\end{verbatim} -Each function has a \code{back} version, which draws the hidden -portion. The tetrahedron, cube, and octahedron are (up to scale) -inscribed in the cube of side length~\teximath{2} centered at the origin whose -sides are parallel to~\code{frame}. The point \teximath{(1,1,1)} is a vertex of -the tetrahedron. - -Up to scale, the icosahedron's vertices lie on the golden rectangle -with vertices \teximath{(\pm\gamma,0,\pm1)} and its images under cyclic -permutation of coordinates. The dodecahedron is dual to the -icosahedron. - -\subsubsection*{Spherical Plotting} - -Parametrized paths on a \code{Sphere~S} (by default the unit sphere) -can be specified either by radial projection of a \code{P}-valued -curve, or by stereographic projection of a plane curve given as a pair -of \code{double}-valued functions: -\findex{frontplot\_R} -\findex{frontplot\_N} -\findex{frontplot\_S} -\findex{backplot\_R} -\findex{backplot\_N} -\findex{backplot\_S} -\begin{verbatim} - frontplot_R(phi, t_min, t_max, n, [S]); // radial - frontplot_N(f1, f2, t_min, t_max, n, [S]); // from north pole - frontplot_S(f1, f2, t_min, t_max, n, [S]); // from south pole -\end{verbatim} -Attempts to perform radial projection on a path through the origin -will generate division-by-zero errors. Stereographic projection maps -the equatorial plane \teximath{\{x_3=0\}} to the unit sphere by -projection from the corresponding pole: \teximath{N=(0,0,1)}, -\teximath{S=(0,0,-1)}. - -Each spherical plot command has a \code{back} version that prints only -the portion of the path invisible from the current viewpoint. -Because of the way \ePiX\ layers output, it is generally best to put -hidden portions of the input before visible portions, with line width -and/or style that suggests hidden lines. - - -\subsection{Data Plotting} -\index{Plotting!data|(} -\index{Data plotting|(} - -Files of numerical data can be created, manipulated, analyzed, -plotted (paths, scatter plots, and histograms), read, and written. -The format for a data file is one or more floating-point -numbers per line, with the same number of entries per line. Anything -that appears on a line after the \LaTeX\ comment character~\code{\%} -is a comment. - -\ePiX\ provides two \code{plot} commands for file data. The first -facilitates plotting selected columns; the second simplifies plotting -the first two columns with one or both scales logarithmic. Either form -can be used to plot selected columns logarithmically. - -The general commands read numbers from two or three columns of a -specified file, pass them as arguments to a \code{P}-valued -function~\code{F}, and plot the resulting points: -\findex{plot} -\begin{verbatim} - plot("filename", STYLE, [i_1], [i_2], [i_3], [F]); - plot("filename", STYLE, F, [i_1], [i_2], [i_3]); -\end{verbatim} -The first argument is the name of the data file. The \code{STYLE} may -be \code{PATH}, which joins the points in the order they appear, or -any of the marker types in Table~\ref{table:marker}. The -integers~\teximath{i_k} specify columns from which to extract data; these -default, respectively, to the first column, second column, and null (a -column of zeroes). If the ``coordinate system''~\code{F} is omitted in -the first command, it defaults to the Cartesian point constructor. The -function~\code{F} is mandatory in the second form; useful choices -include \code{log\_log}, \code{log\_lin}, and~\code{lin\_log}, which -plot the corresponding coordinate logarithmically. - - -\subsubsection*{Data Files} - -For more elaborate analysis, the \code{data\_file} class presents an -interface to a file as an ordered list of columns. There are two -general ways to create a \code{data\_file}: read in an external file, -or generate data (up to three columns) using specified -\code{double}-valued functions. In the constructors below, each -function~\code{fi} is a \code{double}-valued function of one variable. -\findex{data\_file} -\findex{data\_file.read} -\begin{verbatim} - data_file DF("my_data"); // read data from disk file - data_file DF(f1, t_min, t_max, num_pts); // values of f1 - data_file DF(f1, f2, t_min, t_max, num_pts); - data_file DF(f1, f2, f3, t_min, t_max, num_pts); - data_file DF(3); // create empty data_file with 3 columns - DF.read("file1"); // read a disk file -\end{verbatim} - -Columns of a \code{data\_file} can be transformed by a user-specified -function, averaged, correlated, extracted (for use by other code), -scatter plotted, and written to a disk file at specified -precision. Below, the function~\code{f} is a \code{double}-valued -function of one variable and~\code{F} is a \code{P}-valued function of -two or three variables, whose components are written back to the -selected columns. -\findex{data\_file.transform} -\begin{verbatim} - DF.transform(f, i); // apply f to selected column(s) - DF.transform(F, i=1, j=2); - DF.transform(F, i, j, k); -\end{verbatim} -Basic statistical operations on columns are provided. -\findex{data\_file.dot} -\findex{data\_file.avg} -\findex{data\_file.var} -\findex{data\_file.covar} -\findex{data\_file.regression} -\begin{verbatim} - DF.dot(i,j); // dot product of columns i, j - DF.avg(i); // mean of column i - DF.var(i); // population variance - DF.covar(i,j); // covariance - DF.regression(i,j); // plot regression line -\end{verbatim} -A \code{data\_file} is scatter plotted using syntax as described above. -% The output is cropped automatically to the bounding box. -\findex{data\_file.plot} -\begin{verbatim} - DF.plot(STYLE, [i1], [i2], [i3], [F]); - DF.plot(STYLE, F, [i1], [i2], [i3]); -\end{verbatim} -Histograms and bar charts are described below. - -A \code{data\_file} can be written to a disk file as raw data, or in -specified format. Below, \code{fmt} denotes a \code{string}-valued -formatting function of two variables and \filename{myfile} is the -name of the disk file to be written. -\findex{data\_file.precision} -\findex{data\_file.write} -\begin{verbatim} - DF.precision(4); // set to 4 significant figures - DF.write("myfile"); // write as tab-separated columns - DF.write("myfile", fmt, [i1], [i2]); // apply fmt to cols -\end{verbatim} -A column can be extracted as a \code{C++}~\code{vector} for use by -another function. -\findex{data\_file.column} -\begin{verbatim} - DF.column(i); // i-th column - DF.column(f, i); // i-th column, transformed by f -\end{verbatim} - - -\subsubsection*{Data Containers} - -\ePiX\ provides a \code{data\_mask} class for culling data from a file -according to the values in a specified column, and a \code{data\_bins} -class for sorting data by value. - -A \code{data\_mask} consists of an interval of numbers and a -``filter'' function. The (closed, open, or half-open) interval is -given as a string in standard mathematical notation, or by its -endpoints (for a closed interval). The filter is a -\code{double}-valued function of \code{double}, by default the -identity, \teximath{f(x)=x}. -\findex{data\_mask} -\begin{verbatim} - data_mask dm("[a, b]", [f]); - data_mask dm(a, b, [f]); -\end{verbatim} -A \code{data\_mask} ``passes'' inputs~\teximath{x} if~\teximath{f(x)} -lies in the interval. The member function \code{reverse()} inverts -this logical test. - -The \code{data\_file} class has \code{prune} functions to cull -rows for which a specified column's entry satisfies a -\code{data\_mask}'s criterion. -\findex{data\_mask.prune} -\begin{verbatim} - DF.prune(dm, i); // remove row if i-th column entry fails - DF.prune(a, b, i); // remove row if i-th column outside [a,b] -\end{verbatim} - -A \code{data\_bins} object models an interval divided at specified -locations into ``bins'', not necessarily of equal length. Numerical -data is read in and the number of points in each bin counted. The -lifetime of a \code{data\_bins} object has two stages. First, ``cuts'' -(endpoints of subintervals) are added. Then, once data is read, the -cuts are ``locked'' and cannot subsequently be changed. -\findex{data\_bins} -\findex{data\_bins.cut} -\findex{data\_bins.read} -\begin{verbatim} - // [xmin, xmax] divided into n equal intervals, 1 by default - data_bins db(xmin, xmax, [n]); - db.cut(x); // add a cut at x (if x is in bounds) - db.read(vector<double>); // read data, lock bins -\end{verbatim} - -\index{Histograms} -\index{Bar Charts} -A \code{data\_bins} object can be plotted as a histogram (rectangles' -\emph{area} is proportional to the bin population), bar chart -(rectangles' \emph{height} is proportional to the bin population), or -spline interpolation of a bar chart. -\findex{data\_bins.histogram} -\findex{data\_bins.bar\_chart} -\findex{data\_bins.plot} -\begin{verbatim} - db.histogram(c=1); // c = vertical scale factor - db.bar_chart(c=1); - db.plot(c=1); -\end{verbatim} -By default (\code{c=1}), the height of a bar chart rectangle is the -fraction of the total population contained in the bin; thus, the -height is always between 0~and 1. For a histogram, the height of a -rectangle is the fraction of the population per horizontal unit in the -bin; thus, the total area over an interval~\teximath{[a,b]} does not -depend on how~\teximath{[a,b]} has been subdivided. The sample files -\filename{dataplot.xp}~and \filename{histogram.xp} illustrate use. - -Statistical convention dictates cuts be chosen distinctly from data -values; that is, values should all fall strictly within a bin, not at -a boundary point. With large, unknown data sets, this convention may -be difficult to uphold. \ePiX\ attempts to handle anomalous data -intelligently, by keeping counts of values ``out-of-range'' or -``on-cut''. - -In detail, if \teximath{x<a} or \teximath{x>b} is a data value, it is -counted as out-of-range and does not contribute to the histogram -population. If \teximath{x=a} or \teximath{x=b}, the value counts as -both out-of-range and on-cut but is added to the population of the -lowest or highest bin, respectively. Any other cut appearing as a data -input is flagged as on-cut, and increments the population of each -adjacent bin by one-half. When a histogram or bar chart is written, -\ePiX\ prints a warning message summarizing the number of anomalous -data seen. - - -\subsubsection*{Error Bars} -\index{Error bars} - -Simple horizontal and vertical error bars are provided. The final -(optional) argument is the true height or width (respectively) in pt. -\findex{h\_error\_bar} -\findex{v\_error\_bar} -\begin{verbatim} - h_error_bar(P location, double error, <mark type>, ht=6); - v_error_bar(P location, double error, <mark type>, wd=6); -\end{verbatim} - -To create more complex elements, such as asymmetric bars, whisker -plots, labeled error bars, and the like, write a custom function using -true-size drawing, see page~\pageref{truesize}. For example, a -fillable, labeled, asymmetric, vertical rectangular error bar can be -implemented (entirely in \ePiX) like this: -\begin{verbatim} - void error_bar(P loc, double lo, double hi, P offset, - std::string text, align, double wd=6) - { - const double width(pt_to_screen(0.5*wd)); // converts to 3pt - rect(loc - P(width, lo), loc + P(width, hi)); - line(loc - P(width, 0), loc + P(width, 0)); - label(loc + P(width, 0), offset, text, align); - } -\end{verbatim} -For stylistic uniformity, functions such as this should be put into a -library and used systematically. Section~\ref{section:extensions} -outlines the process of writing, compiling, and using a custom -library. -\index{Plotting!data|)} -\index{Data plotting|)} - - -\subsection{Legends} -\index{Legends} - -A \code{legend} systematically labels different parts of a plot by -associating visual ``keys'' with explanatory text. This tends to be -most useful for plots containing several distinct but conceptually -related graphs requiring contrast. - -Visually, a \code{legend} is represented as an aligned list of rows, -each containing a box (the key), a gap (the label skip), and some -text. These rows are printed in a (usually large) masked label. By -default, keys are \code{12pt}~squares bordered in black, the label -skip is~\code{6pt}, the background is white, and the border is plain -black. These attributes are controlled (simultaneously for all items) -with member functions. Parameters of type \code{double} represent -lengths in~\code{pt}. -\findex{legend} -\findex{legend.backing} -\findex{legend.border} -\findex{legend.item\_border} -\findex{legend.label\_skip} -\findex{legend.key\_size} -\begin{verbatim} - legend L; - L.backing(color); // set background - L.border(color, [double]); // set border color [and width] - L.border(double); // border width - - L.item_border(color, [double]); - L.item_border(double); // same, for item borders - - L.label_skip(double); - L.key_size(double); -\end{verbatim} - - -\subsubsection*{Legend Keys} - -There are three types of legend key, representing filled regions, -paths, and markers. Fill and path keys get their visual attributes -from the current drawing state. A mark key must be told the marker -type. Each is created by specifying the item text. -\findex{legend.fill\_item} -\findex{legend.path\_item} -\findex{legend.mark\_item} -\begin{verbatim} - L.fill_item(text); - L.path_item(text); - L.mark_item(<mark type>, text); -\end{verbatim} -Keys in the printed legend appear in the same order they are created -in the input file. - - -\subsubsection*{Creating a Legend} - -Normally, a \code{legend} is defined near the start of a file, and an -item is added at the point in the file where the corresponding object -or plot is drawn, so that the item receives the correct attributes. A -\code{legend} is placed into the figure with the \code{draw} -function. The arguments have the same meaning as for ordinary -\code{label}s. -\findex{legend.draw} -\begin{verbatim} - L.draw(P location, P offset, align); -\end{verbatim} -All three arguments are mandatory. ``Global'' \code{legend} settings -(border, backing, etc.) may be changed anywhere between the -\code{legend}'s creation and \code{draw} function. The sample file -\filename{legend.xp} revisits the example on -page~\pageref{taylor_poly}, including a trig-labeled axis and a -legend. The file \filename{shadeplot.xp} contains filled keys, and -\filename{dataplot.xp} contains a \code{legend} with items of mixed -type. - - -\section{More About \CXX} -\index{Cplusplus@\CXX|(emph} - -A textbook or similarly detailed reference is essential for serious -study of~\code{C} or~\CXX. \emph{The \code{C} Programming Language}, -second edition, by Kernighan~and Ritchie~\cite{KnR}, is an excellent, -manageable resource for the basics of procedural -programming. \emph{C++ Primer Plus}, by Stephen Prata~\cite{Prata}, -clearly lays out the extensive details of~\CXX. Marshall Cline's -\emph{\CXX\ FAQ Lite}~\cite{Cline} engagingly discusses common points -of confusion and furnishes tips on good design and programming. - -\CXX\ is a powerful, complex language whose syntax is similar to that -of~\C, or to the scripting languages of Maple~and Mathematica. An -\ePiX\ input file is source code for a \CXX~program that writes a -\LaTeX\ picture as output. \ePiX\ may be viewed as an extension -to~\CXX; in the same way that \LaTeX\ furnishes a high-level interface -to~\TeX, \ePiX\ provides a high-level bridge between the computational -power of~\CXX\ and the \LaTeX\ \code{picture} environment. - -\index{Function} -\index{Conditional statement} -Like all high-level programming languages, \CXX\ provides variables, -functions, and control structures. Variables hold pieces of data such -as numerical values and geometric locations, while functions operate -on data. A control structure, such as a loop or conditional statement, -affects the program's course according to the program's current state. -A source file is composed primarily of ``statements'', which perform -actions ranging from defining variables and functions to setting -figure attributes, performing calculations, and writing objects to the -output file. - -\subsection{Names and Types} - -\index{Variable!names|(} -Names of variables and functions may consist (only) of letters, -digits, and the underscore character. The first character of a name -must not be a digit, and the language standard reserves names starting -with underscore for library authors. Names are case-sensitive, but -it's usually a bad idea to use a single name capitalized and -uncapitalized in a single file. Numerous capitalization conventions -are used informally; this document uses uncapitalized words separated -by underscores for variables and functions, and occasionally uses all -capitals for constants. As with names of \LaTeX\ macros, primary -considerations are clarity (of meaning), readability, and consistency. -\index{Variable!names|)} - -\index{Variable!type of} -Every variable in \CXX\ has a ``type'', -such as integer (\code{int}), double-precision floating point -(\code{double}), or Boolean (\code{bool}, true~or false). \ePiX\ -provides additional types, the most common of which is~\code{P}, for -point. The construct \code{P(x,y,z)} creates~\teximath{(x,y,z)}, while -\code{P(x,y)} gives~\teximath{(x,y,0)}, which is effectively the -pair~\teximath{(x,y)}. A variable is defined by giving its type, its -name, and an initializing expression. - -\index{Variable!pointer} -\index{Pointer} -In~\code{C} and~\CXX, a \emph{pointer} variable holds the memory -address of another variable. Pointers are useful for manipulating -(possibly large) data structures through ``handles'' of fixed small -size. \CXX\ also provides \emph{references}, which bind an additional -name to an existing object and allow the object to be manipulated -through this alias. The statements -\begin{verbatim} - double x=1; // ordinary variable definition - double& rx=x; // bind a reference, signified by & -\end{verbatim} -define a variable~\code{x} having the value~1, and bind a reference -variable~\code{rx} to it. As long as~\code{rx} exists, it refers -to~\code{x}. If the value of~\code{x} changes, the value of~\code{rx} -does as well. Conversely, the value of~\code{x} can be altered by -assigning to~\code{rx}. However,~\code{rx} is the size of a pointer, -regardless of the size of~\code{x}, so~\code{rx} can be passed -efficiently in a function call. -\texicomment -Some applications are discussed on page~\pageref{references}. -\texicommentend - - -\subsection{Functions} - -\index{Function|(} -In a programming language, the term ``function'' refers to a block of -code that is executable by name. A \CXX\ function takes a list of -``arguments'', and has a ``return value''. This information, together -with the function's name, must be provided when a function is defined. -A function may not be defined inside another function. However, a -function may call other functions (including itself) as part of its -execution: -\begin{verbatim} - int factorial(unsigned int n) - { - if (n == 0) return 1; - else return n*factorial(n-1); - } -\end{verbatim} - -\index{Function!returning \code{void}} -The special type~\code{void} represents a ``null type''. A function -that performs an action but does not return a value has return type -\code{void}. A function that takes no arguments may be viewed as -taking a single \code{void} argument. - -Every \CXX\ program has a special function~\code{main()}, which is -called by the operating system when the program is run. The arguments -of~\code{main()} are command-line arguments, and the return type is an -integer that signals success or failure. User-specified functions must -be defined before the call to \code{main()} or in a -separately-compiled file. - -Functions in~\CXX\ may be as simple as an algebraic formula or as -complex as an arbitrary algorithm. Greatest common divisors, finite -sums, numerical derivatives and integrals, solutions of differential -equations, recursively generated fractal curves, and curves of best -fit are a few applications in \ePiX. Several sample files contain -user-level algorithms, which do not require knowledge of \ePiX's -internal data structures. The source file \filename{functions.cc} -contains simple functions defined by algorithms, and -\filename{functions.h} illustrates the use of \CXX\ templates. Other -source files, such as \filename{plots.cc}, may be consulted for -Simpson's rule, Euler's method, and the like. - - -\subsection{Mathematical Functions} - -\index{Function!mathematical|(} -\CXX~knows several familiar mathematical functions by name: -\begin{verbatim} - sqrt exp log log10 ceil floor fabs -\end{verbatim} -(\code{fabs} is the absolute value for a floating-point argument.) -\ePiX\ provides trig and inverse trig functions sensitive to angular -mode: -\index{Angular mode} -\findex{Cos} -\findex{Sin} -\findex{Tan} -\findex{Sec} -\findex{Csc} -\findex{Cot} -\findex{Acos} -\findex{Asin} -\findex{Atan} -\begin{verbatim} - Cos Sin Tan - Sec Csc Cot - Acos Asin Atan -\end{verbatim} -The inverse functions are principle branches. - -The function \code{pow(x,y)} returns~\teximath{x^y} when -\teximath{x>0}, and \code{atan2(y,x)} (N.B. argument order) returns -\teximath{\mathrm{Arg}(x+iy)\in(-\pi,\pi]}, the principle branch of -arg. \CXX~knows many constants to 20~decimal places, such as -\code{M\_PI}, \code{M\_PI\_2}, and \code{M\_E} for~\teximath{\pi}, -\teximath{\pi/2}, and~\teximath{e} respectively. \ePiX\ defines a few -additional functions: -\findex{sgn} -\findex{zero} -\findex{sinx} -\findex{cb} -\begin{verbatim} - sgn zero sinx cb -\end{verbatim} -\texicomment -\begin{center} - \input{sgn.eepic}\qquad - \input{sinx.eepic}\qquad - \input{cb.eepic} -\end{center} -\medskip -\texicommentend -\code{sgn} is the signum function; \code{zero} is the constant -function; \code{sinx} is the function \teximath{x\mapsto \sin(x)/x} -with the discontinuity removed; \code{cb} (for ``Charlie Brown'') is -the period-2 extension of the absolute value function -on~\teximath{[-1,1]}. - -The GNU \CXX\ library defines other functions, including inverse -hyperbolic functions (\code{acosh}, etc.), \code{log}~and \code{exp} -with base~2, 10, or arbitrary~\teximath{b} (\code{log2}, etc.), the -error and gamma functions (\code{erf}~and \code{tgamma} [sic], -respectively), and Bessel functions of first and second kind: -\code{j0}, \code{j1}, \code{y0}, etc. Use, e.g., \code{jn(5,~)} to get -higher indices. The GNU \C~library reference manual~\cite{GNUC} -describes these and other functions in detail. - -Functions may be used in subsequent definitions, and functions of two -(or more) variables are defined in direct analogy to functions of one -variable: -\begin{verbatim} -double f(double t) { return t*t*log(t*t); } // t^2 \ln(t^2) -double g(double s, double t) { return exp(2*s)*Sin(t); } -\end{verbatim} -\index{Function!mathematical|)} - - -\subsection{Basics of Classes} - -\index{Classes|(} -Unlike~\code{C}, \CXX\ supports ``object-oriented programming''. In a -nutshell, a \emph{class} is an abstraction in computer code of some -concept, such as a point, a sphere, a mapping that can be plotted, or -a camera. Classes allow a programmer to separate an object's -\emph{interface} (the set of meaningful operations) from its -\emph{implementation} (the data structures and algorithms that realize -the interface). - -\index{Function!class member} -A class implementation consists of \emph{members} (named data -elements) and \emph{member functions} (functions that belong to the -class and have free access to members). \CXX\ classes enforce access -permissions on their members, protecting data from being manipulated -except as promised by the interface. - -An ideal interface looks like a black box: It hides the implementation -completely. In order to cooperate, two classes need only know each -other's interfaces. This separation of form and function modularizes a -program, and facilitates debugging, code reuse, and overall -maintainability, particularly in large programs. - -In simple programming, classes may be treated like built-in types. -Each class object has its own member functions, whose call syntax -differs from standard function calls: -\begin{verbatim} - Circle C1(P(1,0), 1.5); // circle of given center and radius - C1.draw(); // member function Circle::draw(); -\end{verbatim} -Naturally, this call draws the circle~\code{C1}. Generally, a member -function call consists of a class object's name, a period, and the -name of the member function. Arguments, if any, go in the parentheses -after the member function name, just as in a regular function call. - -A few short paragraphs cannot do more than scratch the surface of -classes and object-oriented programming. For more details, please -consult a book, such as Prata~\cite{Prata} or Stroustrup~\cite{S}, or -Cline's on-line FAQ~\cite{Cline}. -\index{Classes|)} - - -\subsection{References and Function Arguments} - -\index{Function!call syntax} -\index{Variable!reference} -\label{references} -\code{C}~and \CXX\ are ``call by value'' languages. Variables are not -passed to a function; instead a copy of the value is made, and the -function operates only on the copy. Though this feature causes -occasional inconvenience, it prevents an object from being altered -unexpectedly by a function call in a different part of the program. -Calling by value helps localize the logic of a program, and -circumvents easy-to-write but extremely hard-to-find bugs. - -In \CXX, a function may accept reference arguments. Passing an object -by reference grants the calling function access to the object itself, -not to a copy. There are two common applications: The object is a -large data structure for which copying is ``expensive'', or the -function \emph{needs} to modify its arguments (e.g., a function -\code{swap(x,y)} that exchanges the values of \code{x}~and -\code{y}). - -For the first situation, \CXX\ provides the \code{const} keyword, -which ensures the function does not modify its arguments, but accepts -a reference merely for efficiency. Any attempt to modify a -\code{const} argument will be caught by the compiler. Most \ePiX\ -commands accept \code{const} reference arguments. - -The ability to pass function arguments by reference is sometimes -touted as a feature in \CXX\ texts. However, the technique circumvents -the data encapsulation of calling by value, and should be avoided -unless absolutely necessary. If a function merely ``updates'' the -value of a variable, probably the variable should be of class type, -and the update should be performed by a member function. - -A function declaration must indicate that its arguments are -references. The declarations below have the indicated idiomatic -meanings. -\begin{verbatim} - class matrix; - double det(matrix); // call by value, perhaps inefficient - matrix& transpose(matrix&); // probably changes its argument - double trace(const matrix&); // does not change its argument -\end{verbatim} -Unlike pointer arguments, reference arguments impose no syntactic -burden on the user. If~\code{A} is a~\code{matrix}, then -\code{transpose(A);} and \code{trace(A);} will compile. You need not -declare explicit reference variables and pass those to the function. - - -\subsection{Overloading} - -\index{Function!overloaded} -\CXX\ provides ``overloading'': Multiple functions can be given the -same name, so long as the number and/or type of their arguments -differ. (It is \emph{not} enough for the return types alone to differ. -The compiler must be able to select a function from its calling -syntax.) To the user, the appearance is that a single function -intelligently handles multiple argument lists. Naturally, overloaded -names should refer to functions that are conceptually related. -\index{Function|)} - - -\subsection{Scope} - -\index{Variable!local} -A \CXX\ statement ends with a semicolon. A collection of statements -enclosed by curly braces is a ``code block'', and may be viewed as a -single logical statement. Curly braces determine a ``scope'', inside -which variable names may be re-used without ambiguity. Function -bodies are code blocks, as are the alternatives associated to control -statements. A variable defined between curly braces is said to be -\emph{local} to the scope in which it is defined; its value cannot -be used out of scope. Variables should be declared in the smallest -scope possible. - -The compiler is not picky about spaces, tabs, and newlines, so an -input file should be formatted to make local scopes visually -apparent. \code{emacs} automatically indents code to reflect scope, -though the default behavior does not please all users. As with -variable naming, clarity and consistency are paramount. - - -\subsection{Headers and Pre-Processing} - -A \CXX\ source file is compiled in multiple stages that occur -transparently to the user. The first step, pre-processing, involves -simple text replacement for file inclusion, macro expansion and -conditional compilation. Next, the source is compiled and assembled: -Human-readable language instructions are parsed, then represented in -assembly language. Finally, the object files are linked: Function -calls are resolved to hard-coded file offsets, possibly involving -external library files, and the program instructions are packaged into -an executable binary that the operating system can run. - -Pre-processing is used much less in~\CXX\ than in~\code{C}; the -language itself supports safer and more featureful alternatives to -macros, such as \code{const} variables and inline functions. File -inclusion and conditional compilation are the chief uses of the -pre-processor. Lines of the form -\begin{verbatim} - #include <iostream> - #include "epix.h" -\end{verbatim} -cause the contents of a \emph{header file} to be read into the source -file. A header file contains variable and function -\emph{declarations}, statements that specify types and names but do -not define actual data. Declarations tell the compiler just enough -to resolve expressions and function calls without knowing specific -values or function definitions. - -\index{Input file!conditional compilation} -Conditional compilation is similar to conditional \LaTeX\ code. For -example, a file might produce either color or monochrome output as -follows: -\begin{verbatim} -#ifdef COLOR - ... // code for generating color figure -#endif /* COLOR */ -#ifndef COLOR - ... // monochrome code -#endif /* undef COLOR */ -\end{verbatim} -The ``compiler symbol'' \code{COLOR} is an ordinary \CXX\ name. To -control compilation, either put a \code{\#define COLOR} line in the -file, or (better) supply the flag on the command line: \\ -\verb+ epix -DCOLOR <file.xp>+ \\ -Every \code{\#ifdef} must have a matching \code{\#endif}. Commenting -the \code{\#endif} is a good habit; in a realistic file, the start and -end of a conditional block may be separated by more than one screen. - - -\subsection{Comparison with \LaTeX\ Syntax} - -As a programming language, \CXX\ provides certain features common to -all languages (such as \LaTeX, MetaPost, Perl, Lisp\ldots) and adheres -to rules of grammar. Salient differences between \LaTeX\ and \CXX\ -include: - -\begin{enumerate} -\item Every \CXX\ statement and function call must end with a - semicolon. An omitted semicolon may result in a cryptic error - message from the compiler. Pre-processor directives, which start - with a~\code{\#}, do not end with a semicolon. - -\item Backslash is an escape character in \CXX: - \index{Labels} -\begin{verbatim} - // Put label $y=\sin x$ at (2,1) - // Note single ^ backslash in output - label(P(2,1), P(0,0), "$y=\\sin x$"); - // Double backslash ^^ in source -\end{verbatim} - -\item Variable and function names may contain letters (including - underscore) and digits \emph{only}, are case sensitive, and must - begin with a letter. - -\item Variables in \CXX\ must have a declared \emph{type}, such as - \code{int} (integer) or \code{double} (double-precision floating - point). If a variable has global scope and its value does not - change, the definition should probably come in the preamble or at - the beginning of \code{main}. Local variables should be defined in - the smallest possible scope. Unlike~\C, \CXX\ allows variables to be - defined where they first appear. - -\item \CXX~requires explicit use of~\code{*} to denote multiplication; - juxtaposition is not enough. \CXX~does not support the use of - \verb+^+ for exponentiation, e.g., \verb+t^2+ is invalid. Instead, - use \code{t*t}~or \code{pow(t,2)}. - -\item \CXX\ has single- and multi-line comments. Everything between a - double slash and the next newline is ignored, while the strings - \verb+/*+~and \verb+*/+ delimit multi-line comments. A single-line - comment may appear within a multi-line comment, but the compiler - does not nest multi-line comments. - \index{Input file!comment in} - -\end{enumerate} - -Between them, \C~and \CXX~have about 100~reserved keywords which -cannot be used as function or variable names. -\index{Cplusplus@\CXX|)} - - -\section{Attribute Quick Reference} -\label{section:quickref} - -In the body of an input file, the ``drawing state'' determines the -figure's appearance. Attributes are declarations, set by commands that -accept arguments of the stated type. - -A \code{len} argument is a double-quoted string containing a number -and a two-letter \LaTeX\ length unit, such as \code{"1.5pt"} or -\code{"6cm"}. A \code{color} argument is a named primary -(\code{Red()}, \code{Cyan()}, \code{White()}, etc.), a \code{Color} -specified by densities (\code{RGB(...)}, \code{CMYK(...)}, etc.), or a -\code{Color} object. Using \code{Neutral()} as a \code{Color} argument -generally turns off the corresponding attribute. - -\begin{itemize} - -\item Angular mode: \code{radians()}, \code{degrees()}, or - \code{revolutions()}. - - The angular mode affects all trigonometric operations, including - camera rotations, the drawing of arcs and ellipses, polar plotting, - label angle, and the trig functions themselves. Angle-sensitive trig - functions are capitalized, e.g., \code{Cos}, \code{Tan}. - -\item Fill style: \code{fill(color)}, \code{fill(bool)}, - \code{nofill()}. - -\item Path style: - - \begin{itemize} - - \item Width: \code{plain()}, \code{bold()}, \code{bbold()}, - \code{pen(len)}. - - \item Line style: \code{line\_style(string)}. The argument is a - WYSIWYG sequence of dashes, spaces, and periods. - \code{dash\_size(double)} and \code{dot\_sep(double)} set the - (approximate) length in~\code{pt} of the pattern. The commands - \code{solid()}, \code{dashed()}, \code{dotted()} define - ``standard'' defaults for brevity. - - \item Path color: - Paths can be drawn using \emph{two} pens, one atop the other. When - the ``base'' pen is white (or the background color) and wider than - the ``line'' pen, a path masks parts of the figure it crosses. A - 3-D effect may be obtained by making the base pen a darker shade - than the ``line'' pen. - - \code{pen(color,[len])}, \code{base(color,[len])} - - Standard widths: \code{plain(color)}, \code{bold(color)}, - \code{bbold(color)} - - \end{itemize} - -\item Text attributes: - - \begin{itemize} - - \item Color: \code{label\_color(color)} - - \item Mask: \code{label\_mask(color)}, \code{label\_pad(len)} - - \item Border: \code{label\_border(color, [len])}, - \code{label\_border(len)}. The command \code{no\_label\_border()} - turns off label borders. - - \item Font size: \code{font\_size(LaTeX size)}, no argument means - \code{normalsize}. - - \item Font face: \code{font\_face(LaTeX font)}, two-letter font - selection string, default is \code{rm}. - - \item Rotation: \code{label\_angle(double)} - - \end{itemize} - -\end{itemize} - -Do not confuse \code{Color} constructors with the similarly-named -(deprecated) lowercase attribute-setting commands, \code{rgb(r,g,b)}, -\code{cmyk(c,m,y,k)}, \code{red(d)}, etc. These commands affect text, -paths, and filled regions. For example, the single command -\code{red()} has the same effect as the three commands -\code{pen(Red())}, \code{fill(Red())}, and \code{label\_color(Red())}. - - -\texinfochapter{4}{Advanced Topics} -\label{chapter:adv} - -This chapter covers \emph{ad hoc} tricks and open-ended techniques -that require relatively more programming sophistication. You will -almost surely need an external \CXX\ reference if you do not speak the -language. - - -\section{Hidden Object Removal} -\label{section:hidden} - -\index{Hidden object removal|(} -\ePiX\ writes the output file in the same order that objects appear in -the input. The order is significant because PostScript builds a figure -in layers: Objects are drawn over objects that come earlier in the -file. Shaded polygons can be used to obtain surprisingly effective -hidden object removal in surface meshes. This section describes the -data structures defined in the source files \code{surface.*}. - -\index{Camera} -The basic idea is to create a shaded polygon class that knows its -approximate distance to the camera. For computational simplicity, a -mesh ``facet'' is treated as a quadrilateral, located at the -arithmetic mean of its vertices. A facet's boundary is created from a -map and a domain by tracing a fine mesh rectangle counterclockwise. - -To draw a parametrized surface, facets are stored in a \CXX\ vector, -sorted in decreasing order of distance to the camera, and printed to -the output file. If filling is active, the gray density of a facet -depends on the cosine of the angle between the normal vector and the -vector from the camera to the element. - -This simple algorithm works surprisingly well when mesh elements -intersect at most along complete edges. To incorporate line-like -elements (e.g., coordinate axes, wire-mesh plots) with shaded -surfaces, the best technique is often to order high-level scene -elements manually, breaking up shaded surfaces (for example, with -domain resizing or clipping) as necessary. The sample file -\filename{saddle.xp} illustrates possible techniques. - -Shaded surfaces can be decorated with a bit of hackery. For example, -the \code{facet::draw} function in \filename{facet.cc} can be -modified easily to draw line elements, tangents, or normal vectors -along with the facet itself. The sample file -\filename{decorate.xp} contains a couple of ideas. (The -decorations are activated by compiler flags; please consult the file -itself for information on compiling.) -\index{Hidden object removal|)} - - -\section{Extensions} -\label{section:extensions} - -Thanks to a suggestion of Andrew Sterian, \ePiX\ is extensible. User -extensions span a spectrum, from header files that require only basic -knowledge of~\CXX\ to separately compiled libraries that add -substantial new features. The structure of the source code is -outlined in Section~\ref{section:programmers}. - - -\subsection{Header Files} - -A \CXX~header file conventionally has suffix~\filename{.h}, as in -\filename{myheader.h}. To use this custom header, put a line -\code{\#include "myheader.h"} in your source file. - -User definitions can be easily and robustly implemented with ``inline -functions''. Inline functions are superficially similar to macros, but -are far more safe and featureful (since they are handled by the -compiler rather than by the pre-processor). Examples are -\begin{verbatim} - inline void Bold() { pen(1.6); } - inline void purple() { rgb(0.5, 0, 0.7); } - inline void draw_square(double s) { rect(P(-s,-s),P(s,s)); } - inline double cube(double x) { return pow(x,3); // x^3 } -\end{verbatim} -The keyword \code{void} signifies a function that does not return a -value, or (when used as an implicit parameter) a function that does -not accept arguments. Inline function definitions are syntactically -identical to ordinary function definitions, but \emph{must} occur in a -header file or in the source file where they are used. The examples -above might be used in an input file as follows: -\begin{verbatim} - Bold(); - draw_square(cube(1.25)); -\end{verbatim} - - -\subsection{Compiling} - -The next few sections outline the creation of a ``static library'' on -GNU/Linux, and explain how to incorporate custom features at runtime. -The extensively-commented sample files \filename{std\_F.cc}~and -\filename{std\_F.h} illustrate the techniques described below, and may -be used for guidance and experimentation. - -A small library is usually written as a \emph{header} file, which -contains class and function declarations (also called ``prototypes''), -and a \emph{source} file, which contains the actual -code. Conventionally (under *nix), these files have extension -\filename{.h}~and \filename{.cc} respectively. Header and source files -may ``include'' other header files, to incorporate additional -functionality. -\begin{verbatim} -/* my_code.h */ -#ifndef MY_CODE -#define MY_CODE -#include <cmath> // standard library math header -#include "epix.h" // ePiX header -using ePiX::P; - -namespace Mine { // to avoid name conflicts - // functions for special relativity - double lorentz_norm(const P&); - bool spacelike(const P&); -} // end of namespace -#endif /* MY_CODE */ -\end{verbatim} -This file exhibits two ``safety features''. The three \code{MY\_CODE} -lines prevent the file from being included multiple times. In a file -of this size, inclusion protection is overkill, but as your code base -grows and the number of header files increases, this protection is -essential. Second, the header introduces a ``Mine'' namespace. Inside -this namespace, two functions are declared as prototypes, giving the -function's return type, name, and argument type(s). A header file -should be commented fairly liberally, so that a year or two from now -you'll be able to decipher the file's contents. For a longer file, -version and contact information, an overall comment describing the -file's features, and license information are appropriate. - -Next, the corresponding source file; definitions are also placed into -the namespace, and must match their prototypes from the header file -exactly. -\begin{verbatim} -/* my_code.cc */ -#include "my_code.h" -using namespace ePiX; - -namespace Mine { - double lorentz_norm(const P& arg) - { - double x(arg.x1()), y(arg.x2()), z(arg.x3()); // extract coords - return (y-x)*(y+x) + z*z; // -x^2 + y^2 + z^2 - } - bool spacelike(const P& arg) - { - return (lorentz_norm(arg) > 0); // true if inequality is - } -} // end of namespace -\end{verbatim} -Copies of these files are included with the source code so you can -experiment with them. Next, the source file must be ``compiled'', -``archived'', and ``indexed''. In the commands below, the percent sign -is the prompt. -\begin{verbatim} -% g++ -c my_code.cc -% ar -ru libcustom.a my_code.o -% ranlib libcustom.a -\end{verbatim} -Please see your system documentation for details on command options -and what each step does. For linking (below), the name of the library -file must begin ``lib'' and have the extension~\filename{.a}. Once these -steps are successfully completed, put the library \filename{libcustom.a} -and header file \filename{my\_code.h} in your project directory. You're -ready to use the code in an \ePiX\ figure. - - -\subsection{Runtime Linking} - -The script~\epix\ allows input files to be linked with external -libraries at run time, when the input file is compiled into a -temporary executable. - -\epix\ recognizes command line options and passes them verbatim to the -compiler. The most commonly used options are those of the form -\begin{verbatim} - -I<include> -L<libdir> -l<lib> -\end{verbatim} -For example, to link \filename{figure.xp} against -\filename{mylibs/libcustom.a}, run the command -\begin{verbatim} - epix -Lmylibs -lcustom figure -\end{verbatim} -The options \code{-I. -L.} tell the compiler to look in the current -directory for header and library files. Compiler options may appear -in any order, but must come before the name of the input file(s). - -Compiler options may be placed in the configuration file -\filename{\$HOME/.epixrc}, with syntax as above. A line in the config -file that contains a pound sign~(\code{\#}) is a comment, no matter -where in the line the~\code{\#} appears. If any non-comment line -fails to start with a dash, the rest of the file is silently -discarded. Command-line options are read before the config file. - - -\subsection{Using Multiple Versions} - -The script \filename{epix}~links by default against the \code{C}~math -library \code{libm.a}~and the \ePiX\ library \code{libepix.a}. The -command option \code{--no-defaults} clears the header and include -paths and removes \code{libepix.a} from the link list. The script may -therefore be used with multiple versions of \ePiX, a potentially -useful feature if you regularly need to compile old source files, or -simply prefer the syntax of an older version. - -To install and use (say) Version~1.0.0, build the package according to -its \filename{INSTALL} instructions, but \emph{do not use the makefile - to install}. Instead, manually install the header and library only, -using their version number: -\begin{verbatim} -# install -m 644 epix.h /usr/local/include/epix-1.0.h -# install -m 644 libepix.a /usr/local/lib/libepix-1.0.a -\end{verbatim} -A non-system directory may be used instead of \filename{/usr/local}. -To use the old version, a source file must \code{include} the -appropriate header file (which is identified by its version number). -To compile, issue a command such as -\begin{verbatim} -epix --no-defaults -I/usr/local -L/usr/local -lepix-1.0 file.xp -\end{verbatim} - - -\section{Programmer's Guide} -\label{section:programmers} - -This section briefly surveys \ePiX's implementation, and is intended -for (potential) programmers. The source code is divided into modules -with small, well-defined responsibilities, but the user interface is -mostly compatible with the syntax of Version~1.0. These constraints -demanded a degree of implementation hiding. For example, the -user-visible classes defined in \filename{Color.h}, \filename{path.h}, -and~\filename{screen.h} contain only a pointer to the implementation -class, and style data is hidden behind global commands. - -Functionally, the code consists of the user interface; implementation -class\-es comprising drawing attributes, spatial objects, screens and -representations of their elements, and output; and miscellaneous -utility functions. The headers in each group, and their contents, are -described in Section~\ref{section:interface}. - -The user interface headers are assembled into a single file, -\filename{epix.h}, and installed in \filename{/usr/local/include} by -default. In normal use, the shell scripts read only the user interface -header. The individual headers, including the components of -\filename{epix.h}, are installed in -\filename{/usr/local/include/epix}. These are provided for authors of -external libraries, who may need access to implementation details. - - -\subsection{External Packages} - -\ePiX\ harnesses the computational power of~\CXX\ to the typographical -capabilities of \LaTeX. Consequently, \ePiX\ should be viewed in part -as a framework for expressing numerical data visually. - -In the course of your work, you may develop specialized code filling a -gap in \ePiX's functionality. If your code seems likely to be of -interest to other users, please consider bundling it as an external -package and notifying the \ePiX\ community so your work can be linked -from the project pages and distributed to interested users. - -There are no formal requirements for external packages, but in the -interest of uniformity contributed code should follow the GNU Coding -Standards~\cite{GNUCoding}. At a minimum, an external package should -build with the standard \code{./configure; make; make install} -commands, and the \code{configure} script should accept an option -\code{--with-epix} for the user to specify a non-default \ePiX\ -install directory. - -If an external package builds a static library, it should provide a -single header containing all the package's entry points, and enclose -its interface in a namespace. Entry points should not collide with -\ePiX\ functions. Naming the package ``\filename{epix-<...>}'' is a -good idea, but not essential. For example, a package providing textual -nodes and diagram layout might be named \filename{epix-nodes}. Input -files would use the package with the lines -\begin{verbatim} - #include "epix-nodes.h" - using namespace ePiX-nodes; -\end{verbatim} -and be compiled with -\begin{verbatim} - epix -lepix-nodes <file> -\end{verbatim} - -The user and internal interfaces of \ePiX-1.2 are not likely to -change. Still, it's prudent to rely only on the user interface in -contributed code whenever possible. Doing so also simplifies your work -as an author; your library can simply \code{include} the user header -file, and deal only with high-level objects and drawing attributes. - - -\subsection{User Interface} -\label{section:interface} - -These files (in order) comprise the global header \filename{epix.h}. - -\Header{enums.h} Marker, alignment, Riemann integral, and vector field -types. - -\Header{length.h} Physical lengths, conceptually a number and -two-letter \LaTeX\ length unit. - -\Header{interval.h} Closed, open, and half-open interval ranges for -data culling. - -\Header{triples.h} The \code{P} class. - -\Header{functions.h} Angle-sensitive trig functions, miscellaneous -utility functions, the \code{Deriv}~and \code{Integral} classes. - -\Header{pairs.h} Screen locations and displacements, with complex -arithmetic operations. - -\Header{Color.h} The Color class interface, named -primaries and constructors. - -\Header{state.h} Angle mode; clipping and cropping; label styles; -filling; arrow head style; dot and tick sizes, dash length; line -style; line and base pen attributes; color-setting commands. - -\Header{frame.h} Orthonormal bases. - -\Header{domain.h} Coordinate boxes for function plotting. - -\Header{camera.h} The camera. - -\Header{screen.h} The screen class. - -\Header{picture.h} Dimension-setting, offset, layout, decoration, -verbatim text, and output format commands. - -\Header{markers.h} Point markers, axis labels, and coordinate axes. - -\Header{axis.h} Coordinate axes and labels in various styles. - -\Header{legend.h} Plot legends. - -\Header{path.h} The path class. - -\Header{curves.h} Polygons, arrows, ellipses, arcs, splines, -coordinate grids, and recursive fractal curves. - -\Header{circle.h} The \code{Circle} shape object class. - -\Header{plane.h} The \code{Plane} shape object class. - -\Header{segment.h} The \code{Segment} shape object class. - -\Header{sphere.h} The \code{Sphere} shape object class. - -\Header{intersections.h} Shape object intersection operators. - -\Header{plots.h} Plotting commands. - -\Header{surface.h} Shaded surface plots. - -\Header{data\_mask.h} Helper class for data pruning. - -\Header{data\_file.h} Class for storing and representing data. - -\Header{data\_bins.h} Class for sorting and counting data. - -\Header{geometry.h} Latitudes and longitudes; spherical plotting, -arcs, polygons, and polyhedra; hyperbolic arcs. - - -\subsection{Implementation Classes} - -\Header{Color\_Base.h} The Color implementation interface. - -\Header{Color\_CMY.h} The CMY color model. - -\Header{Color\_CMYK.h} The CMYK color model. - -\Header{Color\_Gray.h} The Gray color model. - -\Header{Color\_Neutral.h} Each color class has a ``Neutral'' member -that converts colors to that model by filtering. This file defines the -unique ``model-less'' Neutral color for which filtering performs no -action. - -\Header{Color\_RGB.h} The RGB color model. - -\Header{Color\_Sep.h} Classes for CMYK separation. - -\Header{active\_screen.h} Simple manipulator for the active screen. - -\Header{picture\_data.h} Picture implementation: two \code{screen}s -(representing the \code{canvas}~and the output page), true dimensions -and offsets, pointer to output format, list of colors, and lists of -verbatim text to write before and after printing the \code{picture} -environment in the output file. For simplicity, the \code{screen}s and -dimensions are public; encapsulation from the user results from -``hiding'' this header. - - -\subsubsection*{Style Attributes} - -Declaration-style attributes are maintained with functions returning -static references: \code{the\_angle\_style()}, -\code{the\_arrowhead\_style()}, \code{the\_label\_style()}, -\code{the\_mark\_size()}, \code{the\_paint\_style()}, and -\code{the\_path\_style()}. Each function is declared in the -analogously-named header. - -\Header{angle\_units.h} Angular modes: \code{radians}, -\code{revolutions}, and \code{degrees}. - -\Header{arrow\_style.h} Arrow head style data: width, ratio, and -inset. - -\Header{label\_style.h} Text object style: Label and mask colors, -padding, border color and width, alignment, font size, font face, and -angle. - -\Header{marker\_style.h} Dot and tick sizes. - -\Header{paint\_style.h} Line and base pens, fill color. - -\Header{path\_style.h} Solid, dashed, dotted lines. - -\Header{pen\_data.h} The pen class. - - -\subsubsection*{Objects} - -\Header{arrow\_data.h} Arrow representation. - -\Header{facet.h} Shaded surface elements. - -\Header{label\_data.h} Text (label and marker) objects. - -\Header{legend\_item.h} Items for \code{legend}s. - -\Header{path\_data.h} Path implementation. - -\Header{spline.h} The natural spline class. - -\Header{spline\_data.h} Templates for quadratic and cubic splines. - - -\subsubsection*{Screen Representation} - -Elements in a \code{screen} are represented polymorphically as -``\code{tile}s'', of which there are six types: \code{glyph} (textual -elements), \code{pen\_arrow} (arrows), \code{pen\_fill} (filled -regions), \code{pen\_line} (path-like elements), \code{verbatim} -(raw text), and \code{legend\_tile} (legends). - -Border and background shape are dictated by the \code{screen\_mask} -class. The cropping algorithm assumes the contour of a screen mask is -convex. - -\Header{affine.h} Affine maps. - -\Header{cropping.h} Screen mask cropping. - -\Header{glyph.h} Markers and labels. - -\Header{legend\_tile.h} Screen representation of a \code{legend}. - -\Header{mask\_diamond.h} Screen diamond mask. - -\Header{mask\_ellipse.h} Screen elliptical mask. - -\Header{mask\_rectangle.h} Screen rectangular mask. - -\Header{pen\_arrow.h} Arrows. - -\Header{pen\_fill.h} Filled regions. - -\Header{pen\_line.h} Paths. - -\Header{screen\_data.h} Screen implementation class. - -\Header{screen\_mask.h} Screen mask interface. - -\Header{tile.h} Screen element interface. - -\Header{verbatim.h} Text in output stream. - - -\subsubsection*{Output} - -Output is divided into a couple of high-level operations and several -``atomic'' low-level operations. To create a new output -format, one need only implement the \code{format} interface for the -desired file type. Paths and filled regions may be implemented however -the output type dictates. - -\Header{eepic.h} eepic macros. - -\Header{fmt\_template.h} ``skeleton'' header for new output formats. - -\Header{format.h} The output interface. - -\Header{pst.h} PSTricks macros. - -\Header{tikz.h} tikz macros. - - -\subsubsection*{Utilities} - -\Header{Color\_Utils.h} Functions for setting color channel densities. - -\Header{clipping.h} The clip box. - -\Header{constants.h} Global constants: Line widths; dot, tick, and -dash sizes; arrowhead parameters; miscellaneous numerical constants -and internal parameters. - -\Header{crop\_algorithms.h} Path and loop clipping templates. - -\Header{deriv.h} Finite difference template. - -\Header{edge\_data.h} Path element representation template. - -\Header{errors.h} Warning and error messages. - -\Header{frac.h} Rational numbers and operators. - -\Header{halfspace.h} Halfspace cutting. - -\Header{hatching.h} Filling regions in eepic. - -\Header{lens.h} Camera lenses. - -\Header{map.h} Wrappers for templated plotting. - -\Header{plot\_algorithms.h} Plotting templates. - -\Header{screen\_crop.h} Crop paths and loops. - -\Header{utils.h} Truncation, date and time, line breaking. - - -\appendix -\texinfoappendix{A}{Software Freedom} -\index{Free software|(} - -Academics in general, and mathematicians in particular, depend on free -exchange of information. We prove theorems or establish experimental -results, write up formal accounts, place preprints on public file -servers, and submit papers to peer-reviewed journals. If accepted, the -results---data, techniques, methods of reasoning, citations, and -conclusions---are published in print and become part of the public -record, governed by copyright law. Libraries purchase journal -subscriptions, but researchers and scholars may use ideas from the -literature merely by giving appropriate citations in their own -work. ``Theft'' arises from false claims of authorship. - -Carried over to software, the academic process would guarantee rights -similar to those provided by the GNU General Public License (GPL): - -\begin{itemize} - -\item (GPL~0) To run a program for any purpose. - -\item (GPL~1) To study how the program works, and adapt it to your - needs. - -\item (GPL~2) To redistribute copies of the program. - -\item (GPL~3) To improve the program, and release improvements to the - public, so that the whole community benefits. - -\end{itemize} - -In reality, attitudes toward software differ markedly. Most academics -work on a proprietary platform, use proprietary software for research -and teaching, and share information with colleagues and students in -proprietary, even obfuscated, data formats. Contrary to the academic -ethic, proprietary software licenses restrict access to information: -preventing users from learning how a program works internally -(``reverse engineering''), limiting the number of users who may run a -piece of software, and forbidding users from running (or sometimes -even installing) a purchased copy on multiple machines. - -Restrictions on use aside, if one cannot examine a program's source -code, one cannot fully trust the output, any more than one can trust -(for purposes of scientific publication) results of a commercial -testing lab. - -\texicomment -\noindent$\phantom{.}$\hfil\vbox{\hrule width 4in}\hfil -\texicommentend - -Consider a hypothetical future world in which scholarly results are -disseminated like software. Instead of subscriptions, journals -sell licenses granting readership to a specified number of -individuals. Photocopying an article for a class or research seminar -constitutes ``piracy'', though if the institution has purchased a -sufficiently large site license the teacher or speaker may bring the -physical volume to class and project the pages onto a screen. - -Of course, reading an article is scarcely enlightening. Mathematics -papers contain only the statements of theorems. Merely opening the -journal binds the reader to a lengthy legal agreement, stating that -theorems be used only for specific purposes and threatening serious -legal consequences for attempting to discover the author's proofs. - -The actions of a single student, employee, or faculty member can -expose an institution to a costly ``journal audit'' from the -Mathematical Society of America (MSA), with the institution -responsible for legal costs if the audit reveals license violations -anywhere in the organization. - -Mathematicians who long for the Old Days when papers contained -proofs and were shared freely are dismissed as idealistic cranks -or labeled anti-business communists. Common knowledge asserts the -obvious superiority of proprietary journals, and the necessity of -licenses for keeping mathematicians gainfully employed. - -\texicomment -\noindent$\phantom{.}$\hfil\vbox{\hrule width 4in}\hfil -\texicommentend - -Back in our world, some vendors have attempted to placate opponents of -closed source with ``shared source'' licenses, under which one may -sign a non-disclosure agreement and subsequently examine source -code. In the future world analogy, a shared source agreement would -allow journal licensees to sign an NDA, then see the proofs of -theorems. Readers could thereby correct errors in proofs (benefitting -the publisher by improving the reliability of the journal), but would -be legally forbidden from using the ideas elsewhere (denying benefit -to other mathematicians). - -Legally and conceptually codifying software as a commodity ignores a -fundamental reality: Like an idea or recipe, software can be copied -without loss of the original. The perception of ``theft'' by copying -arises from an artificial belief that software has an owner who must -be monetarily compensated each time a person acquires a copy. The -nature of software does not enforce the ``sale'' model in the way -services and physical commodities do. It therefore seems -philosophically inappropriate to treat software as a commodity, and -perilous to conform the legal system to the enforcement of such a -model. - -At its best, software enhances our productivity and -creativity. Sharing software, like sharing ideas, benefits a larger -number of people without detriment to existing users. I hope this -modest program is, in conjunction with the much larger efforts of -others (especially Donald Knuth, Richard Stallman, and the many people -who have contributed to the authorship of \LaTeX\ and its packages), -useful to you in your mathematical work. - -Please visit the Free Software Foundation, at -\URL{www.fsf.org}, to learn more about free software and how -you can contribute to its development and adoption. -\index{Free software|)} - -\texinfoappendix{B}{Acknowledgments} - -\ePiX\ is built on the work of many people (unfortunately, most of -whom I am unaware). The following people have contributed, sometimes -unknowingly but always generously: - -\paragraph{Infrastructure} Donald Knuth, Conrad Kwok, Leslie Lamport, -Tim Morgan, Piet van~Oostrum, Sunil Podar, Richard Stallman, Till -Tantau, Herbert Voss, Timothy van~Zandt - -\paragraph{Enhancements} Jay Belanger, Robin Blume-Kohout, Julian -Gilbey, Marcus Hanwell, Yvon Henel, Svend Daug{\aa}rd Pedersen, Andrew -Sterian - -\paragraph{Porting and packaging} Julian Gilbey (Debian); Tsuguru Kato -(FreeBSD); Markus Dittrich, Danny van Dyk, Christian Faulhammer, -Olivier Fisette, Chris Gianelloni, Michael Hanselmann, Marcus Hanwell, -David Holm, Peter Johanson, Patrick Kursawe, Tobias Scherbaum, Markus -Ullmann (Gentoo); Guido Gonzato (RPM); Rene Rebe (T2) - -\paragraph{Debugging, advice, and other assistance} Jay Belanger, -Felipe Paulo Guazzi Bergo, Karl Berry, Robin Blume-Kohout, Patrick -Cousot, Stephen Gibson, Julian Gilbey, Dov Grobgeld, Bob Grover, Jim -Hefferon, Jacques L'helgoual, Yvon Henel, Hartmut Henkel, Herng-Jeng -Jou, Walter Kehowski, Kevin McCormick, Ross Moore, Thorsten Riess, -Alan Sill, Neel Smith, Michael Somos, Andrew Sterian, Ryszard Tanas, -Kai Trukenmueller, Torbjorn Vik, Wenguang Wang, Gabe Weaver, Mariusz -Wodzicki - -\texicomment -\begin{thebibliography}{9} -% -\bibitem{Cline} Marshall Cline, \emph{\CXX\ FAQ Lite}, \\ - \URL{http://www.parashift.com/c++-faq-lite/} -% -\bibitem{xcolor} Uwe Kern, \emph{Extending \LaTeX's color facilities: - the \code{xcolor} package}, white paper, Jan.~21, 2007 -% -\bibitem{KnR} Brian Kernighan and Dennis Ritchie, \emph{The \code{C} - Programming Language}, Second Ed., Prentice-Hall Software Series, - 1988 -% -\bibitem{GNUC} Sandra Loosemore, Richard M. Stallman, et.\ al., - \emph{The GNU \code{C}~Library Reference Manual}, GNU Press, - 2004 -% -\bibitem{Prata} Stephen Prata, \emph{\CXX\ Primer Plus}, Sams, 2002 -% -\bibitem{R} Keith Reckdahl, \emph{Using Imported Graphics in - \LaTeX2e}, Version~2.0, white paper, Dec.~15, 1997 -% -\bibitem{GNUCoding} Richard M. Stallman, et.\ al., \emph{The GNU - Coding Standards}, \\ - \URL{http://www.gnu.org/prep/standards/} -% -\bibitem{S} Bjarne Stroustrup, \emph{The \CXX\ Programming Language}, - Special Ed., Addison-Wesley, 1997 -% -\bibitem{Z} Timothy van~Zandt, \emph{PSTricks: PostScript Macros for - Generic \TeX}, Version~0.93a, white paper, Mar.~12, 1993 -% -\end{thebibliography} - -\clearpage - -\printindex - -\end{document} - -\texicommentend diff --git a/graphics/epix/doc/marker.eepic b/graphics/epix/doc/marker.eepic deleted file mode 100644 index 5ee5923a3b..0000000000 --- a/graphics/epix/doc/marker.eepic +++ /dev/null @@ -1,39 +0,0 @@ -%% Generated from marker.xp on Tue Jan 4 15:32:18 EST 2005 by -%% ePiX-1.0.3 -%% -%% Cartesian bounding box: [0,5] x [0,1] -%% Actual size: 3.75in x 1in -%% Figure offset: right by 0in, up by 0in -%% -\setlength{\unitlength}{0.25in} -\begin{picture}(15,4)(-0,-0) -%% --- -\put(0.664176,3.77861){{\tt{CIRC}}} -\whiten\put(0,4){\makebox(0,0)[c]{{\circle{0.166044}}}} -\put(4.41418,3.77861){{\tt{SPOT}}} -\put(3.75,4){\makebox(0,0)[c]{{\circle*{0.249066}}}} -\put(8.16418,3.77861){{\tt{RING}}} -\put(7.5,4){\makebox(0,0)[c]{{\circle{0.249066}}}} -\put(11.9142,3.77861){{\tt{DOT}}} -\put(11.25,4){\makebox(0,0)[c]{{\circle*{0.166044}}}} -\put(15.6642,3.77861){{\tt{DDOT}}} -\put(15,4){\makebox(0,0)[c]{{\circle*{0.110696}}}} -\put(0.664176,1.77861){{\tt{PLUS}}} -\put(0,2){\makebox(0,0)[c]{+}} -\put(4.41418,1.77861){{\tt{OPLUS}}} -\put(3.75,2){\makebox(0,0)[c]{$\oplus$}} -\put(8.16418,1.77861){{\tt{TIMES}}} -\put(7.5,2){\makebox(0,0)[c]{$\times$}} -\put(11.9142,1.77861){{\tt{OTIMES}}} -\put(11.25,2){\makebox(0,0)[c]{$\otimes$}} -\put(0.664176,-0.221392){{\tt{DIAMOND}}} -\put(0,0){\makebox(0,0)[c]{$\diamond$}} -\put(4.41418,-0.221392){{\tt{UP}}} -\put(3.75,0){\makebox(0,0)[c]{$\bigtriangleup$}} -\put(8.16418,-0.221392){{\tt{DOWN}}} -\put(7.5,0){\makebox(0,0)[c]{$\bigtriangledown$}} -\put(11.9142,-0.221392){{\tt{BOX}}} -\put(11.25,0){\makebox(0,0)[c]{\rule{3pt}{3pt}}} -\put(15.6642,-0.221392){{\tt{BBOX}}} -\put(15,0){\makebox(0,0)[c]{\rule{2pt}{2pt}}} -\end{picture} diff --git a/graphics/epix/doc/marker.xp b/graphics/epix/doc/marker.xp deleted file mode 100644 index f1569c1476..0000000000 --- a/graphics/epix/doc/marker.xp +++ /dev/null @@ -1,68 +0,0 @@ -/* -*-ePiX-*- */ -/* marker.c -- types of marker */ -#include "epix.h" -using namespace ePiX; - -int main() -{ - unitlength("0.25in"); - picture(P(15,4)); - bounding_box(P(0,0), P(5,1)); - // offset(P(-1,0)); - - begin(); - - double x1 = x_min; - double x2 = x_min + x_size/4; - double x3 = x_min + 2*x_size/4; - double x4 = x_min + 3*x_size/4; - double x5 = x_max; - - double y1 = y_min; - double y2 = y_min + y_size/2; - double y3 = y_max; - - label(P(x1,y3), P(12,-4), "{\\tt{CIRC}}"); - circ(P(x1,y3)); - - label(P(x2,y3), P(12,-4), "{\\tt{SPOT}}"); - spot(P(x2,y3)); - - label(P(x3,y3), P(12,-4), "{\\tt{RING}}"); - ring(P(x3,y3)); - - label(P(x4,y3), P(12,-4), "{\\tt{DOT}}"); - dot(P(x4,y3)); - - label(P(x5,y3), P(12,-4), "{\\tt{DDOT}}"); - ddot(P(x5,y3)); - - label(P(x1,y2), P(12,-4), "{\\tt{PLUS}}"); - marker(P(x1,y2), PLUS); - - label(P(x2,y2), P(12,-4), "{\\tt{OPLUS}}"); - marker(P(x2,y2), OPLUS); - - label(P(x3,y2), P(12,-4), "{\\tt{TIMES}}"); - marker(P(x3,y2), TIMES); - - label(P(x4,y2), P(12,-4), "{\\tt{OTIMES}}"); - marker(P(x4,y2), OTIMES); - - label(P(x1,y1), P(12,-4), "{\\tt{DIAMOND}}"); - marker(P(x1,y1), DIAMOND); - - label(P(x2,y1), P(12,-4), "{\\tt{UP}}"); - marker(P(x2,y1),UP); - - label(P(x3,y1), P(12,-4), "{\\tt{DOWN}}"); - marker(P(x3,y1), DOWN); - - label(P(x4,y1), P(12,-4), "{\\tt{BOX}}"); - marker(P(x4,y1), BOX); - - label(P(x5,y1), P(12,-4), "{\\tt{BBOX}}"); - marker(P(x5,y1), BBOX); - - end(); -} diff --git a/graphics/epix/doc/my_code.cc b/graphics/epix/doc/my_code.cc deleted file mode 100644 index b7365fa63c..0000000000 --- a/graphics/epix/doc/my_code.cc +++ /dev/null @@ -1,15 +0,0 @@ -/* my_code.cc */ -#include "my_code.h" -using namespace ePiX; - -namespace Mine { - double lorentz_norm(P arg) - { - double x=arg.x1(), y=arg.x2(), z=arg.x3(); // extract coords - return -x*x + y*y + z*z; - } - bool spacelike(P arg) - { - return (lorentz_norm(arg) > 0); - } -} // end of namespace diff --git a/graphics/epix/doc/my_code.h b/graphics/epix/doc/my_code.h deleted file mode 100644 index 229e80dbf4..0000000000 --- a/graphics/epix/doc/my_code.h +++ /dev/null @@ -1,10 +0,0 @@ -/* my_code.h */ -#include <cmath> // standard library math header -#include "epix.h" // ePiX header -using ePiX::P; - -namespace Mine { // to avoid name conflicts - // functions for special relativity - double lorentz_norm(P); - bool spacelike(P); -} // end of namespace diff --git a/graphics/epix/doc/objects.eepic b/graphics/epix/doc/objects.eepic deleted file mode 100644 index 9b17600895..0000000000 --- a/graphics/epix/doc/objects.eepic +++ /dev/null @@ -1,412 +0,0 @@ -%% Generated from objects.xp on Thu Jun 28 14:55:45 EDT 2007 by -%% ePiX-1.1.6 -%% -%% Cartesian bounding box: [0,5] x [0,2] -%% Actual size: 3.75 x 1.5in -%% Figure offset: left by 0in, down by 0in -%% -\xdefinecolor{rgb_000000}{rgb}{0,0,0} -\xdefinecolor{rgb_e5e5e5}{rgb}{0.898039,0.898039,0.898039} -\xdefinecolor{rgb_ffffff}{rgb}{1,1,1} -\setlength{\unitlength}{1in} -\begin{picture}(3.75,1.5)(-0,-0) -\path(0.675,0.75)(2.325,0.75)(1.5,1.125)(0.675,0.75) -%% -\path(3.1875,1.125)(3.18724,1.13481)(3.18647,1.1446) - (3.18519,1.15433)(3.1834,1.16398)(3.18111,1.17353)(3.17832,1.18294) - (3.17505,1.19219)(3.17129,1.20126)(3.16706,1.21012) - (3.16238,1.21875)(3.15725,1.22712)(3.15169,1.23521)(3.14571,1.243) - (3.13934,1.25046)(3.13258,1.25758)(3.12546,1.26434)(3.118,1.27071) - (3.11021,1.27669)(3.10212,1.28225)(3.09375,1.28738) - (3.08512,1.29206)(3.07626,1.29629)(3.06719,1.30005) - (3.05794,1.30332)(3.04853,1.30611)(3.03898,1.3084)(3.02933,1.31019) - (3.0196,1.31147)(3.00981,1.31224)(3,1.3125)(2.99019,1.31224) - (2.9804,1.31147)(2.97067,1.31019)(2.96102,1.3084)(2.95147,1.30611) - (2.94206,1.30332)(2.93281,1.30005)(2.92374,1.29629) - (2.91488,1.29206)(2.90625,1.28738)(2.89788,1.28225) - (2.88979,1.27669)(2.882,1.27071)(2.87454,1.26434)(2.86742,1.25758) - (2.86066,1.25046)(2.85429,1.243)(2.84831,1.23521)(2.84275,1.22712) - (2.83762,1.21875)(2.83294,1.21012)(2.82871,1.20126) - (2.82495,1.19219)(2.82168,1.18294)(2.81889,1.17353)(2.8166,1.16398) - (2.81481,1.15433)(2.81353,1.1446)(2.81276,1.13481)(2.8125,1.125) - (2.81276,1.11519)(2.81353,1.1054)(2.81481,1.09567)(2.8166,1.08602) - (2.81889,1.07647)(2.82168,1.06706)(2.82495,1.05781) - (2.82871,1.04874)(2.83294,1.03988)(2.83762,1.03125) - (2.84275,1.02288)(2.84831,1.01479)(2.85429,1.007)(2.86066,0.999538) - (2.86742,0.992417)(2.87454,0.98566)(2.882,0.979285) - (2.88979,0.973309)(2.89788,0.967749)(2.90625,0.96262) - (2.91488,0.957936)(2.92374,0.95371)(2.93281,0.949954) - (2.94206,0.946677)(2.95147,0.943889)(2.96102,0.941597) - (2.97067,0.939808)(2.9804,0.938527)(2.99019,0.937757)(3,0.9375) - (3.00981,0.937757)(3.0196,0.938527)(3.02933,0.939808) - (3.03898,0.941597)(3.04853,0.943889)(3.05794,0.946677) - (3.06719,0.949954)(3.07626,0.95371)(3.08512,0.957936) - (3.09375,0.96262)(3.10212,0.967749)(3.11021,0.973309) - (3.118,0.979285)(3.12546,0.98566)(3.13258,0.992417) - (3.13934,0.999538)(3.14571,1.007)(3.15169,1.01479)(3.15725,1.02288) - (3.16238,1.03125)(3.16706,1.03988)(3.17129,1.04874) - (3.17505,1.05781)(3.17832,1.06706)(3.18111,1.07647)(3.1834,1.08602) - (3.18519,1.09567)(3.18647,1.1054)(3.18724,1.11519)(3.1875,1.125) -%% -\path(0.75,0)(2.25,0)(2.25,0.75)(0.75,0.75)(0.75,0) -%% -\color{rgb_e5e5e5}% -\path(2.025,0.00550459)(1.725,0.00550459) -\path(2.025,0.0110092)(1.725,0.0110092) -\path(2.025,0.0165138)(1.725,0.0165138) -\path(2.025,0.0220183)(1.725,0.0220183) -\path(2.025,0.0275229)(1.725,0.0275229) -\path(2.025,0.0330275)(1.725,0.0330275) -\path(2.025,0.0385321)(1.725,0.0385321) -\path(2.025,0.0440367)(1.725,0.0440367) -\path(2.025,0.0495413)(1.725,0.0495413) -\path(2.025,0.0550459)(1.725,0.0550459) -\path(2.025,0.0605505)(1.725,0.0605505) -\path(2.025,0.066055)(1.725,0.066055) -\path(2.025,0.0715596)(1.725,0.0715596) -\path(2.025,0.0770642)(1.725,0.0770642) -\path(2.025,0.0825688)(1.725,0.0825688) -\path(2.025,0.0880734)(1.725,0.0880734) -\path(2.025,0.093578)(1.725,0.093578) -\path(2.025,0.0990826)(1.725,0.0990826) -\path(2.025,0.104587)(1.725,0.104587) -\path(2.025,0.110092)(1.725,0.110092) -\path(2.025,0.115596)(1.725,0.115596) -\path(2.025,0.121101)(1.725,0.121101) -\path(2.025,0.126606)(1.725,0.126606) -\path(2.025,0.13211)(1.725,0.13211) -\path(2.025,0.137615)(1.725,0.137615) -\path(2.025,0.143119)(1.725,0.143119) -\path(2.025,0.148624)(1.725,0.148624) -\path(2.025,0.154128)(1.725,0.154128) -\path(2.025,0.159633)(1.725,0.159633) -\path(2.025,0.165138)(1.725,0.165138) -\path(2.025,0.170642)(1.725,0.170642) -\path(2.025,0.176147)(1.725,0.176147) -\path(2.025,0.181651)(1.725,0.181651) -\path(2.025,0.187156)(1.725,0.187156) -\path(2.025,0.192661)(1.725,0.192661) -\path(2.025,0.198165)(1.725,0.198165) -\path(2.025,0.20367)(1.725,0.20367) -\path(2.025,0.209174)(1.725,0.209174) -\path(2.025,0.214679)(1.725,0.214679) -\path(2.025,0.220183)(1.725,0.220183) -\path(2.025,0.225688)(1.725,0.225688) -\path(2.025,0.231193)(1.725,0.231193) -\path(2.025,0.236697)(1.725,0.236697) -\path(2.025,0.242202)(1.725,0.242202) -\path(2.025,0.247706)(1.725,0.247706) -\path(2.025,0.253211)(1.725,0.253211) -\path(2.025,0.258716)(1.725,0.258716) -\path(2.025,0.26422)(1.725,0.26422) -\path(2.025,0.269725)(1.725,0.269725) -\path(2.025,0.275229)(1.725,0.275229) -\path(2.025,0.280734)(1.725,0.280734) -\path(2.025,0.286239)(1.725,0.286239) -\path(2.025,0.291743)(1.725,0.291743) -\path(2.025,0.297248)(1.725,0.297248) -\path(2.025,0.302752)(1.725,0.302752) -\path(2.025,0.308257)(1.725,0.308257) -\path(2.025,0.313761)(1.725,0.313761) -\path(2.025,0.319266)(1.725,0.319266) -\path(2.025,0.324771)(1.725,0.324771) -\path(2.025,0.330275)(1.725,0.330275) -\path(2.025,0.33578)(1.725,0.33578) -\path(2.025,0.341284)(1.725,0.341284) -\path(2.025,0.346789)(1.725,0.346789) -\path(2.025,0.352294)(1.725,0.352294) -\path(2.025,0.357798)(1.725,0.357798) -\path(2.025,0.363303)(1.725,0.363303) -\path(2.025,0.368807)(1.725,0.368807) -\path(2.025,0.374312)(1.725,0.374312) -\path(2.025,0.379817)(1.725,0.379817) -\path(2.025,0.385321)(1.725,0.385321) -\path(2.025,0.390826)(1.725,0.390826) -\path(2.025,0.39633)(1.725,0.39633) -\path(2.025,0.401835)(1.725,0.401835) -\path(2.025,0.407339)(1.725,0.407339) -\path(2.025,0.412844)(1.725,0.412844) -\path(2.025,0.418349)(1.725,0.418349) -\path(2.025,0.423853)(1.725,0.423853) -\path(2.025,0.429358)(1.725,0.429358) -\path(2.025,0.434862)(1.725,0.434862) -\path(2.025,0.440367)(1.725,0.440367) -\path(2.025,0.445872)(1.725,0.445872) -\path(2.025,0.451376)(1.725,0.451376) -\path(2.025,0.456881)(1.725,0.456881) -\path(2.025,0.462385)(1.725,0.462385) -\path(2.025,0.46789)(1.725,0.46789) -\path(2.025,0.473394)(1.725,0.473394) -\path(2.025,0.478899)(1.725,0.478899) -\path(2.025,0.484404)(1.725,0.484404) -\path(2.025,0.489908)(1.725,0.489908) -\path(2.025,0.495413)(1.725,0.495413) -\path(2.025,0.500917)(1.725,0.500917) -\path(2.025,0.506422)(1.725,0.506422) -\path(2.025,0.511927)(1.725,0.511927) -\path(2.025,0.517431)(1.725,0.517431) -\path(2.025,0.522936)(1.725,0.522936) -\path(2.025,0.52844)(1.725,0.52844) -\path(2.025,0.533945)(1.725,0.533945) -\path(2.025,0.53945)(1.725,0.53945) -\path(2.025,0.544954)(1.725,0.544954) -\path(2.025,0.550459)(1.725,0.550459) -\path(2.025,0.555963)(1.725,0.555963) -\path(2.025,0.561468)(1.725,0.561468) -\path(2.025,0.566972)(1.725,0.566972) -\path(2.025,0.572477)(1.725,0.572477) -\path(2.025,0.577982)(1.725,0.577982) -\path(2.025,0.583486)(1.725,0.583486) -\path(2.025,0.588991)(1.725,0.588991) -\path(2.025,0.594495)(1.725,0.594495) -\path(2.01955,0.6)(2.01955,0) -\path(2.01409,0.6)(2.01409,0) -\path(2.00864,0.6)(2.00864,0) -\path(2.00318,0.6)(2.00318,0) -\path(1.99773,0.6)(1.99773,0) -\path(1.99227,0.6)(1.99227,0) -\path(1.98682,0.6)(1.98682,0) -\path(1.98136,0.6)(1.98136,0) -\path(1.97591,0.6)(1.97591,0) -\path(1.97045,0.6)(1.97045,0) -\path(1.965,0.6)(1.965,0) -\path(1.95955,0.6)(1.95955,0) -\path(1.95409,0.6)(1.95409,0) -\path(1.94864,0.6)(1.94864,0) -\path(1.94318,0.6)(1.94318,0) -\path(1.93773,0.6)(1.93773,0) -\path(1.93227,0.6)(1.93227,0) -\path(1.92682,0.6)(1.92682,0) -\path(1.92136,0.6)(1.92136,0) -\path(1.91591,0.6)(1.91591,0) -\path(1.91045,0.6)(1.91045,0) -\path(1.905,0.6)(1.905,0) -\path(1.89955,0.6)(1.89955,0) -\path(1.89409,0.6)(1.89409,0) -\path(1.88864,0.6)(1.88864,0) -\path(1.88318,0.6)(1.88318,0) -\path(1.87773,0.6)(1.87773,0) -\path(1.87227,0.6)(1.87227,0) -\path(1.86682,0.6)(1.86682,0) -\path(1.86136,0.6)(1.86136,0) -\path(1.85591,0.6)(1.85591,0) -\path(1.85045,0.6)(1.85045,0) -\path(1.845,0.6)(1.845,0) -\path(1.83955,0.6)(1.83955,0) -\path(1.83409,0.6)(1.83409,0) -\path(1.82864,0.6)(1.82864,0) -\path(1.82318,0.6)(1.82318,0) -\path(1.81773,0.6)(1.81773,0) -\path(1.81227,0.6)(1.81227,0) -\path(1.80682,0.6)(1.80682,0) -\path(1.80136,0.6)(1.80136,0) -\path(1.79591,0.6)(1.79591,0) -\path(1.79045,0.6)(1.79045,0) -\path(1.785,0.6)(1.785,0) -\path(1.77955,0.6)(1.77955,0) -\path(1.77409,0.6)(1.77409,0) -\path(1.76864,0.6)(1.76864,0) -\path(1.76318,0.6)(1.76318,0) -\path(1.75773,0.6)(1.75773,0) -\path(1.75227,0.6)(1.75227,0) -\path(1.74682,0.6)(1.74682,0) -\path(1.74136,0.6)(1.74136,0) -\path(1.73591,0.6)(1.73591,0) -\path(1.73045,0.6)(1.73045,0) -\color{rgb_000000}% -\path(1.725,0)(2.025,0)(2.025,0.6)(1.725,0.6)(1.725,0) -%% -\color{rgb_ffffff}% -\path(1.4941,0.45)(1.5,0.434819) -\path(1.48819,0.45)(1.5,0.419637) -\path(1.48229,0.45)(1.5,0.404456) -\path(1.47639,0.45)(1.5,0.389275) -\path(1.47049,0.45)(1.5,0.374093) -\path(1.46458,0.45)(1.5,0.358912) -\path(1.45868,0.45)(1.5,0.343731) -\path(1.45278,0.45)(1.5,0.32855) -\path(1.44688,0.45)(1.5,0.313368) -\path(1.44097,0.45)(1.5,0.298187) -\path(1.43507,0.45)(1.5,0.283006) -\path(1.42917,0.45)(1.5,0.267824) -\path(1.42327,0.45)(1.5,0.252643) -\path(1.41736,0.45)(1.5,0.237462) -\path(1.41146,0.45)(1.5,0.22228) -\path(1.40556,0.45)(1.5,0.207099) -\path(1.39966,0.45)(1.5,0.191918) -\path(1.39375,0.45)(1.5,0.176737) -\path(1.38785,0.45)(1.5,0.161555) -\path(1.38195,0.45)(1.49859,0.15) -\path(1.37605,0.45)(1.49269,0.15) -\path(1.37014,0.45)(1.48679,0.15) -\path(1.36424,0.45)(1.48088,0.15) -\path(1.35834,0.45)(1.47498,0.15) -\path(1.35244,0.45)(1.46908,0.15) -\path(1.34653,0.45)(1.46318,0.15) -\path(1.34063,0.45)(1.45727,0.15) -\path(1.33473,0.45)(1.45137,0.15) -\path(1.32883,0.45)(1.44547,0.15) -\path(1.32292,0.45)(1.43957,0.15) -\path(1.31702,0.45)(1.43366,0.15) -\path(1.31112,0.45)(1.42776,0.15) -\path(1.30522,0.45)(1.42186,0.15) -\path(1.29931,0.45)(1.41596,0.15) -\path(1.29341,0.45)(1.41005,0.15) -\path(1.28751,0.45)(1.40415,0.15) -\path(1.28161,0.45)(1.39825,0.15) -\path(1.2757,0.45)(1.39235,0.15) -\path(1.2698,0.45)(1.38644,0.15) -\path(1.2639,0.45)(1.38054,0.15) -\path(1.258,0.45)(1.37464,0.15) -\path(1.25209,0.45)(1.36874,0.15) -\path(1.24619,0.45)(1.36283,0.15) -\path(1.24029,0.45)(1.35693,0.15) -\path(1.23439,0.45)(1.35103,0.15) -\path(1.22848,0.45)(1.34513,0.15) -\path(1.22258,0.45)(1.33922,0.15) -\path(1.21668,0.45)(1.33332,0.15) -\path(1.21078,0.45)(1.32742,0.15) -\path(1.20487,0.45)(1.32152,0.15) -\path(1.19897,0.45)(1.31561,0.15) -\path(1.19307,0.45)(1.30971,0.15) -\path(1.18717,0.45)(1.30381,0.15) -\path(1.18126,0.45)(1.29791,0.15) -\path(1.17536,0.45)(1.292,0.15) -\path(1.16946,0.45)(1.2861,0.15) -\path(1.16356,0.45)(1.2802,0.15) -\path(1.15765,0.45)(1.2743,0.15) -\path(1.15175,0.45)(1.26839,0.15) -\path(1.14585,0.45)(1.26249,0.15) -\path(1.13995,0.45)(1.25659,0.15) -\path(1.13404,0.45)(1.25069,0.15) -\path(1.12814,0.45)(1.24478,0.15) -\path(1.12224,0.45)(1.23888,0.15) -\path(1.11634,0.45)(1.23298,0.15) -\path(1.11043,0.45)(1.22708,0.15) -\path(1.10453,0.45)(1.22117,0.15) -\path(1.09863,0.45)(1.21527,0.15) -\path(1.09273,0.45)(1.20937,0.15) -\path(1.08682,0.45)(1.20347,0.15) -\path(1.08092,0.45)(1.19756,0.15) -\path(1.07502,0.45)(1.19166,0.15) -\path(1.06912,0.45)(1.18576,0.15) -\path(1.06321,0.45)(1.17986,0.15) -\path(1.05731,0.45)(1.17395,0.15) -\path(1.05141,0.45)(1.16805,0.15) -\path(1.05,0.438445)(1.16215,0.15) -\path(1.05,0.423263)(1.15625,0.15) -\path(1.05,0.408082)(1.15034,0.15) -\path(1.05,0.392901)(1.14444,0.15) -\path(1.05,0.37772)(1.13854,0.15) -\path(1.05,0.362538)(1.13264,0.15) -\path(1.05,0.347357)(1.12673,0.15) -\path(1.05,0.332176)(1.12083,0.15) -\path(1.05,0.316994)(1.11493,0.15) -\path(1.05,0.301813)(1.10903,0.15) -\path(1.05,0.286632)(1.10312,0.15) -\path(1.05,0.27145)(1.09722,0.15) -\path(1.05,0.256269)(1.09132,0.15) -\path(1.05,0.241088)(1.08542,0.15) -\path(1.05,0.225907)(1.07951,0.15) -\path(1.05,0.210725)(1.07361,0.15) -\path(1.05,0.195544)(1.06771,0.15) -\path(1.05,0.180363)(1.06181,0.15) -\path(1.05,0.165181)(1.0559,0.15) -\path(1.05,0.444063)(1.06527,0.45) -\path(1.05,0.438126)(1.08054,0.45) -\path(1.05,0.432189)(1.09581,0.45) -\path(1.05,0.426252)(1.11108,0.45) -\path(1.05,0.420315)(1.12635,0.45) -\path(1.05,0.414378)(1.14162,0.45) -\path(1.05,0.408441)(1.15689,0.45) -\path(1.05,0.402504)(1.17216,0.45) -\path(1.05,0.396567)(1.18743,0.45) -\path(1.05,0.39063)(1.2027,0.45) -\path(1.05,0.384693)(1.21797,0.45) -\path(1.05,0.378756)(1.23324,0.45) -\path(1.05,0.372819)(1.24851,0.45) -\path(1.05,0.366882)(1.26378,0.45) -\path(1.05,0.360945)(1.27905,0.45) -\path(1.05,0.355008)(1.29432,0.45) -\path(1.05,0.349071)(1.30959,0.45) -\path(1.05,0.343134)(1.32486,0.45) -\path(1.05,0.337197)(1.34013,0.45) -\path(1.05,0.33126)(1.3554,0.45) -\path(1.05,0.325323)(1.37067,0.45) -\path(1.05,0.319386)(1.38594,0.45) -\path(1.05,0.313449)(1.40121,0.45) -\path(1.05,0.307512)(1.41648,0.45) -\path(1.05,0.301575)(1.43175,0.45) -\path(1.05,0.295638)(1.44702,0.45) -\path(1.05,0.289701)(1.46229,0.45) -\path(1.05,0.283764)(1.47756,0.45) -\path(1.05,0.277827)(1.49283,0.45) -\path(1.05,0.27189)(1.5,0.44685) -\path(1.05,0.265953)(1.5,0.440913) -\path(1.05,0.260016)(1.5,0.434976) -\path(1.05,0.254079)(1.5,0.429039) -\path(1.05,0.248142)(1.5,0.423102) -\path(1.05,0.242205)(1.5,0.417165) -\path(1.05,0.236268)(1.5,0.411228) -\path(1.05,0.230331)(1.5,0.405291) -\path(1.05,0.224394)(1.5,0.399354) -\path(1.05,0.218457)(1.5,0.393417) -\path(1.05,0.21252)(1.5,0.38748) -\path(1.05,0.206583)(1.5,0.381543) -\path(1.05,0.200646)(1.5,0.375606) -\path(1.05,0.194709)(1.5,0.369669) -\path(1.05,0.188772)(1.5,0.363732) -\path(1.05,0.182835)(1.5,0.357795) -\path(1.05,0.176898)(1.5,0.351858) -\path(1.05,0.170961)(1.5,0.345921) -\path(1.05,0.165024)(1.5,0.339984) -\path(1.05,0.159087)(1.5,0.334047) -\path(1.05,0.15315)(1.5,0.32811) -\path(1.05717,0.15)(1.5,0.322173) -\path(1.07244,0.15)(1.5,0.316236) -\path(1.08771,0.15)(1.5,0.310299) -\path(1.10298,0.15)(1.5,0.304362) -\path(1.11825,0.15)(1.5,0.298425) -\path(1.13352,0.15)(1.5,0.292488) -\path(1.14879,0.15)(1.5,0.286551) -\path(1.16406,0.15)(1.5,0.280614) -\path(1.17933,0.15)(1.5,0.274677) -\path(1.1946,0.15)(1.5,0.26874) -\path(1.20987,0.15)(1.5,0.262803) -\path(1.22514,0.15)(1.5,0.256866) -\path(1.24041,0.15)(1.5,0.250929) -\path(1.25568,0.15)(1.5,0.244992) -\path(1.27095,0.15)(1.5,0.239055) -\path(1.28622,0.15)(1.5,0.233118) -\path(1.30149,0.15)(1.5,0.227181) -\path(1.31676,0.15)(1.5,0.221244) -\path(1.33203,0.15)(1.5,0.215307) -\path(1.3473,0.15)(1.5,0.20937) -\path(1.36257,0.15)(1.5,0.203433) -\path(1.37784,0.15)(1.5,0.197496) -\path(1.39311,0.15)(1.5,0.191559) -\path(1.40838,0.15)(1.5,0.185622) -\path(1.42365,0.15)(1.5,0.179685) -\path(1.43892,0.15)(1.5,0.173748) -\path(1.45419,0.15)(1.5,0.167811) -\path(1.46946,0.15)(1.5,0.161874) -\path(1.48473,0.15)(1.5,0.155937) -\color{rgb_000000}% -\path(1.05,0.15)(1.5,0.15)(1.5,0.45)(1.05,0.45)(1.05,0.15) -%% -\allinethickness{0.8pt}% -\path(1.05,0.15)(1.05,0.45) -%% -\path(1.275,0.15)(1.275,0.45) -%% -\path(1.5,0.15)(1.5,0.45) -%% -\path(1.05,0.15)(1.5,0.15) -%% -\path(1.05,0.3)(1.5,0.3) -%% -\path(1.05,0.45)(1.5,0.45) -%% -\path(0,0)(3.75,0) -%% -\end{picture} diff --git a/graphics/epix/doc/objects.xp b/graphics/epix/doc/objects.xp deleted file mode 100644 index d0828f0b94..0000000000 --- a/graphics/epix/doc/objects.xp +++ /dev/null @@ -1,33 +0,0 @@ -/* -*-ePiX-*- */ -#include "epix.h" -using namespace ePiX; - -int main() -{ - picture(P(0,0), P(5,2), "3.75 x 1.5in"); - - begin(); - - // roof - triangle(P(0.9, 1), P(3.1, 1), P(2, 1.5)); // vertices - - // sun - circle(P(4,1.5), 0.25); // center and radius - - // house - rect(P(1,0), P(3,1)); // opposite corners - // grid(P(1,0), P(3,1), 1, 10); // corners, numbers of subdivisions - - // door - fill(Black(0.1)); - rect(P(2.3,0), P(2.7,0.8)); // corners - - fill(White()); - // window - rect(P(1.4,0.2), P(2, 0.6)); - bold(); - grid(P(1.4,0.2), P(2, 0.6), 2, 2); - - line(P(xmin(),0), P(xmax(),0)); - end(); -} diff --git a/graphics/epix/doc/pathstyle.eepic b/graphics/epix/doc/pathstyle.eepic deleted file mode 100644 index 531523bf45..0000000000 --- a/graphics/epix/doc/pathstyle.eepic +++ /dev/null @@ -1,225 +0,0 @@ -%% Generated from pathstyle.xp on Tue Jul 17 15:01:22 EDT 2007 by -%% ePiX-1.1.8 -%% -%% Cartesian bounding box: [0,4] x [0,4] -%% Actual size: 4 x 1in -%% Figure offset: left by 0in, down by 0in -%% -\xdefinecolor{rgb_000000}{rgb}{0,0,0} -\setlength{\unitlength}{1in} -\begin{picture}(4,1)(-0,-0) -\path(0,1)(0.0394737,1) -\path(0.118421,1)(0.157895,1) -\path(0.157895,1)(0.197368,1) -\path(0.276316,1)(0.315789,1) -\path(0.315789,1)(0.355263,1) -\path(0.434211,1)(0.473684,1) -\path(0.473684,1)(0.513158,1) -\path(0.592105,1)(0.631579,1) -\path(0.631579,1)(0.671053,1) -\path(0.75,1)(0.789474,1) -\path(0.789474,1)(0.828947,1) -\path(0.907895,1)(0.947368,1) -\path(0.947368,1)(0.986842,1) -\path(1.06579,1)(1.10526,1) -\path(1.10526,1)(1.14474,1) -\path(1.22368,1)(1.26316,1) -\path(1.26316,1)(1.30263,1) -\path(1.38158,1)(1.42105,1) -\path(1.42105,1)(1.46053,1) -\path(1.53947,1)(1.57895,1) -\path(1.57895,1)(1.61842,1) -\path(1.69737,1)(1.73684,1) -\path(1.73684,1)(1.77632,1) -\path(1.85526,1)(1.89474,1) -\path(1.89474,1)(1.93421,1) -\path(2.01316,1)(2.05263,1) -\path(2.05263,1)(2.09211,1) -\path(2.17105,1)(2.21053,1) -\path(2.21053,1)(2.25,1) -\path(2.32895,1)(2.36842,1) -\path(2.36842,1)(2.40789,1) -\path(2.48684,1)(2.52632,1) -\path(2.52632,1)(2.56579,1) -\path(2.64474,1)(2.68421,1) -\path(2.68421,1)(2.72368,1) -\path(2.80263,1)(2.84211,1) -\path(2.84211,1)(2.88158,1) -\path(2.96053,1)(3,1) -\put(3.05535,1){\makebox(0,0)[l]{\code{line\_style("-\ \ -")}}} -\path(0,0.75)(0.0263158,0.75) -\path(0.131579,0.75)(0.157895,0.75) -\path(0.157895,0.75)(0.184211,0.75) -\path(0.289474,0.75)(0.315789,0.75) -\path(0.315789,0.75)(0.342105,0.75) -\path(0.447368,0.75)(0.473684,0.75) -\path(0.473684,0.75)(0.5,0.75) -\path(0.605263,0.75)(0.631579,0.75) -\path(0.631579,0.75)(0.657895,0.75) -\path(0.763158,0.75)(0.789474,0.75) -\path(0.789474,0.75)(0.815789,0.75) -\path(0.921053,0.75)(0.947368,0.75) -\path(0.947368,0.75)(0.973684,0.75) -\path(1.07895,0.75)(1.10526,0.75) -\path(1.10526,0.75)(1.13158,0.75) -\path(1.23684,0.75)(1.26316,0.75) -\path(1.26316,0.75)(1.28947,0.75) -\path(1.39474,0.75)(1.42105,0.75) -\path(1.42105,0.75)(1.44737,0.75) -\path(1.55263,0.75)(1.57895,0.75) -\path(1.57895,0.75)(1.60526,0.75) -\path(1.71053,0.75)(1.73684,0.75) -\path(1.73684,0.75)(1.76316,0.75) -\path(1.86842,0.75)(1.89474,0.75) -\path(1.89474,0.75)(1.92105,0.75) -\path(2.02632,0.75)(2.05263,0.75) -\path(2.05263,0.75)(2.07895,0.75) -\path(2.18421,0.75)(2.21053,0.75) -\path(2.21053,0.75)(2.23684,0.75) -\path(2.34211,0.75)(2.36842,0.75) -\path(2.36842,0.75)(2.39474,0.75) -\path(2.5,0.75)(2.52632,0.75) -\path(2.52632,0.75)(2.55263,0.75) -\path(2.65789,0.75)(2.68421,0.75) -\path(2.68421,0.75)(2.71053,0.75) -\path(2.81579,0.75)(2.84211,0.75) -\path(2.84211,0.75)(2.86842,0.75) -\path(2.97368,0.75)(3,0.75) -\put(3.05535,0.75){\makebox(0,0)[l]{\code{line\_style("-\ \ \ \ -")}}} -\put(0.0789474,0.5){\makebox(0,0){\circle{0.0055348}}} -\put(0.236842,0.5){\makebox(0,0){\circle{0.0055348}}} -\put(0.394737,0.5){\makebox(0,0){\circle{0.0055348}}} -\put(0.552632,0.5){\makebox(0,0){\circle{0.0055348}}} -\put(0.710526,0.5){\makebox(0,0){\circle{0.0055348}}} -\put(0.868421,0.5){\makebox(0,0){\circle{0.0055348}}} -\put(1.02632,0.5){\makebox(0,0){\circle{0.0055348}}} -\put(1.18421,0.5){\makebox(0,0){\circle{0.0055348}}} -\put(1.34211,0.5){\makebox(0,0){\circle{0.0055348}}} -\put(1.5,0.5){\makebox(0,0){\circle{0.0055348}}} -\put(1.65789,0.5){\makebox(0,0){\circle{0.0055348}}} -\put(1.81579,0.5){\makebox(0,0){\circle{0.0055348}}} -\put(1.97368,0.5){\makebox(0,0){\circle{0.0055348}}} -\put(2.13158,0.5){\makebox(0,0){\circle{0.0055348}}} -\put(2.28947,0.5){\makebox(0,0){\circle{0.0055348}}} -\put(2.44737,0.5){\makebox(0,0){\circle{0.0055348}}} -\put(2.60526,0.5){\makebox(0,0){\circle{0.0055348}}} -\put(2.76316,0.5){\makebox(0,0){\circle{0.0055348}}} -\put(2.92105,0.5){\makebox(0,0){\circle{0.0055348}}} -\put(3.05535,0.5){\makebox(0,0)[l]{\code{line\_style(" .\ ")}}} -\path(0,0.25)(0.0315789,0.25) -\put(0.0789474,0.25){\makebox(0,0){\circle{0.0055348}}} -\path(0.126316,0.25)(0.157895,0.25) -\path(0.157895,0.25)(0.189474,0.25) -\put(0.236842,0.25){\makebox(0,0){\circle{0.0055348}}} -\path(0.284211,0.25)(0.315789,0.25) -\path(0.315789,0.25)(0.347368,0.25) -\put(0.394737,0.25){\makebox(0,0){\circle{0.0055348}}} -\path(0.442105,0.25)(0.473684,0.25) -\path(0.473684,0.25)(0.505263,0.25) -\put(0.552632,0.25){\makebox(0,0){\circle{0.0055348}}} -\path(0.6,0.25)(0.631579,0.25) -\path(0.631579,0.25)(0.663158,0.25) -\put(0.710526,0.25){\makebox(0,0){\circle{0.0055348}}} -\path(0.757895,0.25)(0.789474,0.25) -\path(0.789474,0.25)(0.821053,0.25) -\put(0.868421,0.25){\makebox(0,0){\circle{0.0055348}}} -\path(0.915789,0.25)(0.947368,0.25) -\path(0.947368,0.25)(0.978947,0.25) -\put(1.02632,0.25){\makebox(0,0){\circle{0.0055348}}} -\path(1.07368,0.25)(1.10526,0.25) -\path(1.10526,0.25)(1.13684,0.25) -\put(1.18421,0.25){\makebox(0,0){\circle{0.0055348}}} -\path(1.23158,0.25)(1.26316,0.25) -\path(1.26316,0.25)(1.29474,0.25) -\put(1.34211,0.25){\makebox(0,0){\circle{0.0055348}}} -\path(1.38947,0.25)(1.42105,0.25) -\path(1.42105,0.25)(1.45263,0.25) -\put(1.5,0.25){\makebox(0,0){\circle{0.0055348}}} -\path(1.54737,0.25)(1.57895,0.25) -\path(1.57895,0.25)(1.61053,0.25) -\put(1.65789,0.25){\makebox(0,0){\circle{0.0055348}}} -\path(1.70526,0.25)(1.73684,0.25) -\path(1.73684,0.25)(1.76842,0.25) -\put(1.81579,0.25){\makebox(0,0){\circle{0.0055348}}} -\path(1.86316,0.25)(1.89474,0.25) -\path(1.89474,0.25)(1.92632,0.25) -\put(1.97368,0.25){\makebox(0,0){\circle{0.0055348}}} -\path(2.02105,0.25)(2.05263,0.25) -\path(2.05263,0.25)(2.08421,0.25) -\put(2.13158,0.25){\makebox(0,0){\circle{0.0055348}}} -\path(2.17895,0.25)(2.21053,0.25) -\path(2.21053,0.25)(2.24211,0.25) -\put(2.28947,0.25){\makebox(0,0){\circle{0.0055348}}} -\path(2.33684,0.25)(2.36842,0.25) -\path(2.36842,0.25)(2.4,0.25) -\put(2.44737,0.25){\makebox(0,0){\circle{0.0055348}}} -\path(2.49474,0.25)(2.52632,0.25) -\path(2.52632,0.25)(2.55789,0.25) -\put(2.60526,0.25){\makebox(0,0){\circle{0.0055348}}} -\path(2.65263,0.25)(2.68421,0.25) -\path(2.68421,0.25)(2.71579,0.25) -\put(2.76316,0.25){\makebox(0,0){\circle{0.0055348}}} -\path(2.81053,0.25)(2.84211,0.25) -\path(2.84211,0.25)(2.87368,0.25) -\put(2.92105,0.25){\makebox(0,0){\circle{0.0055348}}} -\path(2.96842,0.25)(3,0.25) -\put(3.05535,0.25){\makebox(0,0)[l]{\code{line\_style("-\ .\ -")}}} -\put(0.0157895,0){\makebox(0,0){\circle{0.0055348}}} -\path(0.0631579,0)(0.0947368,0) -\put(0.142105,0){\makebox(0,0){\circle{0.0055348}}} -\put(0.173684,0){\makebox(0,0){\circle{0.0055348}}} -\path(0.221053,0)(0.252632,0) -\put(0.3,0){\makebox(0,0){\circle{0.0055348}}} -\put(0.331579,0){\makebox(0,0){\circle{0.0055348}}} -\path(0.378947,0)(0.410526,0) -\put(0.457895,0){\makebox(0,0){\circle{0.0055348}}} -\put(0.489474,0){\makebox(0,0){\circle{0.0055348}}} -\path(0.536842,0)(0.568421,0) -\put(0.615789,0){\makebox(0,0){\circle{0.0055348}}} -\put(0.647368,0){\makebox(0,0){\circle{0.0055348}}} -\path(0.694737,0)(0.726316,0) -\put(0.773684,0){\makebox(0,0){\circle{0.0055348}}} -\put(0.805263,0){\makebox(0,0){\circle{0.0055348}}} -\path(0.852632,0)(0.884211,0) -\put(0.931579,0){\makebox(0,0){\circle{0.0055348}}} -\put(0.963158,0){\makebox(0,0){\circle{0.0055348}}} -\path(1.01053,0)(1.04211,0) -\put(1.08947,0){\makebox(0,0){\circle{0.0055348}}} -\put(1.12105,0){\makebox(0,0){\circle{0.0055348}}} -\path(1.16842,0)(1.2,0) -\put(1.24737,0){\makebox(0,0){\circle{0.0055348}}} -\put(1.27895,0){\makebox(0,0){\circle{0.0055348}}} -\path(1.32632,0)(1.35789,0) -\put(1.40526,0){\makebox(0,0){\circle{0.0055348}}} -\put(1.43684,0){\makebox(0,0){\circle{0.0055348}}} -\path(1.48421,0)(1.51579,0) -\put(1.56316,0){\makebox(0,0){\circle{0.0055348}}} -\put(1.59474,0){\makebox(0,0){\circle{0.0055348}}} -\path(1.64211,0)(1.67368,0) -\put(1.72105,0){\makebox(0,0){\circle{0.0055348}}} -\put(1.75263,0){\makebox(0,0){\circle{0.0055348}}} -\path(1.8,0)(1.83158,0) -\put(1.87895,0){\makebox(0,0){\circle{0.0055348}}} -\put(1.91053,0){\makebox(0,0){\circle{0.0055348}}} -\path(1.95789,0)(1.98947,0) -\put(2.03684,0){\makebox(0,0){\circle{0.0055348}}} -\put(2.06842,0){\makebox(0,0){\circle{0.0055348}}} -\path(2.11579,0)(2.14737,0) -\put(2.19474,0){\makebox(0,0){\circle{0.0055348}}} -\put(2.22632,0){\makebox(0,0){\circle{0.0055348}}} -\path(2.27368,0)(2.30526,0) -\put(2.35263,0){\makebox(0,0){\circle{0.0055348}}} -\put(2.38421,0){\makebox(0,0){\circle{0.0055348}}} -\path(2.43158,0)(2.46316,0) -\put(2.51053,0){\makebox(0,0){\circle{0.0055348}}} -\put(2.54211,0){\makebox(0,0){\circle{0.0055348}}} -\path(2.58947,0)(2.62105,0) -\put(2.66842,0){\makebox(0,0){\circle{0.0055348}}} -\put(2.7,0){\makebox(0,0){\circle{0.0055348}}} -\path(2.74737,0)(2.77895,0) -\put(2.82632,0){\makebox(0,0){\circle{0.0055348}}} -\put(2.85789,0){\makebox(0,0){\circle{0.0055348}}} -\path(2.90526,0)(2.93684,0) -\put(2.98421,0){\makebox(0,0){\circle{0.0055348}}} -\put(3.05535,0){\makebox(0,0)[l]{\code{line\_style(".\ - .")}}} -\end{picture} diff --git a/graphics/epix/doc/pathstyle.xp b/graphics/epix/doc/pathstyle.xp deleted file mode 100644 index 47fe65e5e1..0000000000 --- a/graphics/epix/doc/pathstyle.xp +++ /dev/null @@ -1,24 +0,0 @@ -/* -*-ePiX-*- */ -#include "epix.h" -using namespace ePiX; - -void dash_sample(double ht, std::string pattern) -{ - line_style(pattern); - line(P(0,ht), P(3,ht)); - label(P(3, ht), P(4,0), "\\code{line\\_style(\""+pattern+"\")}", r); -} - -int main() { - picture(P(0,0), P(4,4), "4x1in"); - - begin(); - - dash_sample(4, "-\\ \\ -"); - dash_sample(3, "-\\ \\ \\ \\ -"); - dash_sample(2, " .\\ "); - dash_sample(1, "-\\ .\\ -"); - dash_sample(0, ".\\ - ."); - - end(); -} diff --git a/graphics/epix/doc/plot_a.eepic b/graphics/epix/doc/plot_a.eepic deleted file mode 100644 index bf0e6e787a..0000000000 --- a/graphics/epix/doc/plot_a.eepic +++ /dev/null @@ -1,95 +0,0 @@ -%% Generated from plot_a.xp on Tue Jul 3 00:20:34 EDT 2007 by -%% ePiX-1.0.25 -%% -%% Cartesian bounding box: [-1,1] x [-1,1] -%% Actual size: 1.5in x 1.5in -%% Figure offset: right by 0in, up by 0in -%% -\setlength{\unitlength}{1in} -\begin{picture}(1.5,1.5)(-0,-0) -%% --- -\path(0.75,0.75)(0.709403,0.666178)(0.666551,0.577699)(0.62125,0.484165) - (0.573284,0.385128)(0.522412,0.280089)(0.46836,0.168485) -\path(0.75,0.75)(0.749023,0.665974)(0.74798,0.585752)(0.746855,0.509046) - (0.745629,0.435587)(0.744277,0.365124)(0.742767,0.297412) -\path(0.75,0.75)(0.788831,0.67297)(0.830368,0.605884)(0.875481,0.548895) - (0.925286,0.502471)(0.981254,0.467495)(1.04539,0.445422) -\path(0.75,0.75)(0.824541,0.685618)(0.903621,0.632501)(0.988754,0.590989) - (1.08184,0.561798)(1.18533,0.546138)(1.30251,0.545884) -\path(0.75,0.75)(0.852385,0.702504)(0.959101,0.662234)(1.07131,0.62933) - (1.19037,0.604066)(1.31791,0.586882)(1.45594,0.578419) -\path(0.75,0.75)(0.869635,0.722554)(0.991406,0.694618)(1.11537,0.666178) - (1.24159,0.637221)(1.37013,0.607733)(1.50104,0.577699) -\path(0.75,0.75)(0.874862,0.74491)(0.998815,0.731016)(1.12092,0.708519) - (1.24029,0.677746)(1.35609,0.639142)(1.46759,0.593248) -\path(0.75,0.75)(0.867939,0.768582)(0.982511,0.77261)(1.09249,0.76265) - (1.19682,0.739556)(1.29466,0.704421)(1.38541,0.658506) -\path(0.75,0.75)(0.849863,0.792084)(0.945428,0.818543)(1.03584,0.830052) - (1.12046,0.827563)(1.1988,0.812243)(1.27061,0.785404) -\path(0.75,0.75)(0.822527,0.813279)(0.891435,0.864939)(0.956495,0.905455) - (1.01755,0.935412)(1.07452,0.955475)(1.12739,0.966366) -\path(0.75,0.75)(0.788515,0.829523)(0.825104,0.905071)(0.859908,0.976933) - (0.893055,1.04537)(0.924661,1.11063)(0.954829,1.17292) -\path(0.75,0.75)(0.750924,0.838139)(0.751807,0.93073)(0.752656,1.02814) - (0.753481,1.13079)(0.754288,1.23912)(0.755083,1.35363) -\path(0.75,0.75)(0.713174,0.837085)(0.677771,0.934566)(0.643292,1.043) - (0.609295,1.16316)(0.575368,1.29605)(0.541119,1.44293) -\path(0.75,0.75)(0.678756,0.825621)(0.609753,0.912727)(0.542063,1.01182) - (0.47484,1.12367)(0.40728,1.24929)(0.33859,1.39004) -\path(0.75,0.75)(0.650938,0.804706)(0.554306,0.866713)(0.459296,0.936218) - (0.365158,1.01352)(0.27118,1.09902)(0.176669,1.19323) -\path(0.75,0.75)(0.632446,0.776969)(0.516918,0.803473)(0.403366,0.829523) - (0.291738,0.855133)(0.181986,0.880311)(0.0740632,0.905071) -\path(0.75,0.75)(0.625191,0.746217)(0.501394,0.73363)(0.379543,0.712441) - (0.260522,0.68298)(0.145146,0.645689)(0.0341447,0.601107) -\path(0.75,0.75)(0.630074,0.71664)(0.509637,0.668642)(0.390202,0.606516) - (0.273258,0.531127)(0.160206,0.443655)(0.0523099,0.345536) -\path(0.75,0.75)(0.646869,0.69196)(0.541651,0.618018)(0.435639,0.528643) - (0.330189,0.424716)(0.22666,0.307508)(0.126363,0.178624) -\path(0.75,0.75)(0.674167,0.674761)(0.59542,0.587383)(0.514234,0.48787) - (0.431158,0.376427)(0.346809,0.253475)(0.261856,0.119648) -\path(0.75,0.75)(0.709403,0.666178)(0.666551,0.577699)(0.62125,0.484165) - (0.573284,0.385128)(0.522412,0.280089)(0.46836,0.168485) -\path(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75) - (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75) - (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75) - (0.75,0.75)(0.75,0.75)(0.75,0.75) -\path(0.709403,0.666178)(0.749023,0.665974)(0.788831,0.67297) - (0.824541,0.685618)(0.852385,0.702504)(0.869635,0.722554) - (0.874862,0.74491)(0.867939,0.768582)(0.849863,0.792084) - (0.822527,0.813279)(0.788515,0.829523)(0.750924,0.838139) - (0.713174,0.837085)(0.678756,0.825621)(0.650938,0.804706) - (0.632446,0.776969)(0.625191,0.746217)(0.630074,0.71664) - (0.646869,0.69196)(0.674167,0.674761)(0.709403,0.666178) -\path(0.666551,0.577699)(0.74798,0.585752)(0.830368,0.605884) - (0.903621,0.632501)(0.959101,0.662234)(0.991406,0.694618) - (0.998815,0.731016)(0.982511,0.77261)(0.945428,0.818543) - (0.891435,0.864939)(0.825104,0.905071)(0.751807,0.93073) - (0.677771,0.934566)(0.609753,0.912727)(0.554306,0.866713) - (0.516918,0.803473)(0.501394,0.73363)(0.509637,0.668642) - (0.541651,0.618018)(0.59542,0.587383)(0.666551,0.577699) -\path(0.62125,0.484165)(0.746855,0.509046)(0.875481,0.548895) - (0.988754,0.590989)(1.07131,0.62933)(1.11537,0.666178)(1.12092,0.708519) - (1.09249,0.76265)(1.03584,0.830052)(0.956495,0.905455)(0.859908,0.976933) - (0.752656,1.02814)(0.643292,1.043)(0.542063,1.01182)(0.459296,0.936218) - (0.403366,0.829523)(0.379543,0.712441)(0.390202,0.606516) - (0.435639,0.528643)(0.514234,0.48787)(0.62125,0.484165) -\path(0.573284,0.385128)(0.745629,0.435587)(0.925286,0.502471) - (1.08184,0.561798)(1.19037,0.604066)(1.24159,0.637221)(1.24029,0.677746) - (1.19682,0.739556)(1.12046,0.827563)(1.01755,0.935412)(0.893055,1.04537) - (0.753481,1.13079)(0.609295,1.16316)(0.47484,1.12367)(0.365158,1.01352) - (0.291738,0.855133)(0.260522,0.68298)(0.273258,0.531127) - (0.330189,0.424716)(0.431158,0.376427)(0.573284,0.385128) -\path(0.522412,0.280089)(0.744277,0.365124)(0.981254,0.467495) - (1.18533,0.546138)(1.31791,0.586882)(1.37013,0.607733)(1.35609,0.639142) - (1.29466,0.704421)(1.1988,0.812243)(1.07452,0.955475)(0.924661,1.11063) - (0.754288,1.23912)(0.575368,1.29605)(0.40728,1.24929)(0.27118,1.09902) - (0.181986,0.880311)(0.145146,0.645689)(0.160206,0.443655) - (0.22666,0.307508)(0.346809,0.253475)(0.522412,0.280089) -\path(0.46836,0.168485)(0.742767,0.297412)(1.04539,0.445422) - (1.30251,0.545884)(1.45594,0.578419)(1.50104,0.577699)(1.46759,0.593248) - (1.38541,0.658506)(1.27061,0.785404)(1.12739,0.966366)(0.954829,1.17292) - (0.755083,1.35363)(0.541119,1.44293)(0.33859,1.39004)(0.176669,1.19323) - (0.0740632,0.905071)(0.0341447,0.601107)(0.0523099,0.345536) - (0.126363,0.178624)(0.261856,0.119648)(0.46836,0.168485) -\end{picture} diff --git a/graphics/epix/doc/plot_a.xp b/graphics/epix/doc/plot_a.xp deleted file mode 100644 index 4304d501d3..0000000000 --- a/graphics/epix/doc/plot_a.xp +++ /dev/null @@ -1,27 +0,0 @@ -/* -*-ePiX-*- */ -#include "epix.h" -using namespace ePiX; -P f(double u, double v) -{ - double x=u*Cos(v), y=u*Sin(v); - // return P(x, y, 0.25*x*(x*x-3*y*y)); - return P(x, y, x*y); -} - -domain R(P(0,0), P(1,1), mesh(6, 20), mesh(6, 20)); - -int main() -{ - bounding_box(P(-1,-1),P(1,1)); - unitlength("1in"); - picture(1.5,1.5); - - begin(); - revolutions(); - - camera.at(P(3, 1, 3)); - - plot(f, R); - - end(); -} diff --git a/graphics/epix/doc/plot_b.eepic b/graphics/epix/doc/plot_b.eepic deleted file mode 100644 index cf847bd346..0000000000 --- a/graphics/epix/doc/plot_b.eepic +++ /dev/null @@ -1,225 +0,0 @@ -%% Generated from plot_b.xp on Tue Jul 3 00:20:46 EDT 2007 by -%% ePiX-1.0.25 -%% -%% Cartesian bounding box: [-1,1] x [-1,1] -%% Actual size: 1.5in x 1.5in -%% Figure offset: right by 0in, up by 0in -%% -\setlength{\unitlength}{1in} -\begin{picture}(1.5,1.5)(-0,-0) -%% --- -\path(0.75,0.75)(0.729972,0.708648)(0.709403,0.666178)(0.688271,0.622545) - (0.666551,0.577699)(0.64422,0.531591)(0.62125,0.484165) - (0.597615,0.435364)(0.573284,0.385128)(0.548228,0.333393) - (0.522412,0.280089)(0.495802,0.225146)(0.46836,0.168485) -\path(0.75,0.75)(0.749519,0.707493)(0.749023,0.665974)(0.74851,0.625406) - (0.74798,0.585752)(0.747429,0.546976)(0.746855,0.509046) - (0.746256,0.471927)(0.745629,0.435587)(0.744971,0.399997) - (0.744277,0.365124)(0.743544,0.330939)(0.742767,0.297412) -\path(0.75,0.75)(0.769125,0.71024)(0.788831,0.67297)(0.809212,0.638181) - (0.830368,0.605884)(0.852415,0.576107)(0.875481,0.548895) - (0.899715,0.524319)(0.925286,0.502471)(0.952389,0.483477) - (0.981254,0.467495)(1.01215,0.454726)(1.04539,0.445422) -\path(0.75,0.75)(0.786786,0.716409)(0.824541,0.685618)(0.863426,0.657638) - (0.903621,0.632501)(0.945323,0.610259)(0.988754,0.590989) - (1.03416,0.574791)(1.08184,0.561798)(1.1321,0.552178)(1.18533,0.546138) - (1.24196,0.543935)(1.30251,0.545884) -\path(0.75,0.75)(0.800717,0.725352)(0.852385,0.702504)(0.905133,0.68146) - (0.959101,0.662234)(1.01444,0.644848)(1.07131,0.62933)(1.12989,0.615719) - (1.19037,0.604066)(1.25297,0.594429)(1.31791,0.586882)(1.38547,0.581511) - (1.45594,0.578419) -\path(0.75,0.75)(0.809554,0.736337)(0.869635,0.722554)(0.93025,0.708648) - (0.991406,0.694618)(1.05311,0.680462)(1.11537,0.666178)(1.1782,0.651765) - (1.24159,0.637221)(1.30556,0.622545)(1.37013,0.607733)(1.43528,0.592786) - (1.50104,0.577699) -\path(0.75,0.75)(0.812485,0.748563)(0.874862,0.74491)(0.937011,0.739054) - (0.998815,0.731016)(1.06016,0.720825)(1.12092,0.708519)(1.181,0.694142) - (1.24029,0.677746)(1.29868,0.659392)(1.35609,0.639142)(1.41242,0.617069) - (1.46759,0.593248) -\path(0.75,0.75)(0.809307,0.761132)(0.867939,0.768582)(0.925727,0.772387) - (0.982511,0.77261)(1.03814,0.769331)(1.09249,0.76265)(1.14541,0.752681) - (1.19682,0.739556)(1.24659,0.723418)(1.29466,0.704421)(1.34095,0.682727) - (1.38541,0.658506) -\path(0.75,0.75)(0.800408,0.773024)(0.849863,0.792084)(0.89824,0.807232) - (0.945428,0.818543)(0.991325,0.826113)(1.03584,0.830052) - (1.07891,0.830488)(1.12046,0.827563)(1.16044,0.821428)(1.1988,0.812243) - (1.23553,0.800178)(1.27061,0.785404) -\path(0.75,0.75)(0.786698,0.783117)(0.822527,0.813279)(0.857449,0.840534) - (0.891435,0.864939)(0.924458,0.886556)(0.956495,0.905455) - (0.987531,0.921714)(1.01755,0.935412)(1.04655,0.946636)(1.07452,0.955475) - (1.10147,0.962021)(1.12739,0.966366) -\path(0.75,0.75)(0.769508,0.790278)(0.788515,0.829523)(0.807041,0.867775) - (0.825104,0.905071)(0.842721,0.941445)(0.859908,0.976933) - (0.876682,1.01156)(0.893055,1.04537)(0.909044,1.07838)(0.924661,1.11063) - (0.939918,1.14213)(0.954829,1.17292) -\path(0.75,0.75)(0.750468,0.793535)(0.750924,0.838139)(0.75137,0.883856) - (0.751807,0.93073)(0.752235,0.978809)(0.752656,1.02814)(0.753071,1.07878) - (0.753481,1.13079)(0.753886,1.18421)(0.754288,1.23912)(0.754687,1.29556) - (0.755083,1.35363) -\path(0.75,0.75)(0.731375,0.79227)(0.713174,0.837085)(0.695327,0.884497) - (0.677771,0.934566)(0.660445,0.98737)(0.643292,1.043)(0.62626,1.10155) - (0.609295,1.16316)(0.592347,1.22794)(0.575368,1.29605)(0.558309,1.36765) - (0.541119,1.44293) -\path(0.75,0.75)(0.714035,0.786396)(0.678756,0.825621)(0.644034,0.867713) - (0.609753,0.912727)(0.575798,0.960735)(0.542063,1.01182) - (0.508444,1.06609)(0.47484,1.12367)(0.441152,1.18468)(0.40728,1.24929) - (0.373126,1.31768)(0.33859,1.39004) -\path(0.75,0.75)(0.700112,0.776448)(0.650938,0.804706)(0.60237,0.834787) - (0.554306,0.866713)(0.506646,0.900512)(0.459296,0.936218) - (0.412163,0.973871)(0.365158,1.01352)(0.318192,1.05521)(0.27118,1.09902) - (0.224034,1.145)(0.176669,1.19323) -\path(0.75,0.75)(0.690966,0.763543)(0.632446,0.776969)(0.574432,0.790278) - (0.516918,0.803473)(0.459898,0.816554)(0.403366,0.829523) - (0.347314,0.842382)(0.291738,0.855133)(0.23663,0.867775) - (0.181986,0.880311)(0.127799,0.892743)(0.0740632,0.905071) -\path(0.75,0.75)(0.687529,0.749216)(0.625191,0.746217)(0.563106,0.741014) - (0.501394,0.73363)(0.440168,0.724093)(0.379543,0.712441) - (0.319626,0.69872)(0.260522,0.68298)(0.202331,0.665282) - (0.145146,0.645689)(0.089057,0.624272)(0.0341447,0.601107) -\path(0.75,0.75)(0.690195,0.735167)(0.630074,0.71664)(0.569825,0.694447) - (0.509637,0.668642)(0.4497,0.639299)(0.390202,0.606516) - (0.331328,0.570413)(0.273258,0.531127)(0.216163,0.488817) - (0.160206,0.443655)(0.105542,0.395829)(0.0523099,0.345536) -\path(0.75,0.75)(0.698772,0.72298)(0.646869,0.69196)(0.594442,0.656957) - (0.541651,0.618018)(0.488661,0.575214)(0.435639,0.528643) - (0.382758,0.478428)(0.330189,0.424716)(0.2781,0.367679)(0.22666,0.307508) - (0.176029,0.244413)(0.126363,0.178624) -\path(0.75,0.75)(0.712474,0.713891)(0.674167,0.674761)(0.63513,0.632594) - (0.59542,0.587383)(0.555099,0.539136)(0.514234,0.48787) - (0.472895,0.433619)(0.431158,0.376427)(0.389102,0.316355) - (0.346809,0.253475)(0.304364,0.187873)(0.261856,0.119648) -\path(0.75,0.75)(0.729972,0.708648)(0.709403,0.666178)(0.688271,0.622545) - (0.666551,0.577699)(0.64422,0.531591)(0.62125,0.484165) - (0.597615,0.435364)(0.573284,0.385128)(0.548228,0.333393) - (0.522412,0.280089)(0.495802,0.225146)(0.46836,0.168485) -\path(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75) - (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75) - (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75) - (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75) - (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75) - (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75) - (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75) - (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75) - (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75) - (0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75)(0.75,0.75) - (0.75,0.75) -\path(0.75,0.75) -\path(0.709403,0.666178)(0.722321,0.665223)(0.73558,0.665171) - (0.749023,0.665974)(0.762487,0.667581)(0.77581,0.669932) - (0.788831,0.67297)(0.801393,0.676634)(0.813343,0.680868) - (0.824541,0.685618)(0.834856,0.690836)(0.844172,0.696477) - (0.852385,0.702504)(0.859411,0.708879)(0.865178,0.715573) - (0.869635,0.722554)(0.872745,0.729792)(0.874488,0.737256) - (0.874862,0.74491)(0.873876,0.752715)(0.871555,0.760624) - (0.867939,0.768582)(0.863075,0.776527)(0.857026,0.784387) - (0.849863,0.792084)(0.841664,0.799529)(0.83252,0.806627) - (0.822527,0.813279)(0.811787,0.819381)(0.800411,0.82483) - (0.788515,0.829523)(0.776218,0.833364)(0.763645,0.836262) - (0.750924,0.838139)(0.738185,0.838931)(0.725558,0.83859) - (0.713174,0.837085)(0.701162,0.83441)(0.689648,0.830577) - (0.678756,0.825621)(0.668601,0.819601)(0.659294,0.812596) - (0.650938,0.804706)(0.643624,0.796048)(0.637436,0.786754) - (0.632446,0.776969)(0.628712,0.766846)(0.626283,0.756542) - (0.625191,0.746217)(0.625457,0.736026)(0.627088,0.72612) - (0.630074,0.71664)(0.634394,0.707713)(0.64001,0.699454)(0.646869,0.69196) - (0.654905,0.685309)(0.664036,0.679562)(0.674167,0.674761) - (0.685188,0.670929)(0.696978,0.668072)(0.709403,0.666178) -\path(0.709403,0.666178) -\path(0.666551,0.577699)(0.692974,0.578664)(0.720234,0.581422) - (0.74798,0.585752)(0.775839,0.591423)(0.80343,0.598206) - (0.830368,0.605884)(0.856279,0.614263)(0.880806,0.623178) - (0.903621,0.632501)(0.924433,0.642145)(0.942994,0.65206) - (0.959101,0.662234)(0.972601,0.672687)(0.98339,0.683461) - (0.991406,0.694618)(0.996632,0.706222)(0.999085,0.718337) - (0.998815,0.731016)(0.995896,0.74429)(0.990424,0.758164) - (0.982511,0.77261)(0.972282,0.787565)(0.959873,0.802924) - (0.945428,0.818543)(0.929098,0.834239)(0.911044,0.849789) - (0.891435,0.864939)(0.870449,0.879406)(0.848272,0.892888) - (0.825104,0.905071)(0.801155,0.915638)(0.776645,0.924286) - (0.751807,0.93073)(0.726882,0.934719)(0.702119,0.936048) - (0.677771,0.934566)(0.654093,0.930185)(0.631338,0.922887) - (0.609753,0.912727)(0.589573,0.899834)(0.571022,0.884408) - (0.554306,0.866713)(0.539611,0.847073)(0.527101,0.825857) - (0.516918,0.803473)(0.509181,0.780348)(0.503983,0.756921) - (0.501394,0.73363)(0.501461,0.710895)(0.504209,0.689112) - (0.509637,0.668642)(0.517723,0.649801)(0.528419,0.632855) - (0.541651,0.618018)(0.557321,0.605441)(0.575297,0.595218) - (0.59542,0.587383)(0.617495,0.581912)(0.641293,0.578726) - (0.666551,0.577699) -\path(0.666551,0.577699) -\path(0.62125,0.484165)(0.661714,0.489898)(0.703779,0.498369) - (0.746855,0.509046)(0.790294,0.521379)(0.833406,0.534828) - (0.875481,0.548895)(0.915825,0.563151)(0.953779,0.577259) - (0.988754,0.590989)(1.02025,0.604228)(1.04786,0.616974)(1.07131,0.62933) - (1.09041,0.641478)(1.10509,0.653667)(1.11537,0.666178)(1.12133,0.679307) - (1.12312,0.693337)(1.12092,0.708519)(1.11493,0.725052)(1.10538,0.743075) - (1.09249,0.76265)(1.07646,0.783756)(1.05751,0.806289)(1.03584,0.830052) - (1.01166,0.854761)(0.985141,0.880045)(0.956495,0.905455) - (0.925925,0.930468)(0.893649,0.954502)(0.859908,0.976933) - (0.824965,0.997111)(0.789108,1.01439)(0.752656,1.02814)(0.715955,1.0378) - (0.679371,1.04288)(0.643292,1.043)(0.608116,1.0379)(0.574243,1.02749) - (0.542063,1.01182)(0.511952,0.991116)(0.484258,0.965743) - (0.459296,0.936218)(0.437343,0.903175)(0.418635,0.867345) - (0.403366,0.829523)(0.391688,0.790542)(0.383719,0.751241) - (0.379543,0.712441)(0.379214,0.674923)(0.382764,0.639401) - (0.390202,0.606516)(0.401519,0.576814)(0.416683,0.550743) - (0.435639,0.528643)(0.458304,0.510741)(0.484558,0.497152) - (0.514234,0.48787)(0.547111,0.48278)(0.582903,0.481654)(0.62125,0.484165) -\path(0.62125,0.484165) -\path(0.573284,0.385128)(0.628255,0.398429)(0.685992,0.415579) - (0.745629,0.435587)(0.806153,0.457413)(0.866435,0.480025) - (0.925286,0.502471)(0.981521,0.523945)(1.03403,0.543843) - (1.08184,0.561798)(1.12417,0.577699)(1.16045,0.591675)(1.19037,0.604066) - (1.21379,0.615372)(1.23079,0.626204)(1.24159,0.637221)(1.24651,0.649085) - (1.24594,0.662413)(1.24029,0.677746)(1.22996,0.695523)(1.21536,0.716063) - (1.19682,0.739556)(1.17465,0.766054)(1.14912,0.795468)(1.12046,0.827563) - (1.08886,0.861958)(1.0545,0.89813)(1.01755,0.935412)(0.978193,0.973008) - (0.936617,1.01)(0.893055,1.04537)(0.847784,1.07804)(0.80113,1.10688) - (0.753481,1.13079)(0.705284,1.14872)(0.65704,1.15976)(0.609295,1.16316) - (0.562623,1.15839)(0.517613,1.14522)(0.47484,1.12367)(0.434852,1.09408) - (0.398146,1.05707)(0.365158,1.01352)(0.336248,0.964504) - (0.311704,0.911264)(0.291738,0.855133)(0.276497,0.797481) - (0.266074,0.739664)(0.260522,0.68298)(0.259863,0.628631) - (0.264107,0.577699)(0.273258,0.531127)(0.287318,0.489709) - (0.306294,0.454081)(0.330189,0.424716)(0.358995,0.401924) - (0.392679,0.38584)(0.431158,0.376427)(0.474277,0.373467) - (0.521781,0.37656)(0.573284,0.385128) -\path(0.573284,0.385128) -\path(0.522412,0.280089)(0.592255,0.303678)(0.666599,0.332557) - (0.744277,0.365124)(0.823805,0.399632)(0.903434,0.434308) - (0.981254,0.467495)(1.05533,0.497794)(1.12387,0.524191)(1.18533,0.546138) - (1.23857,0.563575)(1.28285,0.576899)(1.31791,0.586882)(1.34384,0.594557) - (1.36104,0.601102)(1.37013,0.607733)(1.37182,0.615613)(1.3669,0.625786) - (1.35609,0.639142)(1.34008,0.656388)(1.31944,0.67804)(1.29466,0.704421) - (1.26612,0.735658)(1.2341,0.771686)(1.1988,0.812243)(1.16038,0.856871) - (1.11892,0.904905)(1.07452,0.955475)(1.02726,1.0075)(0.977251,1.05971) - (0.924661,1.11063)(0.86973,1.15865)(0.812793,1.20206)(0.754288,1.23912) - (0.694765,1.26811)(0.634877,1.28752)(0.575368,1.29605)(0.517045,1.29277) - (0.460742,1.27718)(0.40728,1.24929)(0.35743,1.20959)(0.311875,1.15903) - (0.27118,1.09902)(0.235783,1.03125)(0.205991,0.95767)(0.181986,0.880311) - (0.163849,0.801232)(0.151584,0.722411)(0.145146,0.645689) - (0.144472,0.572724)(0.149503,0.504968)(0.160206,0.443655) - (0.17659,0.389804)(0.198709,0.344221)(0.22666,0.307508) - (0.260573,0.280059)(0.300586,0.26206)(0.346809,0.253475) - (0.39928,0.254024)(0.457909,0.263169)(0.522412,0.280089) -\path(0.522412,0.280089) -\path(0.46836,0.168485)(0.553304,0.204953)(0.645257,0.248719) - (0.742767,0.297412)(0.843765,0.348317)(0.945636,0.398569) - (1.04539,0.445422)(1.13995,0.486548)(1.22644,0.5203)(1.30251,0.545884) - (1.36653,0.563399)(1.41769,0.573743)(1.45594,0.578419)(1.48186,0.579303) - (1.49647,0.578408)(1.50104,0.577699)(1.49691,0.578964)(1.48538,0.583732) - (1.46759,0.593248)(1.44451,0.60847)(1.41692,0.63008)(1.38541,0.658506) - (1.35037,0.693935)(1.31206,0.736325)(1.27061,0.785404)(1.22604,0.840659) - (1.17832,0.901326)(1.12739,0.966366)(1.07317,1.03445)(1.01563,1.10395) - (0.954829,1.17292)(0.890909,1.23916)(0.824171,1.30025)(0.755083,1.35363) - (0.684297,1.39674)(0.612645,1.42719)(0.541119,1.44293)(0.470828,1.44243) - (0.402935,1.42483)(0.33859,1.39004)(0.278856,1.33875)(0.224644,1.27245) - (0.176669,1.19323)(0.135426,1.10367)(0.101196,1.00663) - (0.0740632,0.905071)(0.053964,0.801877)(0.0407306,0.699748) - (0.0341447,0.601107)(0.0339864,0.508057)(0.0400764,0.422378) - (0.0523099,0.345536)(0.0706802,0.278715)(0.0952918,0.222844) - (0.126363,0.178624)(0.164213,0.146543)(0.209236,0.126873) - (0.261856,0.119648)(0.322456,0.124628)(0.391288,0.141232) - (0.46836,0.168485) -\path(0.46836,0.168485) -\end{picture} diff --git a/graphics/epix/doc/plot_b.xp b/graphics/epix/doc/plot_b.xp deleted file mode 100644 index f7560071e9..0000000000 --- a/graphics/epix/doc/plot_b.xp +++ /dev/null @@ -1,27 +0,0 @@ -/* -*-ePiX-*- */ -#include "epix.h" -using namespace ePiX; -P f(double u, double v) -{ - double x=u*Cos(v), y=u*Sin(v); - // return P(x, y, 0.25*x*(x*x-3*y*y)); - return P(x, y, x*y); -} - -domain R(P(0,0), P(1,1), mesh(6, 20), mesh(12,60)); - -int main() -{ - bounding_box(P(-1,-1),P(1,1)); - unitlength("1in"); - picture(1.5,1.5); - - begin(); - revolutions(); - - camera.at(P(3, 1, 3)); - - plot(f, R); - - end(); -} diff --git a/graphics/epix/doc/plotting.eepic b/graphics/epix/doc/plotting.eepic deleted file mode 100644 index ca0911610b..0000000000 --- a/graphics/epix/doc/plotting.eepic +++ /dev/null @@ -1,82 +0,0 @@ -%% Generated from plotting.xp on Thu Jun 28 15:36:18 EDT 2007 by -%% ePiX-1.1.6 -%% -%% Cartesian bounding box: [-2,2] x [-1,1] -%% Actual size: 5 x 1in -%% Figure offset: left by 0in, down by 0in -%% -\xdefinecolor{rgb_000000}{rgb}{0,0,0} -\xdefinecolor{rgb_ff0000}{rgb}{1,0,0} -\setlength{\unitlength}{1in} -\begin{picture}(5,1)(-0,-0) -\path(0,0.5)(5,0.5) -%% -\put(0,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}} -\put(0.3125,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}} -\put(0.625,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}} -\put(0.9375,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}} -\put(1.25,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}} -\put(1.5625,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}} -\put(1.875,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}} -\put(2.1875,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}} -\put(2.5,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}} -\put(2.8125,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}} -\put(3.125,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}} -\put(3.4375,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}} -\put(3.75,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}} -\put(4.0625,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}} -\put(4.375,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}} -\put(4.6875,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}} -\put(5,0.5){\makebox(0,0){$\rule{0.5pt}{4pt}$}} -\path(2.5,0)(2.5,1) -%% -\put(2.5,0){\makebox(0,0){$\rule{4pt}{0.5pt}$}} -\put(2.5,0.25){\makebox(0,0){$\rule{4pt}{0.5pt}$}} -\put(2.5,0.5){\makebox(0,0){$\rule{4pt}{0.5pt}$}} -\put(2.5,0.75){\makebox(0,0){$\rule{4pt}{0.5pt}$}} -\put(2.5,1){\makebox(0,0){$\rule{4pt}{0.5pt}$}} -\put(0,0.444652){\makebox(0,0)[t]{$-2$}} -\put(1.25,0.444652){\makebox(0,0)[t]{$-1$}} -\put(2.5,0.444652){\makebox(0,0)[t]{$\phantom{-}0$}} -\put(3.75,0.444652){\makebox(0,0)[t]{$\phantom{-}1$}} -\put(5,0.444652){\makebox(0,0)[t]{$\phantom{-}2$}} -\color{rgb_ff0000}% -\path(0,0.5)(0.0416667,0.527125) - (0.0833333,0.559633)(0.125,0.601537)(0.166667,0.654364) - (0.208333,0.716506)(0.25,0.783173)(0.291667,0.846957) - (0.333333,0.898935)(0.375,0.930119)(0.416667,0.933013) - (0.458333,0.902995)(0.5,0.839302)(0.541667,0.745419) - (0.583333,0.628809)(0.625,0.5)(0.666667,0.371191) - (0.708333,0.254581)(0.75,0.160698)(0.791667,0.0970055) - (0.833333,0.0669873)(0.875,0.0698806)(0.916667,0.101065) - (0.958333,0.153043)(1,0.216827)(1.04167,0.283494)(1.08333,0.345636) - (1.125,0.398463)(1.16667,0.440367)(1.20833,0.472875)(1.25,0.5) - (1.29167,0.527125)(1.33333,0.559633)(1.375,0.601537) - (1.41667,0.654364)(1.45833,0.716506)(1.5,0.783173) - (1.54167,0.846957)(1.58333,0.898935)(1.625,0.930119) - (1.66667,0.933013)(1.70833,0.902995)(1.75,0.839302) - (1.79167,0.745419)(1.83333,0.628809)(1.875,0.5)(1.91667,0.371191) - (1.95833,0.254581)(2,0.160698)(2.04167,0.0970055) - (2.08333,0.0669873)(2.125,0.0698806)(2.16667,0.101065) - (2.20833,0.153043)(2.25,0.216827)(2.29167,0.283494) - (2.33333,0.345636)(2.375,0.398463)(2.41667,0.440367) - (2.45833,0.472875)(2.5,0.5)(2.54167,0.527125)(2.58333,0.559633) - (2.625,0.601537)(2.66667,0.654364)(2.70833,0.716506)(2.75,0.783173) - (2.79167,0.846957)(2.83333,0.898935)(2.875,0.930119) - (2.91667,0.933013)(2.95833,0.902995)(3,0.839302)(3.04167,0.745419) - (3.08333,0.628809)(3.125,0.5)(3.16667,0.371191)(3.20833,0.254581) - (3.25,0.160698)(3.29167,0.0970055)(3.33333,0.0669873) - (3.375,0.0698806)(3.41667,0.101065)(3.45833,0.153043)(3.5,0.216827) - (3.54167,0.283494)(3.58333,0.345636)(3.625,0.398463) - (3.66667,0.440367)(3.70833,0.472875)(3.75,0.5)(3.79167,0.527125) - (3.83333,0.559633)(3.875,0.601537)(3.91667,0.654364) - (3.95833,0.716506)(4,0.783173)(4.04167,0.846957)(4.08333,0.898935) - (4.125,0.930119)(4.16667,0.933013)(4.20833,0.902995)(4.25,0.839302) - (4.29167,0.745419)(4.33333,0.628809)(4.375,0.5)(4.41667,0.371191) - (4.45833,0.254581)(4.5,0.160698)(4.54167,0.0970055) - (4.58333,0.0669873)(4.625,0.0698806)(4.66667,0.101065) - (4.70833,0.153043)(4.75,0.216827)(4.79167,0.283494) - (4.83333,0.345636)(4.875,0.398463)(4.91667,0.440367) - (4.95833,0.472875)(5,0.5) -%% -\end{picture} diff --git a/graphics/epix/doc/plotting.xp b/graphics/epix/doc/plotting.xp deleted file mode 100644 index ad310f7b02..0000000000 --- a/graphics/epix/doc/plotting.xp +++ /dev/null @@ -1,26 +0,0 @@ -/* -*-ePiX-*- */ -#include "epix.h" -using namespace ePiX; - -double f(double x) -{ - return 0.75*Sin(x) - 0.25*Sin(2*x); -} - -int main() -{ - picture(P(-2,-1),P(2,1), "5x1in"); - - begin(); - - h_axis(16); - v_axis(4); - - h_axis_labels(4, P(0,-4), b); // shift labels down 4pt, align below - - revolutions(); // set angle units - red(); - plot(f, xmin(), xmax(), 120); // use 120 intervals - - end(); -} diff --git a/graphics/epix/doc/plotting2.eepic b/graphics/epix/doc/plotting2.eepic deleted file mode 100644 index 5f56a743ec..0000000000 --- a/graphics/epix/doc/plotting2.eepic +++ /dev/null @@ -1,1766 +0,0 @@ -%% Generated from plotting2.xp on Tue Sep 25 00:02:47 EDT 2007 by -%% ePiX-1.2.0 -%% -%% Cartesian bounding box: [-1,1] x [-1,1] -%% Actual size: 2 x 1in -%% Figure offset: left by 0in, down by 0in -%% -%% usepackages pstricks -%% -\newcmykcolor{cmy_0000ff}{0 0 1 0}% -\newcmykcolor{cmy_0101ff}{0 0 0.996078 0.00392157}% -\newcmykcolor{cmy_0202ff}{0 0 0.992157 0.00784314}% -\newcmykcolor{cmy_0303ff}{0 0 0.988235 0.0117647}% -\newcmykcolor{cmy_0505ff}{0 0 0.980392 0.0196078}% -\newcmykcolor{cmy_0606ff}{0 0 0.976471 0.0235294}% -\newcmykcolor{cmy_0808ff}{0 0 0.968627 0.0313725}% -\newcmykcolor{cmy_0909ff}{0 0 0.964706 0.0352941}% -\newcmykcolor{cmy_0a0aff}{0 0 0.960784 0.0392157}% -\newcmykcolor{cmy_0b0bff}{0 0 0.956863 0.0431373}% -\newcmykcolor{cmy_0c0cff}{0 0 0.952941 0.0470588}% -\newcmykcolor{cmy_0d0dff}{0 0 0.94902 0.0509804}% -\newcmykcolor{cmy_0e0eff}{0 0 0.945098 0.054902}% -\newcmykcolor{cmy_0f0fff}{0 0 0.941176 0.0588235}% -\newcmykcolor{cmy_1111ff}{0 0 0.933333 0.0666667}% -\newcmykcolor{cmy_1313ff}{0 0 0.92549 0.0745098}% -\newcmykcolor{cmy_1515ff}{0 0 0.917647 0.0823529}% -\newcmykcolor{cmy_1616ff}{0 0 0.913725 0.0862745}% -\newcmykcolor{cmy_1818ff}{0 0 0.905882 0.0941176}% -\newcmykcolor{cmy_1919ff}{0 0 0.901961 0.0980392}% -\newcmykcolor{cmy_1b1bff}{0 0 0.894118 0.105882}% -\newcmykcolor{cmy_1c1cff}{0 0 0.890196 0.109804}% -\newcmykcolor{cmy_2020ff}{0 0 0.87451 0.12549}% -\newcmykcolor{cmy_2323ff}{0 0 0.862745 0.137255}% -\newcmykcolor{cmy_2525ff}{0 0 0.854902 0.145098}% -\newcmykcolor{cmy_2626ff}{0 0 0.85098 0.14902}% -\newcmykcolor{cmy_2828ff}{0 0 0.843137 0.156863}% -\newcmykcolor{cmy_2929ff}{0 0 0.839216 0.160784}% -\newcmykcolor{cmy_2a2aff}{0 0 0.835294 0.164706}% -\newcmykcolor{cmy_2d2dff}{0 0 0.823529 0.176471}% -\newcmykcolor{cmy_3030ff}{0 0 0.811765 0.188235}% -\newcmykcolor{cmy_3131ff}{0 0 0.807843 0.192157}% -\newcmykcolor{cmy_3232ff}{0 0 0.803922 0.196078}% -\newcmykcolor{cmy_3434ff}{0 0 0.796078 0.203922}% -\newcmykcolor{cmy_3535ff}{0 0 0.792157 0.207843}% -\newcmykcolor{cmy_3636ff}{0 0 0.788235 0.211765}% -\newcmykcolor{cmy_3737ff}{0 0 0.784314 0.215686}% -\newcmykcolor{cmy_3838ff}{0 0 0.780392 0.219608}% -\newcmykcolor{cmy_3939ff}{0 0 0.776471 0.223529}% -\newcmykcolor{cmy_3a3aff}{0 0 0.772549 0.227451}% -\newcmykcolor{cmy_3b3bff}{0 0 0.768627 0.231373}% -\newcmykcolor{cmy_3c3cff}{0 0 0.764706 0.235294}% -\newcmykcolor{cmy_3d3dff}{0 0 0.760784 0.239216}% -\newcmykcolor{cmy_3e3eff}{0 0 0.756863 0.243137}% -\newcmykcolor{cmy_3f3fff}{0 0 0.752941 0.247059}% -\newcmykcolor{cmy_4141ff}{0 0 0.745098 0.254902}% -\newcmykcolor{cmy_4343ff}{0 0 0.737255 0.262745}% -\newcmykcolor{cmy_4545ff}{0 0 0.729412 0.270588}% -\newcmykcolor{cmy_4848ff}{0 0 0.717647 0.282353}% -\newcmykcolor{cmy_4949ff}{0 0 0.713725 0.286275}% -\newcmykcolor{cmy_4a4aff}{0 0 0.709804 0.290196}% -\newcmykcolor{cmy_4b4bff}{0 0 0.705882 0.294118}% -\newcmykcolor{cmy_4c4cff}{0 0 0.701961 0.298039}% -\newcmykcolor{cmy_4d4dff}{0 0 0.698039 0.301961}% -\newcmykcolor{cmy_4e4eff}{0 0 0.694118 0.305882}% -\newcmykcolor{cmy_4f4fff}{0 0 0.690196 0.309804}% -\newcmykcolor{cmy_5050ff}{0 0 0.686275 0.313725}% -\newcmykcolor{cmy_5151ff}{0 0 0.682353 0.317647}% -\newcmykcolor{cmy_5252ff}{0 0 0.678431 0.321569}% -\newcmykcolor{cmy_5353ff}{0 0 0.67451 0.32549}% -\newcmykcolor{cmy_5454ff}{0 0 0.670588 0.329412}% -\newcmykcolor{cmy_5555ff}{0 0 0.666667 0.333333}% -\newcmykcolor{cmy_5656ff}{0 0 0.662745 0.337255}% -\newcmykcolor{cmy_5757ff}{0 0 0.658824 0.341176}% -\newcmykcolor{cmy_5858ff}{0 0 0.654902 0.345098}% -\newcmykcolor{cmy_5959ff}{0 0 0.65098 0.34902}% -\newcmykcolor{cmy_5a5aff}{0 0 0.647059 0.352941}% -\newcmykcolor{cmy_5b5bff}{0 0 0.643137 0.356863}% -\newcmykcolor{cmy_5c5cff}{0 0 0.639216 0.360784}% -\newcmykcolor{cmy_5d5dff}{0 0 0.635294 0.364706}% -\newcmykcolor{cmy_5e5eff}{0 0 0.631373 0.368627}% -\newcmykcolor{cmy_5f5fff}{0 0 0.627451 0.372549}% -\newcmykcolor{cmy_6060ff}{0 0 0.623529 0.376471}% -\newcmykcolor{cmy_6161ff}{0 0 0.619608 0.380392}% -\newcmykcolor{cmy_6262ff}{0 0 0.615686 0.384314}% -\newcmykcolor{cmy_6363ff}{0 0 0.611765 0.388235}% -\newcmykcolor{cmy_6464ff}{0 0 0.607843 0.392157}% -\newcmykcolor{cmy_6565ff}{0 0 0.603922 0.396078}% -\newcmykcolor{cmy_6666ff}{0 0 0.6 0.4}% -\newcmykcolor{cmy_6767ff}{0 0 0.596078 0.403922}% -\newcmykcolor{cmy_6868ff}{0 0 0.592157 0.407843}% -\newcmykcolor{cmy_6969ff}{0 0 0.588235 0.411765}% -\newcmykcolor{cmy_6a6aff}{0 0 0.584314 0.415686}% -\newcmykcolor{cmy_6b6bff}{0 0 0.580392 0.419608}% -\newcmykcolor{cmy_6c6cff}{0 0 0.576471 0.423529}% -\newcmykcolor{cmy_6d6dff}{0 0 0.572549 0.427451}% -\newcmykcolor{cmy_6e6eff}{0 0 0.568627 0.431373}% -\newcmykcolor{cmy_6f6fff}{0 0 0.564706 0.435294}% -\newcmykcolor{cmy_7070ff}{0 0 0.560784 0.439216}% -\newcmykcolor{cmy_7171ff}{0 0 0.556863 0.443137}% -\newcmykcolor{cmy_7272ff}{0 0 0.552941 0.447059}% -\newcmykcolor{cmy_7373ff}{0 0 0.54902 0.45098}% -\newcmykcolor{cmy_7474ff}{0 0 0.545098 0.454902}% -\newcmykcolor{cmy_7575ff}{0 0 0.541176 0.458824}% -\newcmykcolor{cmy_7676ff}{0 0 0.537255 0.462745}% -\newcmykcolor{cmy_7777ff}{0 0 0.533333 0.466667}% -\newcmykcolor{cmy_7878ff}{0 0 0.529412 0.470588}% -\newcmykcolor{cmy_7979ff}{0 0 0.52549 0.47451}% -\newcmykcolor{cmy_7a7aff}{0 0 0.521569 0.478431}% -\newcmykcolor{cmy_7b7bff}{0 0 0.517647 0.482353}% -\newcmykcolor{cmy_7c7cff}{0 0 0.513725 0.486275}% -\newcmykcolor{cmy_7d7dff}{0 0 0.509804 0.490196}% -\newcmykcolor{cmy_7e7eff}{0 0 0.505882 0.494118}% -\newcmykcolor{cmy_7f7fff}{0 0 0.501961 0.498039}% -\newrgbcolor{rgb_000000}{0 0 0}% -\newrgbcolor{rgb_19197f}{0.0980392 0.0980392 0.498039}% -\newrgbcolor{rgb_191980}{0.0980392 0.0980392 0.501961}% -\newrgbcolor{rgb_191981}{0.0980392 0.0980392 0.505882}% -\newrgbcolor{rgb_1a1a82}{0.101961 0.101961 0.509804}% -\newrgbcolor{rgb_1a1a83}{0.101961 0.101961 0.513725}% -\newrgbcolor{rgb_1a1a84}{0.101961 0.101961 0.517647}% -\newrgbcolor{rgb_1a1a85}{0.101961 0.101961 0.521569}% -\newrgbcolor{rgb_1a1a86}{0.101961 0.101961 0.52549}% -\newrgbcolor{rgb_1b1b87}{0.105882 0.105882 0.529412}% -\newrgbcolor{rgb_1b1b88}{0.105882 0.105882 0.533333}% -\newrgbcolor{rgb_1b1b89}{0.105882 0.105882 0.537255}% -\newrgbcolor{rgb_1b1b8a}{0.105882 0.105882 0.541176}% -\newrgbcolor{rgb_1b1b8b}{0.105882 0.105882 0.545098}% -\newrgbcolor{rgb_1c1c8c}{0.109804 0.109804 0.54902}% -\newrgbcolor{rgb_1c1c8d}{0.109804 0.109804 0.552941}% -\newrgbcolor{rgb_1c1c8e}{0.109804 0.109804 0.556863}% -\newrgbcolor{rgb_1c1c8f}{0.109804 0.109804 0.560784}% -\newrgbcolor{rgb_1c1c90}{0.109804 0.109804 0.564706}% -\newrgbcolor{rgb_1d1d91}{0.113725 0.113725 0.568627}% -\newrgbcolor{rgb_1d1d92}{0.113725 0.113725 0.572549}% -\newrgbcolor{rgb_1d1d93}{0.113725 0.113725 0.576471}% -\newrgbcolor{rgb_1d1d94}{0.113725 0.113725 0.580392}% -\newrgbcolor{rgb_1d1d95}{0.113725 0.113725 0.584314}% -\newrgbcolor{rgb_1e1e96}{0.117647 0.117647 0.588235}% -\newrgbcolor{rgb_1e1e97}{0.117647 0.117647 0.592157}% -\newrgbcolor{rgb_1e1e98}{0.117647 0.117647 0.596078}% -\newrgbcolor{rgb_1e1e99}{0.117647 0.117647 0.6}% -\newrgbcolor{rgb_1e1e9a}{0.117647 0.117647 0.603922}% -\newrgbcolor{rgb_1f1f9b}{0.121569 0.121569 0.607843}% -\newrgbcolor{rgb_1f1f9c}{0.121569 0.121569 0.611765}% -\newrgbcolor{rgb_1f1f9d}{0.121569 0.121569 0.615686}% -\newrgbcolor{rgb_1f1f9e}{0.121569 0.121569 0.619608}% -\newrgbcolor{rgb_1f1f9f}{0.121569 0.121569 0.623529}% -\newrgbcolor{rgb_2020a0}{0.12549 0.12549 0.627451}% -\newrgbcolor{rgb_2020a1}{0.12549 0.12549 0.631373}% -\newrgbcolor{rgb_2020a2}{0.12549 0.12549 0.635294}% -\newrgbcolor{rgb_2020a3}{0.12549 0.12549 0.639216}% -\newrgbcolor{rgb_2020a4}{0.12549 0.12549 0.643137}% -\newrgbcolor{rgb_2121a5}{0.129412 0.129412 0.647059}% -\newrgbcolor{rgb_2121a6}{0.129412 0.129412 0.65098}% -\newrgbcolor{rgb_2121a7}{0.129412 0.129412 0.654902}% -\newrgbcolor{rgb_2121a8}{0.129412 0.129412 0.658824}% -\newrgbcolor{rgb_2121a9}{0.129412 0.129412 0.662745}% -\newrgbcolor{rgb_2222aa}{0.133333 0.133333 0.666667}% -\newrgbcolor{rgb_2222ab}{0.133333 0.133333 0.670588}% -\newrgbcolor{rgb_2222ac}{0.133333 0.133333 0.67451}% -\newrgbcolor{rgb_2222ad}{0.133333 0.133333 0.678431}% -\newrgbcolor{rgb_2222ae}{0.133333 0.133333 0.682353}% -\newrgbcolor{rgb_2323af}{0.137255 0.137255 0.686275}% -\newrgbcolor{rgb_2323b0}{0.137255 0.137255 0.690196}% -\newrgbcolor{rgb_2323b1}{0.137255 0.137255 0.694118}% -\newrgbcolor{rgb_2323b2}{0.137255 0.137255 0.698039}% -\newrgbcolor{rgb_2323b3}{0.137255 0.137255 0.701961}% -\newrgbcolor{rgb_2424b4}{0.141176 0.141176 0.705882}% -\newrgbcolor{rgb_2424b5}{0.141176 0.141176 0.709804}% -\newrgbcolor{rgb_2424b6}{0.141176 0.141176 0.713725}% -\newrgbcolor{rgb_2525b9}{0.145098 0.145098 0.72549}% -\newrgbcolor{rgb_2525bb}{0.145098 0.145098 0.733333}% -\newrgbcolor{rgb_2525bd}{0.145098 0.145098 0.741176}% -\newrgbcolor{rgb_2626bf}{0.14902 0.14902 0.74902}% -\newrgbcolor{rgb_2626c0}{0.14902 0.14902 0.752941}% -\newrgbcolor{rgb_2626c1}{0.14902 0.14902 0.756863}% -\newrgbcolor{rgb_2626c2}{0.14902 0.14902 0.760784}% -\newrgbcolor{rgb_2727c3}{0.152941 0.152941 0.764706}% -\newrgbcolor{rgb_2727c4}{0.152941 0.152941 0.768627}% -\newrgbcolor{rgb_2727c5}{0.152941 0.152941 0.772549}% -\newrgbcolor{rgb_2727c6}{0.152941 0.152941 0.776471}% -\newrgbcolor{rgb_2727c7}{0.152941 0.152941 0.780392}% -\newrgbcolor{rgb_2828c8}{0.156863 0.156863 0.784314}% -\newrgbcolor{rgb_2828c9}{0.156863 0.156863 0.788235}% -\newrgbcolor{rgb_2828ca}{0.156863 0.156863 0.792157}% -\newrgbcolor{rgb_2828cc}{0.156863 0.156863 0.8}% -\newrgbcolor{rgb_2929cd}{0.160784 0.160784 0.803922}% -\newrgbcolor{rgb_2929ce}{0.160784 0.160784 0.807843}% -\newrgbcolor{rgb_2929d1}{0.160784 0.160784 0.819608}% -\newrgbcolor{rgb_2a2ad4}{0.164706 0.164706 0.831373}% -\newrgbcolor{rgb_2a2ad5}{0.164706 0.164706 0.835294}% -\newrgbcolor{rgb_2a2ad6}{0.164706 0.164706 0.839216}% -\newrgbcolor{rgb_2b2bd8}{0.168627 0.168627 0.847059}% -\newrgbcolor{rgb_2b2bd9}{0.168627 0.168627 0.85098}% -\newrgbcolor{rgb_2b2bdb}{0.168627 0.168627 0.858824}% -\newrgbcolor{rgb_2c2cde}{0.172549 0.172549 0.870588}% -\newrgbcolor{rgb_2d2de2}{0.176471 0.176471 0.886275}% -\newrgbcolor{rgb_2d2de3}{0.176471 0.176471 0.890196}% -\newrgbcolor{rgb_2d2de5}{0.176471 0.176471 0.898039}% -\newrgbcolor{rgb_2e2ee6}{0.180392 0.180392 0.901961}% -\newrgbcolor{rgb_2e2ee8}{0.180392 0.180392 0.909804}% -\newrgbcolor{rgb_2e2ee9}{0.180392 0.180392 0.913725}% -\newrgbcolor{rgb_2f2feb}{0.184314 0.184314 0.921569}% -\newrgbcolor{rgb_2f2fed}{0.184314 0.184314 0.929412}% -\newrgbcolor{rgb_2f2fef}{0.184314 0.184314 0.937255}% -\newrgbcolor{rgb_3030f0}{0.188235 0.188235 0.941176}% -\newrgbcolor{rgb_3030f1}{0.188235 0.188235 0.945098}% -\newrgbcolor{rgb_3030f2}{0.188235 0.188235 0.94902}% -\newrgbcolor{rgb_3030f3}{0.188235 0.188235 0.952941}% -\newrgbcolor{rgb_3030f4}{0.188235 0.188235 0.956863}% -\newrgbcolor{rgb_3131f5}{0.192157 0.192157 0.960784}% -\newrgbcolor{rgb_3131f6}{0.192157 0.192157 0.964706}% -\newrgbcolor{rgb_3131f8}{0.192157 0.192157 0.972549}% -\newrgbcolor{rgb_3131f9}{0.192157 0.192157 0.976471}% -\newrgbcolor{rgb_3232fb}{0.196078 0.196078 0.984314}% -\newrgbcolor{rgb_3232fc}{0.196078 0.196078 0.988235}% -\newrgbcolor{rgb_3232fd}{0.196078 0.196078 0.992157}% -\newrgbcolor{rgb_3232fe}{0.196078 0.196078 0.996078}% -\psset{unit=1in,linewidth=0.4pt}% -\begin{pspicture}(2,1)(0,0)% -\psline(1,0.5)(0.460099,0.0671161) -\psset{fillcolor=rgb_000000}% -\pspolygon[fillstyle=solid](0.513324,0.109791)(0.500341,0.125984) - (0.460099,0.0671161)(0.526308,0.093598)(0.513324,0.109791) -\psline(1,0.5)(2.30211,0.383998) -\pspolygon[fillstyle=solid](2.19255,0.39376)(2.1907,0.373086) - (2.30211,0.383998)(2.19439,0.414433)(2.19255,0.39376) -\psset{fillcolor=cmy_5e5eff}% -\psset{linecolor=rgb_2020a0}% -\pspolygon[fillstyle=solid](1.21563,0.452275)(1.23301,0.375451) - (1.17732,0.388446)(1.12142,0.416397)(1.11204,0.483169) - (1.164,0.462409)(1.21563,0.452275) -\psset{fillcolor=cmy_5858ff}% -\psset{linecolor=rgb_2121a6}% -\pspolygon[fillstyle=solid](1.31978,0.464555)(1.34701,0.395075) - (1.28931,0.377672)(1.23301,0.375451)(1.21563,0.452275) - (1.26742,0.453019)(1.31978,0.464555) -\psset{fillcolor=cmy_6969ff}% -\psset{linecolor=rgb_1d1d95}% -\pspolygon[fillstyle=solid](1.11204,0.483169)(1.12142,0.416397) - (1.0645,0.458716)(1.0058,0.514406)(1.0053,0.553791) - (1.05928,0.513957)(1.11204,0.483169) -\psset{fillcolor=cmy_5e5eff}% -\psset{linecolor=rgb_2020a0}% -\pspolygon[fillstyle=solid](1.42762,0.517893)(1.46924,0.473639) - (1.40679,0.427311)(1.34701,0.395075)(1.31978,0.464555) - (1.3731,0.486452)(1.42762,0.517893) -\psset{fillcolor=cmy_7676ff}% -\psset{linecolor=rgb_1b1b88}% -\pspolygon[fillstyle=solid](1.0053,0.553791)(1.0058,0.514406) - (0.944617,0.581935)(0.880444,0.659087)(0.892338,0.65446) - (0.949725,0.601259)(1.0053,0.553791) -\psset{fillcolor=cmy_6565ff}% -\psset{linecolor=rgb_1e1e99}% -\pspolygon[fillstyle=solid](1.19425,0.509734)(1.21563,0.452275) - (1.164,0.462409)(1.11204,0.483169)(1.10071,0.531856) - (1.14768,0.517332)(1.19425,0.509734) -\psset{fillcolor=cmy_6161ff}% -\psset{linecolor=rgb_1f1f9d}% -\pspolygon[fillstyle=solid](1.28699,0.515829)(1.31978,0.464555) - (1.26742,0.453019)(1.21563,0.452275)(1.19425,0.509734) - (1.24062,0.509263)(1.28699,0.515829) -\psset{fillcolor=cmy_6f6fff}% -\psset{linecolor=rgb_1c1c8f}% -\pspolygon[fillstyle=solid](1.10071,0.531856)(1.11204,0.483169) - (1.05928,0.513957)(1.0053,0.553791)(1.00473,0.579391) - (1.05312,0.552809)(1.10071,0.531856) -\psset{fillcolor=cmy_6666ff}% -\psset{linecolor=rgb_1e1e98}% -\pspolygon[fillstyle=solid](1.38015,0.548201)(1.42762,0.517893) - (1.3731,0.486452)(1.31978,0.464555)(1.28699,0.515829) - (1.33349,0.529041)(1.38015,0.548201) -\psset{fillcolor=cmy_6c6cff}% -\psset{linecolor=rgb_1d1d92}% -\pspolygon[fillstyle=solid](1.54036,0.603855)(1.60334,0.602838) - (1.53472,0.5328)(1.46924,0.473639)(1.42762,0.517893) - (1.48342,0.557617)(1.54036,0.603855) -\psset{fillcolor=cmy_7979ff}% -\psset{linecolor=rgb_1a1a85}% -\pspolygon[fillstyle=solid](1.00473,0.579391)(1.0053,0.553791) - (0.949725,0.601259)(0.892338,0.65446)(0.905094,0.644715) - (0.955399,0.610498)(1.00473,0.579391) -\psset{fillcolor=cmy_7f7fff}% -\psset{linecolor=rgb_19197f}% -\pspolygon[fillstyle=solid](0.892338,0.65446)(0.880444,0.659087) - (0.812994,0.742797)(0.742326,0.82905)(0.772133,0.767878) - (0.833083,0.710977)(0.892338,0.65446) -\psset{fillcolor=cmy_7070ff}% -\psset{linecolor=rgb_1c1c8e}% -\pspolygon[fillstyle=solid](1.1691,0.547312)(1.19425,0.509734) - (1.14768,0.517332)(1.10071,0.531856)(1.08754,0.562251) - (1.12854,0.552782)(1.1691,0.547312) -\psset{fillcolor=cmy_7777ff}% -\psset{linecolor=rgb_1b1b87}% -\pspolygon[fillstyle=solid](1.08754,0.562251)(1.10071,0.531856) - (1.05312,0.552809)(1.00473,0.579391)(1.00408,0.591586) - (1.04606,0.57537)(1.08754,0.562251) -\psset{fillcolor=cmy_6d6dff}% -\psset{linecolor=rgb_1d1d91}% -\pspolygon[fillstyle=solid](1.24902,0.548712)(1.28699,0.515829) - (1.24062,0.509263)(1.19425,0.509734)(1.1691,0.547312) - (1.20925,0.545979)(1.24902,0.548712) -\psset{fillcolor=cmy_7f7fff}% -\psset{linecolor=rgb_19197f}% -\pspolygon[fillstyle=solid](0.905094,0.644715)(0.892338,0.65446) - (0.833083,0.710977)(0.772133,0.767878)(0.801956,0.715411) - (0.853879,0.680337)(0.905094,0.644715) -\psset{fillcolor=cmy_7171ff}% -\psset{linecolor=rgb_1c1c8d}% -\pspolygon[fillstyle=solid](1.47358,0.599945)(1.54036,0.603855) - (1.48342,0.557617)(1.42762,0.517893)(1.38015,0.548201) - (1.42692,0.572286)(1.47358,0.599945) -\psset{fillcolor=cmy_7d7dff}% -\psset{linecolor=rgb_191981}% -\pspolygon[fillstyle=solid](1.00408,0.591586)(1.00473,0.579391) - (0.955399,0.610498)(0.905094,0.644715)(0.918709,0.630156) - (0.961612,0.610155)(1.00408,0.591586) -\psset{fillcolor=cmy_7171ff}% -\psset{linecolor=rgb_1c1c8d}% -\pspolygon[fillstyle=solid](1.32731,0.565028)(1.38015,0.548201) - (1.33349,0.529041)(1.28699,0.515829)(1.24902,0.548712) - (1.2884,0.555226)(1.32731,0.565028) -\psset{fillcolor=cmy_7878ff}% -\psset{linecolor=rgb_1a1a86}% -\pspolygon[fillstyle=solid](0.772133,0.767878)(0.742326,0.82905) - (0.668933,0.912872)(0.593817,0.988506)(0.647182,0.869075) - (0.709925,0.821791)(0.772133,0.767878) -\psset{fillcolor=cmy_7e7eff}% -\psset{linecolor=rgb_191980}% -\pspolygon[fillstyle=solid](0.918709,0.630156)(0.905094,0.644715) - (0.853879,0.680337)(0.801956,0.715411)(0.832163,0.670073) - (0.875495,0.650521)(0.918709,0.630156) -\psset{fillcolor=cmy_7b7bff}% -\psset{linecolor=rgb_1a1a83}% -\pspolygon[fillstyle=solid](1.14055,0.565734)(1.1691,0.547312) - (1.12854,0.552782)(1.08754,0.562251)(1.07271,0.575185) - (1.10684,0.569509)(1.14055,0.565734) -\psset{fillcolor=cmy_7979ff}% -\psset{linecolor=rgb_1a1a85}% -\pspolygon[fillstyle=solid](1.65578,0.705915)(1.74819,0.763081) - (1.67477,0.680906)(1.60334,0.602838)(1.54036,0.603855) - (1.59806,0.654266)(1.65578,0.705915) -\psset{fillcolor=cmy_7d7dff}% -\psset{linecolor=rgb_191981}% -\pspolygon[fillstyle=solid](1.07271,0.575185)(1.08754,0.562251) - (1.04606,0.57537)(1.00408,0.591586)(1.00338,0.591308) - (1.0382,0.582558)(1.07271,0.575185) -\psset{fillcolor=cmy_7575ff}% -\psset{linecolor=rgb_1b1b89}% -\pspolygon[fillstyle=solid](0.801956,0.715411)(0.772133,0.767878) - (0.709925,0.821791)(0.647182,0.869075)(0.697531,0.775355) - (0.749674,0.74781)(0.801956,0.715411) -\psset{fillcolor=cmy_7a7aff}% -\psset{linecolor=rgb_1a1a84}% -\pspolygon[fillstyle=solid](1.2064,0.564093)(1.24902,0.548712) - (1.20925,0.545979)(1.1691,0.547312)(1.14055,0.565734) - (1.17375,0.563943)(1.2064,0.564093) -\psset{fillcolor=cmy_7878ff}% -\psset{linecolor=rgb_1a1a86}% -\pspolygon[fillstyle=solid](1.40315,0.59151)(1.47358,0.599945) - (1.42692,0.572286)(1.38015,0.548201)(1.32731,0.565028) - (1.36563,0.577419)(1.40315,0.59151) -\psset{fillcolor=cmy_7f7fff}% -\psset{linecolor=rgb_19197f}% -\pspolygon[fillstyle=solid](1.00338,0.591308)(1.00408,0.591586) - (0.961612,0.610155)(0.918709,0.630156)(0.933183,0.611153) - (0.968339,0.601011)(1.00338,0.591308) -\psset{fillcolor=cmy_6c6cff}% -\psset{linecolor=rgb_1d1d92}% -\pspolygon[fillstyle=solid](0.189032,0.289372)(0.105002,0.195832) - (0.106173,0.133184)(0.107102,0.0871823)(0.187635,0.204779) - (0.187646,0.241139)(0.189032,0.289372) -\psset{fillcolor=cmy_7c7cff}% -\psset{linecolor=rgb_1a1a82}% -\pspolygon[fillstyle=solid](1.26963,0.569425)(1.32731,0.565028) - (1.2884,0.555226)(1.24902,0.548712)(1.2064,0.564093) - (1.23839,0.566016)(1.26963,0.569425) -\psset{fillcolor=cmy_7171ff}% -\psset{linecolor=rgb_1c1c8d}% -\pspolygon[fillstyle=solid](0.832163,0.670073)(0.801956,0.715411) - (0.749674,0.74781)(0.697531,0.775355)(0.746272,0.701846) - (0.788976,0.687585)(0.832163,0.670073) -\psset{fillcolor=cmy_7c7cff}% -\psset{linecolor=rgb_1a1a82}% -\pspolygon[fillstyle=solid](1.56495,0.658972)(1.65578,0.705915) - (1.59806,0.654266)(1.54036,0.603855)(1.47358,0.599945) - (1.51977,0.629498)(1.56495,0.658972) -\psset{fillcolor=cmy_4949ff}% -\psset{linecolor=rgb_2424b5}% -\pspolygon[fillstyle=solid](0.19769,0.416171)(0.10474,0.365653) - (0.104222,0.273918)(0.105002,0.195832)(0.189032,0.289372) - (0.192187,0.348273)(0.19769,0.416171) -\psset{fillcolor=cmy_7b7bff}% -\psset{linecolor=rgb_1a1a83}% -\pspolygon[fillstyle=solid](0.933183,0.611153)(0.918709,0.630156) - (0.875495,0.650521)(0.832163,0.670073)(0.863092,0.630402) - (0.898045,0.621157)(0.933183,0.611153) -\psset{fillcolor=cmy_5656ff}% -\psset{linecolor=rgb_2121a8}% -\pspolygon[fillstyle=solid](0.647182,0.869075)(0.593817,0.988506) - (0.518501,1.04983)(0.444947,1.09101)(0.524261,0.929508) - (0.584894,0.90608)(0.647182,0.869075) -\psset{fillcolor=cmy_5353ff}% -\psset{linecolor=rgb_2222ab}% -\pspolygon[fillstyle=solid](0.697531,0.775355)(0.647182,0.869075) - (0.584894,0.90608)(0.524261,0.929508)(0.596275,0.807827) - (0.646156,0.795963)(0.697531,0.775355) -\psset{fillcolor=cmy_7d7dff}% -\psset{linecolor=rgb_191981}% -\pspolygon[fillstyle=solid](0.187635,0.204779)(0.107102,0.0871823) - (0.107428,0.0586308)(0.107074,0.0480454)(0.191172,0.170524) - (0.188802,0.181093)(0.187635,0.204779) -\psset{fillcolor=cmy_7e7eff}% -\psset{linecolor=rgb_191980}% -\pspolygon[fillstyle=solid](1.32922,0.579024)(1.40315,0.59151) - (1.36563,0.577419)(1.32731,0.565028)(1.26963,0.569425) - (1.29996,0.573925)(1.32922,0.579024) -\psset{fillcolor=cmy_6c6cff}% -\psset{linecolor=rgb_1d1d92}% -\pspolygon[fillstyle=solid](0.863092,0.630402)(0.832163,0.670073) - (0.788976,0.687585)(0.746272,0.701846)(0.794552,0.644134) - (0.828519,0.638261)(0.863092,0.630402) -\psset{fillcolor=cmy_7f7fff}% -\psset{linecolor=rgb_19197f}% -\pspolygon[fillstyle=solid](1.109,0.566914)(1.14055,0.565734) - (1.10684,0.569509)(1.07271,0.575185)(1.05638,0.57247) - (1.08289,0.569392)(1.109,0.566914) -\psset{fillcolor=cmy_7e7eff}% -\psset{linecolor=rgb_191980}% -\pspolygon[fillstyle=solid](1.05638,0.57247)(1.07271,0.575185) - (1.0382,0.582558)(1.00338,0.591308)(1.00261,0.579992) - (1.02959,0.576053)(1.05638,0.57247) -\pspolygon[fillstyle=solid](1.47456,0.620443)(1.56495,0.658972) - (1.51977,0.629498)(1.47358,0.599945)(1.40315,0.59151) - (1.43958,0.606246)(1.47456,0.620443) -\psset{fillcolor=cmy_5050ff}% -\psset{linecolor=rgb_2222ae}% -\pspolygon[fillstyle=solid](0.746272,0.701846)(0.697531,0.775355) - (0.646156,0.795963)(0.596275,0.807827)(0.663929,0.71633) - (0.704444,0.711739)(0.746272,0.701846) -\psset{fillcolor=cmy_2323ff}% -\psset{linecolor=rgb_2b2bdb}% -\pspolygon[fillstyle=solid](0.218731,0.569601)(0.114562,0.578881) - (0.107723,0.468479)(0.10474,0.365653)(0.19769,0.416171) - (0.206264,0.490868)(0.218731,0.569601) -\psset{fillcolor=cmy_7b7bff}% -\psset{linecolor=rgb_1a1a83}% -\pspolygon[fillstyle=solid](1.00261,0.579992)(1.00338,0.591308) - (0.968339,0.601011)(0.933183,0.611153)(0.948523,0.588133) - (0.975553,0.584095)(1.00261,0.579992) -\psset{fillcolor=cmy_7f7fff}% -\psset{linecolor=rgb_19197f}% -\pspolygon[fillstyle=solid](1.1597,0.563866)(1.2064,0.564093) - (1.17375,0.563943)(1.14055,0.565734)(1.109,0.566914) - (1.13464,0.565078)(1.1597,0.563866) -\psset{fillcolor=cmy_7474ff}% -\psset{linecolor=rgb_1b1b8a}% -\pspolygon[fillstyle=solid](0.948523,0.588133)(0.933183,0.611153) - (0.898045,0.621157)(0.863092,0.630402)(0.895059,0.594987) - (0.921647,0.591852)(0.948523,0.588133) -\psset{fillcolor=cmy_2828ff}% -\psset{linecolor=rgb_2a2ad6}% -\pspolygon[fillstyle=solid](0.524261,0.929508)(0.444947,1.09101) - (0.375363,1.10732)(0.311925,1.09597)(0.413159,0.926478) - (0.466591,0.936797)(0.524261,0.929508) -\psset{fillcolor=cmy_7f7fff}% -\psset{linecolor=rgb_19197f}% -\pspolygon[fillstyle=solid](1.20765,0.562964)(1.26963,0.569425) - (1.23839,0.566016)(1.2064,0.564093)(1.1597,0.563866) - (1.18407,0.563204)(1.20765,0.562964) -\psset{fillcolor=cmy_4f4fff}% -\psset{linecolor=rgb_2323af}% -\pspolygon[fillstyle=solid](0.794552,0.644134)(0.746272,0.701846) - (0.704444,0.711739)(0.663929,0.71633)(0.729448,0.647866) - (0.761441,0.647482)(0.794552,0.644134) -\psset{fillcolor=cmy_2828ff}% -\psset{linecolor=rgb_2a2ad6}% -\pspolygon[fillstyle=solid](0.596275,0.807827)(0.524261,0.929508) - (0.466591,0.936797)(0.413159,0.926478)(0.504048,0.800507) - (0.548656,0.809592)(0.596275,0.807827) -\psset{fillcolor=cmy_2929ff}% -\psset{linecolor=rgb_2a2ad5}% -\pspolygon[fillstyle=solid](0.663929,0.71633)(0.596275,0.807827) - (0.548656,0.809592)(0.504048,0.800507)(0.58863,0.707203) - (0.625178,0.714938)(0.663929,0.71633) -\psset{fillcolor=cmy_3f3fff}% -\psset{linecolor=rgb_2626bf}% -\pspolygon[fillstyle=solid](0.298804,0.454436)(0.19769,0.416171) - (0.192187,0.348273)(0.189032,0.289372)(0.285765,0.364096) - (0.29087,0.406486)(0.298804,0.454436) -\psset{fillcolor=cmy_6666ff}% -\psset{linecolor=rgb_1e1e98}% -\pspolygon[fillstyle=solid](0.895059,0.594987)(0.863092,0.630402) - (0.828519,0.638261)(0.794552,0.644134)(0.84333,0.598464) - (0.868903,0.597273)(0.895059,0.594987) -\psset{fillcolor=cmy_7f7fff}% -\psset{linecolor=rgb_19197f}% -\pspolygon[fillstyle=solid](1.38364,0.588709)(1.47456,0.620443) - (1.43958,0.606246)(1.40315,0.59151)(1.32922,0.579024) - (1.35719,0.584157)(1.38364,0.588709) -\psset{fillcolor=cmy_6464ff}% -\psset{linecolor=rgb_1e1e9a}% -\pspolygon[fillstyle=solid](0.285765,0.364096)(0.189032,0.289372) - (0.187646,0.241139)(0.187635,0.204779)(0.282956,0.300896) - (0.283191,0.328573)(0.285765,0.364096) -\psset{fillcolor=cmy_0909ff}% -\psset{linecolor=rgb_3131f5}% -\pspolygon[fillstyle=solid](0.258703,0.72553)(0.145957,0.803098) - (0.126792,0.692284)(0.114562,0.578881)(0.218731,0.569601) - (0.235947,0.649066)(0.258703,0.72553) -\psset{fillcolor=cmy_7e7eff}% -\psset{linecolor=rgb_191980}% -\pspolygon[fillstyle=solid](1.2519,0.563022)(1.32922,0.579024) - (1.29996,0.573925)(1.26963,0.569425)(1.20765,0.562964) - (1.2303,0.562975)(1.2519,0.563022) -\psset{fillcolor=cmy_7f7fff}% -\psset{linecolor=rgb_19197f}% -\pspolygon[fillstyle=solid](1.76674,0.798575)(1.89443,0.91833) - (1.82212,0.844276)(1.74819,0.763081)(1.65578,0.705915) - (1.71247,0.755316)(1.76674,0.798575) -\psset{fillcolor=cmy_1b1bff}% -\psset{linecolor=rgb_2d2de3}% -\pspolygon[fillstyle=solid](0.324666,0.560164)(0.218731,0.569601) - (0.206264,0.490868)(0.19769,0.416171)(0.298804,0.454436) - (0.309934,0.506308)(0.324666,0.560164) -\psset{fillcolor=cmy_2d2dff}% -\psset{linecolor=rgb_2929d1}% -\pspolygon[fillstyle=solid](0.729448,0.647866)(0.663929,0.71633) - (0.625178,0.714938)(0.58863,0.707203)(0.669881,0.638666) - (0.698841,0.644979)(0.729448,0.647866) -\psset{fillcolor=cmy_0909ff}% -\psset{linecolor=rgb_3131f5}% -\pspolygon[fillstyle=solid](0.413159,0.926478)(0.311925,1.09597) - (0.256452,1.05661)(0.210141,0.991471)(0.323082,0.85378) - (0.36506,0.8984)(0.413159,0.926478) -\psset{fillcolor=cmy_0a0aff}% -\psset{linecolor=rgb_3030f4}% -\pspolygon[fillstyle=solid](0.504048,0.800507)(0.413159,0.926478) - (0.36506,0.8984)(0.323082,0.85378)(0.426348,0.750295) - (0.463108,0.78052)(0.504048,0.800507) -\psset{fillcolor=cmy_7f7fff}% -\psset{linecolor=rgb_19197f}% -\pspolygon[fillstyle=solid](1.6493,0.708781)(1.76674,0.798575) - (1.71247,0.755316)(1.65578,0.705915)(1.56495,0.658972) - (1.60841,0.686169)(1.6493,0.708781) -\psset{fillcolor=cmy_5050ff}% -\psset{linecolor=rgb_2222ae}% -\pspolygon[fillstyle=solid](0.84333,0.598464)(0.794552,0.644134) - (0.761441,0.647482)(0.729448,0.647866)(0.794573,0.596748) - (0.818499,0.598346)(0.84333,0.598464) -\psset{fillcolor=cmy_0d0dff}% -\psset{linecolor=rgb_3030f1}% -\pspolygon[fillstyle=solid](0.58863,0.707203)(0.504048,0.800507) - (0.463108,0.78052)(0.426348,0.750295)(0.523665,0.673044) - (0.554683,0.693119)(0.58863,0.707203) -\psset{fillcolor=cmy_0606ff}% -\psset{linecolor=rgb_3131f8}% -\pspolygon[fillstyle=solid](0.366464,0.664928)(0.258703,0.72553) - (0.235947,0.649066)(0.218731,0.569601)(0.324666,0.560164) - (0.343397,0.613816)(0.366464,0.664928) -\psset{fillcolor=cmy_0000ff}% -\psset{linecolor=rgb_3232fe}% -\pspolygon[fillstyle=solid](0.323082,0.85378)(0.210141,0.991471) - (0.173421,0.904998)(0.145957,0.803098)(0.258703,0.72553) - (0.287629,0.795046)(0.323082,0.85378) -\psset{fillcolor=cmy_7474ff}% -\psset{linecolor=rgb_1b1b8a}% -\pspolygon[fillstyle=solid](1.03875,0.556754)(1.05638,0.57247) - (1.02959,0.576053)(1.00261,0.579992)(1.00179,0.559495) - (1.02033,0.558175)(1.03875,0.556754) -\psset{fillcolor=cmy_7676ff}% -\psset{linecolor=rgb_1b1b88}% -\pspolygon[fillstyle=solid](1.07488,0.553783)(1.109,0.566914) - (1.08289,0.569392)(1.05638,0.57247)(1.03875,0.556754) - (1.05696,0.555279)(1.07488,0.553783) -\psset{fillcolor=cmy_7171ff}% -\psset{linecolor=rgb_1c1c8d}% -\pspolygon[fillstyle=solid](1.00179,0.559495)(1.00261,0.579992) - (0.975553,0.584095)(0.948523,0.588133)(0.964748,0.561577) - (0.983236,0.560652)(1.00179,0.559495) -\psset{fillcolor=cmy_0000ff}% -\psset{linecolor=rgb_3232fe}% -\pspolygon[fillstyle=solid](0.426348,0.750295)(0.323082,0.85378) - (0.287629,0.795046)(0.258703,0.72553)(0.366464,0.664928) - (0.394092,0.711151)(0.426348,0.750295) -\psset{fillcolor=cmy_7e7eff}% -\psset{linecolor=rgb_191980}% -\pspolygon[fillstyle=solid](1.53831,0.642183)(1.6493,0.708781) - (1.60841,0.686169)(1.56495,0.658972)(1.47456,0.620443) - (1.50763,0.632843)(1.53831,0.642183) -\psset{fillcolor=cmy_7777ff}% -\psset{linecolor=rgb_1b1b87}% -\pspolygon[fillstyle=solid](1.10948,0.550772)(1.1597,0.563866) - (1.13464,0.565078)(1.109,0.566914)(1.07488,0.553783) - (1.09241,0.552281)(1.10948,0.550772) -\psset{fillcolor=cmy_6a6aff}% -\psset{linecolor=rgb_1d1d94}% -\pspolygon[fillstyle=solid](0.964748,0.561577)(0.948523,0.588133) - (0.921647,0.591852)(0.895059,0.594987)(0.92836,0.562423) - (0.946423,0.562194)(0.964748,0.561577) -\psset{fillcolor=cmy_1515ff}% -\psset{linecolor=rgb_2e2ee9}% -\pspolygon[fillstyle=solid](0.669881,0.638666)(0.58863,0.707203) - (0.554683,0.693119)(0.523665,0.673044)(0.617846,0.615994) - (0.642811,0.628942)(0.669881,0.638666) -\psset{fillcolor=cmy_0101ff}% -\psset{linecolor=rgb_3232fd}% -\pspolygon[fillstyle=solid](0.523665,0.673044)(0.426348,0.750295) - (0.394092,0.711151)(0.366464,0.664928)(0.471308,0.617992) - (0.495823,0.647676)(0.523665,0.673044) -\psset{fillcolor=cmy_3838ff}% -\psset{linecolor=rgb_2727c6}% -\pspolygon[fillstyle=solid](0.794573,0.596748)(0.729448,0.647866) - (0.698841,0.644979)(0.669881,0.638666)(0.750078,0.58872) - (0.771713,0.593556)(0.794573,0.596748) -\psset{fillcolor=cmy_7b7bff}% -\psset{linecolor=rgb_1a1a83}% -\pspolygon[fillstyle=solid](1.29137,0.562256)(1.38364,0.588709) - (1.35719,0.584157)(1.32922,0.579024)(1.2519,0.563022) - (1.27231,0.562867)(1.29137,0.562256) -\psset{fillcolor=cmy_7e7eff}% -\psset{linecolor=rgb_191980}% -\pspolygon[fillstyle=solid](0.191172,0.170524)(0.107074,0.0480454) - (0.106268,0.0557124)(0.105573,0.08167)(0.20082,0.188793) - (0.195007,0.173177)(0.191172,0.170524) -\psset{fillcolor=cmy_7979ff}% -\psset{linecolor=rgb_1a1a85}% -\pspolygon[fillstyle=solid](0.282956,0.300896)(0.187635,0.204779) - (0.188802,0.181093)(0.191172,0.170524)(0.28937,0.271374) - (0.284992,0.281718)(0.282956,0.300896) -\psset{fillcolor=cmy_7676ff}% -\psset{linecolor=rgb_1b1b88}% -\pspolygon[fillstyle=solid](1.14185,0.547647)(1.20765,0.562964) - (1.18407,0.563204)(1.1597,0.563866)(1.10948,0.550772) - (1.12599,0.549239)(1.14185,0.547647) -\psset{fillcolor=cmy_0505ff}% -\psset{linecolor=rgb_3131f9}% -\pspolygon[fillstyle=solid](0.471308,0.617992)(0.366464,0.664928) - (0.343397,0.613816)(0.324666,0.560164)(0.432412,0.550565) - (0.450178,0.585184)(0.471308,0.617992) -\psset{fillcolor=cmy_6161ff}% -\psset{linecolor=rgb_1f1f9d}% -\pspolygon[fillstyle=solid](0.92836,0.562423)(0.895059,0.594987) - (0.868903,0.597273)(0.84333,0.598464)(0.893412,0.561425) - (0.910657,0.56219)(0.92836,0.562423) -\psset{fillcolor=cmy_1616ff}% -\psset{linecolor=rgb_2e2ee8}% -\pspolygon[fillstyle=solid](0.432412,0.550565)(0.324666,0.560164) - (0.309934,0.506308)(0.298804,0.454436)(0.406584,0.481275) - (0.417922,0.515489)(0.432412,0.550565) -\psset{fillcolor=cmy_7b7bff}% -\psset{linecolor=rgb_1a1a83}% -\pspolygon[fillstyle=solid](1.43089,0.593568)(1.53831,0.642183) - (1.50763,0.632843)(1.47456,0.620443)(1.38364,0.588709) - (1.40831,0.592049)(1.43089,0.593568) -\psset{fillcolor=cmy_0909ff}% -\psset{linecolor=rgb_3131f5}% -\pspolygon[fillstyle=solid](0.617846,0.615994)(0.523665,0.673044) - (0.495823,0.647676)(0.471308,0.617992)(0.574906,0.58195) - (0.595165,0.600168)(0.617846,0.615994) -\psset{fillcolor=cmy_3636ff}% -\psset{linecolor=rgb_2828c8}% -\pspolygon[fillstyle=solid](0.406584,0.481275)(0.298804,0.454436) - (0.29087,0.406486)(0.285765,0.364096)(0.392802,0.420142) - (0.398255,0.449137)(0.406584,0.481275) -\psset{fillcolor=cmy_2626ff}% -\psset{linecolor=rgb_2b2bd8}% -\pspolygon[fillstyle=solid](0.750078,0.58872)(0.669881,0.638666) - (0.642811,0.628942)(0.617846,0.615994)(0.711075,0.574268) - (0.729819,0.582261)(0.750078,0.58872) -\psset{fillcolor=cmy_5555ff}% -\psset{linecolor=rgb_2121a9}% -\pspolygon[fillstyle=solid](0.893412,0.561425)(0.84333,0.598464) - (0.818499,0.598346)(0.794573,0.596748)(0.860696,0.558086) - (0.876726,0.560071)(0.893412,0.561425) -\psset{fillcolor=cmy_7474ff}% -\psset{linecolor=rgb_1b1b8a}% -\pspolygon[fillstyle=solid](1.17127,0.54409)(1.2519,0.563022) - (1.2303,0.562975)(1.20765,0.562964)(1.14185,0.547647) - (1.15697,0.54595)(1.17127,0.54409) -\psset{fillcolor=cmy_0b0bff}% -\psset{linecolor=rgb_3030f3}% -\pspolygon[fillstyle=solid](0.574906,0.58195)(0.471308,0.617992) - (0.450178,0.585184)(0.432412,0.550565)(0.542015,0.540801) - (0.557169,0.561937)(0.574906,0.58195) -\psset{fillcolor=cmy_4848ff}% -\psset{linecolor=rgb_2424b6}% -\pspolygon[fillstyle=solid](0.860696,0.558086)(0.794573,0.596748) - (0.771713,0.593556)(0.750078,0.58872)(0.830997,0.552142) - (0.845422,0.555444)(0.860696,0.558086) -\psset{fillcolor=cmy_5a5aff}% -\psset{linecolor=rgb_2020a4}% -\pspolygon[fillstyle=solid](0.392802,0.420142)(0.285765,0.364096) - (0.283191,0.328573)(0.282956,0.300896)(0.390156,0.374904) - (0.390121,0.395173)(0.392802,0.420142) -\psset{fillcolor=cmy_7575ff}% -\psset{linecolor=rgb_1b1b89}% -\pspolygon[fillstyle=solid](1.32484,0.558669)(1.43089,0.593568) - (1.40831,0.592049)(1.38364,0.588709)(1.29137,0.562256) - (1.30893,0.560936)(1.32484,0.558669) -\psset{fillcolor=cmy_1c1cff}% -\psset{linecolor=rgb_2d2de2}% -\pspolygon[fillstyle=solid](0.711075,0.574268)(0.617846,0.615994) - (0.595165,0.600168)(0.574906,0.58195)(0.678618,0.554358) - (0.693971,0.564896)(0.711075,0.574268) -\psset{fillcolor=cmy_7171ff}% -\psset{linecolor=rgb_1c1c8d}% -\pspolygon[fillstyle=solid](1.19703,0.539628)(1.29137,0.562256) - (1.27231,0.562867)(1.2519,0.563022)(1.17127,0.54409) - (1.18465,0.542005)(1.19703,0.539628) -\psset{fillcolor=cmy_1818ff}% -\psset{linecolor=rgb_2e2ee6}% -\pspolygon[fillstyle=solid](0.542015,0.540801)(0.432412,0.550565) - (0.417922,0.515489)(0.406584,0.481275)(0.519554,0.497979) - (0.529474,0.519246)(0.542015,0.540801) -\psset{fillcolor=cmy_3d3dff}% -\psset{linecolor=rgb_2626c1}% -\pspolygon[fillstyle=solid](0.830997,0.552142)(0.750078,0.58872) - (0.729819,0.582261)(0.711075,0.574268)(0.805053,0.543639) - (0.817512,0.548194)(0.830997,0.552142) -\psset{fillcolor=cmy_6666ff}% -\psset{linecolor=rgb_1e1e98}% -\pspolygon[fillstyle=solid](1.01993,0.53134)(1.03875,0.556754) - (1.02033,0.558175)(1.00179,0.559495)(1.00092,0.532012) - (1.01046,0.531756)(1.01993,0.53134) -\psset{fillcolor=cmy_6565ff}% -\psset{linecolor=rgb_1e1e99}% -\pspolygon[fillstyle=solid](1.00092,0.532012)(1.00179,0.559495) - (0.983236,0.560652)(0.964748,0.561577)(0.98189,0.532011) - (0.991382,0.5321)(1.00092,0.532012) -\psset{fillcolor=cmy_6868ff}% -\psset{linecolor=rgb_1e1e96}% -\pspolygon[fillstyle=solid](1.03849,0.530055)(1.07488,0.553783) - (1.05696,0.555279)(1.03875,0.556754)(1.01993,0.53134) - (1.02929,0.53077)(1.03849,0.530055) -\psset{fillcolor=cmy_1c1cff}% -\psset{linecolor=rgb_2d2de2}% -\pspolygon[fillstyle=solid](0.678618,0.554358)(0.574906,0.58195) - (0.557169,0.561937)(0.542015,0.540801)(0.653524,0.530867) - (0.66511,0.542917)(0.678618,0.554358) -\psset{fillcolor=cmy_6262ff}% -\psset{linecolor=rgb_1f1f9c}% -\pspolygon[fillstyle=solid](0.98189,0.532011)(0.964748,0.561577) - (0.946423,0.562194)(0.92836,0.562423)(0.963262,0.531266) - (0.972499,0.531735)(0.98189,0.532011) -\psset{fillcolor=cmy_6868ff}% -\psset{linecolor=rgb_1e1e96}% -\pspolygon[fillstyle=solid](1.05617,0.528201)(1.10948,0.550772) - (1.09241,0.552281)(1.07488,0.553783)(1.03849,0.530055) - (1.04746,0.529197)(1.05617,0.528201) -\psset{fillcolor=cmy_5e5eff}% -\psset{linecolor=rgb_2020a0}% -\pspolygon[fillstyle=solid](0.963262,0.531266)(0.92836,0.562423) - (0.910657,0.56219)(0.893412,0.561425)(0.945465,0.52972) - (0.954234,0.530596)(0.963262,0.531266) -\psset{fillcolor=cmy_3232ff}% -\psset{linecolor=rgb_2828cc}% -\pspolygon[fillstyle=solid](0.519554,0.497979)(0.406584,0.481275) - (0.398255,0.449137)(0.392802,0.420142)(0.507551,0.458909) - (0.512249,0.477666)(0.519554,0.497979) -\psset{fillcolor=cmy_7575ff}% -\psset{linecolor=rgb_1b1b89}% -\pspolygon[fillstyle=solid](1.59029,0.647141)(1.71949,0.731475) - (1.68666,0.724552)(1.6493,0.708781)(1.53831,0.642183) - (1.56604,0.647284)(1.59029,0.647141) -\psset{fillcolor=cmy_6868ff}% -\psset{linecolor=rgb_1e1e96}% -\pspolygon[fillstyle=solid](1.07258,0.525802)(1.14185,0.547647) - (1.12599,0.549239)(1.10948,0.550772)(1.05617,0.528201) - (1.06456,0.527069)(1.07258,0.525802) -\psset{fillcolor=cmy_7070ff}% -\psset{linecolor=rgb_1c1c8e}% -\pspolygon[fillstyle=solid](1.46867,0.589042)(1.59029,0.647141) - (1.56604,0.647284)(1.53831,0.642183)(1.43089,0.593568) - (1.45111,0.592716)(1.46867,0.589042) -\psset{fillcolor=cmy_3737ff}% -\psset{linecolor=rgb_2727c7}% -\pspolygon[fillstyle=solid](0.805053,0.543639)(0.711075,0.574268) - (0.693971,0.564896)(0.678618,0.554358)(0.783529,0.532958) - (0.793701,0.538535)(0.805053,0.543639) -\psset{fillcolor=cmy_6c6cff}% -\psset{linecolor=rgb_1d1d92}% -\pspolygon[fillstyle=solid](1.21844,0.533751)(1.32484,0.558669) - (1.30893,0.560936)(1.29137,0.562256)(1.19703,0.539628) - (1.20832,0.536895)(1.21844,0.533751) -\psset{fillcolor=cmy_5959ff}% -\psset{linecolor=rgb_2121a5}% -\pspolygon[fillstyle=solid](0.945465,0.52972)(0.893412,0.561425) - (0.876726,0.560071)(0.860696,0.558086)(0.928911,0.52734) - (0.937007,0.528634)(0.945465,0.52972) -\psset{fillcolor=cmy_7878ff}% -\psset{linecolor=rgb_1a1a86}% -\pspolygon[fillstyle=solid](1.71949,0.731475)(1.86122,0.850819) - (1.81692,0.831665)(1.76674,0.798575)(1.6493,0.708781) - (1.68666,0.724552)(1.71949,0.731475) -\psset{fillcolor=cmy_6868ff}% -\psset{linecolor=rgb_1e1e96}% -\pspolygon[fillstyle=solid](1.08732,0.52286)(1.17127,0.54409) - (1.15697,0.54595)(1.14185,0.547647)(1.07258,0.525802) - (1.08018,0.524399)(1.08732,0.52286) -\psset{fillcolor=cmy_6a6aff}% -\psset{linecolor=rgb_1d1d94}% -\pspolygon[fillstyle=solid](1.35106,0.550511)(1.46867,0.589042) - (1.45111,0.592716)(1.43089,0.593568)(1.32484,0.558669) - (1.33893,0.555247)(1.35106,0.550511) -\psset{fillcolor=cmy_2525ff}% -\psset{linecolor=rgb_2b2bd9}% -\pspolygon[fillstyle=solid](0.653524,0.530867)(0.542015,0.540801) - (0.529474,0.519246)(0.519554,0.497979)(0.636366,0.506205) - (0.643926,0.518523)(0.653524,0.530867) -\psset{fillcolor=cmy_5454ff}% -\psset{linecolor=rgb_2222aa}% -\pspolygon[fillstyle=solid](0.928911,0.52734)(0.860696,0.558086) - (0.845422,0.555444)(0.830997,0.552142)(0.913992,0.524138) - (0.921223,0.525839)(0.928911,0.52734) -\psset{fillcolor=cmy_7373ff}% -\psset{linecolor=rgb_1b1b8b}% -\pspolygon[fillstyle=solid](0.390156,0.374904)(0.282956,0.300896) - (0.284992,0.281718)(0.28937,0.271374)(0.398466,0.350056) - (0.392913,0.35979)(0.390156,0.374904) -\psset{fillcolor=cmy_3636ff}% -\psset{linecolor=rgb_2828c8}% -\pspolygon[fillstyle=solid](0.783529,0.532958)(0.678618,0.554358) - (0.66511,0.542917)(0.653524,0.530867)(0.76699,0.520758) - (0.774605,0.526998)(0.783529,0.532958) -\psset{fillcolor=cmy_7979ff}% -\psset{linecolor=rgb_1a1a85}% -\pspolygon[fillstyle=solid](1.86122,0.850819)(2.0226,1.01759) - (1.96232,0.978383)(1.89443,0.91833)(1.76674,0.798575) - (1.81692,0.831665)(1.86122,0.850819) -\psset{fillcolor=cmy_6666ff}% -\psset{linecolor=rgb_1e1e98}% -\pspolygon[fillstyle=solid](1.10005,0.519369)(1.19703,0.539628) - (1.18465,0.542005)(1.17127,0.54409)(1.08732,0.52286) - (1.09396,0.521183)(1.10005,0.519369) -\psset{fillcolor=cmy_5050ff}% -\psset{linecolor=rgb_2222ae}% -\pspolygon[fillstyle=solid](0.913992,0.524138)(0.830997,0.552142) - (0.817512,0.548194)(0.805053,0.543639)(0.90107,0.520175) - (0.90726,0.522245)(0.913992,0.524138) -\psset{fillcolor=cmy_5151ff}% -\psset{linecolor=rgb_2222ad}% -\pspolygon[fillstyle=solid](0.507551,0.458909)(0.392802,0.420142) - (0.390121,0.395173)(0.390156,0.374904)(0.50598,0.427985) - (0.505457,0.442216)(0.507551,0.458909) -\psset{fillcolor=cmy_7f7fff}% -\psset{linecolor=rgb_19197f}% -\pspolygon[fillstyle=solid](0.28937,0.271374)(0.191172,0.170524) - (0.195007,0.173177)(0.20082,0.188793)(0.306183,0.276904) - (0.296309,0.269877)(0.28937,0.271374) -\psset{fillcolor=cmy_6363ff}% -\psset{linecolor=rgb_1f1f9b}% -\pspolygon[fillstyle=solid](1.23484,0.526055)(1.35106,0.550511) - (1.33893,0.555247)(1.32484,0.558669)(1.21844,0.533751) - (1.2273,0.530147)(1.23484,0.526055) -\psset{fillcolor=cmy_3737ff}% -\psset{linecolor=rgb_2727c7}% -\pspolygon[fillstyle=solid](0.636366,0.506205)(0.519554,0.497979) - (0.512249,0.477666)(0.507551,0.458909)(0.62752,0.482848) - (0.630886,0.49422)(0.636366,0.506205) -\psset{fillcolor=cmy_4d4dff}% -\psset{linecolor=rgb_2323b1}% -\pspolygon[fillstyle=solid](0.90107,0.520175)(0.805053,0.543639) - (0.793701,0.538535)(0.783529,0.532958)(0.890469,0.515566) - (0.895461,0.517942)(0.90107,0.520175) -\psset{fillcolor=cmy_6363ff}% -\psset{linecolor=rgb_1f1f9b}% -\pspolygon[fillstyle=solid](1.11043,0.515333)(1.21844,0.533751) - (1.20832,0.536895)(1.19703,0.539628)(1.10005,0.519369) - (1.10555,0.517419)(1.11043,0.515333) -\psset{fillcolor=cmy_3a3aff}% -\psset{linecolor=rgb_2727c4}% -\pspolygon[fillstyle=solid](0.76699,0.520758)(0.653524,0.530867) - (0.643926,0.518523)(0.636366,0.506205)(0.755889,0.507874) - (0.760736,0.514347)(0.76699,0.520758) -\psset{fillcolor=cmy_3c3cff}% -\psset{linecolor=rgb_2626c2}% -\pspolygon[fillstyle=solid](1.6438,0.0321256)(1.71591,-0.120081) - (1.76775,-0.074723)(1.81976,-0.0100767)(1.73326,0.116772) - (1.68934,0.0674669)(1.6438,0.0321256) -\psset{fillcolor=cmy_4b4bff}% -\psset{linecolor=rgb_2323b3}% -\pspolygon[fillstyle=solid](0.890469,0.515566)(0.783529,0.532958) - (0.774605,0.526998)(0.76699,0.520758)(0.882464,0.510471) - (0.886127,0.513068)(0.890469,0.515566) -\psset{fillcolor=cmy_5858ff}% -\psset{linecolor=rgb_2121a6}% -\pspolygon[fillstyle=solid](1.36891,0.536746)(1.49483,0.572133) - (1.48332,0.582232)(1.46867,0.589042)(1.35106,0.550511) - (1.36109,0.544356)(1.36891,0.536746) -\psset{fillcolor=cmy_5f5fff}% -\psset{linecolor=rgb_1f1f9f}% -\pspolygon[fillstyle=solid](1.1182,0.510778)(1.23484,0.526055) - (1.2273,0.530147)(1.21844,0.533751)(1.11043,0.515333) - (1.11466,0.513118)(1.1182,0.510778) -\psset{fillcolor=cmy_5b5bff}% -\psset{linecolor=rgb_2020a3}% -\pspolygon[fillstyle=solid](1.49483,0.572133)(1.62644,0.6285) - (1.61057,0.641013)(1.59029,0.647141)(1.46867,0.589042) - (1.48332,0.582232)(1.49483,0.572133) -\psset{fillcolor=cmy_5858ff}% -\psset{linecolor=rgb_2121a6}% -\pspolygon[fillstyle=solid](1.24569,0.516371)(1.36891,0.536746) - (1.36109,0.544356)(1.35106,0.550511)(1.23484,0.526055) - (1.24099,0.52146)(1.24569,0.516371) -\psset{fillcolor=cmy_5d5dff}% -\psset{linecolor=rgb_2020a1}% -\pspolygon[fillstyle=solid](1,0.5)(1.01993,0.53134) - (1.01046,0.531756)(1.00092,0.532012)(1,0.5) -\pspolygon[fillstyle=solid](1,0.5)(1.00092,0.532012) - (0.991382,0.5321)(0.98189,0.532011)(1,0.5) -\pspolygon[fillstyle=solid](1,0.5)(1.03849,0.530055) - (1.02929,0.53077)(1.01993,0.53134)(1,0.5) -\pspolygon[fillstyle=solid](1,0.5)(0.98189,0.532011) - (0.972499,0.531735)(0.963262,0.531266)(1,0.5) -\pspolygon[fillstyle=solid](1,0.5)(1.05617,0.528201) - (1.04746,0.529197)(1.03849,0.530055)(1,0.5) -\psset{fillcolor=cmy_5c5cff}% -\psset{linecolor=rgb_2020a2}% -\pspolygon[fillstyle=solid](1,0.5)(0.963262,0.531266) - (0.954234,0.530596)(0.945465,0.52972)(1,0.5) -\psset{fillcolor=cmy_4343ff}% -\psset{linecolor=rgb_2525bb}% -\pspolygon[fillstyle=solid](0.755889,0.507874)(0.636366,0.506205) - (0.630886,0.49422)(0.62752,0.482848)(0.750565,0.495176) - (0.752488,0.50145)(0.755889,0.507874) -\psset{fillcolor=cmy_5e5eff}% -\psset{linecolor=rgb_2020a0}% -\pspolygon[fillstyle=solid](1,0.5)(1.07258,0.525802) - (1.06456,0.527069)(1.05617,0.528201)(1,0.5) -\psset{fillcolor=cmy_5c5cff}% -\psset{linecolor=rgb_2020a2}% -\pspolygon[fillstyle=solid](1,0.5)(0.945465,0.52972) - (0.937007,0.528634)(0.928911,0.52734)(1,0.5) -\psset{fillcolor=cmy_4c4cff}% -\psset{linecolor=rgb_2323b2}% -\pspolygon[fillstyle=solid](0.882464,0.510471)(0.76699,0.520758) - (0.760736,0.514347)(0.755889,0.507874)(0.877275,0.505078) - (0.879506,0.507799)(0.882464,0.510471) -\pspolygon[fillstyle=solid](0.62752,0.482848)(0.507551,0.458909) - (0.505457,0.442216)(0.50598,0.427985)(0.627253,0.462871) - (0.6263,0.472334)(0.62752,0.482848) -\psset{fillcolor=cmy_5f5fff}% -\psset{linecolor=rgb_1f1f9f}% -\pspolygon[fillstyle=solid](1,0.5)(1.08732,0.52286) - (1.08018,0.524399)(1.07258,0.525802)(1,0.5) -\psset{fillcolor=cmy_5a5aff}% -\psset{linecolor=rgb_2020a4}% -\pspolygon[fillstyle=solid](1,0.5)(0.928911,0.52734) - (0.921223,0.525839)(0.913992,0.524138)(1,0.5) -\pspolygon[fillstyle=solid](1.12312,0.505768)(1.24569,0.516371) - (1.24099,0.52146)(1.23484,0.526055)(1.1182,0.510778) - (1.12103,0.508324)(1.12312,0.505768) -\psset{fillcolor=cmy_5e5eff}% -\psset{linecolor=rgb_2020a0}% -\pspolygon[fillstyle=solid](1.62644,0.6285)(1.76797,0.713246) - (1.74686,0.728005)(1.71949,0.731475)(1.59029,0.647141) - (1.61057,0.641013)(1.62644,0.6285) -\psset{fillcolor=cmy_6a6aff}% -\psset{linecolor=rgb_1d1d94}% -\pspolygon[fillstyle=solid](0.50598,0.427985)(0.390156,0.374904) - (0.392913,0.35979)(0.398466,0.350056)(0.515019,0.407859) - (0.509149,0.416487)(0.50598,0.427985) -\psset{fillcolor=cmy_5959ff}% -\psset{linecolor=rgb_2121a5}% -\pspolygon[fillstyle=solid](1,0.5)(0.913992,0.524138) - (0.90726,0.522245)(0.90107,0.520175)(1,0.5) -\psset{fillcolor=cmy_5f5fff}% -\psset{linecolor=rgb_1f1f9f}% -\pspolygon[fillstyle=solid](1,0.5)(1.10005,0.519369) - (1.09396,0.521183)(1.08732,0.52286)(1,0.5) -\psset{fillcolor=cmy_5252ff}% -\psset{linecolor=rgb_2222ac}% -\pspolygon[fillstyle=solid](1.54709,0.00607935)(1.61087,-0.15044) - (1.66387,-0.145468)(1.71591,-0.120081)(1.6438,0.0321256) - (1.59652,0.0115261)(1.54709,0.00607935) -\psset{fillcolor=cmy_5757ff}% -\psset{linecolor=rgb_2121a7}% -\pspolygon[fillstyle=solid](1,0.5)(0.90107,0.520175) - (0.895461,0.517942)(0.890469,0.515566)(1,0.5) -\psset{fillcolor=cmy_5e5eff}% -\psset{linecolor=rgb_2020a0}% -\pspolygon[fillstyle=solid](1,0.5)(1.11043,0.515333) - (1.10555,0.517419)(1.10005,0.519369)(1,0.5) -\psset{fillcolor=cmy_5050ff}% -\psset{linecolor=rgb_2222ae}% -\pspolygon[fillstyle=solid](0.877275,0.505078)(0.755889,0.507874) - (0.752488,0.50145)(0.750565,0.495176)(0.875059,0.499586) - (0.875788,0.502332)(0.877275,0.505078) -\psset{fillcolor=cmy_5656ff}% -\psset{linecolor=rgb_2121a8}% -\pspolygon[fillstyle=solid](1,0.5)(0.890469,0.515566) - (0.886127,0.513068)(0.882464,0.510471)(1,0.5) -\psset{fillcolor=cmy_5d5dff}% -\psset{linecolor=rgb_2020a1}% -\pspolygon[fillstyle=solid](1,0.5)(1.1182,0.510778) - (1.11466,0.513118)(1.11043,0.515333)(1,0.5) -\psset{fillcolor=cmy_2626ff}% -\psset{linecolor=rgb_2b2bd8}% -\pspolygon[fillstyle=solid](1.73326,0.116772)(1.81976,-0.0100767) - (1.87193,0.0727816)(1.92376,0.172159)(1.81542,0.25192) - (1.77544,0.178833)(1.73326,0.116772) -\psset{fillcolor=cmy_4b4bff}% -\psset{linecolor=rgb_2323b3}% -\pspolygon[fillstyle=solid](1.25055,0.504845)(1.37753,0.517385) - (1.37441,0.527719)(1.36891,0.536746)(1.24569,0.516371) - (1.24889,0.510816)(1.25055,0.504845) -\psset{fillcolor=cmy_5656ff}% -\psset{linecolor=rgb_2121a8}% -\pspolygon[fillstyle=solid](1,0.5)(0.882464,0.510471) - (0.879506,0.507799)(0.877275,0.505078)(1,0.5) -\psset{fillcolor=cmy_5b5bff}% -\psset{linecolor=rgb_2020a3}% -\pspolygon[fillstyle=solid](1,0.5)(1.12312,0.505768) - (1.12103,0.508324)(1.1182,0.510778)(1,0.5) -\psset{fillcolor=cmy_5454ff}% -\psset{linecolor=rgb_2222aa}% -\pspolygon[fillstyle=solid](1.12505,0.500414)(1.25055,0.504845) - (1.24889,0.510816)(1.24569,0.516371)(1.12312,0.505768) - (1.12447,0.503125)(1.12505,0.500414) -\psset{fillcolor=cmy_4f4fff}% -\psset{linecolor=rgb_2323af}% -\pspolygon[fillstyle=solid](0.750565,0.495176)(0.62752,0.482848) - (0.6263,0.472334)(0.627253,0.462871)(0.751245,0.483425) - (0.750144,0.489142)(0.750565,0.495176) -\psset{fillcolor=cmy_4141ff}% -\psset{linecolor=rgb_2525bd}% -\pspolygon[fillstyle=solid](1.37753,0.517385)(1.50776,0.542368) - (1.50301,0.558773)(1.49483,0.572133)(1.36891,0.536746) - (1.37441,0.527719)(1.37753,0.517385) -\psset{fillcolor=cmy_5757ff}% -\psset{linecolor=rgb_2121a7}% -\pspolygon[fillstyle=solid](1,0.5)(0.877275,0.505078) - (0.875788,0.502332)(0.875059,0.499586)(1,0.5) -\psset{fillcolor=cmy_5858ff}% -\psset{linecolor=rgb_2121a6}% -\pspolygon[fillstyle=solid](1,0.5)(1.12505,0.500414) - (1.12447,0.503125)(1.12312,0.505768)(1,0.5) -\psset{fillcolor=cmy_7e7eff}% -\psset{linecolor=rgb_191980}% -\pspolygon[fillstyle=solid](0.398466,0.350056)(0.28937,0.271374) - (0.296309,0.269877)(0.306183,0.276904)(0.418616,0.346439) - (0.406961,0.34569)(0.398466,0.350056) -\psset{fillcolor=cmy_5454ff}% -\psset{linecolor=rgb_2222aa}% -\pspolygon[fillstyle=solid](0.875059,0.499586)(0.750565,0.495176) - (0.750144,0.489142)(0.751245,0.483425)(0.875906,0.494186) - (0.875097,0.496864)(0.875059,0.499586) -\psset{fillcolor=cmy_5858ff}% -\psset{linecolor=rgb_2121a6}% -\pspolygon[fillstyle=solid](1,0.5)(0.875059,0.499586) - (0.875097,0.496864)(0.875906,0.494186)(1,0.5) -\psset{fillcolor=cmy_6161ff}% -\psset{linecolor=rgb_1f1f9d}% -\pspolygon[fillstyle=solid](1.76797,0.713246)(1.92548,0.836328) - (1.8979,0.852992)(1.86122,0.850819)(1.71949,0.731475) - (1.74686,0.728005)(1.76797,0.713246) -\psset{fillcolor=cmy_5656ff}% -\psset{linecolor=rgb_2121a8}% -\pspolygon[fillstyle=solid](1,0.5)(1.1239,0.494874) - (1.12486,0.497656)(1.12505,0.500414)(1,0.5) -\psset{fillcolor=cmy_3b3bff}% -\psset{linecolor=rgb_2727c3}% -\pspolygon[fillstyle=solid](1.50776,0.542368)(1.64384,0.584677) - (1.63759,0.609591)(1.62644,0.6285)(1.49483,0.572133) - (1.50301,0.558773)(1.50776,0.542368) -\psset{fillcolor=cmy_6161ff}% -\psset{linecolor=rgb_1f1f9d}% -\pspolygon[fillstyle=solid](0.627253,0.462871)(0.50598,0.427985) - (0.509149,0.416487)(0.515019,0.407859)(0.635784,0.447596) - (0.630406,0.4546)(0.627253,0.462871) -\psset{fillcolor=cmy_5a5aff}% -\psset{linecolor=rgb_2020a4}% -\pspolygon[fillstyle=solid](1,0.5)(0.875906,0.494186) - (0.877488,0.491574)(0.879836,0.489043)(1,0.5) -\psset{fillcolor=cmy_4e4eff}% -\psset{linecolor=rgb_2323b0}% -\pspolygon[fillstyle=solid](1.1239,0.494874)(1.24918,0.491962) - (1.25065,0.498531)(1.25055,0.504845)(1.12505,0.500414) - (1.12486,0.497656)(1.1239,0.494874) -\psset{fillcolor=cmy_5555ff}% -\psset{linecolor=rgb_2121a9}% -\pspolygon[fillstyle=solid](1,0.5)(1.11965,0.48934) - (1.12216,0.492093)(1.1239,0.494874)(1,0.5) -\psset{fillcolor=cmy_5c5cff}% -\psset{linecolor=rgb_2020a2}% -\pspolygon[fillstyle=solid](1,0.5)(0.879836,0.489043) - (0.882942,0.486608)(0.886789,0.484281)(1,0.5) -\psset{fillcolor=cmy_5555ff}% -\psset{linecolor=rgb_2121a9}% -\pspolygon[fillstyle=solid](1,0.5)(1.11239,0.484027) - (1.11639,0.486643)(1.11965,0.48934)(1,0.5) -\psset{fillcolor=cmy_3e3eff}% -\psset{linecolor=rgb_2626c0}% -\pspolygon[fillstyle=solid](1.24918,0.491962)(1.37644,0.493576) - (1.37822,0.505923)(1.37753,0.517385)(1.25055,0.504845) - (1.25065,0.498531)(1.24918,0.491962) -\psset{fillcolor=cmy_5e5eff}% -\psset{linecolor=rgb_2020a0}% -\pspolygon[fillstyle=solid](1,0.5)(0.886789,0.484281) - (0.89136,0.482071)(0.896629,0.479987)(1,0.5) -\psset{fillcolor=cmy_5959ff}% -\psset{linecolor=rgb_2121a5}% -\pspolygon[fillstyle=solid](0.875906,0.494186)(0.751245,0.483425) - (0.753877,0.478082)(0.758047,0.473156)(0.879836,0.489043) - (0.877488,0.491574)(0.875906,0.494186) -\psset{fillcolor=cmy_5656ff}% -\psset{linecolor=rgb_2121a8}% -\pspolygon[fillstyle=solid](1,0.5)(1.10226,0.479146) - (1.10767,0.48152)(1.11239,0.484027)(1,0.5) -\psset{fillcolor=cmy_5a5aff}% -\psset{linecolor=rgb_2020a4}% -\pspolygon[fillstyle=solid](0.751245,0.483425)(0.627253,0.462871) - (0.630406,0.4546)(0.635784,0.447596)(0.758047,0.473156) - (0.753877,0.478082)(0.751245,0.483425) -\psset{fillcolor=cmy_5e5eff}% -\psset{linecolor=rgb_2020a0}% -\pspolygon[fillstyle=solid](1,0.5)(0.896629,0.479987) - (0.902567,0.478033)(0.909139,0.476214)(1,0.5) -\psset{fillcolor=cmy_5757ff}% -\psset{linecolor=rgb_2121a7}% -\pspolygon[fillstyle=solid](1,0.5)(1.08949,0.474885) - (1.09619,0.476928)(1.10226,0.479146)(1,0.5) -\psset{fillcolor=cmy_4a4aff}% -\psset{linecolor=rgb_2424b4}% -\pspolygon[fillstyle=solid](1.11965,0.48934)(1.24148,0.478487) - (1.24612,0.485243)(1.24918,0.491962)(1.1239,0.494874) - (1.12216,0.492093)(1.11965,0.48934) -\psset{fillcolor=cmy_2a2aff}% -\psset{linecolor=rgb_2a2ad4}% -\pspolygon[fillstyle=solid](1.37644,0.493576)(1.50673,0.502132) - (1.50899,0.523306)(1.50776,0.542368)(1.37753,0.517385) - (1.37822,0.505923)(1.37644,0.493576) -\psset{fillcolor=cmy_5959ff}% -\psset{linecolor=rgb_2121a5}% -\pspolygon[fillstyle=solid](1,0.5)(1.07439,0.47139) - (1.08221,0.473035)(1.08949,0.474885)(1,0.5) -\psset{fillcolor=cmy_5e5eff}% -\psset{linecolor=rgb_2020a0}% -\pspolygon[fillstyle=solid](1,0.5)(0.909139,0.476214) - (0.916306,0.474532)(0.924023,0.47299)(1,0.5) -\psset{fillcolor=cmy_7878ff}% -\psset{linecolor=rgb_1a1a86}% -\pspolygon[fillstyle=solid](0.20082,0.188793)(0.105573,0.08167) - (0.105946,0.125602)(0.108805,0.186635)(0.221782,0.25564) - (0.209394,0.216686)(0.20082,0.188793) -\psset{fillcolor=cmy_3939ff}% -\psset{linecolor=rgb_2727c5}% -\pspolygon[fillstyle=solid](1.64384,0.584677)(1.78949,0.650223) - (1.78228,0.687084)(1.76797,0.713246)(1.62644,0.6285) - (1.63759,0.609591)(1.64384,0.584677) -\psset{fillcolor=cmy_5a5aff}% -\psset{linecolor=rgb_2020a4}% -\pspolygon[fillstyle=solid](1,0.5)(1.05734,0.468753) - (1.06608,0.469961)(1.07439,0.47139)(1,0.5) -\psset{fillcolor=cmy_5d5dff}% -\psset{linecolor=rgb_2020a1}% -\pspolygon[fillstyle=solid](1,0.5)(0.924023,0.47299) - (0.932243,0.471589)(0.940912,0.470334)(1,0.5) -\psset{fillcolor=cmy_5b5bff}% -\psset{linecolor=rgb_2020a3}% -\pspolygon[fillstyle=solid](1,0.5)(1.03876,0.46701) - (1.04821,0.467769)(1.05734,0.468753)(1,0.5) -\psset{fillcolor=cmy_5c5cff}% -\psset{linecolor=rgb_2020a2}% -\pspolygon[fillstyle=solid](1,0.5)(0.940912,0.470334) - (0.949975,0.469227)(0.959372,0.468273)(1,0.5) -\psset{fillcolor=cmy_6363ff}% -\psset{linecolor=rgb_1f1f9b}% -\pspolygon[fillstyle=solid](1.92548,0.836328)(2.1079,1.01222) - (2.07205,1.03012)(2.0226,1.01759)(1.86122,0.850819) - (1.8979,0.852992)(1.92548,0.836328) -\psset{fillcolor=cmy_5b5bff}% -\psset{linecolor=rgb_2020a3}% -\pspolygon[fillstyle=solid](1,0.5)(1.01915,0.466147) - (1.02906,0.466471)(1.03876,0.46701)(1,0.5) -\psset{fillcolor=cmy_5e5eff}% -\psset{linecolor=rgb_2020a0}% -\pspolygon[fillstyle=solid](0.879836,0.489043)(0.758047,0.473156) - (0.763749,0.468665)(0.770971,0.464613)(0.886789,0.484281) - (0.882942,0.486608)(0.879836,0.489043) -\psset{fillcolor=cmy_5b5bff}% -\psset{linecolor=rgb_2020a3}% -\pspolygon[fillstyle=solid](1,0.5)(0.959372,0.468273) - (0.969041,0.467478)(0.978917,0.466848)(1,0.5) -\psset{fillcolor=cmy_7878ff}% -\psset{linecolor=rgb_1a1a86}% -\pspolygon[fillstyle=solid](0.515019,0.407859)(0.398466,0.350056) - (0.406961,0.34569)(0.418616,0.346439)(0.535179,0.399064) - (0.523664,0.402099)(0.515019,0.407859) -\psset{fillcolor=cmy_5b5bff}% -\psset{linecolor=rgb_2020a3}% -\pspolygon[fillstyle=solid](1,0.5)(0.999023,0.466116) - (1.00912,0.466032)(1.01915,0.466147)(1,0.5) -\pspolygon[fillstyle=solid](1,0.5)(0.978917,0.466848) - (0.988933,0.466391)(0.999023,0.466116)(1,0.5) -\psset{fillcolor=cmy_3535ff}% -\psset{linecolor=rgb_2828c9}% -\pspolygon[fillstyle=solid](1.24148,0.478487)(1.36555,0.467434) - (1.37221,0.480637)(1.37644,0.493576)(1.24918,0.491962) - (1.24612,0.485243)(1.24148,0.478487) -\psset{fillcolor=cmy_4848ff}% -\psset{linecolor=rgb_2424b6}% -\pspolygon[fillstyle=solid](1.11239,0.484027)(1.22757,0.465351) - (1.23529,0.471816)(1.24148,0.478487)(1.11965,0.48934) - (1.11639,0.486643)(1.11239,0.484027) -\psset{fillcolor=cmy_1b1bff}% -\psset{linecolor=rgb_2d2de3}% -\pspolygon[fillstyle=solid](1.50673,0.502132)(1.64155,0.520244) - (1.64513,0.55453)(1.64384,0.584677)(1.50776,0.542368) - (1.50899,0.523306)(1.50673,0.502132) -\psset{fillcolor=cmy_2d2dff}% -\psset{linecolor=rgb_2929d1}% -\pspolygon[fillstyle=solid](1.56058,0.160334)(1.6438,0.0321256) - (1.68934,0.0674669)(1.73326,0.116772)(1.6364,0.222327) - (1.59977,0.186629)(1.56058,0.160334) -\psset{fillcolor=cmy_6464ff}% -\psset{linecolor=rgb_1e1e9a}% -\pspolygon[fillstyle=solid](0.758047,0.473156)(0.635784,0.447596) - (0.64341,0.441874)(0.653304,0.437383)(0.770971,0.464613) - (0.763749,0.468665)(0.758047,0.473156) -\psset{fillcolor=cmy_6f6fff}% -\psset{linecolor=rgb_1c1c8f}% -\pspolygon[fillstyle=solid](0.635784,0.447596)(0.515019,0.407859) - (0.523664,0.402099)(0.535179,0.399064)(0.653304,0.437383) - (0.64341,0.441874)(0.635784,0.447596) -\psset{fillcolor=cmy_1b1bff}% -\psset{linecolor=rgb_2d2de3}% -\pspolygon[fillstyle=solid](1.36555,0.467434)(1.49191,0.456177) - (1.501,0.479507)(1.50673,0.502132)(1.37644,0.493576) - (1.37221,0.480637)(1.36555,0.467434) -\psset{fillcolor=cmy_1919ff}% -\psset{linecolor=rgb_2d2de5}% -\pspolygon[fillstyle=solid](1.6364,0.222327)(1.73326,0.116772) - (1.77544,0.178833)(1.81542,0.25192)(1.7012,0.317458) - (1.67032,0.266403)(1.6364,0.222327) -\psset{fillcolor=cmy_6161ff}% -\psset{linecolor=rgb_1f1f9d}% -\pspolygon[fillstyle=solid](0.886789,0.484281)(0.770971,0.464613) - (0.779692,0.460981)(0.78988,0.457739)(0.896629,0.479987) - (0.89136,0.482071)(0.886789,0.484281) -\psset{fillcolor=cmy_4949ff}% -\psset{linecolor=rgb_2424b5}% -\pspolygon[fillstyle=solid](1.10226,0.479146)(1.20772,0.4535) - (1.21837,0.45921)(1.22757,0.465351)(1.11239,0.484027) - (1.10767,0.48152)(1.10226,0.479146) -\psset{fillcolor=cmy_1111ff}% -\psset{linecolor=rgb_2f2fed}% -\pspolygon[fillstyle=solid](1.81542,0.25192)(1.92376,0.172159) - (1.97421,0.285475)(2.02166,0.408983)(1.88544,0.421119) - (1.85244,0.33369)(1.81542,0.25192) -\psset{fillcolor=cmy_3030ff}% -\psset{linecolor=rgb_2929ce}% -\pspolygon[fillstyle=solid](1.22757,0.465351)(1.34511,0.441628) - (1.3565,0.454315)(1.36555,0.467434)(1.24148,0.478487) - (1.23529,0.471816)(1.22757,0.465351) -\psset{fillcolor=cmy_1313ff}% -\psset{linecolor=rgb_2f2feb}% -\pspolygon[fillstyle=solid](1.64155,0.520244)(1.78302,0.550882) - (1.78963,0.60413)(1.78949,0.650223)(1.64384,0.584677) - (1.64513,0.55453)(1.64155,0.520244) -\psset{fillcolor=cmy_3939ff}% -\psset{linecolor=rgb_2727c5}% -\pspolygon[fillstyle=solid](1.78949,0.650223)(1.94995,0.746725) - (1.94296,0.80048)(1.92548,0.836328)(1.76797,0.713246) - (1.78228,0.687084)(1.78949,0.650223) -\psset{fillcolor=cmy_0808ff}% -\psset{linecolor=rgb_3131f6}% -\pspolygon[fillstyle=solid](1.49191,0.456177)(1.62063,0.44471) - (1.63329,0.483148)(1.64155,0.520244)(1.50673,0.502132) - (1.501,0.479507)(1.49191,0.456177) -\psset{fillcolor=cmy_4c4cff}% -\psset{linecolor=rgb_2323b2}% -\pspolygon[fillstyle=solid](1.08949,0.474885)(1.18236,0.443736) - (1.1957,0.448317)(1.20772,0.4535)(1.10226,0.479146) - (1.09619,0.476928)(1.08949,0.474885) -\psset{fillcolor=cmy_6464ff}% -\psset{linecolor=rgb_1e1e9a}% -\pspolygon[fillstyle=solid](0.896629,0.479987)(0.78988,0.457739) - (0.801491,0.454842)(0.81447,0.452238)(0.909139,0.476214) - (0.902567,0.478033)(0.896629,0.479987) -\psset{fillcolor=cmy_7c7cff}% -\psset{linecolor=rgb_1a1a82}% -\pspolygon[fillstyle=solid](0.306183,0.276904)(0.20082,0.188793) - (0.209394,0.216686)(0.221782,0.25564)(0.336923,0.313416) - (0.319506,0.291774)(0.306183,0.276904) -\psset{fillcolor=cmy_1515ff}% -\psset{linecolor=rgb_2e2ee9}% -\pspolygon[fillstyle=solid](1.34511,0.441628)(1.46416,0.410519) - (1.47958,0.432922)(1.49191,0.456177)(1.36555,0.467434) - (1.3565,0.454315)(1.34511,0.441628) -\psset{fillcolor=cmy_0808ff}% -\psset{linecolor=rgb_3131f6}% -\pspolygon[fillstyle=solid](1.7012,0.317458)(1.81542,0.25192) - (1.85244,0.33369)(1.88544,0.421119)(1.75179,0.433026) - (1.72856,0.373711)(1.7012,0.317458) -\psset{fillcolor=cmy_5050ff}% -\psset{linecolor=rgb_2222ae}% -\pspolygon[fillstyle=solid](1.07439,0.47139)(1.15207,0.436591) - (1.16779,0.439816)(1.18236,0.443736)(1.08949,0.474885) - (1.08221,0.473035)(1.07439,0.47139) -\psset{fillcolor=cmy_6b6bff}% -\psset{linecolor=rgb_1d1d93}% -\pspolygon[fillstyle=solid](0.770971,0.464613)(0.653304,0.437383) - (0.665477,0.434016)(0.679931,0.431611)(0.78988,0.457739) - (0.779692,0.460981)(0.770971,0.464613) -\psset{fillcolor=cmy_3131ff}% -\psset{linecolor=rgb_2929cd}% -\pspolygon[fillstyle=solid](1.20772,0.4535)(1.31566,0.418861) - (1.33147,0.429708)(1.34511,0.441628)(1.22757,0.465351) - (1.21837,0.45921)(1.20772,0.4535) -\psset{fillcolor=cmy_4545ff}% -\psset{linecolor=rgb_2525b9}% -\pspolygon[fillstyle=solid](1.4744,0.138283)(1.54709,0.00607935) - (1.59652,0.0115261)(1.6438,0.0321256)(1.56058,0.160334) - (1.51884,0.144112)(1.4744,0.138283) -\psset{fillcolor=cmy_0101ff}% -\psset{linecolor=rgb_3232fd}% -\pspolygon[fillstyle=solid](1.62063,0.44471)(1.75179,0.433026) - (1.77018,0.49296)(1.78302,0.550882)(1.64155,0.520244) - (1.63329,0.483148)(1.62063,0.44471) -\psset{fillcolor=cmy_6464ff}% -\psset{linecolor=rgb_1e1e9a}% -\pspolygon[fillstyle=solid](0.909139,0.476214)(0.81447,0.452238) - (0.828748,0.449869)(0.844242,0.44768)(0.924023,0.47299) - (0.916306,0.474532)(0.909139,0.476214) -\psset{fillcolor=cmy_0505ff}% -\psset{linecolor=rgb_3131f9}% -\pspolygon[fillstyle=solid](1.46416,0.410519)(1.58342,0.369794) - (1.6039,0.406438)(1.62063,0.44471)(1.49191,0.456177) - (1.47958,0.432922)(1.46416,0.410519) -\psset{fillcolor=cmy_0202ff}% -\psset{linecolor=rgb_3232fc}% -\pspolygon[fillstyle=solid](1.58342,0.369794)(1.7012,0.317458) - (1.72856,0.373711)(1.75179,0.433026)(1.62063,0.44471) - (1.6039,0.406438)(1.58342,0.369794) -\psset{fillcolor=cmy_0e0eff}% -\psset{linecolor=rgb_3030f0}% -\pspolygon[fillstyle=solid](1.53245,0.306569)(1.6364,0.222327) - (1.67032,0.266403)(1.7012,0.317458)(1.58342,0.369794) - (1.55951,0.336116)(1.53245,0.306569) -\psset{fillcolor=cmy_6969ff}% -\psset{linecolor=rgb_1d1d95}% -\pspolygon[fillstyle=solid](1.43923,0.040527)(1.49747,-0.0982892) - (1.55585,-0.134733)(1.61087,-0.15044)(1.54709,0.00607935) - (1.49491,0.0158499)(1.43923,0.040527) -\psset{fillcolor=cmy_5555ff}% -\psset{linecolor=rgb_2121a9}% -\pspolygon[fillstyle=solid](1.05734,0.468753)(1.11756,0.432255) - (1.13529,0.434074)(1.15207,0.436591)(1.07439,0.47139) - (1.06608,0.469961)(1.05734,0.468753) -\psset{fillcolor=cmy_6464ff}% -\psset{linecolor=rgb_1e1e9a}% -\pspolygon[fillstyle=solid](0.924023,0.47299)(0.844242,0.44768) - (0.860857,0.44562)(0.878483,0.443646)(0.940912,0.470334) - (0.932243,0.471589)(0.924023,0.47299) -\psset{fillcolor=cmy_1818ff}% -\psset{linecolor=rgb_2e2ee6}% -\pspolygon[fillstyle=solid](1.31566,0.418861)(1.42461,0.371119) - (1.44579,0.3897)(1.46416,0.410519)(1.34511,0.441628) - (1.33147,0.429708)(1.31566,0.418861) -\psset{fillcolor=cmy_5959ff}% -\psset{linecolor=rgb_2121a5}% -\pspolygon[fillstyle=solid](1.03876,0.46701)(1.07968,0.43057) - (1.09898,0.431103)(1.11756,0.432255)(1.05734,0.468753) - (1.04821,0.467769)(1.03876,0.46701) -\psset{fillcolor=cmy_1111ff}% -\psset{linecolor=rgb_2f2fed}% -\pspolygon[fillstyle=solid](1.78302,0.550882)(1.93401,0.597589) - (1.94669,0.677812)(1.94995,0.746725)(1.78949,0.650223) - (1.78963,0.60413)(1.78302,0.550882) -\psset{fillcolor=cmy_7777ff}% -\psset{linecolor=rgb_1b1b87}% -\pspolygon[fillstyle=solid](0.653304,0.437383)(0.535179,0.399064) - (0.549666,0.398476)(0.567233,0.399933)(0.679931,0.431611) - (0.665477,0.434016)(0.653304,0.437383) -\psset{fillcolor=cmy_0101ff}% -\psset{linecolor=rgb_3232fd}% -\pspolygon[fillstyle=solid](1.75179,0.433026)(1.88544,0.421119) - (1.91311,0.510505)(1.93401,0.597589)(1.78302,0.550882) - (1.77018,0.49296)(1.75179,0.433026) -\psset{fillcolor=cmy_7f7fff}% -\psset{linecolor=rgb_19197f}% -\pspolygon[fillstyle=solid](0.418616,0.346439)(0.306183,0.276904) - (0.319506,0.291774)(0.336923,0.313416)(0.452538,0.361054) - (0.433703,0.351806)(0.418616,0.346439) -\psset{fillcolor=cmy_3737ff}% -\psset{linecolor=rgb_2727c7}% -\pspolygon[fillstyle=solid](1.18236,0.443736)(1.27784,0.401367) - (1.29775,0.409345)(1.31566,0.418861)(1.20772,0.4535) - (1.1957,0.448317)(1.18236,0.443736) -\psset{fillcolor=cmy_0c0cff}% -\psset{linecolor=rgb_3030f2}% -\pspolygon[fillstyle=solid](1.42461,0.371119)(1.53245,0.306569) - (1.55951,0.336116)(1.58342,0.369794)(1.46416,0.410519) - (1.44579,0.3897)(1.42461,0.371119) -\psset{fillcolor=cmy_2020ff}% -\psset{linecolor=rgb_2c2cde}% -\pspolygon[fillstyle=solid](1.46963,0.263451)(1.56058,0.160334) - (1.59977,0.186629)(1.6364,0.222327)(1.53245,0.306569) - (1.50244,0.282108)(1.46963,0.263451) -\psset{fillcolor=cmy_6363ff}% -\psset{linecolor=rgb_1f1f9b}% -\pspolygon[fillstyle=solid](0.940912,0.470334)(0.878483,0.443646) - (0.896998,0.44173)(0.916271,0.43986)(0.959372,0.468273) - (0.949975,0.469227)(0.940912,0.470334) -\psset{fillcolor=cmy_5d5dff}% -\psset{linecolor=rgb_2020a1}% -\pspolygon[fillstyle=solid](1.01915,0.466147)(1.03945,0.431091) - (1.05979,0.43059)(1.07968,0.43057)(1.03876,0.46701) - (1.02906,0.466471)(1.01915,0.466147) -\psset{fillcolor=cmy_7e7eff}% -\psset{linecolor=rgb_191980}% -\pspolygon[fillstyle=solid](0.535179,0.399064)(0.418616,0.346439) - (0.433703,0.351806)(0.452538,0.361054)(0.567233,0.399933) - (0.549666,0.398476)(0.535179,0.399064) -\psset{fillcolor=cmy_3939ff}% -\psset{linecolor=rgb_2727c5}% -\pspolygon[fillstyle=solid](1.94995,0.746725)(2.13284,0.884999) - (2.12834,0.963057)(2.1079,1.01222)(1.92548,0.836328) - (1.94296,0.80048)(1.94995,0.746725) -\psset{fillcolor=cmy_6262ff}% -\psset{linecolor=rgb_1f1f9c}% -\pspolygon[fillstyle=solid](0.959372,0.468273)(0.916271,0.43986) - (0.936157,0.438041)(0.956509,0.436296)(0.978917,0.466848) - (0.969041,0.467478)(0.959372,0.468273) -\psset{fillcolor=cmy_5f5fff}% -\psset{linecolor=rgb_1f1f9f}% -\pspolygon[fillstyle=solid](0.999023,0.466116)(0.997986,0.433208) - (1.0188,0.431991)(1.03945,0.431091)(1.01915,0.466147) - (1.00912,0.466032)(0.999023,0.466116) -\psset{fillcolor=cmy_6f6fff}% -\psset{linecolor=rgb_1c1c8f}% -\pspolygon[fillstyle=solid](0.78988,0.457739)(0.679931,0.431611) - (0.696648,0.429965)(0.71559,0.428845)(0.81447,0.452238) - (0.801491,0.454842)(0.78988,0.457739) -\psset{fillcolor=cmy_6161ff}% -\psset{linecolor=rgb_1f1f9d}% -\pspolygon[fillstyle=solid](0.978917,0.466848)(0.956509,0.436296) - (0.977171,0.434667)(0.997986,0.433208)(0.999023,0.466116) - (0.988933,0.466391)(0.978917,0.466848) -\psset{fillcolor=cmy_0303ff}% -\psset{linecolor=rgb_3232fb}% -\pspolygon[fillstyle=solid](1.88544,0.421119)(2.02166,0.408983) - (2.06392,0.537585)(2.09838,0.664828)(1.93401,0.597589) - (1.91311,0.510505)(1.88544,0.421119) -\psset{fillcolor=cmy_4141ff}% -\psset{linecolor=rgb_2525bd}% -\pspolygon[fillstyle=solid](1.15207,0.436591)(1.23246,0.39052) - (1.25605,0.395068)(1.27784,0.401367)(1.18236,0.443736) - (1.16779,0.439816)(1.15207,0.436591) -\psset{fillcolor=cmy_2323ff}% -\psset{linecolor=rgb_2b2bdb}% -\pspolygon[fillstyle=solid](1.27784,0.401367)(1.37438,0.342743) - (1.40077,0.355325)(1.42461,0.371119)(1.31566,0.418861) - (1.29775,0.409345)(1.27784,0.401367) -\psset{fillcolor=cmy_1b1bff}% -\psset{linecolor=rgb_2d2de3}% -\pspolygon[fillstyle=solid](1.37438,0.342743)(1.46963,0.263451) - (1.50244,0.282108)(1.53245,0.306569)(1.42461,0.371119) - (1.40077,0.355325)(1.37438,0.342743) -\psset{fillcolor=cmy_7171ff}% -\psset{linecolor=rgb_1c1c8d}% -\pspolygon[fillstyle=solid](0.81447,0.452238)(0.71559,0.428845) - (0.736691,0.427999)(0.759855,0.427181)(0.844242,0.44768) - (0.828748,0.449869)(0.81447,0.452238) -\psset{fillcolor=cmy_3939ff}% -\psset{linecolor=rgb_2727c5}% -\pspolygon[fillstyle=solid](1.39584,0.245193)(1.4744,0.138283) - (1.51884,0.144112)(1.56058,0.160334)(1.46963,0.263451) - (1.43409,0.251074)(1.39584,0.245193) -\psset{fillcolor=cmy_0f0fff}% -\psset{linecolor=rgb_2f2fef}% -\pspolygon[fillstyle=solid](1.93401,0.597589)(2.09838,0.664828) - (2.12222,0.783232)(2.13284,0.884999)(1.94995,0.746725) - (1.94669,0.677812)(1.93401,0.597589) -\psset{fillcolor=cmy_4e4eff}% -\psset{linecolor=rgb_2323b0}% -\pspolygon[fillstyle=solid](1.11756,0.432255)(1.18041,0.386614) - (1.20721,0.387725)(1.23246,0.39052)(1.15207,0.436591) - (1.13529,0.434074)(1.11756,0.432255) -\psset{fillcolor=cmy_7b7bff}% -\psset{linecolor=rgb_1a1a83}% -\pspolygon[fillstyle=solid](0.679931,0.431611)(0.567233,0.399933) - (0.587968,0.402922)(0.611934,0.40685)(0.71559,0.428845) - (0.696648,0.429965)(0.679931,0.431611) -\psset{fillcolor=cmy_3434ff}% -\psset{linecolor=rgb_2828ca}% -\pspolygon[fillstyle=solid](1.23246,0.39052)(1.31435,0.328195) - (1.34554,0.333655)(1.37438,0.342743)(1.27784,0.401367) - (1.25605,0.395068)(1.23246,0.39052) -\psset{fillcolor=cmy_3131ff}% -\psset{linecolor=rgb_2929cd}% -\pspolygon[fillstyle=solid](1.31435,0.328195)(1.39584,0.245193) - (1.43409,0.251074)(1.46963,0.263451)(1.37438,0.342743) - (1.34554,0.333655)(1.31435,0.328195) -\psset{fillcolor=cmy_5a5aff}% -\psset{linecolor=rgb_2020a4}% -\pspolygon[fillstyle=solid](1.07968,0.43057)(1.1228,0.388846) - (1.15222,0.387052)(1.18041,0.386614)(1.11756,0.432255) - (1.09898,0.431103)(1.07968,0.43057) -\psset{fillcolor=cmy_7272ff}% -\psset{linecolor=rgb_1c1c8c}% -\pspolygon[fillstyle=solid](0.844242,0.44768)(0.759855,0.427181) - (0.784951,0.42616)(0.811811,0.424741)(0.878483,0.443646) - (0.860857,0.44562)(0.844242,0.44768) -\psset{fillcolor=cmy_6060ff}% -\psset{linecolor=rgb_1f1f9e}% -\pspolygon[fillstyle=solid](1.3764,0.157338)(1.43923,0.040527) - (1.49491,0.0158499)(1.54709,0.00607935)(1.4744,0.138283) - (1.42703,0.142821)(1.3764,0.157338) -\psset{fillcolor=cmy_6363ff}% -\psset{linecolor=rgb_1f1f9b}% -\pspolygon[fillstyle=solid](1.03945,0.431091)(1.06103,0.395505) - (1.09234,0.391756)(1.1228,0.388846)(1.07968,0.43057) - (1.05979,0.43059)(1.03945,0.431091) -\psset{fillcolor=cmy_7272ff}% -\psset{linecolor=rgb_1c1c8c}% -\pspolygon[fillstyle=solid](0.878483,0.443646)(0.811811,0.424741) - (0.840235,0.422779)(0.869988,0.42019)(0.916271,0.43986) - (0.896998,0.44173)(0.878483,0.443646) -\psset{fillcolor=cmy_4a4aff}% -\psset{linecolor=rgb_2424b4}% -\pspolygon[fillstyle=solid](1.18041,0.386614)(1.24529,0.327916) - (1.2809,0.32634)(1.31435,0.328195)(1.23246,0.39052) - (1.20721,0.387725)(1.18041,0.386614) -\psset{fillcolor=cmy_7f7fff}% -\psset{linecolor=rgb_19197f}% -\pspolygon[fillstyle=solid](0.567233,0.399933)(0.452538,0.361054) - (0.47545,0.373217)(0.502743,0.387128)(0.611934,0.40685) - (0.587968,0.402922)(0.567233,0.399933) -\psset{fillcolor=cmy_6a6aff}% -\psset{linecolor=rgb_1d1d94}% -\pspolygon[fillstyle=solid](0.997986,0.433208)(0.996875,0.404353) - (1.02913,0.399802)(1.06103,0.395505)(1.03945,0.431091) - (1.0188,0.431991)(0.997986,0.433208) -\psset{fillcolor=cmy_7171ff}% -\psset{linecolor=rgb_1c1c8d}% -\pspolygon[fillstyle=solid](0.916271,0.43986)(0.869988,0.42019) - (0.900811,0.41696)(0.932427,0.413148)(0.956509,0.436296) - (0.936157,0.438041)(0.916271,0.43986) -\psset{fillcolor=cmy_6e6eff}% -\psset{linecolor=rgb_1c1c90}% -\pspolygon[fillstyle=solid](0.956509,0.436296)(0.932427,0.413148) - (0.964546,0.408882)(0.996875,0.404353)(0.997986,0.433208) - (0.977171,0.434667)(0.956509,0.436296) -\psset{fillcolor=cmy_7d7dff}% -\psset{linecolor=rgb_191981}% -\pspolygon[fillstyle=solid](0.71559,0.428845)(0.611934,0.40685) - (0.639145,0.411067)(0.669551,0.414914)(0.759855,0.427181) - (0.736691,0.427999)(0.71559,0.428845) -\psset{fillcolor=cmy_5656ff}% -\psset{linecolor=rgb_2121a8}% -\pspolygon[fillstyle=solid](1.31112,0.252497)(1.3764,0.157338) - (1.42703,0.142821)(1.4744,0.138283)(1.39584,0.245193) - (1.35487,0.24577)(1.31112,0.252497) -\psset{fillcolor=cmy_4e4eff}% -\psset{linecolor=rgb_2323b0}% -\pspolygon[fillstyle=solid](1.24529,0.327916)(1.31112,0.252497) - (1.35487,0.24577)(1.39584,0.245193)(1.31435,0.328195) - (1.2809,0.32634)(1.24529,0.327916) -\psset{fillcolor=cmy_5f5fff}% -\psset{linecolor=rgb_1f1f9f}% -\pspolygon[fillstyle=solid](1.1228,0.388846)(1.16806,0.339925) - (1.20762,0.332598)(1.24529,0.327916)(1.18041,0.386614) - (1.15222,0.387052)(1.1228,0.388846) -\psset{fillcolor=cmy_7c7cff}% -\psset{linecolor=rgb_1a1a82}% -\pspolygon[fillstyle=solid](0.452538,0.361054)(0.336923,0.313416) - (0.359168,0.34034)(0.38701,0.370633)(0.502743,0.387128) - (0.47545,0.373217)(0.452538,0.361054) -\psset{fillcolor=cmy_7d7dff}% -\psset{linecolor=rgb_191981}% -\pspolygon[fillstyle=solid](0.759855,0.427181)(0.669551,0.414914) - (0.703026,0.417762)(0.739356,0.419062)(0.811811,0.424741) - (0.784951,0.42616)(0.759855,0.427181) -\psset{fillcolor=cmy_6e6eff}% -\psset{linecolor=rgb_1c1c90}% -\pspolygon[fillstyle=solid](1.06103,0.395505)(1.08409,0.360109) - (1.1268,0.349318)(1.16806,0.339925)(1.1228,0.388846) - (1.09234,0.391756)(1.06103,0.395505) -\psset{fillcolor=cmy_7474ff}% -\psset{linecolor=rgb_1b1b8a}% -\pspolygon[fillstyle=solid](0.336923,0.313416)(0.221782,0.25564) - (0.239289,0.303779)(0.263419,0.358433)(0.38701,0.370633) - (0.359168,0.34034)(0.336923,0.313416) -\psset{fillcolor=cmy_6767ff}% -\psset{linecolor=rgb_1e1e97}% -\pspolygon[fillstyle=solid](1.16806,0.339925)(1.21527,0.281861) - (1.26458,0.264805)(1.31112,0.252497)(1.24529,0.327916) - (1.20762,0.332598)(1.16806,0.339925) -\psset{fillcolor=cmy_7e7eff}% -\psset{linecolor=rgb_191980}% -\pspolygon[fillstyle=solid](0.611934,0.40685)(0.502743,0.387128) - (0.53466,0.401467)(0.571331,0.414834)(0.669551,0.414914) - (0.639145,0.411067)(0.611934,0.40685) -\psset{fillcolor=cmy_6d6dff}% -\psset{linecolor=rgb_1d1d91}% -\pspolygon[fillstyle=solid](0.221782,0.25564)(0.108805,0.186635) - (0.116083,0.263023)(0.130252,0.351753)(0.263419,0.358433) - (0.239289,0.303779)(0.221782,0.25564) -\psset{fillcolor=cmy_7d7dff}% -\psset{linecolor=rgb_191981}% -\pspolygon[fillstyle=solid](0.811811,0.424741)(0.739356,0.419062) - (0.778241,0.418391)(0.819298,0.415485)(0.869988,0.42019) - (0.840235,0.422779)(0.811811,0.424741) -\psset{fillcolor=cmy_7676ff}% -\psset{linecolor=rgb_1b1b88}% -\pspolygon[fillstyle=solid](0.996875,0.404353)(0.99567,0.382977) - (1.04025,0.371574)(1.08409,0.360109)(1.06103,0.395505) - (1.02913,0.399802)(0.996875,0.404353) -\psset{fillcolor=cmy_7a7aff}% -\psset{linecolor=rgb_1a1a84}% -\pspolygon[fillstyle=solid](1.31393,0.130943)(1.36413,0.0350099) - (1.43413,-0.0414045)(1.49747,-0.0982892)(1.43923,0.040527) - (1.3792,0.0793428)(1.31393,0.130943) -\psset{fillcolor=cmy_7d7dff}% -\psset{linecolor=rgb_191981}% -\pspolygon[fillstyle=solid](0.869988,0.42019)(0.819298,0.415485) - (0.862077,0.410271)(0.906078,0.402876)(0.932427,0.413148) - (0.900811,0.41696)(0.869988,0.42019) -\psset{fillcolor=cmy_7b7bff}% -\psset{linecolor=rgb_1a1a83}% -\pspolygon[fillstyle=solid](0.932427,0.413148)(0.906078,0.402876) - (0.950781,0.393616)(0.99567,0.382977)(0.996875,0.404353) - (0.964546,0.408882)(0.932427,0.413148) -\psset{fillcolor=cmy_7070ff}% -\psset{linecolor=rgb_1c1c8e}% -\pspolygon[fillstyle=solid](1.21527,0.281861)(1.26407,0.212769) - (1.32218,0.181056)(1.3764,0.157338)(1.31112,0.252497) - (1.26458,0.264805)(1.21527,0.281861) -\psset{fillcolor=cmy_7676ff}% -\psset{linecolor=rgb_1b1b88}% -\pspolygon[fillstyle=solid](1.26407,0.212769)(1.31393,0.130943) - (1.3792,0.0793428)(1.43923,0.040527)(1.3764,0.157338) - (1.32218,0.181056)(1.26407,0.212769) -\psset{fillcolor=cmy_7777ff}% -\psset{linecolor=rgb_1b1b87}% -\pspolygon[fillstyle=solid](1.08409,0.360109)(1.10888,0.325677) - (1.1633,0.302583)(1.21527,0.281861)(1.16806,0.339925) - (1.1268,0.349318)(1.08409,0.360109) -\psset{fillcolor=cmy_7d7dff}% -\psset{linecolor=rgb_191981}% -\pspolygon[fillstyle=solid](0.669551,0.414914)(0.571331,0.414834) - (0.612735,0.425841)(0.658661,0.43323)(0.739356,0.419062) - (0.703026,0.417762)(0.669551,0.414914) -\psset{fillcolor=cmy_7676ff}% -\psset{linecolor=rgb_1b1b88}% -\pspolygon[fillstyle=solid](0.502743,0.387128)(0.38701,0.370633) - (0.42117,0.401992)(0.462221,0.431813)(0.571331,0.414834) - (0.53466,0.401467)(0.502743,0.387128) -\psset{fillcolor=cmy_7e7eff}% -\psset{linecolor=rgb_191980}% -\pspolygon[fillstyle=solid](0.99567,0.382977)(0.994341,0.37309) - (1.05238,0.34969)(1.10888,0.325677)(1.08409,0.360109) - (1.04025,0.371574)(0.99567,0.382977) -\psset{fillcolor=cmy_7d7dff}% -\psset{linecolor=rgb_191981}% -\pspolygon[fillstyle=solid](0.739356,0.419062)(0.658661,0.43323) - (0.708693,0.435991)(0.762219,0.433471)(0.819298,0.415485) - (0.778241,0.418391)(0.739356,0.419062) -\pspolygon[fillstyle=solid](1.10888,0.325677)(1.13571,0.293061) - (1.20191,0.250812)(1.26407,0.212769)(1.21527,0.281861) - (1.1633,0.302583)(1.10888,0.325677) -\psset{fillcolor=cmy_7f7fff}% -\psset{linecolor=rgb_19197f}% -\pspolygon[fillstyle=solid](0.906078,0.402876)(0.87651,0.412187) - (0.935442,0.394373)(0.994341,0.37309)(0.99567,0.382977) - (0.950781,0.393616)(0.906078,0.402876) -\psset{fillcolor=cmy_7e7eff}% -\psset{linecolor=rgb_191980}% -\pspolygon[fillstyle=solid](0.819298,0.415485)(0.762219,0.433471) - (0.818456,0.425453)(0.87651,0.412187)(0.906078,0.402876) - (0.862077,0.410271)(0.819298,0.415485) -\psset{fillcolor=cmy_6a6aff}% -\psset{linecolor=rgb_1d1d94}% -\pspolygon[fillstyle=solid](0.38701,0.370633)(0.263419,0.358433) - (0.295756,0.416063)(0.337777,0.472291)(0.462221,0.431813) - (0.42117,0.401992)(0.38701,0.370633) -\psset{fillcolor=cmy_7272ff}% -\psset{linecolor=rgb_1c1c8c}% -\pspolygon[fillstyle=solid](0.571331,0.414834)(0.462221,0.431813) - (0.51047,0.457371)(0.565855,0.476055)(0.658661,0.43323) - (0.612735,0.425841)(0.571331,0.414834) -\psset{fillcolor=cmy_7f7fff}% -\psset{linecolor=rgb_19197f}% -\pspolygon[fillstyle=solid](1.13571,0.293061)(1.16504,0.263219) - (1.2427,0.193231)(1.31393,0.130943)(1.26407,0.212769) - (1.20191,0.250812)(1.13571,0.293061) -\pspolygon[fillstyle=solid](0.994341,0.37309)(0.99284,0.379708) - (1.0658,0.336973)(1.13571,0.293061)(1.10888,0.325677) - (1.05238,0.34969)(0.994341,0.37309) -\pspolygon[fillstyle=solid](1.16504,0.263219)(1.19745,0.237271) - (1.28572,0.129037)(1.36413,0.0350099)(1.31393,0.130943) - (1.2427,0.193231)(1.16504,0.263219) -\psset{fillcolor=cmy_7272ff}% -\psset{linecolor=rgb_1c1c8c}% -\pspolygon[fillstyle=solid](0.658661,0.43323)(0.565855,0.476055) - (0.62787,0.485674)(0.695551,0.484744)(0.762219,0.433471) - (0.708693,0.435991)(0.658661,0.43323) -\psset{fillcolor=cmy_5d5dff}% -\psset{linecolor=rgb_2020a1}% -\pspolygon[fillstyle=solid](0.263419,0.358433)(0.130252,0.351753) - (0.154241,0.448121)(0.191195,0.545437)(0.337777,0.472291) - (0.295756,0.416063)(0.263419,0.358433) -\psset{fillcolor=cmy_7b7bff}% -\psset{linecolor=rgb_1a1a83}% -\pspolygon[fillstyle=solid](0.87651,0.412187)(0.842212,0.450088) - (0.917852,0.418332)(0.99284,0.379708)(0.994341,0.37309) - (0.935442,0.394373)(0.87651,0.412187) -\psset{fillcolor=cmy_7676ff}% -\psset{linecolor=rgb_1b1b88}% -\pspolygon[fillstyle=solid](0.762219,0.433471)(0.695551,0.484744) - (0.767541,0.472718)(0.842212,0.450088)(0.87651,0.412187) - (0.818456,0.425453)(0.762219,0.433471) -\psset{fillcolor=cmy_6262ff}% -\psset{linecolor=rgb_1f1f9c}% -\pspolygon[fillstyle=solid](0.462221,0.431813)(0.337777,0.472291) - (0.390602,0.522128)(0.454699,0.560441)(0.565855,0.476055) - (0.51047,0.457371)(0.462221,0.431813) -\psset{fillcolor=cmy_7c7cff}% -\psset{linecolor=rgb_1a1a82}% -\pspolygon[fillstyle=solid](0.99284,0.379708)(0.991097,0.4096) - (1.08095,0.336955)(1.16504,0.263219)(1.13571,0.293061) - (1.0658,0.336973)(0.99284,0.379708) -\psset{fillcolor=cmy_6262ff}% -\psset{linecolor=rgb_1f1f9c}% -\pspolygon[fillstyle=solid](0.565855,0.476055)(0.454699,0.560441) - (0.52964,0.582636)(0.613978,0.585437)(0.695551,0.484744) - (0.62787,0.485674)(0.565855,0.476055) -\psset{fillcolor=cmy_7474ff}% -\psset{linecolor=rgb_1b1b8a}% -\pspolygon[fillstyle=solid](0.842212,0.450088)(0.800716,0.529938) - (0.896933,0.475736)(0.991097,0.4096)(0.99284,0.379708) - (0.917852,0.418332)(0.842212,0.450088) -\psset{fillcolor=cmy_6a6aff}% -\psset{linecolor=rgb_1d1d94}% -\pspolygon[fillstyle=solid](0.695551,0.484744)(0.613978,0.585437) - (0.705338,0.567542)(0.800716,0.529938)(0.842212,0.450088) - (0.767541,0.472718)(0.695551,0.484744) -\psset{fillcolor=cmy_7878ff}% -\psset{linecolor=rgb_1a1a86}% -\pspolygon[fillstyle=solid](0.991097,0.4096)(0.989001,0.47266) - (1.09845,0.354344)(1.19745,0.237271)(1.16504,0.263219) - (1.08095,0.336955)(0.991097,0.4096) -\psset{fillcolor=cmy_4f4fff}% -\psset{linecolor=rgb_2323af}% -\pspolygon[fillstyle=solid](0.337777,0.472291)(0.191195,0.545437) - (0.244003,0.635089)(0.314618,0.707241)(0.454699,0.560441) - (0.390602,0.522128)(0.337777,0.472291) -\psset{fillcolor=cmy_6b6bff}% -\psset{linecolor=rgb_1d1d93}% -\pspolygon[fillstyle=solid](0.800716,0.529938)(0.747762,0.67368) - (0.870898,0.582631)(0.989001,0.47266)(0.991097,0.4096) - (0.896933,0.475736)(0.800716,0.529938) -\psset{fillcolor=cmy_4f4fff}% -\psset{linecolor=rgb_2323af}% -\pspolygon[fillstyle=solid](0.454699,0.560441)(0.314618,0.707241) - (0.403301,0.752297)(0.50809,0.762937)(0.613978,0.585437) - (0.52964,0.582636)(0.454699,0.560441) -\psset{fillcolor=cmy_5c5cff}% -\psset{linecolor=rgb_2020a2}% -\pspolygon[fillstyle=solid](0.613978,0.585437)(0.50809,0.762937) - (0.624809,0.736041)(0.747762,0.67368)(0.800716,0.529938) - (0.705338,0.567542)(0.613978,0.585437) -\end{pspicture}% diff --git a/graphics/epix/doc/plotting2.xp b/graphics/epix/doc/plotting2.xp deleted file mode 100644 index 2a0ed661e5..0000000000 --- a/graphics/epix/doc/plotting2.xp +++ /dev/null @@ -1,29 +0,0 @@ -/* -*-ePiX-*- */ -#include "epix.h" -using namespace ePiX; - -P f(double r, double th) -{ - return P(r*Cos(th), r*Sin(th), pow(r, 3)*Cos(3*th)); -} - -int main() -{ - picture(P(-1,-1),P(1,1), "2x1in"); - - begin(); - - domain R(P(0,0), P(1, 2*M_PI), mesh(8,40), mesh(8,80)); - - camera.at(3,1,2); // set the viewpoint - - arrow(P(0,0,0), P(1.25,0,0)); - arrow(P(0,0,0), P(0,1.25,0)); - - plain(Blue(1.2)); - fill(Yellow()); // shade - surface(f, R); - - pst_format(); - end(); -} diff --git a/graphics/epix/doc/plotting3.eepic b/graphics/epix/doc/plotting3.eepic deleted file mode 100644 index d61bee76c4..0000000000 --- a/graphics/epix/doc/plotting3.eepic +++ /dev/null @@ -1,146 +0,0 @@ -%% Generated from plotting3.xp on Tue Sep 25 18:08:09 EDT 2007 by -%% ePiX-1.2.0 -%% -%% Cartesian bounding box: [0,18.8496] x [-1,1] -%% Actual size: 5 x 1in -%% Figure offset: left by 0in, down by 0in -%% -%% usepackages epic,eepic,xcolor -%% -\xdefinecolor{rgb_000000}{rgb}{0,0,0}% -\xdefinecolor{rgb_0000ff}{rgb}{0,0,1}% -\xdefinecolor{rgb_00ff00}{rgb}{0,1,0}% -\xdefinecolor{rgb_3f00bf}{rgb}{0.247059,0,0.74902}% -\xdefinecolor{rgb_7f007f}{rgb}{0.498039,0,0.498039}% -\xdefinecolor{rgb_bf003f}{rgb}{0.74902,0,0.247059}% -\setlength{\unitlength}{1in}% -\begin{picture}(5,1)(0,0)% -\path(0,0.5)(2.5,0.5)(5,0.5) -\put(0,0.5){\makebox(0,0){\hbox{\color{rgb_000000}$\rule{0.5pt}{6pt}$}}} -\put(1.25,0.5){\makebox(0,0){\hbox{\color{rgb_000000}$\rule{0.5pt}{6pt}$}}} -\put(2.5,0.5){\makebox(0,0){\hbox{\color{rgb_000000}$\rule{0.5pt}{6pt}$}}} -\put(3.75,0.5){\makebox(0,0){\hbox{\color{rgb_000000}$\rule{0.5pt}{6pt}$}}} -\put(5,0.5){\makebox(0,0){\hbox{\color{rgb_000000}$\rule{0.5pt}{6pt}$}}} -\path(0,0)(0,0.5)(0,1) -\put(0,0){\makebox(0,0){\hbox{\color{rgb_000000}$\rule{6pt}{0.5pt}$}}} -\put(0,1){\makebox(0,0){\hbox{\color{rgb_000000}$\rule{6pt}{0.5pt}$}}} -\allinethickness{0.8pt}% -\color{rgb_00ff00}% -\path(0,0.5)(0.0416667,0.578217)(0.0833333,0.654508) - (0.125,0.726995)(0.166667,0.793893)(0.208333,0.853553) - (0.25,0.904508)(0.291667,0.945503)(0.333333,0.975528) - (0.375,0.993844)(0.416667,1)(0.458333,0.993844)(0.5,0.975528) - (0.541667,0.945503)(0.583333,0.904508)(0.625,0.853553) - (0.666667,0.793893)(0.708333,0.726995)(0.75,0.654508) - (0.791667,0.578217)(0.833333,0.5)(0.875,0.421783) - (0.916667,0.345492)(0.958333,0.273005)(1,0.206107) - (1.04167,0.146447)(1.08333,0.0954915)(1.125,0.0544967) - (1.16667,0.0244717)(1.20833,0.00615583)(1.25,0)(1.29167,0.00615583) - (1.33333,0.0244717)(1.375,0.0544967)(1.41667,0.0954915) - (1.45833,0.146447)(1.5,0.206107)(1.54167,0.273005) - (1.58333,0.345492)(1.625,0.421783)(1.66667,0.5)(1.70833,0.578217) - (1.75,0.654508)(1.79167,0.726995)(1.83333,0.793893)(1.875,0.853553) - (1.91667,0.904508)(1.95833,0.945503)(2,0.975528)(2.04167,0.993844) - (2.08333,1)(2.125,0.993844)(2.16667,0.975528)(2.20833,0.945503) - (2.25,0.904508)(2.29167,0.853553)(2.33333,0.793893)(2.375,0.726995) - (2.41667,0.654508)(2.45833,0.578217)(2.5,0.5)(2.54167,0.421783) - (2.58333,0.345492)(2.625,0.273005)(2.66667,0.206107) - (2.70833,0.146447)(2.75,0.0954915)(2.79167,0.0544967) - (2.83333,0.0244717)(2.875,0.00615583)(2.91667,0) - (2.95833,0.00615583)(3,0.0244717)(3.04167,0.0544967) - (3.08333,0.0954915)(3.125,0.146447)(3.16667,0.206107) - (3.20833,0.273005)(3.25,0.345492)(3.29167,0.421783)(3.33333,0.5) - (3.375,0.578217)(3.41667,0.654508)(3.45833,0.726995)(3.5,0.793893) - (3.54167,0.853553)(3.58333,0.904508)(3.625,0.945503) - (3.66667,0.975528)(3.70833,0.993844)(3.75,1)(3.79167,0.993844) - (3.83333,0.975528)(3.875,0.945503)(3.91667,0.904508) - (3.95833,0.853553)(4,0.793893)(4.04167,0.726995)(4.08333,0.654508) - (4.125,0.578217)(4.16667,0.5)(4.20833,0.421783)(4.25,0.345492) - (4.29167,0.273005)(4.33333,0.206107)(4.375,0.146447) - (4.41667,0.0954915)(4.45833,0.0544967)(4.5,0.0244717) - (4.54167,0.00615583)(4.58333,0)(4.625,0.00615583) - (4.66667,0.0244717)(4.70833,0.0544967)(4.75,0.0954915) - (4.79167,0.146447)(4.83333,0.206107)(4.875,0.273005) - (4.91667,0.345492)(4.95833,0.421783)(5,0.5) -\color{rgb_bf003f}% -\path(0,0.5)(0.0416667,0.578217)(0.0833333,0.654508) - (0.125,0.726995)(0.166667,0.793893)(0.208333,0.853553) - (0.25,0.904508)(0.291667,0.945503)(0.333333,0.975528) - (0.375,0.993844)(0.416667,1)(0.458333,0.993844)(0.5,0.975528) - (0.541667,0.945503)(0.583333,0.904508)(0.625,0.853553) - (0.666667,0.793893)(0.708333,0.726995)(0.75,0.654508) - (0.791667,0.578217)(0.833333,0.5)(0.875,0.421783) - (0.916667,0.345492)(0.958333,0.273005)(1,0.206107) - (1.04167,0.146447)(1.08333,0.0954915)(1.125,0.0544967) - (1.16667,0.0244717)(1.20833,0.00615583)(1.25,0)(1.29167,0.00615583) - (1.33333,0.0244717)(1.375,0.0544967)(1.41667,0.0954915) - (1.45833,0.146447)(1.5,0.206107)(1.54167,0.273005) - (1.58333,0.345492)(1.625,0.421783)(1.66667,0.5)(1.70833,0.578217) - (1.75,0.654508)(1.79167,0.726995)(1.83333,0.793893)(1.875,0.853553) - (1.91667,0.904508)(1.95833,0.945503)(2,0.975528)(2.04167,0.993844) - (2.08333,1)(2.125,0.993844)(2.16667,0.975528)(2.20833,0.945503) - (2.25,0.904508)(2.29167,0.853553)(2.33333,0.793893)(2.375,0.726995) - (2.41667,0.654508)(2.45833,0.578217)(2.5,0.5)(2.54167,0.421783) - (2.58333,0.345491)(2.625,0.273005)(2.66667,0.206107) - (2.70833,0.146446)(2.75,0.0954902)(2.79167,0.0544945) - (2.83333,0.0244679)(2.875,0.00614921)(2.91667,0) - (2.95833,0.00613686)(3,0.02444)(3.04167,0.054444) - (3.08333,0.0954044)(3.125,0.146304)(3.16667,0.205875) - (3.20833,0.272628)(3.25,0.344886)(3.29167,0.420815) - (3.33333,0.498463)(3.375,0.57579)(3.41667,0.650696) - (3.45833,0.721039)(3.5,0.78464)(3.54167,0.839253)(3.58333,0.882522) - (3.625,0.911868)(3.66667,0.924325)(3.70833,0.916271)(3.75,0.883026) - (3.79167,0.818266)(3.83333,0.713166)(3.875,0.555181) - (3.91667,0.326308)(3.95833,0.000641819)(3.95839,0) -\color{rgb_7f007f}% -\path(0,0.5)(0.0416667,0.578217)(0.0833333,0.654508) - (0.125,0.726995)(0.166667,0.793893)(0.208333,0.853553) - (0.25,0.904508)(0.291667,0.945503)(0.333333,0.975528) - (0.375,0.993844)(0.416667,1)(0.458333,0.993844)(0.5,0.975528) - (0.541667,0.945503)(0.583333,0.904508)(0.625,0.853553) - (0.666667,0.793893)(0.708333,0.726995)(0.75,0.654508) - (0.791667,0.578217)(0.833333,0.5)(0.875,0.421783) - (0.916667,0.345492)(0.958333,0.273005)(1,0.206107) - (1.04167,0.146447)(1.08333,0.0954915)(1.125,0.0544967) - (1.16667,0.0244717)(1.20833,0.00615583)(1.25,0)(1.29167,0.00615583) - (1.33333,0.0244717)(1.375,0.0544967)(1.41667,0.0954915) - (1.45833,0.146447)(1.5,0.206107)(1.54167,0.273005) - (1.58333,0.345492)(1.625,0.421783)(1.66667,0.5)(1.70833,0.578218) - (1.75,0.654509)(1.79167,0.726996)(1.83333,0.793895)(1.875,0.853557) - (1.91667,0.904515)(1.95833,0.945515)(2,0.975549)(2.04167,0.993881) - (2.08291,1) -\path(2.08376,1)(2.125,0.993951)(2.16667,0.975708) - (2.20833,0.945803)(2.25,0.905003)(2.29167,0.854363) - (2.33333,0.795206)(2.375,0.729106)(2.41667,0.657874) - (2.45833,0.583539)(2.5,0.50835)(2.54167,0.434785)(2.58333,0.365591) - (2.625,0.303858)(2.66667,0.253144)(2.70833,0.21768)(2.75,0.202677) - (2.79167,0.214776)(2.83333,0.262697)(2.875,0.358157) - (2.91667,0.51715)(2.95833,0.761732)(2.98586,1) -\color{rgb_3f00bf}% -\path(0,0.5)(0.0416667,0.578217)(0.0833333,0.654508) - (0.125,0.726995)(0.166667,0.793893)(0.208333,0.853553) - (0.25,0.904508)(0.291667,0.945503)(0.333333,0.975528) - (0.375,0.993844)(0.416667,1)(0.458333,0.993844)(0.5,0.975528) - (0.541667,0.945503)(0.583333,0.904508)(0.625,0.853553) - (0.666667,0.793893)(0.708333,0.726995)(0.75,0.654508) - (0.791667,0.578217)(0.833333,0.5)(0.875,0.421782)(0.916667,0.34549) - (0.958333,0.273001)(1,0.206099)(1.04167,0.14643)(1.08333,0.0954587) - (1.125,0.0544347)(1.16667,0.0243571)(1.20833,0.00594841) - (1.24757,0) -\path(1.2526,0)(1.29167,0.00551665)(1.33333,0.02338) - (1.375,0.0526628)(1.41667,0.0924591)(1.45833,0.141506) - (1.5,0.198171)(1.54167,0.260422)(1.58333,0.325792)(1.625,0.391305) - (1.66667,0.453377)(1.70833,0.507659)(1.75,0.548813) - (1.79167,0.570203)(1.83333,0.563454)(1.875,0.517876) - (1.91667,0.419672)(1.95833,0.250906)(1.99812,0) -\color{rgb_0000ff}% -\path(0,0.5)(0.0416667,0.578217)(0.0833333,0.654509) - (0.125,0.726996)(0.166667,0.793896)(0.208333,0.853572) - (0.25,0.904573)(0.291667,0.945693)(0.333333,0.976009) - (0.375,0.994933)(0.403805,1) -\path(0.439996,1)(0.458333,0.998222) - (0.5,0.983515)(0.541667,0.959373)(0.583333,0.927598) - (0.625,0.890616)(0.666667,0.851521)(0.708333,0.814127) - (0.75,0.783009)(0.791667,0.763557)(0.833333,0.762022) - (0.875,0.785563)(0.916667,0.842295)(0.958333,0.941339)(0.974464,1) -\end{picture}% diff --git a/graphics/epix/doc/plotting3.xp b/graphics/epix/doc/plotting3.xp deleted file mode 100644 index e5d1088978..0000000000 --- a/graphics/epix/doc/plotting3.xp +++ /dev/null @@ -1,43 +0,0 @@ -/* -*-ePiX-*- */ -#include "epix.h" -using namespace ePiX; - -P sin_n(double x, double n) // Taylor polynomial of sin x -{ - const int N((int) floor(n)); // convert y to an index bound - const double sqx(-pow(x, 2)); // store -x^2 for efficiency - double val(x), summand(x); // places to store results of evaluation - - // step through odd numbers from 1 to 2N+1 - for (int i=1; i <= 2*N+1; i += 2) - { - summand *= (sqx/((i+1)*(i+2))); // (-1)^i x^{2i+1}/(2i+1)! - val += summand; - } - - return P(x, val); -} - -int main() -{ - picture(P(0,-1),P(6*M_PI, 1), "5x1in"); - - begin(); - - set_crop(); - h_axis(4); - v_axis(1); - - bold(); - green(); - plot(Sin, 0, xmax(), 120); - - domain R(P(0,1), P(6*M_PI, 41), mesh(60, 40), mesh(120, 40)); - for (int i=3; 0 <= i; --i) - { - rgb(0.25*i, 0, 1-0.25*i); - plot(sin_n, R.slice2(5*i+1)); - } - - end(); -} diff --git a/graphics/epix/doc/scaling.eepic b/graphics/epix/doc/scaling.eepic deleted file mode 100644 index 0b6231c4ee..0000000000 --- a/graphics/epix/doc/scaling.eepic +++ /dev/null @@ -1,56 +0,0 @@ -%% Generated from scaling.xp on Sat Sep 1 14:17:35 EDT 2007 by -%% ePiX-1.1.15 -%% -%% Cartesian bounding box: [0,4] x [0,1] -%% Actual size: 4 x 0.75in -%% Figure offset: left by 0in, down by 0in -%% -%% usepackages epic,eepic,xcolor -%% -\xdefinecolor{rgb_000000}{rgb}{0,0,0}% -\setlength{\unitlength}{1in}% -\begin{picture}(4,0.75)(0,0)% -\path(1.75,0.375)(2.75,0.375) -\path(2.63584,0.359433)(2.66438,0.359433) -\path(2.63584,0.364622)(2.69292,0.364622) -\path(2.63584,0.369811)(2.72146,0.369811) -\path(2.63584,0.375)(2.75,0.375) -\path(2.63584,0.380189)(2.72146,0.380189) -\path(2.63584,0.385378)(2.69292,0.385378) -\path(2.63584,0.390567)(2.66438,0.390567) -\path(2.74456,0.374012)(2.74456,0.375988) -\path(2.73913,0.373023)(2.73913,0.376977) -\path(2.73369,0.372035)(2.73369,0.377965) -\path(2.72826,0.371047)(2.72826,0.378953) -\path(2.72282,0.370058)(2.72282,0.379942) -\path(2.71738,0.36907)(2.71738,0.38093) -\path(2.71195,0.368081)(2.71195,0.381919) -\path(2.70651,0.367093)(2.70651,0.382907) -\path(2.70108,0.366105)(2.70108,0.383895) -\path(2.69564,0.365116)(2.69564,0.384884) -\path(2.6902,0.364128)(2.6902,0.385872) -\path(2.68477,0.36314)(2.68477,0.38686) -\path(2.67933,0.362151)(2.67933,0.387849) -\path(2.6739,0.361163)(2.6739,0.388837) -\path(2.66846,0.360175)(2.66846,0.389825) -\path(2.66302,0.359186)(2.66302,0.390814) -\path(2.65759,0.358198)(2.65759,0.391802) -\path(2.65215,0.35721)(2.65215,0.39279) -\path(2.64672,0.356221)(2.64672,0.393779) -\path(2.64128,0.355233)(2.64128,0.394767) -\path(2.63584,0.354244)(2.63584,0.395756) -\path(2.63584,0.375)(2.63584,0.354244)(2.75,0.375) - (2.63584,0.395756)(2.63584,0.375) -\put(0.027674,0.121424){\makebox(0,0)[bl]{\hbox{\color{rgb_000000}\scriptsize \hbox{\color{rgb_000000}\scriptsize $(x_\mathrm{min},y_\mathrm{min})$}}}} -\put(0,0.09375){\makebox(0,0){\hbox{\color{rgb_000000}\scriptsize $\circle{0.0069185}\circle{0.013837}\circle{0.0207555}\circle{0.027674}$}}} -\put(1.47233,0.722326){\makebox(0,0)[tr]{\hbox{\color{rgb_000000}\scriptsize \hbox{\color{rgb_000000}\scriptsize $(x_\mathrm{max},y_\mathrm{max})$}}}} -\put(1.5,0.75){\makebox(0,0){\hbox{\color{rgb_000000}\scriptsize $\circle{0.0069185}\circle{0.013837}\circle{0.0207555}\circle{0.027674}$}}} -\put(0.75,0.038402){\makebox(0,0)[t]{\hbox{\color{rgb_000000}\scriptsize \hbox{\color{rgb_000000}\scriptsize Canvas (virtual)}}}} -\path(1.5,0.09375)(1.5,0.75)(0,0.75)(0,0.09375)(1.5,0.09375) -\put(3.02767,0.121424){\makebox(0,0)[bl]{\hbox{\color{rgb_000000}\scriptsize \hbox{\color{rgb_000000}\scriptsize $(0,0)$}}}} -\put(3,0.09375){\makebox(0,0){\hbox{\color{rgb_000000}\scriptsize $\circle{0.0069185}\circle{0.013837}\circle{0.0207555}\circle{0.027674}$}}} -\put(3.97233,0.628576){\makebox(0,0)[tr]{\hbox{\color{rgb_000000}\scriptsize \hbox{\color{rgb_000000}\scriptsize $(h_\mathrm{size}, v_\mathrm{size})$}}}} -\put(4,0.65625){\makebox(0,0){\hbox{\color{rgb_000000}\scriptsize $\circle{0.0069185}\circle{0.013837}\circle{0.0207555}\circle{0.027674}$}}} -\put(3.5,0.038402){\makebox(0,0)[t]{\hbox{\color{rgb_000000}\scriptsize \hbox{\color{rgb_000000}\scriptsize Page (actual)}}}} -\path(4,0.09375)(4,0.65625)(3,0.65625)(3,0.09375)(4,0.09375) -\end{picture}% diff --git a/graphics/epix/doc/scaling.xp b/graphics/epix/doc/scaling.xp deleted file mode 100644 index 7d243caabc..0000000000 --- a/graphics/epix/doc/scaling.xp +++ /dev/null @@ -1,37 +0,0 @@ -/* -*-ePiX-*- */ -#include "epix.h" -using namespace ePiX; - -int main() -{ - picture(P(0,0), P(4,1), "4x0.75in"); - - begin(); - - font_size("scriptsize"); - - screen canv(P(0,0), P(1,1)); - activate(canv); - - border(); - ddot(canv.bl(), P(2,2), "$(x_\\mathrm{min},y_\\mathrm{min})$", tr); - ddot(canv.tr(), P(-2,-2), "$(x_\\mathrm{max},y_\\mathrm{max})$", bl); - label(canv.b(), P(0,-4), "Canvas (virtual)", b); - deactivate(canv); - - screen pg(P(0,0), P(1,1)); - activate(pg); - - border(); - ddot(pg.bl(), P(2,2), "$(0,0)$", tr); - ddot(pg.tr(), P(-2,-2), "$(h_\\mathrm{size}, v_\\mathrm{size})$", bl); - label(pg.b(), P(0,-4), "Page (actual)", b); - deactivate(pg); - - arrow(P(1.75, 0.5), P(2.75,0.5)); - - inset(canv, P(0,0.125), P(1.5, 1)); - inset(pg, P(3,0.125), P(4,0.875)); - - end(); -} diff --git a/graphics/epix/doc/sgn.eepic b/graphics/epix/doc/sgn.eepic deleted file mode 100644 index 0aafc5d5af..0000000000 --- a/graphics/epix/doc/sgn.eepic +++ /dev/null @@ -1,30 +0,0 @@ -%% Generated from sgn.xp on Tue Jan 4 15:32:30 EST 2005 by -%% ePiX-1.0.3 -%% -%% Cartesian bounding box: [-2,2] x [-1,1] -%% Actual size: 1.5in x 0.75in -%% Figure offset: right by 0in, up by 0in -%% -\setlength{\unitlength}{1in} -\begin{picture}(1.5,0.75)(-0,-0) -%% --- -\path(0,0.375)(1.5,0.375) -\put(0,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}} -\put(0.375,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}} -\put(0.75,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}} -\put(1.125,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}} -\put(1.5,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}} -%% --- -\path(0.75,0)(0.75,0.75) -\put(0.75,0){\makebox(0,0)[c]{\rule{4pt}{0.5pt}}} -\put(0.75,0.75){\makebox(0,0)[c]{\rule{4pt}{0.5pt}}} -%% --- -\thicklines -\path(0,0)(0.75,0) -\path(1.5,0.75)(0.75,0.75) -\thinlines -\put(0.75,0.375){\makebox(0,0)[c]{{\circle*{0.041511}}}} -\whiten\put(0.75,0){\makebox(0,0)[c]{{\circle{0.041511}}}} -\whiten\put(0.75,0.75){\makebox(0,0)[c]{{\circle{0.041511}}}} -\put(0.75,-0.055348){\makebox(0,0)[t]{\code{sgn}}} -\end{picture} diff --git a/graphics/epix/doc/sgn.xp b/graphics/epix/doc/sgn.xp deleted file mode 100644 index 5296973ba4..0000000000 --- a/graphics/epix/doc/sgn.xp +++ /dev/null @@ -1,28 +0,0 @@ -/* -*-ePiX-*- */ -#include "epix.h" -using namespace ePiX; - -int main() -{ - bounding_box(P(-2,-1),P(2,1)); - unitlength("1in"); - picture(1.5,0.75); - - begin(); - - h_axis(4); - v_axis(1); - - bold(); - line(P(x_min,-1), P(0,-1)); - line(P(x_max, 1), P(0, 1)); - - plain(); - dot(P(0,0)); - circ(P(0,-1)); - circ(P(0,1)); - - label(P(0,y_min), P(0,-4), "\\code{sgn}", b); - - end(); -} diff --git a/graphics/epix/doc/sinx.eepic b/graphics/epix/doc/sinx.eepic deleted file mode 100644 index c62bf19e00..0000000000 --- a/graphics/epix/doc/sinx.eepic +++ /dev/null @@ -1,40 +0,0 @@ -%% Generated from sinx.xp on Tue Jan 4 15:32:32 EST 2005 by -%% ePiX-1.0.3 -%% -%% Cartesian bounding box: [-2,2] x [-1,1] -%% Actual size: 1.5in x 0.75in -%% Figure offset: right by 0in, up by 0in -%% -\setlength{\unitlength}{1in} -\begin{picture}(1.5,0.75)(-0,-0) -%% --- -\path(0,0.375)(1.5,0.375) -\put(0,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}} -\put(0.375,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}} -\put(0.75,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}} -\put(1.125,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}} -\put(1.5,0.375){\makebox(0,0)[c]{\rule{0.5pt}{4pt}}} -%% --- -\path(0.75,0)(0.75,0.75) -\put(0.75,0){\makebox(0,0)[c]{\rule{4pt}{0.5pt}}} -\put(0.75,0.75){\makebox(0,0)[c]{\rule{4pt}{0.5pt}}} -%% --- -\thicklines -\path(0,0.375)(0.025,0.362444)(0.05,0.351239)(0.075,0.343466)(0.1,0.340756) - (0.125,0.343988)(0.15,0.353074)(0.175,0.366907)(0.2,0.383461) - (0.225,0.400058)(0.25,0.413765)(0.275,0.42186)(0.3,0.422302) - (0.325,0.414135)(0.35,0.397758)(0.375,0.375)(0.4,0.348991) - (0.425,0.323823)(0.45,0.304047)(0.475,0.29406)(0.5,0.297469) - (0.525,0.316532)(0.55,0.351733)(0.575,0.40159)(0.6,0.462702) - (0.625,0.530061)(0.65,0.597586)(0.675,0.65881)(0.7,0.707649) - (0.725,0.73913)(0.75,0.75)(0.775,0.73913)(0.8,0.707649)(0.825,0.65881) - (0.85,0.597586)(0.875,0.530061)(0.9,0.462702)(0.925,0.40159) - (0.95,0.351733)(0.975,0.316532)(1,0.297469)(1.025,0.29406)(1.05,0.304047) - (1.075,0.323823)(1.1,0.348991)(1.125,0.375)(1.15,0.397758) - (1.175,0.414135)(1.2,0.422302)(1.225,0.42186)(1.25,0.413765) - (1.275,0.400058)(1.3,0.383461)(1.325,0.366907)(1.35,0.353074) - (1.375,0.343988)(1.4,0.340756)(1.425,0.343466)(1.45,0.351239) - (1.475,0.362444)(1.5,0.375) -\path(1.5,0.375) -\put(0.75,-0.055348){\makebox(0,0)[t]{\code{sinx}}} -\end{picture} diff --git a/graphics/epix/doc/sinx.xp b/graphics/epix/doc/sinx.xp deleted file mode 100644 index 62c08bbc48..0000000000 --- a/graphics/epix/doc/sinx.xp +++ /dev/null @@ -1,23 +0,0 @@ -/* -*-ePiX-*- */ -#include "epix.h" -using namespace ePiX; - -int main() -{ - bounding_box(P(-2,-1),P(2,1)); - unitlength("1in"); - picture(1.5,0.75); - - begin(); - revolutions(); - - h_axis(4); - v_axis(1); - - bold(); - plot(sinx, x_min, x_max, 60); - - label(P(0,y_min), P(0,-4), "\\code{sinx}", b); - - end(); -} diff --git a/graphics/epix/doc/slices.eepic b/graphics/epix/doc/slices.eepic deleted file mode 100644 index 4aebe69de4..0000000000 --- a/graphics/epix/doc/slices.eepic +++ /dev/null @@ -1,45 +0,0 @@ -%% Generated from slices.xp on Sun Dec 31 13:11:11 EST 2006 by -%% ePiX-1.0.22 -%% -%% Cartesian bounding box: [0,7] x [0,2] -%% Actual size: 5in x 0.75in -%% Figure offset: right by 0in, up by 0in -%% -\setlength{\unitlength}{1in} -\begin{picture}(5,0.75)(-0,-0) -%% --- -\thicklines -\path(0,0)(0,0.75) -\path(0.178571,0)(0.178571,0.75) -\path(0.357143,0)(0.357143,0.75) -\path(0.535714,0)(0.535714,0.75) -\path(0.714286,0)(0.714286,0.75) -\path(0.892857,0)(0.892857,0.75) -\path(1.07143,0)(1.07143,0.75) -\path(1.25,0)(1.25,0.75) -\path(1.42857,0)(1.42857,0.75) -\path(0,0)(1.42857,0) -\path(0,0.107143)(1.42857,0.107143) -\path(0,0.214286)(1.42857,0.214286) -\path(0,0.321429)(1.42857,0.321429) -\path(0,0.428571)(1.42857,0.428571) -\path(0,0.535714)(1.42857,0.535714) -\path(0,0.642857)(1.42857,0.642857) -\path(0,0.75)(1.42857,0.75) -\put(0.714286,-0.055348){\makebox(0,0)[t]{\code{R}}} -\path(1.78571,0)(1.78571,0.75) -\path(1.96429,0)(1.96429,0.75) -\path(2.14286,0)(2.14286,0.75) -\path(2.32143,0)(2.32143,0.75) -\path(2.5,0)(2.5,0.75) -\path(2.67857,0)(2.67857,0.75) -\path(2.85714,0)(2.85714,0.75) -\path(3.03571,0)(3.03571,0.75) -\path(3.21429,0)(3.21429,0.75) -\put(2.5,-0.055348){\makebox(0,0)[t]{\code{R.slices1()}}} -\path(3.57143,0)(5,0) -\path(3.57143,0.25)(5,0.25) -\path(3.57143,0.5)(5,0.5) -\path(3.57143,0.75)(5,0.75) -\put(4.28571,-0.055348){\makebox(0,0)[t]{\code{R.slices2(3)}}} -\end{picture} diff --git a/graphics/epix/doc/slices.xp b/graphics/epix/doc/slices.xp deleted file mode 100644 index c67dddf876..0000000000 --- a/graphics/epix/doc/slices.xp +++ /dev/null @@ -1,39 +0,0 @@ -/* -*-ePiX-*- */ -#include "epix.h" -using namespace ePiX; - -void my_grid(const P& loc, int N1, int N2, std::string lab) -{ - if (0 < N1) - { - const double dx(1.0/N1); - for (int i=-N1; i<= N1; ++i) - line(loc+P(i*dx,0), loc+P(i*dx,2)); - } - - if (0 < N2) - { - const double dy(1.0/N2); - for (int i=0; i<= N2; ++i) - line(loc+P(-1,2*i*dy), loc+P(1,2*i*dy)); - } - - label(loc, P(0,-4), "\\code{"+lab+"}", b); -} - -int main() -{ - bounding_box(P(0,0),P(7,2)); - unitlength("1in"); - picture(5,0.75); - - begin(); - - bold(); - - my_grid(P(1,0), 4, 7, "R"); - my_grid(P(3.5,0), 4, 0, "R.slices1()"); - my_grid(P(6,0), 0, 3, "R.slices2(3)"); - - end(); -} |