+ -
当前位置:首页 → 问答吧 → [原创]一元二次函数图像 ---抛砖引玉

[原创]一元二次函数图像 ---抛砖引玉

时间:2006-12-15

来源:互联网

由于水平有限,算法有误,仅仅是画出了图像,但再怎么说也我的创作.

此帖特别鸣谢 fakir 老兄,是在参考他的帖子的算法后构思出来的.

是不是有点自恋了?:lol

还望大家多多指点了.以此帖抛砖引玉,欢迎大家加入讨论先进算法;
复制PHP内容到剪贴板
PHP代码:

<?php
/*
*
*The author : 寒氵云;
*
*This sequence's action is ... y = x ^ 2;
*
*Time : 2006.12
*
*/
Header("Content-type: image/png");
$width  = 800 ;    /*图像的宽度*/
$height = 400 ;    /*图像的高度*/
$ctrl   = 15 ;  /* 控制将一个象素分成多少份*/
$pixel  = 500 ; /* 画点的个数; */
$xOffset= 300 ; /* y 轴的偏移量;*/
$yOffset= 400 ; /* x 轴的偏移量;*/
$im     = imagecreate($width , $height);
$cream  = imagecolorallocate($im , 255 , 255 , 200);
$blue   = imagecolorallocate($im , 0 , 0 , 255);
$black  = imagecolorallocate($im , 0 , 0 , 0);
imageline($im , 0 , $xOffset , $width , $xOffset , $black); /* x 轴 */
imageline($im , $yOffset , 0 , $yOffset , $height , $black); /* y 轴 */
imagestring($im , 2 , ($yOffset + 2) , ($xOffset + 2) , "0" , $blue); 
/* 设置坐标原点 ;*/
for ($i = 0 ; $i < $pixel ; $i++)
{
    $k  = $i / $ctrl ;
    $y  = $xOffset - $k * $k ;
    $x  = $i + $yOffset ;
    $xL = $yOffset - $i ;
    imagesetpixel($im , $x , $y , $blue);
    imagesetpixel($im , $xL , $y , $blue);
    /* 打印坐标值;*/
    if ($i % $ctrl == 0)
    {
        imagestring($im , 1 , ($x - 1) , ($xOffset - 4) , "|" , $blue);
        imagestring($im , 1 , ($x) , ($xOffset + 4) , $j++ , $black);
        imagestring($im , 1 , ($xL - 1) , ($xOffset - 4) , "|" , $blue);
        imagestring($im , 1 , ($xL) , ($xOffset + 4) , "-".$u++ , $black);
    }
}
imagepng($im);
imagedestroy($im);
?>

[ 本帖最后由 yyj0k 于 2006-12-15 16:06 编辑 ]

作者: hy0kl   发布时间: 2006-12-14

负X轴上后面的对不上刻度了!:P

作者: Nickboy   发布时间: 2006-12-14

哦,对了,怎么发到这里了啊?
干吗不发到原创区?

作者: Nickboy   发布时间: 2006-12-14

不敢发在那发.:$

[ 本帖最后由 yyj0k 于 2006-12-14 19:16 编辑 ]

作者: hy0kl   发布时间: 2006-12-14

引用:
原帖由 yyj0k 于 2006-12-14 19:08 发表
不敢发在那发.:$
帮你转过去? :lol

作者: xlmo   发布时间: 2006-12-14

那太谢谢了.:$

作者: hy0kl   发布时间: 2006-12-14

不错不错,多弄几个漂亮一点的曲线

作者: cator   发布时间: 2006-12-14

在画这个图像的过程中,我发现我现在有点本末倒置了:

好多的数学知识都被我丢弃,实在是惭愧哪.

还望高手不吝赐教!

作者: hy0kl   发布时间: 2006-12-15

;P ;P

作者: kenus   发布时间: 2006-12-15

