#define STEP_SIZE 400 U0 LowPassFilterDemo() { F64 y, y1, t, dt; CDC *dc = DCAlias; WinBorder; WinMax; DocClear; dc->color = BLUE; GrLine(dc, 0, 0, 0, STEP_SIZE); GrLine(dc, 0, STEP_SIZE, GR_WIDTH / 2, STEP_SIZE); GrLine(dc, GR_WIDTH / 2, STEP_SIZE, GR_WIDTH / 2, 0); GrLine(dc, GR_WIDTH / 2, 0, GR_WIDTH, 0); PressAKey; dc->color = CYAN; t = 0; y = 0.0; while (t < GR_WIDTH) { dt = 1.0; if (t < GR_WIDTH / 2) y1 = STEP_SIZE - STEP_SIZE * Exp(-0.01 * t); else y1 = STEP_SIZE * Exp(-0.01 * (t - GR_WIDTH / 2)); GrLine(dc, t, y, t + dt, y1); y = y1; t += dt; } PressAKey; dc->color = BLACK; t = 0; y = 0.0; while (t < GR_WIDTH) { dt = 1.0; if (t < GR_WIDTH / 2) y1 = 0.99 * y + .01 * STEP_SIZE; else y1 = 0.99 * y; GrLine(dc, t, y, t + dt, y1); y = y1; t += dt; } PressAKey; dc->color = RED; t = 0; y = 0.0; while (t < GR_WIDTH) { dt = Rand / 10; if (t < GR_WIDTH / 2) y1 = LowPass1(.01, y, STEP_SIZE, dt); else y1 = LowPass1(.01, y, 0, dt); GrLine(dc, t, y, t + dt, y1); y = y1; t += dt; } PressAKey; dc->color = GREEN; t = 0; y = 0.0; while (t < GR_WIDTH) { dt = Rand / 10; if (t < GR_WIDTH / 2) y1 = LowPass1(.1, y, STEP_SIZE, dt); else y1 = LowPass1(.1, y, 0, dt); GrLine(dc, t, y, t + dt, y1); y = y1; t += dt; } PressAKey; DCDel(dc); DCFill; } LowPassFilterDemo;