Brick product (InstanceTopic, 3)

From Hi.gher. Space

The brick product is a very generalized operation, written as Q = P{A1, A2, ..., An}. P is called the operator and Ai are called the operands. Their values must satisfy the following constraints:

  • P must be a brick.
  • The dimensionality of P must equal n.

The resultant shape Q will have the following properties:

  • The dimensionality of Q will be the sum of the dimensionalities of Ai.
  • Q will be a brick if and only if all Ai are bricks.
  • Q will be convex if and only if both P and all Ai are convex.


Please note this definition should currently only be used for convex P. A good formal definition for non-convex P is in the works.

For each point x = (x1, x2, ..., xn) in P, the brick symmetry guarantees that (-x1, x2, ..., xn) is also in P. This means the line segment between these two points has length 2x1. In fact, for any 1 ≤ in, a line segment can be constructed between (x1, ..., xi, ..., xn) and (x1, ..., -xi, ..., xn) with both endpoints in P, by definition of brick symmetry of P, each with length 2xi. Collect these lengths into an array l(x) = (l1, l2, ..., ln) = (2x1, 2x2, ..., 2xn).

Now, for each point x, we form the Cartesian product A1|l1 × A2|l2 × ... × An|ln, where the notation Ai|li means the operand Ai scaled by the length li.

Then Q = P{A1, A2, ..., An} is the union over all x in P of the surfaces of the Cartesian products A1|l1 × A2|l2 × ... × An|ln.

As a concise expression:

Q = ⋃{ S( ∏{ Ai|2xi | 1 ≤ in } ) | x ∈ P }

where ⋃ represents the union of all members of a set, ∏ represents the Cartesian product of all members of a set, and S(X) is a function mapping a max-frame shape X to its surface (preceding frame). That is to say, S(X) is the set of all points x in X such that every neighbourhood N(x) of x contains both points in X and points not in X:

S(X) = { x ∈ X | ∀N(x) · ( y ∈ N(x) · y ∈ X ∧ ∃y ∈ N(x) · y ∉ X ) }

where N(x) = {y | (|y-x|) < k} for some positive number k. Note that the neighbourhood is taken in the bounding space of X, so S(S(X)) = S(X) and S(Point) = ∅.


  • When P is the point, the operation is trivial, takes no operands, and the result by the definition above is an empty set; some uses may prefer to define Point{} = Point.
  • When P is the digon, the operation simply scales its operand by the digon's length. If the length of the digon is 1, the operation becomes the identity operation.
  • When P is a hypercube of side length 1, the operation is the Cartesian product.
  • When P is a cross polytope of diameter 1, the operation is the tegum product.
  • When P is a hypersphere of diameter 1, the operation is the crind product.
  • When all Ai are equal, the operation produces a powertope (AiP, read "the P of Ai").
    • When each Ai is also equal to P, the operation produces a tetrate (the P-al n-tetrate).


  • The brick product was conceived by Keiji while he was seeking such a generalized product operation. It was inspired by an email conversation between him and Jonathan Bowers about the latter's research into powertopes, and the name of brick product was taken from the term brick symmetry, which Bowers described his powertope bases as requiring in said email convesation.
  • The formal definition for the brick product was worked out by quickfur using examples of its results provided by Keiji.

External links