SSC3 (InstanceTopic, 3)

From Hi.gher. Space

SSC3, standing for Standard Shape Construction version 3, is a notation for defining shapes. It is the successor to SSC2. The notation is currently in draft.

All shapes representable in SSC3 are written as a sequence. The elements of the sequence may be other SSC3 sequences, or non-negative numbers.

Sequence classes

There are a number of classes of sequences, which determine how the shape is constructed.

Point and digon

The point and digon sequence classes are written as <0> and <1> respectively, and each represent only one shape, the point and digon respectively.

Regular polygon

The regular polygon sequence class is written as <2, n>, where n is the number of sides on the polygon, at least 3.

Dual polygon

The dual polygon sequence class is written as <2, n, 1>, where n is the number of sides on the polygon, at least 3. By itself, this is not a valid SSC3 shape, however they are important when used as the operator of a brick product. More formally, the sequence <2, n, 1> can only ever appear as the value of P in a brick product sequence class (below), and n must be a multiple of 4 (otherwise, a different order of arguments could be used for the same result).

Kanitope

The kanitope sequence class is written as <n, f, Dx>, where n is the dimensionality of the polytope (must be at least 3), f is the family, and Dx is the Dx number of the polytope, which must be between 1 and 2n inclusive, except in four special cases (below) where it may be zero.

Valid families are:

The special cases are:

Closed toratope

The closed toratope sequence class can be considered a sub-notation, and is based off of toratopic notation. The sequence is interpreted as if by a machine with a stack. Each element of a closed toratope sequence must be a positive integer (i.e. not zero or a shape).

