Shapes: planes

XSight RT offers only one infinite surface: the plane. Future versions might include other analytical surfaces.

Syntax

An infinite plane is configured by first specifying the normal vector for the surface. Then, an offset is used to move the plane away from the origin of coordinates.

Example

This example creates three mutually perpendicular planes to simulate a room's corner:

    set plast(c) = plastic(c, 0, 0.8, 8);
    
    plane([0,1,0], 0, plast(color(0.75, 1.00, 0.75)));
    plane([1,0,0], 0, plast(color(1.00, 0.75, 0.75)));
    plane([0,0,1], 0, plast(color(0.75, 0.75, 1.00)));
    
    sphere([0,0,0], 2, metal(royalblue, 0, 0.5));

Planes and CSG

You can use planes in intersections and differences. In that case, a plane represents the half of the space "behind" the normal vector. This is the most important rule to remember:

set side = [1, 0, 0];

set p(mat) = intersection(
    plane(+^y, 0.5, mat),
    plane(-^y, 0.5, mat),
    plane(side, 2.0, mat),
    plane(side, 2.0, mat) spin  72^Y,
    plane(side, 2.0, mat) spin 144^Y,
    plane(side, 2.0, mat) spin 216^Y,
    plane(side, 2.0, mat) spin 288^Y);
set side = [1, 1, 0];
intersection(
    plane (-^z, 1, mat) spin [+52.6625,    0, 0],
    plane (-^z, 1, mat) spin [+52.6625,  -72, 0],
    plane (-^z, 1, mat) spin [+52.6625, -144, 0],
    plane (-^z, 1, mat) spin [+52.6625, -216, 0],
    plane (-^z, 1, mat) spin [+52.6625, -288, 0],
   
    plane (-^z, 1, mat) spin [+10.8125,    0, 0],
    plane (-^z, 1, mat) spin [+10.8125,  -72, 0],
    plane (-^z, 1, mat) spin [+10.8125, -144, 0],
    plane (-^z, 1, mat) spin [+10.8125, -216, 0],
    plane (-^z, 1, mat) spin [+10.8125, -288, 0],
   
    plane (-^z, 1, mat) spin [-52.6625,  -36, 0],
    plane (-^z, 1, mat) spin [-52.6625, -108, 0],
    plane (-^z, 1, mat) spin [-52.6625, -180, 0],
    plane (-^z, 1, mat) spin [-52.6625, -252, 0],
    plane (-^z, 1, mat) spin [-52.6625, -324, 0],
   
    plane (-^z, 1, mat) spin [-10.8125,  -36, 0],
    plane (-^z, 1, mat) spin [-10.8125, -108, 0],
    plane (-^z, 1, mat) spin [-10.8125, -180, 0],
    plane (-^z, 1, mat) spin [-10.8125, -252, 0],
    plane (-^z, 1, mat) spin [-10.8125, -324, 0],
    mat);

See also

Home | Small Instantiation Language overview | Predefined shapes | Surfaces | Triangles | Polyhedra | CSG operations