예제 #1
0
/*
  Returns a version of 'key' where all numbers have been replaced by zeroes.  If
  there were none, returns "".
*/
static QCString zeroKey( const char* key )
{
	QCString zeroed( strlen( key ) + 1 );
	char *z = zeroed.data();
	int i = 0, j = 0;
	int len;
	bool metSomething = FALSE;

	while ( key[i] != '\0' )
	{
		len = numberLength( key + i );
		if ( len > 0 )
		{
			i += len;
			z[j++] = '0';
			metSomething = TRUE;
		}
		else
		{
			z[j++] = key[i++];
		}
	}
	z[j] = '\0';

	if ( metSomething )
		return zeroed;
	else
		return "";
}
예제 #2
0
	mat4f persp(float fovy, float aspect, float near_plane, float far_plane) {
		float range = tan(math::to_radians(fovy / 2.0f)) * near_plane;
		float left = -range * aspect;
		float right = range * aspect;
		float bottom = -range;
		float top = range;

		mat4f result = zeroed();
		result[0][0] = (2.0f * near_plane) / (right - left);
		result[1][1] = (2.0f * near_plane) / (top - bottom);
		result[2][2] = -(far_plane + near_plane) / (far_plane - near_plane);
		result[2][3] = -1.0f;
		result[3][2] = -(2.0f * far_plane * near_plane) / (far_plane - near_plane);
		return result;
	}