- ...sv_point
- The sv_ prefix is used throughout svLis whenever
a name would otherwise be a common word like `point'. This is to allow
other software to use such words for its types and classes without
clashing with svLis.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...NAME="389">
- The other
type of geometric modeller is based on the boundary representation and
called a boundary modeller (or B-rep modeller). Boundary
modellers
will hardly get a mention here
but, if you're interested, look at Mäntylä's or Chiyokura's
book, which are both listed in the Bibliography.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...literature
- They are
also called constructive solid geometry modellers. That inelegant
phrase is usually abbreviated to
CSG.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...solid
- Or other piece of geometry--once
again, see Chapter 3.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...0.2);
- Notice that the C++ overloading rules obviate the
necessity for the cylinder function to be called
sv_cylinder.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...plane
- I'll rather
casually refer to the nothing as `air' . This may well annoy the more
formal and puritanical, but at least it avoids confusion with
other--ordinary--uses of the English word ``nothing''.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...z-axis
- You can tell
I'm an engineer first and a mathematician second; I like to know which
way is up.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...NAME="577">
- This idea originated at
Three-Space Ltd in Cambridge, the company that wrote the ACIS
boundary modeller, marketed (and trademarked)
by Spatial Technology Inc.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...do
- I was
recently (1990) involved in a research project on Computer Algebra in
Geometric Modelling. This project engendered a number of ideas that
svLis incorporates. See Philip Milne's Technical Report listed in
the Bibliography if you want more details.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...sv_integer
- Occasionally, svLis uses short explicitly for
small loop variables and such like.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...language
- That is to say you can't redefine + and
*, for example, so that a*b + c means a*(b + c); it will
always mean (a*b) + c. That is because the * operator has
a higher precedence than the + operator.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...it
- As it would be, for example, by the parametric
equation of a plane.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...NAME="PTOPRIM">
- The only simpler one we could have
would be a constant; if this were negative it would mean solid
everywhere, if positive air everywhere, and if zero surface
everywhere. The last of these is extremely daft, and I can't think of
any use for it at all, but svLis will allow you to do it. The first
and second are the universal and the
empty set respectively. These are useful. I'll describe them
on Page .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...p3
- In fact, they can be any continuous functions, so they
can contain sines, exponentials or whatever, if you want. This is
covered on Page .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...point
- There's a
svLis function to do this, of course. If a is a primitive,
p a point, and d a real, then you can say d =
a.value(p);
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...code
- The function
thin_cylinder(...) generates a thin cylinder as a set; it's just
the same as sv_set(abs(p_cylinder(...))). There are also
thin_ versions of the other simple shapes.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...hidden_prim
- It is perfectly permissible
to assign an undefined primitive, and indeed this is often a useful
thing to be able to do.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...code
- As you might imagine, the
child_x functions return the operands of an operator (union in
this case). The reason the if statement is needed is because
the original a won't necessarily be the first child (see
Page ).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...svLis
- There is no reason why you can't create
higher-level structures such as arrays or linked-lists or trees of
models if you want.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...interval
- Mathematicians make a distinction between
closed and open intervals; the former contain their end-points,
the latter don't and are written (a, b).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...possible
- Actually,
facet_decision(...) also contains an extra bit of code that stops
the model boxes getting too long and thin because of this; this is to
avoid numerical problems.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...leaf''
- You may want to call svlis_error (see Page
)
when this happens as well.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...tested
- For instance, in a Monte Carlo procedure.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...intervals
- Imagine two numbers, one in each
interval; what is the smallest possible value that the maximum of the
two could have, and what is the largest?
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...are
- See
the book Introduction to Computing with Geometry mentioned in
the Bibliography for details and further references.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...all
- Occasionally loop variables and logical values are
explicitly declared short.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...sets
- So you can intersect a cloud of
points or a bunch of lines with a solid and just be left with the pieces
inside, and similar sorts of tricks.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.