#define PI 3.14159265358979 static inline CGPoint flipY(const CGPoint v) { return ccp(v.x, v.y * -1); } static inline CGPoint flipX(const CGPoint v) { return ccp(v.x * -1, v.y); } static inline float decByFactor(const float value, const float limit, const float factor) { float rv = value * factor; if (rv < limit) rv = limit; return rv; } static inline float incByFactor(const float value, const float limit, const float factor) { float rv = value * factor; if (rv > limit) rv = limit; return rv; } static inline float plotSine(const float degrees, const float min, const float max) { float radians = degrees * PI / 180; float offset = (max - min) / 2; return sin(radians) * offset + (min + offset); } static inline CGPoint plotCircle(const float degrees, const float radius) { float radians = degrees * PI / 180; return CGPointMake(sin(radians) * radius, cos(radians) * radius); }