Hi,

I'ved been going through your example and really would like to thank 
you first is helping me. 

i'm trying to use the example you gave into the program that i have 
currently.since i need to pass the nodes and edges to javascript to 
calculate the shortest path and then 

send it back to svg to draw the chosen shortest-path.

my questions are ;) :

1. your program does create the node,edges and circle automatically, 
if mine just get
from the existing path drawn in svg, do i have to put the nodes in 
the array? like 
nodes.push(newNode)?the thing i'm concern is could it be done without 
the newNode.x
?just straight using mine like newNode = SVGDocument.getElementById
("circle")?

2.what does the var l and var c does actually? 

3.still it doesnt work coz i dont think it is able to send the value 
from svg to the script and back to svg.

i tried to do it here.. but still dont know what relevent l and c is.

i'ved inserted my prog here with some Q within it.

thanks for helping me and do appreciate feedback on this.

<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
        "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
<svg width='100%' height='100%' xmlns='http://www.w3.org/2000/svg' 
xmlns:xlink='http://www.w3.org/1999/xlink' onload='Init(evt)'>

<script xlink:href="dijkstra.js"/>

   <script>doc<![CDATA[
      var SVGDocument = null;
      var SVGRoot = null;
      var svgns = 'http://www.w3.org/2000/svg';
      var xlinkns = 'http://www.w3.org/1999/xlink';

        function Init(evt)
        {
         
         var SVGDocument = evt.target.ownerDocument;
              var SVGRoot = SVGDocument.documentElement;
         var allPath= SVGDocument.getElementsByTagNameNS
(svgns, 'path');  
         var NUMBER_EDGES = allPath.length;
         alert("edges " +NUMBER_EDGES);
         //var nodes = new Array();
        };      
        
        var NUMBER_NODES = 3;
        alert("nodes "+NUMBER_NODES);   

//********************************************************************
***************
// Initialize an adjacency matrix
        var adjacencyMatrix = new Array(NUMBER_NODES);
        for (var i = 0; i < NUMBER_NODES; i++) 
        {
        adjacencyMatrix[i] = new Array(NUMBER_NODES);
        for (var j = 0; j < NUMBER_NODES; j++) 
        {
                adjacencyMatrix[i][j] = Infinity;
        }
        }
//********************************************************************
***************
//calculating edges

        //calculate edges and add them to the document
        for (var j = 0; j < NUMBER_EDGES; j++) {
        var from = j % NUMBER_NODES;
        var min = Infinity;
        var to = from;
        
        for (var i = 0; i < NUMBER_NODES; i++) {
        var eachPath = allPath.item(i);
        eachPath.setAttributeNS(null, 'stroke', 'blue');
          if (from != i && adjacencyMatrix[from][i] == Infinity) {
            var distance = Math.round(eachPath.getTotalLength());
            alert("Distance "+distance);
            if (distance < min) {
              min = distance;
              to = i;
            }
          }
        }
        adjacencyMatrix[from][to] = min;
        adjacencyMatrix[to][from] = min;

//add newNode here?

        var l = SVGDocument.createElementNS
(SVG_NAMESPACE_URI, "line");
        if (to < from) {
                id += String(to) + from;
        } else {
                id += String(from) + to;
        }
      l.setAttributeNS(null, "id", id);
      l.setAttributeNS(null, "x1", nodes[from].x);
        //l.setAttributeNS(null, "path" , nodes[from]); this way??
      l.setAttributeNS(null, "y1", nodes[from].y);
      l.setAttributeNS(null, "x2", nodes[to].x);
      l.setAttributeNS(null, "y2", nodes[to].y);
      SVGDocument.documentElement.appendChild(l);       
}

//add point for the nodes
        
        for(var i=0;i <NUMBER_NODES; i++)  {
        var c = SVGDocument.createElementNS
(SVG_NAMESPACE_URI, "circle");
        c.setAttributeNS(null, "id", "c" + i);
        c.setAttributeNS(null, "point", 
SVGDocument.getElementsByTagNameNS(svgns, 'c'));
        //c.setAttributeNS(null, "onclick", "setActive(" + i + ")");
        SVGDocument.documentElement.appendChild(c);
        }

//********************************************************************
***************
//Start with node 0 as active node

        var activeNode = 0;
        SVGDocument.getElementById("c0").setAttributeNS
(null,"class", "current");
        var shortestPathInfo = shortestPath(adjacencyMatrix, 
NUMBER_NODES, 0);

//********************************************************************
***************
//Hide the path highlights
        function clearPath() {
        for (var i = 0; i < NUMBER_NODES; i++) {
                for (var j = i + 1; j < NUMBER_NODES; j++) {
                if (adjacencyMatrix[i][j] != Infinity) {
                SVGDocument.getElementById("path" + i + 
j).setAttributeNS(null, "class", "");
                }
                }
        }
        }

//********************************************************************
***************
//Show path form the active node to the given node

        function showPath(to)   {
        clearPath();
        if(activeNode != to)    {
        var c = SVGDocument.getElementById("c" + to);
        c.setAttributeNS(null, "class", "highlight");
        var path = constructPath(shortestPathInfo, to);
        var prev = activeNode;
        var distance = 0;
        for (var i = 0; i < path.length; i++) {
          var id;
          if (path[i] < prev) {
            id = "path" + path[i] + prev;
          } else {
            id = "path" + prev + path[i];
          }
          var l = SVGDocument.getElementById(id);
          l.parentNode.removeChild(l);
          l.setAttributeNS(null, "class", "highlight");
          SVGDocument.documentElement.insertBefore(l, divider);
          distance += adjacencyMatrix[prev][path[i]];
          prev = path[i];
        }
        SVGDocument.getElementById("d").firstChild.nodeValue 
= "Distance: " + distance;
      }
    }

//********************************************************************
***************
// Unhighlight the path from the active node to the given node
    function hidePath(to) {
      clearPath();
      if (activeNode != to) {
        var c = SVGDocument.getElementById("c" + to);
        c.removeAttributeNS(null, "class");
      }
    }


//********************************************************************
***************
// Choose a new active node
    function setActive(to) {
      SVGDocument.getElementById("c" + activeNode).removeAttributeNS
(null, "class");
      clearPath();
      activeNode = to;
      shortestPathInfo = shortestPath(adjacencyMatrix, NUMBER_NODES, 
to);
      SVGDocument.getElementById("c" + activeNode).setAttributeNS
(null, "class", "current");
    }
        
   ]]></script>

