The present invention relates generally to the display of information in a computer system and, more particularly, to the display of information regarding a large number of objects.
A significant problem for users of computer systems is that there are displays of information accessible through the computer system which, due to the voluminous nature of the information underlying the display, make it difficult to render the full complement of the information on a two-dimensional (“2D”) display in a fully comprehensible fashion to the user.
For example, the graphical display and representation of information related to a communications network presents a significant challenge with regard to rending a meaningful 2D display of the relevant network information. That is, in terms of a graphical representation, a communications network is inter alia a collection of nodes which are pairwise connected by links. The nodes of the graph could represent communications switches resident in the network, and the links could represent connections between such switches. For illustrative purposes,
To compound matters, the visualization of large-scale networks (e.g., networks containing in excess of 10,000 nodes and 10,000 links) using a client user interface program executing on a conventional computer system (i.e., a typical personal computer, or stand alone workstation, having a single processing unit with limited processing capabilities as compared to higher performance computer systems such as a server, mainframe or super computer having more expansive processing power) becomes increasingly challenging. Known graphical user interface (“GUI”) methodologies typically handle 2D mapping by loading the complete network topology into main memory. Obviously, this type of memory loading may impact performance of at least the user interface program used to render the display. In order to improve performance, such GUI methodologies employ alternative data structure arrangements. One such known data structure arrangement is the so-called “bounding box test” (see, for example, H. Weghorst, G. Hopper and D. P. Greenberg, “Improved Computational Methods for Ray Tracing”, ACM TOG, 3(1), January 1984, pages 52-69), where such bounding box test improves efficiency by the avoidance of rending unnecessary objects (e.g., a node) when such objects are out range (i.e., out of a particular viewer's defined viewing range). While such data structure arrangements like the above-described bounding box test improve the speed by which a GUI program renders displays, such arrangements have a complexity of O(N) which make them undesirable for use with large-scale network topologies. That is, the complexity of these arrangements increases directly as the number of objects increases due to the requirement that every object will need examination before determining whether such object is out of range.
There are a number of well-known alternatives for reducing the complexity associated with the manipulation of large-scale networks in rendering a graphical representation of the large-scale network. For example, the so-called “binary space partition tree” (see, for example, Fuchs, Kedem and Naylor, “Predetermining Visibility Surface Generation in 3-D Scenes”, SIGGGRAPH 1979, pages 175-181; or Fuchs, Kedem and Naylor, “On Visible Surface Generation by a Priori Tree Structures”, SIGGGRAPH, 1980, pages 124-133) is one alternative data structure which reduces the complexity to an average of O (log N). For example, if a set of 1024 objects are represented using a binary space tree, the searching complexity is reduced to 10 (i.e., log(1024)) to determine which objects are out of range.
Similarly, the well-known “quad tree data structure” (see, for example, A. Klinger, “Patterns and Search Statistics”, Optimizing Methods in Statistics, Academic Press, New York, 1971, pages 303-337; or James D. Foley et al., “Computer Graphics Principles and Practice”, Second Edition, pages 550-555, 1996; or J. Warnock, “A Hidden-Surface Algorithm for Computer Generated Half-Tone Pictures”, Technical Report TR 4-15, NTIS AD-753, 671, Computer Science Department, University of Utah, Salt Lake City, Utah, June 1969) is another known data structure useful for achieving reduced data complexity in rendering graphical representations. For illustrative purposes,
In terms of a computer system's memory utilization, this traditional quad tree structure is very efficient for use with main memory and with extremely high performance computer systems (e.g., supercomputers or parallel computing). See, for example, Quentin F. Stout et al., “Adaptive Blocks: A High Performance Data Structure”, SC97 Technical Paper. As will be appreciated, the use of the term “main memory” means the primary memory of a computer system, which typically consists of silicon memory devices. In contrast, a typical computer system's “secondary memory” consists of a magnetic disk hard drive, whereby the secondary memory typically exceeds the amount of primary memory by several orders of magnitude, and the access speed and latency time are significantly different than main memory. Other typical forms of secondary memory include CD-ROM, floppy drives, Zip drives and tape storage.
As highlighted above, the art is replete with known 2D mapping and graphical techniques which work well with main memory and with higher performance computer systems, in rending the display of information regarding a large number of entities (e.g., a large-scale communications network). However, such known techniques present certain challenges when applied to conventional computer systems. In particular, the attribute (of such known techniques) of storing, before displaying a particular rendering, the complete network topology in main memory becomes problematic in terms of conventional computer systems, which are resource limited (e.g., in terms of CPU power and total main memory allocation) as compared to higher performance computer systems. Further, as the network's topology increases in size, it becomes increasingly difficult, if not impossible, for a client user interface program to load the entire large-scale network topology in the main memory of a conventional computer system.
Thus, there exists a need for a graphical display tool which will allow for the display of a very large number of entities (e.g., large-scale network topologies) on a resource limited client program (e.g., a client user interface program executing on a conventional computer system).
The present invention provides a method and apparatus for achieving the storing, manipulating and rendering of large-scale 2D displays (e.g., a large-scale communications network topology) using a conventional computer system and its secondary memory. More particularly, the various aspects of the present invention are based on the realization that a modified quad tree data structure in combination with particular indexing and viewing methodologies can achieve the storing, loading, rending, and navigating of, large-scale topologies utilizing the secondary memory of a conventional computer system.
In accordance with an aspect of the invention, a modified quad tree data structure is employed whereby such modified data structure consists of a quad tree modified with a so-called balanced search tree (“B-tree”) such that the modified quad tree structure of the invention divides each of the quad tree's nodes into an array of cells. As such, the modified quad tree structure of the present invention significantly increases the branching factor of the data structure thereby decreasing the number of accesses necessary to secondary memory in rendering a particular display. Therefore, the modified quad tree data structure of the present invention is particularly advantageous for use with the secondary memory of a conventional computer system due to the significant reduction in the total access time and facilitating the access of only those objects that are viewable in the current range. Further, when combined with the further aspects of the invention (as detailed below) directed to indexing and viewing, the present invention provides for the display of a very large number of entities utilizing a conventional computer system and secondary memory.
More particularly, in accordance with a further aspect of the invention, an indexing methodology is applied with the modified quad tree data structure (as detailed above) such that an index table is constructed for use in storing a representation of the desired display information (e.g., a network topology). In particular, in accordance with the preferred embodiment of the invention, objects (e.g., a node or link) are inserted into the cells of the modified quad tree data structure using particular cell identifiers. That is, in accordance with this aspect of the invention, each cell associated with a particular node of the quad tree carries a specific cell identifier such that each cell can hold information about more than one object. Information about each object as detailed above is stored, illustratively, in an object table and such object table is used to load an index table through the insertion and deletion of objects. The populated index table therefore is the finished data structure which defines the respective modified quad tree. Further, in accordance with an aspect of the invention, each quad tree node includes the storage of an object count where such object count equals the number of objects that are defined to be inside or intersecting with the rectangle defined by that particular quad tree node.
In accordance with the preferred embodiment of the invention, the index table contains a complete mapping of the particular topology to be displayed. In accordance with a further aspect of the invention, a viewing of the particular topology is accomplished by applying a so-called “capacity cap” viewing methodology in conjunction with the index table. More particularly, in accordance with this aspect of the invention, a viewer capacity is defined as a function of the total number of objects a viewer can display in a particular screen window and a display capacity density (such display capacity density factor being defined in terms of objects per pixel count). Thus, in accordance with this aspect of the invention, the viewer will render the topology display such that the only objects loaded, and displayed, are objects inside the then current viewing area as defined by the user. Advantageously, the user is able to visualize and navigate through the topology in real-time with the ability to scroll and/or scale a particular display area at any time. Further, in accordance with the preferred embodiment of the invention, main memory stores only that object information necessary to visualize and navigate through that portion of the topology selected by the user (e.g., by scrolling or zooming) in real-time.
Quad trees and balance search trees, as independent data structures, are not new. It has, however, remained for the Applicant herein to recognize that a quad tree data structure can be modified with a balance search tree for the delivery of an improved data structure by which an enhanced graphical display tool can be delivered which allows for the display of a very large number of entities (e.g., large scale network topologies) on a conventional computer system and secondary memory.
FIGS. 9A-C show an illustrative sequencing of the actual display of the data structures of
The present invention provides a method and apparatus for achieving the storing, manipulating and rendering of large-scale 2D displays (e.g., a large-scale communications network topology) using a conventional computer system and its secondary memory. More particularly, the various aspects of the present invention are based on the realization that a modified quad tree data structure in combination with particular indexing and viewing methodologies can achieve the storing, loading, rending, and navigating of, large-scale topologies utilizing the secondary memory of a conventional computer system.
In accordance with an aspect of the invention, a modified quad tree data structure is employed whereby such modified data structure consists of a quad tree modified with a so-called balanced search tree (“B-tree”) such that the modified quad tree structure of the invention divides each of the quad tree's nodes into an array of cells. Referring to
The modified quad tree structure of the present invention significantly increases the branching factor of the data structure thereby decreasing the number of accesses necessary to secondary storage in rendering a particular display. As such, the modified quad tree data structure of the present invention is particularly advantageous for use with the secondary memory of a conventional computer system due to the significant reduction in the total access time and facilitating the access of only those objects that are viewable in the current viewing range. Further, when combined with the further aspects of the invention (as detailed below) directed to indexing and viewing, the present invention provides for the display of a very large number of entities utilizing a conventional computer system and secondary memory.
In order to further illustrate the various aspects of the invention and provide a further comprehensive illustration of the present invention,
In terms of this illustrative example, the initial state and parameters shall be defined by an original viewing range of (0,0) to (100,100), where each field can store a maximum of 2 object id's, and each cell can divide by 3×3. Thus, the initial index table 805 (see,
Referring to
In terms of the NODE 1 insertion, the field (i.e., F04 in index table 805) is empty and is populated with the specific information regarding the insertion of NODE 1, as reflected in index table 810. In turn, display sequence 910 (see,
NODE 2 and NODE 3 are inserted in a similar fashion as NODE 1. These insertions result in the population of field F00 in index table 815, and field F04 in index table 820 along with the additional respective updates to the various elements of index tables 815 and 820 as shown in
Significantly, in accordance with this aspect of the invention, the modified quad tree data structure allows for the division of each of the quad tree's nodes into an array of cells, with the division of each cell into fields such that each field is able to store an array of information. As such, the modified quad tree structure of the present invention significantly increases the branching factor of the data structure thereby decreasing the number of accesses necessary to secondary storage in rendering a particular display.
Continuing with the illustrative example, a fourth node is inserted as follows:
Interestingly, the insertion of NODE 4 in the display's center area, in accordance with the invention, will cause field F04 in the data structure (see, index table 820) to become full. That is, in accordance with this illustrative example, an initial operating parameter was that each field can store a maximum of 2 object id's. Of course, as will be appreciated, further embodiments of the invention will contemplate that each field may hold more than 2 object id's but in all cases a field (of any fixed capacity) might become full. As such, the following discussion of the insertion of NODE 4 will apply in all such similar circumstances where a particular field in the data structure becomes full. More particularly, the insertion of NODE 4 begins in the same fashion as NODES 1-3, however, the determination is made that the field is full (see,
Continuing with the illustrative example, a fifth node, sixth node and link (between nodes 5 and 6) are to be inserted as follows:
The results of these illustrative insertions, in accordance with the present invention, are reflected in index table 830, 835 and 840, respectively. Display sequence 930 (see,
Having illustrated the insertion and deletion of objects in the data structure, in accordance with principles of the invention, the viewing of the contents of the data structure, in accordance with a further aspect of the invention, will now be discussed. More particularly,
For example, if a particular viewer occupies an area of 500×400 square pixels and the viewer has a display capacity density of 0.002, then the total number of objects the viewer can display is 0.0002(500×400)=400 objects. Further, if the user is currently viewing a portion of a particular topology (for example, two percent of the total topology) then the viewer is capable of displaying a topology of 20,000 objects (400/0.02). Thus, the viewer configured in accordance with this aspect of the invention as a function of so-called “capacity cap”. That is, in accordance with this further aspect of the invention, a viewing of the particular topology is accomplished by applying a viewer capacity cap in conjunction with the index table. More particularly, in accordance with this aspect of the invention, a viewer capacity cap is defined as a function of the total number of objects a viewer can display in a particular screen window and a display capacity density (such display capacity density factor being defined in terms of objects per pixel count). Thus, in accordance with this aspect of the invention, the viewer will render the topology display such that the only objects loaded, and displayed, are objects inside the then current viewing area as defined by the user.
Advantageously, the user is able to visualize and navigate through the topology in real-time with the ability to scroll and/or scale particular display area at any time. Further, in accordance with the preferred embodiment of the invention, secondary memory stores only that object information necessary to visualize and navigate through that portion of the topology selected by the user (e.g., by scrolling or zooming) in real-time. Therefore, in accordance with this aspect of the invention, the viewer operations provide for the real-time adaptation to a particular topology with uneven density. That is, if a specific topology has a denser area that other areas, the viewer operates such that the dense area is “marked” and will not be processed until such dense area is within the then current viewer capacity (e.g., via the user “zooming in” on the display).
Turning our attention back to the display of the contents of index table 840, in accordance the present invention, cell “1” is loaded (block 705) into main memory. A determination is then made as to whether the cell size exceeds in the capacity of the viewer (block 710). In terms of the current example, the cell size (i.e., 7) exceeds the capacity of the viewer (i.e., 5). So, an area is created (block 755) to represent cell “1” and its contents are buffered. At this point, as the cell size exceeds the viewer capacity, the user will not see particular objects on the screen but will see the area created to represent the cell (e.g., the rectangle shown in display sequence 935, see
Continuing with this illustrative example of viewing the contents of index table 840, suppose the focal point of the display is now set at the center (50,50) of the display, the user zooms at 400%, and the viewer's capacity remains at 5. Thus, the viewing region becomes (25,25) to (75,75), i.e. 25% of the original area, and the viewer can display a total of 20 objects (5×400%) for this region. Now, the cell size (i.e., 7) does not exceed (block 710) the viewer capacity (i.e., 20), so a determination is next made as to whether the field is full, i.e., the depth is over 10 (block 715). If the field is full (i.e., the depth is too deep), a subcell of that field is accessed and the object is processed in accordance with contents of such subcell (see, blocks 760 through 770). The results of this illustrative operation are reflected in index table 825. As can be seen from index table 825, field F04 now has a depth of two (see, entry 825-1). If the field is not full (i.e., the depth is not over 10), a determination is made as to whether all the fields that touch a particular object have been processed (block 725). If not, the operations of blocks 730-750 and block 720 recursively process the fields for viewing and display the respective objects accordingly.
Processing the illustrative contents of index table 840 results in the viewing of the objects and link shown in display sequence 940 (see,
The foregoing Detailed Description is to be understood as being in every respect illustrative and exemplary, but not restrictive, and the scope of the invention disclosed herein is not to be determined from the Detailed Description, but rather from the claims as interpreted according to the full breadth permitted by the patent laws. It is to be understood that the embodiments shown and described herein are only illustrative of the principles of the present invention and that various modifications may be implemented by those skilled in the art without departing from the scope and spirit of the invention.