复制PHP内容到剪贴板
PHP代码:
应该能画圆吧!
<?php
/*
*
*The author : 寒氵云;
*
*This sequence's action is ... y = x ^ 2;
*
*Time : 2006.12
*
*/
Header("Content-type: image/png");
$width  = 800 ;    /*图像的宽度*/
$height = 400 ;    /*图像的高度*/
$ctrl   = 15 ;  /* 控制将一个象素分成多少份*/
$pixel  = 360 ; /* 画点的个数; */
$xOffset= 300 ; /* y 轴的偏移量;*/
$yOffset= 400 ; /* x 轴的偏移量;*/
$R=200;
$im     = imagecreate($width , $height);
$cream  = imagecolorallocate($im , 255 , 255 , 200);
$blue   = imagecolorallocate($im , 0 , 0 , 255);
$black  = imagecolorallocate($im , 0 , 0 , 0);
imageline($im , 0 , $xOffset , $width , $xOffset , $black); /* x 轴 */
imageline($im , $yOffset , 0 , $yOffset , $height , $black); /* y 轴 */
imagestring($im , 2 , ($yOffset + 2) , ($xOffset + 2) , "0" , $blue); 
/* 设置坐标原点 ;*/
for ($i = 0 ; $i < $pixel ; $i++)
{
    $k  = $i / $ctrl ;
    $x  = sin(deg2rad($i))*$R+$yOffset;
    $y  = cos(deg2rad($i))*$R+$xOffset ;
    $xL = $yOffset - $i ;
    imagesetpixel($im , $x , $y , $blue);
    imagesetpixel($im , $xL , $y , $blue);
    /* 打印坐标值;*/
    if ($i % $ctrl == 0)
    {
        imagestring($im , 1 , ($x - 1) , ($xOffset - 4) , "|" , $blue);
        imagestring($im , 1 , ($x) , ($xOffset + 4) , $j++ , $black);
        imagestring($im , 1 , ($xL - 1) , ($xOffset - 4) , "|" , $blue);
        imagestring($im , 1 , ($xL) , ($xOffset + 4) , "-".$u++ , $black);
    }
}
imagepng($im);
imagedestroy($im);
?>
[ 本帖最后由 muqiao 于 2006-12-16 01:25 编辑 ]

作者: muqiao   发布时间: 2006-12-16

椭圆,呵呵~~~
复制PHP内容到剪贴板
PHP代码:

<?php
/*
*
*The author : 寒氵云;
*
*This sequence's action is ... y = x ^ 2;
*
*Time : 2006.12
*
*/
Header("Content-type: image/png");
$width  = 800 ;    /*图像的宽度*/
$height = 600 ;    /*图像的高度*/
$ctrl   = 15 ;  /* 控制将一个象素分成多少份*/
$pixel  = 360 ; /* 画点的个数; */
$xOffset= 300 ; /* y 轴的偏移量;*/
$yOffset= 400 ; /* x 轴的偏移量;*/
$ar = 200;
$br = 150;
$im     = imagecreate($width , $height);
$cream  = imagecolorallocate($im , 255 , 255 , 200);
$blue   = imagecolorallocate($im , 0 , 0 , 255);
$black  = imagecolorallocate($im , 0 , 0 , 0);
imageline($im , 0 , $xOffset , $width , $xOffset , $black); /* x 轴 */
imageline($im , $yOffset , 0 , $yOffset , $height , $black); /* y 轴 */
imagestring($im , 2 , ($yOffset + 2) , ($xOffset + 2) , "0" , $blue); 
/* 设置坐标原点 ;*/
for ($i = 0 ; $i < $pixel ; $i++)
{
    $k  = $i / $ctrl ;
    $x  = cos(deg2rad($i))*$ar+$yOffset;
    $y  = sin(deg2rad($i))*$br+$xOffset;
    $xL = $yOffset - $i ;
    imagesetpixel($im , $x , $y , $blue);
    //imagesetpixel($im , $xL , $y , $blue);
    /* 打印坐标值;*/
    if ($i % $ctrl == 0)
    {
        imagestring($im , 1 , ($x - 1) , ($xOffset - 4) , "|" , $blue);
        imagestring($im , 1 , ($x) , ($xOffset + 4) , $j++ , $black);
        imagestring($im , 1 , ($xL - 1) , ($xOffset - 4) , "|" , $blue);
        imagestring($im , 1 , ($xL) , ($xOffset + 4) , "-".$u++ , $black);
    }
}
imagepng($im);
imagedestroy($im);
?>

作者: muqiao   发布时间: 2006-12-16

楼上的高人,修改了代码后能出现如此多的不同图形,小弟真是佩服.

就把最上面的一段注释去了吧,怪不好意思的.:lol :$ :lol

作者: hy0kl   发布时间: 2006-12-16

大学数学,我把弄丢了
虽然我是数理系的,那两个是高中的曲线方程里的,没什么值得佩服的
呵呵~~
第一次玩gd2函数竟然用了你的源码,
呵呵~~~:D

作者: muqiao   发布时间: 2006-12-16

引用:
大学数学,我把弄丢了
虽然我是数理系的,那两个是高中的曲线方程里的,没什么值得佩服的
呵呵~~
第一次玩gd2函数竟然用了你的源码,
呵呵~~~
幸会幸会:lol

作者: hy0kl   发布时间: 2006-12-17

不错,用什么方法实现的?
C语言怎么实现>?>?

作者: 456e   发布时间: 2007-01-10

php + GD库.

作者: hy0kl   发布时间: 2007-01-11