Site Map Polytopes Dynkin Diagrams Vertex Figures, etc. Incidence Matrices Index

Convex Isogonal Polytopes

Literally the Greek word "isogon" means: having alike knees. Within a polygon it thence speaks of congruent vertex angles. None the less its usage is even more specific. It applies to any polytope's vertices and there moreover asks that those are to be considered transient under the action of a symmetry.

Isogonal polygons are therefore quite easily recognized as the ones of the sort a-P-b, where in this Coxeter-Dynkin diagram a and b denote the alternating side lengths and P = π/ϕ with ϕ being the centri-angle underneath a pair of consecutive sides a and b. For closing reasons here obviously P needs to be a rational number P = n/d, where n represents the number of sides of type a (or alike of b) and d is the winding number, i.e. counts how often the sequence of sides runs around the center point. Polygons with winding number d>1 are also known as polygrams instead. A polygram of winding number d is also called a d-stropic polygram.

Many of the most often used qualifiers for polytopes use isogonality for one of their restrictions. So all these classes of polytopes readily are isogonal ones. Just to mention some: regular polytopes (as well as vertex-regular compounds), uniform polytopes, scaliform polytopes, noble polytopes, etc. – Obviously all vertices of an isogonal polytope live on a single (hyper)sphere. Esp. all isogonal polytopes have an individual, well-defined circumradius.

It should be emphasized however that vertex congruence and vertex transitive is not the same. Only the latter is what isogonal means. Simply consider the Miller's solid, which looks nearly like the rhombicuboctahedron. In fact all vertex figures show up 1 triangle and 3 squares. But the former has only 4-fold axial symmetry and so its vertices fall into 2 orbits. While the other has higher symmetry which then allows to map any vertex figure onto every other.


In what follows we will now restrict to convex isogonal polytopes generally. As no restriction was set onto the edge sizes, it becomes obvious that the kaleidoscopical construction of Wythoff can easily generalized to arbitrary edge lengths. For instance consider

a3b3c
a3b4c
a3b5c

where each edge size a, b, and c can be varied independenty, even down to zero, which then makes several vertices coincide. Still all these cases remain isogonal. – Together with the according prismatic case this encompasses all fully mirror symmetrical cases.

But there are subsymmetrical cases too, where full mirror symmetry breakes down. Just to provide some examples below: eg. trapezoprisms with rotational glide-reflection (e.g. rectangular, ditriangular, ...) or pyritohedrally gyrated polyhedra (eg. pyritosnub tetrahedron, pyritosnub cube, ...).

   ©

Already these two depicted examples show that facets of isogonal polytopes need not be isogonal themselves.

