move rotating rect code out of background
This commit is contained in:
parent
72e8a34ff3
commit
a9952fb491
|
@ -1,45 +1,13 @@
|
|||
#include "lzy.h"
|
||||
#include "cfg.h"
|
||||
#include <math.h>
|
||||
#include "rotrect.h"
|
||||
|
||||
static long tick = 0;
|
||||
|
||||
static void
|
||||
rotate(double *x, double *y, double angle)
|
||||
draw_square(double size, double angle)
|
||||
{
|
||||
const double s = sin(angle);
|
||||
const double c = cos(angle);
|
||||
const double ox = *x;
|
||||
const double oy = *y;
|
||||
|
||||
*x = ox * c - oy * s;
|
||||
*y = ox * s + oy * c;
|
||||
}
|
||||
|
||||
static void
|
||||
draw_square(int size, double angle)
|
||||
{
|
||||
double x[4] = {
|
||||
size / 2.0,
|
||||
size / 2.0,
|
||||
-size / 2.0,
|
||||
-size / 2.0,
|
||||
};
|
||||
double y[4] = {
|
||||
-size / 2.0,
|
||||
size / 2.0,
|
||||
size / 2.0,
|
||||
-size / 2.0,
|
||||
};
|
||||
for (int i = 0; i < 4; i++) {
|
||||
rotate(&x[i], &y[i], angle);
|
||||
x[i] += DISPLAY_WIDTH / 2.0;
|
||||
y[i] += DISPLAY_HEIGHT / 2.0;
|
||||
}
|
||||
LZY_DrawLine(x[0], y[0], x[1], y[1]);
|
||||
LZY_DrawLine(x[1], y[1], x[2], y[2]);
|
||||
LZY_DrawLine(x[2], y[2], x[3], y[3]);
|
||||
LZY_DrawLine(x[3], y[3], x[0], y[0]);
|
||||
rotrect(DISPLAY_WIDTH / 2.0, DISPLAY_HEIGHT / 2.0, size, size, angle);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
#include "rotrect.h"
|
||||
#include "cfg.h"
|
||||
#include "lzy.h"
|
||||
#include <math.h>
|
||||
|
||||
static void
|
||||
rotate(double *x, double *y, double angle)
|
||||
{
|
||||
const double s = sin(angle);
|
||||
const double c = cos(angle);
|
||||
const double ox = *x;
|
||||
const double oy = *y;
|
||||
|
||||
*x = ox * c - oy * s;
|
||||
*y = ox * s + oy * c;
|
||||
}
|
||||
|
||||
void
|
||||
rotrect(double x, double y, double width, double height, double angle)
|
||||
{
|
||||
double xs[4] = {
|
||||
width / 2.0,
|
||||
width / 2.0,
|
||||
-width / 2.0,
|
||||
-width / 2.0,
|
||||
};
|
||||
double ys[4] = {
|
||||
-height / 2.0,
|
||||
height / 2.0,
|
||||
height / 2.0,
|
||||
-height / 2.0,
|
||||
};
|
||||
for (int i = 0; i < 4; i++) {
|
||||
rotate(&xs[i], &ys[i], angle);
|
||||
xs[i] = round(xs[i] + x);
|
||||
ys[i] = round(ys[i] + y);
|
||||
}
|
||||
LZY_DrawLine(xs[0], ys[0], xs[1], ys[1]);
|
||||
LZY_DrawLine(xs[1], ys[1], xs[2], ys[2]);
|
||||
LZY_DrawLine(xs[2], ys[2], xs[3], ys[3]);
|
||||
LZY_DrawLine(xs[3], ys[3], xs[0], ys[0]);
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
#pragma once
|
||||
|
||||
void rotrect(double x, double y, double width, double height, double angle);
|
Loading…
Reference in New Issue