US20010045952A1 - Presenting node-link structures with modification - Google Patents
Presenting node-link structures with modification Download PDFInfo
- Publication number
- US20010045952A1 US20010045952A1 US09/124,528 US12452898A US2001045952A1 US 20010045952 A1 US20010045952 A1 US 20010045952A1 US 12452898 A US12452898 A US 12452898A US 2001045952 A1 US2001045952 A1 US 2001045952A1
- Authority
- US
- United States
- Prior art keywords
- node
- link
- last
- link structure
- representation
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/206—Drawing of charts or graphs
Definitions
- the invention relates to presenting a node-link structure in which modification occurs.
- the data structure is updated; the layout for each node is calculated based on the graph layout algorithm, and each node and edge is redrawn.
- nodes are added or deleted consecutively, a single update of the display can be performed after all the modifications have been made.
- a viewport includes a global view and a canvas, and updating depends on mode, which may be automatic update, partial update, or on demand update. Partial update resembles on demand update, but an intermediate display node is displayed temporarily.
- Windows NT Explorer is a program that can be used to see the hierarchy of folders on a disk drive.
- the hierarchy is presented as a list of items, with indentation showing which items are children of other items.
- Some folders are presented with plus signs (+), and if the user does a mouse click on a plus sign, more folders will be displayed.
- Windows NT also provides a similar program that can be used to see a hierarchy of network resources.
- the invention addresses problems in presenting node-link structures that change.
- a node-link structure can change in several situations. For example, if the structure is large, the data available at a given time may only define part of the structure. This may occur because data defining the complete structure has not yet arrived or because the structure is so large that memory is not large enough to hold a complete definition of it. In such cases, a partial structure is held in memory, to be changed as additional data arrives or is retrieved.
- a node-link structure changes is when the structure is a partial version of an underlying structure.
- the user may request that specified types of nodes or links be selected to obtain a filtered version.
- a node-link structure is produced that omits nodes and links that are not selected by the filter criterion, allowing more space for nodes and links of interest.
- the structure can be a tree that represents an underlying directed graph (DG) structure in which there are multiple in-links to a node in the DG that in turn has children.
- DG directed graph
- the DG node is represented by multiple parent nodes in the tree, each with one of the in-links, but the DG node's children are represented with only one of the parent nodes in the tree.
- the parent node with which the children are represented can change, thus changing the tree structure (but not the DG).
- the underlying structure may itself change. For example, it may be modified in response to processes other than the browser through which it is being viewed. Or it may be modified in response to user requests through the browser interface.
- a node-link structure that changes in any of these ways is referred to herein as a “dynamic node-link structure”. This term therefore includes not only underlying node-link structures that change, but also partial versions that change or are obtained differently from an underlying node-link structure, which may itself be either static or dynamic.
- Some conventional presentation techniques can, however, animate transitions to expand or contract an item on a hierarchical list. These techniques are limited however to one modification, either an expansion or a contraction, and therefore are difficult to generalize to all transitions.
- the invention alleviates problems in presenting dynamic node-link structures by providing techniques that make it easier for a user to understand a broader range of transitions.
- Each technique presents a sequence of representations, the first of which represents a first node-link structure and the ii last of which represents a second node-link structure that is a modified version of the first node-link structure.
- the elements shared by the first and last structures include a moving element represented by features that have different positions in the first and last representations.
- the techniques present at least one intermediate representation.
- Each representation in the sequence includes features representing a subset of the shared elements that includes the moving element.
- the feature representing the moving element has object constancy through the sequence of steps.
- the second node-link structure is a modified version with at least one insertion and at least one deletion in the first node-link structure.
- an element could be deleted from one position and inserted at another position. Therefore, techniques according to this aspect, referred to as “deletion and insertion” herein, could be used to move an element or to make more complicated changes, including multiple deletions and insertions.
- Each of the new deletion and insertion techniques presents a sequence of images in which the area of an element being deleted or inserted changes, either decreasing or increasing in each successive image. At the same time, compensating area changes occur in nearby elements. If the area changes are appropriately chosen, the sequence of images will produce the impression that, in deletion, nearby elements are closing in on the element being deleted and, in insertion, that the element being inserted is pushing nearby elements aside.
- the sequence of images can also, in each case, provide an appropriate motion of an element being deleted or inserted.
- the element being deleted in deletion of an element with a wedge-shaped area, can move out the open end of its wedge, can shrink along with its wedge, or can disappear before its wedge begins to shrink.
- deletion and insertion techniques animate expansion or contraction of the descendants of a node.
- the descendants In expansion of a node's descendants, the descendants can spread from the node; in contraction, the descendants can be drawn into the node.
- the deletion and insertion techniques can be implemented with a first subsequence of steps in which features representing elements are deleted and a second subsequence in which features representing elements are inserted. For example, to show an element in a new position, it can first be deleted at its previous position and then inserted at the new position.
- Another aspect of the invention is based on the discovery of techniques for animating a transition in a two-dimensional display.
- two moving elements follow paths that are not parallel straight lines.
- the elements may be moving along curved paths, or the elements may be moving along independent non-parallel paths.
- Yet another aspect of the invention is based on the discovery of techniques for concurrently animating separate changes in a node-link structure. According to these techniques, signals are received requesting at least two separate changes, and change data indicating the requested changes are obtained based on the signals. Then, the change data and a first data structure defining the node-link structure are used to obtain a second data structure defining a changed version of the node-link structure, and then representations can accordingly be presented.
- the new techniques are advantageous because they make it easy for the user to understand a transition in a dynamic node-link structure.
- the new techniques can be implemented without the time-consuming computation necessary to perform layout and redisplay of a complete node-link structure-instead, incremental layout and redisplay can be employed. As a result, a user is able to interact more effectively with a dynamic node-link structure.
- FIG. 1 is a schematic flow diagram showing a sequence of node-link representations with modifications.
- FIG. 2 is a flow chart showing general acts in presentation a sequence of representations like the one in FIG. 1.
- FIG. 3 is a schematic diagram showing general components of a machine ii that presents a sequence of representations like the one in FIG. 1.
- FIG. 4 is a flow chart showing general acts in preparing to present a sequence of representations like the one in FIG. 1 based on signals requesting separate changes.
- FIG. 5 is a schematic diagram of a system.
- FIG. 6 is a flow chart showing how the system of FIG. 5 can respond to events by presenting representations of a directed graph.
- FIG. 7 is a flow chart showing how initial layout can be performed in FIG. 6.
- FIG. 8 is a flow chart showing how layout of a changed node-link structure can be performed in FIG. 6.
- FIGS. 9 and 10 show two sequences of images that can be produced by the technique of FIG. 8.
- a “node-link structure” is a structure that includes items that can be distinguished into nodes and links, with each link relating two or more of the nodes.
- a “graph” is a node-link structure in which each link relates two nodes.
- a “directed graph” is a graph in which each link indicates direction between the nodes it relates, with one node being a source or “rom-node” of the link and the other being a destination or “to-node” of the link.
- An “acyclic directed graph” is a directed graph in which the links, when followed in their indicated directions, do not provide a path from any node back to itself.
- a “tree” is an acyclic directed graph with exactly one root node such that, for any non-root node in the tree, the links, when followed in their indicated directions, provide only one path that begins at the root node and leads to the non-root node.
- the “elements” of a node-link structure are its nodes and links.
- An “image” is a pattern of physical light.
- An “image output device” is a device that can provide output defining an image.
- a “display” is an image output device that provides information in visible form.
- a display may, for example, include a cathode ray tube; an array of light emitting, reflecting, or absorbing elements; a scanning light source; a structure that presents marks on paper or another medium; or any other structure capable of defining an image in a visible form.
- a “node-link representation” is a representation of a node-link structure.
- links can be represented by link features and nodes can be represented by node features.
- a feature representing an element “has an area” if the feature has spatial extent in each dimension of the display on which it is presented; for example, on a two-dimensional display, the feature has an area if it extends in both dimensions of the display.
- the “nearby features” of a feature representing an element in a node-link representation include features that represent other elements and which are closer to the feature than the median distance between the feature and other features that represent other elements.
- a feature representing an element of a node-link structure “has object constancy” through a sequence of representations of the node-link structure, if the features representing the element in the representation in the sequence all appear to be the same feature.
- the features in any two successive representations in the sequence may be sufficiently similar and sufficiently close in time and space that they appear to be the same feature.
- An “animation loop” is a repeated operation in which each repetition presents an image and in which features in each image appear to be continuations of features in the next preceding image, such as through object constancy.
- An “animation cycle” is a single iteration of an animation loop.
- vigation signal is used herein to mean a signal that indicates that the user has greater interest in a part of a node-link structure than in other parts.
- an “expand signal” indicates a request to present a representation of a graph in which the representation of an element of the graph is expanded
- a “contract signal” indicates a request to present a representation of a graph in which the representation of an element of the graph is contracted.
- Other examples include requests to present a part of the node-link structure at a specific position, which can be done by selecting a bookmark or the like or by a point and click operation requesting that a feature pointed to be moved to a center of focus.
- a signal “requests a change” in a node-link structure if the signal requests a change in one or more elements of the structure, such as an insertion or deletion of one or more elements or an operation such as moving or copying that can be implemented by a combination of insertions and deletions.
- Expand and contract signals are examples of signals that request a change.
- a “processor” is a component of circuitry that responds to input signals by performing processing operations on data and by providing output signals.
- the input signals may, for example, include instructions, although not all processors receive instructions.
- the input signals to a processor may include input data for the processor's operations.
- the output signals similarly may include output data resulting from the processor's operations.
- a “network” is a combination of circuitry through which a connection for transfer of data can be established between machines.
- FIGS. 1 - 4 show general features of the invention.
- display 10 presents a sequence of node-link representations beginning with first representation 20 of a first node-link structure and ending with last representation 50 of a second node-link structure that is a modified version of the first node-link structure with both a deletion and an insertion, which could result from signals requesting two separate changes. Between representations 20 and 50 , display 10 presents intermediate representation 40 .
- the first node-link structure has a first level node represented by feature 22
- the first level node has two children that are second level nodes represented by features 24 and 26 .
- the child represented by feature 24 is at the top of branch 28 , which includes all its descendants, including three children that are third level nodes.
- the child represented by feature 26 is at the top of branch 30 , which includes all its descendants, including two children that are third level nodes.
- the second node-link structure shares a number of elements with the first node-link structure, a subset of which are represented by features in all of representations 20 , 40 , and 50 .
- the shared elements include the nodes represented by features 22 , 24 , and 26 and the links that connect them, each of which has a stable position through representations 20 , 40 , and 50 .
- the shared elements also include nodes represented by features 32 and 34 in branch 28 and nodes represented by features 36 and 38 in branch 30 and the features representing links to nodes 32 , 34 , 36 , and 38 ; each feature that represents one of these nodes and links has a different position in last representation 50 than in first representation 20 , and these nodes and links are therefore referred to herein as “moving elements”.
- the changes in positions of features representing moving elements occur because the first node-link structure is modified in two ways to obtain the second node-link structure.
- One of the third level nodes represented in branch 28 is deleted to obtain branch 52 , and an additional third level node is added to branch 30 to obtain branch 54 .
- the features representing the moving elements have object constancy through the sequence of representations.
- nodes 36 and 38 appear to follow curved paths apart, while nodes 32 and 34 appear to follow curved paths toward each other. The nodes thus appear to follow paths that are not parallel straight lines.
- Object constancy through the sequence could be produced in various ways, but the technique illustrated in FIG. 1 exemplifies the production of object constancy by presenting similar features at small intervals in space and time.
- Each of features 22 , 24 , and 26 and the features representing links between them can remain substantially identical while presented in rapid succession at the same position, ensuring object constancy.
- Each of features 32 , 34 , 36 , and 38 and the features representing links to them can also remain substantially identical while presented in rapid succession at slightly displaced positions.
- features 32 and 34 bring them closer together to compensate for deletion of a third level node that is a child of feature 24 ; features 32 and 34 are illustratively closer together in branch 52 , in which the node has been deleted, than in branch 28 prior to deletion and in branch 42 in which the deletion is first made.
- the displacements of features 36 and 38 move them apart to compensate for insertion of a third level node that is a child of feature 26 ; features 36 and 38 are farther apart in branch 44 than in branch 30 , and the node has been inserted in branch 54 .
- the act in box 100 begins by presenting a first representation.
- the first representation represents a first node-link structure and includes features representing a subset of the elements that are shared with a second node-link structure.
- the subset includes a moving element, such as a node represented by one of features 32 , 34 , 36 , and 38 in FIG. 1.
- the act in box 102 then presents an intermediate representation that also includes features representing the subset of shared elements. As illustrated by the dashed line, the act in box 102 may be performed more than once to present a series of two or more intermediate representations.
- each feature representing the moving element has object constancy with the feature representing the moving element in the preceding representation, which may be the first representation or a preceding intermediate representation.
- the act in box 104 presents a last representation, representing the second node-link structure, which is a modified version of the first node-link structure.
- the last representation includes features representing the subset of shared elements, and the feature representing the moving element has object constancy with the feature representing the moving element in the preceding intermediate representation, despite the change in position from the first representation to the last representation.
- Machine 150 in FIG. 3 includes processor 152 connected for receiving data indicating user signals from user input circuitry 154 and for providing data defining images to display 156 .
- Processor 152 is also connected for accessing node-link data 158 , which define first and second node-link structures, the second being a modified version of the first.
- Processor 152 is also connected for receiving instruction data 160 indicating instructions through instruction input circuitry 162 , which can illustratively provide instructions received from connections to memory 164 , storage medium access device 166 , or network 168 .
- processor 152 In executing the instructions indicated by instruction data 160 , processor 152 causes display 156 to present a first representation of the first node-link structure, including features representing a subset of the elements that are shared with the second node-link structure.
- the subset of shared elements includes a moving element as described above.
- processor 152 causes display 156 to present at least one intermediate representation, each also including features representing the subset of shared elements; the feature representing the moving element has object constancy with the feature representing the same shared element in the preceding representation.
- processor 152 causes display 156 to present a last representation of the second node-link structure, also including features representing the subset of shared elements, and the feature representing the moving element has object constancy with the feature representing the moving element in the preceding intermediate representation.
- FIG. 3 illustrates three possible sources from which instruction input circuitry 162 could receive data indicating instructions—memory 164 , storage medium access device 166 , and network 168 .
- Memory 164 could be any conventional memory within machine 150 , including random access memory (RAM) or read-only memory (ROM), or could be a peripheral or remote memory device of any kind.
- RAM random access memory
- ROM read-only memory
- Storage medium access device 166 could be a drive or other appropriate device or circuitry for accessing storage medium 170 , which could, for example, be a magnetic medium such as a set of one or more tapes, diskettes, or floppy disks; an optical medium such as a set of one or more CD-ROMs; or any other appropriate medium for storing data.
- Storage medium 170 could be a part of machine 150 , a part of a server or other peripheral or remote memory device, or a software product. In each of these cases, storage medium 170 is an article of manufacture that can be used in machine 150 .
- Data units can be positioned on storage medium 170 so that storage medium access device 166 can access the data units and provide them in a sequence to processor 152 through instruction input circuitry 162 . When provided in the sequence, the data units form instruction data 160 , indicating instructions as illustrated.
- Network 168 can provide instruction data 160 received from machine 180 .
- Processor 182 in machine 180 can establish a connection with processor 152 over network 168 through network connection circuitry 184 and instruction input circuitry 162 . Either processor could initiate the connection, and the connection could be established by any appropriate protocol. Then processor 182 can access instruction data stored in memory 186 and transfer the instruction data over network 168 to processor 152 so that processor 152 can receive instruction data 160 from network 168 . Instruction data 160 can then be stored in memory 164 or elsewhere by processor 152 , and can be executed.
- FIG. 4 illustrates how separate changes can be handled concurrently.
- the act in box 190 receives signals requesting at least two separate changes in a first node-link structure.
- the signals could include two different signals requesting separate changes.
- the act in box 192 obtains change data indicating the changes requested by the signals.
- the change data could also be stored in an appropriate data structure pending use.
- the act in box 194 uses the change data and a first data structure defining the first node-link structure to obtain a second data structure defining a second node-link structure.
- the second node-link structure is a version of the first in which the requested changes have been performed.
- the act in box 196 presents representations of the first and second node-link structures, with animation. This act can include the acts described above in relation to FIG. 2.
- system 200 includes PC processor 202 , which is connected to display 204 for presenting images and to keyboard 206 and mouse 208 for providing signals from a user.
- PC processor 202 is also connected so that it can access memory 210 and client 212 .
- Memory 210 can illustratively include program memory 214 and data memory 216 .
- Client 212 is a source of information about a directed graph, which could be a combination of routines and data stored in memory 210 or could be independent of memory 210 as shown.
- processor 202 could communicate with client 212 through a network.
- the routines stored in program memory 214 can be grouped into several functions.
- Grapher routines 220 create and modify a data structure representing the directed graph defined by the information from client 212 .
- Walker routines 222 respond to navigation signals and other user signals from keyboard 206 and mouse 208 by obtaining information from the directed graph data structure.
- Painter routines 224 provide signals to display 204 to cause it to present representations of the directed graph data structure.
- Math routines 226 can be called to obtain positions of elements of the directed graph in a layout space.
- Data memory 216 in turn contains data structures accessed by processor 202 during execution of routines in program memory 214 .
- Directed graph data structure 230 can be created and modified by grapher routines 220 and can also be accessed by walker routines 222 and painter routines 224 .
- directed graph data structure 230 Further details about the implementation of directed graph data structure 230 are set forth in copending coassigned U.S. patent application Ser. No. 09/DDD,DDD (Attorney Docket No. D/98205Q3), entitled “Controlling Which Part of Data Defining a Node-Link Structure is in Memory”, and Ser. No. 09/EEE,EEE (Attorney Docket No. D/98205Q4), entitled “Node-Link Data Defining a Graph and a Tree Within the Graph”, both incorporated herein by reference.
- Node position data 232 which can be linked to or included within directed graph data structure 230 , can include positions of nodes in a negatively curved space such as a hyperbolic plane and in a rendering space such as a two-dimensional unit disk. Node position data 232 can be accessed by routines in program memory 214 .
- Data structures 234 may, for example, include an extra data structure for mapping from a pair of node IDs to a link ID, implemented as a standard heap; this extra data structure allows lookup and insertion of a link ID in constant expected time.
- FIG. 6 shows how the system of FIG. 5 can respond to events by presenting representations of a graph.
- client 212 begins by obtaining a starting graph and by loading an initial set of elements into memory, such as through calls to create nodes as described in copending coassigned U.S. patent application Ser. No. 09/DDD,DDD (Attorney Docket No. D/98205Q3), entitled “Controlling Which Part of Data Defining a Node-Link Structure is in Memory”, incorporated herein by reference. Expansion flags define a tree within the initial set of elements, as described in copending coassigned U.S. patent application Ser. No. 09/EEE,EEE (Attorney Docket No.
- Client 212 also makes appropriate calls to routines in memory 214 for layout of the tree in a hyperbolic plane, for mapping the tree from the hyperbolic plane to a unit disk with the root node at the disk center, for painting the mapped tree, and for presentation of the painted version on display 204 by swapping a double buffer, all in box 300 .
- client 212 receives an event relating to the graph.
- the event could result from a navigation signal, an editing signal, or another type of signal from a user.
- the event could be received from another source, either within or external to system 200 .
- the event could take the form of a call from within client 212 , from one of the routines in memory 214 , or from other instructions executed by processor 202 .
- a series of received events could be held in a queue, so that box 302 could involve popping an event from a queue.
- client 212 In response to the event received in box 302 , client 212 initiates an appropriate response by making one or more calls to routines in memory 214 . As indicated by box 304 , the response depends on the type of event, so that a branch is taken based on the event.
- the event may be a non-animated event, such as an orientation shift event, a stretch event, or a dragging event.
- An orientation event can result when the user indicates a new orientation for the root node.
- a stretch event can result when the user indicates a new stretch factor for the displayed representation.
- a dragging event for example, can result when the user selects a position within the representation, such as by a mouse down click, and requests that it be moved by an appropriate gesture or other signal.
- Client 212 begins the response to a non-animated event in box 310 by obtaining any information needed for responding to the event.
- the information obtained in box 310 can include the new orientation.
- the information obtained in box 310 can include the new stretch factor.
- obtaining information in box 310 is somewhat more complicated.
- Client 212 could obtain a node identifier (node ID) of the node nearest the selected position and could also obtain information about the requested motion. These items of information could be obtained in much the same way as illustrated by the function find-nearest-node described at cols. 71-72 and as described in relation to FIG. 14 of U.S. Pat. No. 5,590,250, incorporated herein by reference.
- client 212 When client 212 has obtained the necessary information in box 310 , it can conclude with appropriate calls to walker routines 222 and painter routines 224 for layout, mapping, and painting.
- For an orientation event the root node must be laid out at the new orientation.
- layout is not needed.
- the call to walker routines 222 For a stretch event, the call to walker routines 222 must, however, include the new stretch factor, for use in mapping.
- the call to walker routines 222 must include the node ID of the nearest node and the next position along the path of motion, for use in mapping.
- walker routines 222 could first perform any necessary layouts in the hyperbolic plane, and could also lay out any pending edits of the tree, in the manner described in copending coassigned U.S. patent application Ser. No. 09/BBB,BBB (Attorney Docket No. D/98205Q1), entitled “Local Relative Layout of Node-Link Structures in Space with Negative Curvature”, incorporated herein by reference. Then, in box 314 , walker routines 222 could map the tree into the unit disk, beginning with a starting node at a starting position, in the manner described in copending coassigned U.S. patent application Ser. No.
- 09/CCC,CCC (Attorney Docket No. D/98205Q2), entitled “Mapping a Node-Link Structure to a Rendering Space Beginning from any Node”, incorporated herein by reference.
- the starting node could be the nearest node identified in box 310 and the starting position could be the next position along the path of motion.
- the starting node and starting position previously used for mapping could be used in response to an orientation or stretch event.
- painter routines 224 can be called to paint the mapped tree in a display buffer, in box 316 .
- painter routines 224 can mark new edits that occur in the tree as a result of node creation as described in copending coassigned U.S. patent application Ser. No. 09/EEE,EEE (Attorney Docket No. D/98205Q4), entitled “Node-Link Data Defining a Graph and a Tree Within the Graph”, incorporated herein by reference.
- Each edit can be marked by setting a flag or storing other appropriate data.
- a swap of display buffers can be performed to present the tree as painted, thus providing a representation of the graph.
- these events are currently implemented as non-animated events.
- the representation pivots to the new orientation, typically around the node at the focus of the display region.
- the representation expands or contracts radially, typically around the node at the focus.
- the representation moves at a rate determined by the input signal.
- Client 212 could, however, provide an animated response to an orientation event, a stretch event, or a dragging event by converting the requested change into an equivalent sequence of smaller events, and issuing a series of calls in box 310 , one call for each of the smaller events.
- FIG. 6 also illustrates responses to two different types of events which are always treated as animated in the current implementation.
- the first type is a bookmark or click event, in response to which one node's position is moved during an animated sequence and other elements move to accommodate the one node's movement.
- the second type is an insert/delete event, in response to which one node remains stable during an animated sequence in which some elements are contracted, others are expanded, and still others move to accommodate the contractions and expansions.
- a bookmark or click event could result when the user selects an item in a menu or other collection of bookmarks or selects a position within the representation with a mouse down-up click.
- client 212 obtains a node ID and a destination position in the unit disk.
- the node ID and destination position are previously stored and can be retrieved from memory.
- client 212 could obtain a node ID of the node nearest the selected position in much the same way as the function find-nearest-node described at cols. 71-72 of U.S. Pat. No. 5,590,250, incorporated herein by reference, and the destination could be a default position, such as the center of the unit disk.
- client 212 could call walker routines 222 with the node ID and destination position.
- Walker routines 222 can respond by performing an animation loop to present a sequence of representations in which the node moves from its previous position to the destination position.
- walker routines 222 begin by setting up a sequence of node/position pairs, each including the node ID and a position in the unit disk. The positions can be obtained by obtaining a total translation from the previous position to the destination position, then obtaining and repeatedly composing an nth root of the total translation with a current translation as described in relation to boxes 470, 472, and 482 in FIG. 12 of U.S. Pat. No. 5,619,632, incorporated herein by reference.
- the number of node/position pairs can be large enough to ensure a smooth animation from the previous position to the destination position, with features representing elements of the structure maintaining object constancy during the animation.
- the positions could be obtained by selecting an appropriate number of points along an appropriately chosen arc in the hyperbolic plane from the previous position to the destination position.
- the arc could be chosen to compromise between a straight line, which can appear unnatural, and the arc the node would have taken in the nth root method, which can require an excessive number of animation steps to appear smooth.
- the number of points could be chosen to ensure satisfactory animation.
- Walker routines 222 then perform an iteration of the animation loop for each node/position pair in the sequence, as indicated in box 322 .
- walker routines 222 could first lay out in the hyperbolic plane any pending edits of the tree, as described above in relation to box 312 .
- walker routines 222 could map the tree into the unit disk, beginning with the node and position from the next node/position pair as the starting node and the starting position, as described above in relation to box 314 .
- painter routines 224 can be called to paint the mapped tree in a display buffer, in box 328 .
- painter routines 224 can mark new edits that occur in the tree as a result of node creation as described above in relation to box 316 .
- a swap of display buffers can be performed to present the tree as painted, thus providing a representation of the graph.
- An insert/delete event could result when the user requests expansion or contraction of a node or requests some other modification of the graph or the tree.
- An insert/delete event could also be received in the form of a call, and could thus provide a mechanism for automatic modification of the graph or tree without concurrent human control.
- an insert/delete event could result from signals requesting two or more separate changes, with data indicating the changes having been obtained pending a call for animation of all of the changes.
- An insert/delete event could include both deletion and insertion.
- client 212 can first make appropriate calls to routines in memory 214 to determine whether the requested modification of the graph or tree is acceptable, in box 330 .
- routines in memory 214 For example, a technique for determining whether an expand signal is acceptable is described in relation to FIG. 7 of copending coassigned U.S. patent application Ser. No. 09/EEE,EEE (Attorney Docket No. D/98205Q4), entitled “Node-Link Data Defining a Graph and a Tree Within the Graph”, incorporated herein by reference.
- client 212 can modify the graph or tree accordingly, making calls to routines in memory 214 as necessary.
- each element that could be inserted, deleted, or changed by the modification referred to herein as an “affected element”, is marked, such as by setting a flag or storing other appropriate data.
- a node is selected by an expand signal or a contract signal, its parent is also an affected node, because the area allocated to the parent may change. For most other insert/delete events, only nodes that are inserted or deleted are affected.
- Client 212 can then select a node as a stable node to be held at its previous position during animated presentation of the modification.
- the starting node used previously in mapping can be selected as the stable node, and it can be held at the previous starting position.
- walker routines 222 can be called with the node IDs of the node being deleted and of its closest ancestor that will remain in the tree being mapped after deletion. This ancestor can be found by walking upward from the node being deleted until an ancestor is reached that is not being deleted by the current insert/delete event.
- walker routines 222 can test whether the node being deleted is the previous starting node. If so, the identified ancestor can be selected to replace it as the starting node. If the ancestor has been recently mapped to a position that is displayed and that is available, that position can be selected as the starting position. If the ancestor has not been recently mapped, or was mapped to a position that is not displayed or that is not available because another element has now been mapped there, the starting position can be the center of the unit disk.
- client 212 could call walker routines 222 with the stable node ID and position.
- Walker routines 222 can respond by performing an animation loop to present a sequence of representations in which, first, deleted nodes are contracted at their previous positions, and then inserted nodes are expanded at their new positions, all while the stable node is held at its previous position. If the stable node cannot be held at its previous position because it was not recently mapped or was mapped to a position that is not displayed or is not available, it can be shifted to that position after deleted nodes are contracted with the previous starting node at the previous starting position, resulting in a sudden movement between contraction and expansion. Walker routines 222 begin by setting up a sequence of weights to govern the rate at which the area allocated to each affected node changes during contraction and expansion. The weights are separated by sufficiently small increments to preserve object constancy during animation.
- Walker routines 222 then perform an iteration of the animation loop for each weight in the sequence, as indicated in box 332 .
- walker routines 222 could first lay out in the hyperbolic plane the affected nodes and any pending edits of the tree, using the iteration's weight in the manner described in copending coassigned U.S. patent application Ser. No. 09/BBB,BBB (Attorney Docket No. D/98205Q1), entitled “Local Relative Layout of Node-Link Structures in Space with Negative Curvature”, incorporated herein by reference. Then, in box 336 , walker routines 222 could map the tree into the unit disk, beginning with the stable node and position, as described above in relation to box 314 .
- painter routines 224 can be called in box 338 to paint the mapped tree in a display buffer.
- painter routines 224 can mark new edits that occur in the tree as a result of node creation as described above in relation to boxes 316 and 328 .
- a swap of display buffers can be performed to present the tree as painted, thus providing a representation of the graph.
- FIG. 7 shows how layout can be initially performed in box 300 in FIG. 6.
- FIG. 8 shows how layout of a changed node-link structure can be performed in boxes 312 , 324 , and 334 .
- walker routines 222 begin initial layout by obtaining the root node ID and using it to access data relating to the root node in directed graph data structure 232 .
- walker routines 222 lay out the root node by making a call to math routines 226 with an angle width. This could be any suitable angle that produces a desirable result.
- the angles 2 ⁇ and ⁇ /2 have been successfully used, with 2 ⁇ appropriate for a center layout style and with ⁇ /2 appropriate for a top, bottom, right, or left layout style.
- An interface could also be provided to modify this angle to obtain desirable results.
- math routines 226 lay out the root node at the origin of the unit circle, at coordinates (0, 0); with an upward orientation, at coordinates (0, 1); and with an angle half the angle width. Then, walker routines 222 push the root node ID onto the front of a queue in box 354 .
- walker routines 222 iteratively traverse a set of elements of the tree defined by directed graph data structure 232 , until the queue is empty, as indicated in box 360 . Each iteration begins by getting the node ID from the back of the queue and using it to access data relating to the identified node in directed graph data structure 232 .
- the test in box 370 determines whether the node has already been walked in this traversal. It not, in box 372 , walker routines 222 mark the node walked; get the node IDs of the children; identify which of the children are nonexpanded leaves, i.e. leaf nodes with no expanded incoming links; obtain the number of the children that are in the visible tree, as explained below; and call math routines 226 with the number N of children of the node that are in the visible tree to obtain arrays of angles and radii for the children in the visible tree, also explained below.
- the number of children in the visible tree N which is a type of nearby relationship data, can be calculated in either of two ways: If the current traversal is part of a sequence of steps that add nodes, N is equal to the sum of the number of children prior to the traversal plus the number of children being added. If the current traversal is part of a sequence of steps that remove nodes, N is simply equal to the number of children prior to the traversal.
- each radius is set to the value 0 . 7
- each angle is set to the smaller of ((N* ⁇ )/18) and ⁇ .
- N ⁇ 18 a node's angle will depend on the number of its children that are in the visible tree.
- walker routines 222 call math routines 226 to lay out the children.
- Two general principles of layout are applied in implementing box 374 : First, spacing and angle between nodes are determined based only on information about nearby elements in the tree, i.e. nearby relationship data; and, second, the layout information obtained for each node indicates the relative position of a node to its parent in such a way that the position of a node and all its children can be shifted by a small change in the data structure.
- a general strategy that can be followed is to start with a child's radius and angle from box 372 , obtain approximate distances the child needs, use the approximate distances to obtain a distance from the parent, then use the distance from the parent to obtain more precise distances for the child, and then optionally use the more precise distances to obtain even more precise distances, and so forth.
- the approximate distances D1 and D2 can be calculated as sin h(R) and tan( ⁇ / 4 ), respectively.
- D1 and D2 can be used to obtain a total distance DT for all the children, where each adjacent pair of children are separated by the greater of the sums of their D1s and D2s, i.e.
- D 1′ sin h ( DP )asin(sin h ( R )/sin h ( DP ));
- D 2′ 2 sin h ( DP )atan(tan( ⁇ /4)/ e DP ).
- D1′ and D2′ can then be used to obtain a more accurate distance DP′ to the parent, as above, and so forth until a desired level of precision is reached. At that point, the orientation of each child can be calculated as an angle offset from the orientation of the parent.
- a distance D in the hyperbolic plane corresponds to a vector in the unit circle starting at the origin and going a distance tanh(D/ 2 ).
- the general strategy thus obtains layout information based only on nearby relationship information about a node, its parent, and its siblings, including information about a sibling's children in the visible tree, as described above in relation to box 372 .
- the general strategy obtains layout information indicating the distance from a child to its parent and an angle representing the difference in orientation between them.
- the general strategy has been implemented in software that goes through the children with two iterative loops, but uses the first distance obtained without attempting to obtain more precise distances in the manner described above in relation to the general strategy.
- the first loop obtains and temporarily saves separations between adjacent children and a “slice size” for each child, and also obtains a total separation. This information is then used to obtain the distance to the parent.
- the second loop then obtains and saves the relative orientation and area of each child.
- distances D 1 and D 2 are calculated as set forth above in relation to the general strategy.
- D 1 and D 2 for each child are added to D 1 and D 2 for the previous child to obtain S 1 and S 2 .
- a total separation ST is increased by the maximum of the child's S 1 and S 2 , except for the first and last children, for which ST is increased by the maximum of the child's D 1 and D 2 .
- the distance DP from the parent can then be calculated as the greater of tan h(asin h(ST/2 ⁇ )/2) or 0.5. DP is saved as part of the data relevant to the parent node.
- the second iterative loop begins by calculating the angle (S/ST)2 ⁇ , where S is the saved separation for the child.
- S is the saved separation for the child.
- the angle (S/ST)2 ⁇ is added to a running total which began at ⁇ 2 ⁇ .
- the running total is saved with other data relevant to the child.
- Math routines 226 can then calculate a new angle for the child by calling a function similar to the function “inside-angle” at columns 67 and 68 of U.S. Pat. No. 5,590,250, incorporated herein by reference.
- This function referred to herein as “InsideAngle”, starts with a distance (“dist”) that has been moved into a wedge and an angle that is half of the wedge.
- InsideAngle takes as the operative angle the smaller of the starting angle and ( ⁇ ) where ⁇ may have a very small value such as 0.0001, thus avoiding problems in calculation of arctangent.
- InsideAngle obtains the transformation that would move a point at coordinates (dist, 0) on the unit circle to the origin.
- InsideAngle is called with the distance DP and with an angle calculated by multiplying the child's slice size from the first iteration by 2 ⁇ /ST.
- the angle returned by InsideAngle is compared with ⁇ /2, and the child's angle is the smaller of the two.
- math routines 226 Before saving the child's new angle, math routines 226 save the child's previous angle. If the absolute value of the difference between the old and new angles exceeds a minimum value, math routines 226 also save data indicating that layout should continue, as discussed below.
- the second iterative loop obtains a child's area or side space by calling a function similar to the function “room-available” at columns 67 and 68 of U.S. Pat. No. 5,590,250, incorporated herein by reference.
- This function referred to herein as “RoomAvailable”, starts with a distance D that has been moved into a wedge and an angle ⁇ that is half of the wedge.
- RoomAvailable returns a distance to the edge of the wedge that is calculated by first obtaining the ratio (1 ⁇ D 2 )/2D, and by then dividing the ratio by sin ⁇ to obtain an initial distance S.
- RoomsAvailable then returns the distance ((S 2 ⁇ 1) 1 ⁇ 2 ⁇ S).
- RoomAvailable is called with the same distance and angle that were used in calling InsideAngle, as described above.
- the distance returned by RoomAvailable is saved as a measure of the child's area.
- One item indicates a distance or position displacement from the node to its children nodes in the hyperbolic plane.
- the other is an angle displacement in the hyperbolic plane between the extension of the incoming link to the node's parent and outgoing link from the parent to the node.
- the test in box 380 applies an appropriate criterion to determine whether to continue layout to the next generation of nodes.
- the criterion can be whether any child node's angle has been modified by more than a small angular difference, such as 0.00001. If so, layout should continue.
- walker routines 222 push the ID of each child node that is expanded or not a leaf onto the front of the queue. Other child nodes could be 11 marked walked in box 382 , since they do not have children that will be laid out.
- box 382 is completed or if the test in box 380 determines not to continue or the test in box 370 determines that the node is already walked, the back node on the queue is popped, in box 384 , before returning to box 360 .
- FIG. 8 illustrates how layout of a changed node-link structure can be performed in boxes 312 , 324 , and 334 in FIG. 6.
- layout begins in response to a call that leads to layout and mapping, as shown in box 400 .
- the manner in which layout is performed depends on the type of change being made in the node-link structure.
- walker routines 222 can call math routines 226 to lay out the root node at the new orientation before mapping and painting, in box 404 .
- the root node can be laid out as described above in relation to box 352 in FIG. 6, but with the new orientation.
- the new orientation will then be used in mapping, changing the orientation of the representation.
- walker routines 222 first set up a list of remove edits, in box 410 , and then lay out the remove edits before mapping and painting, in box 412 . Then, walker routines 222 set up a list of add edits, in box 414 , and then lay out the add edits before mapping and painting, in box 416 .
- the lists of edits are set up based on edit source lists that are maintained by various routines in memory 214 , including grapher routines 220 and painter routines 224 .
- the current implementation relates to a tree defined by expanded links, as explained in copending coassigned U.S. patent application Ser. No. 09/EEE,EEE (Attorney Docket No. D/98205Q4), entitled “Node-Link Data Defining a Graph and a Tree Within the Graph”, incorporated herein by reference.
- One pair of edit source lists designated “CollapsedLinks” and “ExpandedLinks” herein, includes edits for links selected by contract requests and expand requests, respectively, and can therefore be set up in box 330 in FIG. 5.
- the other pair designated “RemovedLinks” and “AddedLinks” herein, includes edits for links that are deleted and inserted, respectively. Multiple copies of the edit source lists may exist for different purposes.
- the list of remove edits set up in box 410 is based on RemovedLinks, while the list of add edits set up in box 414 is based on AddedLinks.
- walker routines 222 access each edit in the appropriate edit source list, and use the edit to obtain appropriate entries for the list being set up.
- an edit in the edit source list is used to obtain a node ID of the child node of the edit's link and an edit identifier indicating the type of edit being performed.
- a parent of the child node is added to the back of a list of affected nodes unless it is already on the list.
- the parent is the child node's expanded parent node or, if none of its parent nodes are currently expanded, its first parent node. If an edit from an edit source list relates to a child node that does not have a parent, it must relate to the root, and the root node is therefore put on the back of the list of affected nodes in that case.
- the link's child node is also added to a list of children nodes before accessing the next edit in the appropriate edit source list for use in the next iteration. In this way, an iteration is performed for each edit on the edit source list until all edits have been handled to complete the lists of affected nodes and children nodes.
- walker routines 222 first obtain the numbers of elements to be removed and added based on the source edit lists, in box 420 .
- the number to be removed can be obtained by adding the numbers of elements in CollapsedLinks and RemovedLinks, while the number to be added can be obtained by adding the numbers of elements in ExpandedLinks and AddedLinks.
- walker routines 222 allocate the available animation steps between removing steps and adding steps, and also set up lists of remove edits and add edits, somewhat as in boxes 410 and 414 in FIG. 6.
- a simple allocation of animation steps is half removing steps and half adding steps, but if there are no elements to be removed, all the steps can be adding steps, and vice versa if no elements to be added.
- walker routines 222 can perform as described above in relation to boxes 410 and 414 unless there are collapsed or expanded nodes.
- the node itself in addition to its parent, is pushed onto the back of the list of affected nodes; then, the children of the node, rather than the node itself, are added to the list of children nodes.
- collapsing or expanding can be thought of as affecting two generations of nodes, unlike other operations that only affect one.
- Walker routines 222 set up two pairs of lists of affected and children nodes, one pair for remove edits and one for add edits.
- the animation steps that remove nodes are then performed in the loop that begins with box 430 , with a weight being obtained, with the remove edits being laid out with the weight, and with mapping and painting of an animation frame, in box 432 .
- the animation steps that add nodes are then performed in the loop that begins with box 440 , with a weight being obtained, with the add edits being laid out with the weight, and with mapping and painting of an animation frame, in box 442 .
- a weight can be obtained in box 432 by subtracting the current remove animation step number from the number of remove animation steps, then dividing the difference by the number of remove animation steps, so that the weights go from one to zero during a series of remove animation steps.
- a weight can be obtained in box 442 by adding one to the current add animation step number, then dividing the sum by the number of add animation steps, so that the weights go from approximately zero to one during a series of add animation steps.
- the total number of animation steps helps influence the perception of object constancy during animation.
- the total number of animation steps determines the rate at which a removed or added element's area changes, thus indirectly determining the rate at which other elements must move in relation to the area of the removed or added element.
- a larger number of animation steps, appropriately allocated between removing steps and adding steps, is more likely to produce object constancy, provided a sufficient animation speed is maintained.
- two or more separate changes indicated in the edit lists can be animated concurrently.
- an interface can be provided through which client 212 can request that two or more separate changes can be made without animation.
- the edit lists can continue to be formed until a command is received that requires that the edits be committed.
- the command can require that the edits be committed with animation as described above or without animation as in a refresh operation.
- the edit lists can be cleared.
- FIGS. 8 and 9 illustrate exemplary sequences of representations of node-link structures like those presented by a current software implementation, which is substantially the same as described above in relation to FIGS. 4 - 7 .
- the illustrated representations show an organization chart, resembling in some ways the representations in FIGS. 17-21 of U.S. Pat. No. 5,619,632, incorporated herein by reference.
- FIG. 8 shows a sequence of representations that could result from a request to contract a node feature
- FIG. 9 shows a sequence that could result from a request to expand a node feature.
- the concatenated sequence from FIG. 8 through FIG. 9 could result from a request to expand a clone of a previously expanded node feature, as explained below.
- Representations 500 , 502 , and 504 in FIG. 8 include node features that represent individuals within the organization chart.
- Each node feature when presented at maximum size, includes a graphical representation of a person's face and a rectangular title block with a name or nickname of the person. In the lower right-hand corner of the rectangular title block for a node that has descendants can be a small “+” or “ ⁇ ” for requesting expansion or contraction of the node feature, respectively. These little symbols can make a transition at an appropriate time after being selected, such as in the first animation frame.
- the graphical representation can have a reduced size, and the title block can be shortened. As it approaches the perimeter of the representation, a node feature can become a small dot, and then it can become invisible.
- Node feature 510 is present in each of representations 500 , 502 , and 504 , and is shown expanded in representation 500 , with its children small dots near the perimeter.
- the sequence in FIG. 8 could result, for example, from a request to contract node feature 510 .
- the children and grandchildren of the node represented by node feature 510 are removed from the node-link structure, and the transition from representation 500 to a representation in which they are absent is animated.
- Representations 502 and 504 are two intermediate representations that could be presented in such an animated sequence.
- representation 502 its children have just begun to be drawn toward node feature 510 . Its grandchildren, however, remain in position, because they are spreading away from the children at a rate that counterbalances the rate at which the children are drawn toward node feature 510 .
- representation 504 the children have been drawn even closer toward node feature 510 , while the grandchildren continue to remain in position. In addition, because the children have moved away from the perimeter of the representation, they have sufficient area that each child's rectangular title block can be presented. The title blocks overlap based on the order in which they are painted, producing the perception of a set of fanned out cards or sheets.
- node feature 510 The paths followed by the children of node feature 510 are non-parallel, because all of them converge on node feature 510 . As they approach node feature 510 , the area of node feature 510 reduces, resulting in a temporary reduction in size of the graphical representation of a person's face.
- Representation 504 is followed, possibly after a few more intermediate representations, by a last representation in which none of the children or grandchildren of node feature 510 are shown. This appearance can be understood from representation 540 in FIG. 9, in which node feature 510 appears as it would in the last representation.
- representations 540 , 542 , and 544 each include node feature 550 , which was shown contracted in representation 504 in FIG. 8 but is shown expanded in representation 544 in FIG. 9, with its children small dots near the perimeter.
- the sequence in FIG. 9 could result, for example, from a request to expand node feature 550 when it appears as in representation 504 .
- the children and grandchildren of the node represented by node feature 510 are added to the node-link structure, and the transition from representation 504 to a representation in which they are presented is animated.
- Representations 540 and 542 are two intermediate representations that could be presented in such an animated sequence, and representation 544 is a last representation.
- representation 540 its children have just begun to spread from node feature 550 . Because the children are still a distance away from the perimeter of the representation, they have sufficient area that each child's rectangular title block can be presented. As in representation 504 in FIG. 8, the title blocks overlap, producing the perception of a set of fanned out cards or sheets. Its grandchildren, however, are already in position, because they are being drawn toward the children from infinity at a rate that counterbalances the rate at which the children are spreading from node feature 510 .
- representation 542 the children have spread further away from node feature 550 , while the grandchildren continue to remain in position. In addition, because the children have moved closer to the perimeter of the representation, they do not have sufficient area for presentation of title blocks, and have become small dots.
- representation 544 the children of node feature 550 have reached their positions near the perimeter of the representation. Due to nearness to the perimeter, the grandchildren are not visible.
- node feature 550 The paths followed by the children of node feature 550 are non-parallel, because all of them diverge from node feature 550 . When they initially appear, in representation 540 , they are close to node feature 550 , so that the area of node feature 550 is reduced, resulting in a temporary reduction in size of the graphical representation of a person's face. As they diverge from node feature 550 , the area of node feature 550 increases.
- sequences in FIGS. 8 and 9 could be concatenated to produce a single sequence in which node feature 510 is first contracted and node feature 550 is then expanded. This could occur, for example, where node features 510 and 550 both represent the same node in a graph, but the node has two incoming links, so that the node is cloned, occurring twice in a tree that is represented in FIGS. 8 and 9.
- FIG. 9 of copending coassigned U.S. patent application Ser. No. 09/EEE,EEE (Attorney Docket No.
- D/98205Q4 entitled “Node-Link Data Defining a Graph and a Tree Within the Graph”, incorporated herein by reference, when a user requests expansion of the node feature representing one clone, the response can include contracting the node feature representing another clone that was previously expanded. In effect, the branch is moved from node 510 to node 550 .
- the symbols “+” and “ ⁇ ” in the two node features would be modified appropriately.
- the navigation signals could instead relate to an illusory space like those produced by videogames or virtual reality environments or a presentation space other than a display and navigation signals could instead be produced by any appropriate user input device, including other kinds of pointing devices and other kinds of devices for receiving alphanumeric or linguistic input such as voice, gestures, or other modes of user input.
- the invention could be implemented with any appropriate animation techniques.
- node-link structures in which nodes are represented by features such as circles, rectangles, icon-like images, and so forth, and in which links are represented by lines connecting node features.
- the invention could, however, be implemented with any other appropriate way of representing a node-link structure, including, at least for some aspects of the invention, implementation in a representation that includes a list of a hierarchy of items, with the children of an item indented below it.
- the implementation described above maintains object constancy for features representing shared nodes and links through a sequence of steps by presenting similar features at sufficiently small intervals in time and space, but the invention could be implemented with other techniques for maintaining object constancy and with object constancy for features representing only shared nodes or only shared links.
- other cues could be used to help provide object constancy of a moving element, such as blurring between positions, a sequence of outlines between positions, or other indicators of motion between positions.
- the area for a feature representing a deleted or inserted element decreases or increases while the areas of nearby elements increase or decrease, respectively.
- the invention could, however, be implemented with other techniques for changing features representing deleted and inserted elements, such as moving features in from or out to the periphery, changing color to show deletion and insertion, fading in or out, or any other conventional animation techniques, including those available in Microsoft PowerPoint. Further, the invention could be implemented with techniques that increase or decrease areas other than those of nearby elements. Further, a deletion might occur immediately, without animation, at the beginning of the animation of compensating movements of nearby elements could then be animated; similarly, an insertion might occur without animation at the end of animation of compensating movements of nearby elements.
- a set of elements is deleted, then a set of elements is inserted, and movement of an element is accomplished by first deleting it from its previous position and by then inserting it at its new position.
- the invention could, however, be implemented with techniques that concurrently delete and insert elements, and, further, the invention could be implemented with techniques that move an element in ways other than by deleting it and then inserting it.
- a node-link structure is mapped into the unit disk and then painted in accordance with copending coassigned U.S. patent application Ser. No. 09/CCC,CCC (Attorney Docket No. D/98205Q2), entitled “Mapping a Node-Link Structure to a Rendering Space Beginning from any Node”, incorporated herein by reference, but the invention could be implemented with or without mapping, or with a node-link structure mapped and presented in any other appropriate way, including mapping it into any other appropriate rendering space and presenting it in any other appropriate display space, including three-dimensional rendering and display spaces.
- the implementation described above can handle directed graphs, including cyclic directed graphs, but the invention could be implemented for other types of graphs by converting other types of links to appropriate combinations of directed links or by otherwise providing a protocol for mapping the structure of a graph to a tree.
- an undirected link between two nodes could be converted to a pair of directed links between the same nodes or could be assigned a direction based on an appropriate criterion.
- a representation in which all undirected links have been converted to a pair of directed links is likely to be visually confusing, because each pair of directed links results in a cycle, but this confusing might be overcome by presenting cycles in another way.
- the invention has been applied in providing an interactive browser of node-link structures.
- the invention could be applied in a variety of contexts in which node-link structures are visualized.
- the invention could be applied in visualizing web-related structures such as the structure formed by a cached set of web pages or other web objects.
- the invention could be applied to provide a browser for organization charts, file system hierarchies, hypertext hierarchies, world wide web connectivity structures, parts breakdowns, SGML structures, or any other large node-link structures.
- the browser could be used in editing structures or their contents.
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- User Interface Of Digital Computer (AREA)
- Controls And Circuits For Display Device (AREA)
- Control Of Indicators Other Than Cathode Ray Tubes (AREA)
Abstract
Description
- The invention relates to presenting a node-link structure in which modification occurs.
- Lamping, J. and Rao, R., “The Hyperbolic Browser: A Focus+Context Technique for Visualizing Large Hierarchies”,Journal of Visual Languages and Computing, Vol. 7, 1996, pp. 33-55, disclose techniques for displaying a hierarchy in which components diminish in size as they move outwards and the number of components grows exponentially with increasing radius. The display can be smoothly transformed to change the node at the center or focus. Animated transitions between different views maintain object constancy, helping a user assimilate changes. For quick redisplay, less of a fringe is drawn, lines can be drawn rather than arcs, and text can be dropped during animation. Lamping et al., U.S. Pat. No. 5,619,632, disclose a browser that employs similar techniques for presenting a node-link structure and mention that a browser could be used in editing structures.
- Matsuura, T., Taniguchi, K., Masuda, S., and Nakamura, T., “A Graph Editor for Large Trees with Browsing and Zooming Capabilities”, Systems and Computers in Japan, Vol. 24, No. 8, 1993, pp. 35-46, disclose a library program which allows direct manipulation of a large tree on a display. When a node or subtree is added or deleted, the data structure is updated; the layout for each node is calculated based on the graph layout algorithm, and each node and edge is redrawn. When nodes are added or deleted consecutively, a single update of the display can be performed after all the modifications have been made. A viewport includes a global view and a canvas, and updating depends on mode, which may be automatic update, partial update, or on demand update. Partial update resembles on demand update, but an intermediate display node is displayed temporarily.
- Beaudet et al., U.S. Pat. No. 5,515,487, disclose selective display of portions of graphics by expanding and collapsing nodes in trees, directed acyclic graphs, and cyclic graphs. Nodes are selected for modification, all nodes connected to each selected node is assigned to a first set of nodes, and then each node is removed from the first set of nodes and assigned to a second set, together with any connected nodes that are not in the first set. The identified nodes are deleted from the display, and each node connected to a deleted node is highlighted, surrounded by an outline box, shown with outgoing arcs, or otherwise shown in a way that distinguishes collapsed nodes.
- Windows NT Explorer is a program that can be used to see the hierarchy of folders on a disk drive. The hierarchy is presented as a list of items, with indentation showing which items are children of other items. Some folders are presented with plus signs (+), and if the user does a mouse click on a plus sign, more folders will be displayed. Windows NT also provides a similar program that can be used to see a hierarchy of network resources.
- The invention addresses problems in presenting node-link structures that change.
- A node-link structure can change in several situations. For example, if the structure is large, the data available at a given time may only define part of the structure. This may occur because data defining the complete structure has not yet arrived or because the structure is so large that memory is not large enough to hold a complete definition of it. In such cases, a partial structure is held in memory, to be changed as additional data arrives or is retrieved.
- Another situation in which a node-link structure changes is when the structure is a partial version of an underlying structure. For example, the user may request that specified types of nodes or links be selected to obtain a filtered version. In response, a node-link structure is produced that omits nodes and links that are not selected by the filter criterion, allowing more space for nodes and links of interest. Or the structure can be a tree that represents an underlying directed graph (DG) structure in which there are multiple in-links to a node in the DG that in turn has children. In one approach, the DG node is represented by multiple parent nodes in the tree, each with one of the in-links, but the DG node's children are represented with only one of the parent nodes in the tree. In response to user input, the parent node with which the children are represented can change, thus changing the tree structure (but not the DG).
- Also, the underlying structure may itself change. For example, it may be modified in response to processes other than the browser through which it is being viewed. Or it may be modified in response to user requests through the browser interface.
- A node-link structure that changes in any of these ways is referred to herein as a “dynamic node-link structure”. This term therefore includes not only underlying node-link structures that change, but also partial versions that change or are obtained differently from an underlying node-link structure, which may itself be either static or dynamic.
- The presentation techniques described by Lamping and Rao and other conventional techniques can lead to problems with structure change during presentation. Typically, a new layout must be done for at least part of the changed structure and then it must be redisplayed. Therefore, when a change occurs in a structure being presented with such techniques, there is often an abrupt or discontinuous transition to a representation of the changed structure. In some cases, layout and redisplay is so slow that a user cannot effectively interact with the changed structure. Further, layout and redisplay do not provide a way to animate the transition from the old to the new structure, which would improve the user's understanding of the transition. Therefore, many conventional presentation techniques only produce satisfactory results for static node-link structures, and are not suitable for dynamic node-link structures.
- Some conventional presentation techniques can, however, animate transitions to expand or contract an item on a hierarchical list. These techniques are limited however to one modification, either an expansion or a contraction, and therefore are difficult to generalize to all transitions.
- The invention alleviates problems in presenting dynamic node-link structures by providing techniques that make it easier for a user to understand a broader range of transitions. Each technique presents a sequence of representations, the first of which represents a first node-link structure and the ii last of which represents a second node-link structure that is a modified version of the first node-link structure. The elements shared by the first and last structures include a moving element represented by features that have different positions in the first and last representations. Between the first representation and the last representation, the techniques present at least one intermediate representation. Each representation in the sequence includes features representing a subset of the shared elements that includes the moving element. The feature representing the moving element has object constancy through the sequence of steps.
- In one aspect of the invention, the second node-link structure is a modified version with at least one insertion and at least one deletion in the first node-link structure. For example, an element could be deleted from one position and inserted at another position. Therefore, techniques according to this aspect, referred to as “deletion and insertion” herein, could be used to move an element or to make more complicated changes, including multiple deletions and insertions.
- Each of the new deletion and insertion techniques presents a sequence of images in which the area of an element being deleted or inserted changes, either decreasing or increasing in each successive image. At the same time, compensating area changes occur in nearby elements. If the area changes are appropriately chosen, the sequence of images will produce the impression that, in deletion, nearby elements are closing in on the element being deleted and, in insertion, that the element being inserted is pushing nearby elements aside.
- The sequence of images can also, in each case, provide an appropriate motion of an element being deleted or inserted. For example, in deletion of an element with a wedge-shaped area, the element being deleted can move out the open end of its wedge, can shrink along with its wedge, or can disappear before its wedge begins to shrink.
- Yet other deletion and insertion techniques animate expansion or contraction of the descendants of a node. In expansion of a node's descendants, the descendants can spread from the node; in contraction, the descendants can be drawn into the node.
- The deletion and insertion techniques can be implemented with a first subsequence of steps in which features representing elements are deleted and a second subsequence in which features representing elements are inserted. For example, to show an element in a new position, it can first be deleted at its previous position and then inserted at the new position.
- Another aspect of the invention is based on the discovery of techniques for animating a transition in a two-dimensional display. According to these techniques, two moving elements follow paths that are not parallel straight lines. For example, the elements may be moving along curved paths, or the elements may be moving along independent non-parallel paths.
- Yet another aspect of the invention is based on the discovery of techniques for concurrently animating separate changes in a node-link structure. According to these techniques, signals are received requesting at least two separate changes, and change data indicating the requested changes are obtained based on the signals. Then, the change data and a first data structure defining the node-link structure are used to obtain a second data structure defining a changed version of the node-link structure, and then representations can accordingly be presented.
- The new techniques are advantageous because they make it easy for the user to understand a transition in a dynamic node-link structure. In addition, the new techniques can be implemented without the time-consuming computation necessary to perform layout and redisplay of a complete node-link structure-instead, incremental layout and redisplay can be employed. As a result, a user is able to interact more effectively with a dynamic node-link structure.
- The following description, the drawings, and the claims further set forth these and other aspects, objects, features, and advantages of the invention.
- FIG. 1 is a schematic flow diagram showing a sequence of node-link representations with modifications.
- FIG. 2 is a flow chart showing general acts in presentation a sequence of representations like the one in FIG. 1.
- FIG. 3 is a schematic diagram showing general components of a machine ii that presents a sequence of representations like the one in FIG. 1.
- FIG. 4 is a flow chart showing general acts in preparing to present a sequence of representations like the one in FIG. 1 based on signals requesting separate changes.
- FIG. 5 is a schematic diagram of a system.
- FIG. 6 is a flow chart showing how the system of FIG. 5 can respond to events by presenting representations of a directed graph.
- FIG. 7 is a flow chart showing how initial layout can be performed in FIG. 6.
- FIG. 8 is a flow chart showing how layout of a changed node-link structure can be performed in FIG. 6.
- FIGS. 9 and 10 show two sequences of images that can be produced by the technique of FIG. 8.
- A. Conceptual Framework
- The following conceptual framework, when taken with the conceptual frameworks set forth in U.S. Pat. Nos. 5,590,250 and 5,619,632, incorporated herein by reference, is helpful in understanding the broad scope of the invention, and the terms defined below have the indicated meanings throughout this application, including the claims.
- A “node-link structure” is a structure that includes items that can be distinguished into nodes and links, with each link relating two or more of the nodes. A “graph” is a node-link structure in which each link relates two nodes. A “directed graph” is a graph in which each link indicates direction between the nodes it relates, with one node being a source or “rom-node” of the link and the other being a destination or “to-node” of the link. An “acyclic directed graph” is a directed graph in which the links, when followed in their indicated directions, do not provide a path from any node back to itself. A “tree” is an acyclic directed graph with exactly one root node such that, for any non-root node in the tree, the links, when followed in their indicated directions, provide only one path that begins at the root node and leads to the non-root node.
- The “elements” of a node-link structure are its nodes and links.
- An “image” is a pattern of physical light. An “image output device” is a device that can provide output defining an image. A “display” is an image output device that provides information in visible form. A display may, for example, include a cathode ray tube; an array of light emitting, reflecting, or absorbing elements; a scanning light source; a structure that presents marks on paper or another medium; or any other structure capable of defining an image in a visible form.
- A “node-link representation” is a representation of a node-link structure. For example, links can be represented by link features and nodes can be represented by node features.
- A feature representing an element “has an area” if the feature has spatial extent in each dimension of the display on which it is presented; for example, on a two-dimensional display, the feature has an area if it extends in both dimensions of the display.
- The “nearby features” of a feature representing an element in a node-link representation include features that represent other elements and which are closer to the feature than the median distance between the feature and other features that represent other elements.
- A feature representing an element of a node-link structure “has object constancy” through a sequence of representations of the node-link structure, if the features representing the element in the representation in the sequence all appear to be the same feature. For example, the features in any two successive representations in the sequence may be sufficiently similar and sufficiently close in time and space that they appear to be the same feature. A feature with object constancy that appears to move “follows a path”.
- An “animation loop” is a repeated operation in which each repetition presents an image and in which features in each image appear to be continuations of features in the next preceding image, such as through object constancy. An “animation cycle” is a single iteration of an animation loop.
- An element “has descendants” or “is expanded” in a node-link representation if the element has at least one child in the representation. An element “has no descendants” if the element has no children in the representation. An element “is contracted” if the element has no descendants in the representation even though it could based on the underlying node-link structure.
- The term “navigation signal” is used herein to mean a signal that indicates that the user has greater interest in a part of a node-link structure than in other parts. For example, an “expand signal” indicates a request to present a representation of a graph in which the representation of an element of the graph is expanded, while a “contract signal” indicates a request to present a representation of a graph in which the representation of an element of the graph is contracted. Other examples include requests to present a part of the node-link structure at a specific position, which can be done by selecting a bookmark or the like or by a point and click operation requesting that a feature pointed to be moved to a center of focus.
- A signal “requests a change” in a node-link structure if the signal requests a change in one or more elements of the structure, such as an insertion or deletion of one or more elements or an operation such as moving or copying that can be implemented by a combination of insertions and deletions. Expand and contract signals are examples of signals that request a change.
- Two changes are “separate” if each change could be made independently of the other.
- A “processor” is a component of circuitry that responds to input signals by performing processing operations on data and by providing output signals. The input signals may, for example, include instructions, although not all processors receive instructions. The input signals to a processor may include input data for the processor's operations. The output signals similarly may include output data resulting from the processor's operations.
- A “network” is a combination of circuitry through which a connection for transfer of data can be established between machines.
- B. General Features
- FIGS.1-4 show general features of the invention.
- In FIG. 1,
display 10 presents a sequence of node-link representations beginning withfirst representation 20 of a first node-link structure and ending withlast representation 50 of a second node-link structure that is a modified version of the first node-link structure with both a deletion and an insertion, which could result from signals requesting two separate changes. Betweenrepresentations display 10 presentsintermediate representation 40. The first node-link structure has a first level node represented by feature 22, and the first level node has two children that are second level nodes represented byfeatures 24 and 26. The child represented by feature 24 is at the top of branch 28, which includes all its descendants, including three children that are third level nodes. Similarly, the child represented byfeature 26 is at the top ofbranch 30, which includes all its descendants, including two children that are third level nodes. - The second node-link structure, shown by
last representation 50, shares a number of elements with the first node-link structure, a subset of which are represented by features in all ofrepresentations features 22, 24, and 26 and the links that connect them, each of which has a stable position throughrepresentations features features branch 30 and the features representing links tonodes last representation 50 than infirst representation 20, and these nodes and links are therefore referred to herein as “moving elements”. - In the example illustrated in FIG. 1, the changes in positions of features representing moving elements occur because the first node-link structure is modified in two ways to obtain the second node-link structure. One of the third level nodes represented in branch28 is deleted to obtain branch 52, and an additional third level node is added to branch 30 to obtain branch 54. Despite the modifications between the first and second node-link structures and the resulting changes of position, the features representing the moving elements have object constancy through the sequence of representations. As suggested by the arrows in
representations nodes nodes - Object constancy through the sequence could be produced in various ways, but the technique illustrated in FIG. 1 exemplifies the production of object constancy by presenting similar features at small intervals in space and time. Each of
features 22, 24, and 26 and the features representing links between them can remain substantially identical while presented in rapid succession at the same position, ensuring object constancy. Each offeatures features features feature 26; features 36 and 38 are farther apart inbranch 44 than inbranch 30, and the node has been inserted in branch 54. - In FIG. 2, the act in
box 100 begins by presenting a first representation. The first representation represents a first node-link structure and includes features representing a subset of the elements that are shared with a second node-link structure. The subset includes a moving element, such as a node represented by one offeatures - The act in box102 then presents an intermediate representation that also includes features representing the subset of shared elements. As illustrated by the dashed line, the act in box 102 may be performed more than once to present a series of two or more intermediate representations. In each intermediate representation, each feature representing the moving element has object constancy with the feature representing the moving element in the preceding representation, which may be the first representation or a preceding intermediate representation.
- Finally, the act in
box 104 presents a last representation, representing the second node-link structure, which is a modified version of the first node-link structure. As in box 102, the last representation includes features representing the subset of shared elements, and the feature representing the moving element has object constancy with the feature representing the moving element in the preceding intermediate representation, despite the change in position from the first representation to the last representation. -
Machine 150 in FIG. 3 includesprocessor 152 connected for receiving data indicating user signals fromuser input circuitry 154 and for providing data defining images to display 156.Processor 152 is also connected for accessing node-link data 158, which define first and second node-link structures, the second being a modified version of the first.Processor 152 is also connected for receivinginstruction data 160 indicating instructions throughinstruction input circuitry 162, which can illustratively provide instructions received from connections tomemory 164, storagemedium access device 166, ornetwork 168. - In executing the instructions indicated by
instruction data 160,processor 152 causes display 156 to present a first representation of the first node-link structure, including features representing a subset of the elements that are shared with the second node-link structure. The subset of shared elements includes a moving element as described above. Thenprocessor 152 causes display 156 to present at least one intermediate representation, each also including features representing the subset of shared elements; the feature representing the moving element has object constancy with the feature representing the same shared element in the preceding representation. Finally,processor 152 causes display 156 to present a last representation of the second node-link structure, also including features representing the subset of shared elements, and the feature representing the moving element has object constancy with the feature representing the moving element in the preceding intermediate representation. - As noted above, FIG. 3 illustrates three possible sources from which
instruction input circuitry 162 could receive data indicating instructions—memory 164, storagemedium access device 166, andnetwork 168. -
Memory 164 could be any conventional memory withinmachine 150, including random access memory (RAM) or read-only memory (ROM), or could be a peripheral or remote memory device of any kind. - Storage
medium access device 166 could be a drive or other appropriate device or circuitry for accessingstorage medium 170, which could, for example, be a magnetic medium such as a set of one or more tapes, diskettes, or floppy disks; an optical medium such as a set of one or more CD-ROMs; or any other appropriate medium for storing data.Storage medium 170 could be a part ofmachine 150, a part of a server or other peripheral or remote memory device, or a software product. In each of these cases,storage medium 170 is an article of manufacture that can be used inmachine 150. Data units can be positioned onstorage medium 170 so that storagemedium access device 166 can access the data units and provide them in a sequence toprocessor 152 throughinstruction input circuitry 162. When provided in the sequence, the data units forminstruction data 160, indicating instructions as illustrated. -
Network 168 can provideinstruction data 160 received frommachine 180.Processor 182 inmachine 180 can establish a connection withprocessor 152 overnetwork 168 throughnetwork connection circuitry 184 andinstruction input circuitry 162. Either processor could initiate the connection, and the connection could be established by any appropriate protocol. Thenprocessor 182 can access instruction data stored inmemory 186 and transfer the instruction data overnetwork 168 toprocessor 152 so thatprocessor 152 can receiveinstruction data 160 fromnetwork 168.Instruction data 160 can then be stored inmemory 164 or elsewhere byprocessor 152, and can be executed. - FIG. 4 illustrates how separate changes can be handled concurrently.
- The act in
box 190 receives signals requesting at least two separate changes in a first node-link structure. For example, the signals could include two different signals requesting separate changes. - Based on the signals, the act in
box 192 obtains change data indicating the changes requested by the signals. The change data could also be stored in an appropriate data structure pending use. - Then, the act in
box 194 uses the change data and a first data structure defining the first node-link structure to obtain a second data structure defining a second node-link structure. The second node-link structure is a version of the first in which the requested changes have been performed. Finally, the act inbox 196 presents representations of the first and second node-link structures, with animation. This act can include the acts described above in relation to FIG. 2. - C. Implementation
- The general features described above could be implemented in numerous ways on various machines to present node-link representations. An implementation described below has been implemented on a PC-based system running the 32 bit versions of Microsoft Windows and executing code compiled from C++ language source code.
- C.1. System
- In FIG. 5,
system 200 includesPC processor 202, which is connected to display 204 for presenting images and tokeyboard 206 andmouse 208 for providing signals from a user.PC processor 202 is also connected so that it can accessmemory 210 andclient 212.Memory 210 can illustratively includeprogram memory 214 anddata memory 216.Client 212 is a source of information about a directed graph, which could be a combination of routines and data stored inmemory 210 or could be independent ofmemory 210 as shown. For example,processor 202 could communicate withclient 212 through a network. - The routines stored in
program memory 214 can be grouped into several functions.Grapher routines 220 create and modify a data structure representing the directed graph defined by the information fromclient 212. Walker routines 222 respond to navigation signals and other user signals fromkeyboard 206 andmouse 208 by obtaining information from the directed graph data structure.Painter routines 224 provide signals to display 204 to cause it to present representations of the directed graph data structure.Math routines 226 can be called to obtain positions of elements of the directed graph in a layout space. -
Data memory 216 in turn contains data structures accessed byprocessor 202 during execution of routines inprogram memory 214. Directedgraph data structure 230, as noted above, can be created and modified bygrapher routines 220 and can also be accessed by walker routines 222 andpainter routines 224. - Further details about the implementation of directed
graph data structure 230 are set forth in copending coassigned U.S. patent application Ser. No. 09/DDD,DDD (Attorney Docket No. D/98205Q3), entitled “Controlling Which Part of Data Defining a Node-Link Structure is in Memory”, and Ser. No. 09/EEE,EEE (Attorney Docket No. D/98205Q4), entitled “Node-Link Data Defining a Graph and a Tree Within the Graph”, both incorporated herein by reference. -
Node position data 232, which can be linked to or included within directedgraph data structure 230, can include positions of nodes in a negatively curved space such as a hyperbolic plane and in a rendering space such as a two-dimensional unit disk.Node position data 232 can be accessed by routines inprogram memory 214. - The routines in
program memory 214 can also access variousmiscellaneous data structures 234.Data structures 234 may, for example, include an extra data structure for mapping from a pair of node IDs to a link ID, implemented as a standard heap; this extra data structure allows lookup and insertion of a link ID in constant expected time. - C.2. Responding to Events
- FIG. 6 shows how the system of FIG. 5 can respond to events by presenting representations of a graph.
- In
box 300,client 212 begins by obtaining a starting graph and by loading an initial set of elements into memory, such as through calls to create nodes as described in copending coassigned U.S. patent application Ser. No. 09/DDD,DDD (Attorney Docket No. D/98205Q3), entitled “Controlling Which Part of Data Defining a Node-Link Structure is in Memory”, incorporated herein by reference. Expansion flags define a tree within the initial set of elements, as described in copending coassigned U.S. patent application Ser. No. 09/EEE,EEE (Attorney Docket No. D/98205Q4), entitled “Node-Link Data Defining a Graph and a Tree Within the Graph”, incorporated herein by reference.Client 212 also makes appropriate calls to routines inmemory 214 for layout of the tree in a hyperbolic plane, for mapping the tree from the hyperbolic plane to a unit disk with the root node at the disk center, for painting the mapped tree, and for presentation of the painted version ondisplay 204 by swapping a double buffer, all inbox 300. - In
box 302,client 212 receives an event relating to the graph. The event could result from a navigation signal, an editing signal, or another type of signal from a user. Alternatively, the event could be received from another source, either within or external tosystem 200. In either case, the event could take the form of a call from withinclient 212, from one of the routines inmemory 214, or from other instructions executed byprocessor 202. A series of received events could be held in a queue, so thatbox 302 could involve popping an event from a queue. - In response to the event received in
box 302,client 212 initiates an appropriate response by making one or more calls to routines inmemory 214. As indicated by box 304, the response depends on the type of event, so that a branch is taken based on the event. - The event may be a non-animated event, such as an orientation shift event, a stretch event, or a dragging event. An orientation event can result when the user indicates a new orientation for the root node. A stretch event can result when the user indicates a new stretch factor for the displayed representation. A dragging event, for example, can result when the user selects a position within the representation, such as by a mouse down click, and requests that it be moved by an appropriate gesture or other signal.
-
Client 212 begins the response to a non-animated event inbox 310 by obtaining any information needed for responding to the event. For an orientation event, the information obtained inbox 310 can include the new orientation. For a stretch event, the information obtained inbox 310 can include the new stretch factor. - For a dragging event, obtaining information in
box 310 is somewhat more complicated.Client 212 could obtain a node identifier (node ID) of the node nearest the selected position and could also obtain information about the requested motion. These items of information could be obtained in much the same way as illustrated by the function find-nearest-node described at cols. 71-72 and as described in relation to FIG. 14 of U.S. Pat. No. 5,590,250, incorporated herein by reference. - When
client 212 has obtained the necessary information inbox 310, it can conclude with appropriate calls to walker routines 222 andpainter routines 224 for layout, mapping, and painting. For an orientation event, the root node must be laid out at the new orientation. For a stretch event or a dragging event, layout is not needed. For a stretch event, the call to walker routines 222 must, however, include the new stretch factor, for use in mapping. Similarly, for a dragging event, the call to walker routines 222 must include the node ID of the nearest node and the next position along the path of motion, for use in mapping. - In
box 312, walker routines 222 could first perform any necessary layouts in the hyperbolic plane, and could also lay out any pending edits of the tree, in the manner described in copending coassigned U.S. patent application Ser. No. 09/BBB,BBB (Attorney Docket No. D/98205Q1), entitled “Local Relative Layout of Node-Link Structures in Space with Negative Curvature”, incorporated herein by reference. Then, inbox 314, walker routines 222 could map the tree into the unit disk, beginning with a starting node at a starting position, in the manner described in copending coassigned U.S. patent application Ser. No. 09/CCC,CCC (Attorney Docket No. D/98205Q2), entitled “Mapping a Node-Link Structure to a Rendering Space Beginning from any Node”, incorporated herein by reference. For example, in response to a dragging event, the starting node could be the nearest node identified inbox 310 and the starting position could be the next position along the path of motion. The starting node and starting position previously used for mapping could be used in response to an orientation or stretch event. - When the tree has been mapped,
painter routines 224 can be called to paint the mapped tree in a display buffer, in box 316. During painting,painter routines 224 can mark new edits that occur in the tree as a result of node creation as described in copending coassigned U.S. patent application Ser. No. 09/EEE,EEE (Attorney Docket No. D/98205Q4), entitled “Node-Link Data Defining a Graph and a Tree Within the Graph”, incorporated herein by reference. Each edit can be marked by setting a flag or storing other appropriate data. When painting is completed, a swap of display buffers can be performed to present the tree as painted, thus providing a representation of the graph. - As noted above, these events are currently implemented as non-animated events. In response to an orientation event, the representation pivots to the new orientation, typically around the node at the focus of the display region. Similarly, in response to a stretch event, the representation expands or contracts radially, typically around the node at the focus. In response to a dragging event, the representation moves at a rate determined by the input signal.
Client 212 could, however, provide an animated response to an orientation event, a stretch event, or a dragging event by converting the requested change into an equivalent sequence of smaller events, and issuing a series of calls inbox 310, one call for each of the smaller events. - FIG. 6 also illustrates responses to two different types of events which are always treated as animated in the current implementation. The first type is a bookmark or click event, in response to which one node's position is moved during an animated sequence and other elements move to accommodate the one node's movement. The second type is an insert/delete event, in response to which one node remains stable during an animated sequence in which some elements are contracted, others are expanded, and still others move to accommodate the contractions and expansions.
- A bookmark or click event could result when the user selects an item in a menu or other collection of bookmarks or selects a position within the representation with a mouse down-up click. In response to an event of this type,
client 212 obtains a node ID and a destination position in the unit disk. In the case of a bookmark event, the node ID and destination position are previously stored and can be retrieved from memory. In the case of a click event,client 212 could obtain a node ID of the node nearest the selected position in much the same way as the function find-nearest-node described at cols. 71-72 of U.S. Pat. No. 5,590,250, incorporated herein by reference, and the destination could be a default position, such as the center of the unit disk. - In
box 320,client 212 could call walker routines 222 with the node ID and destination position. Walker routines 222 can respond by performing an animation loop to present a sequence of representations in which the node moves from its previous position to the destination position. Inbox 320, walker routines 222 begin by setting up a sequence of node/position pairs, each including the node ID and a position in the unit disk. The positions can be obtained by obtaining a total translation from the previous position to the destination position, then obtaining and repeatedly composing an nth root of the total translation with a current translation as described in relation to boxes 470, 472, and 482 in FIG. 12 of U.S. Pat. No. 5,619,632, incorporated herein by reference. The number of node/position pairs can be large enough to ensure a smooth animation from the previous position to the destination position, with features representing elements of the structure maintaining object constancy during the animation. As an alternative to the nth root approach, the positions could be obtained by selecting an appropriate number of points along an appropriately chosen arc in the hyperbolic plane from the previous position to the destination position. The arc could be chosen to compromise between a straight line, which can appear unnatural, and the arc the node would have taken in the nth root method, which can require an excessive number of animation steps to appear smooth. The number of points could be chosen to ensure satisfactory animation. - Walker routines222 then perform an iteration of the animation loop for each node/position pair in the sequence, as indicated in
box 322. Inbox 324, walker routines 222 could first lay out in the hyperbolic plane any pending edits of the tree, as described above in relation tobox 312. Then, in box 326, walker routines 222 could map the tree into the unit disk, beginning with the node and position from the next node/position pair as the starting node and the starting position, as described above in relation tobox 314. - When the tree has been mapped,
painter routines 224 can be called to paint the mapped tree in a display buffer, in box 328. During painting,painter routines 224 can mark new edits that occur in the tree as a result of node creation as described above in relation to box 316. When painting is completed, a swap of display buffers can be performed to present the tree as painted, thus providing a representation of the graph. - When a new edit is marked in box328 by
painter routines 224, the new edit is laid out during the next iteration, inbox 324. As a result, the animated sequence of representations, rather than showing a static node-link structure as in U.S. Pat. No. 5,629,632, shows a dynamic node-link structure. The edits, however, serve primarily to add features representing new nodes along the outer perimeter of the representation as the representation makes the transition from the previous position to the destination position. As a result, the added features do not interfere with or reduce the perception of object constancy for features representing other elements. - An insert/delete event could result when the user requests expansion or contraction of a node or requests some other modification of the graph or the tree. An insert/delete event could also be received in the form of a call, and could thus provide a mechanism for automatic modification of the graph or tree without concurrent human control. In addition, an insert/delete event could result from signals requesting two or more separate changes, with data indicating the changes having been obtained pending a call for animation of all of the changes. An insert/delete event could include both deletion and insertion.
- In response to an event of this type,
client 212 can first make appropriate calls to routines inmemory 214 to determine whether the requested modification of the graph or tree is acceptable, in box 330. For example, a technique for determining whether an expand signal is acceptable is described in relation to FIG. 7 of copending coassigned U.S. patent application Ser. No. 09/EEE,EEE (Attorney Docket No. D/98205Q4), entitled “Node-Link Data Defining a Graph and a Tree Within the Graph”, incorporated herein by reference. - If the requested modification of the graph or tree is acceptable,
client 212 can modify the graph or tree accordingly, making calls to routines inmemory 214 as necessary. In the process of making the modification, each element that could be inserted, deleted, or changed by the modification, referred to herein as an “affected element”, is marked, such as by setting a flag or storing other appropriate data. If a node is selected by an expand signal or a contract signal, its parent is also an affected node, because the area allocated to the parent may change. For most other insert/delete events, only nodes that are inserted or deleted are affected.Client 212 can then select a node as a stable node to be held at its previous position during animated presentation of the modification. - In many cases, the starting node used previously in mapping can be selected as the stable node, and it can be held at the previous starting position. In other cases, it may be desirable for
client 212 to select a different stable node; for example, a node that is being expanded could be selected as the stable node, to be held at its current position, which thus becomes the new starting position. Therefore, unlessclient 212 selects a different stable node, the previous starting node and starting position are usually retained. But where the previous starting node is being deleted, another node must be selected as the default stable node subject to change byclient 212. - When a deletion is being made, walker routines222 can be called with the node IDs of the node being deleted and of its closest ancestor that will remain in the tree being mapped after deletion. This ancestor can be found by walking upward from the node being deleted until an ancestor is reached that is not being deleted by the current insert/delete event.
- In response to this call, walker routines222 can test whether the node being deleted is the previous starting node. If so, the identified ancestor can be selected to replace it as the starting node. If the ancestor has been recently mapped to a position that is displayed and that is available, that position can be selected as the starting position. If the ancestor has not been recently mapped, or was mapped to a position that is not displayed or that is not available because another element has now been mapped there, the starting position can be the center of the unit disk.
- Also in box330,
client 212 could call walker routines 222 with the stable node ID and position. Walker routines 222 can respond by performing an animation loop to present a sequence of representations in which, first, deleted nodes are contracted at their previous positions, and then inserted nodes are expanded at their new positions, all while the stable node is held at its previous position. If the stable node cannot be held at its previous position because it was not recently mapped or was mapped to a position that is not displayed or is not available, it can be shifted to that position after deleted nodes are contracted with the previous starting node at the previous starting position, resulting in a sudden movement between contraction and expansion. Walker routines 222 begin by setting up a sequence of weights to govern the rate at which the area allocated to each affected node changes during contraction and expansion. The weights are separated by sufficiently small increments to preserve object constancy during animation. - Walker routines222 then perform an iteration of the animation loop for each weight in the sequence, as indicated in
box 332. In box 334, walker routines 222 could first lay out in the hyperbolic plane the affected nodes and any pending edits of the tree, using the iteration's weight in the manner described in copending coassigned U.S. patent application Ser. No. 09/BBB,BBB (Attorney Docket No. D/98205Q1), entitled “Local Relative Layout of Node-Link Structures in Space with Negative Curvature”, incorporated herein by reference. Then, inbox 336, walker routines 222 could map the tree into the unit disk, beginning with the stable node and position, as described above in relation tobox 314. - When the tree has been mapped,
painter routines 224 can be called inbox 338 to paint the mapped tree in a display buffer. During painting,painter routines 224 can mark new edits that occur in the tree as a result of node creation as described above in relation to boxes 316 and 328. When painting is completed, a swap of display buffers can be performed to present the tree as painted, thus providing a representation of the graph. - Whether there are pending edits or not, a series of iterations of the animation loop beginning in
box 332 produces representations of a dynamic node-link structure because of the deletions and/or insertions. In addition, affected elements move to new positions from their positions prior to the deletions and insertions. The technique has been successfully implemented to produce object constancy during these movements. - After a representation is provided in box316 or after an animation sequence is completed in
box box ii 302, as indicated by the circles labeled “A” in FIG. 6. - C.3. Layout
- FIG. 7 shows how layout can be initially performed in
box 300 in FIG. 6. FIG. 8 shows how layout of a changed node-link structure can be performed inboxes - As shown in
box 350, walker routines 222 begin initial layout by obtaining the root node ID and using it to access data relating to the root node in directedgraph data structure 232. Inbox 352, walker routines 222 lay out the root node by making a call tomath routines 226 with an angle width. This could be any suitable angle that produces a desirable result. The angles 2π and π/2 have been successfully used, with 2π appropriate for a center layout style and with π/2 appropriate for a top, bottom, right, or left layout style. An interface could also be provided to modify this angle to obtain desirable results. - In response,
math routines 226 lay out the root node at the origin of the unit circle, at coordinates (0, 0); with an upward orientation, at coordinates (0, 1); and with an angle half the angle width. Then, walker routines 222 push the root node ID onto the front of a queue in box 354. - In the remainder of FIG. 7, walker routines222 iteratively traverse a set of elements of the tree defined by directed
graph data structure 232, until the queue is empty, as indicated in box 360. Each iteration begins by getting the node ID from the back of the queue and using it to access data relating to the identified node in directedgraph data structure 232. - In each iteration, the test in
box 370 determines whether the node has already been walked in this traversal. It not, in box 372, walker routines 222 mark the node walked; get the node IDs of the children; identify which of the children are nonexpanded leaves, i.e. leaf nodes with no expanded incoming links; obtain the number of the children that are in the visible tree, as explained below; and callmath routines 226 with the number N of children of the node that are in the visible tree to obtain arrays of angles and radii for the children in the visible tree, also explained below. - For the operations in box372, the number of children in the visible tree N, which is a type of nearby relationship data, can be calculated in either of two ways: If the current traversal is part of a sequence of steps that add nodes, N is equal to the sum of the number of children prior to the traversal plus the number of children being added. If the current traversal is part of a sequence of steps that remove nodes, N is simply equal to the number of children prior to the traversal.
- The arrays of angles and radii can be obtained in box372 in a variety of ways. In one successful implementation, each radius is set to the value 0.7, while each angle is set to the smaller of ((N*π)/18) and π. Thus, for N<18, a node's angle will depend on the number of its children that are in the visible tree.
- Then, in
box 374, walker routines 222call math routines 226 to lay out the children. - Two general principles of layout are applied in implementing box374: First, spacing and angle between nodes are determined based only on information about nearby elements in the tree, i.e. nearby relationship data; and, second, the layout information obtained for each node indicates the relative position of a node to its parent in such a way that the position of a node and all its children can be shifted by a small change in the data structure.
- A general strategy that can be followed is to start with a child's radius and angle from box372, obtain approximate distances the child needs, use the approximate distances to obtain a distance from the parent, then use the distance from the parent to obtain more precise distances for the child, and then optionally use the more precise distances to obtain even more precise distances, and so forth.
- According to the general strategy, if a child has radius R and angle Θ from box372, the approximate distances D1 and D2 can be calculated as sin h(R) and tan(Θ/4), respectively. D1 and D2 can be used to obtain a total distance DT for all the children, where each adjacent pair of children are separated by the greater of the sums of their D1s and D2s, i.e. DT=Σ(max (D1(i)+D1(i+1), D2(i)+D2(i+1))+max(D1(1), D2(1))+max(D1(N), D2(N)), where the summation runs from i=1 to N−1, with N the number of children for which layout is being performed. If the parent has an available angle ω, the distance DP from the parent can then be calculated as asinh(DT/w). The children can then be positioned along the circumference of a circle of radius DP centered at the parent with the angles between them proportional to their separations. DP can then be used to obtain more accurate distances for the children, as follows:
- D1′=sin h(DP)asin(sin h(R)/sin h(DP));
- D2′=2 sin h(DP)atan(tan(Θ/4)/e DP).
- D1′ and D2′ can then be used to obtain a more accurate distance DP′ to the parent, as above, and so forth until a desired level of precision is reached. At that point, the orientation of each child can be calculated as an angle offset from the orientation of the parent.
- Note that the distances described above are expressed in true metrics in the hyperbolic plane. A distance D in the hyperbolic plane corresponds to a vector in the unit circle starting at the origin and going a distance tanh(D/2).
- The general strategy thus obtains layout information based only on nearby relationship information about a node, its parent, and its siblings, including information about a sibling's children in the visible tree, as described above in relation to box372. The general strategy obtains layout information indicating the distance from a child to its parent and an angle representing the difference in orientation between them.
- The general strategy has been implemented in software that goes through the children with two iterative loops, but uses the first distance obtained without attempting to obtain more precise distances in the manner described above in relation to the general strategy. The first loop obtains and temporarily saves separations between adjacent children and a “slice size” for each child, and also obtains a total separation. This information is then used to obtain the distance to the parent. The second loop then obtains and saves the relative orientation and area of each child.
- In the software implementation. if a child has radius R and angle Θ from box372, distances D1 and D2 are calculated as set forth above in relation to the general strategy. D1 and D2 for each child are added to D1 and D2 for the previous child to obtain S1 and S2. A total separation ST is increased by the maximum of the child's S1 and S2, except for the first and last children, for which ST is increased by the maximum of the child's D1 and D2.
- If the child's S1 is greater than its S2, S1 is saved as the child's separation, D1 is initially saved as the size of the child's slice, and, for the second and subsequent children, the previous child's slice size is adjusted to be the minimum of its previous slice size and its S1. Conversely, if the child's S1 is not greater than its S2, S2 is saved as the child's separation, D2 is initially saved as the slice size, and, for the second and subsequent children, the previous child's slice size is adjusted to be the minimum of its previous slice size and its S2. The last child's slice size, however, is adjusted to be the minimum of its previous slice size and the maximum of its D1 and D2, thus completing the first iterative loop.
- Using the parent's angle ω, the distance DP from the parent can then be calculated as the greater of tan h(asin h(ST/2ω)/2) or 0.5. DP is saved as part of the data relevant to the parent node.
- For each child, the second iterative loop begins by calculating the angle (S/ST)2ω, where S is the saved separation for the child. The angle (S/ST)2ω is added to a running total which began at −2ω. The running total is saved with other data relevant to the child.
-
Math routines 226 can then calculate a new angle for the child by calling a function similar to the function “inside-angle” at columns 67 and 68 of U.S. Pat. No. 5,590,250, incorporated herein by reference. This function, referred to herein as “InsideAngle”, starts with a distance (“dist”) that has been moved into a wedge and an angle that is half of the wedge. InsideAngle takes as the operative angle the smaller of the starting angle and (π−ε) where ε may have a very small value such as 0.0001, thus avoiding problems in calculation of arctangent. InsideAngle obtains the transformation that would move a point at coordinates (dist, 0) on the unit circle to the origin. InsideAngle then applies this transformation to the complex coordinates of a point at the intersection of the perimeter of the unit circle with the ray starting at the origin whose angle with the horizontal is the operative angle. InsideAngle returns as the resulting angle the angle from the horizontal of the ray from the origin through the transformed point. - To obtain a child's angle, InsideAngle is called with the distance DP and with an angle calculated by multiplying the child's slice size from the first iteration by 2ω/ST. The angle returned by InsideAngle is compared with π/2, and the child's angle is the smaller of the two.
- Before saving the child's new angle,
math routines 226 save the child's previous angle. If the absolute value of the difference between the old and new angles exceeds a minimum value,math routines 226 also save data indicating that layout should continue, as discussed below. - Finally, the second iterative loop obtains a child's area or side space by calling a function similar to the function “room-available” at columns 67 and 68 of U.S. Pat. No. 5,590,250, incorporated herein by reference. This function, referred to herein as “RoomAvailable”, starts with a distance D that has been moved into a wedge and an angle φ that is half of the wedge. RoomAvailable returns a distance to the edge of the wedge that is calculated by first obtaining the ratio (1−D2)/2D, and by then dividing the ratio by sinφ to obtain an initial distance S. RoomsAvailable then returns the distance ((S2−1)½−S). To obtain a child's area, RoomAvailable is called with the same distance and angle that were used in calling InsideAngle, as described above. The distance returned by RoomAvailable is saved as a measure of the child's area. Although the software implementation described above can save additional data, it is based on the discovery that only two items of data need to be stored for each node in order to be able to perform layout and mapping as described herein and in relation to FIG. 6 of copending coassigned U.S. patent application Ser. No. 09/CCC,CCC (Attorney Docket No. D/98205Q2), entitled “Mapping a Node-Link Structure to a Rendering Space Beginning from any Node”, incorporated herein by reference. One item indicates a distance or position displacement from the node to its children nodes in the hyperbolic plane. The other is an angle displacement in the hyperbolic plane between the extension of the incoming link to the node's parent and outgoing link from the parent to the node. These two items of data, or a handle that can be used to access them, can be included in a link's data item in a directed graph data structure as illustrated in FIG. 6 of copending coassigned U.S. patent application Ser. No. 09/EEE,EEE (Attorney Docket No. D/98205Q4), entitled “Node-Link Data Defining a Graph and a Tree Within the Graph”, incorporated herein by reference.
- The test in
box 380 applies an appropriate criterion to determine whether to continue layout to the next generation of nodes. As noted above in relation tobox 374, the criterion can be whether any child node's angle has been modified by more than a small angular difference, such as 0.00001. If so, layout should continue. - In box382, walker routines 222 push the ID of each child node that is expanded or not a leaf onto the front of the queue. Other child nodes could be 11 marked walked in box 382, since they do not have children that will be laid out. When box 382 is completed or if the test in
box 380 determines not to continue or the test inbox 370 determines that the node is already walked, the back node on the queue is popped, inbox 384, before returning to box 360. - FIG. 8 illustrates how layout of a changed node-link structure can be performed in
boxes - If the change is a change in orientation of the root node in response to an orientation event, walker routines222 can call
math routines 226 to lay out the root node at the new orientation before mapping and painting, in box 404. The root node can be laid out as described above in relation tobox 352 in FIG. 6, but with the new orientation. The new orientation will then be used in mapping, changing the orientation of the representation. - If the change is a non-animated edit, as could occur in response to a stretch event, a drag event, a bookmark event, or a click event if edits are pending, walker routines222 first set up a list of remove edits, in
box 410, and then lay out the remove edits before mapping and painting, inbox 412. Then, walker routines 222 set up a list of add edits, in box 414, and then lay out the add edits before mapping and painting, inbox 416. - In the current implementation, the lists of edits are set up based on edit source lists that are maintained by various routines in
memory 214, includinggrapher routines 220 andpainter routines 224. Also, the current implementation relates to a tree defined by expanded links, as explained in copending coassigned U.S. patent application Ser. No. 09/EEE,EEE (Attorney Docket No. D/98205Q4), entitled “Node-Link Data Defining a Graph and a Tree Within the Graph”, incorporated herein by reference. One pair of edit source lists, designated “CollapsedLinks” and “ExpandedLinks” herein, includes edits for links selected by contract requests and expand requests, respectively, and can therefore be set up in box 330 in FIG. 5. The other pair, designated “RemovedLinks” and “AddedLinks” herein, includes edits for links that are deleted and inserted, respectively. Multiple copies of the edit source lists may exist for different purposes. - The list of remove edits set up in
box 410 is based on RemovedLinks, while the list of add edits set up in box 414 is based on AddedLinks. In setting up a list inbox 410 or 414, walker routines 222 access each edit in the appropriate edit source list, and use the edit to obtain appropriate entries for the list being set up. In each case, an edit in the edit source list is used to obtain a node ID of the child node of the edit's link and an edit identifier indicating the type of edit being performed. - A parent of the child node is added to the back of a list of affected nodes unless it is already on the list. The parent is the child node's expanded parent node or, if none of its parent nodes are currently expanded, its first parent node. If an edit from an edit source list relates to a child node that does not have a parent, it must relate to the root, and the root node is therefore put on the back of the list of affected nodes in that case.
- At the end of the iteration for a link from a source edit list, the link's child node is also added to a list of children nodes before accessing the next edit in the appropriate edit source list for use in the next iteration. In this way, an iteration is performed for each edit on the edit source list until all edits have been handled to complete the lists of affected nodes and children nodes.
- Then, in
box boxes box 412, the weight is zero, so that the child is laid out inbox 374 at approximately its previous position with an angle and radius of zero, and thus disappears. Inbox 416, the weight is one, so that the child is laid out inbox 374 at its new position with its full angle and radius. - The operations in
boxes 410 through 416 could also be implemented within an animation sequence, in which case remove edits could be handled during an initial part of the animation sequence and add edits could be handled during a subsequent part of the sequence. If on the other hand the non-animated edits result primarily from node creation during painting, as described above in relation to FIG. 5, the edits may only be add edits, and all currently pending edits could be handled in each step of the animation sequence. - If the change is an animated edit, as could occur in response to an insert/delete event such as a request to contract or expand an element or in response to a request to animate a number of separate changes requested by such events, walker routines222 first obtain the numbers of elements to be removed and added based on the source edit lists, in
box 420. The number to be removed can be obtained by adding the numbers of elements in CollapsedLinks and RemovedLinks, while the number to be added can be obtained by adding the numbers of elements in ExpandedLinks and AddedLinks. Then, inbox 422, walker routines 222 allocate the available animation steps between removing steps and adding steps, and also set up lists of remove edits and add edits, somewhat as inboxes 410 and 414 in FIG. 6. A simple allocation of animation steps is half removing steps and half adding steps, but if there are no elements to be removed, all the steps can be adding steps, and vice versa if no elements to be added. - In setting up lists of remove edits and add edits in
box 422, walker routines 222 can perform as described above in relation toboxes 410 and 414 unless there are collapsed or expanded nodes. In the case of collapsed or expanded nodes, the node itself, in addition to its parent, is pushed onto the back of the list of affected nodes; then, the children of the node, rather than the node itself, are added to the list of children nodes. In other words, collapsing or expanding can be thought of as affecting two generations of nodes, unlike other operations that only affect one. Walker routines 222 set up two pairs of lists of affected and children nodes, one pair for remove edits and one for add edits. - The animation steps that remove nodes are then performed in the loop that begins with box430, with a weight being obtained, with the remove edits being laid out with the weight, and with mapping and painting of an animation frame, in
box 432. Similarly, the animation steps that add nodes are then performed in the loop that begins withbox 440, with a weight being obtained, with the add edits being laid out with the weight, and with mapping and painting of an animation frame, in box 442. By removing nodes before adding nodes, the situation is prevented where the same node would appear in two places in a single frame. By performing a final step with the weight zero after removing nodes and another with the weight one after adding nodes, the technique can ensure that the final weight is zero or one, respectively. - A weight can be obtained in
box 432 by subtracting the current remove animation step number from the number of remove animation steps, then dividing the difference by the number of remove animation steps, so that the weights go from one to zero during a series of remove animation steps. Similarly, a weight can be obtained in box 442 by adding one to the current add animation step number, then dividing the sum by the number of add animation steps, so that the weights go from approximately zero to one during a series of add animation steps. - The total number of animation steps, coupled with the animation speed, helps influence the perception of object constancy during animation. As can be understood from the above description of how the weights are obtained, the total number of animation steps determines the rate at which a removed or added element's area changes, thus indirectly determining the rate at which other elements must move in relation to the area of the removed or added element. A larger number of animation steps, appropriately allocated between removing steps and adding steps, is more likely to produce object constancy, provided a sufficient animation speed is maintained.
- The technique of FIG. 7, when performed with an appropriate number of animation steps and at an appropriate speed, has successfully produced the perception of a set of nodes contracting and expanding somewhat like a fan would be folded and unfolded. By adjusting the radii and angles that are assigned to the nodes, different perceptions can be obtained, such as that deleted nodes are drawn into their parent or are squeezed off to infinity or that inserted nodes grow out of their parent or are pulled in from infinity. When only one of a group of children is deleted, it can appear to be squeezed off to infinity, but if all of the children are deleted as a group, as in contraction, all can appear to be drawn into their parent. Similarly, when one child is added to a group, it can appear to be pulled in from infinity, but if all of the children are inserted as a group, as in expansion, all can appear to grow out of their parent. Further, grandchildren can be squeezed off to infinity while children are drawn into their parent, with the rates adjusted so that the grandchildren appear stable and only the children appear to move.
- As noted above, two or more separate changes indicated in the edit lists can be animated concurrently. In addition, an interface can be provided through which
client 212 can request that two or more separate changes can be made without animation. In other words, the edit lists can continue to be formed until a command is received that requires that the edits be committed. The command can require that the edits be committed with animation as described above or without animation as in a refresh operation. When the edits are committed, the edit lists can be cleared. - In order to facilitate animation, additional expansion/contraction information can be maintained, as described in relation to FIG. 6 of copending coassigned U.S. patent application Ser. No. 09/EEE,EEE (Attorney Docket No. D/98205Q4), entitled “Node-Link Data Defining a Graph and a Tree Within the Graph”, incorporated herein by reference. The additional flags described there make it possible to quickly switch between representations of the previous structure and the modified structure, buy allowing rapid decisions about which elements should be traversed for each representation.
- C.4. Examples
- FIGS. 8 and 9 illustrate exemplary sequences of representations of node-link structures like those presented by a current software implementation, which is substantially the same as described above in relation to FIGS.4-7. The illustrated representations show an organization chart, resembling in some ways the representations in FIGS. 17-21 of U.S. Pat. No. 5,619,632, incorporated herein by reference.
- FIG. 8 shows a sequence of representations that could result from a request to contract a node feature, while FIG. 9 shows a sequence that could result from a request to expand a node feature. Also, the concatenated sequence from FIG. 8 through FIG. 9 could result from a request to expand a clone of a previously expanded node feature, as explained below.
-
Representations -
Node feature 510 is present in each ofrepresentations node feature 510. In response to this request, the children and grandchildren of the node represented bynode feature 510 are removed from the node-link structure, and the transition from representation 500 to a representation in which they are absent is animated.Representations - In
representation 502, its children have just begun to be drawn towardnode feature 510. Its grandchildren, however, remain in position, because they are spreading away from the children at a rate that counterbalances the rate at which the children are drawn towardnode feature 510. - In
representation 504, the children have been drawn even closer towardnode feature 510, while the grandchildren continue to remain in position. In addition, because the children have moved away from the perimeter of the representation, they have sufficient area that each child's rectangular title block can be presented. The title blocks overlap based on the order in which they are painted, producing the perception of a set of fanned out cards or sheets. - The paths followed by the children of
node feature 510 are non-parallel, because all of them converge onnode feature 510. As they approachnode feature 510, the area ofnode feature 510 reduces, resulting in a temporary reduction in size of the graphical representation of a person's face. -
Representation 504 is followed, possibly after a few more intermediate representations, by a last representation in which none of the children or grandchildren ofnode feature 510 are shown. This appearance can be understood from representation 540 in FIG. 9, in which node feature 510 appears as it would in the last representation. - In FIG. 9,
representations 540, 542, and 544 each includenode feature 550, which was shown contracted inrepresentation 504 in FIG. 8 but is shown expanded inrepresentation 544 in FIG. 9, with its children small dots near the perimeter. The sequence in FIG. 9 could result, for example, from a request to expandnode feature 550 when it appears as inrepresentation 504. In response to this request, the children and grandchildren of the node represented bynode feature 510 are added to the node-link structure, and the transition fromrepresentation 504 to a representation in which they are presented is animated. Representations 540 and 542 are two intermediate representations that could be presented in such an animated sequence, andrepresentation 544 is a last representation. - In representation540, its children have just begun to spread from
node feature 550. Because the children are still a distance away from the perimeter of the representation, they have sufficient area that each child's rectangular title block can be presented. As inrepresentation 504 in FIG. 8, the title blocks overlap, producing the perception of a set of fanned out cards or sheets. Its grandchildren, however, are already in position, because they are being drawn toward the children from infinity at a rate that counterbalances the rate at which the children are spreading fromnode feature 510. - In representation542, the children have spread further away from
node feature 550, while the grandchildren continue to remain in position. In addition, because the children have moved closer to the perimeter of the representation, they do not have sufficient area for presentation of title blocks, and have become small dots. - Finally, in
representation 544, the children ofnode feature 550 have reached their positions near the perimeter of the representation. Due to nearness to the perimeter, the grandchildren are not visible. - The paths followed by the children of
node feature 550 are non-parallel, because all of them diverge fromnode feature 550. When they initially appear, in representation 540, they are close tonode feature 550, so that the area ofnode feature 550 is reduced, resulting in a temporary reduction in size of the graphical representation of a person's face. As they diverge fromnode feature 550, the area ofnode feature 550 increases. - As mentioned above, the sequences in FIGS. 8 and 9 could be concatenated to produce a single sequence in which node feature510 is first contracted and
node feature 550 is then expanded. This could occur, for example, where node features 510 and 550 both represent the same node in a graph, but the node has two incoming links, so that the node is cloned, occurring twice in a tree that is represented in FIGS. 8 and 9. As explained in relation to FIG. 9 of copending coassigned U.S. patent application Ser. No. 09/EEE,EEE (Attorney Docket No. D/98205Q4), entitled “Node-Link Data Defining a Graph and a Tree Within the Graph”, incorporated herein by reference, when a user requests expansion of the node feature representing one clone, the response can include contracting the node feature representing another clone that was previously expanded. In effect, the branch is moved fromnode 510 tonode 550. The symbols “+” and “−” in the two node features would be modified appropriately. - C.5. Variations
- The implementation described above could be varied in many ways within the scope of the invention.
- An implementation similar to that described above has been successfully executed on processors of IBM compatible PCs, but implementations could be executed on other machines with any appropriate processors.
- An implementation similar to that described above has been successfully executed using C++ in 32-bit Windows environments, but other programming languages and environments could be used, including non-object-oriented environments, and other platforms could be used, such as Lisp, a Unix environment, ANSI C, Pascal, and so forth.
- An implementation similar to that described above has been successfully executed with node-link data presented in an XML-compliant format and in an experimental format, but the invention could be implemented with any suitable type of node-link data, whether static or dynamic, and accessible in any appropriate way, such as in memory or over a network.
- An implementation similar to that described above has been implemented with each iteration preparing and presenting one representation or an animated series of representations of a graph in response to a navigation signal, but the invention could be implemented with other types of iterations invoked by other types of signals or calls.
- An implementation similar to that described above has been successfully executed with navigation signals received from a keyboard and mouse and relating to a displayed representation or animated series of representations of a node-link structure. The invention could, however, be implemented with or without navigation signals; for example, elements could be moved around in response to different sortings of the children of a node or in response to the application of different filters to elements of a structure. Also, the invention could be implemented with any appropriate type of expand and contract signals or other navigation signals, including signals resulting from external queries, selection of a menu entry-like item requesting expansion below an indicated node or link, or selection of a menu entry-like item requesting expansion below the current focus. The navigation signals could instead relate to an illusory space like those produced by videogames or virtual reality environments or a presentation space other than a display and navigation signals could instead be produced by any appropriate user input device, including other kinds of pointing devices and other kinds of devices for receiving alphanumeric or linguistic input such as voice, gestures, or other modes of user input. The invention could be implemented with any appropriate animation techniques.
- The implementation described above presents representations of node-link structures in which nodes are represented by features such as circles, rectangles, icon-like images, and so forth, and in which links are represented by lines connecting node features. The invention could, however, be implemented with any other appropriate way of representing a node-link structure, including, at least for some aspects of the invention, implementation in a representation that includes a list of a hierarchy of items, with the children of an item indented below it.
- The implementation described above maintains object constancy for features representing shared nodes and links through a sequence of steps by presenting similar features at sufficiently small intervals in time and space, but the invention could be implemented with other techniques for maintaining object constancy and with object constancy for features representing only shared nodes or only shared links. For example, other cues could be used to help provide object constancy of a moving element, such as blurring between positions, a sequence of outlines between positions, or other indicators of motion between positions.
- In the implementation described above, the area for a feature representing a deleted or inserted element decreases or increases while the areas of nearby elements increase or decrease, respectively. The invention could, however, be implemented with other techniques for changing features representing deleted and inserted elements, such as moving features in from or out to the periphery, changing color to show deletion and insertion, fading in or out, or any other conventional animation techniques, including those available in Microsoft PowerPoint. Further, the invention could be implemented with techniques that increase or decrease areas other than those of nearby elements. Further, a deletion might occur immediately, without animation, at the beginning of the animation of compensating movements of nearby elements could then be animated; similarly, an insertion might occur without animation at the end of animation of compensating movements of nearby elements.
- In the implementation described above, a set of elements is deleted, then a set of elements is inserted, and movement of an element is accomplished by first deleting it from its previous position and by then inserting it at its new position. The invention could, however, be implemented with techniques that concurrently delete and insert elements, and, further, the invention could be implemented with techniques that move an element in ways other than by deleting it and then inserting it.
- The implementation described above obtains layout data in the manner described in copending coassigned U.S. patent application Ser. No. 09/BBB,BBB (Attorney Docket No. D/98205Q1), entitled “Local Relative Layout of Node-Link Structures in Space with Negative Curvature”, incorporated herein by reference, but the invention could be implemented with or without layout as such, or by obtaining layout data in other ways, such as by laying out the entire node-link structure separately for each representation or by laying out the node-link structure in other ways.
- In the implementation described above, a node-link structure is mapped into the unit disk and then painted in accordance with copending coassigned U.S. patent application Ser. No. 09/CCC,CCC (Attorney Docket No. D/98205Q2), entitled “Mapping a Node-Link Structure to a Rendering Space Beginning from any Node”, incorporated herein by reference, but the invention could be implemented with or without mapping, or with a node-link structure mapped and presented in any other appropriate way, including mapping it into any other appropriate rendering space and presenting it in any other appropriate display space, including three-dimensional rendering and display spaces.
- The implementation described above is suitable for presenting representations of trees. The invention could be used to present representations of other types of node-link structures, such as graphs in general.
- The implementation described above uses node-link data that include expansion flags of links to define a tree within a graph as disclosed in copending coassigned U.S. patent application Ser. No. 09/EEE,EEE (Attorney Docket No. D/98205Q4), entitled “Node-Link Data Defining a Graph and a Tree Within the Graph”, with memory management as disclosed in copending coassigned U.S. patent application Ser. No. 09/DDD,DDD (Attorney Docket No. D/98205Q3), entitled “Controlling Which Part of Data Defining a Node-Link Structure is in Memory”, both incorporated herein by reference, but the invention could be implemented with a node-link structure defined in any other appropriate way, and loaded into memory in any appropriate way.
- The implementation described above can handle directed graphs, including cyclic directed graphs, but the invention could be implemented for other types of graphs by converting other types of links to appropriate combinations of directed links or by otherwise providing a protocol for mapping the structure of a graph to a tree. For example, an undirected link between two nodes could be converted to a pair of directed links between the same nodes or could be assigned a direction based on an appropriate criterion. In general, a representation in which all undirected links have been converted to a pair of directed links is likely to be visually confusing, because each pair of directed links results in a cycle, but this confusing might be overcome by presenting cycles in another way.
- In the implementation described above, acts are performed in an order that could in many cases be modified. For example, a depth-first walk rather than a breadth-first walk could be performed in FIG. 6.
- Also, in the implementation described above, several software portions are distinguished, such as grapher, walker, painter, and math routines and the client, but the invention could be implemented with other combinations of hardware and software and with software organized in any appropriate way.
- D. Applications
- The invention has been applied in providing an interactive browser of node-link structures. The invention could be applied in a variety of contexts in which node-link structures are visualized. In particular, the invention could be applied in visualizing web-related structures such as the structure formed by a cached set of web pages or other web objects.
- More generally, the invention could be applied to provide a browser for organization charts, file system hierarchies, hypertext hierarchies, world wide web connectivity structures, parts breakdowns, SGML structures, or any other large node-link structures. The browser could be used in editing structures or their contents.
- E. Miscellaneous
- The invention has been described in relation to software implementations, but the invention might be implemented with specialized hardware.
- Although the invention has been described in relation to various implementations, together with modifications, variations, and extensions thereof, other implementations, modifications, variations, and extensions are within the scope of the invention. The invention is therefore not limited by the description contained herein or by the drawings, but only by the claims.
Claims (15)
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/124,528 US6377259B2 (en) | 1998-07-29 | 1998-07-29 | Presenting node-link structures with modification |
EP99114264.7A EP0977154B1 (en) | 1998-07-29 | 1999-07-28 | Presenting node-link structures with modification |
BR9903018-7A BR9903018A (en) | 1998-07-29 | 1999-07-28 | Presentation of interconnection structures of nodes with modification of them |
JP21449099A JP2000099226A (en) | 1998-07-29 | 1999-07-29 | Method for displaying node link representation on display |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/124,528 US6377259B2 (en) | 1998-07-29 | 1998-07-29 | Presenting node-link structures with modification |
Publications (2)
Publication Number | Publication Date |
---|---|
US20010045952A1 true US20010045952A1 (en) | 2001-11-29 |
US6377259B2 US6377259B2 (en) | 2002-04-23 |
Family
ID=22415401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/124,528 Expired - Lifetime US6377259B2 (en) | 1998-07-29 | 1998-07-29 | Presenting node-link structures with modification |
Country Status (4)
Country | Link |
---|---|
US (1) | US6377259B2 (en) |
EP (1) | EP0977154B1 (en) |
JP (1) | JP2000099226A (en) |
BR (1) | BR9903018A (en) |
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020040376A1 (en) * | 2000-10-02 | 2002-04-04 | Fujitsu Limited | Process for managing data in which existing data item is moved to neighbor page before insertion or after deletion of another data item |
US20020055953A1 (en) * | 2000-11-03 | 2002-05-09 | Falko Tesch | Method and apparatus for handling scenarios in spreadsheet documents |
US6392667B1 (en) * | 1997-06-09 | 2002-05-21 | Aprisma Management Technologies, Inc. | Method and apparatus for representing objects as visually discernable entities based on spatial definition and perspective |
US20020107892A1 (en) * | 2000-12-12 | 2002-08-08 | Oracle Corporation | Dynamic tree control system |
US20040261029A1 (en) * | 2001-10-15 | 2004-12-23 | Skjaervik Geir Ove | Method for flexible diagram generation and presentation tool |
US20050027728A1 (en) * | 2001-11-30 | 2005-02-03 | Microsoft Corporation | System and method for relational representation of hierarchical data |
US20050091594A1 (en) * | 2003-10-23 | 2005-04-28 | Microsoft Corporation | Systems and methods for preparing graphical elements for presentation |
US20060155746A1 (en) * | 2005-01-13 | 2006-07-13 | International Business Machines Corporation | Method and system for automatically hiding irrelevant parts of hierarchical structures in computer user interfaces |
US7092504B1 (en) * | 2003-03-18 | 2006-08-15 | Sprint Communications Company L.P. | Method and system for presenting data stored within a network component |
US20070271287A1 (en) * | 2006-05-16 | 2007-11-22 | Chiranjit Acharya | Clustering and classification of multimedia data |
US20070271296A1 (en) * | 2006-05-16 | 2007-11-22 | Khemdut Purang | Sorting media objects by similarity |
US20070271264A1 (en) * | 2006-05-16 | 2007-11-22 | Khemdut Purang | Relating objects in different mediums |
US20070271286A1 (en) * | 2006-05-16 | 2007-11-22 | Khemdut Purang | Dimensionality reduction for content category data |
US20070268292A1 (en) * | 2006-05-16 | 2007-11-22 | Khemdut Purang | Ordering artists by overall degree of influence |
US20070282886A1 (en) * | 2006-05-16 | 2007-12-06 | Khemdut Purang | Displaying artists related to an artist of interest |
US20080063003A1 (en) * | 2001-09-13 | 2008-03-13 | Network Foundation Technologies | System and method for broadcasting content to nodes on computer networks |
US7401092B2 (en) | 2003-06-26 | 2008-07-15 | Standbysoft Llc | Method and apparatus for exchanging sub-hierarchical structures within a hierarchical file system |
US7703045B1 (en) * | 2006-09-05 | 2010-04-20 | Oracle America, Inc. | Method and apparatus for interacting with objects in a user interface |
US20110107274A1 (en) * | 2005-07-21 | 2011-05-05 | International Business Machines Corporation | Method Of Graphical Display Of Hierarchical Hardlinks To Files In A File System |
US20120005239A1 (en) * | 1999-05-25 | 2012-01-05 | Nevin Iii Rocky Harry W | Method and Apparatus for Displaying Data Stored in Linked Nodes |
US20120303670A1 (en) * | 2011-05-26 | 2012-11-29 | Gillen Robert E | Cloud computing method for dynamically scaling a process across physical machine boundaries |
US20130016116A1 (en) * | 2011-07-15 | 2013-01-17 | Jan Simon | Reflecting changes to graph-structured data |
US20130246958A1 (en) * | 2012-03-15 | 2013-09-19 | Microsoft Corporation | Interactive control of the curvature of links |
US20140365538A1 (en) * | 1998-08-26 | 2014-12-11 | Symtec Limited | Methods and devices for mapping data files |
US8935129B1 (en) * | 2010-06-04 | 2015-01-13 | Bentley Systems, Incorporated | System and method for simplifying a graph'S topology and persevering the graph'S semantics |
US20150199607A1 (en) * | 2013-05-31 | 2015-07-16 | Empire Technology Development Llc | Incremental reasoning based on scalable and dynamical semantic data |
US20150278395A1 (en) * | 2014-03-26 | 2015-10-01 | Software Ag | Method and system for transitive traversal service discovery |
CN104978755A (en) * | 2014-04-10 | 2015-10-14 | 新日铁住金系统集成株式会社 | Raph generating device, graph generating method and graph generating program |
US20180113604A1 (en) * | 2016-10-23 | 2018-04-26 | Oracle International Corporation | Visualizations supporting unlimited rows and columns |
US10216824B2 (en) * | 2012-05-15 | 2019-02-26 | Sap Se | Explanatory animation generation |
US11070461B1 (en) * | 2017-03-20 | 2021-07-20 | Amazon Technologies, Inc. | System for dividing a tree data structure to improve traversal operations |
Families Citing this family (69)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030033402A1 (en) * | 1996-07-18 | 2003-02-13 | Reuven Battat | Method and apparatus for intuitively administering networked computer systems |
US6654761B2 (en) * | 1998-07-29 | 2003-11-25 | Inxight Software, Inc. | Controlling which part of data defining a node-link structure is in memory |
CA2256931A1 (en) * | 1998-12-23 | 2000-06-23 | Robert Weisz | Source editing in a graphical hierarchical environment |
JP3569153B2 (en) * | 1999-03-29 | 2004-09-22 | 富士通株式会社 | Graphic editing apparatus, graphic editing method, and storage medium storing program therefor |
US7627588B1 (en) | 2001-05-07 | 2009-12-01 | Ixreveal, Inc. | System and method for concept based analysis of unstructured data |
USRE46973E1 (en) | 2001-05-07 | 2018-07-31 | Ureveal, Inc. | Method, system, and computer program product for concept-based multi-dimensional analysis of unstructured information |
US7194483B1 (en) | 2001-05-07 | 2007-03-20 | Intelligenxia, Inc. | Method, system, and computer program product for concept-based multi-dimensional analysis of unstructured information |
US7480910B1 (en) | 2001-05-15 | 2009-01-20 | Adobe Systems Incorporated | System and method for providing information and associating information |
US7685229B1 (en) | 2001-05-15 | 2010-03-23 | Adobe Systems Incorporated | System and method for displaying server side code results in an application program |
US7103606B2 (en) * | 2001-06-18 | 2006-09-05 | International Business Machines Corporation | Method and apparatus for removing information from a server |
US7346614B2 (en) * | 2001-10-17 | 2008-03-18 | Japan Science And Technology Corporation | Information searching method, information searching program, and computer-readable recording medium on which information searching program is recorded |
JP3730923B2 (en) * | 2002-02-06 | 2006-01-05 | 株式会社ジャストシステム | Icon display device, icon display method, and program for causing computer to execute the method |
JP4377704B2 (en) * | 2003-01-24 | 2009-12-02 | 株式会社東芝 | Flow data generation method and flow data generation apparatus |
WO2004086258A1 (en) * | 2003-03-24 | 2004-10-07 | Japan Science And Technology Agency | Life information support system |
US7669129B2 (en) * | 2003-04-04 | 2010-02-23 | Avid Technology, Inc. | Graphical user interface for providing editing of transform hierarchies within an effects tree |
US7427987B2 (en) * | 2003-04-22 | 2008-09-23 | International Business Machines Corporation | Displaying multi-ownership in a tree-map visualization |
US7089266B2 (en) | 2003-06-02 | 2006-08-08 | The Board Of Trustees Of The Leland Stanford Jr. University | Computer systems and methods for the query and visualization of multidimensional databases |
US7146850B2 (en) | 2003-07-08 | 2006-12-12 | Chrome Deposit Corporation | Roll contour measuring apparatus and method |
WO2005029342A1 (en) * | 2003-08-21 | 2005-03-31 | Microsoft Corporation | Electronic ink processing |
US7333997B2 (en) * | 2003-08-12 | 2008-02-19 | Viziant Corporation | Knowledge discovery method with utility functions and feedback loops |
US20050278362A1 (en) * | 2003-08-12 | 2005-12-15 | Maren Alianna J | Knowledge discovery system |
CA2470930A1 (en) * | 2003-08-21 | 2005-02-21 | Microsoft Corporation | Electronic ink processing |
US7616333B2 (en) * | 2003-08-21 | 2009-11-10 | Microsoft Corporation | Electronic ink processing and application programming interfaces |
AU2003262759B8 (en) * | 2003-08-21 | 2010-01-07 | Microsoft Corporation | Electronic ink processing |
US7502812B2 (en) * | 2003-08-21 | 2009-03-10 | Microsoft Corporation | Electronic ink processing |
KR100989011B1 (en) * | 2003-08-21 | 2010-10-20 | 마이크로소프트 코포레이션 | Electronic ink processing |
US7756907B2 (en) * | 2003-09-16 | 2010-07-13 | The Board Of Trustees Of The Leland Stanford Jr. University | Computer systems and methods for visualizing data |
US7958132B2 (en) * | 2004-02-10 | 2011-06-07 | Microsoft Corporation | Voting based scheme for electronic document node reuse |
WO2005088479A1 (en) * | 2004-03-16 | 2005-09-22 | Turbo Data Laboratories Inc. | Method for handling tree-type data structure, information processing device, and program |
US20060036615A1 (en) * | 2004-08-12 | 2006-02-16 | International Business Machines Corporation | Method, system, and computer program product for navigating and displaying very large trees |
US7587409B2 (en) * | 2004-09-24 | 2009-09-08 | Sas Institute Inc. | Computer-implemented system and method for handling node-link representations |
WO2006050245A2 (en) * | 2004-11-02 | 2006-05-11 | Eagleforce Associates | System and method for predictive analysis and predictive analysis markup language |
US7800613B2 (en) * | 2004-12-02 | 2010-09-21 | Tableau Software, Inc. | Computer systems and methods for visualizing data with generation of marks |
EP1877968A2 (en) * | 2005-04-12 | 2008-01-16 | Alianna J. Maren | System and method for evidence accumulation and hypothesis generation |
US8214754B2 (en) | 2005-04-15 | 2012-07-03 | Microsoft Corporation | Registration of applications and complimentary features for interactive user interfaces |
US7562085B2 (en) | 2005-05-24 | 2009-07-14 | Palo Alto Research Center Incorporated | Systems and methods for displaying linked information in a sorted context |
US7552398B2 (en) * | 2005-05-24 | 2009-06-23 | Palo Alto Research Center Incorporated | Systems and methods for semantically zooming information |
JP2007052766A (en) * | 2005-07-22 | 2007-03-01 | Mathematical Systems Inc | Pathway display method, information processing device, and pathway display program |
CN100483408C (en) * | 2005-07-29 | 2009-04-29 | 国际商业机器公司 | Method and apparatus for establishing link structure between multiple documents |
WO2007027967A2 (en) * | 2005-08-31 | 2007-03-08 | Eagleforce Associates | System for hypothesis generation |
US8099674B2 (en) | 2005-09-09 | 2012-01-17 | Tableau Software Llc | Computer systems and methods for automatically viewing multidimensional databases |
EP1952280B8 (en) * | 2005-10-11 | 2016-11-30 | Ureveal, Inc. | System, method&computer program product for concept based searching&analysis |
US7657848B2 (en) * | 2006-01-09 | 2010-02-02 | Sas Institute Inc. | Computer-implemented node-link processing systems and methods |
US7676485B2 (en) * | 2006-01-20 | 2010-03-09 | Ixreveal, Inc. | Method and computer program product for converting ontologies into concept semantic networks |
US7999809B2 (en) | 2006-04-19 | 2011-08-16 | Tableau Software, Inc. | Computer systems and methods for automatic generation of models for a dataset |
CN101136106B (en) * | 2006-08-30 | 2010-07-07 | 国际商业机器公司 | Method and computer system for displaying weighting tree based on hyperbolic geometric |
US20080162777A1 (en) * | 2006-12-29 | 2008-07-03 | Sap Ag | Graph abstraction pattern for generic graph evaluation |
US9165087B2 (en) * | 2006-12-29 | 2015-10-20 | Sap Se | Validity path node pattern for structure evaluation of time-dependent acyclic graphs |
US20080162616A1 (en) * | 2006-12-29 | 2008-07-03 | Sap Ag | Skip relation pattern for graph structures |
US8396827B2 (en) * | 2006-12-29 | 2013-03-12 | Sap Ag | Relation-based hierarchy evaluation of recursive nodes |
US8782043B2 (en) * | 2007-07-10 | 2014-07-15 | Nbc Universal, Inc. | Multi-sided media viewer and technique for media association |
US8312389B2 (en) * | 2007-08-31 | 2012-11-13 | Fair Isaac Corporation | Visualization of decision logic |
US20090319948A1 (en) * | 2008-06-20 | 2009-12-24 | Smartdraw.Com | Automated editing of graphics charts |
US8730241B2 (en) * | 2008-09-08 | 2014-05-20 | Fair Isaac Corporation | Techniques for drawing curved edges in graphs |
US8280836B2 (en) * | 2008-09-08 | 2012-10-02 | Fair Isaac Corporation | Converting unordered graphs to oblivious read once ordered graph representation |
US8698807B2 (en) * | 2008-09-26 | 2014-04-15 | International Business Machines Corporation | Intuitively connecting graphical shapes |
RU2485579C2 (en) * | 2008-12-23 | 2013-06-20 | Майкрософт Корпорейшн | Electronic ink processing |
US9245243B2 (en) * | 2009-04-14 | 2016-01-26 | Ureveal, Inc. | Concept-based analysis of structured and unstructured data using concept inheritance |
CN101877138B (en) * | 2009-04-30 | 2014-01-15 | 国际商业机器公司 | Animation planning method and device of dynamic diagram |
US20110138340A1 (en) * | 2009-12-09 | 2011-06-09 | Microsoft Corporation | Rotating Hierarchy Cone User Interface |
US20150278214A1 (en) | 2014-04-01 | 2015-10-01 | Tableau Software, Inc. | Systems and Methods for Ranking Data Visualizations Using Different Data Fields |
US9613102B2 (en) | 2014-04-01 | 2017-04-04 | Tableau Software, Inc. | Systems and methods for ranking data visualizations |
US9424318B2 (en) | 2014-04-01 | 2016-08-23 | Tableau Software, Inc. | Systems and methods for ranking data visualizations |
US10529119B2 (en) | 2016-12-25 | 2020-01-07 | Biosense Webster (Israel) Ltd. | Fast rendering of quadrics and marking of silhouettes thereof |
US10896297B1 (en) | 2017-12-13 | 2021-01-19 | Tableau Software, Inc. | Identifying intent in visual analytical conversations |
US11055489B2 (en) | 2018-10-08 | 2021-07-06 | Tableau Software, Inc. | Determining levels of detail for data visualizations using natural language constructs |
US11314817B1 (en) | 2019-04-01 | 2022-04-26 | Tableau Software, LLC | Methods and systems for inferring intent and utilizing context for natural language expressions to modify data visualizations in a data visualization interface |
US11536573B2 (en) * | 2019-09-03 | 2022-12-27 | Here Global B.V. | Method, apparatus, and computer program product for generating correspondence between map versions |
US11455339B1 (en) | 2019-09-06 | 2022-09-27 | Tableau Software, LLC | Incremental updates to natural language expressions in a data visualization user interface |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5072412A (en) | 1987-03-25 | 1991-12-10 | Xerox Corporation | User interface with multiple workspaces for sharing display system objects |
FR2646256A1 (en) | 1989-04-24 | 1990-10-26 | Digital Equipment Int | METHOD FOR REALIZING DRAWINGS USING A COMPUTER |
EP0559714A1 (en) * | 1990-11-30 | 1993-09-15 | Cambridge Animation Systems Limited | Animation |
JP3372563B2 (en) * | 1992-04-30 | 2003-02-04 | 新日鉄ソリューションズ株式会社 | Tree structure display editing device |
CA2097232C (en) | 1993-05-28 | 1999-01-19 | Phillip J. Beaudet | Displaying partial graphs by expanding and collapsing nodes |
JP3350223B2 (en) * | 1994-07-13 | 2002-11-25 | 富士通株式会社 | Automatic graph layout method and apparatus |
US5619632A (en) | 1994-09-14 | 1997-04-08 | Xerox Corporation | Displaying node-link structure with region of greater spacings and peripheral branches |
US5590250A (en) | 1994-09-14 | 1996-12-31 | Xerox Corporation | Layout of node-link structures in space with negative curvature |
US5880743A (en) * | 1995-01-24 | 1999-03-09 | Xerox Corporation | Apparatus and method for implementing visual animation illustrating results of interactive editing operations |
JP3649469B2 (en) * | 1995-05-12 | 2005-05-18 | 株式会社ソニー・コンピュータエンタテインメント | Animation data creation method and creation apparatus |
US5798769A (en) | 1996-08-15 | 1998-08-25 | Xerox Corporation | Method and apparatus for maintaining links between graphic objects in a free-form graphics display system |
US6300957B1 (en) | 1998-07-29 | 2001-10-09 | Inxight Software, Inc. | Mapping a node-link structure to a rendering space beginning from any node |
US6654761B2 (en) | 1998-07-29 | 2003-11-25 | Inxight Software, Inc. | Controlling which part of data defining a node-link structure is in memory |
US8232995B2 (en) | 1998-07-29 | 2012-07-31 | SAP America, Inc. | Local relative layout of node-link structures in space with negative curvature |
US6108698A (en) | 1998-07-29 | 2000-08-22 | Xerox Corporation | Node-link data defining a graph and a tree within the graph |
-
1998
- 1998-07-29 US US09/124,528 patent/US6377259B2/en not_active Expired - Lifetime
-
1999
- 1999-07-28 EP EP99114264.7A patent/EP0977154B1/en not_active Expired - Lifetime
- 1999-07-28 BR BR9903018-7A patent/BR9903018A/en not_active Application Discontinuation
- 1999-07-29 JP JP21449099A patent/JP2000099226A/en active Pending
Cited By (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6392667B1 (en) * | 1997-06-09 | 2002-05-21 | Aprisma Management Technologies, Inc. | Method and apparatus for representing objects as visually discernable entities based on spatial definition and perspective |
US20140365538A1 (en) * | 1998-08-26 | 2014-12-11 | Symtec Limited | Methods and devices for mapping data files |
US9971843B2 (en) * | 1998-08-26 | 2018-05-15 | Fractal Maps Limited | Methods and devices for mapping data files |
US20130127865A1 (en) * | 1999-05-25 | 2013-05-23 | Google Inc. | Methods for Generating Visual Data From Nodes Containing Identify Data for Individuals From a Set View Point |
US8799323B2 (en) * | 1999-05-25 | 2014-08-05 | Google Inc. | Method and apparatus for displaying data stored in linked nodes |
US9530227B2 (en) * | 1999-05-25 | 2016-12-27 | Google Inc. | Methods for generating visual data from nodes containing identity data for persons from a set point of view |
US9547923B2 (en) * | 1999-05-25 | 2017-01-17 | Google Inc. | Methods for generating visual data from nodes containing identify data for individuals from a set view point |
US20120005239A1 (en) * | 1999-05-25 | 2012-01-05 | Nevin Iii Rocky Harry W | Method and Apparatus for Displaying Data Stored in Linked Nodes |
US20130127864A1 (en) * | 1999-05-25 | 2013-05-23 | Google Inc. | Methods for Generating Visual Data From Nodes Containing Identify Data for Individuals From a Set View Point |
US20120162230A1 (en) * | 1999-05-25 | 2012-06-28 | Google Inc. | Methods for Generating Visual Data From Nodes Containing Identify Data for Individuals From a Set View Point |
US7162693B2 (en) * | 2000-10-02 | 2007-01-09 | Fujitsu Limited | Process for managing data in which existing data item is moved to neighbor page before insertion or after deletion of another data item |
US20020040376A1 (en) * | 2000-10-02 | 2002-04-04 | Fujitsu Limited | Process for managing data in which existing data item is moved to neighbor page before insertion or after deletion of another data item |
US20020055953A1 (en) * | 2000-11-03 | 2002-05-09 | Falko Tesch | Method and apparatus for handling scenarios in spreadsheet documents |
US7908550B1 (en) * | 2000-12-12 | 2011-03-15 | Oracle International Corporation | Dynamic tree control system |
US20020107892A1 (en) * | 2000-12-12 | 2002-08-08 | Oracle Corporation | Dynamic tree control system |
US7181684B2 (en) * | 2000-12-12 | 2007-02-20 | Oracle International Corporation | Dynamic tree control system |
US20080063003A1 (en) * | 2001-09-13 | 2008-03-13 | Network Foundation Technologies | System and method for broadcasting content to nodes on computer networks |
US7843855B2 (en) * | 2001-09-13 | 2010-11-30 | Network Foundation Technologies, Llc | System and method for broadcasting content to nodes on computer networks |
US20040261029A1 (en) * | 2001-10-15 | 2004-12-23 | Skjaervik Geir Ove | Method for flexible diagram generation and presentation tool |
US20050027728A1 (en) * | 2001-11-30 | 2005-02-03 | Microsoft Corporation | System and method for relational representation of hierarchical data |
US7493352B2 (en) * | 2001-11-30 | 2009-02-17 | Microsoft Corporation | System and method for relational representation of hierarchical data |
US7092504B1 (en) * | 2003-03-18 | 2006-08-15 | Sprint Communications Company L.P. | Method and system for presenting data stored within a network component |
US7401092B2 (en) | 2003-06-26 | 2008-07-15 | Standbysoft Llc | Method and apparatus for exchanging sub-hierarchical structures within a hierarchical file system |
US20050091594A1 (en) * | 2003-10-23 | 2005-04-28 | Microsoft Corporation | Systems and methods for preparing graphical elements for presentation |
US20060155746A1 (en) * | 2005-01-13 | 2006-07-13 | International Business Machines Corporation | Method and system for automatically hiding irrelevant parts of hierarchical structures in computer user interfaces |
US8713063B2 (en) * | 2005-01-13 | 2014-04-29 | International Business Machines Corporation | Method and system for automatically hiding irrelevant parts of hierarchical structures in computer user interfaces |
US20110107274A1 (en) * | 2005-07-21 | 2011-05-05 | International Business Machines Corporation | Method Of Graphical Display Of Hierarchical Hardlinks To Files In A File System |
US9575770B2 (en) * | 2005-07-21 | 2017-02-21 | International Business Machines Corporation | Method of graphical display of hierarchical hardlinks to files in a file system |
US20070271286A1 (en) * | 2006-05-16 | 2007-11-22 | Khemdut Purang | Dimensionality reduction for content category data |
US20070282886A1 (en) * | 2006-05-16 | 2007-12-06 | Khemdut Purang | Displaying artists related to an artist of interest |
US7961189B2 (en) * | 2006-05-16 | 2011-06-14 | Sony Corporation | Displaying artists related to an artist of interest |
US20070268292A1 (en) * | 2006-05-16 | 2007-11-22 | Khemdut Purang | Ordering artists by overall degree of influence |
US7840568B2 (en) | 2006-05-16 | 2010-11-23 | Sony Corporation | Sorting media objects by similarity |
US7774288B2 (en) | 2006-05-16 | 2010-08-10 | Sony Corporation | Clustering and classification of multimedia data |
US20070271296A1 (en) * | 2006-05-16 | 2007-11-22 | Khemdut Purang | Sorting media objects by similarity |
US7750909B2 (en) * | 2006-05-16 | 2010-07-06 | Sony Corporation | Ordering artists by overall degree of influence |
US9330170B2 (en) | 2006-05-16 | 2016-05-03 | Sony Corporation | Relating objects in different mediums |
US20070271264A1 (en) * | 2006-05-16 | 2007-11-22 | Khemdut Purang | Relating objects in different mediums |
US20070271287A1 (en) * | 2006-05-16 | 2007-11-22 | Chiranjit Acharya | Clustering and classification of multimedia data |
US7703045B1 (en) * | 2006-09-05 | 2010-04-20 | Oracle America, Inc. | Method and apparatus for interacting with objects in a user interface |
US8935129B1 (en) * | 2010-06-04 | 2015-01-13 | Bentley Systems, Incorporated | System and method for simplifying a graph'S topology and persevering the graph'S semantics |
US8825710B2 (en) * | 2011-05-26 | 2014-09-02 | Planet Technologies | Cloud computing method for dynamically scaling a process across physical machine boundaries |
US20120303670A1 (en) * | 2011-05-26 | 2012-11-29 | Gillen Robert E | Cloud computing method for dynamically scaling a process across physical machine boundaries |
US20130016116A1 (en) * | 2011-07-15 | 2013-01-17 | Jan Simon | Reflecting changes to graph-structured data |
US9355478B2 (en) * | 2011-07-15 | 2016-05-31 | Hewlett Packard Enterprise Development Lp | Reflecting changes to graph-structured data |
US20140337803A1 (en) * | 2012-03-15 | 2014-11-13 | Microsoft Corporation | Interactive control of the curvature of links |
US10635284B2 (en) | 2012-03-15 | 2020-04-28 | Microsoft Technology Licensing, Llc. | Interactive control of the curvature of links |
US8832582B2 (en) * | 2012-03-15 | 2014-09-09 | Microsoft Corporation | Interactive control of the curvature of links |
US20130246958A1 (en) * | 2012-03-15 | 2013-09-19 | Microsoft Corporation | Interactive control of the curvature of links |
US9940005B2 (en) * | 2012-03-15 | 2018-04-10 | Microsoft Technology Licensing, Llc. | Interactive control of the curvature of links |
US10216824B2 (en) * | 2012-05-15 | 2019-02-26 | Sap Se | Explanatory animation generation |
US20150199607A1 (en) * | 2013-05-31 | 2015-07-16 | Empire Technology Development Llc | Incremental reasoning based on scalable and dynamical semantic data |
US20150278395A1 (en) * | 2014-03-26 | 2015-10-01 | Software Ag | Method and system for transitive traversal service discovery |
US9690546B2 (en) * | 2014-03-26 | 2017-06-27 | Software Ag | Method and system for transitive traversal service discovery |
CN104978755A (en) * | 2014-04-10 | 2015-10-14 | 新日铁住金系统集成株式会社 | Raph generating device, graph generating method and graph generating program |
US20180113604A1 (en) * | 2016-10-23 | 2018-04-26 | Oracle International Corporation | Visualizations supporting unlimited rows and columns |
US10635286B2 (en) * | 2016-10-23 | 2020-04-28 | Oracle International Corporation | Visualizations supporting unlimited rows and columns |
US11070461B1 (en) * | 2017-03-20 | 2021-07-20 | Amazon Technologies, Inc. | System for dividing a tree data structure to improve traversal operations |
Also Published As
Publication number | Publication date |
---|---|
US6377259B2 (en) | 2002-04-23 |
EP0977154A3 (en) | 2007-10-17 |
JP2000099226A (en) | 2000-04-07 |
BR9903018A (en) | 2000-03-14 |
EP0977154B1 (en) | 2014-11-05 |
EP0977154A2 (en) | 2000-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6377259B2 (en) | Presenting node-link structures with modification | |
US6300957B1 (en) | Mapping a node-link structure to a rendering space beginning from any node | |
US8232995B2 (en) | Local relative layout of node-link structures in space with negative curvature | |
JP3737169B2 (en) | Node link structure display method | |
Huang et al. | On-line animated visualization of huge graphs using a modified spring algorithm | |
Lamping et al. | A focus+ context technique based on hyperbolic geometry for visualizing large hierarchies | |
US6654761B2 (en) | Controlling which part of data defining a node-link structure is in memory | |
Lamping et al. | The hyperbolic browser: A focus+ context technique for visualizing large hierarchies | |
US6888554B1 (en) | User interface for bicontextual exploration of a graph | |
US5555354A (en) | Method and apparatus for navigation within three-dimensional information landscape | |
US6204850B1 (en) | Scaleable camera model for the navigation and display of information structures using nested, bounded 3D coordinate spaces | |
Stasko et al. | Focus+ context display and navigation techniques for enhancing radial, space-filling hierarchy visualizations | |
US6901555B2 (en) | Tree visualization system and method based upon a compressed half-plane model of hyperbolic geometry | |
US5590250A (en) | Layout of node-link structures in space with negative curvature | |
US5528735A (en) | Method and apparatus for displaying data within a three-dimensional information landscape | |
EP0984366A2 (en) | Node-link data defining a graph and a tree within the graph | |
Herman et al. | Tree visualisation and navigation clues for information visualisation | |
JP3151774B2 (en) | How to display an image on a display | |
CN110851118B (en) | Vector icon drawing method and device for three-dimensional scene | |
JP3346130B2 (en) | Graph figure arrangement method and apparatus | |
WO2014014928A2 (en) | Systems and methods for three-dimensional sketching and imaging | |
JP2000011208A (en) | Device and method for image display | |
Huang et al. | On-line visualization and navigation of the global web structure | |
JPH1139123A (en) | Information display device and recording medium recorded with information display program | |
Churcher | Applications of distortion-oriented presentation techniques in GIS |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: XEROX CORPORATION, CONNECTICUT Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:TENEV, TICHOMIR G.;RAO, RAMANA B.;LAMPING, JOHN O.;REEL/FRAME:009590/0454 Effective date: 19981110 |
|
AS | Assignment |
Owner name: INXIGHT SOFTWARE, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:XEROX CORPORATION;REEL/FRAME:011653/0024 Effective date: 20010212 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: VANTAGEPOINT VENTURE PARTNERS III, L.P., CALIFORNI Free format text: SECURITY AGREEMENT;ASSIGNOR:INXIGHT SOFTWARE, INC.;REEL/FRAME:014926/0130 Effective date: 20040728 Owner name: VANTAGEPOINT VENTURE PARTNERS III (Q), L.P., CALIF Free format text: SECURITY AGREEMENT;ASSIGNOR:INXIGHT SOFTWARE, INC.;REEL/FRAME:014926/0130 Effective date: 20040728 Owner name: VANTAGEPOINT VENTURE PARTNERS IV (Q), L.P., CALIFO Free format text: SECURITY AGREEMENT;ASSIGNOR:INXIGHT SOFTWARE, INC.;REEL/FRAME:014926/0130 Effective date: 20040728 Owner name: VANTAGEPOINT VENTURE PARTNERS IV, L.P., CALIFORNIA Free format text: SECURITY AGREEMENT;ASSIGNOR:INXIGHT SOFTWARE, INC.;REEL/FRAME:014926/0130 Effective date: 20040728 Owner name: VANTAGEPOINT VENTURE PARTNERS IV PRINCIPALS FUND, Free format text: SECURITY AGREEMENT;ASSIGNOR:INXIGHT SOFTWARE, INC.;REEL/FRAME:014926/0130 Effective date: 20040728 Owner name: DRESDNER KLEINWORT WASSERSTEIN PARTNERSHIP 2001 LP Free format text: SECURITY AGREEMENT;ASSIGNOR:INXIGHT SOFTWARE, INC.;REEL/FRAME:014926/0130 Effective date: 20040728 Owner name: REED ELSEVIER VENTURES 2002 PARTNERSHIP L.P., NEW Free format text: SECURITY AGREEMENT;ASSIGNOR:INXIGHT SOFTWARE, INC.;REEL/FRAME:014926/0130 Effective date: 20040728 Owner name: ABS VENTURES VIII L.P, MASSACHUSETTS Free format text: SECURITY AGREEMENT;ASSIGNOR:INXIGHT SOFTWARE, INC.;REEL/FRAME:014926/0130 Effective date: 20040728 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
AS | Assignment |
Owner name: BUSINESS OBJECTS AMERICAS, CALIFORNIA Free format text: MERGER;ASSIGNOR:INXIGHT SOFTWARE, INC.;REEL/FRAME:020487/0541 Effective date: 20071214 Owner name: BUSINESS OBJECTS AMERICAS,CALIFORNIA Free format text: MERGER;ASSIGNOR:INXIGHT SOFTWARE, INC.;REEL/FRAME:020487/0541 Effective date: 20071214 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
AS | Assignment |
Owner name: SAP AMERICA, INC., PENNSYLVANIA Free format text: MERGER;ASSIGNOR:BUSINESS OBJECTS AMERICAS;REEL/FRAME:025484/0553 Effective date: 20100701 |
|
FPAY | Fee payment |
Year of fee payment: 12 |