Despite the infinitude of shapes of convex isogonal polyhedra (as there are eg. the above mentioned continuous deformations of edge ratios), there seem to exist only topological variations of uniform polyhedra. This however becomes quite different in higher dimensions, where combinatorically new polytopes will occure, i.e. with no mere edge resizement relation to any of the uniforms. (And this statement surely isn't true for non-convex polyhedra either.)




Isogonal Polychora   (up)

Isogonal Snubs

Alternated faceting, also known as snubbing, can be considered to have two consecutive processes. The first is the mere alternated faceting (in its stricter sense) from any Wythoffian starting figure, the second is the resizement back to all unit edges, if at all possible. If the latter succeeds, then the result will be uniform again; but not all cases do. Those remainders would still be isogonal polytopes. Because of the number of independent edge types involved and the degrees of freedom of the respective space grows on different paces, beyond 3D most snubs would remain isogonal only. Purely isogonal snubs are:

s3s3s3s (snip / snad)
o3o3o4s (hex:   → uniform)
x3o3o4s (rit:   → uniform)
o3x3o4s (thex:  → uniform)
o3o3x4s (rit:   → uniform)
x3x3o4s (tah:   → uniform)
x3o3x4s (rico:  → uniform)
o3x3x4s (tah:   → uniform)
x3x3x4s (tico:  → uniform)

s3s3s4o (sadi:  → uniform)
s3s3s4x (pysnet)

s3s3s4s (snet)
s3s3s5s (snixhi)
s3s4o3o (sadi:   → uniform)
s3s4o3x (prissi: → scaliform)
s3s4x3o (srico:  → uniform)
s3s4x3x (prico:  → uniform)

s3s4s3s (sni(-co) / snoc)
s3s3s *b3s (sadi: → uniform)
s2s3s3s (snittap)
s2o3o4s (hex:   → uniform)
s2x3o4s (tuta:  → scaliform)
s2o3x4s (cope:  → uniform)
s2x3x4s (tope:  → uniform)

s2s3s4o (pikap / snittap)
s2s3s4x (pysna)

s2s3s4s (sniccap)
s2s3s5s (sniddap)
sns2sms   (n,m-dap)
sns2s2mx  (n,2m-pap)

s3s2s3s   (triddap)
s5s2s5/3s (gudap: → uniform)
s2s2sns  (2,n-dap)
s2s2s2nx (2,2n-pap)

s2s2s2s  (hex: → uniform)
s2s2s3s  (ditdap)
s2s2s4x  (dispap)
s2s2s6x  (dihipap)

Isogonal Truncates

Truncation cannot even be generally applied to uniform polytopes. For, although all vertices are alike (isogonal), not all (incident) edges would be necessarily of the same type and so the ratios of respective truncation depths are not well-defined. As rectification only is meant to be the instance, where truncations happen to meet, the same problem then applies here too. (More details on that is being found already in the respective linked pages.) For the quasiregular polytopes however we generally have

trunc( ...-o-N-x-M-o-...) = ...-x(N,2)-N-y-M-x(M,2)-...
 rect( ...-o-N-x-M-o-...) = ...-x(N,2)-N-o-M-x(M,2)-...

i.e. this results at least within variants of Wythoffians. – But there might be uniform cases even beyond these quasiregular polytopes, where an additional outer symmetry might unite the various edge types into a single class. Then for sure truncation and rectification should apply. Again the results then are usually isogonal only.

trunc( o3x3x3o ) = tadeca
 rect( o3x3x3o ) = redeca
trunc( o3x4x3o ) = ticont
 rect( o3x4x3o ) = recont
trunc( x3o3o3x ) = tispid
 rect( x3o3o3x ) = respid
trunc( x3o4o3x ) = tispic
 rect( x3o4o3x ) = respic
trunc( x3o o3x ) = tatriddip
 rect( x3o o3x ) = retdip
trunc( xNo oNx )
 rect( xNo oNx )

(Note that x3o3x *b3x = o3x4o3o and thence the there possible outer symmetry already was covered by the remark on quasiregulars. The same applies for x4o o4x = o3o3o4x.) )


Isogonal Expansions

Expansion – not in the Stott reading of the term (then resulting in virtually all Wythoffian polytopes), but rather in the Conway reading as the operation e (below mentioned as exp however), which expands say a regular polytope xPoQoRo by its dual oPoQoRx, then resulting in xPoQoRx – could well be considered a bit beyond that restricted setup too, even if it still shall result in an isogonal outcome. The restriction here would be that the starting polytope (to be expanded) has to be a noble polytope and that (the single type of) its facets should be isogonal themselve. Then the expanded polytope clearly happens to remain isogonal. And this then clearly would be independent of the actual expansion rate, as isogonality quite genaral does not account on being used edge sizes.

exp( o3x3x3o ) = sobcated
exp( o3x4x3o ) = sobcotic
exp( o3x x3o ) = triddep
exp( oNx xNo ) = n-dep

Isogonal Doublings

The tegum sum is the hull of the compound of its addends. Applying this to Wythoffian polytopes with centrally symmetric symmetry group diagram, adding on the according outer symmetry, obviously results in at least isogonal hulls.

In the following varieties the size of the lacing edge throughout clearly is determined already by the all over sizes of the component edge sizes, i.e. by the requirement to result in a degenerate (zero height) segmentotope (from which then only the hull elements will contribute). Thus that one does represent a dependent variable only.

ao3oo3oo3oa&#zb - bideca, b:a = sqrt(3/5) = 0.774597
oo3ao3oa3oo&#zb - apid,   b:a = sqrt(2/5) = 0.632456

ao3bo3ob3oa&#zc - bited,  c:a = sqrt[(2y2+2y+3)/5], where y = b:a
ao3ob3bo3oa&#zc - five topologies: all  c:a = sqrt[(2y2-2y+3)/5], where y = b:a
    (0 < b:a < 1/2) - sabred
    (b:a = 1/2)     - respid, c:a = 1/sqrt(2) = 0.707107, c:b = sqrt(2) = 1.414214
    (1/2 < b:a < 3) - mabred
    (b:a = 3)       - redeca, c:a = sqrt(3) = 1.732051, c:b = 1/sqrt(3) = 0.577350
    (3 < b:a < ∞)   - gabred
