59 rational tetrahedra

106 views
Skip to first unread message

Roger Kaufman

unread,
Feb 2, 2021, 2:22:34 PM2/2/21
to antiprism
Hi Adrian,

A recent paper was published proving that there are only 59 tetrahedra
with six rational dihedral angles. The paper gives a list of the 59
forumulas plus 2 infinite formulas.

https://www.quantamagazine.org/mathematicians-finally-prove-rational-tetrahedron-solutions-20210202/

https://arxiv.org/abs/2011.14232

Code source given for the paper which I looked at but the code is very
weird.

https://github.com/kedlaya/tetrahedra/

From the paper, the two infinite formula variety are these

(π/2, π/2, π − 2x, π/3, x, x) for π/6 < x < π/2
(5π/6 − x, π/6 + x, 2π/3 − x, 2π/3 − x, x, x) for π/6 < x ≤ π/3

Currently there is no available application to generate them, and I see
no example code on the web to generate a tetrahedron given only the
dihedral angles.

If there is a way to transform the regular tetrahedron with the 6
dihedral angles, we could furnish the program.

Roger

Roger Kaufman

unread,
Feb 2, 2021, 7:20:14 PM2/2/21
to anti...@googlegroups.com
Hi Adrian,

On 2/2/2021 2:22 PM, Roger Kaufman wrote:
> If there is a way to transform the regular tetrahedron with the 6
> dihedral angles, we could furnish the program.

This question was asked in a forum a few days ago. Others are attempting
the same project.

https://math.stackexchange.com/questions/3993429/given-dihedral-angles-find-a-set-of-edges

Roger

Roger Kaufman

unread,
Feb 3, 2021, 11:03:05 PM2/3/21
to anti...@googlegroups.com


On 2/2/2021 7:20 PM, Roger Kaufman wrote:
> This question was asked in a forum a few days ago. Others are
> attempting the same project.

That same gentleman published a page on wolfram. The graph at the bottom
is live.

https://community.wolfram.com/groups/-/m/t/2169279?source=frontpage-latest-news

I tried what he did as a transform on the tetrahedron but for me it
makes a pyramid. This isn't good if the values they give in their table
aren't in the right order like he found, but maybe the re-order of the 6
factors will be the same for all the entries in the table.

Roger


Trans3d tetra_matrix(double m, double a, double b, double c, double d,
double e, double f)
{
  Trans3d trans_m;

  trans_m[0] = -1;
  trans_m[1] = cos(a*m*M_PI);
  trans_m[2] = cos(b*m*M_PI);
  trans_m[3] = cos(c*m*M_PI);

  trans_m[4] = cos(a*m*M_PI);
  trans_m[5] = -1;
  trans_m[6] = cos(d*m*M_PI);
  trans_m[7] = cos(e*m*M_PI);

  trans_m[8] = cos(b*m*M_PI);
  trans_m[9] = cos(d*m*M_PI);
  trans_m[10] = -1;
  trans_m[11] = cos(f*m*M_PI);

  trans_m[12] = cos(c*m*M_PI);
  trans_m[13] = cos(e*m*M_PI);
  trans_m[14] = cos(f*m*M_PI);
  trans_m[15] = -1;

  return trans_m;
}

int main(int argc, char *argv[])
{
  Geometry tet;
  tet.read_resource("std_tet");
  tet.transform(tetra_matrix(21,3,7,12,12,7,9));
  tet.write();
  exit(0);
}
tet.off

Adrian Rossiter

unread,
Feb 5, 2021, 2:06:59 AM2/5/21
to anti...@googlegroups.com
Hi Roger

On Wed, 3 Feb 2021, Roger Kaufman wrote:
> On 2/2/2021 7:20 PM, Roger Kaufman wrote:
>> This question was asked in a forum a few days ago. Others are attempting
>> the same project.
>
> That same gentleman published a page on wolfram. The graph at the bottom is
> live.
>
> https://community.wolfram.com/groups/-/m/t/2169279?source=frontpage-latest-news

I haven't looked too closely, but it looks like an iterative solution:

"Then I used TetrahedronEdgeAngles on two set points and two random points,
their distances, millions of random points, and annealing to boil things
down to exact values."

Going back to the (interesting) Stack Exchange solution

https://math.stackexchange.com/questions/3993429/given-dihedral-angles-find-a-set-of-edges

The tetrahedon being solved has axial symmetry though opposite
edges, so each face angle is repeated. It is probably worth
looking at how the approach works out when the tetrahedron
has no symmetry.