<g>
<path id='path1' stroke-width='1' stroke='blue' fill='none'  stroke-
linecap='round'
         d='M300,25 450,100'/>
<path id='path2' stroke-width='1' stroke='blue' fill='none'  stroke-
linecap='round'
         d='M300,25 250,150'/>
<path id='path3' stroke-width='1' stroke='blue' fill='none'  stroke-
linecap='round'
         d='M450,100 250,150'/>
</g>
<g>
<circle id='c0' cx='300' cy='25' r='5' fill='red'/>
<circle id='c1' cx='450' cy='100' r='5' fill='gold'/>
<circle id='c2' cx='250' cy='150' r='5' fill='red'/>
</g>

<a>
<text x="10" y="20" font-weight="bold">Dijkstra Dummy</text>
<text id="d" x='10' y='590' font-size='18px' fill='crimson'>Distance: 
</text>
</a>
</svg>
        






------------------------ Yahoo! Groups Sponsor --------------------~--> 
$4.98 domain names from Yahoo!. Register anything.
http://us.click.yahoo.com/Q7_YsB/neXJAA/yQLSAA/1U_rlB/TM
--------------------------------------------------------------------~-> 

-----
To unsubscribe send a message to: [EMAIL PROTECTED]
-or-
visit http://groups.yahoo.com/group/svg-developers and click "edit my 
membership"
---- 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/svg-developers/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 



Reply via email to