Difference between revisions of "BRL-CAD Primitives"

From BRL-CAD
Line 2: Line 2:
 
[[category:MGED| Primitives]]
 
[[category:MGED| Primitives]]
  
==Arbs==
+
These are primitive objects that can be created in mged.
===arb8===
+
 
 +
Objects can be created in any of the following ways:  (note: are there more? get? load from file?)
 +
;make : the mged make command creates the object with default dimensions
 +
;in : the mged in command interactively prompts for dimensions not already supplied as arguments
 +
;form :the graphical primitive editor form (* some objects not fully supported)
 +
;create : the graphical create menu
 +
 
 +
When an object is selected from the create menu, you are prompted for a name, and then dropped into the primitive editor form; however, if the objec type has no form, create will do about the same as make.  Some derivative objects do not have their own form, and the primitive editor will use the base object's form.  Most parameters  (including ones not editable from a form) have special items on the edit menu.
 +
 
 +
=Arbs=
 +
Objects with an arbitrary number of points and flat faces...
 +
==arb8==
 
Arbitrary straight-edged shape with 8 vertices.  
 
Arbitrary straight-edged shape with 8 vertices.  
  
Line 12: Line 23:
 
creates the unit cube (first vertex at the origin, extends for 1 unit in x, y and z direction).
 
creates the unit cube (first vertex at the origin, extends for 1 unit in x, y and z direction).
  
=== arb7 ===
+
== arb7 ==
 
Special case of arb8, except with point 8 merged into point 5, making the left face triangular
 
Special case of arb8, except with point 8 merged into point 5, making the left face triangular
 
;Handled by: make in form(arb8) create
 
;Handled by: make in form(arb8) create
=== arb6 ===
+
== arb6 ==
 
Arbitrary straight-edged shape with 6 vertices, special case of arb8.
 
Arbitrary straight-edged shape with 6 vertices, special case of arb8.
;Handled by: make in form create
+
;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.
 
;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:
 
;Example:
Line 23: Line 34:
 
  in arb6.s arb6 1 -1 -1  1 1 -1  1 1 1  1 -1 1  -1 0 -1  -1 0 1
 
  in arb6.s arb6 1 -1 -1  1 1 -1  1 1 1  1 -1 1  -1 0 -1  -1 0 1
  
=== arb5 ===
+
== arb5 ==
 
special case of arb8.
 
special case of arb8.
 
;Handled by: make in form(arb8) create
 
;Handled by: make in form(arb8) create
=== arb4 ===
+
== arb4 ==
 
special case of arb8.
 
special case of arb8.
 
;Handled by: make in form(arb8) create
 
;Handled by: make in form(arb8) create
=== arbn ===
+
== arbn ==
(make, in)
 
 
Arbitrary solid bounded by N planes
 
Arbitrary solid bounded by N planes
 
;Handled by: make in create
 
;Handled by: make in create
Line 40: Line 50:
 
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
 
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
  
===box===
+
==box==
 
Special case of arb8
 
Special case of arb8
;Handled by: make in form(arb8) create
+
;Handled by: in form(arb8)
Arguments:
+
;Arguments:
;V : vertex of first corner
+
;;V : vertex of first corner
;direction vectors for height, width, and depth
+
;;direction vectors for height, width, and depth
===rpp===
+
==rpp==
 
Special case of arb8
 
Special case of arb8
 
;Handled by: make in form(arb8) create
 
;Handled by: make in form(arb8) create
 
;Arguments: xmin xmax ymin ymax zmin zmax
 
;Arguments: xmin xmax ymin ymax zmin zmax
  
==Ellipsoids==
+
=Ellipsoids=
=== ell ===
+
== ell ==
 
Ellipsoid
 
Ellipsoid
 
;Handled by: make in form create
 
;Handled by: make in form create
Line 61: Line 71:
 
Example:
 
Example:
 
  in ell.s ell 0 0 0  0 -1 0  1 0 0  0 0 1
 
  in ell.s ell 0 0 0  0 -1 0  1 0 0  0 0 1
=== sph ===
+
== sph ==
 
Sphere, special case of the ellipsoid, with vectors A B and C all the same magnitude (radius).
 
Sphere, special case of the ellipsoid, with vectors A B and C all the same magnitude (radius).
 
+
;Handled by: make in form(ell) create
 
Arguments:
 
Arguments:
 
;V : vertex point, at the center
 
;V : vertex point, at the center
 
;radius
 
;radius
 +
== ellg ==
 +
Special case of ellipsoid
 +
;Handled by: in form(ell)
 +
;Arguments: two foci points, and axis length
 
===ehy===
 
===ehy===
(make in form)
 
 
Elliptical hyperboloid
 
Elliptical hyperboloid
 +
;Handled by: make in form create
 
===ell1===
 
===ell1===
 
Special case of ellipsoid
 
Special case of ellipsoid
 +
