The GNU 3DLDF Website

Author: Laurence D. Finston

This copyright notice applies to the text and source code of this web site, and the graphics that appear on it. The software described in this text has its own copyright notice and license, which can be found in the distribution itself.

Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024 The Free Software Foundation, Inc.

Permission is granted to copy, distribute, and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation, Inc.; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of this license is included in the file COPYING.TXT

Last updated: August 14, 2023.

[Dodecahedron Logo]


Table of Contents

Top
Introduction
Late Breaking News
Old News
The 3DLDF Language
Sources
Documentation
Technical Drawing
Glyphs
Models
Polyhedron Models
Sphere and Dome Models
Ellipsoid Models
Architectural Models
Alhambra
Celestial Sphere Models
Geometric Patterns
Stellation Patterns
Papercut Patterns
Conic Sections
Ellipses
Circles
Parabolæ
Hyperbolæ
Superellipses
Sinewaves
Curve-Drawing Machine Simulation
Polyhedra
Cuboids
Great Rhombicosidodecahedron
Rhombic Triacontahedron
Polyhedron Models
Quadric Surfaces
Cones
Ellipsoids
Spheres
Sphere and Dome Models
Wave Forms
Prime Numbers
Colors
Database
Astronomy
Origami and Paper-Folding
Sundials
Display Fonts
Board Games
Music
Converting EPS Files
Converting TeX Text to Images
Graph Paper (Plain and Perspective)
Chord Charts (Music)
Templates
Video
Animation
Flipbooks
Manga Patterns (Screen Tone)
Code Samples and Images
Mailing lists
Links
Contact

Back to top

Introduction

GNU 3DLDF is a software package for three-dimensional drawing with MetaPost and METAFONT output. The program 3dldf implements an interactive language similar to the METAFONT and MetaPost languages.

GNU 3DLDF 2.0.3 can be downloaded from ftp://ftp.gwdg.de/pub/gnu/3dldf/
Alternatively, http://ftpmirror.gnu.org/3dldf/ will automatically redirect to a nearby mirror.

The source code, including developments since the latest release, is also available from the Git repository for project at Savannah:
git clone git://git.savannah.gnu.org/3dldf.git


Back to contents
Back to top

Late Breaking News

2023.08.14.
Started working on Sinewaves.

2023.07.11.
Added a new set of 3DLDF, TeX and PDF files for Alhambra.

2023.04.23.
I've added a Video webpage.

2023.04.09.
I've added a Glyphs webpage.

2022.12.15.
The TUGboat issue 43:3 has been published. It contains two articles by myself: An introduction to GNU 3DLDF and A graphical ellipse envelope construction with GNU 3DLDF, which I am making available here. See also Documentation.

2022.12.14.
Added PDF files and 3DLDF and TeX code for Chord Chart Templates on the Graph Paper page.

2022.08.17.
I've written an Introduction to GNU 3DLDF. This article is due to appear in TUGboat, The Communications of the TeX Users Group, Vol. 43, No. 3, toward the end of 2022. However, I'm making it available here in advance. See also Documentation.

2022.03.09.
I've added a Technical Drawing webpage. It contains the section Tools for Technical Drawing with plans for "center finders" for circles between 10 and 29cm in increments of .25mm.

2022.03.08.
I now have a personal website.

I also now have an online shop where I plan to offer artwork for sale, e.g., prints and plaster and papier-máchê casts and plaster molds.

A lot of the material on these websites will be related to GNU 3DLDF, TeX, METAFONT, MetaPost, etc., including source files and graphics for which I wish to retain the copyright rather than assigning it the Free Software Foundation, Inc. In addition, I can include more graphics on these websites, whereas the guidelines for GNU Project websites encourage limiting the number of graphics.

2022.03.01.
Added a section Alhambra on the Architectural Models page of this website.

2021.04.05
After a long hiatus, the author has begun working on GNU 3DLDF again. The most important task is to update the manual so that it documents the interactive use of the package.

The complete current sources can be obtained from the Git repository for the 3DLDF project on the GNU Project's software development site Savannah.
The git repository can be cloned using the following shell command: git clone git://git.savannah.gnu.org/3dldf.git


