# BRLCAD Glossary

acyclic directed graph
  In an acyclic directed graph, usually called a DAG, each node may have arcs pointing to multiple objects, and each object may be pointed to by multiple objects. However, no node is permitted to refer to any of its ancestors.

air code
  See space code.

azimuth
  Viewing aspects in mged may be specified in terms of azimuth, elevation, and twist.

  Azimuth is the angle (in degrees) around the z-axis through which the viewing direction is rotated from the positive xz-quarterplane towards the positive y-axis. When azimuth = elevation = 0, for instance, viewing is parallel to the x-axis in the direction of decreasing x. When azimuth = 90 degrees, viewing is parallel to the yz-plane along some direction of decreasing y: the precise direction within the yz-plane being specified by the elevation. Azimuth can take on any real value.

Boolean
  The Boolean (i.e., set-theoretic) operations of union, intersection, and subtraction are used in constructive solid geometry to build complex objects from simpler ones.

boundary representation
  Boundary representation (BREP) is one of the two major types of solid modeling, the other being constructive solid geometry. BREP objects are built by describing the entire enclosing surface of an object. This will typically involve a variety of surface types including, for example, planar, cylindrical, NURB, and spherical surfaces. While objects in a BREP system may be built using Boolean operations, the resulting object is typically stored as a set of enclosing surfaces.

combination
  A combination is a formula for combining primitive solids and/or other objects into a more complex shape. Each solid or other combination directly in this formula is referred to as a member of this combination. The formula may involve intersection, subtraction, and union operations, and the combination may be assigned a shader and a color. Combinations are typically built in mged using the c, comb, r, or g commands.Regions and groups are special types of combinations.

constructive solid geometry
  Constructive solid geometry (CSG), sometimes referred to as combinatorial solid geometry, is one of the two major types of solid modeling (The other being boundary representation). In a CSG system, complex objects are built by combining simpler objects, with primitive solids as the basic building blocks. The combinations make use of Boolean operations, and the resulting objects are stored as trees. BRLCAD is actually a hybrid of CSG and BREP, but its main emphasis is on the CSG capabilities.

DAG
  See acyclic directed graph.

elevation
  Viewing aspects in mged may be specified in terms of azimuth, elevation, and twist. Elevation is the angle (in degrees) through which the viewing direction is rotated out of the xy-plane towards the positive z-axis (see the illustration in the azimuth entry). When elevation = 90 degrees, for instance, viewing is parallel to the z-axis in the direction of decreasing z. Elevation can take on any real value between -90 and +90 degrees.

group
  A group is a combination with all union operators. Typically a group is used to combine components into a subsystem, subsystems into a system, or systems into top-level collections.

ident
  An ident (also referred to as component ID, region ID, item, or ID code) is an integer assigned to a region or regions to encode information used by application programs that process BRLCAD models. Idents are assigned by the user and are not directly used by BRLCAD, but are reported to applications that need them.

inheritance
  Inheritance is an attribute of combinations that determines how shader attributes are handled when a member of a combination is itself a combination. If the inheritance flag is set to 1, then all the shader attributes of combinations lower in the tree are overridden by this combination.

key solid
  The key solid is the solid used to provide a reference during matrix editing operation. Rotations, translations, and scaling in this mode are performed about a point on the ``key solid''.

LOS
  An LOS is a percentage (0 to 100) assigned to a region representing the percentage of the region that consists of material substance. It might be thought of as the region's solidity, and is somewhat analogous to the alpha channel of a computer graphics display. LOS is assigned by the user and is not directly used by BRLCAD, but is reported to applications that need it.

material code
  A region may be assigned an integer material code by the user. This is intended to identify the material used to build the part. Material codes are assigned by the user and are not directly used by BRLCAD, but are reported to applications that need them.

matrix edit mode
  This is the mode that mged is in while editing a transformation matrix in a combination. It is characterized by the illumination of one object in the graphics window, and the appearance of matrix editing selections in the Edit menu. This mode may be entered through the Matrix Selection.. entry of the Edit menu, or via the oed command. Editing operations such as rotation, translation, and scale may be performed in this mode and will affect all objects below the edited matix in the tree. These operations will be applied in reference to a key solid that is a leaf of that tree.

member
  An object is referred to as a member of a combination if it is directly referenced by the combination.

MGED
  Mged is the interactive graphical editor for BRLCAD. It may be used to view, modify, and create models. Normally, the user views the model in a wireframe display in mged.

model coordinates
  In a BRLCAD model, the model coordinates are the actual coordinates of points on the model in real units. The user may position a model at any desired location in model coordinates. By convention in BRLCAD, a model is oriented so that the positive x-axis points from the model's back to its front, the positive y-axis points from the model's right to its left, and, since the coordinate system is right handed, the positive z-axis points from the model's bottom to its top. All BRLCAD models are stored in millimeters, however the user may operate in nearly any units by using the mged units command. See also view coordinates.

object
  Objects are the fundamental entities constituting a BRLCAD model. They are the nodes of the DAG into which the database is organized. The terminal nodes, or leaves, of the DAG are the solids and the internal nodes are the combinations, of which two types are regions and groups.