;Handled by: in make form(ell) create
 +
 
===epa===
 
===epa===
 
Elliptical paraboloid
 
Elliptical paraboloid
=== ellg ===
+
;Handled by: in make form create
 +
 
 +
=Cones and Cylinders=
 +
== tgc ==
 +
Truncated general cone
 +
;Handled by: in make form create
 +
;Arguments:
 +
== rcc ==
 +
Right circular cylinder, special case of tgc
 +
;Handled by: in make form(tgc) create
 +
;Arguments: vertex ,
 +
== rec ==
 +
Right elliptical cylinder, special case of tgc
 +
;Handled by: in make form(tgc) create
 +
;Arguments: vertex, height vector, radius
 +
== rhc ==
 +
Right hyperbolic cylinder
 +
;Handled by: in make form create
 +
;Arguments: vertex, perpendicular vectors for Height and B, (r) rectangular half width, (c) apex to asymptote distance,
 +
== rpc ==
 +
Right parabolic cylinder
 +
;Handled by: in make form create
 +
;Arguments: vertex, perpendicular vectors for Height and B, (r) rectangular half width
 +
== tec ==
 +
Truncated elliptical cone, special case of tgc
 +
;Handled by: in make form(tgc) create
 +
;Arguments: Vertex, vectors Height, A, B
 +
== trc ==
 +
Truncated right cone
 +
;Handled by: in make form(tgc) create
 +
;Arguments: Vertex, Height vector, radius of base and top
 +
=Other=
  
 
==grip ==
 
==grip ==
Grip (not a solid object?)
+
Grip  
 
+
;Handled by: in make form create
 
Arguments:
 
Arguments:
;V : vertex point of center
+
;C : Center
 
;N : normal vector
 
;N : normal vector
 
;L : magnitude
 
;L : magnitude
 
  
 
== tor ==
 
== tor ==
== tgc ==
+
Torus
== tec ==
+
;Handled by: in make form create
== rec ==
+
;Arguments: vertex, normal vector, radius of revolution, tube radius
== trc ==
+
== eto ==
== rcc ==
+
Elliptical torus
 +
;Handled by: in make form create
 +
;Arguments: vertex, normal vector, radius of revolution, vector C, (r_d) magnitude of semi-minor axis
 
== half ==
 
== half ==
== rpc ==
+
halfspace
== rhc ==
+
;Handled by: in make form create
== epa ==
+
;Arguments: Normal, distance from origin
== ehy ==
 
== eto ==
 
 
== part ==
 
== part ==
 +
Conical particle
 +
;Handled by: in make create
 +
;Arguments: vertex, height vector, radius at v, radius at h
 
== nmg ==
 
== nmg ==
 +
n-Manifold geometry solid
 +
;Handled by:  make create
 
== pipe ==
 
== pipe ==
 
+
;Handled by: in make create
 +
;Arguments: # points, for each point: location, inner and outer diameters, bend radius
  
 
==ars==
 
==ars==
 +
Arbitrary rectangular solid
 +
;Handled by: in make create
  
 
Solids of type 'ars' (Arbitrary Faceted Solids) are defined using "waterlines". The following figure consists of a start point, some number of intermediate polygons, and an ending point. Each of the intermediate polygons have the same number of vertices and the vertices are numbered 1 thru N. In addition to the intermediate polygons a line will be created that begins at the start point, goes through each polygon at its vertex numbered 1, and terminates at the end point. This is repeated for each polygon vertex 2 thru N. The start point, polygons, and end point are each a "waterline".
 
Solids of type 'ars' (Arbitrary Faceted Solids) are defined using "waterlines". The following figure consists of a start point, some number of intermediate polygons, and an ending point. Each of the intermediate polygons have the same number of vertices and the vertices are numbered 1 thru N. In addition to the intermediate polygons a line will be created that begins at the start point, goes through each polygon at its vertex numbered 1, and terminates at the end point. This is repeated for each polygon vertex 2 thru N. The start point, polygons, and end point are each a "waterline".

Revision as of 06:09, 31 December 2009

These are primitive objects that can be created in mged.

Objects can be created in any of the following ways: (note: are there more? get? load from file?)

make 
the mged make command creates the object with default dimensions
in 
the mged in command interactively prompts for dimensions not already supplied as arguments
form
the graphical primitive editor form (* some objects not fully supported)
create 
the graphical create menu

When an object is selected from the create menu, you are prompted for a name, and then dropped into the primitive editor form; however, if the objec type has no form, create will do about the same as make. Some derivative objects do not have their own form, and the primitive editor will use the base object's form. Most parameters (including ones not editable from a form) have special items on the edit menu.

Arbs

Objects with an arbitrary number of points and flat faces...

arb8

Arbitrary straight-edged shape with 8 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

Handled by
make in create
Arguments
Number of planes
xyz direction vector and normal 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

box

Special case of arb8

