android - 如何在android中使用sin()函数和 Canvas 绘制正弦波曲线?

标签 android android-canvas trigonometry

我是 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);

你可以尝试一次,然后你会得到如下图所示的正弦波:

sine wave

我认为这种方法比将sin的值转换为坐标更容易。

关于android - 如何在android中使用sin()函数和 Canvas 绘制正弦波曲线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32986371/

相关文章:

android - 现在必须显式声明注释处理器。 - compiler-1.1.1.jar (android.arch.lifecycle :compiler:1. 1.1)

java - 如何替换字符串中的指定空格?

java - android - java - 通过 Intent 、 bundle 或 Parcelables 传递值?

java - 噪音()没有给我一个广泛的值

java - 反正弦不会改变 Java 中变量的值

java - 使用 IabHelper 时出现内存泄漏(应用内计费 v3)

android - drawLines 方法在缩放的 Canvas 上产生奇怪的效果

Android - 在自定义 map 上绘制 gps 坐标

android - 如何在 ImageView 上画线而无需重新加载它

java - 无法让子弹以正确的角度射击?