I installed the current version of 3DLDF in CTAN:graphics/3DLDF/ These are the Release Notes:
----- Forwarded message from Laurence Finston lfinsto1@gwdg.de -----
Release of 3DLDF 1.1.5.
3DLDF is a GNU package for three-dimensional drawing with MetaPost output.
It is available from http://ftp.gnu.org/gnu/3dldf and other ftp servers. Please see the author's website,
http://wwwuser.gwdg.de/~lfinsto1
and
http://www.gnu.org/directory/graphics/3D/3DLDF.html
for more information.
In release 1.1.5, I've tied up some loose ends. I wanted to do this before starting on the input routine.
* Added `const real step' argument to the version of Ellipse::intersection_points() that takes an Ellipse argument.
* BUG FIX: Added `touch 3DLDFmp.mp' to the `3DLDFmp.mp' target in 3DLDF-1.1.5/CWEB/Makefile.am. This ensures that TeX and dvips will be run if MetaPost is run on `3DLDFmp.mp'. This happens if `3DLDFput.mp' is newer than `3DLDFmp.mp', but the latter isn't changed, so TeX and dvips weren't being run. I'm surprized nobody's complained about this. Not yet documented in the _3DLDF User and Reference Manual_.
* Added `PHONY' targets as synonyms for certain targets: `cpl' for `3dldf'. For compiling and linking `3dldf'. `mp' for `3DLDFmp.mp'. For running MetaPost on `3DLDFmp.mp'. `ldf' for `3DLDFput.mp'. For running `3dldf'. Not yet documented in the _3DLDF User and Reference Manual_.
* It is now possible to ``typedef'' `real' to either `float' or `double'. This means that `real' can now be made a synonym for either `float' or `double' by using a `typedef' declaration. `real' is typedeffed to `float' by default.
* Added `const TINYINT(1) ldf_real_float' and `extern const TINYINT(1) ldf_real_double' for use in non-conditionally compiled code. They are set according to the values of `LDF_REAL_FLOAT' and `LDF_REAL_DOUBLE'.
* `Transform::epsilon()' and `Point::epsilon()' now return different values, depending on the values of the preprocessor macros `LDF_REAL_FLOAT' and `LDF_REAL_DOUBLE'. I have not yet tested whether good values are returned when `real' is `double'.
* `MAX_REAL' and `MAX_REAL_SQRT' are no longer constants. Their values are set at the beginning of `main()'. However, users should not change their values. `MAX_REAL' is the second-largest `float' or `double' on a given machine. This now works for all common architectures.
* Added `namespace System' containing the following functions: `get_endianness()', `is_big_endian()', `is_little_endian()', `get_register_width()', `is_32_bit()', `is_64_bit()', and the template function `get_second_largest()'.
`namespace System' and its functions are documented in `system.texi', which is new in edition 1.1.5 of the _3DLDF User and Reference Manual_.
* Replaced the various `create_new_<type>()' functions with the template function `create_new()'. The latter is documented in `creatnew.texi', which is new in edition 1.1.5 of the _3DLDF User and Reference Manual_.
* Added the file `3DLDF-1.1.5/CWEB/cnepspng.el' to the distribution. It contains the definitions of the Emacs-Lisp functions `convert-eps' and `convert-eps-loop'.
* Added the files 3DLDF-1.1.5/CWEB/exampman.web and 3DLDF-1.1.5/CWEB/examples.mp to the distribution. They contain the C++ and MetaPost code, respectively, for generating the illustrations in the _3DLDF User and Reference Manual_.
----- End forwarded message -----
Reinhard Zierke for the CTAN team