www.pudn.com > qtdso-0.3.1.rar > dampedfloat.cpp
//====================================================================== // File: dampedfloat.cpp // Author: Matthias Toussaint // Created: Sun Sep 22 02:35:58 CEST 2002 //---------------------------------------------------------------------- // Permission to use, copy, modify, and distribute this software and its // documentation for any purpose and without fee is hereby granted, // provided that below copyright notice appear in all copies and that // both that copyright notice and this permission notice appear in // supporting documentation. // // This file is provided AS IS with no warranties of any kind. The // author shall have no liability with respect to the infringement of // copyrights, trade secrets or any patents by this file or any part // thereof. In no event will the author be liable for any lost revenue // or profits or other special, indirect and consequential damages. //---------------------------------------------------------------------- // (c) 2000-2002 Matthias Toussaint //====================================================================== #include#include #include DampedFloat::DampedFloat() { reset(); } DampedFloat::~DampedFloat() { } void DampedFloat::reset() { m_value = 0.0f; m_valid = false; } void DampedFloat::addValue( float val ) { if (fabs( m_value-val ) > fabs( m_value * 0.05 )) m_valid = false; else m_valid = true; if (!m_valid && m_value == 0.0f) m_value = val; else { // simple, but effective m_value = 0.7f*m_value + 0.3f*val; } }