Hyperbolic polyhedron data?

Higher-dimensional geometry (previously "Polyshapes").

Hyperbolic polyhedron data?

Postby Marek14 » Sun May 01, 2016 7:48 am

I've been thinking if there's a tool or an algorithm that could take an edge length (in spherical or hyperbolic geometry) and compute important data for a given uniform polyhedron with this edge length: its face data (angles of the polyhedra and their areas, possibly their in-radius and circumradius), dihedral angles of the polyhedron, volume of polyhedron, maybe in- and circum- radii of the polyhedron. It would be also great if it was possible to find faces and dihedral angles for horohedra/pseudohedra. It would help with finding how big the hyperbolic tesselations actually ARE.

These data are probably all accessible or computable, but what I need is a program or module that would combine them in one place...
Posts: 1148
Joined: Sat Jul 16, 2005 6:40 pm

Re: Hyperbolic polyhedron data?

Postby wendy » Sun May 01, 2016 11:56 am

If you suppose that you are taking say, a tD of edge E1 (or E1, E2), then this is well in the range of calculations, but there are some useful considerations to be made. Been doing this for years.

Horohedra and Bollohedra (aka pseudohedra), are simply polyhedra. It's not really easy to do it for 'uniform polyhedra', as I explained to Richard Klitzing. What you need is a construction, such as the stott-dynkin form. Professor Johnson makes an error when he supposes that the elements of a dynkin symbol are rational numbers: they are real numbers.

The dynkin - stott matrices works in all geometries, including euclidean geometry. But to make this happen, the proper scale to work in is euclidean chords (ie distances along chords), rather than 'straight lines' (ie measures of arc). This makes the curvature issue disappear, and the sizing of things then introduces curvature.

The spreadsheet i wrote for R Klitzing, is pretty much right on the nail on what is needed here, so i shall discuss this.

1. The most useful number of a polygon is its shortchord, p = 2 cos(pi/P). P = 2 acos(p/2). You find the dha = pi(1/2 - 1/P). We normally write this in terms of the square of p though.

2. The diameter2 of a polyhedron (P,Q) is d = 2(4-q)/(8-2p-2q) P,p here is 3,1 4,2, 5,2.618033, 5/2,0.381967 6,3 U,4

The diameter2 of a polygon (P) is 2(2)/(4-q).

3. It follows directly that the d2 of a polychoron is 2(8-2q-2r)/(16-4p-4q-4r+pr) &c.

The denominator is the 'schlafli determinate' of the polytope, and the d2 of a figure 2 * schlafli determinate of vertex figure / sd of polytope, the prism product gives a regular product, so eg o---o---x---o vf = o---o sd=3, and o sd = 2, pt = o---o---o---o = 5, so it's 2 * 3 * 2 / 5 = 12/5 = 2.4.

All of the above work with irrational polytopes, which is why i have W(x) as a general infinite polyhedron. when x=4 you get the horogon, or horosphere, when W(x) > 4 it's a bollogon.

Since one is generally in a tiling, not so interested in the radius of a polytope, but the edge in a sphere whose edge is 4, the point to note here is that E+4/R = 4.

A polyhedron like x5x3o of a given size, would imply some x5o3oWo, where the indiameters over the pentagons/decagons are identical, and this allows one to directly find W, and from this, the dihedral angles and assorted edge lengths associated with both of these figures.

Areas are found by the spherical excess theorm. I don't have a volume formula, though.
The dream you dream alone is only a dream
the dream we dream together is reality.

\(\LaTeX\ \) at https://greasyfork.org/en/users/188714-wendy-krieger
User avatar
Posts: 1936
Joined: Tue Jan 18, 2005 12:42 pm
Location: Brisbane, Australia

Re: Hyperbolic polyhedron data?

Postby wendy » Sun May 01, 2016 12:22 pm

This is the relevant code source for my script that does a lot of this. I compile the code from this, without the comments.

The numbers are given as choh2 of the distance usually given. This greatly simplifies the maths.

The star function calculates the edge of a star, given a figure that has the same core. In essence, we find some new figure with a face {p,q} whose inradius is identical to some {x,y,z}.

The Gauge rule is used to find the inradius of a surtope of a cell, given the circumradius of the same cell, and the inradius of the surtope.

Code: Select all
!topic - sp, sm

!src sp_sm
sp: procedure; parse arg t0; return 4*t0 / (4+t0)
sm: procedure; parse arg t0; return 4*t0 / (4-t0)
sr: procedure; parse arg t0; return 4 /(4-t0)
vf: procedure; parse arg t0; return 4 - 4/t0

These pair of functions are used in the star function.

    sr =  4/(4-vf)
    4/sr = 4 - vf
    vf = 4 - 4/sr

!topic - star()

!src star
star: ; procedure; parse arg s0,s1,s2
if s0 = 0
  then return sm(s1)/sm(s2);
  else return sm(sp(s0)*sm(s1)/sm(s2))

  star(edge,core,star) = edge(star)
  star(e2(5,3,3,3),a2(5),a2(5/2))  =  e2(5/2,5,3,3)


  put  e2(p,q) = e     defines q       ie  e = -4*(4-p-q)/(4-q)
  then e2(q,p) = e2(Q,P) = k           ie  k = -4*(4-p-q)/(4-p)

