WO2000046755A1 - Geometric data manipulation - Google Patents

Geometric data manipulation Download PDF

Info

Publication number
WO2000046755A1
WO2000046755A1 PCT/IE2000/000013 IE0000013W WO0046755A1 WO 2000046755 A1 WO2000046755 A1 WO 2000046755A1 IE 0000013 W IE0000013 W IE 0000013W WO 0046755 A1 WO0046755 A1 WO 0046755A1
Authority
WO
WIPO (PCT)
Prior art keywords
sweep
plane
bodies
derived
line
Prior art date
Application number
PCT/IE2000/000013
Other languages
French (fr)
Inventor
Brian Peters
Original Assignee
Tplg Technologies Limited
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tplg Technologies Limited filed Critical Tplg Technologies Limited
Priority to AU23157/00A priority Critical patent/AU2315700A/en
Publication of WO2000046755A1 publication Critical patent/WO2000046755A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects

Definitions

  • 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.
  • 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.
  • 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.
  • 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) .
  • 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. )
  • 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.
  • 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.
  • the sweep algorithm In a planar system, the intersections between areas (in the simplest case, polygonal areas) have to be determined.
  • 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.
  • 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
  • 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:
  • sweep plane topology manager means for constructing derived polyhedra from the sweep status structures
  • sweep line processor means operative each time the sweep plane encounters a salient point, comprising:
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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:
  • 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.
  • Fig. 10 shows the storage of the data defining the bodies .
  • 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.
  • this procedure can be modified in various ways.
  • 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.
  • the top-most point of a curved segment is a salient point.
  • 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 .
  • This module takes the information from the successive sweep status structures and constructs derived polygonal areas from that information.
  • 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
  • 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' .
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • point pair 27 and 28 do not yield an intersection point
  • pair 28 and 24 yield an intersection (point 33, Fig. 4)
  • 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.
  • 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.
  • 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 .
  • 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.
  • 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.
  • 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.
  • a polygon can 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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 .
  • each polygonal face constitutes the boundary of a single original polyhedron.
  • Each edge plays a double role, being the boundary of two polygons, and each vertex plays a multiple role, being the boundary of several edges.
  • 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.
  • each polyhedron 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.
  • 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.
  • each vertex has different appearances of two 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.)
  • 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.
  • topology manager 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

A system and method for identifying the overlaps between a number of distinct 3-dimensional (or higher dimensional) geometrical bodies (20, 21) which are defined by means of salient points involves forming an ordered list of salient points, and sweeping through the bodies with a sweep plane. 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. 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.

Description

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.

Claims

Claims
1. A system for 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:
sweep plane processor means (50) comprising: means (52) for forming an ordered list of salient points; means (53) for 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 sweep plane topology manager means (55) for constructing derived polyhedra from the sweep status structures; and sweep line processor means (50) known per se operative each time the sweep plane encounters a salient point, comprising: means (52') for forming an ordered list of salient points in the sweep plane, means (53') for 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 sweep line topology manager means (55') for constructing derived polygons from the sweep status structures and passing the polygons so derived to the sweep plane topology manager means (55).
2. A system according to claim 1 wherein curved bodies are defined by means of an outline of straight elements .
3. A system according to claim 2 wherein the straight segments are chosen to include all extreme points.
4. A system according to any previous claim including means for back-tracking to a previous plane when a salient point is determined to exist preceding the current position of the sweep plane.
5. A system according to any previous claim including means for connecting the various bodies into a unitary structure by means of phantom elements.
6. A system according to any previous claim wherein each body of more than 1 dimension is represented by a cycle of elements of 1 less dimension.
7. 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) .
PCT/IE2000/000013 1999-02-02 2000-01-28 Geometric data manipulation WO2000046755A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU23157/00A AU2315700A (en) 1999-02-02 2000-01-28 Geometric data manipulation

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IES990073 1999-02-02
IE990073 1999-02-02

Publications (1)

Publication Number Publication Date
WO2000046755A1 true WO2000046755A1 (en) 2000-08-10

Family

ID=11041993

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IE2000/000013 WO2000046755A1 (en) 1999-02-02 2000-01-28 Geometric data manipulation

Country Status (2)

