我至少有12个职位。最小值和最大值是0和1.因此,如果我想在12个位置绘制一个正弦波(即每个位置一个值),我会得到一个像这样的值列表:0.5,0.66,0.83,1,0.83, 0.66,0.5,0.33。 0.16,0,0.16,0.33,0.5
但是,如果我想将poisitons的数量扩展到24,或48或96等,该怎么办?我将如何算出值(即一些算法而不是手工制作)?
请注意,我的正弦波不是重复的正弦波,只是由上面列表构成的单个数字。
答案 0 :(得分:1)
正弦波方程是y = sin x(对于“单位”正弦波)。
您需要做的是将x轴划分为您想要显示的位置数,然后显示这些x值。
由于您的x max为1,请使用: 注意:由于正弦波不会在x轴上以1结束,我假设您希望将其绑定到这些值,因此x轴将被缩放以使1.0 = 2 *裨强>
double xStep = 1.0/NumberOfPositions;
然后做:
for(double x = 0.0; x < 1.0; x += xStep)
{
double yValue = Math.Sin(x*2*Math.PI); // Since you want 2*PI to be at 1
}
OR:
double xStep = 1.0/NumberOfPositions;
double[] yValues = new double[NumberOfPositions+1];
double[] xValues = new double[NumberOfPositions+1];
for (int i = 0; i < NumberOfPositions+1; i++)
{
xValues[i] = i * xStep;
yValues[i] = Math.Sin(xValues[i]*2*Math.PI); // Since you want 2*PI to be @ 1
}