Hyperbolic Tree in Squeak for navigating large data structures

Les Tyrrell tyrrell at canis.uiuc.edu
Fri Apr 30 22:25:48 UTC 1999


I have the original source for the Java browser... but I just got out of the hospital,
so don't have access to it at this point.

les


----- Original Message ----- 
From: <Torsten.Bergmann at phaidros.com>
To: <squeak at cs.uiuc.edu>
Sent: Thursday, April 29, 1999 4:01 PM
Subject: Hyperbolic Tree in Squeak for navigating large data structures


> First: Squeak 2.4 rulez !!!! Thanks to Jeff for Alice.
> 
> Some weeks ago the squeak list mentioned a new technology for navigating
> complex data structures with a hyperbolic tree. The hyperbolic tree 
> is a commercial product of Inxight software (http://www.inxight.com)
> and I haven't found any free sources all over the web.
> 
> Using such a tree would be cool. 
> Can anyone point me to a location where I can find more informations
> about the implementation of this tree? Is anyone working on a squeak 
> version ?
> 
> I think it is not so heavy to implement such a hyperbolic tree without
> sources, because the demos at Insight.com tell a lot about the maths
> behind the tree. A Hyperbolic Tree (HT) always have a start node (root)
> in the center of the demo applets with surrounding nodes. The distance 
> between the root node and its surrounding nodes depend on the number of 
> nodes connected to each surrounding node.
> 
> An example:       E
>       B !
> !           B
>     A-R-C         ! 
>       !           !
> D         A-R-C
> !
>       D
> 
> 
> On the left there is an easy tree with a root node and four surrounding
> nodes (each one has the same distance to the root and is placed on a 
> invisible circle that covers the root). 
> The angle for the position on this circle is 360 degrees divided
> by the number of surrounding nodes. (In the left picture 4 nodes ->
> 90 degrees). 
> On the right there is the same tree with a node E added to node B.
> So the distance R-B is increased. So B is placed on another invisible 
> circle with a larger radiant around the root node.
> 
> Each surrounding node of the root node is a root node for itself
> (with sorrounding nodes using the same algorithms)
> 
> In the demo applets you can move the root node to the edges of the 
> applet. You will notice that the distances between the nodes 
> are scaled with the distance of the root node and the border of
> the applet, meaning that if the root node is in the center of the demo
> applet the distances have theyr largest values.
> If the root node is near the border the distances to his surrounding
> nodes seams to be zero (no line is painted).
> 
> If you move the root node in the demo applet (a rectangle) you will 
> notice that it can't reach one of top-left, top-right, bottom-left
> or bottom-right positions. The root node only displays in a circle 
> inside the applets rectangle. 
> 
> I think it's easy to understand whats going on behind the scenes.
> Some mathematical stuff with cosinus and sinus to calculate the 
> position (distance from other nodes), depending on weights. 
> The weights for each node are calculated by the number of 
> surrounding nodes (the more it has, the more place/distance it needs 
> to display all).
> 
> I have uploaded a picture showing the principles to 
> http://www.phaidros.com/DIGITALIS/hyperbol.gif
> 
> Does anyone know more about the algorithm used to display 
> the hyperboolic tree?
> 
> Torsten
> 
> 
> PS: The demos can be found at
> http://www.hyperbolictree.com/Inxight/Demos/HT_Live_Demos/HT_Live_Demos_
> Page.html
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>  
> 





More information about the Squeak-dev mailing list