ab3oo3oo3ba&#zc - biped,  c:|a-b| = sqrt(3/5) = 0.774597
oo3ab3ba3oo&#zc - bimted, c:|a-b| = sqrt(2/5) = 0.632456

ao3bc3cb3oa&#zd
    (a,b,c > 0, c < sqrt[a2+ab+b2]) - sobcated, d = sqrt[(3a2+2a(b-c)+2(b-c)2)/5]
ab3co3oc3ba&#zd - seven topologies: all  d:|a-b| = sqrt[(2y2+2y+3)/5], where y = c:|a-b|
   (a > b)             - (1,4)-expanded bited
   (a = b)             - (1,4)-expanded bamid
   (0 < c:(b-a) < 1/2) - (1,4)-expanded sabred
   (c:(b-a) = 1/2)     - (1,4)-expanded respid
   (1/2 < c:(b-a) < 3) - (1,4)-expanded mabred
   (c:(b-a) = 3)       - (1,4)-expanded redeca
   (3 < c:(b-a) < ∞)   - (1,4)-expanded gabred

ab3cd3dc3ba&#ze
ao3oo4oo3oa&#zb - bicont, b:a = sqrt[2-sqrt(2)] = 0.765367
oo3ao4oa3oo&#zb - bamic,  b:a = 2-sqrt(2) = 0.585786

ao3bo4ob3oa&#zc - bitec,  c:a = sqrt[(6-4 sqrt(2))y2+(6-4 sqrt(2))y+(2-sqrt(2)], where y = b:a
ao3ob4bo3oa&#zc - five topologies: all  c:a = sqrt[(6-4 sqrt(2))y2-(6-4 sqrt(2))y+(2-sqrt(2)], where y = b:a
    (0 < b:a < 1/2)         - sabric
    (b:a = 1/2)             - respic, c:a = 1/sqrt(2) = 0.707107, c:b = sqrt(2) = 1.414214
    (1/2 < b:a < 2+sqrt(2)) - mabric
    (b:a = 2+sqrt(2))       - recont, c:a = sqrt[2+sqrt(2)] = 1.847759, c:b = sqrt[(2-sqrt(2))/2] = 0.541196
    (2+sqrt(2) < b:a < ∞)   - gabric
ab3oo4oo3ba&#zc - bipec,  c:|a-b| = sqrt[2-sqrt(2)] = 0.765367
oo3ab4ba3oo&#zc - bimtec, c:|a-b| = 2-sqrt(2) = 0.585786

ao3bc4cb3oa&#zd
    (a,b,c > 0, c < sqrt[a2+ab+b2]) - sobcotic, d = sqrt[a2(2-sqrt(2))+2a(b-c)(3-2sqrt(2))+2(b-c)2(3-2sqrt(2))]
ab3co4oc3ba&#zd

ab3cd4dc3ba&#ze
aoo3ooo3oao *b3ooa&#zc - ico  → uniform, c:a = 1/sqrt(2) = 0.707107

aoo3ccc3oao *b3ooa&#zd - spic → uniform, c:a = d:a = 1/sqrt(2) = 0.707107
aco3ooo3oac *b3coa&#zd - two topologies: all  d:a = sqrt[(y2-y+1)/2], where y = c:a
    (0 < c:a < 1  or  1 < c:a < ∞) - ...
    (a = c)                        - rico  → uniform, d:a (or d:c) = 1/sqrt(2) = 0.707107

aco3ddd3oac *b3coa&#ze - two topologies with d > 0: all  e:a = sqrt[(y2-y+1)/2], where y = c:a
    (0 < c:a < 1  or  1 < c:a < ∞) - ...
                                     esp. (c:a = (1+sqrt(5))/2, d:a = 1): prissi, e:a = 1
    (a = c)                        - 
acd3ooo3dac *b3cda&#ze

acd3eee3dac *b3cda&#zf
ao3oo oa3oo&#zb - triddit, b:a = sqrt(2/3) = 0.816497

