public static function normalizeVector($arr, $to_len = 1) { $len = Vect::length($arr) / $to_len; if ($len) { return array($arr[0] / $len, $arr[1] / $len, $arr[2] / $len); } else { return array(0, 0, 0); } print_r(debug_backtrace()); die('Division by zero'); }
// Переносим влияние параметров друг на друга foreach ($delta_flu as $param => $value) { $_SESSION['diag'][$param] += $value; } // Переносим изменения от лекарств foreach ($delta_influable as $param => $value) { $_SESSION['diag'][$param] += $value; } // Возможно - меняем АД гап if (rand(0, 10) > 5) { boundAdd($_SESSION['diag']['AD_gap'], 0.01 * rand(-1, 1), 1.4, 1.6); } foreach ($_SESSION['systems'] as $system => &$system_data) { $system_data['html_color'] = rgb2html100($system_data['color']); $system_data['stress_color'] = polynom_value($system_data['stress'], array(0 => '#00CC00', 800 => '#FF0000', 1000 => '#000000', 1001 => '#000000')); $system_data['crit_range'] = round(Vect::length(Vect::diffVector($system_data['color'], $_SESSION['crit_color'])), 1); } // Определяем предположительные диагностические значения $est_range = Autodoc::$estimate_range; foreach ($est_range as $param => &$value) { // if ($param != 'temp') continue; $value *= $_SESSION['blood']['lost'] / 1000; if ($param == 'temp') { $value = round($value, 1); } else { $value = round($value); } // value - длина диапазона // Не нужен разброс if ($param == 'temp' && $value <= 0.1 || $value <= 1) { $out = $_SESSION['diag'][$param];
public static function getDamageQuot($system) { $length = Vect::length(Vect::diffVector($_SESSION['systems'][$system]['color'], $_SESSION['crit_color'])); if ($length == 0) { return Autodoc::MAX_TOOL_DAMAGE_QUOTIENT; } return min(Autodoc::MAX_TOOL_DAMAGE_QUOTIENT, Autodoc::TOOL_COLOR_DAMAGE_BASE / $length); }