Esempio n. 1
0
void DynamicBubble(triangulateio &in,triangulateio &mid,REAL *Velocity)
{
	int a[100][50]={{0}};
	for(int i=0;i<mid.numberoftriangles;i++)
	{
		AddPoint(a[mid.trianglelist[3*i]],mid.trianglelist[3*i+1]);
		AddPoint(a[mid.trianglelist[3*i]],mid.trianglelist[3*i+2]);
		AddPoint(a[mid.trianglelist[3*i+1]],mid.trianglelist[3*i]);
		AddPoint(a[mid.trianglelist[3*i+1]],mid.trianglelist[3*i+2]);
		AddPoint(a[mid.trianglelist[3*i+2]],mid.trianglelist[3*i]);
		AddPoint(a[mid.trianglelist[3*i+2]],mid.trianglelist[3*i+1]);
	}
	
	for(int i=0;i<mid.numberofpoints;i++)
	{	int flag=-1;
		REAL fx=0,fy=0;
		REAL xi,yi,ri;
		xi=mid.pointlist[2*i];
		yi=mid.pointlist[2*i+1];
		ri=mid.pointattributelist[i];
		for(int j=1;j<=a[i][0];j++)
		//for(int j=0;j<mid.numberofpoints;j++)
		{
		//	if(j==i)continue;
			REAL xj,yj,rj;
			 xj=mid.pointlist[2*a[i][j]];
			 yj=mid.pointlist[2*a[i][j]+1];
			 rj=mid.pointattributelist[a[i][j]];
			 REAL Lij=GetPlateauEqual(ri,rj);
			if(IsStable(xi,yi,ri,xj,yj,rj))
			{
				flag=a[i][j];
				Velocity[2*flag]=0;
				Velocity[2*flag+1]=0;
			}
			 fx=fx+GetSpring(xi,xj,Lij);
			 fy=fy+GetSpring(yi,yj,Lij);			 
		}
	if (flag!=-1)
		{
			fx=0;
			fy=0;
			Velocity[2*i]=0;
			Velocity[2*i+1]=0;
			
		}
		
		REAL accX=fx/0.1;
		REAL accY=fy/0.1;
		REAL sx=Velocity[2*i]*Pertime+(1/2.0)*accX*pow(Pertime,2.0);
		REAL sy=Velocity[2*i+1]*Pertime+(1/2.0)*accY*pow(Pertime,2.0);
		in.pointlist[2*i]=in.pointlist[2*i]+sx;
		in.pointlist[2*i+1]=in.pointlist[2*i+1]+sy;
		Velocity[2*i]=Velocity[2*i]+accX*Pertime;
		Velocity[2*i+1]=Velocity[2*i+1]+accY*Pertime;
	}
}
Esempio n. 2
0
DWORD CNetwork::GetStableTime() const
{
	if ( ! IsStable() || ! Handshakes.m_tStableTime ) return 0;
	return (DWORD)time( NULL ) - Handshakes.m_tStableTime;
}
Esempio n. 3
0
/*
================
idExplodingBarrel::Collide
================
*/
impactEffect_t idExplodingBarrel::Collide( const trace_t &collision, const idVec3 &velocity ) {
	if ( !IsStable() && (velocity.LengthFast() * UnstableLevel > 1000.0f) ) {
		PostEventSec( &EV_Explode, NULL, 0.04f );
	}
	return idMoveable::Collide( collision, velocity );
}