Functions | |
void | Edit_Cutting_Plane (HC_KEY key, double a, double b, double c, double d) |
void | DEdit_Cutting_Plane (HC_KEY key, double a, double b, double c, double d) |
void Edit_Cutting_Plane | ( | HC_KEY | key, |
double | a, | ||
double | b, | ||
double | c, | ||
double | d | ||
) |
Modifies a cutting plane as it exists in the database.
key | Key to a cutting plane object. |
a | - The parameters of an equation of the form ax + by + cz + d = 0, defining a plane. |
b | - As above. |
c | - As above. |
d | - As above. |
3D objects can be hard to comprehend when depicted on a 2D computer screen. One of the techniques to aid understanding is to slice the object open. A "Cutting Plane", when inserted with other geometry in a HOOPS scene, basically causes all the geometry on the "open" side of the plane to vanish.
A HOOPS "scene" is the segment tree and all the geometry within a single HOOPS window. Cutting planes can be anywhere in the segment tree—they will still apply to the whole scene (with the exceptions noted below.) This allows the cutting plane to have its own attribute context—most importantly, segment name and current Modelling Matrix. It is the same rule that light sources follow in HOOPS.
Planes have two sides. If you consider the (a, b, c) part of the plane equation as a vector pointing out of the plane, that vector is normal to the plane and is, by convention, pointing out into the open cut-away territory. The side of the plane "behind" the normal vector is, by convention, the part of the scene retained by the cutting action.
There can be as many cutting planes as you want in a scene. There might be some limit as to how many planes can be handled in the hardware before the system has to switch to software mode. See the "hardware cutting planes" in Show_Device_Info() for details. Cutting planes have no effect on each other—other geometry is removed if it is cut away by any plane.
There are a few exceptions to the cutting action. First, lights are completely exempted—they are never cut away. Second, if "cutting plane" visibility is "off" for the branch of the segment tree in which the cutting plane is located, the cutting plane is turned off completely. Finally, if "cutting plane" visibility is "off" for a branch of the tree in which regular geometry is located, that geometry will not "receive" cutting planes: it will be exempted from being cut. This permits a partial cut-away to be drawn.
Cutting planes slow drawing down a little.
Cutting planes do not act within a marker symbol, a wide line, or a single text character (unless the text is fully-transformable.)
On some devices setting the "no clipping" Heuristic may have the side effect of disabling cutting planes.
Cutting planes cannot be scaled by 0.
void DEdit_Cutting_Plane | ( | HC_KEY | key, |
double | a, | ||
double | b, | ||
double | c, | ||
double | d | ||
) |
Similar to Edit_Cutting_Plane(), but operates on double-precision data.
key | Key to a cutting plane object. |
a | - The parameters of an equation of the form ax + by + cz + d = 0, defining a plane. |
b | - As above. |
c | - As above. |
d | - As above. |