WO2000042573A9 - Method and apparatus for displaying and navigating a data structure on a display unit - Google Patents

Method and apparatus for displaying and navigating a data structure on a display unit

Info

Publication number
WO2000042573A9
WO2000042573A9 PCT/US2000/001065 US0001065W WO0042573A9 WO 2000042573 A9 WO2000042573 A9 WO 2000042573A9 US 0001065 W US0001065 W US 0001065W WO 0042573 A9 WO0042573 A9 WO 0042573A9
Authority
WO
WIPO (PCT)
Prior art keywords
node
child
displaying
nodes
sphere
Prior art date
Application number
PCT/US2000/001065
Other languages
French (fr)
Other versions
WO2000042573A1 (en
Inventor
John Gilbert
Erhan Akin
Cihan Akin
Hakan Akin
Original Assignee
Altoweb Systems Inc
John Gilbert
Erhan Akin
Cihan Akin
Hakan Akin
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Altoweb Systems Inc, John Gilbert, Erhan Akin, Cihan Akin, Hakan Akin filed Critical Altoweb Systems Inc
Priority to AU25084/00A priority Critical patent/AU2508400A/en
Priority to CA002358533A priority patent/CA2358533A1/en
Priority to EP00903319A priority patent/EP1147490A1/en
Priority to JP2000594080A priority patent/JP2002535760A/en
Publication of WO2000042573A1 publication Critical patent/WO2000042573A1/en
Publication of WO2000042573A9 publication Critical patent/WO2000042573A9/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/206Drawing of charts or graphs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/954Navigation, e.g. using categorised browsing

Definitions

  • the present invention relates generally to the field of data representation on a display screen and, more specifically to the display and navigation of a hierarchy, data tree, or node-link structure within a navigable space represented on a display unit.
  • the so-cailed "information age” is characterized in that information users are being presented with ever-increasing volumes of information.
  • the presentation format of such information should ideally allow an information user quickly to assess the relevance of a large number of information items, and then efficiently to access information items that are deemed to be of relevance and interest.
  • the broader acceptance of the Internet, specifically the World Wide Web, as an information source has dramatically increased the volume of information that is available to an information user. Information retrieval from this vast source is often facilitated through a search engine, which may present a large number of information items to a user.
  • navigation of the various web pages and other information resources that constitute the web site may be confusing and disorientating. Specifically, the structure of a web site is typically hierarchical, and a user may become disorientated or "lost" within the web site.
  • Hierarchical information may also be required in a number of other instances on an everyday basis by a computer user. For example, navigation of file directories for data files and programs stored on a local or remote storage medium is a daily activity for most computer users.
  • Hierarchical information is also typically used to represent the structures of organizations or genealogies.
  • a number of techniques and methodologies that attempt the presentation of a hierarchy (e.g., a hierarchical data structure) in a compact and intuitive manner have been proposed. These presentation techniques and methodologies may broadly be categorized as providing either two- dimensional or three-dimensional representations of a hierarchical data structure.
  • a hyperbolic two-dimensional representation (termed a "hyperbolic tree") of a hierarchy was developed by Xerox Palo Alto Research Center (PARC), and is detailed in the article J. Lamping, R. Rao, and P.
  • hyperbolic tree discussed above may be presented within a three-dimensional hyperbolic space (e.g., in the interior of a ball) as taught by T. Munzer and P. Burchard, "Visualizing the Structure of the World Wide Web in 3-D Hyperbolic Space", CST 1995.
  • Silicon Graphics, Inc. of Mountain View, California has also developed a web site management tool known as "Site Manager” that consists of two components, namely "Site View” and "Link View”.
  • Site Manager a web site management tool that consists of two components, namely "Site View” and "Link View”.
  • the Link View component allows a user to navigate through a three-dimensional representation of a hierarchy presented in a three-dimensional hyperbolic space. Further details regarding the Link View component are described in the " Site Manager User' s Guide", published by Silicon Graphics, Inc.
  • Hierarchical visualization techniques typically suffer from a number of shortcomings. Specifically, a respective technique may attempt simultaneously to display too many nodes of the hierarchy so as to make the display of information concerning each of the nodes difficult. Furthermore, the complex equations required properly to generate a hyperbolic tree, particularly in three dimensions, can be computationally expensive and accordingly result in the generation of the tree representation being unacceptably slow.
  • a method of displaying a data structure that had a base node and at least a first child, node A multi-dimensional framework is displayed on a display device, the multi-dimensional framework defining a volume and having a surface.
  • a graphic representation, associated with the base node is displayed within the volume defined by the multi-dimensional framework.
  • a first portion of the surface of the multi-dimensional framework is defined as being representative of the first child node.
  • a link, connecting the graphic representation associated with the base node with the first portion of the surface, is displayed so as to represent a parent-child relationship between the base node and the first child node.
  • a method of displaying a data structure having a base (or parent) node and at least a first child node.
  • a three-dimensional framework is displayed on a display device, the three-dimensional framework defining a volume and having a surface.
  • a graphic representation, associated with the parent node is displayed within the volume defined by the three-dimensional framework.
  • a first portion of the surface of the three-dimensional framework is defined as being representative of the first child node.
  • a link connecting the graphic representation associated with the parent node with the first portion of the surface is displayed so as to represent a parent-child hierarchical relationship between the parent node and the first child node.
  • the surface of the three-dimensional framework may be divided into a plurality of portions, the first portion of the surface, defined as being representative of the first child node, being selected from the plurality of portions.
  • a first set of division lines having a first orientation and defining a second set of division lines having a second orientation may divide the entire surface of the sphere into the plurality of portions.
  • the three-dimensional framework comprises a sphere, and the first set of division lines comprise a set of circumferential lines intersecting at diagonally opposed first and second poles of the sphere.
  • the positions of the first and second poles of the sphere may be maintained relative to a fixed coordinate on the display device when rotating the sphere, so as to vary the shape of the first portion of the surface upon rotation of the sphere.
  • the second set of division lines comprises a set of parallel surface lines.
  • the data structure may include a second child node, the first and second child nodes occupying the same level within the data structure relative to the parent node, and the method may include defining a second portion of the surface of the three-dimensional framework as being representative of the second child node so that child nodes of the same level within the data structure are represented by portions of the surface of the three-dimensional framework.
  • first and second child nodes are one hierarchical level removed from the parent node
  • the method may include defining portions of the surface of the three-dimensional framework as being representative of child nodes one hierarchical level removed from the parent node.
  • the graphic representation of the parent node and the surface portions representative of child nodes, one hierarchical level removed from the parent node are displayed within a three-dimensional environment.
  • the three-dimensional framework may comprise a sphere, and the graphic representation associated with the parent node may be displayed at the center of the sphere.
  • a child graphic representation associated with the first portion of the surface may be displayed, the child graphic representation indicating that the first child node is a parent node relative to a third child node.
  • a child graphic representation to indicate that the first child node is a parent node relative to a first set of child nodes may be displayed.
  • the child graphic representation may indicate the number of child nodes within the first set of child nodes.
  • the child graphic representation is displayed as a core having a number of spokes, representative of the number of child nodes within the first set, emanating therefrom.
  • User selection of the first portion of the surface of the three- dimensional framework may be detected, and a text window may be displayed responsive to the detection of the user selection, the text window including a text description of the first child node.
  • the detection of the user selection may comprise detecting the location of a user-controlled cursor on the display device.
  • a text window including text descriptive of the parent node associated with the graphic representation may optionally be displayed within the volume defined by the three-dimensional framework.
  • a user preference with respect to the display of links between nodes located within the common web site and nodes located outside the common web site may be ascertained.
  • Each three-dimensional framework defining a volume and having a surface, and displaying a respective graphic representation associated with a respective parent node within each volume defined by each of the respective three-dimensional frameworks.
  • a method of displaying a data structure including first, second and third hierarchical levels of nodes.
  • a first graphic representation associated with a first node of the first hierarchical level is displayed within a three- dimensional display environment on a display device.
  • a second graphic representation associated with a second node of the second hierarchical level is displayed within the three-dimensional display environment, the second node comprising a child node of the first node within the data structure.
  • a link representation representing a hierarchical relationship between the first and second nodes is displayed.
  • the first graphic representation is removed from the three-dimensional display environment, a third graphic representation associated with a third node of the third hierarchical level is displayed within the three-dimensional display environment, and a link representing a hierarchical relationship between the second and third nodes is displayed, the third node comprising a child node of the second node within the data structure.
  • the first graphic representation may be displayed within a volume defined by the three-dimensional framework, and the second graphical representation may be displayed on a surface defined by the three- dimensional framework.
  • the second graphical representation may be defined as comprising a portion of the surface defined by the three-dimensional framework.
  • the first graphic representation may be displayed at a position corresponding substantially to the center of the volume defined by the three-dimensional framework.
  • the second graphic representation may be displayed at a position corresponding substantially to the center of the volume defined by the three-dimensional framework.
  • the first graphic representation may be defined to comprise a portion of the surface defined by the three-dimensional framework.
  • the data structure may include a first set of nodes within the second hierarchical level; the method may comprise automatically designating successive nodes within the first set of nodes as a selected node within the second hierarchical level.
  • the automatic designation includes designating a node of the first set of nodes as the selected node and then designating a further node of the first set of nodes as the selected node after a predetermined time interval.
  • the data structure may include a first set of nodes within the second hierarchical level; the method may comprise designating successive nodes within the first set of nodes as a selected node responsive to a user-activated advance signal.
  • a method of displaying a data structure including first, second and third hierarchical levels of nodes.
  • a first graphic representation of a first parent node of the first hierarchical level is displayed within a three- dimensional display environment on a display device.
  • a respective graphic representation for each node of a first set of child nodes is displayed, each node of the first set of child nodes comprising a child node of the first parent node.
  • a respective link representation representing a hierarchical relationship between each node of the first set of child nodes and the first parent node is displayed.
  • a method of displaying a graphical representation of a data structure on a display screen Access of a first data item, utilizing a browser application or a viewer application, of a data structure is detected, the first data item including a reference to a second data item.
  • a node-link representation of a data relationship between the first and second data items in a three- dimensional environment, and the first data item, are displayed utilizing the viewer application and the browser application, respectively, in a synchronous manner.
  • the first data item may be a file including a hypertext link to the second data item, such as an SGML, HTML, XML, or VRML file.
  • the browser application may be located or identified within a computer system.
  • the browser application may be identified as being a first or second browser application type.
  • the viewer application may query or poll the browser application to identify a data item accessed utilizing the browser application.
  • the query or poll activity may occur on a continuous and regular basis to maintain a constant state of synchronization during the browser application and the companion viewer application.
  • the data structure includes a plurality of nodes that are allocated to locations within a memory space, the allocation being performed with a predetermined density.
  • a predetermined maximum number of memory locations is defined as constituting a wire frame view.
  • the maximum predetermined number of memory locations may be determined by the maximum number of facets of a three-dimensional wire frame that are available for allocation to nodes of the data structure.
  • the maximum number of facets of the three-dimensional wire frame that are available for allocation may alternatively be determined according to a predetermined visual requirement.
  • the wire frame view may be moved or re-defined so as to facilitate navigation and display of all of the plurality of nodes.
  • the movement of the wire frame view may occur in response to, merely for example, rotation of the three- dimensional wire frame.
  • the rotation of the three-dimensional wire frame may be responsive to user input, or may be automated.
  • Figure 1 is a tree diagram illustrating an exemplary data structure in the form of a hierarchy including data items that constitute a portion of a web site.
  • Figure 2 is a screen print illustrating a display, according to an embodiment of the present invention, of at least a portion of a hierarchical data structure within a three-dimensional environment.
  • Figures 3 - 13 are screen prints illustrating navigation of a hierarchical data structure utilizing a wire frame in the exemplary form of a sphere and also illustrating visual effects caused by the invoking of a number of functions provided by an exemplary embodiment of the present invention.
  • Figure 14 is a diagrammatic representation of a machine, in an exemplary form of a computer system, within which a set of instructions for causing the machine to perform any one of the methodologies of the present invention may be executed.
  • Figure 15 is a block diagram illustrating exemplary operation of a viewer program that may generate a wire frame and data for display within the context of the wire frame, according to one embodiment of the present invention.
  • Figure 16 is a block diagram illustrating further exemplary operation of a viewer program within the context of a browser program, according to one embodiment of the present invention.
  • Figure 17 is a block diagram illustrating further exemplary useage of a viewer program, where separate and distinct browser and viewer programs exist according to one embodiment of the present invention.
  • Figures 18A - 18C are block diagrams illustrating an exemplary message and data exchange between a viewer program and a browser program to facilitate interaction and synchronization of programs, according to an exemplary embodiment of the present invention.
  • Figure 19 is a block diagram illustrating various components that communicate with, are included within, an exemplary embodiment of a viewer program.
  • Figure 20 is a block diagram showing further details regarding variables that are maintained by an exemplary view thread and an exemplary spider thread.
  • Figures 21A - 21C provide high-level representations of the functioning of a viewer program, according to an exemplary embodiment.
  • Figure 22 is a flow chart illustrating a method, according to an exemplary embodiment, of displaying a hierarchical data structure within a three-dimensional environment.
  • Figures 23A - 23B show a flow chart illustrating an exemplary embodiment of a MAPBROWSER function.
  • Figure 24 is a flow chart illustrating a method, according to an exemplary embodiment, that may be performed by a spider thread to identify the nodes and structure of a hierarchical data structure for display within a wire frame by a view thread.
  • Figure 25 is a flow chart illustrating a method, according to an exemplary embodiment, that may be performed to parse an HTML document.
  • Figure 26 is a flow chart illustrating an exemplary method of displaying a three-dimensional wire frame on a display screen.
  • Figure 27 is a flow chart illustrating an exemplary method of displaying a child node facet within a facet of a three-dimensional wire frame displayed on a display screen.
  • Figure 28 is a block diagram providing an architectural overview of a wire frame in the form of a sphere.
  • Figures 29A - 29B show a flow chart illustrating an exemplary method of generating a display of a wire frame in the form of a sphere within a three-dimensional environment on the display screen.
  • Figure 30 is a flow chart illustrating an exemplary method of displaying links within a sphere and attributing textual information on the surface of a sphere.
  • Figure 31 is a flow chart illustrating an exemplary method of displaying textual information pertaining to nodes within or adjacent facets of a sphere.
  • Figure 32 shows flow charts illustrating exemplary methods of resizing and painting an image in the form of a sphere.
  • Figure 33 is a flow chart illustrating an exemplary method of mapping information to memory concerning nodes of a hierarchical data structure.
  • Figure 34 is a flow chart illustrating an exemplary method of generating facet points on the surface of a sphere.
  • Figure 35 is a flow chart illustrating a method of generating the display of longitudinal and latitudinal division lines on the surface of a sphere.
  • Figure 36 is a flow chart illustrating a method of distributing data concerning nodes of a hierarchical data structure within a memory map and for association with respective facets of a three-dimensional wire frame.
  • Figures 37 - 40 detail exemplary methods of detecting coordinate locations on the display screen as indicated by a cursor control device.
  • Figures 41 - 48 detail various exemplary methods of generating the display of a tool bar.
  • Figures 49 and 50 illustrate the exemplary distribution of data regarding nodes within a memory structure.
  • Figures 51A - 51E illustrate various steps, according to an exemplary embodiment, performed to draw a sphere.
  • Figure 52 illustrates locating a cursor position on a sphere.
  • Figures 53 A - 53E illustrate an sequence of exemplary screen prints that show the zooming out of a first wire frame and the zooming in of a second wire frame, both the first and second wire frames being in the form of spheres.
  • Figure 54 shows a flow chart detailing an exemplary method by which a wire frame may be zoomed in or out.
  • Figures 55A - 55E show a sequence of exemplary screen prints that show a wire frame in the form of a two-dimensional surface that is zoomed out while a second wire frame in the form of a two-dimensional surface is zoomed in.
  • Figure 56 is a flowchart illustrating an exemplary method of generating the display of a wire frame in the form of a cub.
  • Figure 57 is a screen shot showing a further embodiment of a sphere for which division lines that define facets on the surface thereof are not visible.
  • Figure 58 is a screen shot showing an even further embodiment of a wire frame in the form of a surface that is displayed and automatically rotated as part of a banner advertisement embedded within a web page.
  • the actions of the present invention are embodied in machine-executable instructions.
  • the instructions can be used to cause a general-purpose or special-purpose processor that is programmed with the instructions to perform the blocks of the present invention.
  • the actions of the present invention might be performed by specific hardware components that contain hardwired logic for performing the actions, or by any combination of programmed computer components and custom hardware components.
  • the present invention may be provided as a computer program product which may include a machine-readable medium having stored thereon instructions which may be used to program a computer (or other electronic devices) to perform a process according to the present invention.
  • the machine- readable medium may include, but is not limited to, floppy diskettes, optical disks, CD-ROMs, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, flash memory, or other types of media/machine-readable medium suitable for storing electronic instructions.
  • the present invention may also be downloaded as a computer program product, wherein the program may be transferred from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., a modem or network connection).
  • a hierarchy includes a collection of data nodes, each node comprising a discrete data item.
  • the nodes may be arranged in a number of levels, with each node in a level having only a single and unique parent node, relative to which it is a child node.
  • the invention shall be taken to be applicable to web structures, wherein each child node may have more than a single and unique parent node.
  • a child node may include a pointer to one or more parent nodes, a parent node may include a pointer to one or more child nodes, or both parent and child nodes may include pointers to each other.
  • Figure 1 is a tree diagram illustrating an exemplary hierarchy 2 including data items that constitute a portion of a web site (i.e., the web site for the United States Patent and Trademark Office).
  • the hierarchy 2 includes a root node 3 that constitutes the index page for the web site.
  • the root node 3 is shown to have at least 3 child nodes, namely nodes 4, 5 and 6.
  • Node 5 i.e., the Database Page
  • Node 5 i.e., the Database Page
  • the root node 3 may be regarded as being on a first hierarchical level
  • the nodes 4, 5 and 6 may be regarded as being on a second hierarchical level
  • the nodes 7, 8 and 9 may be regarded as being on a third hierarchical level.
  • the hierarchy 2 shown in Figure 1 shall be utilized in the description below for the purposes of illustrating the generation of a representation of a hierarchical data structure within a three-dimensional environment, potentially displayed on a two-dimensional display screen.
  • Figure 2 is a screen print illustrating a display 10, generated according to an exemplary embodiment, of at least a portion of a hierarchical data structure within a three-dimensional environment, which is displayed within a two-dimensional display window 12.
  • the display 10 includes a wire frame (or framework) in the exemplary form of a sphere 14 (or ball or globe) having an outer surface divided into a number of facets by latitudinal and longitudinal division lines 18 and 20 that traverses the surface of the sphere 14.
  • the wire frame may comprise any two- or three-dimensional structure having a surface that is divided into a number of facets.
  • the wire frame may comprise a cube or a two-dimensional panel, or an other well known two - or three-dimensional shape of form.
  • the latitudinal division lines 18 are arranged in parallel bands, and when viewed from either one of poles 22 or 24 of the sphere 14 would appear as a series of concentric circles.
  • the longitudinal division lines 20 extended circumferentially around the surface of the sphere 14, and all intersect at the respective poles 22 and 24 of the sphere 14. Accordingly, the latitudinal division lines 18 may be regarded as having a first orientation relative to each other wherein each is located in a parallel plane.
  • the longitudinal division lines 20 may be regarded as having a second orientation relative to each other wherein each is located in a plane that intersects other planes along a diagonal extending through the sphere 14 between the poles 22 and 24.
  • the sphere 14 accordingly defines a volume within the three- dimensional environment, and a first visual representation, in the form of a small kernel 26, is located at the conceptual center of the sphere 14.
  • the small kernel 26 represents the parent node of a number of child nodes each associated with a specific facet 16 defined on the surface of the sphere 14 by the division lines 18 and 20.
  • the parent node represented by the kernel 26 may be the index page (e.g., HTTP://USPTO.GOV/
  • a text description of the parent node represented by the kernel 26 is presented in the bottom left hand corner of the display window 12, as indicated at 28.
  • each of the facets 16 defined on the surface of the sphere 14 may be associated with a child node of the node represented by the kernel 26.
  • a linking line 28 may be displayed extending from the kernel 26 to the center of each facet 16 associated with a child node.
  • each facet 16 associated with a child node may include a textual description 30 of the relevant node.
  • the facet 16 is shown to have a textual description 30 (i.e., "Office of Enrollment and Discipline") displayed at a position slightly above the center of the relevant facet 16.
  • the textual descriptions 30 associated with such facets 16 are of reduced in size relative to the textual descriptions 30 of facets 16 that are located towards the center (i.e., in the foreground) of the . view provided within the display window 12.
  • a single linking line 28 extending between the kernel 26 and one of the facets 16 is visually differentiated from the other linking lines 28.
  • the linking line 28 extending between the kernel 26 and the "Office of Enrollment and Discipline" facet 16 is highlighted.
  • the highlighted linking line 28 indicates that the facet 16 is an "active" or selected facet 16, and a number of operations and functions, specified using the control or navigation buttons in the toolbar 40, may be executed with respect to a node associated with the active facet 16.
  • a user is able to navigate nodes, within a single level of a hierarchical data structure and having a common parent node, by rotation of the sphere 14 so as to locate a facet 16 associated with a node in the foreground of the display shown within the display window 12.
  • This rotation of the sphere 14 may be accomplished in a number of ways, as will be described in further detail below.
  • a user is able to rotate the sphere by performing a drag-and-rotate function on the sphere by locating a cursor at a first position on the sphere, depressing a select button associated with the cursor, and moving the cursor using a pointing device from the first location to a second location while maintaining the depressed state of the select button.
  • first and second locations for example, are along a vertical line
  • the sphere 14 will be rotated around a horizontal axis.
  • the first and second locations could be located along a line that is inclined relative to the display window 12, in which case the sphere 14 will be rotated around an axis that is perpendicular to the line connecting the first and second points.
  • the display window 12 provides a number of manners in which a user can automatically rotate the sphere 14 so as to bring facets 16 associated with nodes to the foreground of the view within the display window 12. Further details regarding the automatic rotation of the sphere 14 are discussed with reference to the buttons included in toolbar 40 that may be utilized to invoke these automatic functions.
  • a map root node button 50 may be user selected to cause the root node of a particular hierarchical data structure (e.g., the index page of a web site) to be assigned to the kernel 26.
  • the map root node button 50 returns the display presented by the sphere 14 to the highest 2 level of the hierarchical data structure, wherein the root node is regarded as the center of the sphere 14, and nodes that are child nodes relative to the root node are assigned to facets 16 of the sphere 14.
  • This feature is useful in that it allows a user, who may have descended through a number of levels of a hierarchical data structure, to quickly and in a relatively effortless manner to return to the root node and second level of the hierarchical data structure.
  • a map parent node button 52 may be user selected to retreat the display of a portion of a hierarchical data structure displayed within and by the sphere 14 by one level. Specifically, upon selection of the map parent node button 52, a node that is associated with the kernel 26, and that constitutes the parent node of nodes currently assigned to the facets 16, will then be regarded as a child node within a subsequent display. Accordingly, a first parent node of the family displayed in a first view will be assigned a facet 16, and a second parent node relative to the first parent node will be assigned to the kernel 26, and a second view within the sphere 14 will be generated accordingly.
  • a map selected node button 54 may be user selected to advance the display of a portion of a hierarchical data structure displayed within the sphere 14 by one level. Specifically, upon selection of the advance level button 60, a node associated with the single "active" facet 16 within a first view will become the parent node of a second, subsequent view, and accordingly be represented by the kernel 26 at the center of the sphere 14. Child nodes of the node represented by the active facet 16 in the first view will be assigned to distinct facets 16 on the surface of the sphere 14 in the subsequent, second view generated responsive to the user selection of the map selected node button 54.
  • a stop button 56 may be user selected to terminate the generation of a further view, or to terminate the automatic rotation of the sphere 14 (or rotation of the data within the sphere 14), as will be described in further detail below.
  • Step advance and step retreat buttons 60 and 58 are user selectable to advance or retreat the display of a facet 16, associated with a child node, with respect to the foreground (or other predetermined) location within the view provided within the display window 12.
  • the selection of a buttons 60 or 58 also has the effect of causing the facet 16 displayed at the foreground location to be designated as the active facet 16.
  • the nodes 4, 5 and 6 would be represented by respective facets 16 on the surface of the sphere 14.
  • the sphere 14 By selecting the step advance or step retreat buttons 60 or 58, the sphere 14 would be rotated so that facets 16 associated with the nodes 4, 5, and 6 would sequentially and in a step-wise manner be located at (or at least towards) the center of the view (or foreground) provided within the display window 12 by rotation of the sphere 14, and also sequentially designated as the active facet 16.
  • the nodes 4, 5 and 6 are assigned a sequential order, and may each include a forward pointer, a backward pointer, or both a forward and backward pointers that implement this sequential order.
  • step advance button 60 User selection of the step advance button 60 will cause facets 16, associated with the nodes 4, 5 and 6, to be displayed in the order determined by the sequential order in one (forward) direction, and user selection of the step retreat button 58 will cause the facets 16 to the displayed in an order determined by the sequential order in an opposite (backward) direction. Accordingly, the step advance and step retreat buttons 60 and 58 allow a user to navigate between nodes, located on a particular level of the hierarchy and sharing a common parent node, in a convenient manner.
  • Auto forward and auto backward buttons 64 and 62 are again user selectable to initiate an automatic advance or retreat function, whereby the facets 16 associated with nodes are sequentially advanced to the foreground of the view presented within the display window 12, and maintained in the foreground position for a predetermined time, before a subsequent facet 16 associated with a node is advanced to the foreground position.
  • the order in which the facets 16 are displayed is determined by a sequential order assigned to the associated nodes and the direction in which this sequential order is traversed.
  • the auto advance and /or retreat functions provide a convenient manner for a user to scan a group of child nodes of a specific parent node within the hierarchical data structure.
  • a map browser location button 66 is user selectable to invoke a function whereby a viewer program 200, that generates the display of the sphere 14 and the data therein, is synchronized to display a portion of hierarchical data structure that is being viewed utilizing a further independent program, such as for example a browser program.
  • a further independent program such as for example a browser program.
  • Examples of commercially available browser programs include the Netscape Navigator, developed by Netscape Communications Corp. of Mountain View, California and the Microsoft Explorer, developed by Microsoft Corp. of Redmond, Washington.
  • the viewer program 200 may be synchronized to regard a first web page, or first web location, currently being displayed in a browser program as a parent node represented by the kernel 26, and to regard web pages to which the web page includes hypertext links as child nodes of the parent node.
  • facets 16 will be associated with each web page to which the first web page includes a hypertext link.
  • the synchronization function invoked by the map browser location button 66 requires that, for example, a Uniform Resource Locator (URL) of the web page currently being displayed by the browser program be exported from the browser program to the viewer program. Further details regarding how this may be implemented within an exemplary embodiment are provided below.
  • a set browser location button 68 is user selectable to invoke a function whereby a browser program is synchronized to display a portion of a hierarchical data structure that is currently being displayed by the viewer program 20 within the display window 12.
  • This synchronization function requires that, for example, a URL of a web page that currently constitutes the kernel 26 of the sphere 14 be displayed within the browser program. Further details regarding how this may be implemented within an exemplary embodiment are also provided below.
  • An external links button 70 is user selectable to invoke a function within the viewer program 200 whereby external nodes, that may be referenced by nodes within the hierarchical data structure but are not included within the hierarchical data structure, may be viewed, utilized, or ignored by the viewer program 200. Specifically, a user can optionally invoke or disable the external link view function so that external nodes are. displayed or not displayed within the context of the sphere 14. For example, where the hierarchical data structure comprises a web site, utilizing the external links button 70 a user can selectively view or ignore links within a web page comprising the parent node to nodes outside a particular web site (e.g., outside the web site of the U.S. Patent and Trademark Office).
  • a synchronize button 72 is user selectable to invoke a function whereby the viewer program 200 and an external program, such as a browser program 202, are synchronized with each other in an automatic and continual manner.
  • a clear search results button 76 is user selectable to invoke a "Clear Search Results” function that clears the results of a search previously performed.
  • the "Clear Search Results” function may traverse a hierarchical tree and set a “SearchResult” flag for each instance of a "TreeNode” object to false.
  • the display window 12 also includes a URL window 78, wherein a directory, file or web location name may be inputted or displayed. For example, the URL of a web site represented by the kernel 26 may be displayed within the URL window 78.
  • a find field 74 allows a user to perform a search of the textual descriptions associated with each of the facets 16 of the sphere 14. On locating a match between a search string inputted into the find field 74, a viewer program 200 will then position a facet 16 having textual description that matches the search string in a foreground position within the view provided within the display window 12.
  • Figures 3-13 are screen prints visually illustrating navigation of a hierarchical data structure utilizing the sphere 14, according to an exemplary embodiment, and also illustrating the visual effects of invoking a number of the functions discussed above.
  • Figure 3 illustrates a textual description box 80 containing, for example, the title of a web page associated with the active facet 16.
  • the box 80 may be displayed proximate the active facet 16 in response to a user locating a cursor over or on the relevant facet 16. It will also be noted that the portions of the division lines 18 and 20 that bound the active facet 16 are highlighted visually to distinguish the active facet 16 from surrounding facets 16. Further, in response to the user selection of the active facet 16, an enhanced textual description box 82 may be displayed in the bottom right-hand corner of the display window 12.
  • the enhanced textual description box 82 may include further information beyond merely a title of a data item associated with the active facet 16, and may, for example, include a description of the web site provided by a search engine in the case where the hierarchical data structure comprises the results of a web search.
  • Figure 4 illustrates an example of an altered display within the display window 12 as a result of the rotation of the sphere 14 shown in Figure 2.
  • This rotation of the sphere 14 may be achieved utilizing any one of the automatic rotation functions described above, or by performing a drag-and-rotate function utilizing a cursor and pointing device.
  • the find field 74 is shown to include the word "database” in Figure 4, and the sphere 14 may have been rotated to illustrate the facet 16 for a node having a title including the word "database", as located by a textual search.
  • the facet 16 for the node 5 includes a child-indicating icon 90 that identifies the node 5 as being a parent node relative to further child nodes.
  • the child-indicating icon 90 (also termed a "child node facet”) comprises a polygon having a shape corresponding substantially to the shape of the facet 16 within which it is contained.
  • the icon 90 includes a number of radial spokes, each of which is representative of a child node.
  • the radial spokes within the icon 90 provide an indication of the number of child nodes.
  • a user is thus quickly and conveniently able to identify those facets 16 of the sphere 14 associated with nodes having child nodes.
  • a user can thus "map" the selected node by selecting the button 54 presented in the toolbar 40, or by selecting an appropriate item within a navigation menu 100, as illustrated in Figure 5.
  • node 5 For example, were a user to select the facet 16 associated with node 5 (i.e., the "Databases: Patent, bibliographic and AIDS" node) to be mapped, node 5 would be mapped to the kernel 26 of the sphere, and child nodes of node 5 (i.e., nodes 7, 8 and 9) would be mapped to respective facets 16 of the sphere 14, as shown in Figure 6.
  • node 5 i.e., the "Databases: Patent, bibliographic and AIDS" node
  • Figure 7 illustrates a user selection of a "Show Next Node” item within the navigation menu 100, which has the same effect has selecting the step advance button 60 described above with reference to Figure 2.
  • the invoking of this function causes the sphere 14 to be rotated so that a facet (associated with a next node, according to a predefined sequential order, within the third level of the hierarchical data structure shown in Figure 2) is advanced to the foreground of the display window 12.
  • Figure 8 responsive to selection of the "Show Next Node” item within the menu 100, where the "Patent and Trademark Depository” facet 16 associated with an appropriate node on level 3 of the hierarchical data structure 2 is advanced to the foreground.
  • Figure 8 also illustrates an "Options" drop-down menu 102, embodying a number of items corresponding to buttons included within the toolbar 40.
  • a "Show External Links" item within the drop-down menu 102 is shown to be marked as active, accordingly indicating that external nodes to which the data item represented by the kernel 26 has links will be assigned facets 16 on the sphere 14. Such facets 16 will furthermore be shown to be linked to the kernel 26 by appropriate linking lines 28.
  • Figure 9 illustrates the effect of de-activating the external link display function (e.g., by double clicking on the "Show External Links" item within the menu 102). Specifically, it can be seen that the text associated with a number of facets 16 that were previously assigned to external links has been removed, as have been linking lines 28 connecting such facets 16 to the kernel 26.
  • Figures 10-13 illustrate a sequence of screen prints showing the rotation of the sphere 14 about a substantially horizontal axis responsive to a user drag-and-rotate operation using a cursor directed by a pointing device operated by a user.
  • the sphere 14 is rotated in the direction indicated by the arrow 104, text will be moved from the upper pole 22 of the sphere 14 towards the lower pole 24.
  • the size and intensity of the text is decreased. The same holds true for text that moves away from the central region of the sphere 14 responsive to a horizontal rotation of the sphere 14.
  • the "Patent Number Search" facet 16 is the active facet, and accordingly the linking line 28 coupling the relevant facet 16 to the kernel 26 is highlighted. It can be seen from Figures 10-13 how the highlighted linking line 28 is rotated about the kernel 26 as the sphere 14 is rotated in the direction indicated by the arrow 104.
  • exemplary methods by which the sphere, as described above, may be generated, rotated and navigated Specifically, exemplary methods of drawing the sphere 14 (including the facets and child node facets described above), establishing a coordinate system, defining the orientation of a light source relative to the sphere, rotating the sphere and data facets, locating a cursor position of the sphere and locating a corresponding facet, scaling the sphere, and performing a data distribution within a memory of a computer system are each described below.
  • the software modules, objects and functions described below, in one exemplary embodiment, implement these methods. It will be appreciated that the methods described in the Addendum 1 may be performed by a software application having any architecture, or a combination of software and hardware.
  • Computer System Figure 14 shows a diagrammatic representation of a machine in the exemplary form of a computer system 120 within which a set of instructions, for causing the machine to perform any one of the methodologies discussed above or below, may be executed.
  • the computer system 120 includes a processor 122, a main memory 124 and a static memory 125, which communicate with each other via a bus 126.
  • the computer system 120 is further shown to include a video display unit 128 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)).
  • LCD liquid crystal display
  • CRT cathode ray tube
  • the computer system 120 also includes an alphanumeric input device 130 (e.g., a keyboard), a cursor control device 132 (e.g., a mouse), a disk drive unit 134, a signal generation device 136 (e.g., a speaker) and a network interface device 138.
  • the disk drive unit 134 includes a machine-readable medium 135 on which is stored a set of instructions (i.e., software) 140 embodying any one, or all, of the methodologies described herein.
  • the software 140 is also shown to reside, completely or at least partially, within the main memory 124 and /or within the processor 122. The software 140 may further be transmitted or received via the network interface device 138.
  • FIG 15 is a block diagram illustrating a first exemplary usage 190 of a viewer program 200, according to an exemplary embodiment, that may generate the sphere and data for display of a hierarchical data structure, as discussed above with reference to Figures 1-13.
  • the viewer program 200 and a browser program 202 are each shown to be hosted on, and executed within, a computer system 120, such as that illustrated in Figure 14.
  • the computer system 120 is shown to be coupled to the Internet 204, for example, via the. network interface device 138. Accordingly, the browser program 202 and the viewer program 200 can access a web site 206.
  • the viewer program 200 and the browser program 202 are shown to be separate and distinct programs that communicate utilizing Dynamic Data Exchange (DDE) messages 208.
  • DDE Dynamic Data Exchange
  • Each of the DDE messages 208 may include a DDE application name, a DDE topic and a DDE item name.
  • the browser program 202 may be the Netscape Navigator browser program, and further information regarding the DDE implementation for this specific browser program can be found at the following URL:
  • HTTP // developer 1 /Netscape.com/ docs /manuals / Communicator /DDE / abtdde.htm.
  • FIG 16 is a block diagram illustrating a second exemplary usage 192, wherein a viewer program 200, according to an exemplary embodiment, is operated within the browser program 202.
  • the usage 192 the requirement for DDE messages is dispensed with, and the browser program 202 and the viewer program 200 may share a common memory space.
  • Figure 17 is a block diagram providing further details of the exemplary usage 190, wherein separate and distinct browser and viewer programs 202 and 200 exist.
  • Figure 17 illustrates the programs 200 and 202 communicating via a DDE Application Program Interface (API) 212 and an operating system, such as the Windows ® operating system (OS) developed by Microsoft Corporation.
  • API DDE Application Program Interface
  • OS Windows ® operating system
  • the viewer program 200 is shown to include a Java DDE emulator 216 that communicates with a Java Virtual Machine 218 included within the operating system 214, the Java Virtual Machine 218 then communicating with the DDE API 212.
  • the DDE API 212 is also in communication with a DDE server 220, included within the operating system 214.
  • the DDE server 220 in turn communicates with the browser program 202, thereby establishing a communication channel between the viewer program 200 and the browser program 202.
  • Figures 18A-18C are block diagrams illustrating an exemplary message and data exchanges between the viewer program 200 and the browser program 202 to facilitate the interaction and synchronization of the programs 200 and 202, as discussed above.
  • Figure 18A illustrates a message and data exchange whereby the viewer program 200 locates and identifies a browser program 202, with which it can communicate and which is displaying a data item (e.g., in the form of an HTML document).
  • the viewer program 200 issues a "Find Browser" message 204 to the DDE API 212, that translates the message 204 into a "WWW _ Windowlnfo" message 242 for communication to the browser program 202.
  • the message 242 is structured as specified by the DDE implementation of the relevant browser program 202.
  • the browser program 202 then propagates a data message 244 to the DDE API 212, the message 244 including a browser name, a URL identifying a web site currently being accessed by the browser program 202, and possibly a URL Title identifying a markup language document being displayed by the browser program 202.
  • the DDE API 212 then constructs a "Browser Name" message 246 utilizing the information contained within the message 244, the message 246 then being communicated to the viewer program 200.
  • Figure 18B illustrates a message and data exchange whereby the viewer program 200 interrogates the browser program 202 to learn an updated URL, and URL Title, for a web location being accessed via the browser program 202, for the purpose of synchronizing the viewer program 200 to the browser program 202.
  • This may be performed to implement a "Map Browser Location” function that may be invoked by a user utilizing the drop-down menu 102 shown in Figure 9, or utilizing the button 66 included in the toolbar 40.
  • the viewer program 200 issues a " Get New URL" message 248 to the DDE API 212, that is translated into a "WWW _ Window Info" message 242 responsive to which the browser program 202 again propagates the data message 244.
  • the DDE API 212 then forwards only the URL and URL Title information 250 to the viewer program 200.
  • Figure 18C illustrates a message and data exchange whereby the viewer program 200 issues a URL to the browser program 202 for the purpose of synchronizing the browser program 202 to the viewer program 200.
  • This may be performed to implement a "Set Browser Location” function that may be invoked by a user utilizing the drop-down menu 102 shown in Figure 9, or utilizing the button 68 included in the toolbar 40.
  • the viewer program 200 issues a " Set Browser URL” message 252 to be DDE API 212, the message 252 specifying a URL of a web site that is currently being displayed as the kernel 26 of the sphere 14.
  • the DDE API 212 then issues "WWW _ Activate" and "WWW _ Open URL” messages 254 and 256 to the browser program 202.
  • the browser program 202 Responsive to the messages 254 and 256, the browser program 202 will be activated to access' a web location identified by the URL that was included in the message 252. The browser program 202 then communicates the result of an access operation (i.e., success or failure) to the viewer program 200 via the DDE API 212.
  • an access operation i.e., success or failure
  • FIG 19 is a block diagram illustrating the various components that communicate with, and are included within, an exemplary embodiment of the viewer program 200.
  • Components (e.g., input and output) external to the viewer program 200 include user input information 240, which may be supplied to a computer system 120, for example, via the alphanumeric input device 130 or the cursor control device 132, a network 262 (e.g., the Internet, a Local Area Network (LAN) or a Wide Area Network (WAN)) via which is the viewer program 200 may communicate with other computer systems for the purposes of identifying a hierarchical data structure (e.g., a web site), a local file system 264 that the viewer program 200 may again access for the purpose of identifying a hierarchical data structure, and a display 268 such as the video display unit 128 of the computer system 120 shown in Figure 14.
  • a network 262 e.g., the Internet, a Local Area Network (LAN) or a Wide Area Network (WAN)
  • LAN Local Area Network
  • Two core components of the viewer program 200 include a view thread 270 and a spider thread 272.
  • the view thread 270 is essentially responsible for generating the display of the sphere 14 and for displaying the above- described visual representation (hereinafter referred to as a "tree") of a hierarchical data structure within the context of the sphere 14.
  • the spider thread 272 is responsible for identifying the nodes and structure of a hierarchical data structure, and for generating a memory-mapped representation of this hierarchical data structure that is accessed and utilized by the view thread 270 when generating a display.
  • the spider thread 272 is shown to access the network 262 or the file system 264 for the purposes of obtaining information regarding a hierarchical of data structure (e.g., a web site or file directory).
  • the spider thread 272 is shown to interact with a "Tree" class 277 and a "TreeNode” class 276.
  • the spider thread 272 creates a TreeNode object as a root (e.g., from a URL) that is provided to the spider thread 272 by the view thread 270.
  • the spider thread 272 creates at tree, and sets the root as part of that tree.
  • the spider thread 272 creates a TreeNode object for every link (e.g., a hypertext link) that exists from the relevant parent node to a respective child node. In this way, the spider thread 272 is able to construct a hierarchy tree.
  • a link e.g., a hypertext link
  • the view thread 270 is shown to access the spider thread 272 for the purposes of retrieving information (e.g., a memory-mapped data) representative of a particular hierarchical data structure.
  • the view thread 270 is also shown to access a display 268 for the purposes of generating the relevant display thereon, a " Navigate Toolbar" class 271 that creates and manages the image buttons 50-72 discussed above with reference t ⁇ j Figure 2, a Sphere object 278 that is derived from a "New SP" class and performs all sphere-related functions, the Java DDE Emulator 216 discussed above with reference to Figure 17, and a "Navigator URL Bar" object 274 that is derived from a "NVUrl” class and is an instantiation of a toolbar, an example of which is provided in the form of toolbar 40 shown in Figure 2.
  • Figure 20 is a block diagram providing further details regarding variables that are maintained by the view thread 270 and the spider thread 272.
  • the view thread 270 is shown to maintain a LAST LEVEL variable 280 as the deepest level within the hierarchical data structure that has been displayed on the sphere 14 (for example in the form of child node facets)
  • the spider thread 272 is shown to maintain a CURRENT MAPPING LEVEL variable 282 that numerically indicates the current level within a hierarchical data structure that is mapped by the spider thread
  • a MAXIMUM SPIDER LEVEL variable 286 that numerically indicates the deepest level within a hierarchical data structure that the spider thread 272 may map according to a user preference.
  • the Last Level variable 280 indicates the deepest level within the hierarchical data structure that the spider thread 272 has investigated.
  • the Current Mapping Level variable 282 indicates the parent of the deepest level that has been displayed on the sphere 14.
  • the view thread 270 is able to compare the Last Level variable 280 to the Current Mapping Level variable 280 to determine whether it needs to update the display. This is done on a continual basis. If the Last Level variable 280 is greater than the Current Mapping Level variable 282, this indicates that the spider thread 272 has probed a deeper level of the hierarchical data structure, and that the view thread 270 can accordingly update the tree displayed within the sphere 14. This updating may be performed by displaying additional child nodes facets within facets of the sphere 14 that provide a child node count indication.
  • the variables 280, 282 and 286 are all public variables.
  • Figures 21A-21C provide high-level representations of the functioning of the viewer program 200, according to one exemplary embodiment. More detailed representations of specific components and methodologies constituting an exemplary embodiment of the viewer program 200 are then described further with reference to subsequent figures.
  • the simultaneous and parallel operations performed by the view and spider threads 270 and 272 are illustrated at 288.
  • the spider thread 272 is shown at block 292 to build a separate and distinct memory map (as illustrated and described in section 1.9 of Addendum 1) for each parent/child node family within a hierarchical data structure.
  • Memory maps are constructed for parent/child node families to a certain user-specified depth within the hierarchical data structure.
  • Each memory map includes "valid" memory locations to store data concerning a specific child node and "null" memory locations that are empty. The valid memory locations are dispersed within the memory with a predetermined density. Each memory location within each memory map is potentially associated with a facet of a three-dimensional wire frame, but only facets that are associated with valid memory locations will appear on the three-dimensional wire frame to be associated with (and to be representative of) a child node.
  • the spider thread 272 continually operates in the background of the viewer program 200 to map the hierarchical data structure, of which only a portion may be represented by the tree displayed within the sphere 14. Accordingly, the spider thread 272 may continually probe both laterally and vertically within the hierarchical data structure for the purpose of identifying links (e.g., hypertext links or other pointers) between nodes.
  • the view thread 270 is shown at block 291 to display a current parent/child node family, or at least a portion thereof, in accordance with the wire frame window boundaries for a memory map representing the relevant child nodes.
  • the view thread 270 is shown to retrieve the memory maps generated by the spider thread 272 as needed to display a portion of a hierarchical data structure in accordance with automatic or user inputs that direct navigation of the hierarchical data structure.
  • Figure 21B is a flowchart providing further detail regarding the blocks illustrated in Figure 21A.
  • the spider thread 272 is shown to create at least a single memory map for storing node information regarding the child nodes of a predetermined root (or base) node. As described above, the spider thread 272 will then proceed to probe deeper into the hierarchical data structure and construct memory maps for subsequent and deeper parent/child node families.
  • a wire frame view (or memory window) is defined according to predetermined criteria, such as the number of facets (or surface portions) of the three- dimensional wire frame that are available to represent nodes. As described above, the wire frame view demarcates a predetermined portion of a specific memory map as constituting the "tree" for display within the wire frame.
  • the view thread 270 generates a display of a three- dimensional wire frame (e.g., the sphere 14 shown in Figure 1) within the display window 12.
  • the tree is displayed within the sphere 14. Specifically, a kernel 26 representative of the parent node is displayed at the center of the three-dimensional frame. Text information associated with each of the child nodes is then displayed within, or adjacent, a surface portion or facet of the three-dimensional wire frame that represents a respective child node. Linking lines are then displayed, each linking line extending between the kernel 26 and the approximate center of a facet representing a child node.
  • one of the child nodes may be designated as active, in which case the facet and linking line associated with the relevant node may be visually differentiated (e.g., highlighted).
  • a new parent node may be detected. For example, an identification of such a new parent node may be inputted by a user (e.g., into the URL Windows 78) or may be automatically generated by the viewer program 200. If a new parent node is detected, a determination is made at decision box 299 as to whether child nodes for the new parent nodes have been mapped to memory.
  • the new parent node is a child node deeper in the hierarchical data structure than the current parent node, there is the possibility that the spider thread 272 may have probed deeper into the hierarchical data structure to generate a memory map for the relevant child nodes.
  • the new parent node may be located in a hierarchical data structure that has not been probed by the spider thread 272. If the relevant child nodes have been memory mapped, a return is made to block 294. Alternatively, should the child nodes not have been mapped, a return is made to block 293.
  • a rotation of the wire frame may have been performed responsive to manual user input (e.g., a drag-and-rotate operation utilizing a cursor and mouse or by user selection of the step advance and step retreat buttons 60 and 58).
  • a rotation of the wire frame may have been performed responsive to an automatic rotation mechanism, which may be initiated by user selection of the auto forward or auto backward buttons 64 and 62. If rotation of the wire frame is detected, a return is made to block 294.
  • Figure 21C is a flowchart illustrating in more detail the operation, according to one exemplary embodiment, of the viewer program (or application) 200 to display a hierarchical data structure within a three- dimensional environment.
  • the viewer program 200 is initialized, and a view thread 270 is instantiated.
  • Block 302 embodies a number of decisions through which the viewer program 200 progresses for the purpose of updating a display. Specifically, the viewer program 200 determines whether a current iteration of the block 302 is a first iteration (i.e., if FirstTime).
  • a new spider thread 272 is generated (i.e., create Spider thread)
  • a new sphere object 278 is created (i.e., create Sphere) and a tree representing the relevant parent and child nodes of a hierarchical data structure is set within the sphere (i.e., set Tree in Sphere).
  • the sphere object 278 is then displayed (i.e., display).
  • an extant spider thread 272 is stopped (i.e., stop Spider thread), a new spider thread 272 is generated, and a new tree representing the newly identified parent and child nodes of the hierarchical data structure is set within the sphere 14.
  • the updated sphere object 278 is then displayed (i.e., update display).
  • a determination is made as to whether the current level of the hierarchical data structure mapped within the sphere 14 is greater than the last level (i.e. if Current Mapping Level > Last Level) as described above. If so, this indicates that a new level within the hierarchical data structure is designated as the current level, and the display of the sphere and data information is updated (i.e., update display). Further, during each iteration of the block 302, a determination is made as to whether the current level of the hierarchical data structure mapped within the sphere 14 is equal to or greater than the maximum spider level indicated by the variable 286 (i.e. if Current Mapping Level > Max Spider Level). If so, then the execution of the spider thread 272 is stopped.
  • the last level i.e. if Current Mapping Level > Last Level
  • Operation of the viewer program 200 is terminated by preceding from block 302 to block 304, where both the view thread 270 and the spider thread 272 are stopped.
  • FIG 22 is a flowchart illustrating a method 320, according to an exemplary embodiment, of displaying a hierarchical data structure within a three-dimensional environment, and provides further details regarding the main class of the viewer program 200 as described in overview with reference to Figures 21A - 21C.
  • the viewer program 200 is executing within a browser window (e.g., as a Java applet embedded within the web page)
  • the method 320 progresses from block 322 to an initialization block 324.
  • a display window 12 (or frame) is created at block 326, the display window 12 then being resized to approximately two-thirds of the screen size on which it is displayed.
  • the method 320 then proceeds to the initialization block 324.
  • decision box 328 a determination is made as to whether the viewer program 200 is executing as a stand-alone program, or executing within a browser window. If the viewer program 200 is executing as a stand-alone program, the method proceeds to block 330, wherein a URL Bar instance and a menu instance are created within the display window 12 to generate the URL window 78 and the drop-down menus that are discussed above, for example with reference to Figure 7.
  • a toolbar instance is created for generating the toolbar 40, as discussed above reference to Figure 2.
  • the view thread 270 is then created.
  • the method 320 then proceeds to decision box 336, where a determination is made as to whether a toolbar 40 is required for display.
  • a toolbar 40 For example, in the case where the viewer program 200 comprises a Java applet embedded within a web page, the author of the web page may specify that the toolbar 40 be displayed or omitted from display within a browser window. If it is determined that the toolbar 40 is to be displayed, the method 320 proceeds to block 332. Of the other hand, should the author of the web page within which the viewer program 200 embedded specify that the toolbar 40 is not be displayed, the method proceeds directly from decision box 336 to block 334.
  • a syncWithBrowser flag indicating that a user has indicated the viewer program 200 is continually to be synchronized with a browser program 202. This flag may be set, for example, by a user selection of button 72 displayed on the toolbar 40 shown in Figure 2.
  • a mappingwebsite flag indicating that a web site displayed within a viewer program 200 is to be mapped into a display provided by the viewer program 200. This flag may be set, for example, by a user selection of the button 66 displayed on the toolbar 40 shown in Figure 2.
  • a loadFile flag indicating that a specific file hierarchy, for example within the file system 264 shown in Figure 19, is to be mapped into a display provided by the viewer program 200. This flag may be set, for example, responsive to a user inputting a file directory name into the URL window 78 of the display window 12 shown in Figure 2.
  • a loadURL flag indicating that a specific URL is to be mapped into a display provided by the viewer program. This flag may be set, for example, responsive to a user inputting a URL into the URL window 78 on the display window 12 shown in Figure 2.
  • the MAP BROWSER Function Figures 23A and 23B illustrate a flowchart showing an exemplary embodiment of the MAP BROWSER function 350.
  • the function 350 is a core function, and is responsible for mapping URLs or files into the display window 12.
  • the function 350 commences at block 352, and determines whether any one of a number of flags are set at any one of the decision boxes 354. Specifically, determinations are made as to whether any one of the syncWithBrowser flag, the firstTime flag, the loadFile flag, or the loadURL flag are set. A determination is also made as to whether a current URL variable has a null value, indicating that no current URL is being mapped by the viewer program 200.
  • the getDocumentBase function is a function provided by the Java virtual machine, and returns a base URL for the document currently being viewed in the browser program 202 when the viewer 210 is embedded within the data item (e.g., an HTML document) currently being viewed within the browser program 202.
  • the function 350 proceeds to decision box 360, where a determination is made as to whether the loadFile flag is set. If so, a URL string variable is set to equal a specified file name at block 362. If the loadFile flag is not set, a determination is made at decision box 364 as to whether the loadURL flag is set. If so, the URL string variable is set to equal a specified URL name at block 366. If the loadURL flag is not set, a determination is then made at decision box 368 as to whether a browserName variable has a null value.
  • a FindBrowser function is then executed at block 370 to locate a browser.
  • the message exchange by which the browser program 202 may be identified is described above with reference to Figure 18A.
  • decision box 372 a determination is made as to whether a browser program 202 has been located. If the browserName variable does not have a null value, following the determination at decision box 368, or if it is determined at decision box 372 that a browser has been located, the function 350 proceeds to block 374, where a GetURL function is executed. Details of the data and message exchange that may be performed in executing the GetURL function are described above with reference to Figure 18B.
  • the URL string variable is set equal to the URL that is returned from the browser program 202.
  • Determinations are made at decision boxes 378 and 380 to determine whether a valid URL has been retrieved.
  • a determination is made as to whether the URL string variable does not have a null value
  • a determination is made as to whether the URL string variable does not equal the current URL variable. This determination is made to insure that the URL string variable is different from the one that is currently being displayed. If both these conditions are true, then a determination is made as to whether a thread spider variable is not a null value at decision box 382. If this is the case (i.e., the spider thread variable is not null), the function 350 proceeds to block 384, where a current spider thread 272 is stopped.
  • a new spider thread is created at block 386, and a mapping web site variable is set to true (to indicate that a mapping operation is being performed), and the last level variable 280 is set to 0 (to ensure that the mapping operation commences at the highest level (i.e., level zero) of a hierarchy of data structure being mapped).
  • the function 350 proceeds to decision box 388, where determination is made as to whether a web site mapping operation is in operation by examining the state of the mapping web site variable. If so, at decision box 390, a determination is made as to whether the current mapping level variable 282 has a greater value than the last level variable 280. If so, (thus indicating that mapping is now occurring on a level below the last level of the hierarchical data structure that was mapped), then the function 350 proceeds to decision box 392, where a determination is made whether a Tree variable does not have a null value.. If so, a determination is made at decision box 394 as to whether a Sphere variable has a null value.
  • the sphere variable does have a null value this indicates that a sphere does not currently exist. If the Sphere variable has a null value, this indicates that no sphere has as yet been displayed, and at block 395 a new sphere is created that displays a new tree. If the sphere variable does not have a null value, at block 395 a new sphere is created that displays a new tree. Alternatively, if the sphere variable does not have a null value, at block 396 a Sphere.SetTree function is executed. The Sphere.SetTree function passes the new tree hierarchy to the existing sphere for display. A determination is made at decision box 397 as to whether the last level variable 280 equals the current level variable.
  • a repaint function to refresh and update the sphere 14 and information displayed therein, is invoked that block 398.
  • the last level variable is also set to equal the current level variable.
  • the count variable shows that a mapping of all nodes on a particular level occurs before the spider thread 420 proceeds to a deeper level.
  • the function 350 proceeds to decision box 400, where determination is made whether the current level variable is equal to or greater than the maximum spider level variable 286. If so, the spider thread 272 is stopped at block 402, and the mapping website variable is set to false, to indicate that a mapping operation is no longer being performed.
  • the Spider Thread Figure 24 is a flowchart illustrating a method 420 (also termed a spider operation), according to an exemplary embodiment, that may be performed by the spider thread 272 to identify the nodes and structure of a hierarchical data structure for display within the sphere 14 by the view thread 270.
  • the method 420 commences at block 422, and proceeds to block 424, where the current mapping level variable 282 and a count are both set to 0, thereby ensuring that the method 420 begins examining the hierarchical structure from the base level (i.e., level 0).
  • the count variable is a variable local to the spider thread 272, and allows an exit from the method 420 and a return to the same level.
  • the count variable is not equal to the current mapping level variable 282
  • the count variable thus insures that the spider thread 272 maps all nodes within a particular hierarchical data structure before proceeding to map nodes on a deeper hierarchical level. Further note that the count variable should be decremented where appropriate.
  • the Parse HTML Function Figure 25 is a flowchart illustrating a method 440, according to an exemplary embodiment, that may be performed in execution of the Parse HTML function discussed above. While the method 440 is described with specific reference to parsing an HTML document, it will readily be appreciated that a similar method may be utilized to parse any markup language document, or other data structure that may contain links or pointers to child nodes.
  • the method 440 commences at block 442, and proceeds to decision box 444, where a determination is made as to whether an index variable, indicative of a maximum HTML document size that may be parsed, is greater than a data size variable that indicates the size of the character array of the relevant HTML document. If the data size variable is greater than the index variable, the method 440 terminates at block 446 as the HTML document is too large to be handled by the Parse HTML function. Alternatively, a determination is made at decision box 447 as to whether an anchor tag has been located within the HTML document being parsed.
  • an anchor tag in the HTML document identifies a hypertext link embedded within the HTML document (i.e., marks the beginning and end of a hypertext link) that points to a further data item (e.g., another HTML document, Java applet, or any other data item or file that may be linked to from an HTML document) at a level below the HTML document currently being parsed within a hierarchical data structure. If an anchor tag is located, block 448 is then performed. Specifically, a URL String variable is set to equal the output of a Parse Anchor Tag function, that retrieves an address (e.g., a HyperText Transfer Protocol (HTTP) address or a File Transfer Protocol (FTP) address) associated with the relevant anchor tag.
  • HTTP HyperText Transfer Protocol
  • FTP File Transfer Protocol
  • a base URL variable is set equal to the output of a nodeGet URL function, that outputs the base or root URL of a web site from which the document has been parsed has been retrieved.
  • a new child Node object is instantiated based on output of a new Node function that also performs a check operation to determine whether the relevant URL has already been mapped. The new child Node object is thus positioned as a child node within the hierarchical data structure (or tree) of the document currently being parsed.
  • Method of Displaying and Rotating Wire Frame Figure 26 is a flowchart illustrating an exemplary method 500, according to one embodiment of the present invention, of displaying a three-dimensional wire frame on a display screen.
  • the method 500 describes the rotation of an exemplary sphere responsive to user input in the form of movement of a cursor control device, or pointing device, such as a mouse.
  • certain functions that are called e.g., the GenerateSP function and the DFace function
  • FIG. 27 is a flowchart illustrating an exemplary method 550, according to one embodiment of the present invention, of displaying a child node facet within a facet of a three-dimensional wire frame displayed on a display screen. Further details regarding the display of child node facets are provided below. Specifically, the calculation of the size of a child node facet relative to a facet of the three-dimensional wire frame within which the child node facet is incorporated is described. Furthermore, the generation and display of spokes emanating from a central position within a child node facet are described. Each of the spokes represents a child node of a node represented by the relative facet, and accordingly the spokes provide an indication of the number of child nodes of a relevant node.
  • the new sphere 570 is shown to include three primary classes, namely a facet class 572, a VecFace class 574 and a NewSP class 576.
  • the class 576 is shown to include four functions, namely a GetData function 578, a Resizelmage function 562, a PaintFrame function 564 and a Paintlmage function 566.
  • a repaint function 560 which includes the functions 562, 564 and 566, is called either by the operating system to update a display of the sphere 14 on a display screen, or when the viewer program 200 determines that the display of the sphere 14 needs to be updated.
  • the PaintFrame function 564 paints an entire image to memory (and not to the display), whereafter the Paintlmage paints the image to the display from memory so as to provide a crisp and quick display on the display screen.
  • the PaintFrame function creates a buffer image within memory, but is accessed by the Paintlmage function to display the image in a quick and efficient manner.
  • FIGS. 29A - 29B show a flowchart illustrating an exemplary method 600, according to one embodiment of the present invention, of generating a display of a sphere within a three-dimensional environment on a display screen.
  • the method 600 also calls other methods, such as the method 550 illustrated in Figure 27.
  • Figure 30 is a flowchart illustrating an exemplary method 650, according to one embodiment of the present invention, of displaying links (or linking lines) within the sphere generated according to the method 600, and of distributing names (or other textual information) on the surface of the sphere.
  • the method 650 is called by the method 600 illustrated in Figures 29A - 29B.
  • Figure 31 is a flowchart illustrating an exemplary method 700, according to one embodiment of the present invention, of displaying node names or other textual information pertaining to nodes within or adjacent facets of a sphere, each of the facets being associated with a respective node.
  • the method 700 is called by the method 600 illustrated in Figures 29A - 29B.
  • Methods of Resizing and Painting an Image Figure 32 includes flowcharts illustrating exemplary methods 710 and 720, according to respective embodiments of the present invention, of re-sizing and of painting an image in the form of the sphere discussed above.
  • Method of Constructing a Memory Map Figure 33 is a flowchart illustrating an exemplary method 750, according to one embodiment of the present invention, of mapping information to memory concerning nodes of a hierarchical data structure.
  • An example of the memory map that may be created utilizing the method 750 is described below.
  • Figure 34 is a flowchart illustrating an exemplary method 800, according to one embodiment of the present invention, of generating facet points on the surface of a sphere.
  • the method 800 described with reference to Figure 34 supplements the method of generating facet points described below.
  • the method 800 is called from the method 500 discussed above with reference to Figure 34.
  • Figure 35 is a flowchart illustrating a method 850, according to one embodiment of the present invention, of generating the display of longitudinal and latitudinal division lines on the surface of a sphere. Such longitudinal and latitudinal divisional lines are illustrated in Figure 2.
  • the method 850 is called from the method 600 discussed above with reference to Figures 29 A - 29B.
  • Method of Distributing Data within a Memory Map Figure 36 is a flowchart illustrating a method 900, according to one embodiment of the present invention, of distributing data concerning nodes of a hierarchical data structure within a memory map and for association with respective facets of a three-dimensional wire frame.
  • the method 900 may be employed to achieve the distribution of data for valid nodes within a memory structure, as described below.
  • FIGs 37- 40 detail methods, according to exemplary embodiments of the present invention, of detecting coordinate locations on the display screen, as indicated by a pointing device (e.g., a mouse).
  • the methods illustrated in Figures 37-40 also detail the mapping of the user indicated set of coordinates onto the sphere 14, so that user selection of a particular facet, and accordingly of a node within the hierarchical data structure, may be determined.
  • Method of Generating and Displaying a Tool Bar Figures 41-48 detail various exemplary methods, according to the present invention, of generating the display of a toolbar, as well as the display of selected buttons within the toolbar.
  • the display buttons are either selectable for the purpose of activating various functions detailed above.
  • Figure 41 details blocks of an exemplary method that may be implemented by an instance of the "Navigate Toolbar” class 271, as shown in Figure 19.
  • the method 800 involves firstly determining the width and height of a toolbar, such as the toolbar 40 shown in Figure 2, to be displayed within the display window 12. Thereafter, the toolbar is created, whereafter button images are loaded and "ImageButton" objects are created. These objects are then added to the toolbar to generate a complete toolbar such as that shown in Figure 40.
  • Figure 42 is an exemplary method that may be embodied within an , "ImageButton” object, and Figures 43-48 detail respective methods of painting an image button on the toolbar 40, and of detecting user selection of a respective image button.
  • FIG. 49 and 50 Exemplary data distribution in memory is shown in Figures 49 and 50. It will be appreciated that where a parent node (represented by the kernel 26 of a sphere 14) has a large number of children, it may not be possible to allocate each child node to a facet 16 at any one time.
  • a predetermined maximum number of nodes that may be allocated to facets 16 of the sphere 14 at any one time may be defined. This predetermined maximum number of nodes may be determined by the maximum number of facets that are defined on the surface of the sphere 14, or may be determined by a maximum number of facets that can be shown to include facet (i.e., data item or node) information without causing the surface of the sphere 14 to become visually cluttered and thus difficult to view and navigate.
  • facet i.e., data item or node
  • memory locations that contain valid data 948 may be distributed with a predetermined density.
  • a predetermined maximum "memory block" size including a predetermined number of valid data items or nodes, within the memory may be selected for display within the sphere 14 at any one time.
  • such a memory block 950 is illustrated, and labeled as the "current location of the sphere". Accordingly, the memory block 950 may conceptually be regarded as providing a limited view of memory locations, the limited view including a predetermined maximum number of memory locations such that the number of memory locations storing valid data that can be mapped to available facets 16 of the sphere 14 is limited.
  • Rotation of the sphere 14, as described above, may comprise moving boundaries of the predetermined memory block 950 block of memory locations that are mapped onto the data sphere. Accordingly, in certain situations where a large number of data items exist within the memory (as illustrated Figure 49) only a selected number of those data items are mapped to facets 16 at a specific time. In this way, the present invention facilitates the viewing and navigation of a number of data items within a single hierarchical level in an unrestricted manner. For example, a larger number of data items can be viewed and navigated using the sphere 14 than there are facets 16 available on the surface of the sphere 14 for allocation to such data items.
  • the boundaries of the memory block will incorporate all memory locations allocated to such data items, and accordingly the view of locations within the memory defined by the memory block will not need to move (i.e., the boundaries of the memory block will not need to be shifted) for the purposes of allowing a user to navigate and view all data items within a memory map.
  • Root is a solid sphere drawn at center of the sphere. . Root name:
  • An exemplary wire frame is consists of 15 longitudes and 15 latitudes, intersection of these results in 225 points.
  • Four neighbor points, labeled A, B, C and D, are combined to construct a facet, such as that illustrated in Figure 51A.
  • phi is incremented by 180 / 15 degrees to calculate points from east to west.
  • theta is incremented by 180 /15 degrees to calculate points from north to south.
  • the center of facet is calculated using formulas below.
  • m _ DFacetDist ⁇ (Ce ⁇ X - ex) * (CenX - ex) + (CenY - cy) * (CenY - cy)
  • m_dFacetDist the center of facet distance to center of the sphere
  • m_facetdistratio is a number between 0 to 9. 0 is closest and 9 furthest to the center of the sphere.
  • Links to child nodes are straight lines drawn from center of the sphere to the center of the facet.
  • Child node facets
  • Child node facets are drawn to fit inside the sphere facet.
  • the size of the child node facet may be proportional to the child count of the node.
  • a delta number is subtracted from each corner of the facet .
  • Parallel lines are drawn to the each side of the sphere facet. This is calculated for each corner of the facet.
  • A'y Ay -dADy
  • Child node names are displayed on the facet. The center of each node name is aligned with the center.
  • Child node links to 2 nd level child nodes:
  • Bezier curve control points are A, B, C, and D points of the facet, which results in a curve is tangent to BC.
  • Coordinate system An exemplary coordinate system use is a 2-dimensional (x y) coordinate system shown in Figure 51E. Its origin is located at the top left corner of the application window. The sphere is placed at the center of the application window.
  • Light source A light source, perpendicular to the screen illuminates the sphere. All components of the sphere are subject to illumination, with the brightest area being the one closest to the viewer. Rotation Rotation may, in alternative embodiments, be implemented in two ways.
  • Facet data rotation Rotating only the node data
  • Finding cursor position on the sphere and locating corresponding facet Reference is made to Figure 52.
  • the formulas to calculate the cursor " position are given above.
  • First cursor position (cx, cy) is checked to determine if it is positioned on the sphere. Then its location is searched through latitudes.
  • slope 972 ⁇ slope 970 and slope 974 ⁇ slope 976 are or, stated alternatively, with respect to Figure 52.
  • the radius of the sphere is calculated to fit into the window.
  • the center of the window is chosen to be the center of the sphere.
  • the sphere size is scaled as the window resized by user. All fonts are scaled according to resize ratio.
  • width and height are an application window's width and height. The smaller of the width and height is chosen as the radius of the sphere.
  • Zoom and Multiple Wire Frames A user may also be presented with the option of zooming a view of a wire frame (e.g., a sphere) to provide an enhanced view of, for example, information presented within a facet, or a text box associated with a facet.
  • a zoom function is to provided multiple wire frames with a single window, or GUI display, that zoom in or out to show, merely for example, successive layers of a data structure.
  • Figures 53 A - 53E show a sequence of exemplary screen prints that illustrates the zooming out, or retreat, of a first wire frame in form of a sphere 1000 and the zooming in, or advance, of a second wire frame in the form of a second sphere 1004.
  • Facets of the first sphere 1000 are, in the illustrated example, assigned to book category links included with a bookstore index web page (e.g., www.amazon.com).
  • a facet 1002 assigned to the "history" category is shown to he highlighted to indicate user selection thereof, and a text box 1003 provides textual information concerning this link.
  • the second sphere 1004 is shown in Figure 53B to be generated and displayed in a superimposed manner over the facet 1002.
  • the second sphere 1004 is increased in size, while the first sphere 1000 is reduced in size, relative to a window as shown in Figures 53C - 53E.
  • facets of the second sphere 1004 are allocated to links of a "history books" web page (e.g., history sub-categories). In this way, the first sphere 1000 is retreated to the background and the second sphere is advanced to the foreground of a display.
  • Figures 54A is a respective flowchart detailing an exemplary method 1010 by which a wire frame in the exemplary form of a sphere may be zoomed in or out.
  • a substantially similar method may be utilized to zoom other wire frame structures.
  • a wire frame having a surface divided into facets may be any two- or three-dimensional form.
  • Figures 55A-55E show an exemplary sequence of screen prints that show a first wire frame in the form of a two-dimensional surface 1020 that is zoomed out (or retreated) and a second wire frame in the form of a two- dimensional surface 1024 is zoomed in (or advanced).
  • Figures 55A-55E are similar to those shown in Figures 53A-53F and illustrate an alternate embodiment of a wire frame.
  • the surfaces 1020 and 1024 may further be a surface of a three-dimensional wire frame, such as a cube.
  • Figure 56 is a flow chart illustrating a method 1030 by which the display of such a cube may be generated.
  • Figure 57 shows a screen print alternate embodiment of advancing and retreating spears 1042 and 1044, wherein the division lines that define facets for the spheres 1042 and 1044 are hidden.
  • Figure 58 is a screen shot showing an even further embodiment of a wire frame in the form of a surface 1050 that is displayed and automatically moved or rotated as part of a banner advertisement embedded within a web page.
  • the surface 1050 is divided into a series of adjacent facets, each facet containing advertisement material.
  • the surface 1050 is then moved either vertically or horizontally so that the facets are rotated past the banner "window".
  • the surface 1050 may be viewed as a closed loop or band that is continually rotating relative to a stationary banner advertisement window.
  • the facets are, in this embodiment, not shown to be linked to a parent node via links and there is accordingly not communication of information regarding a hierarchical positioning of the advertisement material contained in the facets.

