"Fossies" - the Fresh Open Source Software Archive

Member "brlcad-7.32.4/doc/notes/implicit_constraints.txt" (29 Jul 2021, 9129 Bytes) of package /linux/misc/brlcad-7.32.4.tar.bz2:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 Arbitrary Regular Polyhedron with up to 8 vertices : arb8 {
    2   point p1
    3   point p2
    4   point p3
    5   point p4
    6   point p5
    7   point p6
    8   point p7
    9   point p8
   10   p1 != p2 && p2 != p3 && p3 != p4 && p4 != p5 && p5 != p6 && p6 != p7 && p7 != p8
   11 }
   12 
   13 Bounding Box (ARB8) : box {
   14   point V => corner vertex
   15   vector H => height vector
   16   vector W => width vector
   17   vector D => depth vector
   18   magnitude(H) > 0.0
   19   magnitude(W) > 0.0
   20   magnitude(D) > 0.0
   21   perpendicular(H, W) && perpendicular(W, D) && perpendicular(H, D)
   22 }
   23 
   24 Right Parallelepiped (ARB8) : rpp {
   25   point min
   26   point max
   27   distance(min, max) > 0.0
   28 }
   29 
   30 Arbitrary Regular Polyhedron with N faces : arbn {
   31   integer n => number of planes
   32   array planes {
   33     plane p => plane equation
   34   }
   35   for i in planes { magnitude(planes[i].p) > 0.0 }
   36 }
   37 
   38 Arbitrary Faceted Solid : ars {
   39   integer p => number of points per waterline
   40   integer w => number of waterlines
   41   array points {
   42     point V => vertex position
   43   }
   44   p > 0
   45   w > 0
   46 }
   47 
   48 Bag of Triangles : bot {
   49   integer c => number of vertices
   50   integer t => number of triangles
   51   enum orientation {unoriented, counter-clockwise, clockwise} => triangle orientation
   52   point V => vertex position
   53   enum facemode {center, appended}
   54   float t => face thickness
   55   c > 0 && 3 mod c == 0
   56   t > 0
   57   !(t < 0.0)
   58 }
   59 
   60 Boundary Representation NURBS : brep
   61 
   62 FASTGEN CLINE Cylinder : cline
   63 
   64 Displacement Map : dsp {
   65   enum source {file, object} => data source
   66   string name => name of the data source
   67   float w => map width
   68   float n => map height
   69   boolean interpolate => surface normal interpolation
   70   float s => square cell size
   71   float e => cell height
   72   w > 0.0
   73   n > 0.0
   74   s > 0.0
   75   e > 0.0
   76   (source==file && file_exists(name)) || (source==object && object_exists(name))
   77 }
   78 
   79 Extruded Bitmap : ebm {
   80   string name => name of the data source
   81   float w => width of bitmap
   82   float n => height of bitmap
   83   float d => extrusion distance
   84   file_exists(name)
   85   w > 0.0
   86   n > 0.0
   87   d > 0.0
   88 }
   89 
   90 Elliptical Hyperboloid : ehy
   91   point V => vertex
   92   vector H => height vector
   93   vector A => ellipse base width vector
   94   float b => magnitude of ellipse base depth vector
   95   float c => apex to asymptotes distance
   96   magnitude(H) > 0.0
   97   magnitude(A) > 0.0
   98   perpendicular(H, A)
   99   b > 0.0
  100   c > 0.0
  101 }
  102 
  103 Ellipsoid : ell {
  104   point V => vertex point
  105   vector A
  106   vector B
  107   vector C
  108   perpendicular(A, B)
  109   perpendicular(B, C)
  110 }
  111 
  112 Elliptical Paraboloid : epa {
  113   point V => vertex
  114   vector H => height vector
  115   vector A => ellipse base width vector
  116   float b => magnitude of ellipse base depth vector
  117   magnitude(H) > 0.0
  118   magnitude(A) > 0.0
  119   perpendicular(H, A)
  120   b > 0.0
  121 }
  122 
  123 Elliptical Torus : eto {
  124   point V => center point
  125   vector H => normal height vector
  126   float r => radius of revolution
  127   vector C => perpendicular ellipse orientation
  128   float d => magnitude of elliptical semi-minor axis
  129   magnitude(H) > 0.0
  130   r > 0.0
  131   d > 0.0
  132 }
  133 
  134 Solid of Extrusion : extrude {
  135   point V => vertex position
  136   vector H => height vector
  137   vector A => sketch plane primary vector
  138   vector B => sketch plane secondary vector
  139   string name => name of the sketch object
  140   magnitude(H) > 0.0
  141   magnitude(A) > 0.0
  142   magnitude(B) > 0.0
  143   object_exists(name)
  144 }
  145 
  146 Pseudo Solid Grip : grip {
  147   point V => vertex point
  148   vector H => height vector
  149   float m => magnitude
  150   magnitude(H) > 0.0
  151   m > 0.0
  152 }
  153 
  154 Halfspace : half {
  155   vector H => outward pointing normal vector
  156   float d => distance from the origin
  157   magnitude(H) > 0.0
  158 }
  159 
  160 Hyperboloid of One Sheet : hyp {
  161   point V => center vertex
  162   vector H => height vector
  163   vector A => ellipse base vector
  164   float b => magnitude of ellipse base depth vector
  165   float c => neck to base ratio
  166   magnitude(H) > 0.0
  167   magnitude(A) > 0.0
  168   perpendicular(H, A)
  169   b > 0.0
  170   c > 0.0
  171   !(c > 1.0)
  172 }
  173 
  174 Metaball : metaball {
  175   enum method {0, 1, 2} => render method
  176   float t => threshold
  177   integer c => number of points
  178   array points {
  179     vector F => field strength vector
  180     float f => field strength
  181   }
  182   t > 0.0
  183   c > 0
  184   for i in points { magnitude(points[i].F) > 0.0 && points[i].f > 0.0 }
  185 }
  186 
  187 n-Manifold Geometry : nmg
  188 
  189 Particle System : part {
  190   point V => center point
  191   vector H => height vector
  192   float rV => V end radius
  193   float rH => H end radius
  194   magnitude(H) > 0.0
  195   rV > 0.0
  196   rH > 0.0
  197   !(rV + rH > magnitude(H))
  198 }
  199 
  200 Pipe (wire) Solid : pipe {
  201   integer n => number of pipe points
  202   array points {
  203     point V => vertex point
  204     float i => inner diameter
  205     float o => outer diameter
  206     float r => bend radius
  207   }
  208   n > 1
  209   for i in points { points[i].o > 0.0 && points[i].i < points[i].o && !(points[i].r < 0.0) }
  210   // Bend section bends through more than 180 degrees
  211   for i in points { acos(vdot(points[i].V, points[i+1].V)) > 0.0 }
  212 }
  213 
  214 Point Cloud : pnts {
  215   boolean file => points stored in a file
  216   integer n => number of points
  217   boolean oriented => points have orientation
  218   boolean color => points have color
  219   boolean size => points have size
  220   array points {
  221     point V => point position
  222     vector N => point normal vector
  223     integer C[3] => point color
  224     float s => point size
  225   }
  226   string pathname => name to source file data
  227   enum format { px, py, pz, cr, cg, cb, s, nx, ny, nz }
  228   enum units { mm, cm, m, in, ft }
  229   for i in points { oriented && magnitude(points[i].N) > 0.0 }
  230   for i in points { color && !(points[i].C[R] < 0 || points[i].C[R] > 255) && !(points[i].C[G] < 0 && points[i].C[G] > 255) && !(points[i].C[B] < 0 && points[i].C[B] > 255) }
  231   for i in points { size && !(points[i].s < 0.0) }
  232   file_exists(pathname)
  233 }
  234 
  235 Right Elliptical Cylinder (TGC) : rec {
  236   point V => base center point
  237   vector H => height vector
  238   vector A => base ellipse primary axis
  239   vector B => base ellipse secondary axis
  240   magnitude(H) > 0.0
  241   magnitude(A) > 0.0
  242   magnitude(B) > 0.0
  243   perpendicular(H, A) && perpendicular(H, B) && perpendicular(A, B)
  244 }
  245 
  246 Right Circular Cylinder (TGC) : rcc {
  247   point V => base center point
  248   vector H => height vector
  249   float r => cylinder radius
  250   magnitude(H) > 0.0
  251   r > 0
  252 }
  253 
  254 Tapered Elliptical Cone (TGC) : tec {
  255   point V => base center point
  256   vector H => height vector
  257   vector A => base ellipse primary axis
  258   vector B => base ellipse secondary axis
  259   float r => ratio of base to top ellipse
  260   magnitude(H) > 0.0
  261   magnitude(A) > 0.0
  262   magnitude(B) > 0.0
  263   perpendicular(H, A) && perpendicular(H, B) && perpendicular(A, B)
  264   r > 0.0 || r < 0.0
  265 }
  266 
  267 Tapered Right Cone (TGC) : trc {
  268   point V => base center point
  269   vector H => height vector
  270   float b => radius of base
  271   float t => radius of top
  272   magnitude(H) > 0.0
  273   b > 0.0
  274   t > 0.0
  275 }
  276 
  277 Solid of Revolution : revolve {
  278   point V => vertex position
  279   vector R => axis of revolution
  280   vector S => vector in start plane
  281   float a => angle
  282   string name => name of 2D sketch
  283   magnitude(R) > 0.0
  284   magnitude(S) > 0.0
  285   a > 0.0
  286   object_exists(name)
  287 }
  288 
  289 Right Hyperbolic Cone : rhc {
  290   point V => vertex
  291   vector H => height vector
  292   vector B => width vector
  293   float r => rectangular half-width
  294   float c => apex to asymptotes distance
  295   magnitude(H) > 0.0
  296   magnitude(B) > 0.0
  297   perpendicular(H, B)
  298   r > 0.0
  299   c > 0.0
  300   !(magnitude(B) < c)
  301 }
  302 
  303 Right Parabolic Cone : rpc {
  304   point V => vertex
  305   vector H => height vector
  306   vector B => width vector
  307   float r => rectangular half-width
  308   magnitude(H) > 0.0
  309   magnitude(B) > 0.0
  310   perpendicular(H, B)
  311   r > 0.0
  312 }
  313 
  314 2D Sketch : sketch {
  315 }
  316 
  317 Sphere (ELL) : sph {
  318   point V => vertex point
  319   float r => radius
  320   r > 0.0
  321 }
  322 
  323 Superquadratic Ellipsoid : superell {
  324   point V => center vertex point
  325   vector A => height vector
  326   vector B => width vector
  327   vector C => depth vector
  328   float n => north-south power
  329   float e => east-west power
  330   magnitude(A) > 0.0
  331   magnitude(B) > 0.0
  332   magnitude(C) > 0.0
  333   n > 0.0
  334   e > 0.0
  335 }
  336 
  337 Generalized Truncated General Cone : tgc {
  338   point V => base center point
  339   vector H => height vector
  340   vector A => base ellipse primary axis
  341   vector B => base ellipse secondary axis
  342   float c => ratio of base A vector to top ellipse
  343   float d => ratio of base B vector to top ellipse
  344   magnitude(H) > 0.0
  345   magnitude(A) > 0.0
  346   magnitude(B) > 0.0
  347   perpendicular(A, B)
  348   c > 0.0
  349   d > 0.0
  350 }
  351 
  352 Torus : tor {
  353   point V => center point
  354   vector H => normal height vector
  355   float r1 => outer radius from V to centerline
  356   float r2 => inner radius in direction of H
  357   r1 > 0.0
  358   r2 > 0.0
  359   !(r1 < r2)
  360   magnitude(H) > 0.0
  361 }
  362 
  363 3D Volume : vol {
  364   string name => name of data source file
  365   integer f[3] => dimensions of file (number of cells)
  366   float l => lower threshold value
  367   float u => upper threshold value
  368   vector c => cell dimensions (width, height, depth)
  369   file_exists(name)
  370   f[X] > 0 && f[Y] > 0 && f[Z] > 0
  371   c[X] > 0.0 && c[Y] > 0.0 && c[Z] > 0.0
  372   l > 0.0
  373   u > 0.0
  374   u > l
  375 }
  376 
  377 
  378 DEPRECATED:
  379 // Bezier Spline : bspline
  380 // Height Field : hf
  381 // Polygonal Facets : poly
  382 // Instanced Submodel : submodel
  383 
  384 
  385 NON-PARAMETRIC:
  386 Uniform Binary Array : binunif {
  387   enum type {f, d, c, s, i, L, C, S, I, L} => minor type
  388   string name => source data file
  389   integer n => number of values to read
  390   file_exists(name)
  391   n > 0 || n == -1
  392 }
  393 // joint
  394 // combination
  395 // constraint
  396 // annotation