Anyway, it gives a formula for the face angles at a vertex in
terms of the dihedral angles at a vertex. You can therefore
use this to solve for the (vector) lines at a vertex, and have
one line on the x-axis and one on the xy-plane (maybe you can
use Trans3d angles_between_axes() for this). Do this for a
second vertex, choosing the angles so that you can then mirror
the lines through (1, 0 , 0) with normal (1, 0, 0) such that the
x-axis lines will correspond, and the two xy-plane lines are
expected to meet. Find this intersection and you have three
points of the tetrahedron, the two general lines should then
also intersect to give the fourth point.

It seems like it should work...

Adrian.
--
Adrian Rossiter
adr...@antiprism.com
http://antiprism.com/adrian

Roger Kaufman

unread,
Feb 6, 2021, 9:43:13 PM2/6/21
to anti...@googlegroups.com
Hi Adrian,

On 2/5/2021 2:06 AM, Adrian Rossiter wrote:
> Going back to the (interesting) Stack Exchange solution
>
> https://math.stackexchange.com/questions/3993429/given-dihedral-angles-find-a-set-of-edges
>
>
> The tetrahedon being solved has axial symmetry though opposite
> edges, so each face angle is repeated. It is probably worth
> looking at how the approach works out when the tetrahedron
> has no symmetry.

It was a good suggestion to go back to look at this method. I found a
way to do it that could use simple rotations. The dihedral angles are
given in such a way that implies vertex and edge numbers so the order is
unimportant and can remain as is. After the face angles (more on this
below) and edge lengths are calculated, construction can begin.

The first edge is length 1 and goes from 0,0,0 to 0,1,0.  The third
vertex is plotted on the x,y plane at len,0,0 and the rotated on x,y by
face angle. The fourth vertex is also plotted on the x,y plane at
len,0,0, rotated on x,y by face angle, and additionally rotated on y by
dihedral angle. The faces are then added and the tetrahedron is complete.

I pushed the beta program, but it can only construct about half of the
tetrahedra. The coloring options aren't implemented, and the faces are
currently color coded. To construct the model that was given on the
example page

tetra59 12 -v | antiview -v 0.02

The tetrahedra it produces are interesting in that they can be bricked
into an eventual dipyramid of sorts (if its chiral pair were also used).
In the final program it might be better to construct it starting the
first edge from 0,0,0 to 0,0,1 so it could be mirrored N fold as an option.

The two formulaic forms work at all angles in their ranges, and I found
that their new case (2) seems to work from 60 to 90 degrees even though
they say it stops at 60. I've yet to see why this is so, so I added -w
to by pass the angle constraint so I might see why (perhaps they are
repeats)

The not so good new is, the formula for finding a face cosine from the
dihedral cosines isn't stable and will about half the time find a cosine
greater than 1. I have to program set to error out if that happens or it
will plot all the points on the Y axis.

An example will be

tetra59 57 -v | antiview -v 0.02
...

face_angle_a = (cos(a) + cos(b) * cos(c)) / (sin(b) * sin(c));

ERROR: face_cos_a: greater than 1: 1.29179606750063103
info: input (radians): a = 1.0472 b = 0.942478 c = 0.942478
info: input (degrees): a = 60 b = 54 c = 54
info: cos(a) = 0.5 cos(b) = 0.587785 cos(c) = 0.587785
info: numerator: cos(a) + cos(b)*cos(c) = 0.845492
info: sin(b) = 0.809017 sin(c) = 0.809017
info: denominator: sin(b)*sin(c) = 0.654508

The source given for the dihedral formula is here and the mathematician
inverted the formula, but there must be something about doing that which
can't be reversed perfectly. The numerator can be a larger value than
the denominator. Unless there is a way to fix it, or find another way to
determine the face angle, I will have to withdraw the program or keep it
in beta state. However, if it can be fixed, the program may work nicely.

https://web.archive.org/web/20151125044900/http://www.had2know.com/academics/dihedral-angle-calculator-polyhedron.html

Roger

Roger Kaufman

unread,
Feb 8, 2021, 12:59:25 PM2/8/21
to anti...@googlegroups.com
Hi Adrian,

On 2/6/2021 9:43 PM, Roger Kaufman wrote:
> The not so good new is, the formula for finding a face cosine from the
> dihedral cosines isn't stable and will about half the time find a
> cosine greater than 1. I have to program set to error out if that
> happens or it will plot all the points on the Y axis.

Uh oh. After a brief look, it appears there may be a problem with their
data. Take the first row. Attempting to get the angle for the first face
gives