ao3bo oa3ob&#zc
ao3ob oa3bo&#zc - three topologies: all  c:a = sqrt[2(y2-y+1)/3], where y = b:a
    (0 < b:a < 1/2  or  2 < b:a < ∞) - ...
    (b:a = 1/2  or  b:a = 2)         - retdip, c:a (or c:b) = 1/sqrt(2) = 0.707107
    (1/2 < b:a < 2)                  - ...
                                       esp. (b:a = 1): triddap, c:a = c:b = sqrt(2/3) = 0.816497
ab3oo ba3oo&#zc - triddet, c = |b-a| sqrt(2/3)

ao3bc oa3cb&#zd
    (c = b+2a) - tatriddip, d:a = sqrt[(2y2+5y+5)/3], where y = b:a
    (c = b)    - triddep, d:a = sqrt(2/3), independent of y = b:a

ab3cd ba3dc&#ze

Diminishings

Some rare isogonals might occur as subsymmetrical diminishings of other uniform polytopes. This esp. occurs whenever the undiminished form happens to be the convex hull of a compound. Then it might happen that fewer components still provide an isogonal hull. Or that a diminishing at the vertices of one (or more) components


Stepprisms

The lacing squares of an n-gonal duoprism form a polygonal approximation to a torus. Thence this surface can be cut open and streched out to form an n × n grid of squares. Here it becomes obvious that a line of integral inclination, when starting at some vertex and being modwrapped according to the cyclical identifications (corresponding to the former cuts), would run from vertex to vertex: one step to the right and d steps up (mod n). When remapping this pattern back onto the n-n-dip, the hull of those points defines an isogonal polytope, the n-d-stepprism, provided that 1 < d < n-1. (In the remaining cases those points become corealmic and the polytope would degenerate.)

In general the cells of those stepprisms are simplices of lowest possible symmetry. For example the 7-2-stepprism. None the less, in rare cases it happens that higher symmetrical cells occure. E.g. the 5-2-stepprism is nothing but a sqrt(x2+f2) = sqrt[(5+sqrt(5))/2] = 1.902113 scaled pen, i.e. vertex inscribed into a pedip. Or the 8-3-stepprism is nothing but a sqrt(x2+w2) = sqrt[4+2 sqrt(2)] = 2.613126 scaled hex, i.e. vertex inscribed into a odip. And if n and d would not be coprime, then there even might occure higher antiprismatic cells too. Btw. the 6-2-stepprism happens to be well-known for other reasons: it is nothing but the dual of triddip. In fact the same relation applies quite generally for the following sub-class: the (2n)-(n-1)-stepprism is just the n-duotegum, i.e. the dual of the n-duoprism

Besides the isogonal stepprisms themselves some further constructions could be done with those. First of all there is their according n-fold compound within the n-n-dip army. Or, if chiral, an according achiral compound of 2n components. But sometimes it happens that fewer than n components would still provide an isogonal result too. In these cases also the according hull, then resulting in an accordingly diminished n-n-dip, produces a convex isogonal polytope again. An example here is the pentadiminished pentagonal duoprism.


Swirlchora

In a very loose sense all polychora with a swirl-symmetry could be considered swirlchora. A swirl-symmetry is generated by Clifford rotations, which as such are dissecting 4D into 2 orthogonal subspaces and applying a normal 2D ratation each within either subspace at the same time, possibly at different paces. Esp. all the duoprisms would count in here.

In a much more specific sense however this term is used in close relation to the Hopf fibration: That one assures that there is a bijection between the points on a the sphere (2-sphere within 3D) and the great circles of the glome (3-sphere within 4D). A polytwister then is the according mapped result of an orbiform polyhedron. In fact its vertices get mapped to according great circles, its edges into twisted (i.e. non-flat but smoothly curved) faces (then looking like a Möbius strip, but with full turn, thus still orientable), and the faces get mapped into so called twisters, which are solid rings bounded by those twisted faces and having thereby throughout the polygonal cross-section of the pre-image. – Obviously we are way beyond polytopes here. Nonetheless these polytwisters still are kind of inbetween the fully round shapes and elemental hierarchy of polytopes. Swirlchora now come in here as discretisations of those great circles back into polygons again and thus breaking up those partly smooth polytwisters into fully valid polytopal approximations.

