Pedal Point源码发布及说明(4)

类别:VC语言 点击:0 评论:0 推荐:

本文属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(&ltime);
 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.

本文地址:http://com.8s8s.com/it/it236.htm