mirror of
https://github.com/stasenso/rp_pico_display_engine.git
synced 2026-06-26 21:32:41 +03:00
Render sine wave as continuous polyline
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
#include "display/render/sine_wave.h"
|
#include "display/render/sine_wave.h"
|
||||||
|
#include "display/render/line.h"
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
void render_sine_wave(
|
void render_sine_wave(
|
||||||
@@ -18,10 +19,16 @@ void render_sine_wave(
|
|||||||
float step = (2.0f * (float)M_PI * frequency) / (float)(num_points - 1u);
|
float step = (2.0f * (float)M_PI * frequency) / (float)(num_points - 1u);
|
||||||
float x_step = (float)ctx->width / (float)(num_points - 1u);
|
float x_step = (float)ctx->width / (float)(num_points - 1u);
|
||||||
|
|
||||||
for (uint16_t i = 0; i < num_points; ++i)
|
int prev_x = offset_x;
|
||||||
|
int prev_y = offset_y + (int)((float)amplitude * sinf(phase_shift));
|
||||||
|
|
||||||
|
for (uint16_t i = 1; i < num_points; ++i)
|
||||||
{
|
{
|
||||||
int x = offset_x + (int)((float)i * x_step);
|
int x = offset_x + (int)((float)i * x_step);
|
||||||
int y = offset_y + (int)((float)amplitude * sinf((float)i * step + phase_shift));
|
int y = offset_y + (int)((float)amplitude * sinf((float)i * step + phase_shift));
|
||||||
render_pixel(ctx, x, y, color);
|
|
||||||
|
render_line(ctx, prev_x, prev_y, x, y, color);
|
||||||
|
prev_x = x;
|
||||||
|
prev_y = y;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user