While the most direct way of such a breaking up of the individual twisters would be to cut them orthogonally to a (ring-)inscribed polygon, but there clearly would be other ways too. E.g. when starting with a regular polyhedron and applying that described most direct way by means of a likewise regular polygon, the resulting polyhedral sections of each twister would be globally identical chiral antiprisms. Thence such a figure will be isochoric (having identical polyhedral facets).

In fact, the connectedness of the mutually swirling individual twisters does further restrict that n after all. This thus brings back into play the former vertex figure of the starting polyhedron – in addition to the so far only considered faces thereof (the cross-sections of the twisters, i.e. the bases of the antiprisms). Because there also is a full inversion symmetry of the outcome of that fibration, we thus finally have to consideder n = LCM(p, q, 2) for a starting polyhedron {p, q}.

The ones bowing to this restriction happen to be isogonal in addition and thence quallify to be noble at least.

The following table provides a listing of noble n-fold divided polyhedron-based swirlchora. Each is given in its isochoric description and mentioning its polygonal dissectioning.

tetrahedral
4 great circles
4 twisters
octahedral
6 great circles
8 twisters
cubic
8 great circles
6 twisters
icosahedral
12 great circles
20 twisters
dodecahedral
20 great circles
12 twisters
great dodecahedral
12 great circles
12 twisters
ico (n=6, regular)
trap-96 (n=12)
squap-72 (n=12)
trap-600 (n=30)
pap-360 (n=30)
sisp (n=10, uniform)

Powertopes

J. Bowers defines in his glossary the powertopes BP. However then the polytope P in the power is restricted to have brick symmetry. And furthermore the polytope B in the base has to have a center at least, bettermore if it is centro-symmetric. Then he outlines esp. the 4D cases, where B is some {p} and P = {8} (in its axes-aligned orientation).

As it happens all those latter ones can uniformly described in a closed form as a tegum sum too: in fact they are nothing but

xw-p-oo wx-p-oo&#zy

where:
x = 1, w = 1+sqrt(2) = 2.414214, y = 1/sin(π/p)

Indeed, the process requires to use the p-fold ring of the (long) prisms x.-p-o. w. .. from the first layer plus the orthogonal p-fold ring of (long) prisms .w .. .x-p-.o from the other layer, and then asks to connect them directly, i.e. in a lacing sense. These lacing elements thus are rectangular trapezoprisms, which here get described by the elements xw .. wx ..&#zy, where the rectangular bases have edge sizes x and w each, while the lacing edge size will be y.


Isogonal Honeycombs   (up)

Applying the same techniques as above to honeycombs would yield here according isogonal euclidean space "polytopes" as well.

Isogonal Snubs
s4o3o4o (octet: → uniform)
s4x3o4o (rich: → uniform)
s4o3x4o (tatoh: → uniform)
s4o3o4s (octet:  → uniform)
s4o3o4x (sratoh: → uniform)
o4s3s4o (bisch)
= s3s3s3s3*a
s4s3s4o (serch)
s4x3x4o (batch: → uniform)
x4s3s4o (casch)
s4x3o4s (rusch)
s4x3o4x (srich:  → uniform)
x4x3o4s (gratoh: → uniform)
s4s3s4s (snich)
s4s3s4x (esch)
s4x3x4x (grich: → uniform)
s4x3x4s (gabreth)
x4s3s4x (cabisch)
s∞o2o3o6s (ditoh: → CRF)
s∞o2x3o6s (gyrich: → scaliform)
s∞o2o3x6s (...:    → limit-CRF)
s∞o2s3s6o (ditoh: → CRF)
s∞o2s3s6s (...)
s∞o2s3s6x (...)
s∞o2x3x6s (...: → limit-CRF)
s∞x2o3o6s (editoh: → CRF)
s∞x2x3o6s (gyerich: → CRF)
s∞x2o3x6s (...:     → limit-CRF)
s∞x2s3s6o (editoh: → CRF)
s∞x2s3s6s (...)
s∞x2s3s6x
s∞x2x3x6s
s∞o2s4o4o (octet: → uniform)
s∞o2o4s4o (octet: → uniform)
s∞o2s4o4s
s∞o2s4o4x (pacratoh: → CRF)
s∞o2s4s4o (...)
s∞o2s4x4o (...: → limit-CRF)
s∞o2x4s4o (...)
s∞o2s4s4s (...)
s∞o2s4s4x (...)
s∞o2s4x4s (...)
s∞o2s4x4x (...: → limit-CRF)
s∞o2x4s4x (...: → limit-CRF)
s∞x2s4o4o (pextoh: → CRF)
s∞x2o4s4o (pextoh: → CRF)
s∞x2s4o4s
s∞x2s4o4x
s∞x2s4s4o
s∞x2s4x4o
s∞x2x4s4o
s∞x2s4s4s
s∞x2s4s4x
s∞x2s4x4s
s∞x2s4x4x
s∞x2x4s4x

