⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ocean.h

📁 基于FFT的海面模拟。能够实现海面的复制
💻 H
字号:
#ifndef OCEAN_H
#define  OCEAN_H

#include "OceanUtil.h"
#include <math.h>

typedef struct  
{
public:
	bool	active;//活动状态
	double	life;//生命周期
	double	fade;//生命控制变量
	oceanVector particlePosition;//粒子位置
	oceanVector particleVelocity;//粒子速度
	oceanVector particleColor;//粒子颜色
	oceanVector particleAcc;//粒子加速度
}OceanParticle;

class T_Ocean
{
public:
	int oceanSizeX;//海面网格大小
	int oceanSizeY;
	double 	oceanWindScaleX;  //风力大小系数
	double oceanWindScaleY; 
	double oceanLambda;//对流系数
	double oceanWaveHeight;//浪高系数
	double oceanTimeDiff;//时间步长
	double oceanGridSize;//海面网格点X,Z大小
	int fftDir;
	double oceanGridPosition[512][512][3];//海洋各网格点位置
	double  oceanHoldHorizontal[512][512][4];//保存初始化状态时的浪高度
	double	oceanDisplayXY[512][512][2]; // holds the actual x and y for display
	double  oceanNormals[512][512][3];	//法线中间存储数组
	double  oceanBigNormals[512][512][3];
	oceanComplex oceanDeltaX[512][512];
	oceanComplex oceanDeltaY[512][512];   
	oceanComplex oceanH0[512][512];
	oceanComplex oceanC[512][512];
	
	bool showParticle;
	int particleNum;
	OceanParticle oceanParticle[512][512][10];// 海洋碎波粒子

	T_Ocean(int sizeX, int sizeY, float oceanGridSize, float windScaleX, float windScaleY, float lambda, float waveHeight);//调用oceanInitial
	T_Ocean();
	~T_Ocean();
	void oceanInitial();
	void oceanMakeNormals(oceanComplex c[512][512]);
	void oceanSimulating(float timeStep);
	void oceanPrepLoop();
	void oceanPreChoppy();

	void particleIntial();
	void BreakingWaveSimulating();
};


void enableBreakingWave(T_Ocean*);
void disableBreakingWave(T_Ocean*);
void setOceanWaveHeight(T_Ocean*, float);



int getOceanSizeX(T_Ocean*);
int getOceanSizeY(T_Ocean*);
float getOceanWindScaleX(T_Ocean*);
float getOceanWindScaleY(T_Ocean*);
float getOceanLambda(T_Ocean*);
float getOceanWaveHeight(T_Ocean*);

void simuOcean(T_Ocean* , float );

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -