首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作图三角函数

作图三角函数
EN

Stack Overflow用户
提问于 2013-06-02 07:37:57
回答 1查看 219关注 0票数 0

我遇到了一些我想要完成的事情,而不需要使用任何框架或互联网上的其他绘图工具,这就是只使用PHP绘制三角函数,如果需要的话,使用SQL。我知道GD库,但是没有一个函数是有用的。我写了一个小脚本,虽然它也不起作用。我的目标是做以下工作:

  1. 允许将trig函数名、起始值和结束值作为参数添加。
  2. 检查一个函数是cos,tan还是sin。
  3. 以度为单位循环遍历所有给定的起始值和结束值,并转换为弧度值。
  4. “如果需要,将”所有值添加到数组中,并绘制给定点的函数。

在循环遍历函数的所有值之后,需要做些什么来绘制函数?这些值必须位于单独的数组中吗?图形化需要使用哪些功能?

代码语言:javascript
复制
<?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。

EN

回答 1

Stack Overflow用户

发布于 2013-06-02 13:08:18

您可以使用PHP来完成这一任务。我刚刚在你的if语句中尝试了下面的内容,它似乎是有效的。

代码语言:javascript
复制
$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坐标、度值和绘图区域大小,然后在这些点之间画线就可以了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16882839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档