/**
* Calculates distances
*
* @param Node $node
* @param Node[] $neighbors
*/
protected function calculateDistances(Node $node, array $neighbors)
{
$this->calculateRanges();
foreach ($neighbors as $neighbor) {
$deltas = array();
foreach ($this->schema->getFields() as $field) {
list($min, $max) = $this->ranges[$field];
$range = $max - $min;
$delta = $neighbor->get($field) - $node->get($field);
$delta = $delta / $range;
$deltas[$field] = $delta;
}
$total = 0;
foreach ($deltas as $delta) {
$total += $delta * $delta;
}
$neighbor->setDistance(sqrt($total));
}
}