Generador de funciones simples

Hola

Hace ya tiempo que quería implementar una especie de generador de funciones simples para controlar animaciones periódicas de algunos parámetros de las luces al igual como de los materiales.

Concretamente me he implementado una clase que dependiendo del tipo de onda especificado, amplitud y periodicidad, es capaz de devolver en tiempo real los valores de la función deseada.

func

A continuación tenéis el código de las funciones que tengo implementadas:

//---------------------------------------------------------------------------------
// USE: Updatea
//	IN: float - Valor de entrada
// OUT:	Void
//---------------------------------------------------------------------------------
void CWaveGenerator::UpdateNone(float inTime)
{
	m_fValue = 0.0f;
}

//---------------------------------------------------------------------------------
// USE: Updatea
//	IN: float - Valor de entrada
// OUT:	Void
//---------------------------------------------------------------------------------
void CWaveGenerator::UpdateOne(float inTime)
{
	m_fValue = 1.0f;
}

//---------------------------------------------------------------------------------
// USE: Updatea
//	IN: float - Valor de entrada
// OUT:	Void
//---------------------------------------------------------------------------------
void CWaveGenerator::UpdateHalfSawTooth(float inTime)
{
	m_fTime += inTime;
	m_fTime = fmodf(m_fTime,m_fPeriodic);
	m_fValue = m_fTime / m_fPeriodic;
	m_fValue *= m_fAmplitude;
}

//---------------------------------------------------------------------------------
// USE: Updatea
//	IN: float - Valor de entrada
// OUT:	Void
//---------------------------------------------------------------------------------
void CWaveGenerator::UpdateSawTooth(float inTime)
{
	m_fTime += inTime;
	m_fTime = fmodf(m_fTime,m_fPeriodic);
	if(m_fTime > (m_fPeriodic / 2.0f) )
	{
		m_fValue = 1.0f - (m_fTime / m_fPeriodic);
	}
	else
	{
		m_fValue = m_fTime / m_fPeriodic;
	}
	m_fValue *= m_fAmplitude;
}

//---------------------------------------------------------------------------------
// USE: Updatea
//	IN: float - Valor de entrada
// OUT:	Void
//---------------------------------------------------------------------------------
void CWaveGenerator::UpdateSquare(float inTime)
{
	m_fTime += inTime;
	m_fTime = fmodf(m_fTime,m_fPeriodic);
	if(m_fTime > (m_fPeriodic / 2.0f) )
	{
		m_fValue = 1.0f;
	}
	else
	{
		m_fValue = 0.0f;
	}
	m_fValue *= m_fAmplitude;
}

Esta clase está destinada a proporcionar los valores de parámetros como la intensidad de la luz o la intensidad de la componente Self-Ilumination de los materiales.

Un saludo

Escribe un comentario

Tienes que iniciar sesión para escribir un comentario.