Place brain neurons on whole pixels

The force simulation settles on arbitrary floats, and a neuron on a half pixel
has its ring, its gap and its disc rounded one edge at a time — which on the
smallest ones is a visibly off-centre ring. The size is already whole, so the
position was the last fractional term.
This commit is contained in:
2026-08-27 16:15:39 +02:00
parent 3af37e8f8f
commit 0495a84dcc
+7 -2
View File
@@ -124,9 +124,14 @@ function build(graph: BrainGraph): { nodes: Node[]; edges: Edge[] } {
id: node.id,
type: "brain",
// React Flow places by the top-left corner; the layout means centres.
// Rounded, because the force simulation settles on arbitrary floats and
// a neuron on a half pixel has its ring, its gap and its disc rounded
// one edge at a time — which on the smallest ones is a visibly
// off-centre ring. `size` is already whole, so this is the last
// fractional term.
position: {
x: (node.x ?? 0) - node.size / 2,
y: (node.y ?? 0) - node.size / 2,
x: Math.round((node.x ?? 0) - node.size / 2),
y: Math.round((node.y ?? 0) - node.size / 2),
},
data: {
label: source.label,