【发布时间】:2014-10-23 04:27:52
【问题描述】:
我正在尝试在一个圆圈上绘制音频文件的频谱。像这样:
所以在圆圈上,我只想像您在图像上看到的那样绘制矩形。
我有这个代码:
public void onRender(Canvas canvas, FFTData data, Rect rect) {
canvas.drawCircle(rect.width()/2, rect.height()/2, 200, mPaint);
for (int i = 0; i < data.bytes.length / mDivisions; i++) {
byte rfk = data.bytes[mDivisions * i];
byte ifk = data.bytes[mDivisions * i + 1];
float magnitude = (rfk * rfk + ifk * ifk);
int dbValue = (int) (10 * Math.log10(magnitude));
}
}
其中 FFTData 是 Android 提供给我的快速傅立叶变换数据。现在在我的 dbValue 中,我得到了信号的强度。 mDivisions 是我想要多少条。目前设置为16,因为我不知道我可以在圆圈上设置多少。
我不知道如何在圆线上绘制以他的中心为中心的矩形...所以我想要一个高度基于 dbValue 的矩形,以便获得高和低矩形。并且中心必须放在我的圆线上。
有人可以帮我解决这个数学公式吗?
【问题讨论】:
-
我通过一个函数解决了你的问题,你传递了矩形的高度和 x 轴的度数,它为你绘制它是你想要的还是你的问题解决了。
mySpectrumDrawer(int centerX, int centerY,int R,int height, int angel)@ 987654321@ -
酷,我现在有所有相同的块,但我需要翻译,旋转..你可以在这里分享你的功能吗?