예제 #1
0
FloatPoint eSetCenter(long time)
{
  static FloatPoint a(p.d1,0,0),c(0,0,0);
  matrix rot;
  if(p.mode>1)
    {
      rot=matrix(p.rotspeed2,FloatPoint(cos(((double)time)/40.)*5,cos(((double)time)/124.)*5,cos(((double)time)/231.)*5));
      for(int i=0;i<numCenters;i++)
	{
	    rot.ApplyMatrix (Centers[i],c);
	}
    }
  else
    {
      //  srand(time/100);
      rot=matrix(p.rotspeed2,FloatPoint(cos(((double)time)/40.)*5,cos(((double)time)/124.)*5,cos(((double)time)/231.)*5));
      rot.ApplyMatrix (a,c);

      FloatPoint dist=a;
      float d=(float)dist.length();
      float d0=p.d1;
      FloatPoint vectunite=(dist / d);
      float f=-1*(d-d0);
  
      vectunite = vectunite* f;
      a+= vectunite ;
    }

  return a;//FloatPoint(200+(rand()%(width-200)),200+(rand()%(height-200)),0)
}
예제 #2
0
void Tourne(short i)
{
	rot.ApplyMatrix	(pts[i],Center);
}