Bounding-radius of a layout result: max distance from origin across all * nodes. Used to size galaxy spacing so satellites don't overlap the primary * cluster. Layouts with a 1000-node cluster have radius ~1500; the previous * fixed 600 spacing buried satellites inside the primary mass. */
| 1419 | * cluster. Layouts with a 1000-node cluster have radius ~1500; the previous |
| 1420 | * fixed 600 spacing buried satellites inside the primary mass. */ |
| 1421 | static double layout_radius(const cbm_layout_result_t *r) { |
| 1422 | if (!r || r->node_count == 0) |
| 1423 | return 0.0; |
| 1424 | double max_r2 = 0.0; |
| 1425 | for (int i = 0; i < r->node_count; i++) { |
| 1426 | double x = (double)r->nodes[i].x; |
| 1427 | double y = (double)r->nodes[i].y; |
| 1428 | double z = (double)r->nodes[i].z; |
| 1429 | if (!isfinite(x) || !isfinite(y) || !isfinite(z)) |
| 1430 | continue; |
| 1431 | double r2 = x * x + y * y + z * z; |
| 1432 | if (r2 > max_r2) |
| 1433 | max_r2 = r2; |
| 1434 | } |
| 1435 | return sqrt(max_r2); |
| 1436 | } |
| 1437 | |
| 1438 | /* Attach the missed-graph skeleton (#963) to the primary layout doc as |
| 1439 | * "missed_graph": {"nodes":[...], "edges":[...], "offset":{x,y,z}} |
no outgoing calls
no test coverage detected