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
At 23:01 29.04.99 +0200, Torsten Bergmann wrote:
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 ?
You certainly rang a bell here.
Until about a year ago, there was a tool that displayed Java profiling information using hyperbolic trees (HyperProf by Vladimir Bulatov, see http://www.physics.orst.edu/~bulatov/). As far as I can recall (or can research with DejaNews, try "+Xerox +patent" on comp.lang.java.*), Xerox seems to have contacted Mr. Bulatov and at least notified him of their patent #5,619,632 (see http://www.platibus.com/hyperprof/xeroxpatent.html for a bit of background information). Whatever that exchange may have been, it led to Mr. Bulatov taking down his (free) tool.
I am not a lawyer (nor do I play one on TV), but I think hyperbolic trees are a potential minefield. Please let's *not* start an argument re the validity of software patents here. It is a *shame* that HyperProf is dead, as it was a cute tool. I know, I tried it.
Just be aware of the traps, before another great tool bites the dust.
Cheers, Helge
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@phaidros.com To: squeak@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
squeak-dev@lists.squeakfoundation.org