问题描述
我需要使用 drawline 绘制矩形波,具体取决于占空比、频率和幅度(使用轨迹栏)。一切正常,除了占空比。
这是我的波的公式,基本上是方波:
double y = Math.Sign(Math.Sin(x / 180 * Math.PI)) * amplitude.Value;
我使用一个图片框来绘制它(每个整数都只是为了在图片框上更好地显示):
private void P_ZoneDeTrace_Paint(object sender,PaintEventArgs e)
{
Graphics g = e.Graphics;
Pen myPen = new Pen(Color.Green);
double x1 = 10;
double y1 = 0;
for (double x = 1; x < pictureBox1.Width*10; x++)
{
double y = Math.Sign(Math.Sin(x / 180 * Math.PI)) * amplitude.Value;
g.DrawLine(myPen,(float)x1,(float)y1 + 120,(float)(x / fréquence.Value) + 10,(float)y + 120);
x1 = x / fréquence.Value + 10;
y1 = y;
}}
我现在有一个规则的方波。现在我需要将它转换成矩形波,使用占空比,它是一个轨迹条,从 0 到 10。如果它等于 0,则波始终为 -1,如果等于 10,则波始终为 1。
在我的 else
中,当占空比介于 1 和 9 之间时,我尝试管理波形:
- 接近 1,每个模式都必须在 -1 处停留更长时间
- 接近 9,每个模式都必须在 1 处停留更长时间
这是 y 公式下的代码,用于执行此操作:
int i = 0;
int val = 0;
if (rapport.Value == 0)
{
if (y < 0)
{
y = y * -1;
}
}
if (rapport.Value == 10)
{
if (y > 0)
{
y = y * -1;
}
}
else
{
if (y>0 && i < rapport.Value *18 && val==0)
{
y = y * -1;
i++;
}
if (y > 0 && i == (rapport.Value * 18))
{
val = 1;
}
if (y < 0 && val == 1)
{
i = 0;
val = 0;
}
}
我将“y”乘以 -1 以从 -1 到 1,反之亦然。 “融洽”是占空比,它乘以 18 以与我的波浪成正比。 “val”帮助我修改第一个模式以外的其他模式(如果我不使用“val”,则只修改第一个)
问题是只有第一个模式运行良好,如前所述。对于其他模式,当占空比接近 1 时(如果接近 9,则相反),波将保持在 1 处。
第一个模式,这是正确的:
其他模式,错了,应该和第一个一样:
每个模式都应该与第一个相同,正如您所看到的,它不起作用。他们正在使用轨迹栏移动,但还不够,如上图所示)。
如果你能帮我解决这个问题,每个模式都必须表现得像第一个?提前致谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)