Editing BRL-CAD Primitives

From BRL-CAD

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 14: Line 14:
 
= Arbitrary convex polyhedra =
 
= Arbitrary convex polyhedra =
  
An '''arbitrary convex polyhedron''' ('''arb''') is a geometric volume that is completely enclosed by a set of 3-dimensional planes. Each has a set of straight-edged, flat '''faces''' outlined by the intersections of those planes. The intersection of each pair of planes is a line whose intersections with other planes defines a pair of '''vertices'''. The line segment between those two vertices is an '''edge''' of the polyhedron that is shared by two faces. Each vertex is common to an equal number (at least three) of faces and edges.
+
An '''arbitrary convex polyhedron''' ('''arb''') is a geometric solid that is completely enclosed by a set of 3-dimensional planes. Each has a set of straight-edged, flat faces/facets defined by those planes and their intersections. For example, a rectangular parallelpiped (rpp) is enclosed by six planes--two perpendicular/normal to the X-axis, two normal to the Y-axis, and two normal to the Z-axis.
  
For example, a rectangular parallelepiped is enclosed by three orthogonal pairs of parallel planes. Their intersections define six faces, each with four edges and four vertices. There are a total of 12 edges (each shared by two faces) and 8 vertices (each shared by three faces and three edges).
+
The BRL-CAD geometry file format defines two types of arb object records:
 +
* '''arb8'''s are specified by a set of eight vertices (V1 through V8) that collectively define up to six facets.
 +
* '''arbn'''s are specified by a set of intersecting planes, each defined by four coefficients.
  