Back to contents
Back to top

Old News

This news not old enough for you? Then try some Even Older News.


Back to contents
Back to top

Sources

The complete current sources can be obtained from the Git repository for the 3DLDF project on the GNU Project's software development site Savannah.
The git repository can be cloned using the following shell command: git clone git://git.savannah.gnu.org/3dldf.git


Back to contents
Back to top

Documentation

2022.12.15.
NEW! The following articles have appeared in TUGboat issue 43:3:
An introduction to GNU 3DLDF
A graphical ellipse envelope construction with GNU 3DLDF

2006.01.25.
The most recent version of the GNU 3DLDF manual (see below) documents Release 1.1.5.1. I need to rewrite it completely in order to account for the many changes I've made in my development versions. I have been documenting the latter on these web pages. The old manual may still be of use to people who want to know how 3DLDF is implemented, but it is quite out-of-date by now.

2005-01-22.
I've abandoned work on the GNU 3DLDF 1.2.0 Manual --- Plain Text Version (Last updated 2005-01-31). I now plan to convert it to Texinfo. Until I do, however, it may still be useful to people who want to learn how to use 3DLDF 1.2.0.

The downloadable versions of 3DLDF: The Program, and the versions in the distribution have the table of contents at the front. This is not the case, if you generate them yourself. In order to do this, I used dviselect and dviconcat. I have not yet written make rules to do have this done automatically.

User and Reference Manual

The 3DLDF User and Reference Manual, Edition 1.1.5.1, as an HTML document suitable for browsing, with one webpage per node.

The 3DLDF User and Reference Manual , Edition 1.1.5.1, as an HTML document suitable for browsing, entirely on one webpage.

The 3DLDF User and Reference Manual , Edition 1.1.5.1 in HTML format, with one webpage per node, as a compressed archive file (gzipped tar file) for downloading.

The 3DLDF User and Reference Manual , Edition 1.1.5.1 in HTML format, entirely on one webpage, as a compressed (gzipped) file for downloading.

The 3DLDF User and Reference Manual , Edition 1.1.5.1, as a compressed (gzipped) PostScript file for downloading.

The 3DLDF User and Reference Manual , Edition 1.1.5.1, as a PDF (Portable Document Format) file for viewing on-line (if your browser has an appropriate plug-in).

The 3DLDF User and Reference Manual , Edition 1.1.5.1, as a compressed (gzipped) PDF (Portable Document Format) file for downloading.

The Program

3DLDF: The Program for version 1.1.5.1 as a PDF file for viewing on-line (if your browser has an appropriate plug-in).

3DLDF: The Program for version 1.1.5.1 as a compressed (gzipped) PDF file for downloading.

3DLDF: The Program for version 1.1.5.1 as a compressed (gzipped) PostScript file for downloading.

3DLDF: The Program for version 1.1.5.1 as a compressed (gzipped) DVI file for downloading.


Back to contents
Back to top

Converting EPS Files

2005-09-02
The utility conveps is included in the GNU 3DLDF distribution. It is for converting the Encapsulated PostScript files generated by MetaPost to other formats.

When the EPS files generated by MetaPost don't contain any TeX text, there's no problem converting them to other formats, so there's no need for a special utility. However, when they do, programs that convert one graphics file format to another can't handle them.

conveps solves this problem by including the EPS files in TeX files, and running TeX, dvips, mogrify, and convert. The structured PostScript (PS) files produced by dvips namely can be converted to other formats.

The source code is available here: conveps.web conveps has quite a few options for manipulating the images in various ways. The cweaved output of conveps.web contains instructions on how to use it. The versions of this as of this date (2005.12.16) are contained in the following files:

conveps.pdf — PDF file.
conveps.ps.gz — Compressed (gzipped) PostScript file.
conveps.dvi.gz — Compressed (gzipped) DVI file.


Back to contents
Back to top

Converting TeX Text to Images

It's sometimes useful to convert TeX text into other formats, so that it can be displayed in a browser or combined with images created in some other way. ImageMagick's convert program can be used to convert the PostScript files generated from TeX text to other formats.

