我遇到了一些我想要完成的事情,而不使用互联网上的任何框架或其他图形工具,这些图形工具仅使用PHP绘制三角函数,如果需要,还可以使用SQL。我知道GD库,但没有一个功能有用。我写了一个小脚本,虽然它也没有用。我的目标是做到以下几点:
在循环遍历函数的所有值之后,需要做什么来绘制函数图?值必须是单独的数组吗?需要使用哪些函数进行绘图?
<?php
header("Content-type: image/png");
function graphFunction($function, $startDegree, $endDegree)
{
$functionList = array('cos', 'sin', 'tan');
if (strtolower($function) == 'cos')
{
$cosValues = array();
for ($c = $startDegree; $c < $endDegree; $c++)
{
array_push($cosValues, cos(deg2rad($c)));
$graph = imagecreatetruecolor(500,250);
$col_poly = imagecolorallocate($graph, 255, 255, 255);
imagepolygon($graph, [the cosine values] , 34, $col_poly);
imagepng($graph);
imagedestroy($graph);
}
}
}
echo graphFunction('cos', 0, 360);
?>
这应该是一个示例函数,所以不需要批评无用的控制结构,因为有办法在数据库中存储很多东西,无论如何。我希望得到一些反馈,希望用PHP可以实现。
答案 0 :(得分:1)
您可以使用PHP执行此操作。我只是尝试在if语句中使用以下内容,它似乎有效。
$height = 250;
$offset = $height/2;
$graph = imagecreatetruecolor(500, $height);
$col_poly = imagecolorallocate($graph, 255, 255, 255);
for ($c = $startDegree; $c < $endDegree; $c++)
{
$this_x = $c;
$next_x = $this_x + 1;
$this_y = cos(deg2rad($this_x)) * $offset + $offset;
$next_y = cos(deg2rad($next_x)) * $offset + $offset;
imageline($graph, $this_x, $this_y, $next_x, $next_y, $col_poly);
}
imagepng($graph);
imagedestroy($graph);
所以我所做的是定义图形高度,因为图形中点的y坐标需要设置为它们适合内部。然后在for循环中我将当前度数值作为我的x坐标,计算它的y坐标,然后对下一个度数值进行相同的计算,然后在这两个点之间画一条线。
这有点笨拙,所以我相信你会想要清理一下。此外,您还需要考虑图形的宽度(我在此处发布的内容将停留在500像素宽,因此如果您想要绘制更宽的范围,或者如果您想绘制300 - 600度,它将会刚开始进入你的图形区域。
您还在for循环中定义了图像和颜色,我更改了这一步,因此您不会在每一步重新创建图像资源并丢失所有以前的数据。
无论如何,它只是一个示例功能,对吧?但是将度数值用作x坐标(根据图形区域调整),根据所选函数计算y坐标,度数值和绘图区域大小,然后在点之间绘制线条应该有效。