#define _GNU_SOURCE #include #include #include #include "Vector.h" Vector vector_new(double initialX, double initialY) { Vector v = (Vector)malloc(1 * sizeof(struct vector_st)); if ( v == NULL ) return NULL; _tuple_constructor((Tuple)v); return _vector_constructor(v, initialX, initialY); } Vector _vector_constructor(Vector v, double initialX, double initialY) { v->x = initialX; v->y = initialY; v->length = sqrt(v->x*v->x + v->y*v->y); return v; } void vector_delete(Vector v) { free(v); } char *vector_toString(const Vector v) { char *resultStr; asprintf( &resultStr, "Vector(%lf, %lf)", v->x, v->y ); return resultStr; } Vector vector_scale(Vector v, double size) { v->x *= size; v->y *= size; v->length = sqrt(v->x*v->x + v->y*v->y); return v; } double vector_length(const Vector v) { return v->length; }