"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