dihedral angles at:
edge a12 =  3pi/12 = 0.78539816339744828 (45.00000000000000000 deg)
edge a34 =  4pi/12 = 1.04719755119659763 (59.99999999999999289 deg)
edge a13 =  3pi/12 = 0.78539816339744828 (45.00000000000000000 deg)
edge a24 =  4pi/12 = 1.04719755119659763 (59.99999999999999289 deg)
edge a14 =  6pi/12 = 1.57079632679489656 (90.00000000000000000 deg)
edge a23 =  8pi/12 = 2.09439510239319526 (119.99999999999998579 deg)

ERROR: face_cos_a: greater than 1: 1.00000000000000067
info: input (radians): a = 1.5708 b = 0.785398 c = 0.785398
info: input (degrees): a = 90 b = 45 c = 45
info: cos(a) = 6.12323e-17 cos(b) = 0.707107 cos(c) = 0.707107
info: numerator: cos(a) + cos(b)*cos(c) = 0.5
info: sin(b) = 0.707107 sin(c) = 0.707107
info: denominator: sin(b)*sin(c) = 0.5

However, if I reverse terms 3 and 4, I get a valid tetrahedron with the
6 dihedral angles listed. Some of faces angles listed for faces C and D
are still not correct, but those face angles are not used in construction.

I've also noticed for some of them that they appear to succeed, but the
resultant model doesn't have the exact dihedral angles needed to be
correct. Those also can be fixed in this manor.

I am going to take the problem cases and run it for all the permutations
of the 6 terms finding  one that gives the correct dihedral and face
angle calculations. Then make a note that the order was changed from the
paper. I'm curious if the order change will be consistent or if it was
just typographic.

The two infinite cases fortunately work as given.

I think I'm inadvertently peer reviewing the paper :|

Roger

Roger Kaufman

unread,
Feb 8, 2021, 11:04:59 PM2/8/21
to anti...@googlegroups.com
Hi Adrian,

On 2/8/2021 12:59 PM, Roger Kaufman wrote:
> I am going to take the problem cases and run it for all the
> permutations of the 6 terms finding  one that gives the correct
> dihedral and face angle calculations.

The program is complete.

I built a test program to try all 720 permutation of the 6 terms. All
the cases that failed on the order given in the paper then passed on the
second try with terms 4 and 5 (a14 and a23) reversed. (So it only need
on permutation!)

> Then make a note that the order was changed from the paper. I'm
> curious if the order change will be consistent or if it was just
> typographic.

I then tried reversing those two terms for every case, and all 59 cases
succeed. So for the fix, I reversed those two terms in the data
structure definition and made a comment as such. What is interesting is
that those two edges are opposite each other. Otherwise the connectivity
structure of the tetrahedron I drew from their description is correct.

The error was that the formula was encountering impossible dihedral
angle combinations for three planes, so the formula is sound.

After the fix I checked the dihedral angles of the finished models with
off_report and the correspond to the 6 dihedral angle given in the input
for all 59 models.

I've added -r reflect to built the reflected version of the tetrahedron.
And it can color by symmetry if desired. I'm not going to add anything
else to the program. Most of the models don't have cyclic symmetry
features, but I noticed many might server a space fillers.

Roger


Roger Kaufman

unread,
Feb 8, 2021, 11:16:04 PM2/8/21
to anti...@googlegroups.com


On 2/8/2021 11:04 PM, Roger Kaufman wrote:
> passed on the second try with terms 4 and 5 (a14 and a23) reversed

That should be terms 5 and 6

Roger


Roger Kaufman

unread,
Feb 9, 2021, 2:50:26 PM2/9/21
to anti...@googlegroups.com
Hi Adrian,

On 2/8/2021 11:04 PM, Roger Kaufman wrote:
> And it can color by symmetry if desired.

I noticed on this page, in their animation, they color the tetrahedra by
their "regge symmetry" grouping in the paper. I added this ability of 16
rainbow colors. I am not understanding these groupings, and I don't know
if there is anything else I can add based on it. It doesn't seem to
reflect on the actual symmetry reported by antiprism other than they all
have the same symmetry in each group. But each groups antiprism symmetry
is not unique in that regard.

https://www.quantamagazine.org/mathematicians-finally-prove-rational-tetrahedron-solutions-20210202/

The abstract at the top of their paper credits John Conway as the
inspiration for solving the problem. I added the abstract as extended help

In memory of John H. Conway

