我遇到了一些我想要完成的事情,而不需要使用任何框架或互联网上的其他绘图工具,这就是只使用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。
发布于 2013-06-02 13:08:18
您可以使用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坐标(调整到您的绘图区域sise),根据所选函数计算y坐标、度值和绘图区域大小,然后在这些点之间画线就可以了。
https://stackoverflow.com/questions/16882839
复制相似问题