我是 android 的新手,我正在尝试在加速度计值发生变化时在屏幕上绘制正弦波。我只需要在屏幕上动态绘制一个普通的正弦波(仅限于屏幕)。我可以在 Canvas 上绘制坐标并验证屏幕尺寸,但我无法想到如何将正弦值(范围从 0 到 1)转换为屏幕坐标。
我在 onSensorChanged() 中尝试这样的事情:
tvarY = sin(tvarX)*2.0; // tvarX and tvarY are double values
tvarX= (tvarX+ 2); // 2.0 is for magnifying
xPosition = (float)tvarX;
yPosition = (float)tvarY;
但是使用这种方法的 tvarx 的值总是在从无穷大到 0 之间来回切换。任何人都可以建议我任何方法来更改值并将它们转换为屏幕坐标以绘制适当的正弦波吗?
谢谢:-)
最佳答案
我认为你可以使用函数:
path.rQuadTo(float dx1, float dy1, float dx2, float dy2)
与 quadTo
相同,但坐标被认为是相对于此轮廓上的最后一个点。
我写了一句话供大家引用:
Path mpath = new Path();
mpath.moveTo(0, 100);
mpath.rQuadTo(20, 5, 40, 0);
mpath.rQuadTo(20, -5, 40, 0);
你可以尝试一次,然后你会得到如下图所示的正弦波:
我认为这种方法比将sin的值转换为坐标更容易。
关于android - 如何在android中使用sin()函数和 Canvas 绘制正弦波曲线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32986371/