!topic - klein (convert Eq to Kq)

!src klein
klein: ; procedure; parse arg ee; return 4*ee*(4+ee)/(2+ee)**2

Poincare was reverse engineered from a value in Dan Hatch/Melinda Green's
'tyler' applet.  Don confirmed this is tanh, while E2 is choh.  Algebra
confirms the found relationship.

Let op = poincare distance            h
    ok = klein distance               |
    rp = radius of line  = rh     r---k--p     o

     circle centre r passing through h, p is poincare line.
     line passing through h, k is matching klein line
     op = poincare distance p
     ok = klein distance k
     rh = rp = radius of poincare line
     oh = horizon-radius = 4.
     rho , hko right angle triangles.

then we have a right angle triangle 2:r:r+p, similar to k:?:2
ie k/2 = 2/(r+p).
                                  since we have
  ie k = 4/(r+p)                        pp = 4ee/(4+ee) = 4 - 16/(4+ee)
                                         4 = 16+4ee / 4+ee
  we also have
                                         k     16+4ee * 2p / 16+8ee
    4+rr = rr+2rp+pp                         2p  4+ee/4+2ee
    ie pp+2pr-4 = 0                           p  (4+ee/2+ee)
    ie   r = (4-pp)/2p
         p = ( 2pp)/2p                  kk =  4ee    4+ee 4+ee
       r+p = (4+pp)/2p                        4+ee   2+ee 2+ee
         k =  8p/(4+pp)
                                        kk =  4.ee(4+ee)/(2+ee)^2
                                        kk = 4 ((ee+2)^2-4)/ (2+ee^2)
                                        kk = 4 - 16/(2+ee)^2

This came out of the discussion between John Conway, Anton Sherwood,
and myself, over the klein and poincare projections being azimuthal,
and hence transforms of r,theta to f(r),theta.  This means that all
azimuthal projections cross the horizon at the same point.

!topic h2k and k2h  [Guage rule]

h2k: ; parse arg t0; return (t0+4)/4
k2h: ; parse arg t0; return (t0-1)*4
k2b: ; parse arg t0; return (t0-1)*4/t0
b2k: ; parse arg t0; return 4/(4-t0)
h2b: ; parse arg t0; return 4*t0/(4+t0)
b2h: ; parse arg t0; return 4*t0/(4-t0)

   h = height   = edge {4,k}
   k = stretch  = h/b
   b = base     = edge {k,4}

The euclidean distance of two points on a bollosphere is k times the
E distance on the equidistant plane.
  h = distance between bollospheres of equal curvature.
  b = projection of h on the bollosphere, as measured on the plane
  k = h/b = expansion

We note that e2 of {p,q} = 4q/(4-p) - 4 = (4p+4q-16)/(4-q)

   This gives for  {4,p}   (4p-8)/(4-p) = h
                   {p,4}   (4p-8)/(2) = h/k = b
                           2/(4-p)    =   k  or  p = 4-2/k

    Given p, we can find  h = (16-8/k - 8) / (2/k) or 4(k-1)
       or 4 + h = 4k.   k = (4+h)/4;  h = (k-1)/4

We now make further functions, using b as above.

    k2b is k2h / k, ie  b = (k-1)/4k
    bk = 4k - 4; (4-b)k = 4, k = 4/(4-b).

To relate b to h, we note that h = kb, where k = (h+4)/4

   ie  h = (h+4)b/4; b = 4h/(4+h)
       4b+hb = 4h ;  h(4-b) = 4b; h = 4b/(4-b)

!topic - tube

!src tube   /* calculate the height of a tube */
tube: procedure; parse arg t0, t1, t2
if t0 = 0  then return t1-t2 ; else return 4*t0*(t1-t2)/(t0*t2+4)
!rem rha: ; parse arg t1, t2; return (t1+2)*(t2+2)/2-2
rha: procedure; t1 = arg(1)+2;
do nn = 2 to arg(); t1 = t1 * (arg(nn)+2)/2; end; return t1 - 2

                  Given D2 of sphere passing through the four points o
      o---+---o   and given D2 of the circle passing through the top
      (   |   )   two 'o', find the distance between the top and bottom.
      (   |   )
      (   |   )   Since the tube-rule is mainly used to find the surtope
      o---+---o   radius in H space, we make the sphere t0.t1 and the
                  circle t0.t2

For example, the R2 of a {3,5,3} cell is tube(e2(3,5,3),d2(3,5),d2(3))

Tube Rule: midheight2 of tube diam2 t inside a sphere diam2 D
      t = diameter of tube ; D = circumdiameter of tube segment
      m = mid height; h = height at edge
   h+t=D; 4h/m = 4+t; 4h = (4+t)m; 4h + 4t + 16 = (4+t)(4+m) = 4(4+D)
   * used to find heights of cells in honeycombs: D=cell, t=margin.
   # tube(e,D,t) finds m = 4(4+eD)/(4+et)-4 by 4e(D-t)/(4+et)

