Number: 1725
Title: Objects placement bug
Submitter: Oleg
Date: Fri Jul 24 13:55:38 2009
Subsys: Neato
Version: 2.24
System: *-*-*
Severity: critical
Problem:
input: (neato.exe 111.txt)

graph { node [shape=box]; overlap=false;
NG1218 [width=1.547935, height=0.694444];
NG1222 [width=1.856385, height=0.694444];
NG1218 -- NG1222;
NG1226 [width=2.856385, height=0.694444];
NG1218 -- NG1226;
NG1230 [width=3.547935, height=0.694444];
NG1226 -- NG1230;
}

output:


graph 1 9.8802 0.72222
node NG1218 3.2175 0.36111 1.5417 0.69444 NG1218 solid box black lightgrey
node NG1222 -0.93219 0.36111 1.8611 0.69444 NG1222 solid box black lightgrey
node NG1226 -1.#IND -1.#IND 2.8611 0.69444 NG1226 solid box black lightgrey
node NG1230 8.0955 0.36111 3.5417 0.69444 NG1230 solid box black lightgrey
edge NG1218 NG1222 4 2.4515 0.36111 1.7595 0.36111 0.73917 0.36111 0 0.36111 solid black
edge NG1218 NG1226 4 -1.#IND -1.#IND -1.#IND -1.#IND -1.#IND -1.#IND -1.#IND -1.#IND solid black
edge NG1226 NG1230 4 -1.#IND -1.#IND -1.#IND -1.#IND -1.#IND -1.#IND -1.#IND -1.#IND solid black
stop

What this: "-1.#IND"???
Input:

graph { node [shape=box]; overlap=false;
NG1218 [width=1.547935, height=0.694444];
NG1222 [width=1.856385, height=0.694444];
NG1218 -- NG1222;
NG1226 [width=2.856385, height=0.694444];
NG1218 -- NG1226;
NG1230 [width=3.547935, height=0.694444];
NG1226 -- NG1230;
}
Comments:
[north] Maybe we should just drop the Windows version! We have so many problems with this particular platform.

It is well known that #IND means "indeterminate" (a.k.a. NAN in other operating systems) so there is some (apparently new) floating point discrepancy in how the Windows executables do something. e.g. #IND can be an overflow (divide by 0).

[erg] This problem is arising from some obscure bug in our Voronoi code used for overlap removal. It goes away if you even use a different initial layout using the start attribute.

We really don't recommend Voronoi overlap removal algorithm any more. Even though it usually works, the final layout is not as satisfactory as other algorithms. Especially with 2.24, we recommend setting overlap=prism.

We should also think about possibly making overlap=false correspond to prism. We like to keep things backward compatible, but this is now a case where the "default" value is not a good choice.
Owner: *
Status: *