Я работаю над веб-приложением на основе PHP GD, и мне нужна помощь с рисованием полигонов.
У меня есть функция, которая может рисовать n-сторонний многоугольник. В этом случае мне просто интересно рисовать восьмиугольники.
Упрощенная функция выглядит так:
function drawoctagon($ourimage,$xpoint,$ypoint,$radius,$color){
$sides= 8;
$points = array();
for ($i = 1; $i <= $sides; $i++) {
$points[] = round( $radius * cos($i*2 * pi() / $sides) + $radius +$xpoint); // x
$points[] = round( $radius * sin($i*2 * pi() / $sides) + $radius + $ypoint); // y
}
imagefilledpolygon($ourimage, $points, $sides, $color);
}
//////////////////////////
Я называю эту функцию выше таким образом:
drawoctagon($png1,$xpoint,$ypoint,$radius,$linecolor44);
Но при условии, что я выполню эту строку выше 3 раз, при всех различных радиусах, восьмиугольники не концентрически … они расположены рядом и т. Д.
При создании массива $ points я добавил + $ xpoint и $ ypoint соответственно, чтобы переместить нарисованный восьмиугольник из верхнего левого угла, где он был создан.
Я надеюсь, что объяснил это правильно … но в основном мой вопрос:
как мне переписать эту функцию, чтобы нарисовать КОНЦЕНТРИЧЕСКИЕ восьмиугольники, чтобы, если она вызывалась несколько раз с одной и той же точкой x и точкой y (как центры многоугольника), несмотря на изменение радиуса, она будет создавать восьмиугольники с центром в одной и той же точке.
Дополнительные очки для вас, если вы оставляете функцию все еще способной к настройке для любого n-стороннего многоугольника.
Большое спасибо!
Центр вашего восьмиугольника с вашей функцией
x=$radius+ $xpoint
y=$radius+$ypoint
Вы можете попытаться удалить радиус радиуса из выражения центра
for ($i = 1; $i <= $sides; $i++) {
$points[] = round( $radius * cos($i*2 * pi() / $sides) + $xpoint); // x
$points[] = round( $radius * sin($i*2 * pi() / $sides) + $ypoint); // y
}
и введите то же самое $xpoint
а также $ypoint
в каждом полигоне, который вы создаете.
Других решений пока нет …