91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 12KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2024-02-01
  • 語言: C/C++
  • 標簽: opengl??sph??

資源簡介

使用opengl對水流進行模擬,由于初學,水流效果很粗糙。本人電腦i5 4核,內存4G。水流粒子數5000,沒有進行任何加速(沒有使用領域搜索法),電腦跑起來只有10fps左右。初學opengl或者光滑粒子流體動力學(sph)的大神可以下載下來看一看。不過要自己配置opengl庫對代碼進行編譯...

資源截圖

代碼片段和文件信息

#include?“stdafx.h“

#include“windows.h“

#include“glut.h“
#include“math.h“

#define?A1?0.25
#define?B1?0.25
#define?C1?0.25

#define?D?30

#define?K?0.08??//運動產生的阻力系數


#define?K3?2.f//流體壓強相關常數
#define?U4?20.f//粘度系數

#define?U1?15.f??//水杯界面阻尼力
#define?K4?2.f??//水杯界面彈性系數

#define?PI?3.14159
#define?H?0.75????//光滑核半徑

#define?M?1.f?//粒子質量
#define?G?-9.8?//重力常量

double?t=0.01;?//時間步長

#define?bool?int
#define?false?0
#define?true?1


//double?scale?=?1.f;

int??winWidth?winHeight;



float?eye[3]={0-0?5};??//視點
float?at[3]={00?0};??//觀測點
float?up[3]={01000?0};??//向上向量


typedef?struct{
double?xyz;
double?vxvyvz;
double?pvxpvypvz;
double?fxfyfz;
double?ve;??//密度
double?p;???//壓力
}Mess;
Mess?mess[100][100];

?float?x1=-2x2=2y11=-1y22=2z1=-2z2=2;





?#define?PARTICLE_COUNTS 1000000

#define??GLUT_WHEEL_UP?3???????????//定義滾輪操作
#define??GLUT_WHEEL_DOWN?4

GLuint?cubemap_tex;


int?starttend;
double?angle=0;
double?rate=0.03;
double?tranlate=0;
const?float?A=1.0;
const?float?B=1.0;
float?C=1;
float?tranx?=?0.0f;
float?trany?=?0.0f;
float?tranz?=?0.0f;

double?anger_x?=?0;
double?anger_y?=?0;
double?anger_move_x?=?0;
double?anger_move_y?=?0;

double?shift_x?=?0;
double?shift_y?=?0;
double?shift_move_x?=?0;
double?shift_move_y?=?0;
double?scale?=?1.0f;

int?wndWidth=500;
int?wndHeight=500;

float?gl_ambient_ffuse[]={?0.5?0.5?0.5?0.3};
void?Init()
{
glClearColor(1.01.011.0);//設置背景顏色
glClearDepth(1.0);//設置深度緩存
glEnable(GL_NORMALIZE);?//啟動單位化
glEnable(GL_DEPTH_TEST);//啟動深度測試
glDepthFunc(GL_LEQUAL);

?glShadeModel(GL_SMOOTH);????????????????????????//?啟用陰影平滑

glHint(GL_PERSPECTIVE_CORRECTION_HINTGL_NICEST);//透視修正

glShadeModel(GL_SMOOTH);

glEnable(GL_TEXTURE_2D);???//紋理映射

double?b=0;
for(int?j=0;j double?c=1a=1;

for(int?i=0;i<100;i++)
{

if(i%10==0)
{
a=a-A1;
c=1;
}


mess[j][i].x=a;mess[j][i].y=b;mess[j][i].z=c;
mess[j][i].fx=0;mess[j][i].fy=G;mess[j][i].fz=0;//重力
mess[j][i].ve=0;
mess[j][i].p=0;

c=c-C1;
}
b=b+B1;
}

}

double?ABS(double?a)
{
return?a>0?a:-a;
}

void?TimerFunction(int?value)
{
//printf(“%d\n“value);
glutPostRedisplay();
glutTimerFunc(20TimerFunction?1);
}

void?color_set(float?*mat_diffuse)
{

float?gl_specular2[]={0?0?0?1};
float?gl_shininess2[]={30};
float?gl_emission2[]={0001};
glMaterialfv(GL_FRONT?GL_AMBIENT_AND_DIFFUSE?mat_diffuse);
glMaterialfv(GL_FRONT_AND_BACKGL_SPECULARgl_specular2);
glMaterialfv(GL_FRONT_AND_BACKGL_SHININESSgl_shininess2);
glMaterialfv(GL_FRONT_AND_BACKGL_EMISSIONgl_emission2);
}

void?Display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
//--------設置透視
glMatrixMode(GL_PROJECTION);
glLoadIdentity();

glRotatef(?(?anger_x?+?anger_move_x?)?*?90?1.0f?0.0f?0.0f);
glRotatef(?(?anger_y?+?anger_move_y?)?*?90?0.0f?1.

評論

共有 條評論