Contents The SVL vector & matrix package, version 1.5. SVL provides 2-, 3- and 4-vector and matrix types, as well as arbitrarily-sized vectors and matrices, and various useful functions and arithmetic operators. SVL is free for commercial and non-commercial use; see the LICENSE file for redistribution conditions. (These apply only to the source code. Binaries may be freely redistributed, no strings attached.) Author Andrew Willmott, ajw+svl@cs.cmu.edu Please send me any suggestions/comments/bug fixes you have. History Briefly: SVL, and its more complex cousin, VL, have their roots in an attempt replace the various (inevitably heavily-macroized) vector/matrix packages used by the members of the CMU graphics group with a single C++ one, so that people could share code more easily. SVL makes heavy use of inlines to achieve performance equal to that of the C macros and functions it replaced. To Make Running 'make' with no arguments will list possible architectures to compile for. The makefiles should work with most makes that have the include directive, but try using gmake if something goes wrong. If your architecture is not listed, copy and then modify the config file in the makefiles directory that's closest to what you need. To install, set the DEST variable appropriately and 'make install'. DEST defaults to /usr/local. E.g., to install into /usr on a linux machine: make DEST=/usr linux install from this directory. To Use #include svl/SVL.h, and link with -lsvl. To use in debug mode, add the switch "-DVL_DEBUG" to your compile line, and link with -lsvl.dbg. See the documentation for more information. Documentation Run your favourite web browser with file:doc/svl.html Changes 1.4 Fixed problem with SVLgl.h -- had some wrappers for OpenGL calls that don't actually exist(!) Fixed bad memory problem with Mat::SetSize Makefile for OSX, split sunos/solaris 1.3.2 Fixed minor MSVC warnings Added windows packaging 1.3.1 Sunday 11/03/01 Reordered initializers, eliminated signed/unsigned comparisons Fixed make clean problem Irix CC is warning that 'Mat2::*' is being called before its inline definition, but appears to be on crack as the inline '*' is defined before the xform() that calls it. Fixed afs-lib dependency for afs build 1.3 Sunday 11/03/01 Split off from VL 1.3. All VL-dependent code and type parameterization macros removed to make code more understandable. Fix for the C++ "standard" no longer allowing stack temporaries to be passes as non-const refs. (Fixing this for VL requires more significant changes, so it's proved easier to fork SVL at this point for the sake of simplicity.) Renamed files, general cleanups. Added ">>" operators for Vec and Mat. Disallowed resize of a vector reference. (This caused more bugs than it was worth.) Removed all asserts checking that the return value of 'new' is not zero. The C++ "standard" has been changed so that new instead throws an exception in this situation. Added option to use memcpy for general vector copies: VL_USE_MEMCPY. It seems that nowadays, on Intel processors at least, using memcpy is faster than loops for most cases. See note in Vec.cc. Changed the packaging to match the current vl/gcl scheme. Updated afs-setup rule to ensure SVLConfig.h winds up in the architecture-dependent lib directory. 1.2 Release to match VL 1.2. 1.1.3 Fixed some windows compile issues under VC++. 1.1.2 Added comments about the Real, Vec, etc. types to VL.h 1.1.1 Fixed problem with += operators and gcc under linux. 1.1 Added oprod operator, irix n32 CC support, changed makefiles & afs support, eliminated most g++ warnings.