Abstract. We classify all sets of nonzero vectors in R3 such that the angle
formed by each pair is a rational multiple of Pi .The special case of
four-element subsets lets us classify all tetrahedra whose dihedral
angles are
multiples of Pi, solving a 1976 problem of Conway and Jones: there are 2
one-parameter families and 59 sporadic tetrahedra, all but three of
which are
related to either the icosidodecahedron or the B3 root lattice. The proof
requires the solution in roots of unity of a W(D6)-symmetric polynomial
equation with 105 monomials (the previous record was 12 monomials).

I have also changed verbose output to show the pi fractions as reduced
fractions... e.g.

12) N=21 (  3,  9,  7,  7, 12, 12)

pi/7, 3pi/7, pi/3, pi/3, 4pi/7, 4pi/7

regge group = 6

dihedral angles at:
edge a12 = 0.44879895051282759 (25.7143 deg)
edge a34 = 1.34639685153848276 (77.1429 deg)
edge a13 = 1.04719755119659763 (60 deg)
edge a24 = 1.04719755119659763 (60 deg)
edge a14 = 1.79519580205131035 (102.857 deg)
edge a23 = 1.79519580205131035 (102.857 deg)

Roger




Roger Kaufman

unread,
Feb 9, 2021, 8:30:17 PM2/9/21
to anti...@googlegroups.com


On 2/9/2021 2:50 PM, Roger Kaufman wrote:
> they color the tetrahedra by their "regge symmetry" grouping in the
> paper. I added this ability of 16 rainbow colors. I am not
> understanding these groupings, and I don't know if there is anything
> else I can add based on it.

I was able to find a public paper on Regge symmetry at arxiv. I've
attached a picture of page 1 of the document.

https://arxiv.org/abs/1903.04929
https://arxiv.org/pdf/1903.04929.pdf

Two tetrahedra in a Regge symmetry group of equal volume will have two
equal dihedral angles, two equal edge lengths, and 4 edge lengths that
differ by length s.

I've check a group of tetrahedra setting the volume to 1 with off_trans
and found this relation indeed exists within a group. It isn't always
the same two equal edges lengths consistently through the group.
However, at least two edges will be equal in length to at least one
other tetrahedron in the group.

I will add this description to the extended help.

Roger



regge.jpg

Roger Kaufman

unread,
Feb 10, 2021, 10:10:06 AM2/10/21
to anti...@googlegroups.com
Hi Adrian,

On 2/9/2021 8:30 PM, Roger Kaufman wrote:
> I will add this description to the extended help.

Below is what I've added to the extended help. I've check the relations
in one group and it is true.

The paper didn't mention point 1 (that I saw), but if the tetrahedra in
a group are of equal volume, I think it follows the sum of the edge
lengths are equal. I added an option to the program to change the volume
of the tetrahedron to 1 and show the changed edges sizes and their sum
and it is true.

A brief description of a Regge Symmetry group, a mathematical symmetry.

For all the tetrahedra in a Regge Symmetry group, if given equal volume they
will have the following characteristics

1) For all the tetrahedrons in the group, the sum of the 6 edges will be
equal
2) In the group, for a tetrahedron with edges (x,y,a,b,c,d) there may be one
   or more tetrahedrons with edges x,y,s-a,s-b,s-c,s-d where s =
(a+b+c+d)/2
3) The two opposing dihedral angles at edges x and y will be equal
4) The edge lengths of x and y of the two tetrahedra will be equal
5) If i,j,k,l are the dihedral angles at the edges a,b,c,d then the dihedral
   angles at edges s-a,s-b,s-c,s-d are t-i,t-j,t-k,t-l where t =
(i+j+k+l)/2

For more information see: https://arxiv.org/abs/1903.04929

I will push the final version at the end of the day, but I think this is
all that can be done with the program. I looked to see if tetrahedra in
a group could be lined up in a geometric fashion but there doesn't seem
to be this sort of pattern. The symmetry discribed is a mathematical one.


Adrian Rossiter

unread,
Feb 10, 2021, 11:38:56 AM2/10/21
to anti...@googlegroups.com
Hi Roger

On Wed, 10 Feb 2021, Roger Kaufman wrote:
> I will push the final version at the end of the day, but I think this is all
> that can be done with the program. I looked to see if tetrahedra in a group
> could be lined up in a geometric fashion but there doesn't seem to be this
> sort of pattern. The symmetry discribed is a mathematical one.

I have read your emails, but haven't had time to look at the maths. I
noticed that the original paper seemed quite advanced.

It is fortunate that angles were written consistently in the paper.

There may be some relevant geometrical significance to the idea,
for example