The BRL-CAD geometry file format defines two types of records for such polyhedra:
+
Although any arb object could be defined and stored as an arbn, the arb8 record type is used to store all of the special-case arbs discussed below (that is, all except the explicitly arbn type).
* [[#ARB8 Records|'''arb8'''s]] are specified by a set of eight vertices.
 
* [[#ARBN Records|'''arbn'''s]] are specified by a set of intersecting planes, each defined by four coefficients.
 
  
Although any polyhedron can be defined and stored as an arbn, the arb8 record type is more commonly employed because it is simpler to work with and still accommodates most constructive solid geometry applications.
+
'''See also:''' [[Creating and editing arbs]]
  
== ARB8 Records ==
+
== Rectangular parallelpiped (rpp) ==
  
An '''arb8''' record is specified by a set of eight {X, Y, Z} vertices designated V1 through V8, which need not all be unique. BRL-CAD uses such records to represent polyhedra having four, five or six faces:
+
[[Image:DefaultRppThumb.png|right]]
  
* '''arb8''' shapes have eight unique vertices. They represent '''hexahedra''' that have six quadrilateral faces sharing eight edges. In addition to simply specifying the {X, Y, Z} coordinates of those vertices, MGED provides easier ways to create the following specific types of hexahedra:
+
As mentioned above, each '''rectangular parallelpiped''' ('''rpp''') is enclosed by two planes normal to the X-axis (mathematically defined by X = Xmin and X = Xmax), two normal to the Y-axis (Y = Ymin and Y = Ymax), and two normal to the Z-axis (Z = Zmin and Z = Zmax). The opposing faces of any such arb are thus pairs of similar rectangles. If Xmax - Xmin = Ymax - Ymin = Zmax - Zmin, as they are for the default rpp created by MGED's make and create commands, the resulting ppp would be a cube with edges parallel to the three axes.
** '''3ptarb''' shapes represent '''right quadrilateral prisms''', which are extruded quadrilaterals having parallel ends connected by four rectangular sides.
 
** '''box''' shapes represent '''parallelepipeds''', whose faces comprise three pairs of equal parallelograms. Unlike a common box, those faces need not be rectangular—if they are, the enclosed volume is a rectangular parallelepiped.
 
** '''rpp''' shapes represent '''rectangular parallelepipeds''' (also known as '''cuboids''' and '''rectangular prisms'''), whose faces comprise three pairs of equal rectangles. If one pair of faces are squares, the volume is a '''square prism'''. If all of them are squares, the volume is a '''cube''' (geometrically, there cannot be just two pairs of square faces).
 
  
* '''arb7''' shapes have seven unique vertices. They represent hexahedra that have four quadrilateral and two triangular faces sharing eleven edges. They can only be created by specifying the {X, Y, Z} coordinates of those vertices.
+
The eight vertices of an rpp are calculated from the six planar coordinates as:
 +
# (Xmax, Ymin, Zmin)
 +
# (Xmax, Ymax, Zmin)
 +
# (Xmax, Ymax, Zmax)
 +
# (Xmax, Ymin, Zmax)
 +
# (Xmin, Ymin, Zmin)
 +
# (Xmin, Ymax, Zmin)
 +
# (Xmin, Ymax, Zmax)
 +
# (Xmin, Ymin, Zmax)
  
* '''arb6''' shapes have six unique vertices. They represent '''triangular prisms''' and '''truncated tetrahedra''', which are '''pentahedra''' that have two triangular ends connected by three quadrilateral sides sharing nine edges. In addition to simply specifying the {X, Y, Z} coordinates of their vertices, MGED provides an easier way to create one specific type of hexahedron:
+
== Box ==
** '''raw''' ('''right angle wedge''') shapes are '''triangular prisms''' whose ends are parallel to each other. Interestingly enough, they don't seem to require any right angles. If the ends are perpendicular to the connecting edges, the shape is a '''right triangular prism''' and has rectangular sides. Presumably two of the rectangular sides of an actual right-angle wedge would also be perpendicular to each other.
 
  
* '''arb5''' shapes have five unique vertices. They represent '''quadrahedra''', which are pentahedra that have a quadrilateral base and four triangular sides sharing eight edges. If such a volume has a rectangular base it is a '''rectangular pyramid''', one with a square base is a '''square pyramid'''.
+
Special case of arb8
 +
;Handled by: in form(arb8)
 +
;Arguments: Vertex of first corner, direction vectors for height, width, and depth
  
* '''arb4''' shapes have four unique vertices. They represent '''tetrahedra''', which have four triangular faces sharing six edges. If all four triangles are equilateral, the shape is a '''regular tetrahedron'''.
+
== Right angle wedge (raw) ==
  
== ARBN Records ==
+
Right Angle Wedge, special case of arb6
 +
;Handled by: in form(arb8)
 +
;Arguments: Vertex of first corner, direction vectors for height, width, and depth
  
An '''arbn''' record is specified by N sets of intersecting planes, each defined by four coefficients:
+
== arb8 ==
* the {X, Y, Z} coefficients of the plane's normal vector pointing outward from the center of the arbn shape, and
+
 
* the perpendicular distance of that plane from the origin.
+
Arbitrary straight-edged shape with 8 vertices.
As discussed in the [[Creating and editing arbn primitives]] article, BRL-CAD uses such primitives to represent polyhedra having any number of sides, edges and vertices.
+
 
 +
;Handled by: make in form create
 +
;Arguments: 8 Vertices in the following order: 1234 vertices for the front face, starting at bottom left, counterclockwise; then 5678 vertices for the rear face, starting at bottom left, counterclockwise.
 +
;Example:
 +
in unitcube.s arb8  0 0 0  1 0 0  1 0 1  0 0 1  0 1 0  1 1 0  1 1 1  0 1 1
 +
creates the unit cube (first vertex at the origin, extends for 1 unit in x, y and z direction).
 +
 
 +
 
 +
== arb7 ==
 +
 
 +
Special case of arb8, except with point 8 merged into point 5, making the left face triangular
 +
;Handled by: make in form(arb8) create
 +
 
 +
 
 +
== arb6 ==
 +
 
 +
Arbitrary straight-edged shape with 6 vertices, special case of arb8.
 +
;Handled by: make in form(arb8) create
 +
;Arguments: 6 Vertices in the following order: 1234 vertices for the front face, starting at bottom left, counterclockwise; then back edge is 5 on bottom, 6 on top.  Top and bottom faces are triangles.
 +
;Example:
 +
 
 +
in arb6.s arb6 1 -1 -1  1 1 -1  1 1 1  1 -1 1  -1 0 -1  -1 0 1
 +
 
 +
 
 +
== arb5 ==
 +
 
 +
special case of arb8.
 +
;Handled by: make in form(arb8) create
 +
 
 +
 
 +
== arb4 ==
 +
 
 +
special case of arb8.
 +
;Handled by: make in form(arb8) create
 +
 
 +
 
 +
== arbn ==
 +
 
 +
Arbitrary solid bounded by N planes. 
 +
;The solid is constructed by N sets of plane coefficients and distance magnitudes, that define space which is ~outside~ the solid.  The coefficients define a vector whose normal is a plane parallel to the face of the solid.  The surface of the solid is at the perscribed distance along this vector. 
 +
 
 +
The distances may be negative and are used when a face lies on the opposite side of the origin as the tip of its vector.  An example is if the left side of a box lies on the positive X axis.  In this case, because the left side is being defined, the vector points left (coefficients -1 0 0), but since the point is on the positive X axis its distance is opposite its vector and therefore negative.
 +
 
 +
;Handled by: make in create
 +
;Arguments
 +
:Number of planes
 +
:xyz direction vector and distance for each plane
 +
 
 +
;Example
 +
:in arbn.s arbn 8  1 0 1 1  -1 0 0 1  0 1 0 1  0 -1 0 1  0 0 1 1  0 0 -1 1  0.5 0.5 0.5 1  -0.5 -0.5 -0.5 1
 +
 
 +
;Example with negative distance
 +
:in arbn2.s arbn 6  1 0 0 100  -1 0 0 -10  0 1 0 200  0 -1 0 -10  0 0 -1 0  0 0 1 1.5
 +
:...is equivalent to...
 +
:in rpp.s rpp 10 100 10 200 0 1.5
  
 
=Ellipsoids=
 
=Ellipsoids=
Line 215: Line 277:
  
  
==brep==
+
==nurb==
[[NURBS|see NURBS]]
+
Non-uniform rational b-spline
 +
;Handled by: none?
  
 
==spline==
 
==spline==
Line 244: Line 307:
 
;Handled by: make form(sketch editor) create
 
;Handled by: make form(sketch editor) create
 
;See also: [[sketch]]
 
;See also: [[sketch]]
 
==annot==
 
2D annotation primitive
 
;Handled by: in command
 
See: [[annot]]
 
  
 
==grip ==
 
==grip ==
Line 267: Line 325:
 
;Handled by: in create (not edit!)
 
;Handled by: in create (not edit!)
 
;Arguments: minor type (fdcsiLCSIL), data file, number of values
 
;Arguments: minor type (fdcsiLCSIL), data file, number of values
 
== submodel ==
 
Instanced Submodel
 
:Handled by: in make form create
 
:Arguments:
 
;file: File holding the referenced geometry. 0-length if geometry is in the same file.
 
;treetop: Single name for the geometry to reference.
 
A submodel is a reference to another geometry, possibly in a separate file.
 

Please note that all contributions to BRL-CAD may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see BRL-CAD:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)