We add an initial "_title_" and "_abstract_" to all entry `.entry.json` files. The `bin/csv2entry.sh` tool reads the `summary.csv` file and loads the "_title_" and "_abstract_" to entry `.entry.json` files. Changed `bin/csv2entry.sh` VERSION from "1.3 2024-09-23" to "1.4 2024-09-27". Perform `make csv2entry` to perform the above and test under macOS. The `bin/cvt-submission.sh` tool adds "_title_" and "_abstract_" to the .entry.json based on the `.info.json` file. Changed `bin/cvt-submission.sh` VERSION from "1.2 2024-09-23" to "1.3 2024-09-27". The `bin/entry2csv.sh` tool forms the `summary.csv` file based on the "_title_" and "_abstract_" fields found in .entry.json files. Changed `bin/entry2csv.sh` VERSION from "1.3 2024-09-23" to "1.4 2024-09-27". Perform `make entry2csv` to perform the above and test under macOS. Added `-H` and `header=with-header-3` to the `bin/md2html.cfg` for the configuration entry for `[12][0-9][0-9][0-9]/*/README.md`. Changed `bin/md2html.sh` VERSION from "1.6 2024-08-17" to "1.7 2024-09-27". All entry `index.html` files now list the "_abstract_" in a new `<h3>abstract</h3>` header. Changed `bin/subst.entry-index.sh` VERSION from "1.6 2024-09-23" to "1.7 2024-09-27". Removed `summary.csv`. Added `summary.csv` and `summary.numbers` to `.gitignore`. Sorted the result with `bin/sgi.sh`. Perform `make quick_www` to perform the above and test under macOS. Perform `make www` to perform the above and test under macOS.
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".