4.5 The Continuous Model Synthesis Algorithm
4.5.1 The Set of Possible Labels in 2D
This section explains how to find all possible neighborhoods that satisfy the adjacency constraint in a 2D model for Step 2 of Algorithm 4.1. First, we need a way to identify every local neighborhood.
The example model E may contain many different types of objects. Let Pj be the
(a) Example Shape
E(x)
(b) Parallel lines diving up the plane.
(c) Acceptable Output ShapeM(x)
Figure 4.11: (a) From the input shape E, (b) sets of lines parallel to E intersect to form edges and vertices. (c) The output shape is formed within the parallel lines. For each selected point a, b, c, d, and e inM, there are points a0, b0, c0, d0, and e0 in the example model E which have the same neighborhood. The models E and M contain two different kinds of object interiors shown in blue and brown.
Pj is a polyhedron in the 3D case and a polygon in the 2D case. Let b be the open
ball with unit radius centered at the origin. For a point x ∈ R2 we choose > 0
sufficiently small and intersect the open ball with radius aroundx with a polyhedron
Pj: Nj(x) = (x+·b)∩Pj. The enlarged version of the neighborhood is sometimes
called the vertex figure vf
vfjx= [
λ>0
λ·(Nj(x)−x) (4.22)
Algorithm 4.1 Overview of Continuous Model Synthesis
1: Create uniformly spaced planes parallel to E. Create vertices where three planes intersect. Create edges where two do.
2: Create a list of all acceptable labels (Sections 4.5.1 & 4.5.3).
3: Create a list of acceptable labels for each edge and each vertex (Sections 4.5.2 & 4.5.4).
4: Determine which edge labels can be adjacent to each vertex label (Section 4.5.5).
5: Main Loop (Section 4.5.6)
6: while there exists an unassigned vertex v do
7: Randomly select a label b from CM.
8: Assign label b to vertex v.
9: Remove from CM all labels that are incompatible with this assignment.
10: end while
the adjacency constraint is satisfied.
We first discuss 2D model synthesis, since it is easier to explain and illustrate. We discuss the 3D case in Section 4.5.3. In 2D, every edge of the example shape has a line parallel to it that intersects the origin. The line divides the plane into two half-planes. To the line’s left is one half-plane hi and to its right is hi’s complement hCi . The input
shape has a finite number of edges, so we can enumerate every half-plane h1, h2, . . . , hm
where m is the number of edges with a distinct slope. By combining these half-planes using Boolean operations, the vertex figures of every point xinE(x) can be described. Points outside the polygon Pj which do not touch its boundary have a vertex figure
equal to the empty set. Points in the interior of Pj have a vertex figure equal to the
entire planeR2. Points touching an edge ofPj have one of the half-planes as their vertex
figure. The vertex figure of a point at a vertex of Pj uses the two half-spaces that are
parallel to its incident edges. If its interior angle is less than 180◦, then the vertex figure is the intersection of the two half-planes as shown by the three vertices in Figure 4.12. If the angle at the vertex is a reflex angle (i.e. greater than 180◦), then the vertex figure is a union of the half-planes as shown in Figure 4.13.
This shows how to write a Boolean expression describing how the neighborhood surrounding any given point intersects a single polygon. But each neighborhood could
Figure 4.12: Vertex figures of various points on a triangle described as Boolean expres- sions of half-planes. Eight possible labels are identified ∅,R2, h1, h2, h3, h1∩h2, h1∩h3,
and h2∩h3.
Figure 4.13: Vertex figure of a concave vertex.
intersect multiple objects as shown in Figure 4.14. When multiple objects intersect, we can compute a Boolean expression for each object separately and then combine all them all together. Let k1 and k2 be two types of objects and let b1 and b2 be two Boolean
expressions. Each Boolean expression describes the set of points in a local neighborhood that are inside of a specific object. We use the notation k1 ·b1 +k2 ·b2 to describe a
neighborhood which contains the object k1 at the set of points b1 and object k2 at b2.
For example, 1·hC
3 + 2·h1 ∩h3 describes a neighborhood where an edge hC3 of object
1 touches a vertex of h1 ∩h3 of object 2. This notation is used only when there are
Figure 4.14: Boolean expressions using half-spaces describing the neighborhoods of var- ious points on a shape with two different object types.