> 2) In the group, for a tetrahedron with edges (x,y,a,b,c,d) there may be one
>   or more tetrahedrons with edges x,y,s-a,s-b,s-c,s-d where s = (a+b+c+d)/2

The condition for a tetrahedron to have an midsphere is that pairs of
opposite edges sum to the same value.

So, if a tetrahedron (x,y,a,b,c,d) has a midsphere then

x + y = a + b = c + d

After the transformation you have a tetrahedron (x,y,s-a,s-b,s-c,s-d)
where

s = (a+b+c+d)/2 = ((x + y) + (x + y))/2 = x + y
(s-a) + (s-b) = 2s - (a + b) = 2(x + y) - (x + y) = x + y
(s-c) + (s-d) = 2s - (c + d) = 2(x + y) - (x + y) = x + y

and so this tetrahedron (if constructible, I wonder if it always is)
also has a midsphere.

I haven't looked how this ties in with the full symmetry conditions.

Roger Kaufman

unread,
Feb 10, 2021, 10:46:30 PM2/10/21
to anti...@googlegroups.com
Hi Adrian,

On 2/10/2021 11:38 AM, Adrian Rossiter wrote:
> It is fortunate that angles were written consistently in the paper.

I constructed a spreadsheet creating a connectivity diagram between
dihedral pairs. The 6 columns can be seen as 3 pairs of columns such that

the pairs are: 1-(a12,a34) 2-(a13,a24) 3-(a14,a23)

Had I tried to make this mapping before, I would have noticed right away
that column a14 and a23 were reversed since they wouldn't ever match any
other tetrahedron in their class. The other property is, within a class
only two models will have dihedral pairs be matching. There are 4 cases
where 2 dihedral pairs exist in the same model, though.

Anyway, it turns out that as long as pairs are kept together, they can
be permuted. I have added an option to permute have 1,2,3 be the default.

If dihedral angles match in the first two columns, two tetrahedron can
be plotted with each other and edge x and its dihedral angle will match.
Option -z makes the volumes unit.

It can (almost) be seen that the opposing edge y is equal length, but
nothing about the tetrahedron will be matching geometrically.

tetra59 5 -z > tmp.off
tetra59 7 -z | antiview - tmp.off

But some of the models don't have a match in the first column so the
default pairs don't work. So the -d options works there. Model 13 has a
match in the second column to model 14 in the first column.

tetra59 14 -z  > tmp.off
// won't compare
tetra59 13 -z | antiview - tmp.off
// will compare
tetra59 13 -z -d c | antiview - tmp.off

As long as this connectivity is followed, the tetrahedra can be compared
in this way. These are some interesting properties of this set of
tetrahedra.

I've added a separate verbose option for printing face angles as most of
the time I interested only in dihedral angles and edge lengths.

And I've updated the description of regge symmetry to mention its about
pairs of tetrahedron within the group.

Roger



tetra59_deg.xlsx

Roger Kaufman

unread,
Feb 11, 2021, 7:32:39 AM2/11/21
to anti...@googlegroups.com
Hi Adrian,

On 2/10/2021 10:46 PM, Roger Kaufman wrote:
> I've updated

I went through some final documentation and code clean up and I think
the program is good to go.

I added a help gtm file for tetra59 giving examples. I noticed the
conway.gtm still contained documentation about George Hart's canonical
which is no longer in conway, but is in the canonical help file so I
removed it from conway.gtm.

I've been trying to get the tetra59.1 file to populate but it is 0 file
size. I added it anyway but it will have to be updated.

The spreadsheet might be good documentation, but I didn't mention it.
Perhaps I could host it on my site and add a link to it to the help.

Roger


Roger Kaufman

unread,
Feb 12, 2021, 2:37:00 PM2/12/21
to anti...@googlegroups.com
Hi Adrian,

On 2/11/2021 7:32 AM, Roger Kaufman wrote:
> The spreadsheet might be good documentation

I don't think this needs to be done. I formatted the listing differently
to group the tuples together. It make the equal entry plainer to see.

Here is part of the listing. Note the 3rd tuple of line 55 is reversed
but this is not a typo so it isn't supposed to match with the second
tuple of line 53.

Regge group 15
52) N=30 ( 6, 15), (10, 15), (15, 12) T1
53) N=30 ( 6, 15), (11, 14), (16, 11)
54) N=30 ( 8, 13), ( 8, 17), (15, 12)
55) N=30 ( 8, 13), ( 9, 18), (14, 11)
56) N=30 ( 8, 17), ( 9, 12), (16, 11)
57) N=30 ( 9, 12), ( 9, 18), (15, 10)

