Geometric Data Manipulation
Technical Field
The present invention relates to the manipulation of geometric data in a computer, and more specifically to the determination of the intersections of solid bodies.
Background Art
There are many situations where solid bodies need to be represented in a computer and the intersections between such bodies need to be determined. Fairly obvious examples are the determination of paths for moving goods through a crowded warehouse and the manipulation of architecture information, e.g. the determination of the relationships between walls and floors and the routes of various services such as electric wiring, water pipes, and ventilation ducts. More generally, similar situations may arise in more abstract contexts, such . as the efficient searching of databases in abstract phase spaces.
We are concerned with situations where the geometric bodies are defined in terms of significant or salient points and relationships between them. The simplest form of this is where a polyhedron is defined by listing its vertexes in terms of the co-ordinates of each vertex, then defining the edges by listing for each edge the two vertexes which that edge joins, and finally defining the faces by listing for each face the edges which surround that face. More elaborate systems
can of course be devised, e.g. to take account of isolated edges and faces.
Curved bodies can be defined by triangulating them to convert them to polyhedra. Alternatively, however, they can be defined somewhat more directly (though in a sense more abstractly) by including parameters. Thus a sphere can be defined by means of its radius and the co-ordinates of its centre. It may however also be desirable to identify a number of points on the sphere and a set of curved lines on it joining those points; again, the curved lines need to be either approximated to by straight lines or partially identified parametrically, e.g. by plane and curvature. A cylinder can be defined by means of the two circular discs forming its ends, giving the radius of the discs and the co-ordinates of their centres. The planes of the discs are perpendicular to the axis of the cylinder, which can be determined from the co-ordinates of the centres of the two discs forming its ends; similarly, the curved boundary of the cylinder is defined by a straight line generator parallel to the axis of the cylinder and moving with its ends on the boundaries of the two end discs. Again, however, it may also be desirable to identify a number of points on the edges of the discs, defining a number of arcs and generators. (In this case, again, the arcs need to be either approximated to by straight lines or partially identified parametrically, though the generator lines for the curved surface of the cylinder are straight and so do not need any parameters.)
At one level of generality, the problem with which the present invention is concerned is to identify the relationships between a number of distinct geometrical bodies (where the bodies are defined as just discussed) .
If there are just two bodies, what is required is the overlap volume common to the two bodies, and the remaining volumes of the two individual bodies. In the simplest non-trivial case, this will split the two intersecting bodies into three volumes, but even with two bodies, the result can be more complicated. For example, a thin plate slicing through a cube will produce four bodies (the volume common to the plate and the cube; the annular outside part of the plate; and the two remaining parts of the cube, one on each side of the plate) .
More generally, there may often be more than two bodies. The easiest way to describe the problem for more than two bodies is in terms of adding bodies one by one (though in practice, all the original bodies may be processed together to obtain the final set of derived bodies.) The first two original bodies will result in a number of derived bodies, as just discussed. The intersections of the third original body with each in turn of these derived bodies can then be determined, giving a more elaborate set of derived bodies. The intersections of the next original body with the derived bodies can then be determined, and so on. (The derived bodies are automatically disjoint, i.e. have no overlaps, and the final result is
obviously independent of the particular sequence by which it is reached. )
In principle, the problem may be solved by the process just described. This involves maintaining a list of bodies and picking pairs of bodies from the list and comparing them. Each original body in turn is compared with all bodies on the list. As the procedure progresses, derived bodies are obtained and added to the list. When an original body has been compared with all bodies on the list, it is deleted from the list. Eventually, all original bodies will have been deleted. The procedure is then complete, as the list contains only derived bodies, which are automatically disjoint.
This procedure can however be highly inefficient. It is therefore desirable to use some other algorithm.
In many situations, there is some antecedent knowledge about how the bodies are arranged and/or their shapes. For instance, it may be that the bodies are highl- likely to be widely separated, with overlaps being rare. Again, the bodies may be usually or invariably cuboid with their edges parallel to the X, Y, and Z axes. In such situations, the constraints often allow special-purpose algorithms to be devised which are highly efficient.
However, there are still many situations where there are no significant antecedent constraints, or none which can be taken advantage of, and a general-purpose algorithm is required.
For planar bodies, a different technique is available, the sweep algorithm. In a planar system, the intersections between areas (in the simplest case, polygonal areas) have to be determined. For this, the sweep algorithm involves defining a sweep line (e.g. parallel to the X axis) which is notionally swept across the plane occupied by the bodies, and analysing the manner in which the bodies intersect each other in successive positions of the sweep plane. In crude and informal terms, this results in comparing only polygons which are on the same level, instead of comparing all against all.
For solid bodies, in general, boundary representation techniques are used to determine the intersections between the bodies in the absence of any special knowledge or circumstances which can be taken advantage of. This essentially involves the process described above. For a pair of bodies, each edge of one body is tested against all the faces of the other to find which edges intersect which faces. From these intersections, the derived body common to the two original bodies can be determined. If there are more than two bodies, repeated testing of the original and derived bodies in pairs is required.
The main object of the present invention is to provide an improved system for identifying the relationships (i.e. the overlaps) between a number of distinct 3- dimensional geometrical bodies. More generally, the object is to deal with n-dimensional bodies.
Disclosure of the Invention
According to the invention there is provided a system for identifying the relationships (i.e. the overlaps) between a number of distinct 3-dimensional geometrical bodies which are defined by means of salient points, comprising:
sweep plane processor means comprising:
means for forming an ordered list of salient points;
means for analysing the sweep plane at each salient point in turn to construct a sweep status structure therefor and to detect derived salient points; and
sweep plane topology manager means for constructing derived polyhedra from the sweep status structures; and
sweep line processor means operative each time the sweep plane encounters a salient point, comprising:
means for forming an ordered list of salient points in the sweep plane,
means for analysing the sweep line at each salient point in turn to construct a sweep status structure therefor and to detect derived salient points; and
sweep line topology manager means for constructing derived polygons from the sweep status structures and passing the polygons so derived to the sweep plane topology manager means.
In a nutshell, the crux of the invention lies in generalizing the sweep technique to more than 2 dimensions and using it recursively to effectively reduce the number of dimensions step by step.
For the solid or 3-dimensional case with which we are primarily concerned, the process starts with a sweep plane, and each time the sweep plane encounters a salient point, the sweep technique is applied to that sweep plane, by sweeping it with a sweep line. The sweep algorithm is essentially the same as for the planar case, though the details are of course more complicated because the sweep involves passing a sweep plane through the space occupied by the bodies. Each time the sweep plane passes through a salient point, a sweep status structure is generated for that position identifying the manner in which the original bodies intersect each other at that plane. The information from the successive sweep status structures is passed to a topology manager module, which constructs derived polygonal areas from that information and constructs derived polyhedra from these derived polygonal areas.
This sweep technique generalizes to polytopes in n dimensions. For 4 dimensions, for example, the space is swept by a 3-dimensional sweep hyperplane; each time that sweep hyperplane encounters a salient point, the resulting 3-dimensional space is swept by a sweep plane; and each time that sweep plane encounters a salient point, that sweep plane is swept by a sweep line. More generally, in n dimensions, a list of salient points is constructed, ordered according to say their X co-ordinates. A sweep hyperplane is used to sweep through the n-dimensional space, and at each salient point, a sweep status structure is constructed identifying the manner in which the bodies intersect each other at that hyperplane, and a topology manager
takes information from successive sweep status structures and constructs derived polytopes therefrom. The sweep status structure is determined by means of a similar sweep in n-1 dimensions, and so on down to a sweep line or a sweep point.
The invention also provides a method of identifying the relationships (i.e. the overlaps) between a number of distinct 3-dimensional geometrical bodies (20, 21) which are defined by means of salient points, comprising:
conducting a plane sweep by sweeping the bodies with a sweep plane, and during said plane sweep:
forming an ordered list of salient points;
analysing the sweep plane at each salient point in turn to construct a sweep status structure (54) therefor and to detect derived salient points; and
constructing derived polyhedra from the sweep status structures with sweep plane topology manager means (55) ; and
conducting a line sweep by sweeping the sweep plane with a sweep line each time the sweep plane encounters a salient point, and during said line sweep:
forming an ordered list of salient points in the sweep plane,
analysing the sweep line at each salient point in turn to construct a sweep status structure (54') therefor and to detect derived salient points; and
constructing derived polygons from the sweep status structures with sweep line topology manager means (55') and passing the polygons so derived to the sweep plane topology manager means (55) .
Brief Description of the Drawings
A system in accordance with the invention for identifying the relationships between a number of distinct 3-dimensional geometrical bodies will now be described, by way of example, with reference to the drawings, in which:
Fig. 1 shows two intersecting cuboid polyhedra;
Fig. 2 shows a sweep plane descending through Fig. 1;
Fig. 3 shows the sweep plane in a significant position, with a sweep line;
Fig. 4 shows the sweep line in a significant position;
Fig. 5 shows the sweep point for the sweep line;
Fig. 6 shows the bodies into which the cuboids of Fig. 1 are resolved;
Fig. 7 illustrates the analysis of a sweep plane and the construction of the corresponding sweep status structure;
Figs. 8A and 8B show possible complications of bodies;
Fig. 9 is a block diagram of the functional blocks of the system; and
Fig. 10 shows the storage of the data defining the bodies .
Modes for Carrying Out the Invention
The manner in which the sweep algorithm for planar systems is implemented in the present system will be described.
As the sweep line moves, it will encounter salient points. If the bodies are polygonal, the original salient points will be their vertexes, and these are initially sorted into a list termed the event point schedule. For each salient point, a sweep status structure is constructed which lists the segments starting at, ending at, or crossing the sweep line through that point. So for the salient point itself, segments may start and/or finish at that point; also, segments which started at previous salient points but have not yet finished continue across the sweep line. Also, for each sweep status structure, the segments starting at that structure or continuing through it are examined for possible intersections beyond the sweep line, and any such intersections are added into the
event point schedule as derived salient points. This schedule thus grows as the sweep progresses, so that all salient points (intersections of segments as well as original vertexes) are identified and accounted for.
It may be noted that to search for intersections beyond the sweep line, it is sufficient to examine pairs of adjacent segments. If two segments intersect, there can be further segments lying between them before they intersect. But as the sweep line moves, it must obviously pass over a region immediately before the intersection where the two intersecting segments are adjacent. That region will start at the end of the last segment between the intersecting segments. By taking the intersections of all segments with the sweep line at that point as salient points, the two intersecting segments will be examined for possible intersection, and their intersection discovered, at the stage where they become adjacent.
Obviously this procedure can be modified in various ways. For example, the search for segment intersections can be postponed until the points where two segments intersect the sweep line are found to have interchanged their order on the sweep line. That will result in the identification of a (derived) salient point in a position which the sweep line has passed, and suitable back-tracking will be required. Also, if segments can be curved, the top-most point of a curved segment is a salient point. So if the way that curved segments are defined is such the top-most point of the segment can be above its ends, that top-most point will be a derived salient point which can only be identified
once an original salient point (end-point) of the segment has been reached by the sweep line, and the system will have to back-track to that derived salient point .
As the sweep progresses, it is monitored by a topology manager module. This module takes the information from the successive sweep status structures and constructs derived polygonal areas from that information.
At the end of the sweep, a list of derived bodies has been constructed, with each body defined in the manner discussed above. As the sweep progresses, so the definitions (typically in terms of points and edges) are built up gradually.
At intermediate stages in the sweep, so typically some of these bodies will be incomplete. We can think of these, bodies as being temporarily cut off or terminated by the sweep line. So as the sweep progresses, the descriptions of these incomplete bodies have to be updated as the existence of further portions or slices of these bodies becomes known.
Descriptions of these bodies in their incomplete states have to be constructed, of course. Roughly speaking, the description of an incomplete body can be split into two parts. One part is those portions of the body which have been finalized - points and segments which are wholly above the current position of the sweep line. The other part is those portions which temporarily terminate on the sweep line - segments which are going to continue through the sweep line.
(With regard to points, a point on the sweep line which is the end of a segment is already finalized; a point which is merely the position where a segment crosses the sweep line is obviously only temporary. )
As described above, a sweep status structure is constructed for each sweep line (i.e. for the sweep lines for each salient point) . Also, a list of derived bodies will have been constructed by the end of the sweep. Each time the sweep line reaches a new position, the sweep status structure for that position is constructed from the geometry of the sweep line and the previous sweep status structure. Also, the topology manager module updates the derived bodies in the list of derived bodies with any further elements
(points and segments) which are now complete. Roughly speaking, therefore, the temporary part of the description of the derived bodies is stored in the sweep status structure and the permanent part of this description is stored in the list of derived bodies.
Returning to the present system in general, this will be described first with reference to a simple example of two cuboid polyhedra in skew positions and intersecting each other. This example is shown in perspective in Fig. 1. Specifically, there are 2 cuboids, 20 and 21.
Fig. 2 shows a sweep plane 22 descending through the space occupied by the cuboids. As it descends, so it encounters various salient points. Each time it encounters a salient point, it is stopped and the intersections of the solids with it are analysed.
Fig. 3 shows the sweep plane in a significant position, with the salient point 24 - a vertex of cube 20 - lying in the sweep plane. In this state, the cuboids 20 and 21 intersect the sweep plane 22 in respective polygons 20' and 21' .
Once the sweep plane has reached a significant position, a sweep line 25 is passed across it as indicated in Fig. 3. This sweep line 25 passes across the sweep plane 22 until it reaches a salient point. There are 9 salient points in the sweep plane 22 shown in Figs. 3 and 4, 8 original and 1 derived. The original salient points are the 4 vertexes of the quadrilateral 20' and the 4 vertexes of the quadrilateral 21'; the derived salient point is the intersection of these quadrilaterals above the sweep line 25. (The quadrilaterals have a second intersection below the sweep line, but this intersection happens to occur at a vertex of quadrilateral 21' . Thus vertex is thus in a sense a complex or double salient point.)
Fig. 4 shows the sweep line 25 when it has passed several salient points and has reached the salient point 24. In this position, only the full line segments are of interest; the segments shown in broken lines have either been dealt with already, in earlier positions of the sweep line, or will be dealt with later, in later positions of the sweep line.
Once the sweep line 25 has reached a significant position, a sweep point 26 is passed along it, as shown
in Fig. 5, until it reaches a significant position. The sweep line 25 has 4 salient points along it, the points 27, 28, 24, and 29.
The sweep point 26 passes along the sweep line 25, stopping at each salient point in turn. At each such point, the sweep status structure for the sweep plane is updated.
When the sweep point has completed its travel along the sweep line, the system returns to the sweep plane 22, and the sweep line 25 is advanced to the next salient point. The new sweep line is then swept by the sweep point, as shown in Fig. 5.
Eventually, the sweep plane will have been completely swept by the sweep line; in other words, the sweep line will have reached the last salient point in the sweep plane and have been duly processed. At this stage, the sweep status structure for the sweep plane (in its current position) is complete. That sweep status structure is used to update the derived bodies list.
The sweep plane is them moved on to the next salient point, and the process is repeated. When the sweep plane eventually reaches the end of the event point schedule and has been processed for that position, the process is complete. The derived bodies list will then contain 3 bodies 20", 21", and 22, as shown in Fig. 6 (where the 3 bodies have been moved apart for clarity) . Body 22 is the volume common to the original bodies 20 and 21; bodies 20" and 21" are the remaining portions of the original bodies 20 and 21.
It will of course be realized that the sweep manifolds (plane, line, and point) do not actually exist in the sense of being generated for every possible position in turn. What actually happens is that sweep manifolds are generated for those positions defined by the salient points. Notionally, the sweep manifolds exist and are swept through the corresponding spaces; but they only emerge from potential or notional existence to actual existence when they encounter salient points.
The sweep status schedule is updated on each sweep position. It is convenient to treat the point and line sweeps together, and then to describe the plane sweep separately after a brief discussion of some elaborations or developments of the present principles.
We will begin with the sweep line scan shown in Fig. 5. The first point, point 27, is identified as a temporary point; this is a point which is not the vertex of a derived polygon or polyhedron, but simply a point where a segment happens to intersect the sweep line. The position of this point is located by computation, using the known existence of the segment 30 and the known positions of its end-points. The second point, point 28, is also -identified as a temporary point. The third point, point 24, is identified as a finalized point; this is a point which is the vertex of a derived polygon or polyhedron. The fourth point is identified as a temporary point.
(It should be noted that a point which is finalized in the sense of the previous paragraph is finalized as far
as the sweep plane is concerned, i.e. it is a vertex of a derived polygon in the sweep plane. However, it may not be finalized as far as the full 3-dimensional space is concerned; it may be the point at which a sweep plane intersects the edge of a polyhedron somewhere between its two vertexes (end-points).)
As each point is identified, so links with the previous (finalized) elements are constructed for it. Thus point 27 is linked with the vertex 30, point 28 with vertex 31, point 24 with vertex 31, and point 29 with vertex 32. This linking is done using information in the previous sweep status structure. (Looking at the matter in the opposite sense, finalized elements like point 32 become linked to a succession of temporary points along segment 33, one after the other, until a second finalized point is reached.)
The points are then taken in adjacent pairs, and the segments through them (or, more specifically, the parts of the segments through them extending on below the sweep line) are compared for possible intersections. In this case, point pair 27 and 28 do not yield an intersection point; pair 28 and 24 yield an intersection (point 33, Fig. 4); and point pair 24 and 29 do not yield an intersection. The intersections (in this case, the point 33) are entered into the event point schedule for the line scan.
Also, the topology manager searches to detect whether any elements have become finalized. In this case, point 24 is obviously a finalized point; also, segment 34 (between points 24 and 31) is finalized on this
sweep. The topology manager enters such finalized elements into the derived bodies listing for the line sweep.
When the sweep of the line 25 across the plane 22 is finished, the sweep status schedule for the sweep plane is updated. Further salient points are determined by testing adjacent polygons for intersection, just as adjacent edges are tested while sweeping the plane. The derived salient points are added to the event point schedule .
Further, the topology manager searches to detect whether any elements have become finalized (at this stage, finalized elements may be vertexes, line segments, or polygons). If so, the topology manager enters the finalized elements into the derived bodies listing for the plane sweep (i.e. the final derived bodies listing) , and deletes them as appropriate from the sweep status schedule. The sweep plane then moves on to its next position. The whole process is then repeated, until the sweep plane has passed through all salient points.
Some complications which do not affect the basic principles of the system may be noted here.
First, it will be realized that as a sweep line or plane progresses, the topology manager may start to construct apparently distinct polygons or polyhedra which later turn out to be parts of a single polygon or polyhedron. Fig. 8A shows an example, a U-shaped re-
entrant polygon. A sweep line passing downwards over this will initially detect/ two separate polygons 40A and 40B, and only later will it become apparent that these apparently separate polygons are actually parts of a single polygon. The topology manager can readily be arranged to combine such apparently distinct polygons or polyhedra when appropriate.
Second, the system can also readily be arranged to cope with lines or planes lying parallel to the sweep line or plane; that is, when two or more salient points line in a single sweep line or plane.
Third, it is possible for a polygon to consist of separate parts, i.e. to have "holes" in it, as shown in Fig. 8B, where the polygon 41 has two separate boundaries 42 and 43. The topology manager can readily be designed to cope with such situations, e.g. by introducing a "phantom" edge 45 which is treated as a double edge splitting the ring polygon and joining the loop of outside edges 43 to the loop of inside edges 44. Polyhedra with holes can be dealt with similarly.
Fourth, curved bodies can be dealt with in various possible ways. One way is to perform a preliminary or provisional sweep to identify potential intersections involving curved bodies. For this, the curved bodies are analysed and salient points generated for their, top-most and bottom-most points. A sweep is then made simply to identify, for each curved body, those bodies at the same level. For each such instance, an analysis is made of the curved body and the further body at the same level to determine whether they intersect, and if
they do intersect, at least one salient point is generated for their intersection. The main full sweep can then be performed.
The salient points for the intersections of each curved body with other bodies are preferably chosen at the top-most and bottom-most points of the intersection of the bodies. However, it may be more convenient to choose those salient points in some other way, in which case some back-tracking of the sweep plane during the main sweep may be necessary.
For example, with a sphere and a polyhedron, the distances between the vertexes of the polyhedron and the centre of the sphere can. be determined. If some are more and some are less than the radius of the sphere, the sphere and the polyhedron intersect. It is then easy to find the points where the edges of the polyhedron intersect the sphere, and these can be taken as the preliminary salient points. The curved segments, joining these points may however rise above or fall below these points.
For two spheres, the distance between their centres is compared to the sum of their radii to determine whether they intersect, and if they intersect, the top-most and bottom-most points of their circle of intersection can be determined and taken as the preliminary salient points .
Obviously, all this will involve a certain amount of geometric analysis, on one or both of the preliminary and main sweeps.
Fifth, a more elaborate form of representation of the various elements may be desirable. In the original bodies, each polygonal face constitutes the boundary of a single original polyhedron. Each edge, however, plays a double role, being the boundary of two polygons, and each vertex plays a multiple role, being the boundary of several edges. When the intersections of the original polyhedra are determined, edges will often play quadruple roles, at the intersections of two original polygons, and polygons will often play double roles, as the boundaries of two contiguous derived polyhedra. More complicated special cases can arise, if for example several derived polyhedra meet about a common edge.
It is therefore desirable to represent each polyhedron as a list of faces, by identifying the edges of those faces; and to identify each such edge as a pair of points, by identifying the two points. The two points of a pair of points are naturally ordered, simply as a result of giving them one after the other. Each edge is therefore naturally directed. It is convenient to define the edges of a face with consistent directions, cyclically round the face, and to use the same cyclic direction for the insides of all faces of a polyhedron. This results in each edge of polyhedron appearing twice and each vertex appearing several times in the description of that polyhedron, and shared faces, edges, and vertexes appearing repeatedly.
One convenient result of this representation is that is it easy to manipulate elements (individual polyhedra,
polygons (faces) . edges, and even vertexes) individually. Fig. 6 is an example of the individual manipulation of the 3 derived polyhedra resulting from the 2 original polyhedra of Fig. 1; the derived polyhedra 20", 21", and 22 have been moved apart from each other in Fig. 6.
Fig. 7 shows the polygons of Fig. 4 but with the vertexes and edges replicated as appropriate as distinct appearances. Each edge appears twice, as shown by the two arrows one on each side of each edge. Some vertexes appear twice, others 4 times.
The different appearances of each vertex are shown by small circles adjacent to the actual vertex. For each vertex, its multiple appearances are linked as indicated by the arrows between its appearances. (An edge has two appearances, and at each end, the two appearances of the vertex are linked. This linking suffices to link all appearances of a vertex.)
For convenience and consistency, the whole (infinite) plane is treated as an element, so the configuration is treated as 4 polygons: the intersection of the two polygons 20' and 21'; the 2 remaining parts of those polygons; and the remainder of the plane. The last of these elements has its edges directed in the opposite sense to those of the first 3 elements, indicating that it is a plane with a hole in it rather than a finite polygon.
Fig. 7 shows the sweep plane in a position where the two bodies 20 and 21 are already intersecting; the two
polygons of Fig. 4 automatically forma connected set of edges. For early positions of the sweep plane, however, the intersections of the bodies 20 and 21 with the sweep plane will be separate, i.e. disconnected. As the sweep plane nears the end of its travel, the intersections of the two polyhedra 20 and 21 may again become disconnected.
It is desirable for the topology manager to introduce phantom edges, like the edge 45 shown in Fig. 8B, whenever disconnected elements appear in the sweep plane, to maintain a unified representation. The topology manager will update the phantom edges in the same way as the other edges as the sweep plane advances. It will also take the appropriate action when two initially disconnected configurations in the sweep plane become connected as the sweep plane advances, in the same way as discussed above with reference to Fig. 8A (and, of course, when a connected configuration splits into two disconnected parts).
Fig. 9 is a block diagram of the apparatus for carrying out the processes described above. Block 50 shows the major components for performing the 3-dimensional sweep.
Block 51 is a storage unit containing the listing of the original bodies. The manner in which this listing is organized will be described by taking the example described above. Each cuboid is defined by 3 tables: a list of the 8 vertexes, giving the 3 co-ordinates of each vertex; a list of the 12 edges, giving the 2 vertexes at the ends of each edge; and a list of the 6
faces, giving the 4 edges bounding each face. (The latter 2 tables can be described as incidence tables.)
Fig. 10 shows how this information can be stored. For simplicity, we will assume that each polyhedron is stored independently, though of course the more complicated and elaborate structures discussed with reference to Fig. 9 are of course likely to be used in practice .
An information block 60 stores a set of tables, one for each solid (the size of the block 60 is obviously variable) . For each solid, there is a set of 3 tables 61 - a vertex table, an edge table, and a face table. The vertex table 62 lists the vertexes VI, V2, etc., giving for each the X, Y, and Z co-ordinates of the vertex This table is of variable length. The edge table 63 lists the edges El, E2 , etc., giving for each the 2 vertexes at the ends of the edge. This table is of variable length. The face table 64 lists the faces FI, F2, etc., giving for each the edges which bound it. This table is of variable width and length.
Obviously table 62 need not contain the vertex numbers explicitly, and similarly for the edge and face tables. Also, as noted above, somewhat different and more elaborate forms of these tables may be used.
Returning to Fig. 9, there is also a sweep plane analysis unit 53, which is a logic block for performing a variety of operations. Coupled to this is a block
52, which is an event point schedule storage unit for storing the event point schedule. Initially, the sweep plane analysis unit 53 scans through the listing of the original bodies in block 51, copying say the X co- ordinates of all points listed and sorting them into sequence and storing the sorted list in the event point schedule block 52. As the sweep proceeds, so event points will be deleted one by one from the block, and additional derived event points will be generated by the sweep plane analysis unit 53 and entered into the event point schedule unit 52.
There is also a sweep status structure unit 54 coupled to the sweep plane analysis unit 53. This unit 54 is, like unit 52, a storage unit, which is used to store the sweep status structure. As with unit 52, the contents of unit 54 are updated by the logic unit 53 and read by that unit as the sweep progresses.
The sweep status structure unit 54 is also coupled to a topology unit 55, which is in turn coupled to a derived bodies storage unit 56. The topology unit 55 is a logic unit which monitors the sweep status structure unit 54 to detect finalized elements herein. The derived bodies storage unit 56 is organized in the same way as the original bodies storage unit 51, and the topology unit 55 transfers the finalized elements from unit 54 to the unit 56, each time a new sweep plane position has been processed, so gradually building up the descriptions of the derived bodies.
As described above, when the 3-dimensional sweep reaches a sweep plane, a 2-dimensional sweep of that plane is performed. The 3-dimensional sweep is essentially performed by the sweep plane analysis unit 53. This unit is further coupled to a block 50' which contains the major components for performing the 2- dimensional sweep. As shown, the block 50' has essentially the same structure as block 50, though of course the functions implemented by the units in block 50' will be simpler than those implemented by the units in block 50 because block 50' is performing a 2- dimensional sweep instead of a 3-dimensional sweep.
Similarly, the sweep line analysis unit 53' is coupled to a further block 50", which is essentially identical to blocks 50 and 50', though simpler because it implements only 1-dimensional sweeping rather than 2- or 3-dimensional sweeping. This block 50" implements the 1-dimensional sweep required when the sweep line reaches a salient point in the sweep being performed in block 50' .
The blocks 50, 50', and 50" are shown as distinct. However, it will of course be realized that the functions of all three blocks can be performed by a single set of logic and storage circuits. To start with, the circuits will perform a 3-dimensional sweep. When the processing reaches the point where a 2- dimensional sweep is required, their contents will be stored in temporary storage (not shown) and they will switch to performing 2-dimensional sweeping. When that processing reaches the point where a 1-dimensional sweep is required, their contents will again be stored
in temporary storage (not shown) and they will switch to performing 1-dimensional sweeping. When the 1- dimensional sweeping is completed, the 2-dimensional sweeping information will be retrieved from the temporary storage and 2-dimensional sweeping will be recommenced. And when the 2-dimensional sweeping is completed, the 3-dimensional sweeping information will be retrieved from the temporary storage and 2- dimensional sweeping will be recommenced.
If desired, the necessary logic and storage functions can be implemented by suitably controlled microprocessor units and storage units of generally conventional types.