Ну например математическая библиотека вполне очевидное место которое можно попробовать написать на С
|
По началу у меня была дикая попоболь от сишной математики( то бишь без операторов )

typedef struct {
float x;
float y;
float z;
} vec3_t;
void Vector3_Zero( vec3_t * v );
void Vector3_Set( vec3_t * v, float x, float y, float z );
void Vector3_Add( vec3_t * out, const vec3_t * a, const vec3_t * b );
void Vector3_Subtract( vec3_t * out, const vec3_t * a, const vec3_t * b );
void Vector3_Negate( vec3_t * out, const vec3_t * a );
void Vector3_Multiply( vec3_t * out, const vec3_t * a, const vec3_t * b );
void Vector3_Divide( vec3_t * out, const vec3_t * a, const vec3_t * b );
void Vector3_Cross( vec3_t * out, const vec3_t * a, const vec3_t * b );
float Vector3_Dot( const vec3_t * a, const vec3_t * b );
float Vector3_Normalize( vec3_t * out, const vec3_t * a );
float Vector3_Length( const vec3_t * a );
float Vector3_SqrLength( const vec3_t * a );
void Vector3_Lerp( vec3_t * out, const vec3_t * a, const vec3_t * b, float t );
void Vector3_Scale( vec3_t * out, const vec3_t * a, float scale );
void Vector3_Copy( vec3_t * out, const vec3_t * a );
float Vector3_Angle( const vec3_t * a, const vec3_t * b );
void Vector3_Swap( vec3_t * a, vec3_t * b );
float Vector3_SqrDistance( const vec3_t * a, const vec3_t * b );
void Vector3_Middle( vec3_t * out, const vec3_t * a, const vec3_t * b );
void Vector3_Min( vec3_t * out, const vec3_t * a, const vec3_t * b );
void Vector3_Max( vec3_t * out, const vec3_t * a, const vec3_t * b );
Обычное сложение векторов a = b + c превращается в
vec3_t a,b,c;
Vector3_Set( &b, 1, 2, 3 );
Vector3_Set( &c, 3, 4, 5 );
Vector3_Add( &c, &b, &c );
Но после того как написал физику для игры( а там сплошные вектора кругом ), стало привычно. Кстати напоминает математику из D3DX.