A quick note:
It might be assumed
...that the vector() function is not roughly equivalent to the str_create function
...and that the vector() function might return a VECTOR from a shared internal pool,
...and that such memory probably should not be directly freed by the user.

VECTORs and ANGLEs might be declared in structs as such:
Code:
typdef struct t{
	ANGLE a1;
	VECTOR v1;
} t;



Of course that might be "ill-advised".