我已经通过一个简单的循环对其进行了测试,并且你们根本没有回答这个人的问题。剪切和粘贴不会帮助人们。难怪如此众多的大众媒体骗局取得了如此巨大的成功。与一个重复别人的错误的人一起,这不足为奇。人们甚至为这些错误答案给出正面的声誉率?难以置信的!但是,这再次与我先前的言论相吻合。
因此,首先,我们将向人们解释三角波是什么。好吧,它是一个波,其周期由两个相等的倾斜斜坡组成。与SAWTOOTH相反,斜面向上倾斜并且斜面与第一斜面相同,但是斜面向下倾斜,与SAWTOOTH相反,该斜面在反向翻折之后具有向上倾斜的斜面或向下倾斜的斜面。
PS:最后一位给出“ y(x)=(2a /π)arcsin(sin((2π/ p)* x))”的人太复杂了,我们正在寻找一种快速的c ++例程,因此绝对不应该使用三角函数问题。
测试程序:
(...)
for (byte V=0; V<255; V++)
{
unsigned int x = evenramp(V);
plotRGB(0,0,x,x,x);
delay(100);
}
float triangleattempt(unsigned int x)
{
return 255 * (255 - abs(255 - 2*(x % 255)));
}
=>我找到了一个资料来源,该资料可以用数学符号确切地说明答案:http : //mathworld.wolfram.com/TriangleWave.html
我已经在名为KmPlot的Linux程序上测试了该公式。Linux用户可以通过root终端输入apt-get install kmplot来获取kmplot,如果不起作用,请尝试使用常规终端,然后键入sudo apt-get install kmplot,如果不起作用,请观看此youtube视频以获取有关的一般说明安装Linux程序http://www.youtube.com/watch?v=IkhcwxC0oUg
因此,对线程问题的正确回答是以下所示c ++形式的对称三角函数声明的示例:
(...)
int symetrictriangle(float x)
{
unsigned int period = 30;
unsigned int amplitude = 100;
return amplitude * 2 * abs(round(x/period)-(x/period));
}
(...)
加油!