include/common.h
author Radek Brich <radek.brich@devl.cz>
Fri, 14 Dec 2007 00:05:54 +0100
branchpyrit
changeset 37 5f954c0d34fc
parent 34 28f6e8b9d5d1
child 44 3763b26244f0
permissions -rw-r--r--
octree traversal rewritten to avoid recursion reenabled -O3 optimizations (was accidentaly disabled, now it traces even faster! :-)) realtime_bunny: added FPS counter, fixed a bug in ply loader min3 and max3 templates added to common.h

/*
 * Pyrit Ray Tracer
 * file: common.h
 *
 * Radek Brich, 2006-2007
 */

#ifndef COMMON_H
#define COMMON_H

#include <stdio.h>
#include <stdarg.h>
#include <float.h>

#ifdef PYRIT_DOUBLE
# define Float double
# define Eps DBL_EPSILON
# define Inf DBL_MAX
#else
# define Float float
# define Eps 1e-6
# define Inf FLT_MAX
#endif

/* verbosity level:
0: only errors (E)
1: major status messages (*)
2: minor status, progress (-)
3: debug messages (D)
4: more debug
default = 2
*/
extern int pyrit_verbosity;

inline void dbgmsg(const int vlevel, const char *format, ...)
{
	if (pyrit_verbosity >= vlevel)
	{
		va_list ap;
		va_start(ap, format);
		vprintf(format, ap);
		va_end(ap);
		fflush(stdout);
	}
}

template<typename Type> const Type &min3(const Type &a, const Type &b, const Type &c)
{
	if (a <= b)
	{
		if (a <= c)
			return a;
		else
			return c;
	}
	else
	{
		if (b <= c)
			return b;
		else
			return c;
	}
}

template<typename Type> const Type &max3(const Type &a, const Type &b, const Type &c)
{
	if (a >= b)
	{
		if (a >= c)
			return a;
		else
			return c;
	}
	else
	{
		if (b >= c)
			return b;
		else
			return c;
	}
}

#endif