基於NeHe第十九課做的粒子系統

2021-06-15 22:35:05 字數 2831 閱讀 7930

可以實現各種噴射狀的運動狀態,按上下左右鍵分別移動粒子,按y鍵切換顏色,按7、8、9、0切換不同的紋理,按1、2改變粒子速度、按3、4改變粒子大小

particlesys.h

// particlesys.h: inte***ce for the cparticlesys class.

////

#if !defined(afx_particlesys_h__f9db0bb6_e352_488d_a578_09d57eee6f42__included_)

#define afx_particlesys_h__f9db0bb6_e352_488d_a578_09d57eee6f42__included_

#if _msc_ver > 1000

#pragma once

#endif // _msc_ver > 1000

#define

max_particles 1000              // 定義最大的粒子數

typedef struct

// 建立粒子資料結構

particles;

class cparticlesys 

;#endif // !defined(afx_particlesys_h__f9db0bb6_e352_488d_a578_09d57eee6f42__included_)

particles.cpp

// particlesys.cpp: implementation of the cparticlesys class.

////

#include "stdafx.h"

#include "mysdopengl.h"

#include "particlesys.h"

#include

#ifdef _debug

#undef this_file

static char this_file=__file__;

#define new debug_new

#endif

//// construction/destruction

//static glfloat colors[12][3]=

// 彩虹顏色

,,,,

,,,,

,,,};

cparticlesys::cparticlesys()

cparticlesys::~cparticlesys()

void cparticlesys::setxspeed(float fxspeed)

void cparticlesys::setyspeed(float fyspeed)

void cparticlesys::setslow(float fslow)

void cparticlesys::setzoom(float fzoom)

void cparticlesys::initparticles()

}int cparticlesys::drawparticles()

else

for(m_loop = 0; m_loop < max_particles; m_loop++)

if(m_byg && particle[m_loop].yg < 1.5f)

particle[m_loop].yg += 0.01;

if(m_bygj && particle[m_loop].yg > -1.5f)

particle[m_loop].yg -= 0.01;

if(m_bxg && particle[m_loop].xg < 1.5f)

particle[m_loop].xg += 0.01;

if(m_bxgj && particle[m_loop].xg > -1.5f)

particle[m_loop].xg -= 0.01;

if(m_borg)}}

changecolor();

return 1;

}void cparticlesys::changecolor()

}void cparticlesys::changexspeed(float foff)

void cparticlesys::changeyspeed(float foff)

void cparticlesys::resetpos()

void cparticlesys::changedelay(float foff)

void cparticlesys::changeslow(float foff)

void cparticlesys::changezoom(float foff)

void cparticlesys::settexlist(gluint itexlist)

應用:1、粒子和紋理的建立

m_pparticle = new cparticlesys();

m_pparticle->initparticles();

gentexlist("light02.rgb", 101);

gentexlist("smoke02.rgb", 102);

gentexlist("fire.rgb", 103);

gentexlist("waterexp.rgb", 104);

2、粒子繪製

m_pparticle->drawparticles();

3、粒子狀態改變

void cmysdopenglview::onkeydown(uint nchar, uint nrepcnt, uint nflags)

cview::onkeydown(nchar, nrepcnt, nflags);

}4、刪除粒子

if(m_pparticle != null)

第十九課 基於sklearn的SVM人臉識別

實驗為基於sklearn的svm人臉識別,使用 svm 演算法對戴眼鏡的人臉和不戴眼鏡的人臉進行分類,從而完成識別戴眼鏡的人臉的任務 實驗涉及的支援向量機引數計算原理,回顧第十八課 人臉影象資料集 olivetti py3.pkz,儲存在個人資源處,載入資料 from sklearn.dataset...

第十九課 調整色階

調節的明暗程度,也就是色階的調整 色階 ctrl 表示一幅影象的高光 暗調 中間調,可以調節最暗或最亮的色階,最左端的滑塊代表最暗的值,中間代表中間色調,最右邊的滑塊代表最亮的值。在所有的對話方塊當中,按住alt鍵不放,單擊 取消 則恢復到預設狀態。自動色階 trl shift 自動調整影象明暗程度...

第十九課 物件的構造(下)

學習狄泰軟體學院唐老師c 課程心得,文章內容來自於唐老師課件 一 兩個特殊的建構函式 include class test int getj test const test t main 中test t2 t1時,如果類中只有test const test t 則報錯,需要加上 test main ...