mirror of
https://github.com/Team4388/auto_planner.git
synced 2026-06-09 08:48:08 -06:00
50 lines
995 B
C
50 lines
995 B
C
|
|
#include "mathutils.h"
|
||
|
|
#include "../../gfx/gfx.h"
|
||
|
|
#include <corecrt_math.h>
|
||
|
|
|
||
|
|
point scale_to_screen(
|
||
|
|
double x,
|
||
|
|
double y,
|
||
|
|
double w_meters,
|
||
|
|
double h_meters,
|
||
|
|
double x_off,
|
||
|
|
double y_off)
|
||
|
|
{
|
||
|
|
return (point) {
|
||
|
|
.x = x * ((double) SCREEN_WIDTH / w_meters) + x_off,
|
||
|
|
.y = y * ((double) SCREEN_HEIGHT / h_meters) + y_off,
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
point scale_to_field(
|
||
|
|
double x,
|
||
|
|
double y,
|
||
|
|
double w_meters,
|
||
|
|
double h_meters,
|
||
|
|
double x_off,
|
||
|
|
double y_off)
|
||
|
|
{
|
||
|
|
return (point) {
|
||
|
|
.x = (x - x_off) / ((double) SCREEN_WIDTH / w_meters),
|
||
|
|
.y = (y - y_off) / ((double) SCREEN_HEIGHT / h_meters),
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
bool within_box(point p, rect r) {
|
||
|
|
return p.x >= r.x && p.y >= r.y &&
|
||
|
|
p.x <= r.x + r.w && p.y <= r.y + r.h;
|
||
|
|
}
|
||
|
|
|
||
|
|
point lerp_point(point a, point b, float p) {
|
||
|
|
return (point) {
|
||
|
|
a.x + (b.x - a.x) * p,
|
||
|
|
a.y + (b.y - a.y) * p
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
double get_distance(point a, point b) {
|
||
|
|
return sqrt(
|
||
|
|
(a.x - b.x) * (a.x - b.x) +
|
||
|
|
(a.y - b.y) * (a.y - b.y));
|
||
|
|
}
|