Instead of code blocks the bug / (mis)features statuses are quoted rather than in a code block. In the case that there is more than one a line break was added at the end of all but the last one. A bug status was renamed to be slightly more correct (maybe more than one was renamed for the same purpose but at least one was). The bug statuses in the quotes are now bold to let them stand out better.
4.0 KiB
To build:
make
If you wish to change the size (see the Author's remarks
below) you can do so with the SIZE variable. For instance you can do:
make clobber SIZE=50,50 all
but you can also do this directly with the endoh4.sh script as described below.
Bugs and (Mis)features:
The current status of this entry is:
STATUS: INABIAF - please DO NOT fix
For more detailed information see 2013/endoh4 in bugs.html.
To use:
./endoh4 < file
./endoh4.sh file
The second form is preferable as it will temporarily make the cursor invisible
as recommended by the author. If no file is specified in the ./endoh4.sh command
line it will feed to the program endoh4.c.
Try:
./endoh4.sh cube.txt
Hit ctrl-c to end the program.
The author recommends the use of xterm.
For an example, if you are a football/soccer fan, try:
./endoh4.sh solids/archimedian-solid/a11-truncated-icosahedron.txt
You can provide more than one file:
./endoh4.sh solids/archimedian-solid/a11-truncated-icosahedron.txt cube.txt
Hit ctrl-c/intr to go to the next file.
If you wish to change the size to 50,50 without passing any arg:
SIZE=50,50 ./endoh4.sh
Not specifying a file feeds endoh4.c to the program.
Judges' remarks:
This program is formatted as the net for a tetrahedron (hint: try feeding the
program it's own source code like ./endoh4.sh). When it runs there is an
animation for the computation to work out the convex hull.
Author's remarks:
Spec
This is a convex polyhedron viewer, which:
- reads three-dimensional vertices (3N float values) from
stdin, - calculates a convex hull of them, and
- renders it.
This simple spec involves many details.
- 3D convex hull calculation
- recursive gift wrapping algorithm
- automatic merging of (almost) co-planar faces (i.e., faces are not triangulated)
- random perturbation for robustness
- 3D rendering
- perspective projection
- ASCII line drawing:
"',;;;,;'" - camera in a spherical spiral orbit
(Note that this program does not use math.h.)
Portability
I think it conforms with both C89 and C99. I confirmed that it worked on gcc,
clang, and tcc. It should not trigger warnings with -pedantic and -Wextra.
Tips
You may want to use tput to hide the terminal cursor.
tput civis
./endoh4 < cube.txt
tput cnorm
or
./endoh4.sh cube.txt
Bonuses
You can change the screen size. Let the aspect ratio be about 3:1.
cc -DS=120,40 -o endoh4 endoh4.c
The shape of this code is the geometric net of a regular tetrahedron. So, try:
./endoh4 < endoh4.c # or ./endoh4.sh
The solids directory includes various solid data:
I created the files by using the POV-Ray scripts (1 and 2 in Wikipedia. They are copyrighted in CC BY-SA 3.0 by "User:Cyp" and "User:AndrewKepert".