ePiX -- ChangeLog

Andrew D. Hwang  <ahwang -at- mathcs -dot- holycross -dot- edu>

April 5, 2007 (v1.0.24)
* Fix missing #include declarations (Martin Michlmayr, Julian Gilbey)
  - (errors.h) #include <cstdlib>
  - (polyhedron.cc, surface.cc) #include <algorithm>

March 16, 2007
* (dataplots.{cc,h}) (Marcus Hanwell)
  - Updates to data_file
  - Tokenizer to read files
  - User-modifiable delimiter, comment characters
	
March 3, 2007
* (objects.cc) Axis labels of small abs. value rounded to zero
* (dataplot.cc) Warning string bug
	
March 2, 2007
* (New files spline.{cc,h}) Create natural splines from vector of P
* (dataplot.cc) Implement data_bins::draw() using splines
	
February 27, 2007
* (surface.{cc,h}) Backface culling in surface, surface_rev

February 24, 2007
* (dataplot.cc)
  - data_file::column() accepts index 1, ..., size()
  - Out of range bug in data_bins::initialize()
  - Piecewise-linear data_bins::plot implemented

January 03--29, 2007 (v1.0.23)
* (functions.*) log_log, log_lin, lin_log functions
* (dataplot.{cc,h}
  - New classes data_file, data_bins
  - FILEDATA and old data plotting functions deprecated
* (objects.*) Logarithmic axes and labels

December 29, 2006--January 01, 2007 (v1.0.22)
* (make_header) Add <list> to epix.h
* (domain.*)
  - "dim" function, returns dimension of domain (0--3)
  - "slices" take optional argument (number of slices)
  - "slices" return list (not vector) of domains
  - domain_list class (wrapper around std::list<domain>)
  - mesh(n) defaults to mesh(n, n, n); formerly mesh(n, 1, 1)
* (functions.*) Add sech, csch, coth, and inverses
* (plot_algorithms.h) Use domain_list
* (plots.*)
  - New functions:
      plot(P f(double, double), const domain_list&);
      plot(P f(double, double, double), const domain&);
      plot(P f(double, double, double), const domain_list&);
  - Remove ambigous overloads:
      plot(double f(double, double), const domain&);
      plot(P f(double, double), const P&, const P&, const mesh&, const mesh&);
* (surface.*)
  - New functions:
      surface(f(double, double), domain_list)
      surface(f(double, double, double), domain)
      surface(f(double, double, double), domain_list)
      surface_rev(f(double), t_min, t_max, n_lats, n_longs)
  - New class "scenery", for unions of surfaces
  - Move facet, by_distance classes to cc file
  - Misc cleanup
* (New files samples/extras/decorate,minkowski,spherical.xp)

November 11, 2006 (v1.0.21)
* (epix.1.in, this file) Human-readable email address

November 6, 2006 (v1.0.20)
* Remove README-Authors, epix.ebuild, epix.spec

November 3, 2006
* (Several cc, h files)
  - (void) -> ()
  - Remove spurious dependencies
* (make_header) errors.h, Label.h, lengths.h removed from epix.h
* (contrib)
  - h_scale and v_scale added to Hatch.cc (formerly inlined)
  - (doc) Installation instructions updated
	
October 29, 2006
* (geometry.{cc,h}) Spherical arcs and lines, regular polyhedra
* (New file: samples/extras/polyhedra.xp)

October 28, 2006
* (New files: samples/extras/{log,lorenz}.xp)

October 24, 2006 (v1.0.19)
* (plots.{cc,h})
  - Vector field arrows can be drawn with scaled heads
  - Dart and slope fields' elements can be drawn at specified length
  - Vector/dart/slope field plotting over a (possibly 3-D) domain
* (New file:  samples/extras/vfield.xp)
* (New files: samples/extras/affine.{cc,h,xp}) Sample library code,
  instructions, and source file

October 21, 2006 (v1.0.18)
* (cropping.h) Order "enclosure" data elements consistently with
  constructor (Julian Gilbey)
* (path.cc) 
  - Fix initialization order in path constructor (JG)
  - Constructor assignments -> initialization
* (path.{cc,h}) int arguments (e.g. EPIX_NUM_PTS) -> unsigned int
* (globals.h) EPIX_NUM_PTS is unsigned int
* (segment.cc) Remove debug_print (JG)

October 17, 2006 (v1.0.17)
* (contrib/epix_ext.h, {Double,Single}LogCoord.cc) Remove adplot

October 14, 2006 (v1.0.16)
* (functions.{cc,h})
  - Remove Const class
  - Rename "D" and "I" -> "Deriv" and "Integral" (update manual)
* (map.h) Declare evaluation operators const
* (New file plot_algorithms.h) Plotting templates
  Actual plotting is done by template functions hidden from the user
* (plots.{cc,h})
  - Move templates to plot_algorithms.h
  - Move inlines to cc
  - Remove adaptive plotting
* (make_header) Remove map.h

October 10, 2006 (v1.0.15)
* (camera.{cc,h})
  - Factor out frame class
  - Move inlined code to cc
  - Add "at" and "look_at" functions taking three doubles
  - Attribute-setting functions return epix_camera&, not void
* (cropping.{cc,h})
  - Move inlines to cc
  - Cleanup
* (dataplot.{cc,h}) Misc cleanup
* (functions.{cc,h})
  - Move inlines to cc (including D and I class functions)
  - Remove "static inline" from declaration of "integrand"
  - Misc cleanup
* (output.{cc,h})
  - Move inlines to cc
  - Move globals variables to globals.cc
  - Factor out color functions
  - Misc cleanup
* (New files colors.{cc,h})
  - Inlines to cc
* (New file errors.h)
  - Some inclusions of "output.h" require only errors.h
* (New files frame.{cc,h})
  - Separate frame code
  - Move inlined functions to cc
  - Misc cleanup
* (New file: globals.cc)
  - Move globals.h inlines to cc
  - Move globals variables from output.cc
* (files, Makefile.am, make_header)
  - Add colors.{cc,h}, frame.{cc,h}, errors.h, globals.cc

October 09, 2006
* (circle.{cc,h})
  - Move inlined code to cc
  - Remove operator+(P, circle)
  - Fix dangling references
  - Misc cleanup
* (curves.{cc,h})
  - aarrow de-inlined
  - cleanup
* (domain.{cc,h})
  - Misc cleanup
  - "resize" returns value, not reference
* (geometry.{cc,h})
  - Move inlined code to cc
  - Change P to const P&
  - Remove static functions from header
  - Misc cleanup
* (Label.{cc,h})
  - Move inlined code to cc
  - Misc cleanup
* output.cc
  - Misc cleanup, move path:: functions to path.cc
* (path.{cc,h})
  - Move inlined code to cc
  - Change P to const P& in several functions
  - Move member functions and auxiliaries from output.cc to path.cc
  - Misc cleanup
* (plane.{cc,h})
  - Move inlined code to cc
  - Declare classes instead of including header files in plane.h
  - Misc cleanup
* (sphere.{cc,h})
  - Move inlined code to cc
  - Remove operator+(P, sphere)
  - Move path::draw to path.cc
  - Misc cleanup
* (segment.{cc,h})
  - Move inlined code to cc
  - Remove "join" constructor, operator+(P, segment)
  - Fix dangling references
  - Misc cleanup
* (triples.{cc,h})
  - Move inlined code to cc
  - Misc. cleanup
	
September 25, 2006
* (samples/{clipping,pole}.xp) Remove unneeded "Light"

September 23, 2006 (v1.0.14)
* (pkg script, doc/Makefile.am) Keep manual file tori.eepic

September 8, 2006 (v1.0.13)
* (surface.{cc,h}) Surface plotting works with domains (fine mesh used
  to draw mesh elements; for proper behavior, fine must be a multiple
  of coarse)

August 29, 2009 (v1.0.12)
* "make clean" removes stale latex files (Julian Gilbey)

August 23, 2006 (v1.0.11)
* Version not updated in configure

August 20, 2006 (v1.0.10)
* (elaps.in)
  - Default LATEX_INTERACT=batchmode -> scrollmode
  - Interactive LATEX_INTERACT=scrollmode -> errorstopmode
  - Add spacers ("---") between stanzas in output, log file
* (epix-lib.sh)
  - ePiX_command wraps argument in a single command
  - ePiX_dvips function removed
  - New variables SYSTEM_STD{ERR,OUT}, SYSTEM_DEVNULL
* (All *.in files)
  - ePiX_dvips -> ePiX_command
  - Use SYSTEM_ variables instead of hard-coded /dev/...

July 13, 2006 (v1.0.9)
 * (README, manual.tex) Update mailing list information

June 14, 2006
 * (path.{h,cc})
  - Misc cleanup, redeclarations
  - Default path() constructor
  - Add pt() functions for building a path point-by-point
 * (curves.cc) Remove polygon in triangle/quad implementation
 * (samples/extras)
  - Update README
  - Add lighting.{flx,h} (color-shaded surface sample files)
  - Rewrite {butterfly,helicoid,hyperboloid,tori}.xp so data, sorting
    classes don't conflict with surface plot functions

June 09, 2006
 * (samples/{clipping,pole}.xp) Rewrite using shaded surface plots

June 06, 2006 (v1.0.8)
 * New Makefiles from autoconf 2.60 (Julian Gilbey)

June 02, 2006
 * (INSTALL, POST-INSTALL) Update instructions
 * (pkg script) Only two versions (epix-x.y.z[_withpdf].tar.bz2)

May 24, 2006
 * (contrib/epix_ext.h) Define virtual destructors for classes
   containing virtual functions

May 22, 2006 (v1.0.7)
 * (files) Add TODO (needed by "make dist" et. al.)

May 19, 2006
 * (New module: surface.{cc,h}) Shaded surface plotting

May 17, 2006
 * New file: pairs.cc
  - Factor out inlined functions, clean up call and return syntax
  - Scalar multiplication operator (fixes bug with "bubble" lens)
  - Reimplement equality operator, add inequality operator

May 16, 2006
 * (Shell scripts) 
  - Disable "-vv" option
  - Miscellaneous bugfixes from recent changes

May 14, 2006
 * (camera.{cc,h})
  - Friend functions viewpoint() inlined outside camera class
  - Declare at(), look_at(), lens functions to take const P&
 * (path.h) polygon(), polyline() declared outside path class
 * (cropping.h, globals.h) Pre-declare friend functions

May 09, 2006
 * (sphere.cc) Latitude radius bug
 * (pairs.h) Complex division bug
 * (epix.in) Don't cd to temporary directory when compiling

April 08, 2006
 * (samples/extras/riemann.flx) Fixed command line parsing
 * (elaps.in, laps.in) -i (interactive) option runs latex in scrollmode
 * (flix.in) Can process multiple input files
 * (All scripts) Print success/failure summary after processing
   multiple files

April 01, 2006
 * (Shell scripts) If an option requires an argument (e.g. -I), check
   for argument and exit if not found

March 26, 2006
 * (Shell scripts) Option change: "-V" for version, "-v" for verbose
  - Verbose option echoes filename(s) and prints "success" or "failure"
  - All output/error messages piped to log file
  - filename parsing factored out to epix-lib.sh
  - Obsolete function ePiX_terse_help removed
  - Options -V, --version, --gpl all print license
 * (epix.in)
  - Use subdirectory of cwd, not mktemp
  - Obsolete loop at start of epix_compile_files removed
 * (flix.in)
  - flix_get_fileroot returns but doesn't die if input file isn't found

March 04-19, 2006
 * Package uses autoconf (Julian Gilbey and ADH)
  - "config" file obsolete (removed)
  - New files: AUTHORS, NEWS, configure.in
  - CHANGELOG -> ChangeLog
  - New boilerplate files: config.{guess,sub}, aclocal.m4, install-sh,
    missing, mkinstalldirs
  - INSTALL, manual (formerly tutorial) updated
  - ./configure accepts options
    --with-bash=<bash>
    --with-runtime=<runtime compiler>
    --with-contrib
 * doc/contrib has moved to contrib/doc
 * Package uses automake 
  - Makefile -> Makefile.am in top-level directory, samples, contrib,
    doc, and contrib/doc
 * All Makefiles re-written:
  - helpfiles.sh, pre-install.sh, post-uninst.sh obsolete (removed)
  - Use compiler flag -O2 uniformly
 * Subdirectory Makefile.ams re-written
  - Compiled documentation placed in top-level directory at build
 * samples/sample.sh replaced with samples/sample.tex in package
 * (make_epix)
  - Working directory removed from default header path
 * (make_{elaps,epix,flix,header,laps}) 
  - Scripts built by Makefile
  - Portions kept in files named, e.g., make_epix_in and epix_hdr
  - "--gpl" option for license ("-vv -v" still works)
  - Missing " in usage message fixed
 * (All sources and headers)
  - Move lengthy inlined functions to cc
  - Functions declared const when appropriate
  - Function arguments made const& when possible
  - Initialize in constructors instead of copying
 * epix, flix read config files *before* looking at command line options
 * The include and library files are no longer versioned.  That was
   somewhat confusing!
 * contrib/epix_ext.h no longer says "using namespace ePiX_contrib" globally

February 26, 2006
 * (epix_functions) epix_basic_help() -> epix_usage()
 * (make_{elaps,epix,flix,laps}) Reorganization and cleanup
 * (make_laps) 
  - Compile checks for success at each step before continuing
  - Automatically update stale aux files
 * (make_elaps)
  - Set page size to 7x9.5" to prevent page break with large figures
  - User-specified dvips options *follow* standard options
  - Compile checks for success at each step before continuing
  - If output file is specified with multiple inputs, skip all but last
  - Compile figure in working directory

February 25, 2006
 * (Makefile) Extensive cleanup, numerous bugs fixed (Julian Gilbey)
 * (make_laps, make_elaps)
  - Add option -interaction=batch/scrollmode (Julian Gilbey)
 * (keywords) File removed

October 30, 2005 (v1.0.6)
 * README(-changes) Put documentation under the GPL (Julian Gilbey)
 * (New files: samples/extras/hyperboloid.xp, helicoid.flx)

July 31, 2005 (v1.0.5)
 * (make_flix) 
  - Exit immediately if input file not found
  - --no-defaults option

May 09, 2005
 * (doc/tutorial.tex) Generate (shaded) torus figure in one file
 * (Makefile, helpfiles.sh) Always compile docs/samples if requested
 * (samples/extras/tori.xp, doc/tori.xp) quad -> ePiX::quad

May 07, 2005
 * (make_{elaps,epix,flix,laps}) "Help" is verbose by default (Karl Berry)
 * (make_laps) Accept extensions tex, dtx, ltx

April 23, 2005
 * (polyhedron.cc) Don Hatch's suggestions on Acos
 * (geometry.cc) ePiX:acos -> Acos
 * (functions.cc) Re-implement sinx()

April 02, 2005
 * (make_elaps) "-ps|--ps" option (create standalone PS file)

March 14, 2005
 * (make_epix)
  - "--no-defaults" does not clear the include and lib paths
  - "-cc|--compiler" option (set compiler)

March 11-13, 2005 (v1.0.4)
 * (New files: polyhedron.{cc,h}) Manipulate, draw convex 1-skeleta
 * (plane.h) Functions to extract normal, determine separation of points
 * (plane.cc) draw() reimplemented to draw a (shadable) closed path
 * (make_header) Remove multiple inclusion #defines
 * (helpfiles.sh) Check for existing documentation before building

March 5, 2005
 * (dataplot.*) Change argument order in histogram()

February 27, 2005
 * (make_elaps, make_laps) -n|--no-config option (ignore ~/.dvipsrc)

February 11, 2005
 * (make_elaps) /tmp cleanup bug (directory wasn't removed)

January 14, 2005
 * (make_laps) Option compatibility
  - "--pdf" works with "--tex", interacts politely with "--pdf(la)tex"

January 02-12, 2005 (v1.0.3)
 * (New file: config) Configurable parts of the old Makefile
  - Install paths conform to the Filesystem Hierarchy Standard
    (See README-porting for details)
  - No environment variables passed by Makefile during build
 * (New files: make_{elaps,epix,flix,laps}) Generate scripts at build
 * epix, elaps, laps re-written
  - (All) Can compile multiple files in one run
  - (epix) Output file specified by -o option, not as final argument
  - (elaps) Size option (for 10, 11, or 12-pt document)
  - (laps) Compile with any of tex, latex, pslatex, pdftex, pdflatex
 * (Makefile, make_header, pre-install.sh, post-uninst.sh, helpfiles.sh)
  (Un)install process re-written:
  - New targets (doc, doc-clean, samples, samples-clean, uninstall-all)
  - Makefile handles cleanup (instead of relying on helpfiles.sh)
  - Compiled tutorial, samples, and tarred source files in doc/epix
  - Header and lib files' names contain version number, and are symlinked
  - newbash.sh run automatically if necessary
  - "make contrib" can be re-run safely
  - Run ranlib on installed library (Alan Sill, very belated)

December 31, 2004 (v1.0.2)
 * (dataplot.*, samples/extras) Histogram functions
 * (globals.h, objects.cc, output.*, Label.cc) 
  - Font size and face
  - Rename arrowhead parameters
 * (curves.*) Quad/cubic spline arrows

December 26, 2004 (v1.0.1)
 * (objects.*) 
  - Basic markers (circ, dot, box, etc.) accept label arguments
  - Labeled arrows
 * (globals.h, objects.cc) 
  - Move arrowhead parameters to epix::
  - Add "camber" parameter (indentation at base of arrowhead)
 * (curves.*) Use arrowhead parameters
 * (samples/*) Miscellaneous updates

December 19, 2004
 * (globals.h, plots.*) Riemann sums (LEFT, RIGHT, UPPER, LOWER, TRAP, MIDPT)

November 14, 2004
 * (doc/) Several .xp files
  - Declare main() to return int (Kevin McCormick)
  - Miscellaneous syntax updates

September 11, 2004 (v1.0.0)
 * (helpfiles.sh) Install tutorial/manual as pdf (and ps)
 * (README-authors) File removed
 * (README, README-changes, epix.spec) Miscellaneous changes
 * (bash_completions) Typo fixed

September 04, 2004 (v1.0.0pre)
 * (lengths.*) Handle bp (big points) and sp (scaled points)
 * (sphere.cc) 
  - "Omitted endpoint" bug for closed paths
  - draw() reimplemented for output formatting, cf. output.cc
 * (output.cc) dash_start, print(ostream...) made non-static
 * (path.cc) Use Cos, Sin in ellipse constructor
 * (functions.h) Asinine Asin bug

September 03, 2004
 * (curves.cc) triangle, quad, rect work when dashed/dotted

August 26, 2004
 * Tutorial moved to doc/
 * (Several config/doc files) Changes for new major version

August 24, 2004 (v0.8.11rc16)
 * (triples.h, segment.h) 
  - midpoint(P, P, double) moved to triples.h
  - midpoint(segment) made a member function
 * (functions.h, plots.h) Diff -> D, Int -> I
 * (functions.h) D, I class have eval() function; D class has
   left() and right() functions for derivative from left/right
 * (laps) --tex option

August 22, 2004
 * (scripts) flix files use extension ".flx"
 * (functions.cc) Integration bug

August 20, 2004
 * (curves.cc) 
  - arrowheads drawn solid regardless of path style
  - aarrow (double-ended arrow)

August 18, 2004
 * (globals.h) 
  - dot_size defaults to 3pt
  - Maximum dot_size is 256pt
 * (output.cc) 
  - dot_size defaults to 3pt
  - By default, ddot=2pt, dot=3pt, spot=4.5pt

August 17, 2004
 * (elaps, flix, preflix, prepix) Construct email address in license

August 10, 2004
 * (New files: preflix) Script (flix) for mng animation
 * (output.cc, globals.h) (extern) double tix
 * (epix.el) Small documentation updates

July 27, 2004 (v0.8.11rc14, 15)
 * (functions.*) newton(f, g, x0) finds crossing point
 * (plots.h) follow -> flow
 * (cropping.*, {curves,output,sphere}.cc) Separate Crop_Box
 * (cropping.*) New function crop_box()

July 26, 2004
 * (plane.*) face1_min, etc. removed
 * (functions.h) Capital trig functions (Cos, Tan, etc.) added
 * (globals.h, output.cc) Default dot/box size is 4 pt, range is 0.5 -- 32 pt

July 24, 2004
 * (dataplot.*) Functions for linear regression

July 19, 2004
 * (functions.h) New function xyz (Cartesian constructor)

July 16, 2004
 * (Label.cc) Print "\makebox(0,0)" for markers
 * (New files: data_plot.{cc,h}) Re-implement data plotting in C++
 * (plots.cc) shadeplot() implemented using paths

July 14, 2004 (v0.8.11rc13)
 * (globals.h) New constant, EPIX_PATH_LENGTH, number of points per
   path segment (to avoid overflowing TeX memory)
 * (output.h) string-valued function start_path_string()
 * (output.cc) path::draw() formats output
 * (plots.h) Loop index bug in plot(T, domain)

July 13, 2004
 * (New file: map.h) Factor out mapping classes from plots.h
 * (path.*) 
   - Parametrized path constructors
   - Two-point line constructor has zero expansion by default
 * (curves.cc) 
  - arc_arrow() filling bug
  - triangle(), rect(), and quad() fill according to epix::fill_paths
 * (globals.h, functions.cc output.h, Label.cc) 
   Label rotation: label_angle(angle); (Angle stored internally in degrees)

July 12, 2004
 * (plots.h) follow(F, P x0, t_max); flow x0 by F for time t_max
 * (plots.cc) Bug in draw_field if vector parallel to eye 
 * (New file: domain.cc) Implement slices()

July 11, 2004
 * (cropping.cc) Bug in seek_crop(); use bisection method
 * (curves.cc) Line fixed
 * (output.cc) Initialize camera in begin()
 * (triples.*) 
   - Re-factor operator code into triples.cc
   - Increment (member) operators return references, others don't
   - Operators take const, non-reference arguments (fixes two 
     initialization bugs in plots.h)
 * (Makefile) Optimize flag (-O2) added to curves, output, path, plots

July 09, 2004
 * (plots.*) Move data plotting to separate file
 * (epix.el) Declare main() int

July 08, 2004
 * (all header files) _EPIX -> EPIX
 * (globals.h)
   - new epix:: members using_pstricks, fillcolor
   - Remove initializer function epix()
   - Remove DOT/SPOT sizes; use epix::dot_size()
 * (output.*)
   - Size of ring, circ, (d)dot, (b)box in terms of epix::dot_size()
   - using_pstricks features
     : File header
     : start_path(), path::draw()
     : fill_color(), psset()
 * (sphere.cc) Use dash_seg() instead of print_path_segment()
 * (Label.cc) epix_unfill() -> epix_whiten()
 * (curves.h) rect() fills according to epix::fill_paths

July 06, 2004 (v0.8.11rc12)
 * (domain.h) Domain resizing functions
 * (curves.cc) Fillable arrowheads
 * (cropping.cc) seek_path_end() bug
 * (globals.h, output.cc) Default dotdiam is 2pt

July 05, 2004
 * (plots.*) Class rearrangement
 * (functions.h) Const, Diff, Int moved from plots.h
 * (domain.h) Constructor for (t_min, t_max, num_pts)
 * (objects.cc) dot diameter bug

July 04, 2004
 * (curves.cc, geometry.cc, output.cc, path_data.*, plots.*,
    sphere.cc, cropping.h, Makefile) path_data -> path 

July 01, 2004
 * (path_data.h) 
   - New function set_fill(); clip/crop() renamed set_clip/crop()
   - close() takes default "true" argument
 * (path_data.cc) 
   - Line constructor uses 2 points when path is solid
   - Ellipse constructor closes path if one full turn.
   - Constructors fill according to epix::fill_paths (consequent
     changes to plots.*, curves.cc, geometry.cc)
   - Path concatenation operators implemented properly
 * (output.cc) 
   - Multiple bugs in path_data::draw()
   - clip() -> set_clip(), same for crop()
 * (objects.*) box(P ctr, double size), filled colorable square
 * (sphere.cc, output.cc) Use box in dotted paths
 * (sphere.cc) Dashed line bug
 * (globals.h) EPIX_DASH_LENGTH, EPIX_DOT_SEP removed

June 29, 2004
 * (globals.h) 
   - dashlength, dashfill are separate parameters
   - New function dot_sep()
   - "get parameter" functions are static members (consequent changes
     to curves.*, output.cc, path_data.cc, plots.h, sphere.cc)
 * (output.cc) 
   - Define and initialize style variables before begin()
   - Dotted line newline bug
 * (objects.cc) Minor cleanup of dot(), ring()

June 27, 2004 (v0.8.11rc11)
 * (curves.*) Line does not take default num_pts

June 26, 2004
 * (New file: domain.h)
 * (contrib/) 
   - h/v_size -> h/v_size()
   - draw_line, draw_plot -> line, plot
 * (pairs.h) mesh is a class (not a struct)
 * (curves.cc, plots.cc) adjustments for mesh class
 * (output.cc) Closed path bug in path_data::draw()

June 25, 2004
 * (cropping.*) picture(), offset() may take two double arguments
 * (curves.cc) 
   - Line *crops* (not clips) line
   - fractal curves restored
 * (functions.h) Redundant angle() declaration removed

June 23, 2004 (v0.8.11rc9)
 * (Multiple files) "triple" renamed "P" ("triple" still a typedef for "P")

June 22, 2004 
 * (camera.h) rotate.sea/sky() update viewpt

June 21, 2004 (v0.8.11rc8 -- rc7 not released)
 * (meshplots.*) 
   - clipplot helper functions removed
   - plot(triple F(double, double)...) merged into plots.*
 * (Label.cc) draw() sensitive to visibility
 * (sphere.*, geometry.*) Completely re-implemented using path_data
 * (arcana.*, legacy.h) Removed

June 20, 2004
 * (plots.*) Plotting completely re-implemented using path_data, templates

June 17, 2004 
 * (samples/koch.xp) end_bold() -> plain()

June 14 -- 16, 2004
 * (All files) Extensive rewriting, cleanup. Particularly
  - (pair.*) pair inlined, members made private, operators rewritten
  - (triple.h) members made private, operators rewritten
  - (lengths.*) raw_len removed (use "norm" instead)
  - (camera.*) get_sea(), etc., now void, called "sea()", etc.
  - (arcana.cc, plots.cc) "diff" replaced by "deriv", defined in functions.h
  - (output.*) epix_comment removed, end_stanza produces less output
  - Polygons, arrows moved to curves.*
  - Most printf calls changed to cout
  - All output functions defined in output.*
 * (camera.*) 
  - Camera knows its location (viewpt)
  - focus() and range() change target and viewpt (respectively) while
    preserving orientation. 
  - Bugs fixed in look_at(), viewpoint()
 * (contrib/, samples/) Files updated (triple members private)
 * (New files: path_data.*, cropping.*) Classes for cropping/clipping paths
  - All path-like objects drawn via class path_data
  - Data structures for clipping (enclosure::Clip_Box) and
    cropping (crop_mask::Picture, crop_mask::Bounding_Box)
 * (globals.h) 
  - Global variables isolated in class epix::
  - EPIX_DBL_INFTY removed, EPIX_INFTY = 10^5 (was 10^4)

June 07, 2004
 * (output.*) Primary colors take depth option

May 20, 2004
 * (samples/*) Sample document and several files tweaked

May 19, 2004
 * (segment.cc) coplanarity test bug
 * (triples.h) triple (in)equality tests loosened (norm < EPIX_EPSILON)
 * (circle.cc) Tests for exceptional conditions explicitly loosened

May 04, 2004 (v0.8.11rc6)
 * (plane.*) draw() and accessories
 * (output.cc) clip_to(), clip_box() set face planes

May 03, 2004
 * (plots.cc) dart/slope_field length bug

April 20, 2004
 * (circle.h) Force normal vector to be unit in constructor

April 08, 2004
 * (New files: plane.*) Plane class, intersection operators

April 08, 2004
 * (New files: Style.*) Global style options
 * (globals.h) epix_path_style moved to Style.h
 * (functions.h) Identity map templated

April 06, 2004
 * (output.*) epix_newline/comment/warning/error()
 * (geometry.cc, lengths.cc, objects.cc, output.cc, pairs.cc, plots.cc)
  - Formatting handled by inlined functions in output.h
 * (objects.cc, functions.cc) max/min functions
 * (globals.h)
  - epix_mark_type H_TICK, V_TICK, TEXT
  - epix_label_posn none
 * (New files: Label.*) Label class
  - Label(basepoint, label_text, mark_type, alignment, masking, offset)
  - Constructor for labels as function of position

March 07, 2004 (v0.8.11rc5)
 * (contrib/) 
  - Svend Daugaard Pedersen's updates (log plotting, etc.)
  - Separate Makefile
 * (helpfiles.sh) Install contrib documentation
 * (Makefile) contrib target re-written, old cruft removed

February 22, 2004
 * (geometry.*) visible_on_sphere() allows specification of sphere
 * (sphere.*) latitude()/longitude()

February 07, 2004 (v0.8.11rc4)
 * (camera.h) get_proj_point() Returns center of camera projection
 * (Makefile, files, sphere.*) Sphere class
 * (geometry.cc) Uniform visibility test for spherical plotting

December 11, 2003 (v0.8.11rc3)
 * (circle.cc) Three-point circle constructor bug

June 18, 2003 (v0.8.11rc2)
 * (objects.*) polygon/polyline argument bugs (Thorsten Riess)

June 11, 2003 (v0.8.11rc1)
 * (elaps) --pdf option

June 06, 2003 (v0.8.10)
 * (camera.cc) fisheye, bubble lenses project to *unit* sphere

June 04, 2003 (v0.8.10rc11)
 * (objects.h) Remove int cast from {h,v}_axis(int) (gcc 2.95 can't compile)
 * (curves.*, objects.*) Arrow functions accept optional scale parameter
  affecting size of arrowhead

May 27, 2003 (v0.8.10rc10)
 * (lengths.cc) Coordinate change mappings do not perform truncation
 * (output.cc) print() functions perform truncation
  These changes fix the unsquashed arrowhead bug.
 * (objects.cc) Bugs in draw_arrowhead:
   - arrowhead base dimensions set incorrectly (sin_theta -> cos_theta)
   - arrowhead drawn as spot over too large an angular range
   - draw degenerate arrowhead as "circ" in all cases

May 26, 2003
 * (plots.h) Wrong data type for 2nd arg of data_plot()

May 18--20, 2003
 * (objects.cc) Degenerate arrow bug in draw_arrow
 * (curves.cc) Arc arrow bug (normalize arrow in draw_arc_arrow)

April 25, 2003
 * newbash samples.sh -> samples/sample.sh
 * (samples/) Use simplified axis/labels commands, misc tweaking
 * (helpfiles.sh) 
   - Remove "-ps" option when compiling tutorial
   - Miscellaneous reformatting

April 24, 2003 (v0.8.10rc9)
 * (objects.cc) 
   - {h,v}_axis() Number of points bug (1 interval now okay)
   - In *_masklabels(), mask parameter is bool (was int)
   - Use multiput if possible when printing tick marks
 * (objects.h) 
   - {h,v}_axis[_[mask]labels]() now supply default endpoints
   - {h,v}_axis() Number of intervals defaults to 1 (was #ticks-1)
 * (output.*) print_vector(), to print triple as displacement

April 23, 2003
 * (legacy.h) Restore file
   - Polygon, ellipse, arc, spline, and some plots inlined
   - Legacy functions print warning to stderr
 * (Makefile) Rewrite legacy target

April 22, 2003 (v0.8.10rc8)
 * (samples/) Extensive reworking, new sample files

April 21, 2003
 * (triples.h, camera.cc) Orthogonalization denoted "%" 
 * (objects.*) 
   - New functions draw_polygon (data only), polyline(open)
   - polygon() draws closed polygon

April 21, 2003 (v0.8.10rc7)
 * (New files: circle.*) Split segment.*
 * (triples.*) All functions inlined, triples.cc removed
 * (Makefile, files, make_header) Add circle.*, remove triples.cc
 * (samples/sample.sh) Loxodrome caption bug

April 20, 2003
 * (segment.*) 
   - intersect(), slide() are overloaded operators (* and +)
   - Translation and scaling operators for circles
   - draw() functions for segment, circle
   - Error handlers moved to globals.h
 * (triples.*) ++, != of type bool
 * (curves.cc) ellipse_arc angle unit bug
 * (Tutorial) Several errors corrected

April 19, 2003
 * (objects.*) draw(circle) works in perspective
 * (camera.*) New lens: "bubble"

April 18, 2003
 * (Makefile) Do not echo shell script commands
 * (segment.cc) Sign bug in intersect(circle, circle)

April 17, 2003
 * (objects.cc) One more Line() bug :(
 * (triples.h) J(triple) (replaces former J(pair))

April 16, 2003 (v0.8.10rc6)
 * (curves.*) num_pts bug in (draw_)ellipse
 * (globals.h) EPIX_NUM_PTS -> 80
 * (plots.*) clipplot -> cropplot
 * (meshplots.*) wiremesh -> plot, clipmesh -> clipplot
 * (objects.cc) Line() fixed
 * Documentation and samples updated
 * (files) Remove legacy.*
 * (New file) samples/sample.sh (to generate sample.tex on the fly)
 * (helpfiles.sh) Generate samples/sample.tex with script

April 14, 2003 (v0.8.10rc5)
 * (objects.cc) Line() clips to clip_box instead of bounding_box
 * (objects.*) New function: polygon(int, triple, ...)
 * (plots.*) 
   - Restore tan_line() and sliceplot()
   - dart_field bug (lengths wrong)
 * (contrib/epix_ext.*) Introduce ePiX_contrib namespace
 * (arcana.*) fractal() takes triple arguments
 * (geometry.cc) Change declarations in sphereplot*()
 * (elaps) \usepackage rotating

April 13, 2003
 * (contrib.*) pair -> triple, comment refs to epix_lines_printed

April 08, 2003
 * (camera.cc) frame returns right-handed value
 * (curves.*) 
   - Old draw_ellipse_arc() number-of-points bug
   - 3-D draw_ellipse_arc() debugged
   - 3-D draw_ellipse takes default num_pts

 * (objects.cc) draw_arrow() "null head" bug

April 07, 2003
 * (triples.*) Orthogonalization operator fixed (and remove /= operator)
 * (meshplots.*) 
   - Convert pair args to triple
   - Use is_in_bounds() (from output.h) for clip testing
 * (objects.cc) 3-D arrow() implemented

April 06, 2003
 * (segment.*) Classes and algorithms re-designed, implemented
 * (triples.*) != operator added, cross product takes const args
 * (plots.*) Algorithms adjusted for 3-D objects
 * (output.*) 
   - Cropping test is_visible(), clipping test is_in_bounds()
   - begin() sets clip_box to compatible default
   - Move picture parameter-setting functions from lengths.*
 * (plots.*)
   - All point output goes through plot_pt (hence through print)
   - Move adaptive plotting except for real-valued functions to legacy.*
   - Move shadow plots, tan lines, bold vector fields to legacy.*
   - Move marker (in header) to objects.*

April 05, 2003
 * (output.cc, plots.cc) Rename V() -> view()
 * ({geometry,lengths,objects,output,pairs,triples}.cc) Remove viewpt{1,2,3}
 * (output.*) print(triple location, triple offset)
 * (all source and header files) 
   - P(x1,x2) returns <triple> (x1,x2,0)
   - All point output goes through print()
 * (objects.*) 
   - Axes and lines printed with several points
   - Algorithms re-designed and implemented for 3-D objects
 * (lengths.*) true_len() -> true_length(), normalize() -> true_unit()
 * (curves.*) 
   - Algorithms re-designed and implemented for 3-D objects
   - ellipse_half(), twist() functions removed
 * (globals.h) EPIX_MAX_LINES, epix_lines_printed removed

April 04, 2003
 * (New files) camera.{cc,h}
 * (Makefile, files, make_header) Add camera
 * (triples.*) Orthogonalization operator (/=), misc fixes
 * (pairs.*, triples.*, lengths.*) Move V(), viewpoint() to camera.*

April 03, 2003
 * (curves.cc) Replace EPIX_SEEK_SIZE with EPIX_EPSILON
 * (geometry.cc) Use bisection for seek_horizon
 * (globals.h) Remove EPIX_SEEK_SIZE

April 02, 2003 (v0.8.10rc4)
 * (plots.cc, meshplots.cc) Use bisection method for edge_seek

March 31, 2003 
 * (globals.h, lengths.*, output.cc) clipbox structure
 * (meshplots.*) Clipped mesh plots

March 28, 2003 (v0.8.10rc3)
 * (contrib/epix_ext.cc and samples) Negative length vector bug

March 23, 2003 (v0.8.10rc2)
 * (segment.*) circle class and manipulators
 * (objects.h) draw() functions for segment, circle

March 22, 2003 (v0.8.10rc1)
 * (functions.*) double newton()

March 21, 2003
 * (New files: segment.*) Data structure for manipulating line segments
 * (files, Makefile, make_header) Add segment.*

February 25, 2003 (v0.8.9)
 * (Tutorial) Document dashed(double), dotted(double)

February 11, 2003
 * (samples/sample.tex) Insert modified sample code

February 10, 2003 (v0.8.9rc5)
 * (functions.*) 
   - Trig functions using angle units, additional reciprocals (csc, cot)
   - Misc cleanup, optimization
 * (output.cc) 
   - Global variable epix_angle_units
   - Functions for changing: radians(); degrees(); revolutions();
 * (pairs.h, triples.h, arcana.cc) Use ePiX trig functions
 * (curves.cc, objects.cc, plots.cc) Use angle units
 * (geometry.cc) Use std::cos for point spacing in hyperbolic lines
 * (globals.h, pairs.cc, lengths.cc) 0.0001 -> EPIX_EPSILON
 * (globals.h) New const EPIX_DBL_INFTY (10^10)
 * (samples) Trig functions declared ePiX::
 * (output.h) dashed(), dotted() may take double argument to set stretch
 * (New file: keywords) Simple lookup script for C/C++ keywords
 * (files, Makefile) Add keywords (install in bin/)
 * (Doc figures) Update for ePiX namespace, rename to xp, etc.
 * (epix.el) Remove "using namespace std;" line from template

February 09, 2003
 * (samples) Nicer shadeplot example, use DDOTs in denom.xp

February 08, 2003 (v0.8.9rc4)
 * (legacy.*) epix_stretch_factor namespace bug
 * (pairs.h) polar() and cis() inlined
 * (triples.h) sph() inlined

February 07, 2003
 * (prepix) 
   - Update copyright years
   - Clean up after runtime error
   - Remove "-static" flag

February 06, 2003 (v0.8.9rc3)
 * (contrib/epix_ext.*) Use enum for alignment, bool for x/ybroken, graphpap;
   remove dependence of std:: (Robin Blume-Kohout)
 * (output.h) Macro-ized functions inlined (STL conflict with "fill") (R B-K)
 * (All source files) Replace style/width/color macros with function calls

January 31, 2003 (v0.8.9rc2)
 * (contrib/epix_ext.cc) EPIX_PATH_STYLE type bug (Jay Belanger)
 * (helpfiles.sh, Makefile) Let Makefile dictate compiler for test target
 * (epix-0.8.8_tex/contrib/epix_ext.tex) Negative \vspace{}s commented
   out (Bob Grover)

January 30, 2003 (v0.8.9rc1)
 * (globals.h) Add several symbolic constants
 * (all source files) Cleanup, namespace fixing (Jay Belanger, Robin
   Blume-Kohout)
 * (README-{authors,changes}) Namespace fixes

January 23, 2003
 * (geometry.cc) Sign bug in plot_S (Jacques L'helgoual)

December 21, 2002 (v0.8.8a)
 * (epix.1, helpfiles.sh, samples/makefigs) Correct for ".xp" extension

December 20, 2002 (v0.8.8)
 * (bash_completions, elaps, epix.el, POST_INSTALL, prepix) .epx -> .xp

December 16, 2002 (v0.8.8rc8)
 * (output.cc) Use tpic "sh" \special to get gray shading (Jay Belanger)

December 13, 2002
 * (output.cc) 
   - Off by 1 bug in gray()
   - Missing "long" flag in hex constant

December 12, 2002 (v0.8.8rc7)
 * (prepix) Internal variable renaming
 * (elaps) Accept .epx files correctly
 * (INSTALL, POST_INSTALL) epix.el instructions (partly moved from INSTALL)
 * (files, helpfiles.sh) Add epix.texi
 * (output.cc) 1025 shades of gray

December 06, 2002
 * (INSTALL, README) epix.el installation instructions

December 05, 2002
 * (bash_completions, epix.el) Handle epx extension

December 04, 2002 (v0.8.8rc6)
 * (prepix) 
   - Compile in temp directory
   - Introduce ".epx" extension
   - Recognized file extensions put in EPIX_EXTENSIONS

December 02, 2002
 * (All source and sample files) ePiX namespace introduced
 * (legacy.*) ePiX_legacy namespace
 * (sample.tex) Miscellaneous typos fixed, 12 -> 11pt

December 01, 2002 (v0.8.8rc5)
 * (output.*) gray(), controls gray depth in shaded objects
 * (plots.*) Jay Belanger's code for shaded plots

October 23, 2002
 * (arcana.cc) plot_profile() optimized slightly
 * (arcana.*)  plot_profile() takes optional lower momentum limit

October 20, 2002
 * (objects.*) 
   - Diameters of DOT, DDOT increased (to 3 and 2 pt resp. by default)
   - New function: dot(pair, double) (filled circle of specified radius)

October 19, 2002 (v0.8.8rc4)
 * (elaps) Option "-p" for additional LaTeX packages
 * (elaps) DVIPS_OPTS bug
 * (elaps) Options passed improperly to epix
 * (pre-install.sh) Use $INSTALL_DIR/share/epix/{config,notes,samples,tutorial}
 * (helpfiles.sh) 
   - Samples tarball unpacks in subdirectory, not unpacked in install
   - Samples, READMEs, and tutorial (incl. src) installed in directories above
 * (INSTALL, POST_INSTALL) Updated
 * (Makefile) Cleanup
 * (Tutorial) Pedersen's docs incorporated; contrib/doc -> epix_tex/contrib
 * (contrib/epix_ext.cc) Function/variable names updated

October 16, 2002 (v0.8.8rc3)
 * (files) 
   - bash_completions (for Ian MacDonald's programmable completion package)
   - epix.el (Jay Belanger's emacs mode)

October 13, 2002
 * VERSION removed from distribution

October 11, 2002 (v0.8.8rc2)
 * (elaps, files, globals.h, laps, prepix) Show current (minor) version number

October 09, 2002
 * (triples.*) V(triple&) -> V(triple)

October 07, 2002 (v0.8.8rc1)
 * (objects.cc) draw_[bold]arrow(): arrowhead path style bug (Torbjorn Vik)
 * (triples.*) New function, V(triple), projects triple to pair

October 07, 2002 (v0.8.7a)
 * (elaps, laps, prepix) Renaming:
   - Verbose option is "-vv", version is "-v"
   - Option/flag parsing: <script>_parse_options
   - Error message: <script>_die
   - Help: <script>_help
 * (elaps, epix) New functionality:
   - Help and version options
   - Accept suffix ".cpp"
 * (epix) Catch "no input file" error

October 06, 2002
 * (helpfiles.sh) Use "install" instead of "mv" for sample files
 * (helpfiles.sh) Add laps options

October 05, 2002
 * (helpfiles.sh) Line 74: $USER.$USER -> $USER:$GROUPS

October 05, 2002 (v0.8.7)
 * (elaps) --verbose option

October 04, 2002
 * (elaps) Option bug fixed, help option added
 * (laps)
   - Functionization
   - Options --verbose and --help added
   - "dvips" printer options (-Pamz -Pcmz) removed from default
   - Use latex (instead of pslatex) by default; --ps option for pslatex

September 30, 2002 (v0.8.7rc11)
 * (elaps) Let epix handle file errors, exit gracefully on failure
 * (elaps) Accept extensions [.eepic|.c|.cc|.C] in order

September 23, 2002 (v0.8.7rc10)
 * (elaps) Path bug: "./epix" -> "epix" (Jay Belanger)
 * (functions.cc, functions.h) abs(int) removed

September 21, 2002
 * (legacy.cc) Missing "comment" functions added

September 20, 2002 (v0.8.7rc9)
 * (elaps) Accept eepic files as input, correct "Title:" in eps file

September 15, 2002 (v0.8.7rc8)
 * (elaps) Null fileroot bug
 * (epix) Error handling functions, send error messages to stderr
 * (laps) Silence on success

September 15, 2002 (v0.8.7rc7)
 * (elaps, epix) Accept all meaningful compiler options (not -o, -b)
 * (epix, output.cc) Reformat output file header (print "by" from epix)

September 14, 2002 (v0.8.7rc6)
 * (elaps) Accept valid epix command line options
 * (elaps, epix) Silence on success
 * (laps) Direct the output with dvips option instead of shell redirection

September 10, 2002 (v0.8.7rc5)
 * (prepix) EPIX_CONFIG_FILE bug ("$HOME" evaluated at compile time)
 * (prepix) -static option added to compile line

September 06--08, 2002 (v0.8.7rc4)
 * (prepix) Compiler flags may be specified in $HOME/.epixrc
 * (samples.sh -> helpfiles.sh) Tutorial installed if sources are present
 * (epix.1) Updates

September 02, 2002 (v0.8.7rc3)
 * (laps, elaps) Printer options added to dvips lines (Walter A. Kehowski)

August 31, 2002
 * Documentation updated (for pyepix, etc.)

August 22, 2002
 * (CHANGELOG) Reformatted

August 18, 2002 (v0.8.7rc2)
 * (prepix) INFILE improperly defined

August 05, 16, 2002 (v0.8.7rc1)
 * (prepix) Additional includes/libs through command line options
 * (globals.h) #define statements replaced by const definitions
 * (all source files, globals.h) Systematic copyright notices added

July 28, 2002 (v0.8.6rc6 -> 0.8.6)
 * (Several source files) Replace "Magic number" with "Hardwired constant"
 * (globals.h) EPIX_ITERATIONS reduced from 1000 to 200
 * (triples.cc) rot(), rotates <viewpt> about a coordinate axis
 * (plots.cc) shadow(), plots projection of space curve to a plane 

July 27, 2002 (v0.8.6rc5)
 * The following accept pair- or triple-valued arguments:
  - (plots.cc) adplot, clipplot, tan_line, envelope, tan_field, arrow, 
    dart, and vector fields, ode_plot, flow_plot
  - (geometry.cc) plot_R and front/back variants
  - (meshplots.cc) wiremesh
 * Step sizes in plot routines computed once, declared const
 * (samples/) Several files updated to use new plot syntax

July 26, 2002 (v0.8.6rc4)
 * (output files) epix_comment(), unified comment function
 * (prepix) Shell script writes name of source file/compile time to output
 * (curves.cc) Diameter of CIRC, RING, DOT, DDOT is %.3f instead of %g

July 25, 2002 (v0.8.6rc3)
 * (pairs.cc) Orientation bug in V()
 * (plots.cc) Unnecessary cases removed from space curve plotting
 * (plots.cc) Parametric plots accept pair- or triple-valued arguments
 * (plots.cc) flow_plot(), draws the image of a plane curve under planar flow

July 24, 2002 (v0.8.6rc2)
 * (output files) Prefix-style names removed from the "core" library
 * (Makefile, files, legacy.cc) Prefixed objects moved to legacy module/target

July 20, 2002 (v0.8.6rc1)
 * (output files) Internal symbols renamed with epix_ or EPIX_ prefix.

July 19, 2002
 * (curves.*, geometry.*) Hyperbolic line routines moved to geometry
 * (output.*) Line styles (solid...) separated from line widths (plain...)
 * (all source files) Path styles made declarations instead of name prefixes

July 18, 2002
 * (plots.cc) Simpson's rule used to calculate integrals
 * (plots.cc, samples/calculus.c) plot_int(), handles non-endpoint lower limit
 * (plots.cc) tan_line(), plots tangent lines to paths
 * (plots.cc) envelope(), plots family of tangent lines to a path
 * (objects.cc) Line() may be specified by a point and slope

July 15, 2002
 * (geometry.cc) (front/back)plot_R(), plot_N/S, curves on the unit sphere
 * (triples.cc) "basis" (orthonormal triple) class and associated routines
 * (all .cc files) Path style controlled by global int

July 13, 2002 (v0.8.5a)
 * (update_figs.sh) Destructive sed failure bug (GNU sed unaffected)

July 10, 2002 (v0.8.5)
 * (meshplots.cc) edge_seek() removed
 * (samples/) Several small changes

July 9, 2002 (v0.8.5rc4)
 * (samples/sample.tex, contour.c) Variable name conflict fixed
 * (objects.cc) label() with alignment had arguments in the wrong order

July 8, 2002 (v0.8.5rc3)
 * (output.cc) raw_print(), truncation bug (changed %.2f to %g)
 * (objects.cc) New label alignment options:
   - label(base, "label text");
   - label(base, offset, "label text", label_posn);

July 5-6, 2002 (v0.8.5rc2)
 * (new file: INSTALL) Installation instructions separated from README.
 * (legacy.h) Obsolete functions removed from main source
 * (output.h) Primary colors (rgb, cmyk), bold, (un)fill macros, take no ()
 * (objects.cc) Lines take optional stretch factor
 * (objects.cc) dashline() stretch factor fixed
 * (contrib/epix_ext.cc) Zero stretch parameter added to draw_line
 * (curves.cc) Splines renamed; old routines defined as macros in legacy.h
 * (plots.cc) Deprecated routines macro-ized; header file cleaned up
 * (update-figs.sh) Updated to this version

June 28-9, 2002 (v0.8.4)
 * (output.cc) start_path(), dashlength/dot separation bug fixed
 * (globals.h) DOT_SEP changed to 40.0
 * (contrib/epix_ext.cc) hatch_polygon() partially fixed; pass vertices as refs
 * (Makefile) Sample files and tarball installed in share/epix
 * (output.cc) New functions:
   - stretch(), changes dashlengths and dot separation
   - pen("width"), changes the width of lines (double or string argument)
   - bold() and end_bold() re-implemented for compatibility
 * (samples.sh) Script to (un)install/test sample files
 * (testfigs) Incorporated into samples.sh and removed

June 27, 2002 (v0.8.4pre)
 * (contrib/epix_ext.cc) Add "#include <float.h>" (removed in version 0.8)
 * (prepix) Wrapper accepts file extensions .c, .C, and .cc

June 25, 2002 (v0.8.3c)
 * (elaps) Converts epix to encapsulated Postscript
 * (pairs.cc, triples.cc) Removed "inline" modifier from P() and polar()

June 24, 2002 (v0.8.3b)
 * (newshell.sh) sh script for users whose bash is not in /bin/bash
 * (README) Install procedure rewritten
 * (Makefile) Install flags fixed, general cleanup and commenting
 * (All shell scripts) Change #! line to call /bin/bash explicitly
 * (pre-install.sh, post-uninst.sh) New auxiliary scripts
 * (prepix) Generates wrapper script at compile time, using Makefile vars

June 16, 2002 (v0.8.3a)
 * (objects.cc) CIRC marker fixed

June 14, 2002 (v0.8.3)
 * (pairs.cc) V(), improperly returned (0,0) when viewpt parallel to z-axis
 * (plots.cc) clipplot() handles space curves; edge_seek() handles triples
 * (meshplots.cc) wiremesh(), wire-mesh plotting (no hidden line removal)
 * (lengths.cc) raw_len(triple), computes Cartesian length of a triple

June 10-11, 2002 (v0.8.2)
 * (contrib/epix_ext.*) S. D. Pedersen's package ported with Makefile target
 * (triples.h, triples.cc) Ordered triple class (* is cross product)

June 9, 2002 (v0.8.1b)
 * Minor errors corrected in sample document
 * (lengths.h) Add "#include <string.h>" to fix compile problem (Michael Somos)
 * (pkg script) Exclude CVS directories from tarball, remove pkg script

May 26-June 6, 2002 (v0.8.1)
Initial freshmeat announcement
 * Complete re-write in C++, with code re-organization
   - <pair>s may be manipulated with +, -, *, /, +=, etc.
   - "plot" replaces plot, paramplot, and plot3d
   - clipplot does parametric plotting
   - True color handling, rgb or cmyk models
   - V0.4 variable definition syntax (e.g., x_min=0;) unsupported

March 28, 2002 (v0.6.11)
 * (epix.c) Net(), create pair-of-integers data structure
 * (functions.c) proj1(x,y) = x, proj2(x,y) = y.
 * (plots.c) multiplot1(), multiplot2(), plot families of curves

March 20-22, 2002 (v0.6.10)
 * (arcana.c) transf(), draw image of a point under a linear transf of R^2
 * (arcana.c) reflect(), reflects a point about a line through (0,0)
 * (plots.c) draw_vector_field(), zero vector bug fixed

March 9, 2002 (v0.6.9)
 * (epix.c, epix.h) version string moved to header file
 * (plots.c) clipparamplot(), clipped parametric plotting

March 5, 2002 (v0.6.8)
 * (arcana.c) plot_profile(), while loop bug fixed
 * (arcana.c) std_F(), draw image of "standard F" under a linear transf
 * (meshplot.c) Rudimentary mesh plotting, poor-quality hidden line removal
 * (contrib) Svend Daugaard Pedersen's region-hatching package added

January 4, 2002 (v0.6.7)
 * (epix) Temporary binary created by shell script has unique name

December 3, 2001 (v0.6.7rc1)
 * (plots.c) data_plot() supports several LaTeX markers (+, x, o, <>, ^, v /)
 * (plots.c) Slope/dart field length bug fixed

November 16, 22-25, 2001 (v0.6.6)
 * (curves.c) disk_line(), hyperbolic lines in the Poincare disk
 * (epix.c, plots.c) plot3d(), space curve plotting and auxiliary routines
 * (All source/header files) printf statements replaced with fprintf(stdout)

August 16, 22, 2001 (v0.6.5: First public release)
 * (epix.c) bounding_box(), picture(), unitlength(), for defining variables
 * x_size, y_size declared extern double, set by begin()
 * pic_unit no longer of type "const"
 * (bold)swatch(), mask(), circ(), ring()
 * (lengths.c) x_size(), y_size() obsolete
 * (plots.c) BOX (4pt square), BBOX (2pt square) markers for data plots, 
     CIRC marker renamed RING
 * (arcana.c, curves.c, epix.c, plots.c) %.2f -> %g, truncated

August 11, 2001 (v0.6.4)
 * (functions.c) sup(), inf(), for functions on [a,b]
 * (epix.c) dart(), arrows with half-size heads
 * (plots.c) dart_field(), slope_field with dart heads
 * (epix.c) draw_arrowhead(), draw_shaft() take "width" parameter
 * (plots.c) slope field segments drawn from tail to head

August 9, 2001 (v0.6.3)
 * (epix.c, epix.h) Dashed, dotted paths handled uniformly
 * (lengths.c) h_scale(), v_scale() round small output to 0 (fix "e-" bug)
 * (testfigs.sh) Compile line searches parent directory for epix.h

August 6, 2001 (v0.6.2)
 * (testfigs.sh) "make test" target added
 * (epix.c, plots.c) line(), slope_field() segments have two points (not three)
 * (curves.c, plots.c) sqrt(a*a+b*b) replaced with GNU C function "hypot"

August 3, 2001 (v0.6.1)
 * (plots.c) slope_field(), segment length bug fixed
 * (plots.c) clipplot(), line break bug (introduced in 0.6) fixed
 * (plots.c)adplot(), rudimentary adaptive plotting
 * (lengths.c) Length scaling: scale() for points, stretch() for vectors
 * (epix.c) line_break() commented and slightly simplified

July 29-31, 2001 (v0.6: Nearly usable)
 * Output routines uniformized: 
 * Path style handling cleaned up: "draw_" functions introduced
 * New features:
   - Hyperbolic lines (upper half-plane)
   - Circular arrows
   - Dashed and dotted arrows and grids
   - Planar knot diagram primitives
   - Integer absolute value, gcd functions
   - Color primaries ("rgb" and "cmy")
   - Vector fields, slope fields, solutions of planar ODEs
   - Data plotting from file
   - More informative output header (version, figure size/offset)
   - Output size checking

July 21, 2001 (v0.4.3)
 * Angle limits bug fixed in dot-, dash-, boldarc()
 * Formatting bug in clipplot()

July 17, 2001 (v0.4.2)
 * circ(), spot() take <pair> input
 * dot primitive (filled spot 2 true pt in diameter) added
 * DOT_SEP changed from 16 to 40.0 to improve dotted plots
 * scale(), unscale() handle "pc" (picas)

June 23-27, 2001 (v0.4: The Cambrian period)
 * Documentation updated
 * (New file: functions.c)
 * Tangent fields
 * Source code split into pieces
 * Makefile rewritten, objects written into binary archive
 * Installation cleaned up; facilitate public installation
 * Arrows and vectors
 * fill(), Filled paths
 * native_ellipse(), arc() added
 * Capability for handling true unitlengths:
 * Preamble must contain definitions of pic_size and pic_unit
 * begin() is a function of void
 * label() offsets in true pts rather than Cartesian coords
 * Improved axis label spacing, labels generated from basepoint coordinates
 * Circles and spots; Cartesian coordinate grid
 * General cleanup: symbolic constants introduced, coordinates are %g, not %.2f

May 26, 2001 (v0.2: The pre-Cambrian period)
 * Floats changed to doubles