The file box_math.txt contains TeX code for making examples of this. (It's called box_math.txt so browsers will display it as an ASCII, i.e., plain text, file without complaining.) The version of this file included in the 3DLDF distribution may be found here: box_math.tex. The latter file may be more recent than the version on this web page.

There are two basic ways of formatting text using the code in box_math.txt. The first way formats running text using a specified \hsize. In this case, TeX chooses the line breaks. The second way is for the user to specify the line breaks. In this case, the macro \boximage in box_math.txt chooses an \hsize large enough for the longest line.

In the following examples, the frames aren't part of the images. I've added them to show the size of the images.

This is an example of running text with \hsize == 15cm:

[Box math example 1]

This is an example of text with explicit line breaks:

[Box math example 2]

It would be very tedious to type in the code for explicit line breaking for more than a couple of examples. Instead, the code in box_math.txt is intended to be used by a utility that generates images from TeX code and a few arguments for setting options.

How it Works

The macro \boximage puts the text into a \vbox and surrounds it with a red frame made up of \vrules. The top, bottom, left, and right margins between the frame and the block of text can be set by the user. After running tex and dvips, a PNG file (b.png) is created from the resulting PostScript file (b.ps) by the command convert -crop 0x0 +antialias -fill white -opaque "rgb(255,0,0)" b.ps b.png. The -crop 0x0 option removes the parts of the image that lie outside the frame. The -fill and -opaque options together change the color of the red frame to white. The +antialias option disables use of anti-aliasing, so that the color of pixels in the image are left unchanged. Without this option, the -fill and -opaque wouldn't be able to remove the red frame cleanly, because some of the red pixels would have been changed. If a frame is desired, the -fill and -opaque options can be omitted. The first argument to \boximage makes it possible to specify a different color for the frame, if the image contains red text. The color used for the frame shouldn't appear in the image.

Problems

One problem with converting PostScript files created using TeX to images is the poor resolution and hence the poor appearance of such images when displayed in a browser. The relationship between image size and resolution is tricky. The fonts used for TeX are mostly available in small sizes for use on devices with relatively high resolution. Plain magnification doesn't produce good results, because single pixels are merely replaced by groups of pixels. I still have a lot to learn about the issues involved.

Another problem is that the images are not scalable in browsers. Increasing the display size of the text on a web page has no effect on the included images. It might be possible to have a set of images that are identical except for the font size and use JavaScript or PHP to choose the right one based on the magnification used for the web page. However, this would only work if JavaScript or PHP was enabled, and it might not be desirable to require this.


Back to contents
Back to top

Mailing lists

2005-05-02. I've replaced @ with -*-AT-*- in all of the email addresses on these webpages, and removed all clickable references to email addresses. I've been forced to this step by the huge amounts of spam I receive.

2005-05-21.
I have reactivated the help-3dldf-*-AT-*-gnu.org mailing list, but only for subscribers. Postings from non-subscribers are automatically discarded. I have deactivated the other GNU 3DLDF mailing lists. I have been forced to take this step by the huge amounts of spam posted to these lists. For the same reason, I've also replaced @ with -*-AT-*- in all of the email addresses on these webpages, and removed all clickable references to email addresses. If would prefer that all queries and comments be addressed to help-3dldf-*-AT-*-gnu.org, but if you don't wish to subscribe, you may contact me directly.

2005-05-21. The following mailing list is now available:
(Replace -*-AT-*- with @ for the email address.)
help-3dldf-*-AT-*-gnu.org for users to ask one another for help.

To subscribe, visit http://lists.gnu.org/mailman/listinfo/help-3dldf.
Alternatively, you can send an email with subscribe <email address> as the subject or the body to
help-3dldf-request-*-AT-*-gnu.org.


Back to contents
Back to top

Links

Marc van Dongen's MetaPost Pages.
L. Nobre G.'s MetaPost Pages.
Anthony Phan's Web Pages (m3D).


Back to contents
Back to top

Contact

If you want to contact me about 3DLDF, please put 3DLDF, 3dldf or something similar in the subject line of your email. Otherwise, it's likely to be filtered.

Laurence Finston

email: Laurence.Finston-*-AT-*-gmx.de
(Replace -*-AT-*- with @ for the email address.)


Back to contents
Back to top