为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 PHP 生成的图片中定义一个圆形区域来设置随机坐标?

如何在 PHP 生成的图片中定义一个圆形区域来设置随机坐标?

PHP
蝴蝶不菲 2022-07-09 10:37:42
我正在尝试在 PHP 生成的图片中的随机位置绘制圆圈,从图像的中心点开始并包含在“N”像素半径中。我知道如何在方形边界中进行操作(我也很清楚如何以菱形进行操作),但是圆形的方法对我来说有点难以理解。这是我到目前为止的代码。图像为 600*600px,我在 300*300px 的正方形区域中水平和垂直居中生成 100 个 25*25px 的白色圆圈。$w = $h = 600;$img = imagecreatetruecolor($w,$h);$cl = imagecolorallocatealpha($img,255,255,255,0);for ($i=0;$i<=100;$i++){ // GENERATE 100 CIRCLES    $x = rand(150,450);    $y = rand(150,450);    imagefilledellipse($img, $x, $y, 25, 25, $cl);}header('Content-Type: image/jpeg');imagejpeg($img);imagedestroy($img);在圆形边界中生成这些圆圈的最佳方法是什么?因此,例如,如果 $x=155 它不可能在 $y=155,或者如果 $x=445 它不可能是 $y=445感谢帮助 !编辑这是带有极坐标的新代码$w = $h = 600;$img = imagecreatetruecolor($w,$h);$cl = imagecolorallocatealpha($img,255,255,255,0);for ($i=0;$i<=100;$i++){ // GENERATE 100 CIRCLES    $r = rand(25,(300-25));    $a = rand(0,360);    $x = $r * cos(deg2rad($a));    $y = $r * sin(deg2rad($a));    imagefilledellipse($img, $x, $y, 25, 25, $cl);}header('Content-Type: image/jpeg');imagejpeg($img);imagedestroy($img);
查看完整描述

1 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

您可以随机化极坐标,而不是试图找到 (x,y) 坐标:

  • 0° 到 360° 之间的角度

  • 半径在 25 和 300-25 之间:有了这些限制,您可以确定您的小圆圈将始终位于圆圈边界内。

然后通过标准公式转换这些极坐标

x = r * cos(t)
y = r * sin(t)


查看完整回答
反对 回复 2022-07-09
  • 1 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信