本文属spanzhang原创,其blog地址为:http://blog.csdn.net/spanzhang。引用或转贴请注明出处,谢谢!!
/*/////////////////////////////////////////////////////////////////////
文件:stdAfx.cpp
描述:PedalPoint预编译实现文件
作者:张友邦
时间:2004-09-02
声明:本文件系作者辛苦熬夜的产物,任何人使用本文件请保留本描述文本。
历史:
/*/////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
#include"stdAfx.h"
namespace pb
{
//////////////////////////////////////////////////////////////////////
HANDLE eventMutex;
//返回一个[0,1]随机数
float rnd()
{
return (float)(::rand()) / (float)(RAND_MAX);
}
//返回一个[0,max]随机数
float rnd(float max)
{
return rnd() * max;
}
//返回一个[-1,1]之间的随机数
float rand()
{
return ((float)(::rand()) / (float)(RAND_MAX)) * 2.0f - 1.0f;
}
float rand(float max)
{
return rand() * max;
}
//返回一个随机的符号
float randSign()
{
return (::rand()>RAND_MAX/2?-1.0f:1.0f);
}
//符号函数
int sign(float num)
{
if(num==0.0)
return 0;
else
return (num>0.0f?1:-1);
}
//用时间来初始化随机数
void initRandom()
{
time_t ltime;
time(<ime);
srand(ltime % 1000);
::rand();
}
float trwv(float r)
{
r = fabs( .5 * r );
r = 2 * ( r - floor( r ) );
if ( r > 1 )
r = 2 - r;
return r;
}
float wrap(float r)
{
return r - floor(r);
}
float sqr(float r)
{
return r * r;
}
float clip(float r)
{
if ( r < 0 ) r = 0; else if ( r > 1 ) r = 1;
return r;
}
float sgn(float r)
{
return ( r >= 0 ) ? 1 : -1;
}
float pos(float r)
{
if ( r < 0 ) return 0;
return r;
}
float sqwv(float r)
{
return ( r >= -1 && r <= 1 ) ? 1 : 0;
}
int trnc(float r)
{
return int(r);
}
//绕一个特定点旋转特定的角度
void rotate(int& x, int& y, int cx, int cy, float theta)
{
int xx = x - cx;
int yy = y - cy;
x = xx * cos(theta) - yy * sin(theta) + cx;
y = xx * sin(theta) + yy * cos(theta) + cy;
}
//////////////////////////////////////////////////////////////////////
};//namespace pb
//////////////////////////////////////////////////////////////////////
//End of this file.