Построение точек на линии, между точками в массиве - PullRequest
0 голосов
/ 06 апреля 2020

Я уверен, что это просто, но мой мозг отказывается работать прямо сейчас ... У меня есть массив точек, который выглядит примерно так:

$points = [
    ["x" => 12, "z" => 23],
    ["x" => 42, "z" => 64] etc...
]

Теперь мне нужно рисовать, скажем, «пунктирную линию» между всеми точками, в основном, сделать квадрат или замкнутый путь, содержащий только 90 градусов поворотов Я придумал этот код:

$x = 0;
$y = $this->getYCord(); 
$z = 0;

for($pi = 1; $pi >= count($points); $pi++){
    for($x = $points[$pi - 1]["x"]; $x <= $points[$pi]["x"]; $x += 0.5){
        $this->addDot(new Dot($x, $y, $z));
    }
    for($z = $points[$pi - 1]["z"]; $z <= $points[$pi]["z"]; $z += 0.5){
        $this->addDot(new Dot($x, $y, $z));
    }
}

Но, как вы можете видеть, это приведет к большому количеству ошибок или к ошибкам. Вопрос в том, что если вторая точка имеет меньшие координаты? тогда нам нужно -= в л oop. Любая помощь приветствуется! Спасибо!

1 Ответ

0 голосов
/ 06 апреля 2020

Возможный подход:

$left = min($points[$pi]["x"], $points[$pi - 1]["x"]);
$right = max($points[$pi]["x"], $points[$pi - 1]["x"]);
for($x = $left; $x <= $right; $x += 0.5) ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...