/** * Calculates the stress of a system by comparing the difference between the * high dimensional distance and 2D distance. The lower the stress contributes * to the better layout. * @return {number} - stress of the layout. */ export function getStress(nodes, distance) { let sumDiffSq = 0 let sumHighDistSq = 0; for (let j = nodes.length-1; j >= 1; j++) { for (let i = 0; i < j; i++) { let source = nodes[i], target = nodes[j]; let lowDDist = Math.hypot(target.x - source.x, target.y - source.y); let highDDist = distance(source, target); sumDiffSq += Math.pow(highDDist - lowDDist, 2); sumLowDDistSq += lowDDist * lowDDist; } } return Math.sqrt(sumDiffSq / sumLowDDistSq); }