An instance of the number 1 pushes a digon ("I") onto the stack; a number a > 1 does the following actions:

  • pops a values from the top of the stack,
  • reverses them (just for orientation's sake),
  • spherates them, i.e. "puts them in parentheses" (as toratopic notation would), and
  • pushes the resulting shape onto the stack.

Notice that the following statements always hold for closed toratope sequences:

  • the sequence starts with at least two 1s (thus avoiding ambiguity with other sequence classes);
  • the sequence does not end with a 1;
  • the number of 1s is the number of dimensions;
  • the number of higher numbers is the number of pairs of brackets;
  • the sum of the higher numbers is one less than the total number of numbers.

Examples:

  • sphere -- toratopic notation (III) -- SSC3 <1, 1, 1, 3>
  • torus -- toratopic notation ((II)I) -- SSC3 <1, 1, 1, 2, 2>
  • tiger -- toratopic notation ((II)(II)) -- SSC3 <1, 1, 2, 1, 1, 2, 2>

Brick product

The brick product sequence class is written as <P, A1, A2, ..., An>, where P is the operator shape (which must be a brick) and the remaining elements Ai (of which there must be at least two) are the operand shapes. n (the number of elements after P) must also be equal to the dimensionality of P. Whether the order of particular elements matters depends on the value of P (so in general, it does matter). It is not possible to write a powertope using an exponent; elements must be repeated in the sequence, although store-and-recall notation (below) may be used if desired. The dimensionality of a shape represented with this sequence class is equal to the sum of the dimensionalities of the elements Ai.

Valid bricks

While brick symmetry is already well defined, here are some rules of thumb for determining what shapes are valid values of P in a brick product:

  • The point and digon are technically bricks, but since they are less than two-dimensional, the resulting sequence could not satisfy at once the two restraints that it must contain at least two elements after P and that the number of such elements must be equal to the dimensionality of P.
  • Regular 2k-gons, k integer, are bricks.
  • Dual 4k-gons, k integer, are bricks (so are dual 2k-gons, but these are not allowed in a brick product as the same product can be represented in a different way).
  • All kanitopes that can be represented outside of a simplex family and aren't snubs are bricks.
  • All toratopes are bricks.
  • For any given brick product sequence, if all its elements are bricks, then the sequence as a whole also represents a brick.

Prismatoid

The prismatoid sequence class is written as <P, a1, a2, ..., an>, where P is the operator shape and the remaining elements are Dx numbers, with the extensions that Dx 0 is valid and represents a point, and that when P is a k-gon, Dx 4 is also valid and represents the dual 2k-gon. A shape represented with this sequence class will be the piecewise linear sweep between copies of P, truncated as appropriate and positioned in parallel hyperplanes.

Store and recall

Store-and-recall notation is a shortcut to allow SSC3 sequences containing many repeated subsequences to avoid repeating these subsequences explicitly. Storage is done by preceding an expression by an identifier (a sequence of one or more capital letters) followed by an equals sign ("="), and recollection is done by inserting the same identifier in a different place.

The following situations are invalid:

  • the same identifier appears in a whole sequence preceding an equals sign more than once (multiple assignment);
  • an identifier appears not preceding an equals sign when that identifier did not appear preceding an equals sign anywhere else in the whole sequence (non-assignment).

All recollections should be resolved, and all storages removed, before the sequence as a whole is evaluated.

List of example shapes with their SSC3 notation

Below 3D

  • point: <0>
  • digon: <1>
  • triangle: <2, 3>
  • square: <2, 4>
  • pentagon: <2, 5>
  • hexagon: <2, 6>
  • octagon: <2, 8>
  • decagon: <2, 10>
  • diamond: <2, 4, 1>
  • dual octagon: <2, 8, 1>
  • circle: <1, 1, 2>

Uniform polyhedra

  • tetrahedron: <3, 1, 1>
  • cube: <3, 2, 1>
  • octahedron: <3, 2, 4>
  • dodecahedron: <3, 5, 1>
  • icosahedron: <3, 5, 4>
  • tetrahedral truncate: <3, 1, 3>
  • cuboctahedron: <3, 2, 2>
  • cubic truncate: <3, 2, 3>
  • octahedral truncate: <3, 2, 6>
  • cuboctahedral rectate: <3, 2, 5>
  • cuboctahedral truncate: <3, 2, 7>
  • cubic snub: <3, 2, 0>
  • icosidodecahedron: <3, 5, 2>
  • dodecahedral truncate: <3, 5, 3>
  • icosahedral truncate: <3, 5, 6>
  • icosidodecahedral rectate: <3, 5, 5>
  • icosidodecahedral truncate: <3, 5, 7>
  • dodecahedral snub: <3, 5, 0>

Select 3D (anti)prisms

  • triangular prism: <<2, 3>, 1, 1>
  • hexagonal prism: <<2, 6>, 1, 1> or <<2, 3>, 3, 3>
  • octagonal prism: <<2, 8>, 1, 1> or <<2, 4>, 3, 3>
  • square antiprism: <<2, 4>, 1, 2>
  • pentagonal prism: <<2, 5>, 1, 1>
  • decagonal prism: <<2, 10>, 1, 1> or <<2, 5>, 3, 3>
  • pentagonal antiprism: <<2, 5>, 1, 2>

Johnson solids (as prismatoids)

  • J1 square pyramid: <<2, 4>, 1, 0>
  • J2 pentagonal pyramid: <<2, 5>, 1, 0>
  • J3 triangular cupola: <<2, 3>, 1, 3>
  • J4 square cupola: <<2, 4>, 1, 3>
  • J5 pentagonal cupola: <<2, 5>, 1, 3>
  • J6 pentagonal rotunda: <<2, 5>, 1, 2, 3>
  • J7 elongated tetrahedron: <<2, 3>, 1, 1, 0>
  • J8 augmented cube: <<2, 4>, 1, 1, 0>
  • J9 elongated pentagonal pyramid: <<2, 5>, 1, 1, 0>
  • J10 gyroelongated square pyramid: <<2, 4>, 1, 2, 0> or <<2, 4>, 2, 1, 0>
  • J11 diminished icosahedron: <<2, 5>, 1, 2, 0> or <<2, 5>, 2, 1, 0>
  • J12 triangular bipyramid: <<2, 3>, 0, 1, 0>
  • J13 pentagonal bipyramid: <<2, 5>, 0, 1, 0>
  • J14 elongated triangular bipyramid: <<2, 3>, 0, 1, 1, 0>
  • J15 elongated square bipyramid: <<2, 4>, 0, 1, 1, 0>
  • J16 elongated pentagonal bipyramid: <<2, 5>, 0, 1, 1, 0>
  • J17 gyroelongated square bipyramid: <<2, 4>, 0, 1, 2, 0>
  • J18 elongated triangular cupola: <<2, 3>, 1, 3, 3>
  • J19 elongated square cupola: <<2, 4>, 1, 3, 3>
  • J20 elongated pentagonal cupola: <<2, 5>, 1, 3, 3>
  • J21 elongated pentagonal rotunda: <<2, 5>, 1, 2, 3, 3>
  • J22 gyroelongated triangular cupola: <<2, 3>, 1, 3, 4>
  • J23 gyroelongated square cupola: <<2, 4>, 1, 3, 4>
  • J24 gyroelongated pentagonal cupola: <<2, 5>, 1, 3, 4>
  • J25 gyroelongated pentagonal rotunda: <<2, 5>, 1, 2, 3, 4>
  • J26 is not a prismatoid
  • J27 triangular orthobicupola: <<2, 3>, 1, 3, 1>
  • J28 square orthobicupola: <<2, 4>, 1, 3, 1>
  • J29 square gyrobicupola: <<2, 4>, 1, 3, 2>
  • J30 pentagonal orthobicupola: <<2, 5>, 1, 3, 1>
  • J31 pentagonal gyrobicupola: <<2, 5>, 1, 3, 2>
  • J32 pentagonal orthocupolarotunda: <<2, 5>, 1, 3, 2, 1>
  • J33 pentagonal gyrocupolarotunda: <<2, 5>, 1, 3, 1, 2>
  • J34 pentagonal orthobirotunda: <<2, 5>, 1, 2, 3, 2, 1> or <<2, 5>, 2, 1, 3, 1, 2>
  • J35 elongated triangular orthobicupola: <<2, 3>, 1, 3, 3, 1>
  • J36 elongated triangular gyrobicupola: <<2, 3>, 1, 3, 3, 2>
  • J37 elongated square gyrobicupola: <<2, 4>, 1, 3, 3, 2>
  • J38 elongated pentagonal orthobicupola: <<2, 5>, 1, 3, 3, 1>
  • J39 elongated pentagonal gyrobicupola: <<2, 5>, 1, 3, 3, 2>
  • J40 elongated pentagonal orthocupolarotunda: <<2, 5>, 1, 3, 3, 2, 1>
  • J41 elongated pentagonal gyrocupolarotunda: <<2, 5>, 1, 3, 3, 1, 2>
  • J42 elongated pentagonal orthobirotunda: <<2, 5>, 1, 2, 3, 3, 2, 1> or <<2, 5>, 2, 1, 3, 3, 1, 2>
  • J43 elongated pentagonal gyrobirotunda: <<2, 5>, 1, 2, 3, 3, 1, 2>
  • J44 gyroelongated triangular bicupola: <<2, 3>, 1, 3, 4, 2>
  • J45 gyroelongated square bicupola: <<2, 4>, 1, 3, 4, 2>
  • J46 gyroelongated pentagonal bicupola: <<2, 5>, 1, 3, 4, 2>
  • J47 gyroelongated pentagonal cupolarotunda: <<2, 5>, 1, 3, 4, 1, 2>
  • J48 gyroelongated pentagonal birotunda: <<2, 5>, 1, 2, 3, 4, 1, 2>
  • J49-J92 are not prismatoids

3D tapertopes, bracketopes and toratopes

  • sphere: <1, 1, 1, 3>
  • cylinder: <<1, 1, 2>, 1, 1>
  • cone: <<1, 1, 2>, 1, 0>
  • bicone: <<1, 1, 2>, 0, 1, 0>
  • crind: <<1, 1, 2>, <2, 4>, <1>>
  • torus: <1, 1, 1, 2, 2>

Advantages over SSC2

  • The notation is much more constrained, due to the use of sequences instead of lots of different atoms, operators and grouping structures.
  • Because of this, it would be far easier to implement a binary encoding for than SSC2, and an equivalent to the SSC2 matrix notation is unnecessary.
  • Although SSC3 does not achieve uniqueness, there are fewer possible ways to represent the same shape.
  • The set of manifolds is excluded. This is a good thing because it removes clutter without actually excluding in practice any shapes from what SSC3 can represent as compared to SSC2.
  • The prismatoid operation now does not use a convex hull, so it can create non-convex shapes.
  • The prismatoid operation now uses Dx numbers directly, so prismatoids can be represented far more consisely.

Disadvantages over SSC2

  • Because the prismatoid operation is no longer general, it cannot be used to construct arbitrary convex shapes from key cross-sections. However it is hoped that the advantages outweigh this disadvantage.
  • Representations are longer (in terms of number of characters in the string), due to the constrained notation.
  • It is less obvious whether a given string is valid, and in general less obvious what a particular string represents.
  • Incompatible with SSC2 and toratopic notation.