几个令人惊叹的函数图像--古董级做图软件

几个令人惊叹的函数图像--古董级做图软件

ID:27736730

大小:1.67 MB

页数:15页

时间:2018-12-05

几个令人惊叹的函数图像--古董级做图软件_第1页
几个令人惊叹的函数图像--古董级做图软件_第2页
几个令人惊叹的函数图像--古董级做图软件_第3页
几个令人惊叹的函数图像--古董级做图软件_第4页
几个令人惊叹的函数图像--古董级做图软件_第5页
资源描述:

《几个令人惊叹的函数图像--古董级做图软件》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、国外有人发现一个鲜为人知的古董级函数作图软件——GrafEq。这个软件只有2M大小,它的功能就只有一个:作出形如x2+y2=1的二元等式或者不等式的图像。令人惊叹的是,这个软件的图像绘制能力异常强大,Mathematica等大型专业数学软件完全不是它的对手。www.yasgyy.com这个软件早就没再更新了。它的“最新版本”是2.12,只支持Windows95到WindowsXP的系统,或者PowerPC7.12到MacOS9.2的系统,可见其年代久远。神奇的是,这个软件的官方网站依然健在,而且软件竟然也都能下载。如果你有幸还

2、能装上这款软件,你将有机会重温一次Windows95时代的软件安装画面。一些带有三角函数的方程,某些地方的图像变化非常剧烈,连Mathematica也无法准确地描绘出来:然而,GrafEq却能很好地描绘出来:注意,方程的图像显然无法形成实心的方块,这只是因为图像太密集罢了。既然有机会见到各种方程图像的真容,我们当然要多尝试一些更复杂的方程。下面是另外几个例子:要比哪个图像最帅,还是要数GrafEq官方网站上提供的一个示例:2012-11-30Update:今天,碰巧看到了这个软件的来头。这个软件的算法是JeffTupper在2

3、001年的一篇论文中提出的,感兴趣的读者可以在这里看到:http://www.dgp.toronto.edu/people/mooncake/papers/SIGGRAPH2001_Tupper.pdf在这篇论文中,JeffTupper创作了很多漂亮的函数图像,其中一个就是著名的Tupper自我指涉公式。论文中还有几个精彩的图像,分别重新绘制了一遍,贴出来和大家一同分享。以上原文From:http://www.matrix67.com/blog/archives/4447/,原文内容遵从CC版权协议·CopyRight:mat

4、rix67.comGPU异构计算:复杂函数图像绘制之前技术大牛Vczh同学开发了一个函数图像绘制程序,可以画出方程f(x,y)=0的图像。原理是假设f(x,y)是处处可微的,用图像上每一点的坐标带入函数f得到针对x和y的两个方程,再用牛顿迭代法求解,这样所有的点最后就会收敛到一个点集,然后画到图像上。用他的程序可以画出各种各样令人惊叹的方程图形。但是他的程序非常慢,因为对每一个点坐标都用牛顿迭代法求解是一项很费时的任务,即使采用了Parallel.For,CPU算起来也很吃力。经过研究程序之后觉得可以用擅长并行计算的显卡来加速

5、迭代法求解的过程。用OpenCL来完成这个任务再合适不过了。整个过程还是相当顺利的,完全在原始程序的基础上改成。仅稍微改变了策略。步骤如下:1解析输入函数f(x,y)之后,分别生成∂f/∂x和∂f/∂y两个偏导数,然后将这三个二元函数转化为合法的OpenCL表达式。2用OpenCL实现牛顿迭代法。3将图像上的每一点分派到一个OpenCL线程,然后由无数并行的OpenCL线程计算自己的点。其中OpenCL代码如下:fp_tfunc(fp_tx,fp_ty){return{动态生成};}fp_tdf_dx(fp_tx,fp_ty)

6、{return{动态生成};}fp_tdf_dy(fp_tx,fp_ty){return{动态生成};}fp_tsolvex(fp_tstart,constfp_tconsty){for(inti=0;i=-EPSILON){returnstart;}fp_td=df_dx(start,consty);if(d<=EPSILON&&d>=-EPSILON){returnNAN;}els

7、e{start-=result/d;}}returnNAN;}kernelvoidComputeX(globalwrite_onlyfp_t*points,intunit,intwidth,intcx,intcy,floatorigin_x,floatorigin_y){intgx=get_global_id(0);intgy=get_global_id(1);uintwrite_loc=gx+gy*width;fp_tpy=origin_y+(fp_t)(gy+1-cy)/unit;fp_tpx=origin_x+(fp_t

8、)(cx-gx-1)/unit;points[write_loc]=solvex(px,py);}这是求解f(x,a)=0部分的代码,求解f(b,y)=0的与之基本一样。其中fp_t是根据情况定义的typedef,可能是float或double。因为不是所有的OpenCL设备

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。