smallworld


Success, to a degree.

Executable (my POV) jar is here
Executable (your POV) jar is here

  • Yellow = the circle along which the segment lies, green = the circle cutting the yellow circle at right angles.
  • Results are only correct if both ends of the line segment are inside the unit circle. If both ends are outside, sometimes the algorithm picks the path that runs through the unit circle. This means that if you are drawing lines from outside to outside, your best bet is to invert the unit circle, find the line, then invert the result.
  • Note that if the overall transform is fiddled with with the sliders, the “inside the unit circle” rule applies to the *untransformed* “inside”.
  • “drag the transform” is completely buggy.
  • Haven’t handled the case where the circle or its cutter is a straight line.
    if(segment.isLine())
      if(cutter.isPosCircle())
        return new Line2D.Double(a, b);
      else
        return null;
    else		
    if(cutter.isLine())
      return null;
    else
    if (cutter.isPosCircle())
      return Draw.arcNegative(c, a, b);
    else 
      return Draw.arcPositive(c, a, b);
    
    • However, it seems that now I have enough graphics primitives to draw a network on a conformal projection of the elliptic plane. And hyperbolic, for that matter.

      So now to the next bit.

      1. I have a set of nodes.
      2. The nodes have icons and state.
      3. Each node “participates” in two separate graph structures.
      4. Graph A is an arbitrary directed graph. Arcs have properties and end decorations.
      5. Graph B is a tree structure. Nodes can be within nodes.
      6. In terms of graph B, each node is a unit circle. The nodes “within” it are circles at some location with in it.
      7. The location of a node within a node is specified by a moebus transformation that maps the unit circle onto the location where the contained node is.
      8. This allows us to do nesting by composition of transforms.
      9. To display, a given node has the focus and is drawn as the main circle on the screen.
      10. This central circle has an outside and an inside.
      11. Either of these areas can display the “contents” of the node or the “context” of the node.
      12. The “normal” display is context outside, contents inside. Its what you would get if you did a zoom.
      13. If both the ouside and the inside display the same (context/context or content/content), then we draw the short line segments. You see both images of anything and the graph is drawn compactly.
      14. If both the ouside and the inside display the same (context/context or content/content), and a graph A arc needs to be drawn that crosses the border, then either the arc is not drawn, or the arc is drawn from the node to the border – the unit circle serves as a sort of vanishing horizon.
      15. When a graph A arc spans multiple tree steps – a choice
        1. Draw the arc relative to the current focus
        2. Draw the arc relative to the top of the tree
        3. Draw the arc relative to the higest node that contains both
        4. Draw the arc as a number of segments. I prefer this, because I think it will serve to “gather” arcs into pathways that make sense.
      16. Animate focus changes. Anything else will just not work.


      (pretend the blue crosses are closer on the outside than the inside)

      Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: