如何生成 sin 值来创建图像?

Posted

技术标签:

【中文标题】如何生成 sin 值来创建图像?【英文标题】:How to generate sin values to create an Image? 【发布时间】:2014-02-10 05:59:27 【问题描述】:

我正在为我的计算机科学课程的 sin 函数创建一个图像文件。

但是我根本不知道什么是sin函数!!

编写一个简单的 Java 程序来创建 sin 函数的图像。

文件格式:pgm(P2/灰色)

文件名:out.pgm

sin函数:

宽度/域/x:[0..2Pi]

y:实数 [-1.0..+1.0]

图片:

宽度:500 像素 (0,..,499)

高度:250 像素(从 sin 重复值 250 次)

像素值:整数 0,…,255

我几乎完成了 ASCII 图像创建和文件格式验证。

我剩下的唯一问题是如何生成 sin 值?

我找到了 Math.sin() 和 Math.PI,然后呢?

什么是 x?

y 是什么?

这里的域名是什么?

【问题讨论】:

x 是以弧度表示的角度,从零到 2*Pi,ysin(x)。这有帮助吗? @RogerRowland 好的,但为什么是 y: real numbers [-1.0..+1.0] 那是什么受助者? 这是sin 函数的输出 - 它 始终在这些限制范围内。也许只是把它放在一个电子表格中,看看你得到了什么,然后你就会更好地了解情节应该是什么样子。 @RogerRowland 我无法在 0 和 255 之间生成 goo.gl/i5Prkc 好吧,我舍不得给你做,你得想办法搞清楚步骤。你正在生成一个 500x250 像素的图像,你想要一个正弦曲线。因此,也许您从黑色图像开始,然后将 x 轴缩放到 0..2Pi,将 y 轴缩放到 -1..+1,并且对于每个 x 位置,您在 y 位置对应于正弦函数的输出。或许你可以实现something,展示一些代码,然后提出一个具体的问题。 【参考方案1】:

理论上,sinus 函数将每个(实际)值映射到 -1 和 1 之间的值。由于您无法使用计算机生成每个实际值,并且 sin 函数恰好是单调的,因此每 2 次重复一次* Pi,绘制 0 到 2*Pi 之间的值,每一步都有小幅增加。

这意味着:

x 是一个类似 [0,0.001,0.002,...2*Pi] 的数组

y 是 sin(x)

祝你作业顺利。

【讨论】:

域名是什么? width/domain/x: [0..2Pi] 如何映射0...2内的宽度? x 是您的域,它是 0 到 2Pi 之间的“所有”数字。因为你不能表达所有的实数,所以你使用一个数组,它的元素每一步都有一点变化。 很抱歉,但我仍然卡住了。我使用 excel 生成,但似乎没有介于 0 和 255 之间!我在 SkyDrive 中的文件:goo.gl/i5Prkc 这是一门计算机视觉课程,您对此充满热情 :) 但是我将如何从 0 ... 2pi 生成 0 到 255 的像素?

以上是关于如何生成 sin 值来创建图像?的主要内容,如果未能解决你的问题,请参考以下文章

图像处理基于matlab GIF生成含Matlab源码 623期

生成周期sin

如何使用飞镖生成图像

使用 sin() 生成的声音中的金属声音

使用matlab生成用于ROM初始化的coe文件(转)

如何在生成的热图上显示图像?