www.pudn.com > WaveSimulation.rar > Wave.h


// Wave.h: interface for the CWave class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_WAVE_H__917B0191_BD46_4B89_A79B_FD96DB30E30F__INCLUDED_) 
#define AFX_WAVE_H__917B0191_BD46_4B89_A79B_FD96DB30E30F__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
 
#include "mydefine.h" 
#include "Particle.h" 
 
#define WAVE_ARRAY_SIZE 300		//绘制波所需要的数组大小 
#define WAVETRAIN		30 
 
 
 
/////////////////描述波中某一段的状态 
//////当前状态定义 
#define		WS_STATE_NORMAL		0x00000000 
#define		WS_STATE_CURVE		0x00000001 
#define		WS_STATE_SURGE		0X00000002 
#define		WS_STATE_RETREATE	0x00000004 
 
 
struct WaveSegment 
{ 
	int StartIndex; 
	int EndIndex; 
	DWORD	CurrentState; 
	float StageTime; 
	float RemainTime; 
	int FitLength; 
	int ScaleIndex; 
}; 
 
class CWave  
{ 
public: 
	FoamPartical* CreateParticle(float x,float y,float z,bool state); 
	void MoveParticle(float timedt); 
	void DealWithRetreateState(WaveSegment &WS,float dtimet,float x); 
	void DealWithSurgeState(WaveSegment &WS,float dtimet,float x); 
	void DealWithCurveState(WaveSegment &WS,float dtimet,float x); 
	void ComputeCurve(WaveSegment &WS,float dtimet,float x); 
	static void CompTextCor(WaveLine &wl,float &textcorx,float &textcory); 
 
	float	ParticalYFromZ(float z); 
	void	RepositionStartEnd(int &sI,int &eI); 
 
	void	SearchStartEnd(int &sI,int &eI); 
	void	ComputeWave(float x,float dtimet); 
	float	ComD(float x0,float z0, float windSpeed,float h); 
	void	ComXY(float x,float z,float h,float *t); 
	float	ComWaveNumber(float x0,float z0, float windSpeed,float deep); 
	float	ComAngleSpeed(float windSpeed); 
	float	ComOrbitRadius(float windSpeed); 
	void	Init(); 
	CWave(); 
	virtual ~CWave(); 
 
 
	float		m_kInf,m_TPeriod,m_LWaveLength, 
				m_wAngleSpeed,m_rOrbitRadius, 
				m_aPhaseAngle,m_cSpeed; 
  
 
 
	float		m_tCurrentTime;				//记录波的当前时间 
	float		m_WindSpeed ; 
 
 
	WaveLine	m_WaveLineArray[WAVE_ARRAY_SIZE + 1]; 
	WaveSegment	m_Segment1;	//记录第一个波形 
	WaveSegment	m_Segment2; //记录第二个波形 
	CParticle	m_Particle; 
	int			m_zParticleIndex; 
 
}; 
 
#endif // !defined(AFX_WAVE_H__917B0191_BD46_4B89_A79B_FD96DB30E30F__INCLUDED_)