To achieve this im am proposing to use a series of graphical nodes designed to summarize information on a topic and organize thise "nodes" into a visual map by connecting the nodes with lines or "links".
Any program attemting to describe a general set of data must be ultimately designed to organize data from a ANY subject with ANY content. Therefor it is important to make sure the structure of the map remains as flexible as possible.
With this in mind I devised a method for nodes to be conneted in a variety of ways. Nodes can be related to each other as members of a chain "sibling-sibling" or in "parent-child" relationships. This has the effects of allowing the mapping software to generate arrays of nodes that create heirachal braching chain structures.
Unique ID Number
Each "node" in the map is described using a unique identification number. It is with this number that the software program will ultimately be able to describe all the required attributes of the node such as position, scale, links and color.
Relative Addressing
The "address" of each node is encoded into the id number using a relative address system. This ensures that formatting and positioning can be controlled using group heirachys and yet still leaves room for the allocation of unique attributes.
ID Number Example
The ID number is split into a series of number clusters with the clusters seperated by dashes . Each number cluster decribes a specific node point in the relative address.
1,7-2,3-4,0
There are two numbers used to describe a node in each cluster. The first number is the "branch" number this describes the number of the branch that the node is on. The second number is the "chain" number. The describes the position that the node occupies on a chain.
The brach number or "b" around a node point is calculated by counting the number of braches in a counter clockwise manner. For example:
The chain number or "c" of a node is calcualted by counting the number of nodes before a node on a chian. For example:
Combining these numbers creates a simple for method of describing branching chains. For example:
These descriptive numbers "b" and "c" can then be used repeatedly to create braches of chains that can branch. This technique can then be used to describe and build complex series of chain branching. For example:
The next step is to build into the ID code a method for secribing child nodes. In my system child nodes are treated in essentially that same way as sibling nodes accept they are scaled to a smaller size. This will give the map the ability to display subsets of nodes in a intuitive and easy to "read" way.
To make the description of the node in the ID number as elagant as possible I simply allocated a child node the "c" value of zero. This allows a child node to easily be distingushed from a sibling node and yet still uses the same indexing system of describing brached to count how many children "branch" from a parent node. For Example:
An important reason for developing a unique ID system for each node is the fact that associative links will be created between nodes from completely different section of a map. To do this automatically from an external file each node must be able to be uniquely identified and yet still provide ainformation about its relative psoition. This also allows for a far easyer method of manually building maps using a list of ID numbers instead of trying to figure out the approximated coordinates of a node only the have it interfere with another node positioned near by in the future and have to be repositioned.
With this encoding sytem for nodes in place the next step is to create a way to convert these ID numbers into usable coordinates that can be used to place objects on screen.
No comments:
Post a Comment