## 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