- 13, May 2024
- #1
Рисование эллипса вне прямоугольника, какова математика для этого?
Я нарисовал прямоугольник и теперь хочу нарисовать за его пределами эллипс, чтобы прямоугольник едва помещался внутри эллипса.
Мне не нужен идеальный круг вокруг прямоугольника, который я могу сделать с помощью диагонали.
Мне нужен эллипс, едва огибающий углы прямоугольника.
Вот мой код: края прямоугольника выходят за пределы эллипса.
Как я могу это исправить?
Если эллипс немного больше прямоугольника, даже это нормально,
но должен работать для прямоугольника любых пропорций.
$ширина=500; $высота=300;
$im= imagecreatetruecolor($width, $height);
$b= imagecolorallocate($im, 0, 0, 0);
$w= imagecolorallocate($im, 255, 255, 255);
imagefill($im, 0,0, $b);
$х=($ширина/2)-75;
$y=($высота/2)-25;
$x1=($ширина/2)+75;
$y1=($высота/2)+25;
imagerectangle($im, $x,$y, $x1,$y1, $w);
//попробуем некоторые соотношения
$х= ($х1-$х);
$y=($y1-$y);
$ratio= ячейка($x/$y);
//echo "$x = $y = $ratio";exit;
$x=$x+ ceil(отношение $x/$);
$y=$y+ ceil($y/$ratio);
//рисуем эллипс вокруг прямоугольника
imageellipse($im, ($width/2), ($height/2),
$х,$у,
$в);
header("Тип контента: изображение/png");
изображениеpng ($ IM);
?>
Мне нужен эллипс, едва огибающий углы прямоугольника.
Вот мой код: края прямоугольника выходят за пределы эллипса.
Как я могу это исправить?
Если эллипс немного больше прямоугольника, даже это нормально,
но должен работать для прямоугольника любых пропорций.
$ширина=500; $высота=300;
$im= imagecreatetruecolor($width, $height);
$b= imagecolorallocate($im, 0, 0, 0);
$w= imagecolorallocate($im, 255, 255, 255);
imagefill($im, 0,0, $b);
$х=($ширина/2)-75;
$y=($высота/2)-25;
$x1=($ширина/2)+75;
$y1=($высота/2)+25;
imagerectangle($im, $x,$y, $x1,$y1, $w);
//попробуем некоторые соотношения
$х= ($х1-$х);
$y=($y1-$y);
$ratio= ячейка($x/$y);
//echo "$x = $y = $ratio";exit;
$x=$x+ ceil(отношение $x/$);
$y=$y+ ceil($y/$ratio);
//рисуем эллипс вокруг прямоугольника
imageellipse($im, ($width/2), ($height/2),
$х,$у,
$в);
header("Тип контента: изображение/png");
изображениеpng ($ IM);
?>