I am wondering, the fact that pairs tetrahedra have pairs of dihedral
angles in common mean they could be 2 of roots of some kind of complex
equation.

While changing the format I noticed the permutation wasn't working
correctly and fixed that bug. I've also added the new program entry to
the NEWS file.

> There are some remaining issues that you may want review. You can
> install clang-tidy like this
>
>    sudo apt install bear clang-tidy
>
> Then, in the Antiprism source directory run
>
>    make clean
>    bear make
>    clang-tidy src/*.cc src/*.h

Since I have time I am going to run the clang-tidy again since we've
made so many changes. I don't expect to find much if anything but I will
let you know.

Roger


Roger Kaufman

unread,
Feb 12, 2021, 5:25:43 PM2/12/21
to anti...@googlegroups.com


On 2/12/2021 2:36 PM, Roger Kaufman wrote:
> Since I have time I am going to run the clang-tidy again since we've
> made so many changes. I don't expect to find much if anything but I
> will let you know.

It found a few things in src, all in programs I maintain, that it didn't
mention before. Minor things that were easily fixed. The biggest change
it asked to make is reorder the entries in the tetra59 table.

In base, it found things but not in my programs. I attached the output.
I'm not sure of the code but if you want me to look at them I can. Many
times, one initialization fixes the whole program.

One warning message mentioned in a few programs:  warning: Function
'vsnprintf' is called with an uninitialized va_list argument

is noted to be a bug in clang-tidy.

Roger


tidy_base.txt

Adrian Rossiter

unread,
Feb 13, 2021, 4:46:04 AM2/13/21
to Antiprism List
Hi Roger
There are four warnings.

Two warnings for vsnprintf, which are fine.

I have previously looked at the warning for prop_col.cc, and didn't feel
that I understood the code well enough to make any changes.

The other warning is for off_read.cc, which was probably introduced
by the changes to message reporting.

On the surface, the analysis doesn't appear to be correct, The last
parts of the analysis are:

off_read.cc:115:5: note: Returning without writing to '*contains_adj_equal_idx'
return Status::error("face: no face data");
^
off_read.cc:266:20: note: Returning from 'add_face'
if (!(stat = add_face(geom, vals.get_parts(), alt_cols,

off_read.cc:266:7: note: Taking false branch
if (!(stat = add_face(geom, vals.get_parts(), alt_cols,
^
off_read.cc:273:11: note: Branch condition evaluates to a garbage value
if (contains_adj_equal_idx &&

Returning Status::error on the first line above means the false branch
will not be taken on the third line above (and with the true branch the
fourth line above is never reached).

Looking at the status source, the status number is an integer made of
the status type number to which is added an extra code number, so
the status types are represented by bands of numbers. In theory,
if an error has an extra code number that is big enough the status
number could wrap at MAX_INT and appear to be a non-error. However,
in the code above the default extra code number of 0 is used, and
so this isn't an explanation for how the false branch could be taken.

I am not sure what else to look at to explain the analysis.

I'll change the code to supress this warning, and it would probably be
better defensive programming to ensure the value is always initialised.


I aim to make the Antiprism 0.28 release later today.

Adrian Rossiter

unread,
Feb 13, 2021, 5:00:14 AM2/13/21
to anti...@googlegroups.com
Hi Roger

On Thu, 11 Feb 2021, Roger Kaufman wrote:
> I've been trying to get the tetra59.1 file to populate but it is 0 file size.
> I added it anyway but it will have to be updated.

I see this often. The man page construction runs the program in order
to include the program help text. I think that using 'make -j' allows
the possibility of the man page being made before the program has been
built. If you try deleting just the man page and running 'make' again
it might be created properly.

Roger Kaufman

unread,
Feb 13, 2021, 5:46:58 AM2/13/21
to anti...@googlegroups.com
Hi Adrain,


On 2/13/2021 5:00 AM, Adrian Rossiter wrote:
On Thu, 11 Feb 2021, Roger Kaufman wrote:
I've been trying to get the tetra59.1 file to populate but it is 0 file size. I added it anyway but it will have to be updated.

I see this often. The man page construction runs the program in order
to include the program help text. I think that using 'make -j' allows
the possibility of the man page being made before the program has been
built. If you try deleting just the man page and running 'make' again
it might be created properly.

I noticed this when I make the program

grep "doc/tetra59\.gtm" ../doc_src/doc.gtp | sed -e 's/\(.*\) 2 \(.*\)/[NAME]\n\2/' > /tmp/h2m_name_tetra59
help2man -i /tmp/h2m_name_tetra59 ./tetra59 | sed -e 's/\(DO.*generated by help2man\)\(.*\)/\1/ ; s/\(^\.TH.*\)"\(.*\)" "\(.*\)" "\(.*\)" "\(.*\)"/\1 "\2" " " "\4" "\5"/'> tetra59.1
help2man: no valid information found in `/tmp/h2m_name_tetra59'
rm /tmp/h2m_name_tetra59

There is no doc/tetra59.gtm file. I haven't built the documentation, and I can't remember the make command for it, but that seems like what it needs?

Roger

Adrian Rossiter

unread,
Feb 13, 2021, 5:55:07 AM2/13/21
to anti...@googlegroups.com
Hi Roger

On Sat, 13 Feb 2021, Roger Kaufman wrote:
> There is no doc/tetra59.gtm file. I haven't built the documentation, and I
> can't remember the make command for it, but that seems like what it needs?

In that case, in doc_src/programs copy another .gtm file to have the name
tetra59.gtm and then edit it to include the correct examples and notes.

Adrian Rossiter

unread,
Feb 13, 2021, 5:59:35 AM2/13/21
to anti...@googlegroups.com
Hi Roger

On Sat, 13 Feb 2021, Adrian Rossiter wrote:
> In that case, in doc_src/programs copy another .gtm file to have the name
> tetra59.gtm and then edit it to include the correct examples and notes.

I have remembered there are a few more files to be edited. I can set
this up when I have pulled your changes.

Roger Kaufman

unread,
Feb 13, 2021, 6:17:15 AM2/13/21
to Antiprism List
Hi Adrian,

On 2/13/2021 5:59 AM, Adrian Rossiter wrote:
>
>> In that case, in doc_src/programs copy another .gtm file to have the name
>> tetra59.gtm and then edit it to include the correct examples and notes.
>
> I have remembered there are a few more files to be edited. I can set
> this up when I have pulled your changes.

At the same time I saw about the doc.gtp file. I will let you change it
then. I had previously edited .gitignore to add the executable.

In the doc directory, the README only says it will hold the
documentation. While I'll probably not build it, I don't see any
instructions on how to run that Make command in README or INSTALL, if
anyone did want to do it.

Roger


Adrian Rossiter

unread,
Feb 13, 2021, 6:58:33 AM2/13/21
to Antiprism List
Hi Roger

On Sat, 13 Feb 2021, Roger Kaufman wrote:
> In the doc directory, the README only says it will hold the
> documentation. While I'll probably not build it, I don't see any
> instructions on how to run that Make command in README or INSTALL, if
> anyone did want to do it.

git won't track empty directories, so the README file is just to
ensure the doc directory is included in the repository, but it
may not be strictly needed, as it contains subdirecties that also
have a similar README.

The command to build the release documentation is 'make prepare_release',
and is documented in README.git.

Roger Kaufman

unread,
Feb 13, 2021, 12:39:42 PM2/13/21
to anti...@googlegroups.com
Hi Adrian,

There was a greater than or equal to symbol in the tetra59 help, but it
doesn't display in Cygwin. It looks like this:

 for pi/6 < x Γëñ pi/3 (30 < x <= 60 degrees)

I've changed it to the plain format

for pi/6 < x <= pi/3 (30 < x <= 60 degrees)

Roger

Adrian Rossiter

unread,
Feb 14, 2021, 12:49:15 AM2/14/21
to anti...@googlegroups.com
Hi Roger

On Sat, 13 Feb 2021, Roger Kaufman wrote:
> There was a greater than or equal to symbol in the tetra59 help, but it
> doesn't display in Cygwin. It looks like this:

I'll leave it a week or so before pushing any updates to the main
repository, just to make things easier if there are any problems
with the release.

Roger Kaufman

unread,
Feb 14, 2021, 12:07:07 PM2/14/21
to anti...@googlegroups.com
Hi Adrian,

On 2/14/2021 12:49 AM, Adrian Rossiter wrote:
> Hi Roger
>
> On Sat, 13 Feb 2021, Roger Kaufman wrote:
>> There was a greater than or equal to symbol in the tetra59 help, but
>> it doesn't display in Cygwin. It looks like this:
>
> I'll leave it a week or so before pushing any updates to the main
> repository, just to make things easier if there are any problems
> with the release.

Thats ok. I admit I was rushing, trying to get it into the release. But
the program was only about 10 days old! In the meantime, if anyone wants
to try it, they can always pull it from my fork of antiprism.

So take more time than that. I keep getting to stopping points and then
thinking about it more. I am considering...

- the pairing in a regge group isn't between two tetrahedra, but between
two dihedral pairs.

Because of that, one tetrahedra can pair to more than one other by by
different dihedral pairs. For some groups its actually quite a complex
network. I need to reword this somehow.

- if a dihedral pair exists in a group, there is enough information that
the program could find the pair of an entry programmatically. I should
implement this rather have to compare to a tmp file in two steps.

Right now it has to be done like this
tetra59 45 -d a -z > tmp.off

// one permutation of the pair
tetra59 42 -d c -z | antiview - tmp.off
// or it could be compared to this permutation
tetra59 42 -d d -z | antiview - tmp.off

- if the two rational tetrahedra exist at the same time within the
program, then s, the difference between the edge lengths can be plotted.

there is the mention of scissors congruence which I'm not going to
pursue. This is a 3 dimensional problem like that of a 2D tile game I
saw once, e.g. a triangle built from tiles that could make a square. I
think in order to demonstrate this, consider the pair models above could
be fragmented into a compound of the intersecting parts. Then the output
could be manipulated with off_util and bricked and so on. I won't
implement that at this time. A fragmentation like could be generalized
with off_boole if I get to finishing it.

http://math.uchicago.edu/~zakh/reu2013/Scissors%20Congruence.pdf

http://math.uchicago.edu/~may/REU2016/REUPapers/Welsh.pdf


I'm finding the program a lot of fun actually.

Roger

Roger Kaufman

unread,
Feb 19, 2021, 7:57:25 PM2/19/21
to anti...@googlegroups.com
Hi Adrian,

On 2/14/2021 12:07 PM, Roger Kaufman wrote:
> - the pairing in a regge group isn't between two tetrahedra, but
> between two dihedral pairs.
>
> Because of that, one tetrahedra can pair to more than one other by by
> different dihedral pairs. For some groups its actually quite a complex
> network. I need to reword this somehow.

I did some rewording in the extended help. I also added a section for
the description of the construction method, and a section for
description of the comparison of two tetrahedra in the same regge class.

> - if a dihedral pair exists in a group, there is enough information
> that the program could find the pair of an entry programmatically. I
> should implement this rather have to compare to a tmp file in two steps.

This works now. To assist in finding matches, the listing can be done
outputting the angular degrees. This is in addition of the integer
factors given in the paper.

From the tetra59.gtm help...

compare two tetrahedra of the same volume in the same Regge class
use the -p option to find the match of the dihedral pair (6, 6) in the
second
column set by -d c. It finds the matching pair in tetrahedron 14 in the
first
column. Use tetra59 -l deg to list standardized angles for easier matching
...
tetra59 13 -d c -p 1 | antiview

This is how it works.

The data given for entry 13 look like this:

13) N=21 ( 4, 10), ( 6,  6), (12, 12)

-d explains that angles permuted as pairs: 1-(a12,a34) 2-(a13,a24)
3-(a14,a23)
and gives 6 permutation choices so choose c or d ...  a:1,2,3 b:1,3,2;
c:2,1,3  d:2,3,1; e:3,1,2  f:3,2,1

So -d c moves (6,6) to the first column. (one could also choose -d d)
The object of moving to the first column is that the dihedral angle of
construction between face A and B is a12, the first term as explained in
the extended help.

tetra59 13 -d c | antiview -v 0.02
13) N=21 ( 6,  6), ( 4, 10), (12, 12) (permutation c)

The program will search the list  and find tetrahedron 14 permutation b
is the best match.

14) N=21 ( 6,  6), (15,  9), ( 7,  7) (permutation b)

Then the two will be displayed together both with the volume of 1.

> - if the two rational tetrahedra exist at the same time within the
> program, then s, the difference between the edge lengths can be plotted.

The output shows all the mathematical relations found between the two
tetrahedra both in edge lengths and dihedral angles. But the value s is
a mathematical value and not something to be plotted.

Roger


Adrian Rossiter

unread,
Feb 22, 2021, 2:18:36 AM2/22/21
to anti...@googlegroups.com
Hi Roger

On Sat, 13 Feb 2021, Adrian Rossiter wrote:
> On Sat, 13 Feb 2021, Adrian Rossiter wrote:
>> In that case, in doc_src/programs copy another .gtm file to have the name
>> tetra59.gtm and then edit it to include the correct examples and notes.
>
> I have remembered there are a few more files to be edited. I can set
> this up when I have pulled your changes.

I have now updated the repository.
Reply all
Reply to author
Forward
0 new messages