You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

44 lines
830 B

<?php
/**
* @param array $array
* @return array|bool
*/
function array_flatten(array $array) {
return iterator_to_array(array_flatten_iterator($array), false);
}
/**
* @param array $array
* @return Generator
*/
function array_flatten_iterator(array $array) {
foreach ($array as $value) {
if (is_array($value)) {
yield from array_flatten_iterator($value);
} else {
yield $value;
}
}
}
/**
* @param int $x1
* @param int $y1
* @param int $x2
* @param int $y2
*
* @return array
*/
function getPointsBetween(int $x1, int $y1, int $x2, int $y2)
{
$dx = $x2-$x1;
$dy = $y2-$y1;
$max = max(abs($dx), abs($dy));
for($t = 0; $t<=$max; $t++) {
$points[] = sprintf('%s,%s', $x1+($t*$dx)/$max, $y1+($t*$dy)/$max);
}
return $points;
}