The right-angle rule derives from taing the half-distances of the tube
rule.  The function is generalised to cover all sorts of values.

Right Angle Rule:  a,b are short sides, c is the long side
   put aa=t, bb=h, cc=D true lengths of tube rule measures
   so (x+2)^2 = 4+xx;  take sqrt of tube rule =  (2+a)(2+b)=2(2+c)

!topic - a1_a2

!src a1_a2
a1: procedure expose setpi;  parse arg t0
t1 = sin(pi(1/t0)) ; return 2*sqrt(1-t1*t1)
a2: procedure expose setpi ; parse arg t0
t1 = sin(pi(1/t0)) ; return 4-4*t1*t1


  A1 is base of isoceles triangle formed by 2 sides
  A2 is square of A1.

!topic - c1_c2

!src c1_c2
C1: ; parse arg t0, t1, t4
if t1 = '' then do; t2 = chord2; t1 = chord1; end
else do; t2 = sin(pi(1/t1)); chord1 = t1; chord2 = t2; end
t3 = sin(pi(t0/t1))/t2 ; if t4 = "" then t3 = t3; else t3 = pow(t3,t4)
return t3
c2: ; parse arg t0, t1 ; t2 = c1(t0, t1); return t2*t2

   C1(n,m) is chord of polygon, where 1 = C1(1,m)
     fractions follow the circumsphere of the polygons
   C1(n) uses previous value of m
   C1(n,m,p) = C1(n,m) ^ p
   C2(n,m) = C1(n,m,2)

!topic - ij

!src ij
ij: procedure ; parse arg x ; if x > 0
then return (sqrt(x+2)+sqrt(x-2))/2
else return (sqrt(-x+2)-sqrt(-x-2))/2
ji: procedure; parse arg x ; x = x*x ; if x < 1
then return -x-1/x
else return x+1/x

ij(n) is the isounit corresponding to (n).
  ij(3) = 1.61803398875   ji(1.61803398875) = 3
  ij(-3) = 1/ij(3).

  in(n) is usually written jn, eg j3 or j66

ji undoes ij

e2h: procedure ; parse arg x; return (x+2+sqrt((x+4)*x))/2
h2e: procedure ; parse arg x; return x-2+1/x

John Conway mentioned a hyperbolic distance that can be multiplied to
give progression along the straight line.  This is the cish function.
As with cis, this function is the exponent of angle, and distances

This is a useful function, and the relation between cish and choh is
soon found, to be the e2h() and h2e() functions given above.

The formula  (x+2+sqrt(x2+4x))/2 converts euclidean to hyperdistance
              x-2+1/x converts hyperdistance to horodistance

   h2 = e2h(e2)    e2 = h2e(h2)

Don Hatch's tyler uses a "unit of curvature" uc.  This is the radial
fraction of the poincare disk.  We normalise this to t1 = 2*uc and
t2 = t1*t1

   t2 = sp(e2)      e2 = sm(t2)

!topic - fact()

!src factorial
fact: procedure; parse arg t0, t1, t2; if t1='' then t1 = 1; if t2 = '' then t2 = 1;
t0 = abs(trunc(t0)); t9 = 1
do forever; if t2 > t0 then leave; t9 = t9 * t0; t0 = t0 - t1; end; return t9
ppi: procedure expose setpi; parse arg t0, t1; t0 = abs(trunc(t0)); if t1='' then t1=1
t3 = pi(1/2)**(t0 % 2) * t1 ** t0 ; return t3

Factorial  n = 1*2*3*...

!topic - borr()

!src borr
borr:; parse arg b1; b1 = a2(b1); return (b1+sqrt(b1*(16-3*b1)))/2

The borromeachrons are hyperbolic tilings with a vertex figure as a snub
tetrahedron 3/q*/p2%.  The cell conist is p-gonal prisms and cubes.

Edge of polyborromeachorons
   E2 = A2/2 + A1.sqrt(16-3A2)/2
   The notional coordinate is (a,x,0), all chs, even perm.  The triangle
   (a,x,0) - (0,a,x) - (x,0,a) is of edge 2r2 [being the vf of a cube],
   so  (a, x-a, -x) = 8, or aa+xx+aa+xx-2ax = 8; ie aa+xx-ax = 4, or
   xx - ax + (aa-4) = 0.  This makes x = a+sqrt(aa-4(aa-4));/2, ie
   x = a/2 + sqrt(16-3a2)/2.  aa+xx-4 is therefore aa+aa/4+16/4-3aa/4-4
   +a1.sqrt(16-3a2)/2 = aa/2+a1.sqrt(16-3a2)/2.

The only uniform polyborromeateron is {4,3,3,5}

The dream you dream alone is only a dream
the dream we dream together is reality.

\(\LaTeX\ \) at https://greasyfork.org/en/users/188714-wendy-krieger
User avatar
Posts: 1936
Joined: Tue Jan 18, 2005 12:42 pm
Location: Brisbane, Australia

Return to Other Geometry

Who is online

Users browsing this forum: No registered users and 1 guest