This object is named so in hommage to Kepler, a mathematician and astronomer of Rodolphe II, who studied and named the starred polyedrons.
The kepler
object creates a shape containing only those areas where at least MIN components overlap.
The kepler2
object is a kepler from which areas where more than MAX components overlap have been removed
The kepler of three objects.
The kepler2 of three objects.
. The syntax is:
- kepler {
MIN, OBJECTS... [OBJECT_MODIFIERS...] }
- kepler2 {
MIN, MAX, OBJECTS... [OBJECT_MODIFIERS...] }
Keplers are a mix between union and intersection used to bind three or more shapes into a single entity that can be manipulated as a single object. The images above shows the kepler of A
, B
and C
with a MIN of 2 (and a MAX of 2 for the kepler2). The new object created by the kepler operation can be scaled, translated and rotated as a single shape. The entire kepler can share a single texture but each object contained in the kepler may also have its own texture, which will override any texture statements in the parent object.
You should be aware that the surfaces inside the kepler will not be removed. As you can see from the figure this may be a problem for transparent kepler.
MIN and MAX (which only appears in kepler2
) may be negative: -1 means all of the components, -2 means all minus 1, and so on. This may be useful for components generated in loop. Anyway, the value of zero is always forbidden, and at the very end, the MIN should always be lesser or equal to the MAX and either to the number of components (yes, at the very end, because kepler2 { 1, -1 ... }
is valid (it's just an union)).
The following kepler will contain the 12 planes of a dodecaedron.
kepler{ 11, plane {-z, 1 rotate <-26.56505117708, 0, 0>} plane {-z, 1 rotate <-26.56505117708, -72, 0>} plane {-z, 1 rotate <-26.56505117708, -144, 0>} plane {-z, 1 rotate <-26.56505117708, -216, 0>} plane {-z, 1 rotate <-26.56505117708, -288, 0>} plane {-z, 1 rotate <26.56505117708, -36, 0>} plane {-z, 1 rotate <26.56505117708, -108, 0>} plane {-z, 1 rotate <26.56505117708, -180, 0>} plane {-z, 1 rotate <26.56505117708, -252, 0>} plane {-z, 1 rotate <26.56505117708, -324, 0>} plane { y, 1} plane {-y, 1} }