The assumption that is convex is too limited for most
applications. Now suppose that
is a nonconvex, polygonal subset
of
. In this case
can be expressed as
In general, more complicated representations of can be defined in
terms of any finite combination of unions, intersections, and set
differences of primitives; however, it is always possible to simplify
the representation into the form given by (3.3) and
(3.4). A set difference can be avoided by
redefining the primitive. Suppose the model requires removing a set
defined by a primitive
that contains3.1
. This is equivalent to keeping all
points such that
, which is equivalent to
. This can be used to define a new primitive
,
which when taken in union with other sets, is equivalent to the
removal of
. Given a complicated combination of primitives, once
set differences are removed, the expression can be simplified into a
finite union of finite intersections by applying Boolean algebra laws.
Note that the representation of a nonconvex polygon is not unique.
There are many ways to decompose into convex components. The
decomposition should be carefully selected to optimize computational
performance in whatever algorithms that model will be used. In most
cases, the components may even be allowed to overlap. Ideally, it
seems that it would be nice to represent
with the minimum number
of primitives, but automating such a decomposition may lead to an
NP-hard problem (see Section 6.5.1 for a brief overview of
NP-hardness). One efficient, practical way to decompose
is to
apply the vertical cell decomposition algorithm, which will be
presented in Section 6.2.2
Steven M LaValle 2020-08-14