Country Link
AU (1) AU2315700A (en)
WO (1) WO2000046755A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105809735A (en) * 2016-03-11 2016-07-27 武汉大学 Topology maintenance method based on three-dimensional geometric body combination
WO2020154065A1 (en) * 2019-01-25 2020-07-30 Microsoft Technology Licensing, Llc Plane sweep for multi-level navigation meshes

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0501716A2 (en) * 1991-02-25 1992-09-02 International Business Machines Corporation Scientific visualisation system
US5572634A (en) * 1994-10-26 1996-11-05 Silicon Engines, Inc. Method and apparatus for spatial simulation acceleration
JPH0981776A (en) * 1995-09-11 1997-03-28 Atr Tsushin Syst Kenkyusho:Kk Collision detecting method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0501716A2 (en) * 1991-02-25 1992-09-02 International Business Machines Corporation Scientific visualisation system
US5572634A (en) * 1994-10-26 1996-11-05 Silicon Engines, Inc. Method and apparatus for spatial simulation acceleration
JPH0981776A (en) * 1995-09-11 1997-03-28 Atr Tsushin Syst Kenkyusho:Kk Collision detecting method

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
BONET ET AL: "an alternating digital tree (ADT) algorithm for 3D geometric searching and intersection problems", INTERNATIONAL JOURNAL OF NUMERICAL METHODS IN ENGINEERING,GB,CHICHESTER, vol. 31, no. 1, pages 1-17-17, XP002103584, ISSN: 0029-5981 *
PATENT ABSTRACTS OF JAPAN vol. 1997, no. 07 31 July 1997 (1997-07-31) *
SUDHANSHU KUMAR SEMWAL: "SOLVING GENERAL INTERSECTION PROBLEM, SORTING AND 3D CONTAINMENT PROBLEM", PROCEEDINGS OF THE ANNUAL INTERNATIONAL PHOENIX CONFERENCE ON COMPUTERS AND COMMUNICATIONS,US,WASHINGTON, IEEE COMP. SOC. PRESS, vol. CONF. 8, pages 422-426, XP000106246, ISBN: 0-8186-1918-X *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105809735A (en) * 2016-03-11 2016-07-27 武汉大学 Topology maintenance method based on three-dimensional geometric body combination
WO2020154065A1 (en) * 2019-01-25 2020-07-30 Microsoft Technology Licensing, Llc Plane sweep for multi-level navigation meshes
US10916055B2 (en) 2019-01-25 2021-02-09 Microsoft Technology Licensing, Llc Plane sweep for multi-level navigation meshes

Also Published As

Publication number Publication date
AU2315700A (en) 2000-08-25

Similar Documents

Publication Publication Date Title
Guibas et al. Primitives for the manipulation of general subdivisions and the computation of Voronoi
Miller et al. Mesh computer algorithms for computational geometry
CA2190486C (en) Method of clustering multi-dimensional related data in a computer database by combining the two vertices of a graph connected by an edge having the highest score
Gigus et al. Efficiently computing and representing aspect graphs of polyhedral objects
Guéziec et al. Converting sets of polygons to manifold surfaces by cutting and stitching
US6879980B1 (en) Nearest neighbor query processing in a linear quadtree spatial index
EP0501716A2 (en) Scientific visualisation system
Papakostas Upward planarity testing of outerplanar dags
Guibas et al. Ruler, compass and computer: the design and analysis of geometric algorithms
Brewer III et al. Automated conversion of curvilinear wire-frame models to surface boundary models; a topological approach
Nahar et al. Fast algorithm for polygon decomposition
US5668939A (en) Method and apparatus for rendering a solid three dimensional model from two dimensional input information including closed region recognizing and three dimensional rendering
Vossler Sweep-to-CSG conversion using pattern recognition techniques
US6625607B1 (en) Method of comparing parts
US20040128648A1 (en) Face correlation between computer aided design models
WO2000046755A1 (en) Geometric data manipulation
IES20000111A2 (en) Geometric data manipulation
Camia et al. The full scaling limit of two-dimensional critical percolation
Merks An optimal parallel algorithm for triangulating a set of points in the plane
Moscato et al. An analysis of the performance of traveling salesman heuristics on infinite-size fractal instances in the euclidean plane
Lingas et al. Optimal parallel algorithms for rectilinear link-distance problems
Kumar Surface triangulation: A survey
Gowda Dynamic problems in computational geometry
Johansen et al. A simple algorithm for building the 3-d convex hull
CN114648618B (en) Indoor space three-dimensional topological relation construction method and system

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AL AM AT AU AZ BA BB BG BR BY CA CH CN CR CU CZ DE DK DM EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase