Php 三角函数作图
我遇到了一些我不想使用任何框架或互联网上的其他绘图工具来完成的事情,即只使用PHP和SQL(如果需要)来绘制三角函数。我知道GD库,但是没有一个函数是有用的。我写了一个小脚本,虽然它也不真正起作用。我的目标是做到以下几点:Php 三角函数作图,php,Php,我遇到了一些我不想使用任何框架或互联网上的其他绘图工具来完成的事情,即只使用PHP和SQL(如果需要)来绘制三角函数。我知道GD库,但是没有一个函数是有用的。我写了一个小脚本,虽然它也不真正起作用。我的目标是做到以下几点: 允许将触发函数名称、起始值和结束值添加为参数 检查函数是cos、tan还是sin 以度为单位循环所有给定的起始值和结束值,并转换为弧度 如果需要,将所有值“添加”到数组中,并在给定点的情况下绘制函数图 在遍历函数的所有值之后,需要做什么来绘制函数图?这些值必须在单独的数组中吗
<?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实现。您可以通过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);
$height=250;
$offset=$height/2;
$graph=ImageCreateTureColor(500,$height);
$col_poly=imagecolorallocate($graph,255,255);
对于($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\u x、$this\u y、$next\u x、$next\u y、$col\u poly);
}
图像PNG($图形);
图像(图形);
所以我所做的是定义一个图形高度,因为图形中点的y坐标需要设置为它们适合内部。然后在for循环中,我只取当前的度值作为x坐标,计算y坐标,然后计算下一个度值,然后在这两点之间画一条线
它有点脏,所以我相信你会想把它清理一下的。此外,你还需要考虑图形的宽度(我在这里发布的内容将在500像素宽处停止,因此如果你想绘制更宽的范围,或者如果你想绘制300-600度的图形,它将从图形区域的一半开始
您还定义了for循环中的图像和颜色,我对其进行了更改,这样您就不会在每个步骤中重新创建图像资源,并丢失所有以前的数据
无论如何,这只是一个示例函数,对吗?但是使用度值作为x坐标(调整到图形区域sise),根据所选函数计算y坐标,度值和图形区域大小,然后在点之间绘制线应该可以工作