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_)