Content-Type: |
multipart/alternative; boundary=0015175cdc20ef913c046dd04729 |
Sender: |
|
Subject: |
|
From: |
|
Date: |
Fri, 3 Jul 2009 18:13:34 +0100 |
MIME-Version: |
1.0 |
Comments: |
|
Reply-To: |
|
Parts/Attachments: |
|
|
Hi all,
I have found a bug in NetworkPortrayal2D.
I am using the (sim.field.network.)Network field with a Continuous2D field.
If I use a network directed graph, everything happens fine. But if it is an
undirected graph, when the NetworkPortrayal2D is going to draw it, it
includes an edge from every node to itself. It was happenning because for
each node, it gets all edges and for each node.out of the edge, it tries to
draw it. Then if the node.out is not the original node (what would happen
for the edges entering into the original node), than we have the bug!
To fix the problem I put this (italic) statement:
Bag nodes = field.network.getAllNodes();
for (int x = 0; x < nodes.numObjs; x++) {
...
for (int y = 0; y < edges.numObjs; y++) {
...
* if ( (locStop == locStart) && (edge.from() != nodes.objs[x])) continue;
* ...
}
}
which means, if the stop location is the same then the start location BUT
node.out is different from edge.node.out then it skips drawing it.
If there are "self-edges node" it will work fine, since edge.from will be
equal to nodes.objs[x].
Well, now everything is working fine.
Cheers,
--
Maíra Athanázio de C. Gatti
PhD student, PUC-Rio, Brazil
King's College London
|
|
|