Abstract

A method of displaying a data structure (e.g., web site) having a base node (e.g., an index web page) and a number of child nodes (e.g., linked web pages) commences with a spider thread building a distinct memory map for each parent/child node family within the parent/child structure (293). A wire frame view is then defined for the relevant child nodes (294). A number of links are then displayed, each link connecting the graphic representation associated with the base node with a segment of the surface of the multi-dimensional framework that has been assigned to a child node (296).

Description

METHOD AND APPARATUS FOR DISPLAYING AND NAVIGATING A DATA STRUCTURE ON A DISPLAY UNIT
The present application claims the benefit of the filing date of U.S. provisional patent application serial no. 60/115,951 entitled "METHOD AND APPARATUS FOR DISPLAYING AND NAVIGATING A HIERARCHICAL DATA STRUCTURE WITHIN A THREE- DIMENSIONAL ENVIRONMENT ON A DISPLAY UNIT", filed January 14, 1999.
FIELD OF THE INVENTION
The present invention relates generally to the field of data representation on a display screen and, more specifically to the display and navigation of a hierarchy, data tree, or node-link structure within a navigable space represented on a display unit.
BACKGROUND OF THE INVENΗON
The so-cailed "information age" is characterized in that information users are being presented with ever-increasing volumes of information. The presentation format of such information should ideally allow an information user quickly to assess the relevance of a large number of information items, and then efficiently to access information items that are deemed to be of relevance and interest. The broader acceptance of the Internet, specifically the World Wide Web, as an information source has dramatically increased the volume of information that is available to an information user. Information retrieval from this vast source is often facilitated through a search engine, which may present a large number of information items to a user. Further, once a user has access to a particular web site, navigation of the various web pages and other information resources that constitute the web site may be confusing and disorientating. Specifically, the structure of a web site is typically hierarchical, and a user may become disorientated or "lost" within the web site.
Navigation of hierarchical information may also be required in a number of other instances on an everyday basis by a computer user. For example, navigation of file directories for data files and programs stored on a local or remote storage medium is a daily activity for most computer users. Hierarchical information is also typically used to represent the structures of organizations or genealogies.
A number of techniques and methodologies that attempt the presentation of a hierarchy (e.g., a hierarchical data structure) in a compact and intuitive manner have been proposed. These presentation techniques and methodologies may broadly be categorized as providing either two- dimensional or three-dimensional representations of a hierarchical data structure. Both the Windows and Macintosh operating systems developed respectively by Microsoft Corp. of Redmond, Washington, and Apple Computer, Inc. of Cupertino, California, include file directory navigation facilities that provide two-dimensional file directory representations. A hyperbolic two-dimensional representation (termed a "hyperbolic tree") of a hierarchy was developed by Xerox Palo Alto Research Center (PARC), and is detailed in the article J. Lamping, R. Rao, and P. Piolli, "A Focus + Context Technique Based on Hyperbolic Geometry for Visualizing Large Hierarchies", ACM, 1995. This technology is further described in U.S. patent no. 5,139,632, assigned to Xerox Corp. of Stamford, Connecticut. Essentially, this technique comprises laying out a hierarchical data structure in a uniform manner on a hyperbolic plane, and then mapping the display into a circular display region.
A number of three-dimensional representations for hierarchies have also been proposed. For example, the hyperbolic tree discussed above may be presented within a three-dimensional hyperbolic space (e.g., in the interior of a ball) as taught by T. Munzer and P. Burchard, "Visualizing the Structure of the World Wide Web in 3-D Hyperbolic Space", CST 1995. Software developed by Ihxight Software, Inc., a Xerox New Enterprise Company, of Palo Alto, California, namely the Hyperbolic Tree ™ Version 2.0, implements an embodiment of this concept.
A number of other representations of hierarchies within a three- dimensional space have been proposed. For example, Apple Computer, Inc. has developed a visualization tool called "Hot Sauce" that arranges nodes of various levels of a hierarchy in parallel planes located on a Z-axis through which a user can visually advance.
Silicon Graphics, Inc. of Mountain View, California has also developed a web site management tool known as "Site Manager" that consists of two components, namely "Site View" and "Link View". The Link View component allows a user to navigate through a three-dimensional representation of a hierarchy presented in a three-dimensional hyperbolic space. Further details regarding the Link View component are described in the " Site Manager User' s Guide", published by Silicon Graphics, Inc.
Present hierarchical visualization techniques typically suffer from a number of shortcomings. Specifically, a respective technique may attempt simultaneously to display too many nodes of the hierarchy so as to make the display of information concerning each of the nodes difficult. Furthermore, the complex equations required properly to generate a hyperbolic tree, particularly in three dimensions, can be computationally expensive and accordingly result in the generation of the tree representation being unacceptably slow.
SUMMARY OF THE INVENTION
According a first aspect of the invention, there is provided a method of displaying a data structure that had a base node and at least a first child, node. A multi-dimensional framework is displayed on a display device, the multi-dimensional framework defining a volume and having a surface. A graphic representation, associated with the base node, is displayed within the volume defined by the multi-dimensional framework. A first portion of the surface of the multi-dimensional framework is defined as being representative of the first child node. A link, connecting the graphic representation associated with the base node with the first portion of the surface, is displayed so as to represent a parent-child relationship between the base node and the first child node.
There is provided a method of displaying a data structure, having a base (or parent) node and at least a first child node. A three-dimensional framework is displayed on a display device, the three-dimensional framework defining a volume and having a surface. A graphic representation, associated with the parent node, is displayed within the volume defined by the three-dimensional framework. A first portion of the surface of the three-dimensional framework is defined as being representative of the first child node. A link connecting the graphic representation associated with the parent node with the first portion of the surface is displayed so as to represent a parent-child hierarchical relationship between the parent node and the first child node.
The surface of the three-dimensional framework may be divided into a plurality of portions, the first portion of the surface, defined as being representative of the first child node, being selected from the plurality of portions.
A first set of division lines having a first orientation and defining a second set of division lines having a second orientation may divide the entire surface of the sphere into the plurality of portions. In one exemplary embodiment, the three-dimensional framework comprises a sphere, and the first set of division lines comprise a set of circumferential lines intersecting at diagonally opposed first and second poles of the sphere.
The positions of the first and second poles of the sphere may be maintained relative to a fixed coordinate on the display device when rotating the sphere, so as to vary the shape of the first portion of the surface upon rotation of the sphere. In an exemplary embodiment, the second set of division lines comprises a set of parallel surface lines.
The data structure may include a second child node, the first and second child nodes occupying the same level within the data structure relative to the parent node, and the method may include defining a second portion of the surface of the three-dimensional framework as being representative of the second child node so that child nodes of the same level within the data structure are represented by portions of the surface of the three-dimensional framework. In an exemplary embodiment, first and second child nodes are one hierarchical level removed from the parent node, and the method may include defining portions of the surface of the three-dimensional framework as being representative of child nodes one hierarchical level removed from the parent node.
In an exemplary embodiment, the graphic representation of the parent node and the surface portions representative of child nodes, one hierarchical level removed from the parent node, are displayed within a three-dimensional environment.
The three-dimensional framework may comprise a sphere, and the graphic representation associated with the parent node may be displayed at the center of the sphere.
A child graphic representation associated with the first portion of the surface may be displayed, the child graphic representation indicating that the first child node is a parent node relative to a third child node.
A child graphic representation to indicate that the first child node is a parent node relative to a first set of child nodes may be displayed.
The child graphic representation may indicate the number of child nodes within the first set of child nodes. In an exemplary embodiment, the child graphic representation is displayed as a core having a number of spokes, representative of the number of child nodes within the first set, emanating therefrom.
User selection of the first portion of the surface of the three- dimensional framework may be detected, and a text window may be displayed responsive to the detection of the user selection, the text window including a text description of the first child node. The detection of the user selection may comprise detecting the location of a user-controlled cursor on the display device.
A text window including text descriptive of the parent node associated with the graphic representation may optionally be displayed within the volume defined by the three-dimensional framework.
A determination may be made as to whether the first child and the parent node are located within a common web site and, if not, a link may e displayed in accordance with the location of the first child within or outside the common web site. A user preference with respect to the display of links between nodes located within the common web site and nodes located outside the common web site may be ascertained.
Multiple three-dimensional frameworks may be displayed on the display device, each three-dimensional framework defining a volume and having a surface, and displaying a respective graphic representation associated with a respective parent node within each volume defined by each of the respective three-dimensional frameworks.
According to a second aspect of the invention there is provided a method of displaying a data structure including first, second and third hierarchical levels of nodes. A first graphic representation associated with a first node of the first hierarchical level is displayed within a three- dimensional display environment on a display device. A second graphic representation associated with a second node of the second hierarchical level is displayed within the three-dimensional display environment, the second node comprising a child node of the first node within the data structure. A link representation representing a hierarchical relationship between the first and second nodes is displayed. In response to a selection of the second node, the first graphic representation is removed from the three-dimensional display environment, a third graphic representation associated with a third node of the third hierarchical level is displayed within the three-dimensional display environment, and a link representing a hierarchical relationship between the second and third nodes is displayed, the third node comprising a child node of the second node within the data structure.
The first graphic representation may be displayed within a volume defined by the three-dimensional framework, and the second graphical representation may be displayed on a surface defined by the three- dimensional framework.
The second graphical representation may be defined as comprising a portion of the surface defined by the three-dimensional framework.
The first graphic representation may be displayed at a position corresponding substantially to the center of the volume defined by the three-dimensional framework.
In response to the selection of the second node, the second graphic representation may be displayed at a position corresponding substantially to the center of the volume defined by the three-dimensional framework.
In response to the selection of the second node, the first graphic representation may be defined to comprise a portion of the surface defined by the three-dimensional framework.
The data structure may include a first set of nodes within the second hierarchical level; the method may comprise automatically designating successive nodes within the first set of nodes as a selected node within the second hierarchical level.
In an exemplary embodiment, the automatic designation includes designating a node of the first set of nodes as the selected node and then designating a further node of the first set of nodes as the selected node after a predetermined time interval.
The data structure may include a first set of nodes within the second hierarchical level; the method may comprise designating successive nodes within the first set of nodes as a selected node responsive to a user-activated advance signal.
According to a third aspect of the present invention, there is provided a method of displaying a data structure including first, second and third hierarchical levels of nodes. A first graphic representation of a first parent node of the first hierarchical level is displayed within a three- dimensional display environment on a display device. A respective graphic representation for each node of a first set of child nodes is displayed, each node of the first set of child nodes comprising a child node of the first parent node. A respective link representation representing a hierarchical relationship between each node of the first set of child nodes and the first parent node is displayed. In response to a selection of a selected node of the first set of child nodes, only the following graphic representations associated with nodes are displayed: (1) a second graphic representation associated with the selected node, and (2) respective graphic representations for each node of a second set of child nodes, each node of the second set of child nodes comprising a child node of the selected node. Respective link representations representing a hierarchical relationship between each node of the second set of child nodes and the selected node are displayed.
According to a third aspect of the present invention there is provided a method of displaying a graphical representation of a data structure on a display screen. Access of a first data item, utilizing a browser application or a viewer application, of a data structure is detected, the first data item including a reference to a second data item. A node-link representation of a data relationship between the first and second data items in a three- dimensional environment, and the first data item, are displayed utilizing the viewer application and the browser application, respectively, in a synchronous manner.
The first data item may be a file including a hypertext link to the second data item, such as an SGML, HTML, XML, or VRML file.
The browser application may be located or identified within a computer system. The browser application may be identified as being a first or second browser application type.
The viewer application may query or poll the browser application to identify a data item accessed utilizing the browser application. The query or poll activity may occur on a continuous and regular basis to maintain a constant state of synchronization during the browser application and the companion viewer application.
According to a further aspect of the present invention there is provided a method of displaying a graphical representation of a data structure on a display screen. The data structure includes a plurality of nodes that are allocated to locations within a memory space, the allocation being performed with a predetermined density. A predetermined maximum number of memory locations, at least some of which may store node information, is defined as constituting a wire frame view. For example, the maximum predetermined number of memory locations may be determined by the maximum number of facets of a three-dimensional wire frame that are available for allocation to nodes of the data structure. The maximum number of facets of the three-dimensional wire frame that are available for allocation may alternatively be determined according to a predetermined visual requirement. In situations where the plurality of nodes is distributed within the memory space such that each of the plurality of nodes cannot be accommodated within the wire frame view, the wire frame view may be moved or re-defined so as to facilitate navigation and display of all of the plurality of nodes. The movement of the wire frame view may occur in response to, merely for example, rotation of the three- dimensional wire frame. The rotation of the three-dimensional wire frame may be responsive to user input, or may be automated.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
Figure 1 is a tree diagram illustrating an exemplary data structure in the form of a hierarchy including data items that constitute a portion of a web site.
Figure 2 is a screen print illustrating a display, according to an embodiment of the present invention, of at least a portion of a hierarchical data structure within a three-dimensional environment.
Figures 3 - 13 are screen prints illustrating navigation of a hierarchical data structure utilizing a wire frame in the exemplary form of a sphere and also illustrating visual effects caused by the invoking of a number of functions provided by an exemplary embodiment of the present invention.
Figure 14 is a diagrammatic representation of a machine, in an exemplary form of a computer system, within which a set of instructions for causing the machine to perform any one of the methodologies of the present invention may be executed. Figure 15 is a block diagram illustrating exemplary operation of a viewer program that may generate a wire frame and data for display within the context of the wire frame, according to one embodiment of the present invention.
Figure 16 is a block diagram illustrating further exemplary operation of a viewer program within the context of a browser program, according to one embodiment of the present invention.
Figure 17 is a block diagram illustrating further exemplary useage of a viewer program, where separate and distinct browser and viewer programs exist according to one embodiment of the present invention.
Figures 18A - 18C are block diagrams illustrating an exemplary message and data exchange between a viewer program and a browser program to facilitate interaction and synchronization of programs, according to an exemplary embodiment of the present invention.
Figure 19 is a block diagram illustrating various components that communicate with, are included within, an exemplary embodiment of a viewer program.
Figure 20 is a block diagram showing further details regarding variables that are maintained by an exemplary view thread and an exemplary spider thread.
Figures 21A - 21C provide high-level representations of the functioning of a viewer program, according to an exemplary embodiment.
Figure 22 is a flow chart illustrating a method, according to an exemplary embodiment, of displaying a hierarchical data structure within a three-dimensional environment.
Figures 23A - 23B show a flow chart illustrating an exemplary embodiment of a MAPBROWSER function. Figure 24 is a flow chart illustrating a method, according to an exemplary embodiment, that may be performed by a spider thread to identify the nodes and structure of a hierarchical data structure for display within a wire frame by a view thread.
Figure 25 is a flow chart illustrating a method, according to an exemplary embodiment, that may be performed to parse an HTML document.
Figure 26 is a flow chart illustrating an exemplary method of displaying a three-dimensional wire frame on a display screen.
Figure 27 is a flow chart illustrating an exemplary method of displaying a child node facet within a facet of a three-dimensional wire frame displayed on a display screen.
Figure 28 is a block diagram providing an architectural overview of a wire frame in the form of a sphere.
Figures 29A - 29B show a flow chart illustrating an exemplary method of generating a display of a wire frame in the form of a sphere within a three-dimensional environment on the display screen.
Figure 30 is a flow chart illustrating an exemplary method of displaying links within a sphere and attributing textual information on the surface of a sphere.
Figure 31 is a flow chart illustrating an exemplary method of displaying textual information pertaining to nodes within or adjacent facets of a sphere.
Figure 32 shows flow charts illustrating exemplary methods of resizing and painting an image in the form of a sphere.
Figure 33 is a flow chart illustrating an exemplary method of mapping information to memory concerning nodes of a hierarchical data structure. Figure 34 is a flow chart illustrating an exemplary method of generating facet points on the surface of a sphere.
Figure 35 is a flow chart illustrating a method of generating the display of longitudinal and latitudinal division lines on the surface of a sphere.
Figure 36 is a flow chart illustrating a method of distributing data concerning nodes of a hierarchical data structure within a memory map and for association with respective facets of a three-dimensional wire frame.
Figures 37 - 40 detail exemplary methods of detecting coordinate locations on the display screen as indicated by a cursor control device.
Figures 41 - 48 detail various exemplary methods of generating the display of a tool bar.
Figures 49 and 50 illustrate the exemplary distribution of data regarding nodes within a memory structure.
Figures 51A - 51E illustrate various steps, according to an exemplary embodiment, performed to draw a sphere.
Figure 52 illustrates locating a cursor position on a sphere.
Figures 53 A - 53E illustrate an sequence of exemplary screen prints that show the zooming out of a first wire frame and the zooming in of a second wire frame, both the first and second wire frames being in the form of spheres.
Figure 54 shows a flow chart detailing an exemplary method by which a wire frame may be zoomed in or out.
Figures 55A - 55E show a sequence of exemplary screen prints that show a wire frame in the form of a two-dimensional surface that is zoomed out while a second wire frame in the form of a two-dimensional surface is zoomed in.
Figure 56 is a flowchart illustrating an exemplary method of generating the display of a wire frame in the form of a cub.
Figure 57 is a screen shot showing a further embodiment of a sphere for which division lines that define facets on the surface thereof are not visible.
Figure 58 is a screen shot showing an even further embodiment of a wire frame in the form of a surface that is displayed and automatically rotated as part of a banner advertisement embedded within a web page.
DETAILED DESCRIPTION
A method and apparatus for displaying and navigating a data structure on a display unit are described. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be evident, however, to one skilled in the art that the present invention may be practiced without these specific details.
In an exemplary embodiment, the actions of the present invention are embodied in machine-executable instructions. The instructions can be used to cause a general-purpose or special-purpose processor that is programmed with the instructions to perform the blocks of the present invention. Alternatively, the actions of the present invention might be performed by specific hardware components that contain hardwired logic for performing the actions, or by any combination of programmed computer components and custom hardware components. The present invention may be provided as a computer program product which may include a machine-readable medium having stored thereon instructions which may be used to program a computer (or other electronic devices) to perform a process according to the present invention. The machine- readable medium may include, but is not limited to, floppy diskettes, optical disks, CD-ROMs, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, flash memory, or other types of media/machine-readable medium suitable for storing electronic instructions. Moreover, the present invention may also be downloaded as a computer program product, wherein the program may be transferred from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., a modem or network connection).
Overview
For the purposes of the present specification, the term "hierarchy" shall be taken to include, but not be limited to, hierarchical data structures, tree structures or node-link structures. In an embodiment, a hierarchy includes a collection of data nodes, each node comprising a discrete data item. The nodes may be arranged in a number of levels, with each node in a level having only a single and unique parent node, relative to which it is a child node. However, the invention shall be taken to be applicable to web structures, wherein each child node may have more than a single and unique parent node. A child node may include a pointer to one or more parent nodes, a parent node may include a pointer to one or more child nodes, or both parent and child nodes may include pointers to each other.
Figure 1 is a tree diagram illustrating an exemplary hierarchy 2 including data items that constitute a portion of a web site (i.e., the web site for the United States Patent and Trademark Office). The hierarchy 2 includes a root node 3 that constitutes the index page for the web site. The root node 3 is shown to have at least 3 child nodes, namely nodes 4, 5 and 6. Node 5 (i.e., the Database Page) is shown to be a parent node relative to a further group of child nodes 7, 8 and 9. The root node 3 may be regarded as being on a first hierarchical level, the nodes 4, 5 and 6 may be regarded as being on a second hierarchical level, and the nodes 7, 8 and 9 may be regarded as being on a third hierarchical level. The hierarchy 2 shown in Figure 1 shall be utilized in the description below for the purposes of illustrating the generation of a representation of a hierarchical data structure within a three-dimensional environment, potentially displayed on a two-dimensional display screen.
Figure 2 is a screen print illustrating a display 10, generated according to an exemplary embodiment, of at least a portion of a hierarchical data structure within a three-dimensional environment, which is displayed within a two-dimensional display window 12. The display 10 includes a wire frame (or framework) in the exemplary form of a sphere 14 (or ball or globe) having an outer surface divided into a number of facets by latitudinal and longitudinal division lines 18 and 20 that traverses the surface of the sphere 14. In other embodiments of the present invention, the wire frame may comprise any two- or three-dimensional structure having a surface that is divided into a number of facets. For example, the wire frame may comprise a cube or a two-dimensional panel, or an other well known two - or three-dimensional shape of form.
The latitudinal division lines 18 are arranged in parallel bands, and when viewed from either one of poles 22 or 24 of the sphere 14 would appear as a series of concentric circles. The longitudinal division lines 20 extended circumferentially around the surface of the sphere 14, and all intersect at the respective poles 22 and 24 of the sphere 14. Accordingly, the latitudinal division lines 18 may be regarded as having a first orientation relative to each other wherein each is located in a parallel plane. The longitudinal division lines 20 may be regarded as having a second orientation relative to each other wherein each is located in a plane that intersects other planes along a diagonal extending through the sphere 14 between the poles 22 and 24.
The sphere 14 accordingly defines a volume within the three- dimensional environment, and a first visual representation, in the form of a small kernel 26, is located at the conceptual center of the sphere 14. In one embodiment, the small kernel 26 represents the parent node of a number of child nodes each associated with a specific facet 16 defined on the surface of the sphere 14 by the division lines 18 and 20. For example, as illustrated in Figure 1, the parent node represented by the kernel 26 may be the index page (e.g., HTTP://USPTO.GOV/
INDEX.HTM) of a web site, such as the web site operated by the United States Patent and Trademark Office. Accordingly, it will be appreciated that only a single parent node, represented by the kernel 26, and a group of child nodes, each represented by and associated with a distinct facet 16 of that single parent node are displayed utilizing the sphere 14. By only representing a single parent-child node family, the present invention avoids presenting too much information, which may otherwise overwhelm a user, within the display window 12. Furthermore, by only displaying a single parent-child family, the present invention allows more textual information regarding each node to be displayed within the display window 12.
A text description of the parent node represented by the kernel 26 is presented in the bottom left hand corner of the display window 12, as indicated at 28. As mentioned above, each of the facets 16 defined on the surface of the sphere 14 may be associated with a child node of the node represented by the kernel 26. Accordingly, a linking line 28 may be displayed extending from the kernel 26 to the center of each facet 16 associated with a child node. Further, each facet 16 associated with a child node may include a textual description 30 of the relevant node. For example, the facet 16 is shown to have a textual description 30 (i.e., "Office of Enrollment and Discipline") displayed at a position slightly above the center of the relevant facet 16. It should also be noted that, for facets 16 that are located at an off-center position within the display window (i.e., off- center in accordance with the perspective of the sphere 14 provided within the display window 12), the textual descriptions 30 associated with such facets 16 are of reduced in size relative to the textual descriptions 30 of facets 16 that are located towards the center (i.e., in the foreground) of the . view provided within the display window 12.
It will also be noted that a single linking line 28 extending between the kernel 26 and one of the facets 16 is visually differentiated from the other linking lines 28. For example, in Figure 2, the linking line 28 extending between the kernel 26 and the "Office of Enrollment and Discipline" facet 16 is highlighted. The highlighted linking line 28 indicates that the facet 16 is an "active" or selected facet 16, and a number of operations and functions, specified using the control or navigation buttons in the toolbar 40, may be executed with respect to a node associated with the active facet 16. A brief description of each of the functions with respect to the sphere 14 that may be invoked utilizing the buttons within the toolbar 40 will now be described. The described functions may furthermore also be invoked from drop-down menus associated with the "File", "Edit", "Navigation", "Options" and "Help" menu headings presented above the toolbar 40.
Overview of Navigation of a Hierarchical Data Structure Utilizing the
Sphere In summary, a user is able to navigate nodes, within a single level of a hierarchical data structure and having a common parent node, by rotation of the sphere 14 so as to locate a facet 16 associated with a node in the foreground of the display shown within the display window 12. This rotation of the sphere 14 may be accomplished in a number of ways, as will be described in further detail below. Essentially, a user is able to rotate the sphere by performing a drag-and-rotate function on the sphere by locating a cursor at a first position on the sphere, depressing a select button associated with the cursor, and moving the cursor using a pointing device from the first location to a second location while maintaining the depressed state of the select button. Where the first and second locations, for example, are along a vertical line, the sphere 14 will be rotated around a horizontal axis. Similarly, where the first and second locations are located along a horizontal line, the sphere 14 will rotate around a vertical axis. Of course, the first and second locations could be located along a line that is inclined relative to the display window 12, in which case the sphere 14 will be rotated around an axis that is perpendicular to the line connecting the first and second points. Alternatively, the display window 12 provides a number of manners in which a user can automatically rotate the sphere 14 so as to bring facets 16 associated with nodes to the foreground of the view within the display window 12. Further details regarding the automatic rotation of the sphere 14 are discussed with reference to the buttons included in toolbar 40 that may be utilized to invoke these automatic functions.
A map root node button 50 may be user selected to cause the root node of a particular hierarchical data structure (e.g., the index page of a web site) to be assigned to the kernel 26. In other words, the map root node button 50 returns the display presented by the sphere 14 to the highest 2 level of the hierarchical data structure, wherein the root node is regarded as the center of the sphere 14, and nodes that are child nodes relative to the root node are assigned to facets 16 of the sphere 14. This feature is useful in that it allows a user, who may have descended through a number of levels of a hierarchical data structure, to quickly and in a relatively effortless manner to return to the root node and second level of the hierarchical data structure.
A map parent node button 52 may be user selected to retreat the display of a portion of a hierarchical data structure displayed within and by the sphere 14 by one level. Specifically, upon selection of the map parent node button 52, a node that is associated with the kernel 26, and that constitutes the parent node of nodes currently assigned to the facets 16, will then be regarded as a child node within a subsequent display. Accordingly, a first parent node of the family displayed in a first view will be assigned a facet 16, and a second parent node relative to the first parent node will be assigned to the kernel 26, and a second view within the sphere 14 will be generated accordingly.
A map selected node button 54 may be user selected to advance the display of a portion of a hierarchical data structure displayed within the sphere 14 by one level. Specifically, upon selection of the advance level button 60, a node associated with the single "active" facet 16 within a first view will become the parent node of a second, subsequent view, and accordingly be represented by the kernel 26 at the center of the sphere 14. Child nodes of the node represented by the active facet 16 in the first view will be assigned to distinct facets 16 on the surface of the sphere 14 in the subsequent, second view generated responsive to the user selection of the map selected node button 54.
A stop button 56 may be user selected to terminate the generation of a further view, or to terminate the automatic rotation of the sphere 14 (or rotation of the data within the sphere 14), as will be described in further detail below.
Step advance and step retreat buttons 60 and 58 are user selectable to advance or retreat the display of a facet 16, associated with a child node, with respect to the foreground (or other predetermined) location within the view provided within the display window 12. The selection of a buttons 60 or 58 also has the effect of causing the facet 16 displayed at the foreground location to be designated as the active facet 16. For example, referring to Figure 1, were node 3 to be viewed as the parent node, and accordingly represented by the kernel 26, the nodes 4, 5 and 6 would be represented by respective facets 16 on the surface of the sphere 14. By selecting the step advance or step retreat buttons 60 or 58, the sphere 14 would be rotated so that facets 16 associated with the nodes 4, 5, and 6 would sequentially and in a step-wise manner be located at (or at least towards) the center of the view (or foreground) provided within the display window 12 by rotation of the sphere 14, and also sequentially designated as the active facet 16. To this end, the nodes 4, 5 and 6 are assigned a sequential order, and may each include a forward pointer, a backward pointer, or both a forward and backward pointers that implement this sequential order. User selection of the step advance button 60 will cause facets 16, associated with the nodes 4, 5 and 6, to be displayed in the order determined by the sequential order in one (forward) direction, and user selection of the step retreat button 58 will cause the facets 16 to the displayed in an order determined by the sequential order in an opposite (backward) direction. Accordingly, the step advance and step retreat buttons 60 and 58 allow a user to navigate between nodes, located on a particular level of the hierarchy and sharing a common parent node, in a convenient manner.
Auto forward and auto backward buttons 64 and 62, respectively, are again user selectable to initiate an automatic advance or retreat function, whereby the facets 16 associated with nodes are sequentially advanced to the foreground of the view presented within the display window 12, and maintained in the foreground position for a predetermined time, before a subsequent facet 16 associated with a node is advanced to the foreground position. Again, the order in which the facets 16 are displayed is determined by a sequential order assigned to the associated nodes and the direction in which this sequential order is traversed. The auto advance and /or retreat functions provide a convenient manner for a user to scan a group of child nodes of a specific parent node within the hierarchical data structure.
A map browser location button 66 is user selectable to invoke a function whereby a viewer program 200, that generates the display of the sphere 14 and the data therein, is synchronized to display a portion of hierarchical data structure that is being viewed utilizing a further independent program, such as for example a browser program. Examples of commercially available browser programs include the Netscape Navigator, developed by Netscape Communications Corp. of Mountain View, California and the Microsoft Explorer, developed by Microsoft Corp. of Redmond, Washington. For example, the viewer program 200 may be synchronized to regard a first web page, or first web location, currently being displayed in a browser program as a parent node represented by the kernel 26, and to regard web pages to which the web page includes hypertext links as child nodes of the parent node. Accordingly, facets 16 will be associated with each web page to which the first web page includes a hypertext link. The synchronization function invoked by the map browser location button 66 requires that, for example, a Uniform Resource Locator (URL) of the web page currently being displayed by the browser program be exported from the browser program to the viewer program. Further details regarding how this may be implemented within an exemplary embodiment are provided below. A set browser location button 68 is user selectable to invoke a function whereby a browser program is synchronized to display a portion of a hierarchical data structure that is currently being displayed by the viewer program 20 within the display window 12. This synchronization function requires that, for example, a URL of a web page that currently constitutes the kernel 26 of the sphere 14 be displayed within the browser program. Further details regarding how this may be implemented within an exemplary embodiment are also provided below.
An external links button 70 is user selectable to invoke a function within the viewer program 200 whereby external nodes, that may be referenced by nodes within the hierarchical data structure but are not included within the hierarchical data structure, may be viewed, utilized, or ignored by the viewer program 200. Specifically, a user can optionally invoke or disable the external link view function so that external nodes are. displayed or not displayed within the context of the sphere 14. For example, where the hierarchical data structure comprises a web site, utilizing the external links button 70 a user can selectively view or ignore links within a web page comprising the parent node to nodes outside a particular web site (e.g., outside the web site of the U.S. Patent and Trademark Office).
A synchronize button 72 is user selectable to invoke a function whereby the viewer program 200 and an external program, such as a browser program 202, are synchronized with each other in an automatic and continual manner.
A clear search results button 76 is user selectable to invoke a "Clear Search Results" function that clears the results of a search previously performed. Specifically, in one exemplary embodiment, the "Clear Search Results" function may traverse a hierarchical tree and set a "SearchResult" flag for each instance of a "TreeNode" object to false.
The display window 12 also includes a URL window 78, wherein a directory, file or web location name may be inputted or displayed. For example, the URL of a web site represented by the kernel 26 may be displayed within the URL window 78. A find field 74 allows a user to perform a search of the textual descriptions associated with each of the facets 16 of the sphere 14. On locating a match between a search string inputted into the find field 74, a viewer program 200 will then position a facet 16 having textual description that matches the search string in a foreground position within the view provided within the display window 12.
Figures 3-13 are screen prints visually illustrating navigation of a hierarchical data structure utilizing the sphere 14, according to an exemplary embodiment, and also illustrating the visual effects of invoking a number of the functions discussed above. Figure 3 illustrates a textual description box 80 containing, for example, the title of a web page associated with the active facet 16. The box 80 may be displayed proximate the active facet 16 in response to a user locating a cursor over or on the relevant facet 16. It will also be noted that the portions of the division lines 18 and 20 that bound the active facet 16 are highlighted visually to distinguish the active facet 16 from surrounding facets 16. Further, in response to the user selection of the active facet 16, an enhanced textual description box 82 may be displayed in the bottom right-hand corner of the display window 12. The enhanced textual description box 82 may include further information beyond merely a title of a data item associated with the active facet 16, and may, for example, include a description of the web site provided by a search engine in the case where the hierarchical data structure comprises the results of a web search.
Figure 4 illustrates an example of an altered display within the display window 12 as a result of the rotation of the sphere 14 shown in Figure 2. This rotation of the sphere 14 may be achieved utilizing any one of the automatic rotation functions described above, or by performing a drag-and-rotate function utilizing a cursor and pointing device. For example, the find field 74 is shown to include the word "database" in Figure 4, and the sphere 14 may have been rotated to illustrate the facet 16 for a node having a title including the word "database", as located by a textual search.
Referring back to Figure 2, it is apparent that the facet 16, associated with the node 5 shown in Figure 1, has now been moved to the foreground, and is selected as an active facet 16, as denoted by the highlighted division lines 18 and 20 that bound the relevant facet 16. It will also be noted that the facet 16 for the node 5 includes a child-indicating icon 90 that identifies the node 5 as being a parent node relative to further child nodes. In one exemplary embodiment, the child-indicating icon 90 (also termed a "child node facet") comprises a polygon having a shape corresponding substantially to the shape of the facet 16 within which it is contained. The icon 90 includes a number of radial spokes, each of which is representative of a child node. Accordingly, the radial spokes within the icon 90 provide an indication of the number of child nodes. A user is thus quickly and conveniently able to identify those facets 16 of the sphere 14 associated with nodes having child nodes. A user can thus "map" the selected node by selecting the button 54 presented in the toolbar 40, or by selecting an appropriate item within a navigation menu 100, as illustrated in Figure 5. For example, were a user to select the facet 16 associated with node 5 (i.e., the "Databases: Patent, Bibliographic and AIDS" node) to be mapped, node 5 would be mapped to the kernel 26 of the sphere, and child nodes of node 5 (i.e., nodes 7, 8 and 9) would be mapped to respective facets 16 of the sphere 14, as shown in Figure 6.
Figure 7 illustrates a user selection of a "Show Next Node" item within the navigation menu 100, which has the same effect has selecting the step advance button 60 described above with reference to Figure 2. Specifically, the invoking of this function causes the sphere 14 to be rotated so that a facet (associated with a next node, according to a predefined sequential order, within the third level of the hierarchical data structure shown in Figure 2) is advanced to the foreground of the display window 12. This is shown to have occurred in Figure 8 responsive to selection of the "Show Next Node" item within the menu 100, where the "Patent and Trademark Depository" facet 16 associated with an appropriate node on level 3 of the hierarchical data structure 2 is advanced to the foreground. Figure 8 also illustrates an "Options" drop-down menu 102, embodying a number of items corresponding to buttons included within the toolbar 40. In Figure 8, a "Show External Links" item within the drop-down menu 102 is shown to be marked as active, accordingly indicating that external nodes to which the data item represented by the kernel 26 has links will be assigned facets 16 on the sphere 14. Such facets 16 will furthermore be shown to be linked to the kernel 26 by appropriate linking lines 28. Figure 9 illustrates the effect of de-activating the external link display function (e.g., by double clicking on the "Show External Links" item within the menu 102). Specifically, it can be seen that the text associated with a number of facets 16 that were previously assigned to external links has been removed, as have been linking lines 28 connecting such facets 16 to the kernel 26.
Figures 10-13 illustrate a sequence of screen prints showing the rotation of the sphere 14 about a substantially horizontal axis responsive to a user drag-and-rotate operation using a cursor directed by a pointing device operated by a user. It will be noted that as the sphere 14 is rotated in the direction indicated by the arrow 104, text will be moved from the upper pole 22 of the sphere 14 towards the lower pole 24. As the text moves towards a pole 22 or 24 from a central region of the sphere 14, the size and intensity of the text is decreased. The same holds true for text that moves away from the central region of the sphere 14 responsive to a horizontal rotation of the sphere 14. It will also be noted that, in Figures 10-13, the "Patent Number Search" facet 16 is the active facet, and accordingly the linking line 28 coupling the relevant facet 16 to the kernel 26 is highlighted. It can be seen from Figures 10-13 how the highlighted linking line 28 is rotated about the kernel 26 as the sphere 14 is rotated in the direction indicated by the arrow 104.
Further specific details are provided below regarding exemplary methods by which the sphere, as described above, may be generated, rotated and navigated. Specifically, exemplary methods of drawing the sphere 14 (including the facets and child node facets described above), establishing a coordinate system, defining the orientation of a light source relative to the sphere, rotating the sphere and data facets, locating a cursor position of the sphere and locating a corresponding facet, scaling the sphere, and performing a data distribution within a memory of a computer system are each described below. The software modules, objects and functions described below, in one exemplary embodiment, implement these methods. It will be appreciated that the methods described in the Addendum 1 may be performed by a software application having any architecture, or a combination of software and hardware.
Computer System Figure 14 shows a diagrammatic representation of a machine in the exemplary form of a computer system 120 within which a set of instructions, for causing the machine to perform any one of the methodologies discussed above or below, may be executed. The computer system 120 includes a processor 122, a main memory 124 and a static memory 125, which communicate with each other via a bus 126. The computer system 120 is further shown to include a video display unit 128 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)). The computer system 120 also includes an alphanumeric input device 130 (e.g., a keyboard), a cursor control device 132 (e.g., a mouse), a disk drive unit 134, a signal generation device 136 (e.g., a speaker) and a network interface device 138. The disk drive unit 134 includes a machine-readable medium 135 on which is stored a set of instructions (i.e., software) 140 embodying any one, or all, of the methodologies described herein. The software 140 is also shown to reside, completely or at least partially, within the main memory 124 and /or within the processor 122. The software 140 may further be transmitted or received via the network interface device 138.
Software Architecture and Data Structures Figure 15 is a block diagram illustrating a first exemplary usage 190 of a viewer program 200, according to an exemplary embodiment, that may generate the sphere and data for display of a hierarchical data structure, as discussed above with reference to Figures 1-13. The viewer program 200 and a browser program 202 are each shown to be hosted on, and executed within, a computer system 120, such as that illustrated in Figure 14. The computer system 120 is shown to be coupled to the Internet 204, for example, via the. network interface device 138. Accordingly, the browser program 202 and the viewer program 200 can access a web site 206. The viewer program 200 and the browser program 202 are shown to be separate and distinct programs that communicate utilizing Dynamic Data Exchange (DDE) messages 208. DDE is an interprocess communication system that is well known in the art, and that enables two running applications to share the same data. Each of the DDE messages 208 may include a DDE application name, a DDE topic and a DDE item name. In the exemplary usage 190, the browser program 202 may be the Netscape Navigator browser program, and further information regarding the DDE implementation for this specific browser program can be found at the following URL:
HTTP: // developer 1 /Netscape.com/ docs /manuals / Communicator /DDE / abtdde.htm.
Figure 16 is a block diagram illustrating a second exemplary usage 192, wherein a viewer program 200, according to an exemplary embodiment, is operated within the browser program 202. In the usage 192, the requirement for DDE messages is dispensed with, and the browser program 202 and the viewer program 200 may share a common memory space. Figure 17 is a block diagram providing further details of the exemplary usage 190, wherein separate and distinct browser and viewer programs 202 and 200 exist. Figure 17 illustrates the programs 200 and 202 communicating via a DDE Application Program Interface (API) 212 and an operating system, such as the Windows ® operating system (OS) developed by Microsoft Corporation. Specifically, the viewer program 200 is shown to include a Java DDE emulator 216 that communicates with a Java Virtual Machine 218 included within the operating system 214, the Java Virtual Machine 218 then communicating with the DDE API 212. The DDE API 212 is also in communication with a DDE server 220, included within the operating system 214. The DDE server 220 in turn communicates with the browser program 202, thereby establishing a communication channel between the viewer program 200 and the browser program 202.
Figures 18A-18C are block diagrams illustrating an exemplary message and data exchanges between the viewer program 200 and the browser program 202 to facilitate the interaction and synchronization of the programs 200 and 202, as discussed above. Specifically, Figure 18A illustrates a message and data exchange whereby the viewer program 200 locates and identifies a browser program 202, with which it can communicate and which is displaying a data item (e.g., in the form of an HTML document). The viewer program 200 issues a "Find Browser" message 204 to the DDE API 212, that translates the message 204 into a "WWW _ Windowlnfo" message 242 for communication to the browser program 202. The message 242 is structured as specified by the DDE implementation of the relevant browser program 202. Responsive to the message 242, the browser program 202 then propagates a data message 244 to the DDE API 212, the message 244 including a browser name, a URL identifying a web site currently being accessed by the browser program 202, and possibly a URL Title identifying a markup language document being displayed by the browser program 202. The DDE API 212 then constructs a "Browser Name" message 246 utilizing the information contained within the message 244, the message 246 then being communicated to the viewer program 200.
Figure 18B illustrates a message and data exchange whereby the viewer program 200 interrogates the browser program 202 to learn an updated URL, and URL Title, for a web location being accessed via the browser program 202, for the purpose of synchronizing the viewer program 200 to the browser program 202. This may be performed to implement a "Map Browser Location" function that may be invoked by a user utilizing the drop-down menu 102 shown in Figure 9, or utilizing the button 66 included in the toolbar 40. The viewer program 200 issues a " Get New URL" message 248 to the DDE API 212, that is translated into a "WWW _ Window Info" message 242 responsive to which the browser program 202 again propagates the data message 244. The DDE API 212 then forwards only the URL and URL Title information 250 to the viewer program 200.
Figure 18C illustrates a message and data exchange whereby the viewer program 200 issues a URL to the browser program 202 for the purpose of synchronizing the browser program 202 to the viewer program 200. This may be performed to implement a "Set Browser Location" function that may be invoked by a user utilizing the drop-down menu 102 shown in Figure 9, or utilizing the button 68 included in the toolbar 40. The viewer program 200 issues a " Set Browser URL" message 252 to be DDE API 212, the message 252 specifying a URL of a web site that is currently being displayed as the kernel 26 of the sphere 14. The DDE API 212 then issues "WWW _ Activate" and "WWW _ Open URL" messages 254 and 256 to the browser program 202. Responsive to the messages 254 and 256, the browser program 202 will be activated to access' a web location identified by the URL that was included in the message 252. The browser program 202 then communicates the result of an access operation (i.e., success or failure) to the viewer program 200 via the DDE API 212.
Figure 19 is a block diagram illustrating the various components that communicate with, and are included within, an exemplary embodiment of the viewer program 200. Components (e.g., input and output) external to the viewer program 200 include user input information 240, which may be supplied to a computer system 120, for example, via the alphanumeric input device 130 or the cursor control device 132, a network 262 (e.g., the Internet, a Local Area Network (LAN) or a Wide Area Network (WAN)) via which is the viewer program 200 may communicate with other computer systems for the purposes of identifying a hierarchical data structure (e.g., a web site), a local file system 264 that the viewer program 200 may again access for the purpose of identifying a hierarchical data structure, and a display 268 such as the video display unit 128 of the computer system 120 shown in Figure 14. Two core components of the viewer program 200 include a view thread 270 and a spider thread 272. The view thread 270 is essentially responsible for generating the display of the sphere 14 and for displaying the above- described visual representation (hereinafter referred to as a "tree") of a hierarchical data structure within the context of the sphere 14. The spider thread 272 is responsible for identifying the nodes and structure of a hierarchical data structure, and for generating a memory-mapped representation of this hierarchical data structure that is accessed and utilized by the view thread 270 when generating a display. To this end, the spider thread 272 is shown to access the network 262 or the file system 264 for the purposes of obtaining information regarding a hierarchical of data structure (e.g., a web site or file directory). The spider thread 272 is shown to interact with a "Tree" class 277 and a "TreeNode" class 276. Specifically, the spider thread 272 creates a TreeNode object as a root (e.g., from a URL) that is provided to the spider thread 272 by the view thread 270. The spider thread 272 creates at tree, and sets the root as part of that tree. In addition, the spider thread 272 creates a TreeNode object for every link (e.g., a hypertext link) that exists from the relevant parent node to a respective child node. In this way, the spider thread 272 is able to construct a hierarchy tree.
The view thread 270 is shown to access the spider thread 272 for the purposes of retrieving information (e.g., a memory-mapped data) representative of a particular hierarchical data structure. The view thread 270 is also shown to access a display 268 for the purposes of generating the relevant display thereon, a " Navigate Toolbar" class 271 that creates and manages the image buttons 50-72 discussed above with reference tøj Figure 2, a Sphere object 278 that is derived from a "New SP" class and performs all sphere-related functions, the Java DDE Emulator 216 discussed above with reference to Figure 17, and a "Navigator URL Bar" object 274 that is derived from a "NVUrl" class and is an instantiation of a toolbar, an example of which is provided in the form of toolbar 40 shown in Figure 2.
Figure 20 is a block diagram providing further details regarding variables that are maintained by the view thread 270 and the spider thread 272. Specifically, the view thread 270 is shown to maintain a LAST LEVEL variable 280 as the deepest level within the hierarchical data structure that has been displayed on the sphere 14 (for example in the form of child node facets), the spider thread 272 is shown to maintain a CURRENT MAPPING LEVEL variable 282 that numerically indicates the current level within a hierarchical data structure that is mapped by the spider thread, and a MAXIMUM SPIDER LEVEL variable 286 that numerically indicates the deepest level within a hierarchical data structure that the spider thread 272 may map according to a user preference. As described above, the Last Level variable 280 indicates the deepest level within the hierarchical data structure that the spider thread 272 has investigated. The Current Mapping Level variable 282 indicates the parent of the deepest level that has been displayed on the sphere 14. The view thread 270 is able to compare the Last Level variable 280 to the Current Mapping Level variable 280 to determine whether it needs to update the display. This is done on a continual basis. If the Last Level variable 280 is greater than the Current Mapping Level variable 282, this indicates that the spider thread 272 has probed a deeper level of the hierarchical data structure, and that the view thread 270 can accordingly update the tree displayed within the sphere 14. This updating may be performed by displaying additional child nodes facets within facets of the sphere 14 that provide a child node count indication. The variables 280, 282 and 286 are all public variables.
Methodology- Viewer Program Application Overview Figures 21A-21C provide high-level representations of the functioning of the viewer program 200, according to one exemplary embodiment. More detailed representations of specific components and methodologies constituting an exemplary embodiment of the viewer program 200 are then described further with reference to subsequent figures. Turning firstly to Figure 21A, the simultaneous and parallel operations performed by the view and spider threads 270 and 272 are illustrated at 288. Specifically, following initialization and start of the viewer program 200 at 290, the spider thread 272 is shown at block 292 to build a separate and distinct memory map (as illustrated and described in section 1.9 of Addendum 1) for each parent/child node family within a hierarchical data structure. Memory maps are constructed for parent/child node families to a certain user-specified depth within the hierarchical data structure.
Each memory map includes "valid" memory locations to store data concerning a specific child node and "null" memory locations that are empty. The valid memory locations are dispersed within the memory with a predetermined density. Each memory location within each memory map is potentially associated with a facet of a three-dimensional wire frame, but only facets that are associated with valid memory locations will appear on the three-dimensional wire frame to be associated with (and to be representative of) a child node. The spider thread 272 continually operates in the background of the viewer program 200 to map the hierarchical data structure, of which only a portion may be represented by the tree displayed within the sphere 14. Accordingly, the spider thread 272 may continually probe both laterally and vertically within the hierarchical data structure for the purpose of identifying links (e.g., hypertext links or other pointers) between nodes.
The view thread 270 is shown at block 291 to display a current parent/child node family, or at least a portion thereof, in accordance with the wire frame window boundaries for a memory map representing the relevant child nodes. The view thread 270 is shown to retrieve the memory maps generated by the spider thread 272 as needed to display a portion of a hierarchical data structure in accordance with automatic or user inputs that direct navigation of the hierarchical data structure.
Figure 21B is a flowchart providing further detail regarding the blocks illustrated in Figure 21A. At block 293, the spider thread 272 is shown to create at least a single memory map for storing node information regarding the child nodes of a predetermined root (or base) node. As described above, the spider thread 272 will then proceed to probe deeper into the hierarchical data structure and construct memory maps for subsequent and deeper parent/child node families. At block 294, a wire frame view (or memory window) is defined according to predetermined criteria, such as the number of facets (or surface portions) of the three- dimensional wire frame that are available to represent nodes. As described above, the wire frame view demarcates a predetermined portion of a specific memory map as constituting the "tree" for display within the wire frame. At block 296, the view thread 270 generates a display of a three- dimensional wire frame (e.g., the sphere 14 shown in Figure 1) within the display window 12. At block 297, the tree is displayed within the sphere 14. Specifically, a kernel 26 representative of the parent node is displayed at the center of the three-dimensional frame. Text information associated with each of the child nodes is then displayed within, or adjacent, a surface portion or facet of the three-dimensional wire frame that represents a respective child node. Linking lines are then displayed, each linking line extending between the kernel 26 and the approximate center of a facet representing a child node. Optionally, one of the child nodes may be designated as active, in which case the facet and linking line associated with the relevant node may be visually differentiated (e.g., highlighted). At decision box 298, a new parent node may be detected. For example, an identification of such a new parent node may be inputted by a user (e.g., into the URL Windows 78) or may be automatically generated by the viewer program 200. If a new parent node is detected, a determination is made at decision box 299 as to whether child nodes for the new parent nodes have been mapped to memory. For example, if the new parent node is a child node deeper in the hierarchical data structure than the current parent node, there is the possibility that the spider thread 272 may have probed deeper into the hierarchical data structure to generate a memory map for the relevant child nodes. On the other hand, the new parent node may be located in a hierarchical data structure that has not been probed by the spider thread 272. If the relevant child nodes have been memory mapped, a return is made to block 294. Alternatively, should the child nodes not have been mapped, a return is made to block 293.
If no new parent node is detected at decision box 298, a determination is made at decision box 301 whether the wire frame has been rotated to present an alternative view of the relevant child nodes. Such a rotation of the wire frame may have been performed responsive to manual user input (e.g., a drag-and-rotate operation utilizing a cursor and mouse or by user selection of the step advance and step retreat buttons 60 and 58). Alternatively, a rotation of the wire frame may have been performed responsive to an automatic rotation mechanism, which may be initiated by user selection of the auto forward or auto backward buttons 64 and 62. If rotation of the wire frame is detected, a return is made to block 294.
Figure 21C is a flowchart illustrating in more detail the operation, according to one exemplary embodiment, of the viewer program (or application) 200 to display a hierarchical data structure within a three- dimensional environment. At block 300, the viewer program 200 is initialized, and a view thread 270 is instantiated. Block 302 embodies a number of decisions through which the viewer program 200 progresses for the purpose of updating a display. Specifically, the viewer program 200 determines whether a current iteration of the block 302 is a first iteration (i.e., if FirstTime). If so, then a new spider thread 272 is generated (i.e., create Spider thread), a new sphere object 278 is created (i.e., create Sphere) and a tree representing the relevant parent and child nodes of a hierarchical data structure is set within the sphere (i.e., set Tree in Sphere). The sphere object 278 is then displayed (i.e., display).
Alternatively, should the current iteration of the block 302 detect a new URL or file to be mapped by the viewer program 200 (i.e., else if new URL or File), an extant spider thread 272 is stopped (i.e., stop Spider thread), a new spider thread 272 is generated, and a new tree representing the newly identified parent and child nodes of the hierarchical data structure is set within the sphere 14. The updated sphere object 278 is then displayed (i.e., update display).
At each iteration of the block 302, a determination is made as to whether the current level of the hierarchical data structure mapped within the sphere 14 is greater than the last level (i.e. if Current Mapping Level > Last Level) as described above. If so, this indicates that a new level within the hierarchical data structure is designated as the current level, and the display of the sphere and data information is updated (i.e., update display). Further, during each iteration of the block 302, a determination is made as to whether the current level of the hierarchical data structure mapped within the sphere 14 is equal to or greater than the maximum spider level indicated by the variable 286 (i.e. if Current Mapping Level > = Max Spider Level). If so, then the execution of the spider thread 272 is stopped.
Operation of the viewer program 200 is terminated by preceding from block 302 to block 304, where both the view thread 270 and the spider thread 272 are stopped.
Methodology- Viewer Class Overview Figure 22 is a flowchart illustrating a method 320, according to an exemplary embodiment, of displaying a hierarchical data structure within a three-dimensional environment, and provides further details regarding the main class of the viewer program 200 as described in overview with reference to Figures 21A - 21C. If the viewer program 200 is executing within a browser window (e.g., as a Java applet embedded within the web page), the method 320 progresses from block 322 to an initialization block 324. Alternatively, where the viewer program 200 is executing as a companion program to a browser program 202, a display window 12 (or frame) is created at block 326, the display window 12 then being resized to approximately two-thirds of the screen size on which it is displayed. From block 326, the method 320 then proceeds to the initialization block 324. At decision box 328, a determination is made as to whether the viewer program 200 is executing as a stand-alone program, or executing within a browser window. If the viewer program 200 is executing as a stand-alone program, the method proceeds to block 330, wherein a URL Bar instance and a menu instance are created within the display window 12 to generate the URL window 78 and the drop-down menus that are discussed above, for example with reference to Figure 7. At block 332, a toolbar instance is created for generating the toolbar 40, as discussed above reference to Figure 2. At block 334, the view thread 270 is then created.
Alternatively, if it is determined at decision box 328 that the viewer program 200 is not executing as a stand-alone program (i.e., is executing within a browser window), the method 320 then proceeds to decision box 336, where a determination is made as to whether a toolbar 40 is required for display. For example, in the case where the viewer program 200 comprises a Java applet embedded within a web page, the author of the web page may specify that the toolbar 40 be displayed or omitted from display within a browser window. If it is determined that the toolbar 40 is to be displayed, the method 320 proceeds to block 332. Of the other hand, should the author of the web page within which the viewer program 200 embedded specify that the toolbar 40 is not be displayed, the method proceeds directly from decision box 336 to block 334.
At decision box 340, a determination is again made as to whether the viewer program 200 is executing as a stand-alone, companion program or is generating a display within a browser window. If the viewer program 200 is executing as a companion program, the method 320 proceeds to block 342, where a number of flags are examined to determine whether a MAP BROWSER function (i.e. MapBrowserURL) is to be called. Specifically, a determination is made as to whether any one of the following flags is set:
1. A syncWithBrowser flag, indicating that a user has indicated the viewer program 200 is continually to be synchronized with a browser program 202. This flag may be set, for example, by a user selection of button 72 displayed on the toolbar 40 shown in Figure 2.
2. A mappingwebsite flag, indicating that a web site displayed within a viewer program 200 is to be mapped into a display provided by the viewer program 200. This flag may be set, for example, by a user selection of the button 66 displayed on the toolbar 40 shown in Figure 2.
3. A loadFile flag, indicating that a specific file hierarchy, for example within the file system 264 shown in Figure 19, is to be mapped into a display provided by the viewer program 200. This flag may be set, for example, responsive to a user inputting a file directory name into the URL window 78 of the display window 12 shown in Figure 2.
4. A loadURL flag, indicating that a specific URL is to be mapped into a display provided by the viewer program. This flag may be set, for example, responsive to a user inputting a URL into the URL window 78 on the display window 12 shown in Figure 2.
In the event that any of the above flags are set, the MAP BROWSER function is then invoked. At block 344, both the view thread 270 and the spider thread 272 are stopped.
The MAP BROWSER Function Figures 23A and 23B illustrate a flowchart showing an exemplary embodiment of the MAP BROWSER function 350. The function 350 is a core function, and is responsible for mapping URLs or files into the display window 12. The function 350 commences at block 352, and determines whether any one of a number of flags are set at any one of the decision boxes 354. Specifically, determinations are made as to whether any one of the syncWithBrowser flag, the firstTime flag, the loadFile flag, or the loadURL flag are set. A determination is also made as to whether a current URL variable has a null value, indicating that no current URL is being mapped by the viewer program 200. If any one of the flags examined at the decision boxes 354 are set, a determination is made at decision box 356 as to whether the viewer program 200 is operating as a stand-alone, companion program. If not, the function 350 proceeds to block 358, where a URL string variable, that identifies the parent node to be mapped, is set by executing a getDocumentBase function. More specifically, the getDocumentBase function is a function provided by the Java virtual machine, and returns a base URL for the document currently being viewed in the browser program 202 when the viewer 210 is embedded within the data item (e.g., an HTML document) currently being viewed within the browser program 202. Alternatively, if it is determined at decision box 356 that the viewer program 200 is executing as a stand-alone program, the function 350 proceeds to decision box 360, where a determination is made as to whether the loadFile flag is set. If so, a URL string variable is set to equal a specified file name at block 362. If the loadFile flag is not set, a determination is made at decision box 364 as to whether the loadURL flag is set. If so, the URL string variable is set to equal a specified URL name at block 366. If the loadURL flag is not set, a determination is then made at decision box 368 as to whether a browserName variable has a null value. If so, this indicates that a browser program 202, to which the viewer program 200 is a companion, has not been identified, and a FindBrowser function is then executed at block 370 to locate a browser. The message exchange by which the browser program 202 may be identified is described above with reference to Figure 18A. At decision box 372, a determination is made as to whether a browser program 202 has been located. If the browserName variable does not have a null value, following the determination at decision box 368, or if it is determined at decision box 372 that a browser has been located, the function 350 proceeds to block 374, where a GetURL function is executed. Details of the data and message exchange that may be performed in executing the GetURL function are described above with reference to Figure 18B. At block 376, the URL string variable is set equal to the URL that is returned from the browser program 202.
Determinations are made at decision boxes 378 and 380 to determine whether a valid URL has been retrieved. At decision box 378 a determination is made as to whether the URL string variable does not have a null value, and at decision box 380 a determination is made as to whether the URL string variable does not equal the current URL variable. This determination is made to insure that the URL string variable is different from the one that is currently being displayed. If both these conditions are true, then a determination is made as to whether a thread spider variable is not a null value at decision box 382. If this is the case (i.e., the spider thread variable is not null), the function 350 proceeds to block 384, where a current spider thread 272 is stopped. Alternatively, a new spider thread is created at block 386, and a mapping web site variable is set to true (to indicate that a mapping operation is being performed), and the last level variable 280 is set to 0 (to ensure that the mapping operation commences at the highest level (i.e., level zero) of a hierarchy of data structure being mapped).
Following negative determinations at either of decision boxes 378 or 380, or following completion of block 386, the function 350 proceeds to decision box 388, where determination is made as to whether a web site mapping operation is in operation by examining the state of the mapping web site variable. If so, at decision box 390, a determination is made as to whether the current mapping level variable 282 has a greater value than the last level variable 280. If so, (thus indicating that mapping is now occurring on a level below the last level of the hierarchical data structure that was mapped), then the function 350 proceeds to decision box 392, where a determination is made whether a Tree variable does not have a null value.. If so, a determination is made at decision box 394 as to whether a Sphere variable has a null value. If the sphere variable does have a null value this indicates that a sphere does not currently exist. If the Sphere variable has a null value, this indicates that no sphere has as yet been displayed, and at block 395 a new sphere is created that displays a new tree. If the sphere variable does not have a null value, at block 395 a new sphere is created that displays a new tree. Alternatively, if the sphere variable does not have a null value, at block 396 a Sphere.SetTree function is executed. The Sphere.SetTree function passes the new tree hierarchy to the existing sphere for display. A determination is made at decision box 397 as to whether the last level variable 280 equals the current level variable. If not, a repaint function, to refresh and update the sphere 14 and information displayed therein, is invoked that block 398. At block 388, the last level variable is also set to equal the current level variable. The count variable shows that a mapping of all nodes on a particular level occurs before the spider thread 420 proceeds to a deeper level. Alternatively, if the last level variable 280 is equal the current level variable, the function 350 proceeds to decision box 400, where determination is made whether the current level variable is equal to or greater than the maximum spider level variable 286. If so, the spider thread 272 is stopped at block 402, and the mapping website variable is set to false, to indicate that a mapping operation is no longer being performed.
Following block 402, or on the occurrence of negative determinations at either decision box 388 or 400, the function 350 then terminates.
The Spider Thread Figure 24 is a flowchart illustrating a method 420 (also termed a spider operation), according to an exemplary embodiment, that may be performed by the spider thread 272 to identify the nodes and structure of a hierarchical data structure for display within the sphere 14 by the view thread 270. The method 420 commences at block 422, and proceeds to block 424, where the current mapping level variable 282 and a count are both set to 0, thereby ensuring that the method 420 begins examining the hierarchical structure from the base level (i.e., level 0). The count variable is a variable local to the spider thread 272, and allows an exit from the method 420 and a return to the same level. At decision box 426, a determination is made as to whether the current mapping level variable 282 is less than the maximum spider level variable 286. If so, a determination is made at decision box 428 as to whether the count variable is greater than the maximum spider level variable 286. If so, the method 420 then exits. Alternatively, if not, a determination is made at decision box 430 as to whether the count variable is equal to the current mapping level variable 282. If so, the GetNodeURL function and a Parse HTML function, described below, are invoked at block 432. Alternatively, if the count variable is not equal to the current mapping level variable 282, this indicates that the level currently being mapped by the spider thread 272 is not the current level, and the spider thread 272 should accordingly map a deeper level (i.e., the level indicated by the current level variable). The count variable thus insures that the spider thread 272 maps all nodes within a particular hierarchical data structure before proceeding to map nodes on a deeper hierarchical level. Further note that the count variable should be decremented where appropriate.
The Parse HTML Function Figure 25 is a flowchart illustrating a method 440, according to an exemplary embodiment, that may be performed in execution of the Parse HTML function discussed above. While the method 440 is described with specific reference to parsing an HTML document, it will readily be appreciated that a similar method may be utilized to parse any markup language document, or other data structure that may contain links or pointers to child nodes.
The method 440 commences at block 442, and proceeds to decision box 444, where a determination is made as to whether an index variable, indicative of a maximum HTML document size that may be parsed, is greater than a data size variable that indicates the size of the character array of the relevant HTML document. If the data size variable is greater than the index variable, the method 440 terminates at block 446 as the HTML document is too large to be handled by the Parse HTML function. Alternatively, a determination is made at decision box 447 as to whether an anchor tag has been located within the HTML document being parsed. Specifically, an anchor tag in the HTML document identifies a hypertext link embedded within the HTML document (i.e., marks the beginning and end of a hypertext link) that points to a further data item (e.g., another HTML document, Java applet, or any other data item or file that may be linked to from an HTML document) at a level below the HTML document currently being parsed within a hierarchical data structure. If an anchor tag is located, block 448 is then performed. Specifically, a URL String variable is set to equal the output of a Parse Anchor Tag function, that retrieves an address (e.g., a HyperText Transfer Protocol (HTTP) address or a File Transfer Protocol (FTP) address) associated with the relevant anchor tag. A base URL variable is set equal to the output of a nodeGet URL function, that outputs the base or root URL of a web site from which the document has been parsed has been retrieved. A new child Node object is instantiated based on output of a new Node function that also performs a check operation to determine whether the relevant URL has already been mapped. The new child Node object is thus positioned as a child node within the hierarchical data structure (or tree) of the document currently being parsed.
If no anchor tag is located, a determination is made at decision box 450 whether a base tag is present within the HTML document being parsed. If so, the base URL variable is set to the output of the Parse Anchor Tag function at block 452.
If no base tag is located, a determination is made at decision box 454 whether a title tag is present within the HTML document that has been parsed, if so, a title variable is set to the output of a Parse Title Tag function at block 456. Method of Displaying and Rotating Wire Frame Figure 26 is a flowchart illustrating an exemplary method 500, according to one embodiment of the present invention, of displaying a three-dimensional wire frame on a display screen. The method 500 describes the rotation of an exemplary sphere responsive to user input in the form of movement of a cursor control device, or pointing device, such as a mouse. Furthermore, certain functions that are called (e.g., the GenerateSP function and the DFace function) implement the methods of calculating and generating the facet points and of generating the display of a sphere as described below.
Method of Displaying Child Node Facet Figure 27 is a flowchart illustrating an exemplary method 550, according to one embodiment of the present invention, of displaying a child node facet within a facet of a three-dimensional wire frame displayed on a display screen. Further details regarding the display of child node facets are provided below. Specifically, the calculation of the size of a child node facet relative to a facet of the three-dimensional wire frame within which the child node facet is incorporated is described. Furthermore, the generation and display of spokes emanating from a central position within a child node facet are described. Each of the spokes represents a child node of a node represented by the relative facet, and accordingly the spokes provide an indication of the number of child nodes of a relevant node.
Architectural Overview of the Sphere In Figure 28, the new sphere 570 is shown to include three primary classes, namely a facet class 572, a VecFace class 574 and a NewSP class 576. The class 576 is shown to include four functions, namely a GetData function 578, a Resizelmage function 562, a PaintFrame function 564 and a Paintlmage function 566. A repaint function 560, which includes the functions 562, 564 and 566, is called either by the operating system to update a display of the sphere 14 on a display screen, or when the viewer program 200 determines that the display of the sphere 14 needs to be updated.
The PaintFrame function 564 paints an entire image to memory (and not to the display), whereafter the Paintlmage paints the image to the display from memory so as to provide a crisp and quick display on the display screen. In other words, the PaintFrame function creates a buffer image within memory, but is accessed by the Paintlmage function to display the image in a quick and efficient manner.
Method of Generating a Display of a Sphere Figures 29A - 29B show a flowchart illustrating an exemplary method 600, according to one embodiment of the present invention, of generating a display of a sphere within a three-dimensional environment on a display screen. The method 600 also calls other methods, such as the method 550 illustrated in Figure 27.
Method of Displaying Links and Distributing Link Names Figure 30 is a flowchart illustrating an exemplary method 650, according to one embodiment of the present invention, of displaying links (or linking lines) within the sphere generated according to the method 600, and of distributing names (or other textual information) on the surface of the sphere. The method 650 is called by the method 600 illustrated in Figures 29A - 29B.
Method of Displaying Node Names Figure 31 is a flowchart illustrating an exemplary method 700, according to one embodiment of the present invention, of displaying node names or other textual information pertaining to nodes within or adjacent facets of a sphere, each of the facets being associated with a respective node. The method 700 is called by the method 600 illustrated in Figures 29A - 29B.
Methods of Resizing and Painting an Image Figure 32 includes flowcharts illustrating exemplary methods 710 and 720, according to respective embodiments of the present invention, of re-sizing and of painting an image in the form of the sphere discussed above.
Method of Constructing a Memory Map Figure 33 is a flowchart illustrating an exemplary method 750, according to one embodiment of the present invention, of mapping information to memory concerning nodes of a hierarchical data structure. An example of the memory map that may be created utilizing the method 750 is described below.
Method of Generating Facet Points Figure 34 is a flowchart illustrating an exemplary method 800, according to one embodiment of the present invention, of generating facet points on the surface of a sphere. The method 800 described with reference to Figure 34 supplements the method of generating facet points described below. The method 800 is called from the method 500 discussed above with reference to Figure 34.
Method of Displaying the Longitudinal and Latitudinal Division Lines on the Surface of the Sphere Figure 35 is a flowchart illustrating a method 850, according to one embodiment of the present invention, of generating the display of longitudinal and latitudinal division lines on the surface of a sphere. Such longitudinal and latitudinal divisional lines are illustrated in Figure 2. The method 850 is called from the method 600 discussed above with reference to Figures 29 A - 29B.
Method of Distributing Data within a Memory Map Figure 36 is a flowchart illustrating a method 900, according to one embodiment of the present invention, of distributing data concerning nodes of a hierarchical data structure within a memory map and for association with respective facets of a three-dimensional wire frame. The method 900 may be employed to achieve the distribution of data for valid nodes within a memory structure, as described below.
Method of Tracking Pointing Device Movement Figures 37- 40 detail methods, according to exemplary embodiments of the present invention, of detecting coordinate locations on the display screen, as indicated by a pointing device (e.g., a mouse). The methods illustrated in Figures 37-40 also detail the mapping of the user indicated set of coordinates onto the sphere 14, so that user selection of a particular facet, and accordingly of a node within the hierarchical data structure, may be determined. Method of Generating and Displaying a Tool Bar Figures 41-48 detail various exemplary methods, according to the present invention, of generating the display of a toolbar, as well as the display of selected buttons within the toolbar. The display buttons are either selectable for the purpose of activating various functions detailed above. Specifically, Figure 41 details blocks of an exemplary method that may be implemented by an instance of the "Navigate Toolbar" class 271, as shown in Figure 19. Specifically, the method 800 involves firstly determining the width and height of a toolbar, such as the toolbar 40 shown in Figure 2, to be displayed within the display window 12. Thereafter, the toolbar is created, whereafter button images are loaded and "ImageButton" objects are created. These objects are then added to the toolbar to generate a complete toolbar such as that shown in Figure 40.
Figure 42 is an exemplary method that may be embodied within an , "ImageButton" object, and Figures 43-48 detail respective methods of painting an image button on the toolbar 40, and of detecting user selection of a respective image button.
Memory Structures Exemplary data distribution in memory is shown in Figures 49 and 50. It will be appreciated that where a parent node (represented by the kernel 26 of a sphere 14) has a large number of children, it may not be possible to allocate each child node to a facet 16 at any one time. A predetermined maximum number of nodes that may be allocated to facets 16 of the sphere 14 at any one time may be defined. This predetermined maximum number of nodes may be determined by the maximum number of facets that are defined on the surface of the sphere 14, or may be determined by a maximum number of facets that can be shown to include facet (i.e., data item or node) information without causing the surface of the sphere 14 to become visually cluttered and thus difficult to view and navigate. In Figure 49, it can be seen that memory locations that contain valid data 948 (i.e., nodes that may be associated with a facet) may be distributed with a predetermined density. In one embodiment, a predetermined maximum "memory block" size, including a predetermined number of valid data items or nodes, within the memory may be selected for display within the sphere 14 at any one time. In Figure 49, such a memory block 950 is illustrated, and labeled as the "current location of the sphere". Accordingly, the memory block 950 may conceptually be regarded as providing a limited view of memory locations, the limited view including a predetermined maximum number of memory locations such that the number of memory locations storing valid data that can be mapped to available facets 16 of the sphere 14 is limited. Rotation of the sphere 14, as described above, may comprise moving boundaries of the predetermined memory block 950 block of memory locations that are mapped onto the data sphere. Accordingly, in certain situations where a large number of data items exist within the memory (as illustrated Figure 49) only a selected number of those data items are mapped to facets 16 at a specific time. In this way, the present invention facilitates the viewing and navigation of a number of data items within a single hierarchical level in an unrestricted manner. For example, a larger number of data items can be viewed and navigated using the sphere 14 than there are facets 16 available on the surface of the sphere 14 for allocation to such data items. Of course, where the number of data items on a hierarchical level is less than the predetermined number of facets 16 of the sphere 14 that are available for allocation to such data items, the boundaries of the memory block will incorporate all memory locations allocated to such data items, and accordingly the view of locations within the memory defined by the memory block will not need to move (i.e., the boundaries of the memory block will not need to be shifted) for the purposes of allowing a user to navigate and view all data items within a memory map.
Drawing a Sphere The components used in drawing are follows:
Root sphere:
Root is a solid sphere drawn at center of the sphere. . Root name:
Root name is displayed at the left lower corner of the window. Wire frame:
An exemplary wire frame is consists of 15 longitudes and 15 latitudes, intersection of these results in 225 points. Four neighbor points, labeled A, B, C and D, are combined to construct a facet, such as that illustrated in Figure 51A.
These points are calculated using formulas below. x = CenX + r * Sin (0) * Cos (φ) y = CenY + r * Sin (φ)
Calculation of the facet points:
Where r is the radius of the sphere, (CenX,CenY) is the sphere origin, φ and θ are angles in degrees.
- 90 < ø < 90
-90 < 0 < 90
There are two loops to calculate the facet points. In the outer loop, phi is incremented by 180 / 15 degrees to calculate points from east to west. In the inner loop, theta is incremented by 180 /15 degrees to calculate points from north to south.
Calculation of center of facet, the facet distance ratio and facet intensity:
The center of facet is calculated using formulas below.
ex = (Ax + Bx)/2 and cy = (By + Cy)/2
Where (cx,cy) is the center of the facet and A,B, C are three corners of the facet.
The facet distance ratio and facet intensity. m _ DFacetDist = ^(CeήX - ex) * (CenX - ex) + (CenY - cy) * (CenY - cy) m _ facetdistratio = (int)(τn_ DFacetDist * 10/ r) i = (10 - (m_ facetdistratio 12)) 110
Where i is facet intensity, m_dFacetDist the center of facet distance to center of the sphere, m_facetdistratio is a number between 0 to 9. 0 is closest and 9 furthest to the center of the sphere.
Links (linking lines) to child nodes:
Links to child nodes are straight lines drawn from center of the sphere to the center of the facet.
Child node facets:
Child node facets are drawn to fit inside the sphere facet. The size of the child node facet may be proportional to the child count of the node. A delta number is subtracted from each corner of the facet . Parallel lines are drawn to the each side of the sphere facet. This is calculated for each corner of the facet.
Referring to Figure 51B, new A'B'C'D' values are:
Figure imgf000045_0001
if \Ay - By\ ≥ \Dx - Cx\ then
Figure imgf000045_0002
CorrectionADx =
CorrectionBCx —
Figure imgf000045_0003
if Ax ≥ Dx then CorrectionADx = -CorrectionADx if Bx ≥ Cx then CorrectionBCx = -CorrectionBCx
A'x - Ax ± dADx + CorrectionADx
A'y = Ay -dADy
B'x = Bx + dADx - CorrectionBCx
B'y = By-dADy
C'x - Cx + dADx - CorrectionBCx
C'y = Cy -dBCy
D'x = Dx + dADx + CorrectionADx
D'y = Dy-dBCy
Child node names:
Child node names are displayed on the facet. The center of each node name is aligned with the center.
Child node links to 2nd level child nodes:
These links are drawn using Bezier curve formula where B is a point on the Bezier curve, P is the column vector (4 control points), and t is a variable between 0 and 1. l≥t≥O
Figure imgf000046_0001
Which is calculated as:
B{t) = -P0+3P1-3P2+P3y+ p0-2Pl+P2y2+ -P0+P2y + p0+4Pl+P2) o I 2 6
Implementation of Bezier curve is as follows. B(t) Bezier curve control points are A, B, C, and D points of the facet, which results in a curve is tangent to BC.
This procedure is repeated four times, changing the start control point to B, C, and then D. This is illustrated in Figure 51C
BCDA results in curve CD CDAB results in curve DA DABC results in curve AB
Where d = (child count / 4) is number of points on the Bezier curve. Links are the lines connecting the center of the facet to these points. This is illustrated in Figure 51D.
Coordinate system An exemplary coordinate system use is a 2-dimensional (x y) coordinate system shown in Figure 51E. Its origin is located at the top left corner of the application window. The sphere is placed at the center of the application window.
Light source A light source, perpendicular to the screen illuminates the sphere. All components of the sphere are subject to illumination, with the brightest area being the one closest to the viewer. Rotation Rotation may, in alternative embodiments, be implemented in two ways.
Facet data rotation: Rotating only the node data
Rotating sphere:
Adding or subtracting rotate angles to phi and theta effects rotation of the sphere. Formulas to calculate cursor position on the sphere are utilized. These formulas are also used to calculate rotating angles.
φ = arcSin((y - CenY)lr) θ = arcSin((x - CenX ) l(r * Cos(φ))
Finding cursor position on the sphere and locating corresponding facet Reference is made to Figure 52. The formulas to calculate the cursor " position are given above. First cursor position (cx, cy) is checked to determine if it is positioned on the sphere. Then its location is searched through latitudes.
This is accomplished by looping through A points of the facets, (e.g., if Ax>mx then the latitude row is located). A further procedure is executed to find border longitudes. If the following conditions are met then cursor is on the facet:
Dx- - Ax mx- - Ax
Dy - -Ay my- -Ay and mx- -Bx Cx- - Bx
My-By Cy -By
or, stated alternatively, with respect to Figure 52, slope 972 < slope 970 and slope 974 < slope 976.
Scaling the Sphere The radius of the sphere is calculated to fit into the window. The center of the window is chosen to be the center of the sphere. The sphere size is scaled as the window resized by user. All fonts are scaled according to resize ratio. The radius of the sphere is calculated as: Wh = (width - 10)12; Hh = (height - 50)12;
where width and height are an application window's width and height. The smaller of the width and height is chosen as the radius of the sphere.
Zoom and Multiple Wire Frames A user may also be presented with the option of zooming a view of a wire frame (e.g., a sphere) to provide an enhanced view of, for example, information presented within a facet, or a text box associated with a facet. One application of the zoom function is to provided multiple wire frames with a single window, or GUI display, that zoom in or out to show, merely for example, successive layers of a data structure. Figures 53 A - 53Eshow a sequence of exemplary screen prints that illustrates the zooming out, or retreat, of a first wire frame in form of a sphere 1000 and the zooming in, or advance, of a second wire frame in the form of a second sphere 1004. Facets of the first sphere 1000 are, in the illustrated example, assigned to book category links included with a bookstore index web page (e.g., www.amazon.com). A facet 1002 assigned to the "history" category is shown to he highlighted to indicate user selection thereof, and a text box 1003 provides textual information concerning this link.
Following user selection of a "next level" function with respect to the facet 1002, the second sphere 1004 is shown in Figure 53B to be generated and displayed in a superimposed manner over the facet 1002. In accordance with the "next level" function, the second sphere 1004 is increased in size, while the first sphere 1000 is reduced in size, relative to a window as shown in Figures 53C - 53E. It will be noted that facets of the second sphere 1004 are allocated to links of a "history books" web page (e.g., history sub-categories). In this way, the first sphere 1000 is retreated to the background and the second sphere is advanced to the foreground of a display.
Figures 54A is a respective flowchart detailing an exemplary method 1010 by which a wire frame in the exemplary form of a sphere may be zoomed in or out. A substantially similar method may be utilized to zoom other wire frame structures. As discussed above, a wire frame having a surface divided into facets, according to the invention, may be any two- or three-dimensional form. Figures 55A-55E show an exemplary sequence of screen prints that show a first wire frame in the form of a two-dimensional surface 1020 that is zoomed out (or retreated) and a second wire frame in the form of a two- dimensional surface 1024 is zoomed in (or advanced). The sequence of screen shots shown in Figures 55A-55E are similar to those shown in Figures 53A-53F and illustrate an alternate embodiment of a wire frame. The surfaces 1020 and 1024 may further be a surface of a three-dimensional wire frame, such as a cube. Figure 56 is a flow chart illustrating a method 1030 by which the display of such a cube may be generated.
Figure 57 shows a screen print alternate embodiment of advancing and retreating spears 1042 and 1044, wherein the division lines that define facets for the spheres 1042 and 1044 are hidden.
Figure 58 is a screen shot showing an even further embodiment of a wire frame in the form of a surface 1050 that is displayed and automatically moved or rotated as part of a banner advertisement embedded within a web page. The surface 1050 is divided into a series of adjacent facets, each facet containing advertisement material. The surface 1050 is then moved either vertically or horizontally so that the facets are rotated past the banner "window". As such, the surface 1050 may be viewed as a closed loop or band that is continually rotating relative to a stationary banner advertisement window. The facets are, in this embodiment, not shown to be linked to a parent node via links and there is accordingly not communication of information regarding a hierarchical positioning of the advertisement material contained in the facets.
Thus, a method and apparatus for displaying and navigating a data structure have been described. Although the present invention has been described with reference to specific exemplary embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader spirit and scope of the invention. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.

Claims

CLAIMSWhat is claimed is:
1. A method of displaying a data structure, having a base node and at least a first child node, the method including:
displaying a multi-dimensional framework on a display device, the multi- dimensional framework to define a volume and having a surface;
displaying a graphic representation, associated with the base node, within the volume defined by the multi-dimensional framework;
defining a first portion of the surface of the multi-dimensional framework as being representative of the first child node; and
displaying a link connecting the graphic representation associated with the base node with the first portion of the surface so as to represent a parent - child relationship between the base node and the first .child node.
2. The method of claim 1 including dividing the surface of the multidimensional framework into a plurality of portions, the first portion of the surface, associated with the first child node, being selected from the plurality of portions.
3. The method of claim 2 wherein the dividing the surface of the multidimensional framework includes defining a first set of division lines having a first orientation and defining a second set of division lines having a second orientation, the first and second sets of division lines dividing the entire surface of the multi-dimensional framework into the plurality of portions.
4. The method of claim 3 wherein the multi-dimensional framework comprises a sphere, and wherein the first set of division lines comprise a set of circumferential lines intersecting at diagonally opposed first and second poles of the sphere.
5. The method of claims 4 including maintaining the positions of the first and second poles of the sphere relative to a fixed coordinate when rotating the sphere, so as to vary the shape of the first portion of the surface upon rotation of the sphere.
6. The method of claim 3 wherein the multi-dimensional framework comprises a sphere, and wherein the second set of division lines comprises a set of parallel surface lines.
7. The method of claim 1 wherein the data structure includes a second child node, the first and second child nodes occupying the same level within the data structure relative to the base node, the method including the block of defining a second portion of the surface of the multi-dimensional framework as being representative of the second child node so that child nodes of the same level within the data structure are represented by portions of the surface of the multi-dimensional framework.
8. The method of claim 6 wherein the first and second child nodes are one hierarchical level removed from the base node, the method including defining portions of the surface of the multi-dimensional framework as being representative of child nodes one hierarchical level removed from the base node.
9. The method of claim 6 wherein the graphic representation of the base node and the surface portions representative of child nodes, one hierarchical level removed from the base node, are displayed within a multi-dimensional environment.
10. The method of claim 1 wherein the multi-dimensional framework comprises a sphere, and the graphic representation associated with the base node is displayed at the center of the sphere.
11. The method of claim 1 including displaying a child graphic representation associated with the first portion of the surface, the child graphic representation indicating that the first child node is a parent node relative to a third child node.
12. The method of claim 11 including displaying the child graphic representation to indicate that the first child node is a parent node relative to a first set of child nodes.
13. The method of claim 12 including displaying the child graphic representation to indicate the number of child nodes within the first set of child nodes.
14. The method of claim 13 including displaying the child graphic representation as a core having a number of spokes, representative of the number of child nodes within the first set, emanating therefrom.
15. The method of claim lincluding detecting user selection of the first . portion of the surface of the multi-dimensional framework, and displaying a text window responsive to the detection of the user selection, the text window including text descriptive of the first child node.
16. The method of claim 15 wherein the detection of the user selection includes detecting a location of a user controlled cursor on the display device.
17. The method of claim 1 including displaying a text window on the display device, the text window including text descriptive of the base node associated with the graphic representation displayed within the volume defined by the multi-dimensional framework.
18. The method of claim 1 including determining whether the first child and the base node are located within a common WebSite and, if not, then
* displaying the link in accordance with the location of the first child within or outside the common WebSite.
19. The method of claim 18 including ascertaining a user preference with respect to the display of links between nodes located within the common WebSite and nodes located outside the common WebSite.
20. The method of claim 1 including displaying multiple multi- dimensional frameworks on the display device, each multi-dimensional framework defining a volume and having a surface, and displaying a respective graphic representation associated with a respective base node within each volume defined by each of the respective multi-dimensional frameworks.
21. A method of displaying a data structure including first, second and third hierarchical levels of nodes, the method including:
displaying a first graphic representation associated with a first node of the first hierarchical level within a multi-dimensional display environment on a display device;
displaying a second graphic representation associated with a second node of the second hierarchical level within the multi-dimensional display environment, the second node comprising a child node of the first node within the data structure;
displaying a link representation representing a hierarchical relationship between the first and second nodes; and
in response to a selection of the second node, removing the first graphic representation from the multi-dimensional display environment, displaying a third graphic representation associated with a third node of the third hierarchical level within the multidimensional display environment, and displaying a link representing a hierarchical relationship between the second and third nodes, the third node comprising a child node of the second node within the data structure.
22. The method of claim 21 including displaying a multi-dimensional framework within the multi-dimensional display environment, the first graphic representation being displayed within a volume defined by the multi-dimensional framework, and the second graphical representation being displayed on a surface defined by the multi-dimensional framework.
23. The method of claim 22 wherein the second graphical representation is defined as comprising a portion of the surface defined by the multidimensional framework.
24. The method of claim 22 including displaying the first graphic representation at a position corresponding substantially to the center of the volume defined by the multi-dimensional framework.
25. The method of claim 21 including, in response to the selection of the second node, displaying the second graphic representation at a position corresponding substantially to the center of the volume defined by the multi-dimensional framework.
26. The method of claim 21 including, in response to the selection of the second node, defining the first graphic representation to comprise a portion of the surface defined by the multi-dimensional framework.
27. The method of claim 21 wherein the data structure includes a first set of nodes within the second hierarchical level, the method including automatically designating successive nodes within the first set of nodes as a selected node within the second hierarchical level.
28. The method of claim 27 wherein the automatic designation includes designating a node of the first set of nodes as the selected node and then designating a further node of the first of nodes as the selected node after a predetermined time interval.
29. The method of claim 21 wherein the data structure includes a first set of nodes within the second hierarchical level, the method including designating successive nodes within the first set of nodes as a selected node responsive to a user-activated advance signal.
30. A method of displaying a data structure including first, second and third hierarchical levels of nodes, the method including:
displaying a first graphic representation of a first parent node of the first hierarchical level within a multi-dimensional display environment on a display device; displaying a respective graphic representation for each node of a first set of child nodes, each node of the first set of child nodes comprising a child node of the first parent node;
displaying a respective link representation representing a hierarchical relationship between each node of the first set of child nodes and the first parent node; and
in response to a selection of a selected node of the first set of child nodes, displaying only the following graphic representation associated with nodes: (1) a second graphic representation associated with the selected node and (2) a respective graphic representation for each node of a second set of child nodes, each node of the second set of child nodes comprising a child node of the selected node, and displaying a respective link representation representing a hierarchical relationship between each node of the second set of child nodes and the selected node.
31. A method of displaying a graphical representation of a data structure, the method including:
detecting access of a first data item of a data structure utilizing a browser application or a viewer application, the first data item including a reference to a second data item; and
displaying a node-link representation, utilizing the viewer application, of a hierarchical data relationship between the first and second data items in a multi-dimensional environment and displaying the first data item, utilizing the browser application, in a synchronous manner.
32. The method of claim 31 wherein the first data item includes a hypertext link to the second data item.
33. The method of claim 32 wherein the first data item comprises any one of a SGML, HTML, XML, or VRML file.
34. The method of claim 31 including locating the browser application within a computer system.
35. The method of claim 31 including identifying the browser application as being a first or second browser application.
36. The method of claim 31 including querying the browser application regarding a data item accessed by the browser application for the purposes of synchronizing the viewer application to the browser application.
37. The method of claim 36 including querying the browser application on a continual basis so as to maintain continual synchronization between the viewer application and the browser application.
38. A method of displaying a graphical representation of a data structure on a display screen, the data structure including a plurality of nodes that are allocated to locations within a memory space, the allocation being performed with a predetermined density, the method comprising:
displaying a multi-dimensional wire frame on the display screen, the wire frame having a predetermined number of surface facets that may be associated with nodes of the data structure;
defining a predetermined maximum number of memory locations, at least some of which may store node items, as constituting a wire frame view;
establishing a first wire frame view including a first set of memory locations storing a first set of node items, each node item within the wire frame view being associated with respective surface facets of the multi-dimensional wire frame; and
responsive to a rotation of the multi-dimensional wire frame on the display screen, redefining the wire frame view to include a second set of memory locations storing a second set of node items.
39. The method of claim 38 including displaying the multi-dimensional wire frame on the display screen and displaying facets of the two- dimensional wire frame as being associated with node items of the first set of node items and, responsive to the rotation of the multi-dimensional wire frame on the display screen, displaying facets of the multi-dimensional wire frame as being associated with node items of the second set of node items.
40. The method of claim 38 wherein the first set of memory locations includes a lesser number of memory locations than the predetermined maximum number, and wherein the first and second sets of memory locations are the same.
41. The method of claim 38 wherein the first set of memory locations includes a greater number of memory locations than the predetermined maximum number, and wherein the first and second sets of memory locations differ.
42. The method of claim 38 wherein the first and second set of memory locations include common memory locations.
PCT/US2000/001065 1999-01-14 2000-01-14 Method and apparatus for displaying and navigating a data structure on a display unit WO2000042573A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
AU25084/00A AU2508400A (en) 1999-01-14 2000-01-14 Method and apparatus for displaying and navigating a data structure on a displayunit
CA002358533A CA2358533A1 (en) 1999-01-14 2000-01-14 Method and apparatus for displaying and navigating a data structure on a display unit
EP00903319A EP1147490A1 (en) 1999-01-14 2000-01-14 Method and apparatus for displaying and navigating a data structure on a display unit
JP2000594080A JP2002535760A (en) 1999-01-14 2000-01-14 Method and apparatus for displaying and navigating a data structure on a display device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11595199P 1999-01-14 1999-01-14
US60/115,951 1999-01-14

Publications (2)

Publication Number Publication Date
WO2000042573A1 WO2000042573A1 (en) 2000-07-20
WO2000042573A9 true WO2000042573A9 (en) 2001-08-30

Family

ID=22364337

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2000/001065 WO2000042573A1 (en) 1999-01-14 2000-01-14 Method and apparatus for displaying and navigating a data structure on a display unit

Country Status (5)

Country Link
EP (1) EP1147490A1 (en)
JP (1) JP2002535760A (en)
AU (1) AU2508400A (en)
CA (1) CA2358533A1 (en)
WO (1) WO2000042573A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006067745A1 (en) * 2004-12-22 2006-06-29 Koninklijke Philips Electronics N.V. Method of presenting a topology, using a visual object
CN102937978A (en) * 2012-10-17 2013-02-20 北京奇虎科技有限公司 Search device and method

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5499330A (en) * 1993-09-17 1996-03-12 Digital Equipment Corp. Document display system for organizing and displaying documents as screen objects organized along strand paths
US6023701A (en) * 1997-09-25 2000-02-08 International Business Machines Corporation Skeleton page retrieval mode for web navigation

Also Published As

Publication number Publication date
AU2508400A (en) 2000-08-01
EP1147490A1 (en) 2001-10-24
CA2358533A1 (en) 2000-07-20
WO2000042573A1 (en) 2000-07-20
JP2002535760A (en) 2002-10-22

Similar Documents

Publication Publication Date Title
US7730429B2 (en) Graphical workspace for idea management
US7437670B2 (en) Magnifying the text of a link while still retaining browser function in the magnified display
US5546529A (en) Method and apparatus for visualization of database search results
Bosca et al. OntoSphere: more than a 3D ontology visualization tool.
US6282547B1 (en) Hyperlinked relational database visualization system
US6529900B1 (en) Method and apparatus for data visualization
US6426761B1 (en) Information presentation system for a graphical user interface
Stasko et al. Focus+ context display and navigation techniques for enhancing radial, space-filling hierarchy visualizations
US6263339B1 (en) Dynamic object visualization and code generation
Noik Exploring large hyperdocuments: fisheye views of nested networks
US6915301B2 (en) Dynamic object properties
US6816175B1 (en) Orthogonal browsing in object hierarchies
JP3309066B2 (en) Computer system, method and program for constructing statement
US7404151B2 (en) System and method for providing a dynamic user interface for a dense three-dimensional scene
US20070294643A1 (en) System for managing the navigational usability of an interactive map
US20010049695A1 (en) Visualization spreadsheet
Lehmann et al. Interactive visualization for opportunistic exploration of large document collections
EP2116925B1 (en) Method, system, program for assisting object selection when web page is authored
Bosca et al. OntoSphere3D: a multidimensional visualization tool for ontologies
WO2000042573A9 (en) Method and apparatus for displaying and navigating a data structure on a display unit
Câmara et al. Handling complexity in GIS interface design
Cockburn Supporting tailorable program visualisation through literate programming and fisheye views
Huang et al. On-line visualization and navigation of the global web structure
Brown A 3D user interface for visualisation of Web-based data-sets
Nguyen et al. A visualization model for web sitemaps

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 2000 583816

Country of ref document: US

Date of ref document: 20000530

Kind code of ref document: A

AK Designated states

Kind code of ref document: A1

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

AL Designated countries for regional patents

Kind code of ref document: A1

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

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

Ref document number: 2000903319

Country of ref document: EP

Ref document number: IN/PCT/2001/719/KOL

Country of ref document: IN

ENP Entry into the national phase

Ref document number: 2358533

Country of ref document: CA

Ref document number: 2358533

Country of ref document: CA

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 2000 594080

Country of ref document: JP

Kind code of ref document: A

AK Designated states

Kind code of ref document: C2

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

AL Designated countries for regional patents

Kind code of ref document: C2

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

COP Corrected version of pamphlet

Free format text: PAGES 1/70-70/70, DRAWINGS, REPLACED BY NEW PAGES 1/70-70/70; DUE TO LATE TRANSMITTAL BY THE RECEIVING OFFICE

WWP Wipo information: published in national office

Ref document number: 2000903319

Country of ref document: EP

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWW Wipo information: withdrawn in national office

Ref document number: 2000903319

Country of ref document: EP