我是一个完全初学者,所以请原谅我,如果这可能是愚蠢或不当的我问。我在试着制作自己的虚拟示波器。我真的不知道该怎么解释,但我想“缩小”波形中的峰值,即窗口大小。我不确定我在这里做错了什么或者我的代码有什么问题。我试过改变缓冲区大小,改变x/y的乘数。我的素描是改编自一个小例子素描。非常感谢您的帮助。
import ddf.minim.*;
Minim minim;
AudioInput in;
int frames;
int refresh = 7;
float fade = 32;
void setup()
{
size(800, 800, P3D);
minim = new Minim(this);
ellipseMode(RADIUS);
// use the getLineIn method of the Minim object to get an AudioInput
in = minim.getLineIn(Minim.STEREO);
println (in.bufferSize());
//in.enableMonitoring();
frameRate(1000);
background(0);
}
void draw()
{
frames++; //same saying frames = frames+1
if (frames%refresh == 0){
fill (0, 32, 0, fade);
rect (0, 0, width, height);
}
float x;
float y;
stroke (0, 0);
fill (0,255,0);
// draw the waveforms so we can see what we are monitoring
for(int i = 0; i < in.bufferSize() - 1; i++)
{
x = width/2 + in.left.get(i) * height/2;
y = height/2- in.right.get(i) * height/2;
ellipse(x, y, .5, .5);
}
}
谢谢
1条答案
按热度按时间lxkprmvk1#
编辑:你不需要在这里按下和弹出矩阵。我想我对它的理解也不够。你可以用翻译。
你可以使用矩阵来创建一个相机对象,有大量的资料,你可以阅读理解背后的数学,并在任何地方实现它。
然而,这里可能有一个更简单的解决方案。可以将pushmatrix和popmatrix与translate结合使用。按下并弹出矩阵将操纵矩阵堆栈-你创建一个新的“框架”,在那里你可以玩翻译,然后弹出原来的框架(这样你就不会因为在每个框架上应用新的翻译而迷失方向)。
按下矩阵,平移z坐标一次,然后再绘制所有要缩小的对象,弹出矩阵。您可以为翻译设置一个变量,这样您就可以用鼠标控制它。
下面是一个粗略的示例(我没有所有这些库,因此无法将其添加到代码中):