Handled by
in form(arb8)
Arguments
vertex of first corner
direction vectors for height, width, and depth

rpp

Special case of arb8

Handled by
make in form(arb8) create
Arguments
xmin xmax ymin ymax zmin zmax

Ellipsoids

ell

Ellipsoid

Handled by
make in form create
Arguments
vertex point, at the center
vectors A B C describing the radii of the ellipses; A points front, B points right, C points up.

Example:

in ell.s ell 0 0 0  0 -1 0  1 0 0  0 0 1

sph

Sphere, special case of the ellipsoid, with vectors A B and C all the same magnitude (radius).

Handled by
make in form(ell) create

Arguments:

vertex point, at the center
radius

ellg

Special case of ellipsoid

Handled by
in form(ell)
Arguments
two foci points, and axis length

ehy

Elliptical hyperboloid

Handled by
make in form create

ell1

Special case of ellipsoid

Handled by
in make form(ell) create

epa

Elliptical paraboloid

Handled by
in make form create

Cones and Cylinders

tgc

Truncated general cone

Handled by
in make form create
Arguments

rcc

Right circular cylinder, special case of tgc

Handled by
in make form(tgc) create
Arguments
vertex ,

rec

Right elliptical cylinder, special case of tgc

Handled by
in make form(tgc) create
Arguments
vertex, height vector, radius

rhc

Right hyperbolic cylinder

Handled by
in make form create
Arguments
vertex, perpendicular vectors for Height and B, (r) rectangular half width, (c) apex to asymptote distance,

rpc

Right parabolic cylinder

Handled by
in make form create
Arguments
vertex, perpendicular vectors for Height and B, (r) rectangular half width

tec

Truncated elliptical cone, special case of tgc

Handled by
in make form(tgc) create
Arguments
Vertex, vectors Height, A, B

trc

Truncated right cone

Handled by
in make form(tgc) create
Arguments
Vertex, Height vector, radius of base and top

Other

grip

Grip

Handled by
in make form create

Arguments:

Center
normal vector
magnitude

tor

Torus

Handled by
in make form create
Arguments
vertex, normal vector, radius of revolution, tube radius

eto

Elliptical torus

Handled by
in make form create
Arguments
vertex, normal vector, radius of revolution, vector C, (r_d) magnitude of semi-minor axis

half

halfspace

Handled by
in make form create
Arguments
Normal, distance from origin

part

Conical particle

Handled by
in make create
Arguments
vertex, height vector, radius at v, radius at h

nmg

n-Manifold geometry solid

Handled by
make create

pipe

Handled by
in make create
Arguments
# points, for each point: location, inner and outer diameters, bend radius

ars

Arbitrary rectangular solid

Handled by
in make create

Solids of type 'ars' (Arbitrary Faceted Solids) are defined using "waterlines". The following figure consists of a start point, some number of intermediate polygons, and an ending point. Each of the intermediate polygons have the same number of vertices and the vertices are numbered 1 thru N. In addition to the intermediate polygons a line will be created that begins at the start point, goes through each polygon at its vertex numbered 1, and terminates at the end point. This is repeated for each polygon vertex 2 thru N. The start point, polygons, and end point are each a "waterline".

<need an image here to illustrate the concept>

the ars shape takes the following values as input:

  • The number of points per waterline (the number of vertices on each intermediate polygon)
  • The number of waterlines (the number of intermediate polygons plus 2)
  • X, Y, and Z for a starting point (the first waterline)
  • for each interior polygon (an intermediate waterline)
    • for each point on the polygon
      • X, Y, and Z for the point on the polygon
  • X, Y, and Z for an ending point (the last waterline)

For example, the command:

in x.1 ars 4 6 0 0 3 1 1 3 1 -1 3 -1 -1 3 -1 1 3 1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 0 -1 0 -1 -1 -1 0 -1 0 1 -1 1 0 -3 0 -1 -3 -1 0 -3 0 1 -3 0 0 -3

Will produce a square bar with a tapered 1/8 turn twist in the middle. Of course, more waterlines in the twist and more points per waterline would make the twist smoother.

Example ARS



The parameters to the above ars command can be dissected as:

4 : number of points per waterline (i.e. intermediate polygons have 4 vertices)
6 : number of waterlines (four intermediate polygons plus the two endpoints)
0 0 3 - the center of the top end of the bar
1 1 3 1 -1 3 -1 -1 3 -1 1 3 : a 2x2 square in the xy plane at z offset 3
1 1 1 1 -1 1 -1 -1 1 -1 1 1 : a 2x2 square oriented the same as the first but at z offset 1
1 0 -1 0 -1 -1 -1 0 -1 0 1 -1 : a 2x2 square at a 45 degree rotation from the first squares at z offset -1
1 0 -3 0 -1 -3 -1 0 -3 0 1 -3 : a 2x2 square at a 45 degree rotation from the first squares at z offset -3
0 0 -3 : the center of the bottom end of the bar