diff --git a/src/shape.c b/src/shape.c index a805284..17b47e3 100644 --- a/src/shape.c +++ b/src/shape.c @@ -141,6 +141,10 @@ void shape_insert_point(Shape* self, size_t at, Vector point) { list_insert(&self->points, &point, at); } +List* shape_get_points(Shape* self) { + return &self->points; +} + Vector shape_remove_point(Shape* self, size_t at) { Vector point = *list_at_as(Vector, &self->points, at); list_erase(&self->points, at); diff --git a/src/vmath.h b/src/vmath.h index 3697372..07e5e02 100644 --- a/src/vmath.h +++ b/src/vmath.h @@ -120,6 +120,10 @@ Vector vrotatef(Vector a, float t) { }; } static inline +float vanglebetweenf(Vector a, Vector b) { + return vdotf(a, b) / (vmagnitudef(a) * vmagnitudef(b)); +} +static inline Vector vprojectf(Vector onto, Vector from) { float dot = vdotf(onto, from); return vmulff(onto, dot);