<' . 'path d="M?,?Q?,? ?,? M?,?Q?,? ?,?" fill="none" stroke="black"/><' . '/g>'; $v = ($_GET['v'] ?? 50)/100; $a = $_GET['a']; $a1 = ($_GET['a1'] ?? $a ?? 50)/100; $a2 = ($_GET['a2'] ?? $a ?? 50)/100; $d = ($_GET['d'] ?? 50)/100; $c = ($_GET['c'] ?? 0)/100; $o = $_GET['o']; if (!is_null($o)) { $a = ($a1+$a2)/2; $a1 = $a + $o/100 - 0.5; $a2 = $a - $o/100 + 0.5; } $size = $_GET['size']; if ($size) { $template = preg_replace('/100%/', $size, $template, 2); } function dotprod($X, $Y) { $value = 0; for ($j = 0; $j < count($Y); $j++) { $value += $Y[$j] * $X[$j]; } return $value; } $V= [1, 2*$v-1, $a1, $a2, 2*$d-1, $c]; $index = 0; $svg = preg_replace_callback('/\?/', function() use (&$index, $V, $data) { return dotprod($V, $data[$index++]); }, $template); // experimental inclusion of love $l = ($_GET['l'] ?? 0)/100; if ($l > 0) { $data= array( array(0, 1), array(0.5, -0.2), array(0, 1)); $V= [1, $l]; $index=0; $template= ''; $love = preg_replace_callback('/\?/', function() use (&$index, $V, $data) { return dotprod($V, $data[$index++]); }, $template); $svg = preg_replace('/(?=)/', '' , $svg, 1); } echo $svg; ?>