Hyperbolic Tree in Squeak for navigating large data structures

Torsten.Bergmann at phaidros.com Torsten.Bergmann at phaidros.com
Thu Apr 29 21:01:41 UTC 1999


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