path
  A path to an object in BRLCAD is a list of combinations that ends at the desired object. Paths are specified with a syntax similar to the one used in UNIX file systems (with ``/'' characters as separators). Each element of the path must be a member of the previous element. For example, ``left_arm/arm/hand/thumb'' might be a path from ``left_arm'' to ``thumb'' in some BRLCAD database indicating that ``arm'' is a member of ``left_arm'', ``hand'' is a member of ``arm'', and ``thumb'' is a member of ``hand''. The path information implies a set of transformation matrices (each member of a combination has a transformation matrix associated with it). As a path is traversed, the effects of encountered transformation matrices are accumulated, and typically applied to the object at the end of the path. This means that the ``thumb'' referred to by the path ``left_arm/arm/hand/thumb'' is likely to be in a different location and orientation (and possibly scaled) from the ``thumb'' referred to by ``right_arm/arm/hand/thumb''.

primitive solid
  Primitive solids are the basic building blocks of CSG solid modeling systems. The primitive solids available in BRLCAD include:
  - ARB
  - ARBN
  - arbitrary faceted solid
  - extruded bitmap
  - Right Hyperbolic Cylinder
  - Elliptical Hyperboloid
  - Elliptical Paraboloid
  - Right Parabolic Cylinder
  - Elliptical Torus
  - Ellipsoid
  - Half Space
  - Height Field
  - NonManifold Geometry
  - Particle
  - Polysolid
  - Spline
  - Truncated General Cone
  - Torus
  - VOL

solid edit mode
  This is the mode that mged is in while editing an individual solid. It is characterized by the illumination of one solid in the graphics window, and the appearance of solid editing selections in the Edit menu. This mode may be entered through the Solid Selection.. entry of the Edit menu, or via the sed command. Solid specific editing may be performed in this mode, as well as rotations, translations, and scaling.

quaternion
  Internal to mged, the viewing orientation is handled in terms of quaternions. A quaternion is a method for representing an arbitrary rotation without the ambiguity at the poles that accompanies some methods. A quaternion may be thought of as a vector (defining an axis of rotation), and a rotation about that axis.

ray trace
  Ray tracing is the main method for interrogating BRLCAD models. It is performed by selecting a start point and a ray direction, then calculating the intersections of the resulting ray with all the primitive solids it encounters. The segments of the ray that intersect each primitive solid are then combined according to the Boolean expressions for each region that refers to those solids. The result is a series of intervals on the ray, called partitions, that intersect each region along the ray. If the objective of the ray tracing effort is to produce an image, the calculations will typically be stopped after the first region is encountered. The BRLCAD rt program performs such ray tracing.

region
  A region is a combination with special significance for application programs that process BRLCAD models. It corresponds to a physical entity of uniform material properties. In addition to all the attributes of any combination, a region also has an ident number, a material code number, an LOS number, and a space code number. No two regions in a model should share any points in space. Such overlaps are reported, for instance, by the BRLCAD ray tracer, rt.

region ID
  See ident.

RGB
  RGB is an abbreviation for Red, Green, and Blue. When a color is specified in BRLCAD, it is in terms of its primary color components. Each component may be from 0 to 255. An RGB of ``0 0 0'' is black, ``255 255 255'' is white, and ``0 255 0'' is green.

rt
  Rt is one of the programs in the BRLCAD package. It is used to ray trace a model and produce a color shaded image. rt supports transparency, reflection, refraction, shadows, texture mapping, light sources, and animation.

shader
  A shader is a BRLCAD module that performs calculations to determine the actual pixel color to be displayed when a ray intersects an object during rendering by rt. Shaders are assigned to combinations by the user, and some allow additional parameters to adjust their appearance. Available shaders include mirror, glass, plastic, and texture (for texture mapping). Source code modules in the rt directory with names of the form sh_*.c correspond to the available shaders.

solid model
  A solid model is a description of an object or objects produced in such a way that any point can be classified without ambiguity as lying inside, outside, or on the surface of a modeled object. This means that a true solid model cannot have surfaces that do not completely enclose space, and solid objects that are defined in the model must not be defined based on irrelevant variables such as viewing direction.

space code
  A space code (or air code) is assigned to regions that are intended to represent ``empty air'' rather than solid parts of the model. The code number may be used to distinguish different air spaces from one another. Regions representing solid parts must have a space code of 0. Space codes are assigned by the user and are not directly used by BRLCAD, but are reported to applications that need them.

tree
  A tree is a Boolean expression representing some aggregation of objects. Strictly speaking, this is an abuse of the term tree: such Boolean expressions are not trees in either the computer-science or the graph-theoretic sense, but are more correctly referred to as acyclic directed graphs, also known as DAGs.

twist
  Viewing aspects in mged may be specified in terms of azimuth, elevation, and twist. Twist is the angle (in degrees) around the screen-z-axis through which the the (model-) z-axis is rotated from the positive screen-y-axis towards the positive screen-x-axis. (see the illustration in the azimuth entry). When twist = 0, for instance, the positive z-axis is some nonnegative scalar multiple of the positive screen-y-axis.

view coordinates
  When an object is displayed in the mged graphics window, it is converted from model to view coordinates. The view coordinate system has its origin at the center of the viewing cube (the center of the mged display). The view x-axis always points to the right, the view y-axis always points toward the top of the display, and the view z-axis always points out of the screen towards the viewer. The visible portion of view space (known as the ``viewing cube'') extends from -1.0 to +1.0 along each of the view axes.