Note, since all 2D (non-holosnub) alternated facetings already resulted in uniform tilings, it becomes clear that according mere honeycomb products with x∞o (or x∞x) generally result in uniform honeycombs too. Therefore those according infinite prismatical honeycombs have been omitted in the above listings a priori. Rather only those have been included here, where some alternation in the axial direction takes place as well.


Isogonal Truncates
trunc( o4x3x4o ) = tabatch
 rect( o4x3x4o ) = rebatch
trunc( x4o3o4x ) = tich (uniform)
 rect( x4o3o4x ) = rich (uniform)
trunc( x3x3o3o3*a ) = tacytatoh
 rect( x3x3o3o3*a ) = recytatoh

Isogonal Doublings
ao4oo3oo4oa&#zb - bichon, b:a = sqrt(3)/2 = 0.866025
oo4ao3oa4oo&#zb - bamich, b:a = 1/sqrt(2) = 0.707107

ao4bo3ob4oa&#zc - bitach, c:a = sqrt[2y2+2y sqrt(2)+3]/2, where y = b:a
ao4ob3bo4oa&#zc - five topologies: c:a = sqrt[2y2-2y sqrt(2)+3]/2, where y = b:a
    (0 < b:a < 1/sqrt(2))         - sabirch
    (b:a = 1/sqrt(2))             - rich (uniform: 'a' pseudo)
    (1/sqrt(2) < b:a < 3/sqrt(2)) - mabirch
    (b:a = 3/sqrt(2))             - rebatch
    (3/sqrt(2) < b:a < ∞)         - gabirch
ab4oo3oo4ba&#zc - bipach,  c:|a-b| = sqrt(3)/2 = 0.866025
oo4ab3ba4oo&#zc - bimtich, c:|a-b| = 1/sqrt(2) = 0.707107

ao4bc3cb4oa&#zd
ab4co3oc4ba&#zd

ab4cd3dc4ba&#ze
ao3oo3oo3oa3*a&#zb - bithon, b:a = sqrt(3/8) = 0.612372
ao3oo3oa3oo3*a&#zb - chon (regular: 'a' pseudo), b:a = 1/sqrt(2) = 0.707107

ao3ob3bo3oa3*a&#zc - three topologies: c:a = sqrt[(3y2-2y+3)/8], where y = b:a
    (1 ≤ b:a < 3) - sobath
                    esp. (b:a = 1): bamich a = b = q, c = x
    (b:a = 3)     - rebtatoh
    (3 < b:a < ∞) - gobath
ao3bo3ob3oa3*a&#zc - ..., c:a = sqrt[(3y2+2y+3)/8], where y = b:a
ao3bo3oa3ob3*a&#zc - ..., c:a = sqrt[(1+y2)/2], where y = b:a
ab3oo3oo3ba3*a&#zc - bimteth, c:|a-b| = sqrt(3/8) = 0.612372

...


Isogonal Polytera   (up)

Applying the same techniques as above within 5D would yield here according isogonal polytera as well.

Isogonal Snubs
s3s3s3s3s (snod / snix)
s3s3s3s4o (snippit / snahin)

x3x3x3x4s (gippit: → uniform)
s3s3s3s4x (pysnan)
s3s3s3s4s (snan)
s3s3s *b3s3s (snahin)
s2s3s3s4x (pysneta)
s2no2o3o4s (...)
s2nx2o3o4s (...)

s4x2o3o4s  (...)
s6o2o3o4s  (...)
s6x2o3o4s  (...)

Isogonal Truncates

Just as for 4D isogonal truncates within 5D too there are exceptional cases where truncation and rectification applies, even beyond the quasiregular polytera as pre-images.

trunc( x3o3o3o3x ) = tiscad
 rect( x3o3o3o3x ) = rescad
trunc( o3x3o3x3o ) = tasibrid
 rect( o3x3o3x3o ) = resibrid



© 2004-2024
top of page