亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.cpp

?? 通過人工智能算法快速實現神經網絡識別
?? CPP
字號:
#include "main.h"
#include "time.h"
//---------------------------------------------------------------------------
/*
Book:           AI for Game Developers
Authors:        David M. Bourg & Glenn Seemann
Example:        Potential function based movement, Chapter 5 Example 2
*/
//---------------------------------------------------------------------------


#define		_TIMESTEP						0.0025
#define		_TOL							1e-10
#define		_FWDTIME						10
#define		_THRUSTFACTOR					1.0
#define     _CHASESETUP						true
#define		_SPAWN_AREA_R					100

#define		_MAX_NUM_UNITS					2

#define		_UNIT_LENGTH					4

#define		_OBSTACLE_RADIUS_FACTOR			4
#define		_OBSTACLE_RADIUS				_OBSTACLE_RADIUS_FACTOR * _UNIT_LENGTH
#define		_COLLISION_VISIBILITY_FACTOR	25

#define		_WIDEVIEW_RADIUS_FACTOR				200
#define		_NARROWVIEW_RADIUS_FACTOR			50
#define		_LIMITEDVIEW_RADIUS_FACTOR			30

#define		_SEPARATION_FACTOR				5
#define		_BACK_VIEW_ANGLE_FACTOR			1
#define		_FRONT_VIEW_ANGLE_FACTOR		1

#define		_NUM_OBSTACLES					80+160




// Global Variables:
int				FrameCounter = 0;
RigidBody2D		Units[_MAX_NUM_UNITS];
Vector			Target;
Vector			Obstacles[_NUM_OBSTACLES];

bool	Initialize(void)
{
	int i;

	GetRandomNumber(0, _WINWIDTH, true);
			
	for(i=0; i<_MAX_NUM_UNITS; i++)
	{	
		Units[i].fMass = 10;
		Units[i].fInertia = 10;
		Units[i].fInertiaInverse = 1/10;
		Units[i].vPosition.x = 440;//GetRandomNumber(_WINWIDTH/2-_SPAWN_AREA_R, _WINWIDTH/2+_SPAWN_AREA_R, false);
		Units[i].vPosition.y = 120;//GetRandomNumber(_WINHEIGHT/2-_SPAWN_AREA_R, _WINHEIGHT/2+_SPAWN_AREA_R, false);
		Units[i].fWidth = _UNIT_LENGTH/2;
		Units[i].fLength = _UNIT_LENGTH;
		Units[i].fHeight = _UNIT_LENGTH;
		Units[i].fOrientation = 270;//;	
		Units[i].CD.y = -0.12*Units[i].fLength;		Units[i].CD.x = 0.0f;			// coordinates of the body center of drag
		Units[i].CT.y = -0.50*Units[i].fLength;		Units[i].CT.x = 0.0f;			// coordinates of the propeller thrust vector
		Units[i].CPT.y = 0.5*Units[i].fLength;		Units[i].CPT.x = -0.5*Units[i].fWidth;	// coordinates of the port bow thruster
		Units[i].CST.y = 0.5*Units[i].fLength;		Units[i].CST.x = 0.5*Units[i].fWidth;	// coordinates of the starboard bow thruster

		Units[i].ProjectedArea = (Units[i].fLength + Units[i].fWidth) * Units[i].fHeight;

		Units[i].ThrustForce = _THRUSTFORCE;
	

	}
/*
	for(i=0; i<20; i++)
	{
		Obstacles[i].x = 400+_OBSTACLE_RADIUS*i;
		Obstacles[i].y = 180;
	}

	for(i=20; i<40; i++)
	{
		Obstacles[i].x = 400+_OBSTACLE_RADIUS*20;
		Obstacles[i].y = 180+_OBSTACLE_RADIUS*(i-20);
	}

	for(i=40; i<60; i++)
	{
		Obstacles[i].x = 400+_OBSTACLE_RADIUS*(i-40);
		Obstacles[i].y = 180+_OBSTACLE_RADIUS*20;
	}

	for(i=60; i<80; i++)
	{
		Obstacles[i].x = 400;
		Obstacles[i].y = 180+_OBSTACLE_RADIUS*(i-60);
	}
*/	

	for(i=80+0; i<80+40; i++)
	{
		Obstacles[i].x = 400-(10*_OBSTACLE_RADIUS)+_OBSTACLE_RADIUS*(i-80);
		Obstacles[i].y = 180-(10*_OBSTACLE_RADIUS);
	}

	for(i=80+40; i<80+80; i++)
	{
		Obstacles[i].x = 400-(10*_OBSTACLE_RADIUS)+_OBSTACLE_RADIUS*40;
		Obstacles[i].y = 180-(10*_OBSTACLE_RADIUS)+_OBSTACLE_RADIUS*(i-40-80);
	}

	for(i=80+80; i<80+120; i++)
	{
		Obstacles[i].x = 400-(10*_OBSTACLE_RADIUS)+_OBSTACLE_RADIUS*(i-80-80);
		Obstacles[i].y = 180-(10*_OBSTACLE_RADIUS)+_OBSTACLE_RADIUS*40;
	}

	for(i=80+120; i<80+160; i++)
	{
		Obstacles[i].x = 400-(10*_OBSTACLE_RADIUS);
		Obstacles[i].y = 180-(10*_OBSTACLE_RADIUS)+_OBSTACLE_RADIUS*(i-120-80);
	}
	




	return true;
}


void	DoUnitAI(int i)
{
		
		int		j;
		Vector	Fs;
		Vector	Pfs;
		Vector	r, u;
		double  U, A, B, n, m, d;

		// begin Flock AI
		Fs.x = Fs.y = Fs.z = 0;		
		Pfs.x = 0;
		Pfs.y = Units[i].fLength / 2.0f;
		
		
		if(Swarm)
		{
			for(j=1; j<_MAX_NUM_UNITS; j++)
			{
				if(i!=j)
				{
					r = Units[i].vPosition - Units[j].vPosition;
					u = r;
					u.Normalize();

					A = 2000;
					B = 10000;
					n = 1;
					m = 2;
					d = r.Magnitude()/Units[i].fLength;
					U = -A/pow(d, n) + B/pow(d, m);
	
					Fs += VRotate2D( -Units[i].fOrientation, U * u);	
				}
			}
		}

		if(Chase)
		{
			r = Units[i].vPosition - Units[0].vPosition;
			u = r;
			u.Normalize();

			A = 10000;
			B = 10000;
			n = 1;
			m = 2;
			d = r.Magnitude()/Units[i].fLength;
			U = -A/pow(d, n) + B/pow(d, m);
	
			Fs += VRotate2D( -Units[i].fOrientation, U * u);	
		}

		if(Avoid)
		{
			for(j=80; j<_NUM_OBSTACLES; j++)
			{
				r = Units[i].vPosition - Obstacles[j];
				u = r;
				u.Normalize();

				A = 0;
				B = 20000;
				n = 1;
				m = 3;
				d = r.Magnitude()/Units[i].fLength;
				U = -A/pow(d, n) + B/pow(d, m);
	
				Fs += VRotate2D( -Units[i].fOrientation, U * u);				
			}
		}
				
		Units[i].Fa = Fs;
		Units[i].Pa = Pfs;
		// end Flock AI

}

void	UpdateSimulation(void)
{
	double	dt = _TIMESTEP;
	int		i;
	
	// initialize the back buffer
	if(FrameCounter >= _RENDER_FRAME_COUNT)
	{
		if(!ShowTrails)
			ClearBackBuffer();
		DrawObstacles();
	}
	
	// Update player controlled unit:	
	Units[0].SetThrusters(false, false, 1);
	Units[0].SetThrusters(false, false, 1);

	if (IsKeyDown(VK_RIGHT))
		Units[0].SetThrusters(true, false, 0.5);

	if (IsKeyDown(VK_LEFT))
		Units[0].SetThrusters(false, true, 0.5);

	Units[0].UpdateBodyEuler(dt);
	//if(FrameCounter >= _RENDER_FRAME_COUNT)
	//	DrawCraft(Units[0], RGB(0, 255, 0));

	if(Units[0].vPosition.x > _WINWIDTH) Units[0].vPosition.x = 0;
	if(Units[0].vPosition.x < 0) Units[0].vPosition.x = _WINWIDTH;
	if(Units[0].vPosition.y > _WINHEIGHT) Units[0].vPosition.y = 0;
	if(Units[0].vPosition.y < 0) Units[0].vPosition.y = _WINHEIGHT;
	
	// update computer controlled units:	
	for(i=1; i<_MAX_NUM_UNITS; i++)
	{		
		DoUnitAI(i);
		
		Units[i].UpdateBodyEuler(dt);

		if(FrameCounter >= _RENDER_FRAME_COUNT)
		{
			if(Units[i].Leader)
				DrawCraft(Units[i], RGB(255,0,0));
			else {
				if(Units[i].Interceptor)
					DrawCraft(Units[i], RGB(255,0,255));		
				else
					DrawCraft(Units[i], RGB(0,0,255));
			}
		}

		if(Units[i].vPosition.x > _WINWIDTH) Units[i].vPosition.x = 0;
		if(Units[i].vPosition.x < 0) Units[i].vPosition.x = _WINWIDTH;
		if(Units[i].vPosition.y > _WINHEIGHT) Units[i].vPosition.y = 0;
		if(Units[i].vPosition.y < 0) Units[i].vPosition.y = _WINHEIGHT;		
	} // end i-loop	

	if(FrameCounter >= _RENDER_FRAME_COUNT) {
		CopyBackBufferToWindow();
		FrameCounter = 0;
	}  else
		FrameCounter++;
}

void	DrawCraft(RigidBody2D	craft, COLORREF clr)
{
	Vector	vList[5];
	double	wd, lg;
	int		i;
	Vector	v1;

	wd = craft.fWidth;
	lg = craft.fLength;
	vList[0].y = lg/2;	vList[0].x = wd/2;
	vList[1].y = -lg/2;	vList[1].x = wd/2;
	vList[2].y = -lg/2;	vList[2].x = -wd/2;
	vList[3].y = lg/2;	vList[3].x = -wd/2;
	vList[4].y = lg/2*1.5; vList[4].x = 0;
	for(i=0; i<5; i++)
	{
		v1 = VRotate2D(craft.fOrientation, vList[i]);
		vList[i] = v1 + craft.vPosition;			
	}

	DrawLine(vList[0].x, vList[0].y, vList[1].x, vList[1].y, 2, clr);
	DrawLine(vList[1].x, vList[1].y, vList[2].x, vList[2].y, 2, clr);
	DrawLine(vList[2].x, vList[2].y, vList[3].x, vList[3].y, 2, clr);
	DrawLine(vList[3].x, vList[3].y, vList[4].x, vList[4].y, 2, clr);
	DrawLine(vList[4].x, vList[4].y, vList[0].x, vList[0].y, 2, clr);

	if(ShowVectors)
	{
		Vector	v, u;
		double	f = 0.025;

		// Show velocity vectors in green
		DrawLine(craft.vPosition.x, craft.vPosition.y, craft.vPosition.x+craft.vVelocity.x, craft.vPosition.y+craft.vVelocity.y, 3, RGB(0,255,0));
		
		// Show force vectors in black
		// thrust vector
		v.x = 0;
		v.y = craft.ThrustForce*f;
		v = VRotate2D(craft.fOrientation, v);
		u.x = craft.CT.x;
		u.y = craft.CT.y;
		u = VRotate2D(craft.fOrientation, u);
		DrawLine(craft.vPosition.x+u.x, craft.vPosition.y+u.y, craft.vPosition.x + u.x + v.x, craft.vPosition.y + u.y + v.y, 1, RGB(0,0,0));

		// port steering force
		v.x = craft.PThrust.x*f;
		v.y = craft.PThrust.y*f;
		v = VRotate2D(craft.fOrientation, v);
		u.x = craft.CPT.x;
		u.y = craft.CPT.y;
		u = VRotate2D(craft.fOrientation, u);
		DrawLine(craft.vPosition.x+u.x, craft.vPosition.y+u.y, craft.vPosition.x + u.x + v.x, craft.vPosition.y + u.y + v.y, 1, RGB(0,0,0));

		// stbd steering force
		v.x = craft.SThrust.x*f;
		v.y = craft.SThrust.y*f;
		v = VRotate2D(craft.fOrientation, v);
		u.x = craft.CST.x;
		u.y = craft.CST.y;
		u = VRotate2D(craft.fOrientation, u);
		DrawLine(craft.vPosition.x+u.x, craft.vPosition.y+u.y, craft.vPosition.x + u.x + v.x, craft.vPosition.y + u.y + v.y, 1, RGB(0,0,0));

		// applied force
		v.x = craft.Fa.x*f;
		v.y = craft.Fa.y*f;
		v = VRotate2D(craft.fOrientation, v);
		u.x = craft.Pa.x;
		u.y = craft.Pa.y;
		u = VRotate2D(craft.fOrientation, u);
		DrawLine(craft.vPosition.x+u.x, craft.vPosition.y+u.y, craft.vPosition.x + u.x + v.x, craft.vPosition.y + u.y + v.y, 1, RGB(0,0,0));

	}

}

void DrawObstacles(void)
{
	int		i;
	RECT	r;
	int		radius = _OBSTACLE_RADIUS/2;

	for(i=0; i<_NUM_OBSTACLES; i++)
	{
		SetRect(&r, Obstacles[i].x - radius, Obstacles[i].y - radius, Obstacles[i].x + radius, Obstacles[i].y + radius);
		DrawEllipse(&r, 2, RGB(255,0,0));

	}

}


int GetRandomNumber(int min, int max, bool seed)
{
	int	number;	

	if(seed)
		srand( (unsigned)time( NULL ) );
		
    number = (((abs(rand())%(max-min+1))+min));    
    
    if(number>max)
		number = max;

    if(number<min)
    	number = min;
		
	return number;
}


/*
void	DoAttractCraft2(void)
{
	// Apply Lenard-Jones potential force to Craft2
	Vector	r = Craft2.vPosition - Craft1.vPosition;
	Vector  u = r;

	u.Normalize();

	double  U, A, B, n, m, d;

	A = 1000;
	B = 31000;
	n = 2;
	m = 4;
	d = r.Magnitude()/Craft2.fLength;
	U = -A/pow(d, n) + B/pow(d, m);
	
	Craft2.Fa = VRotate2D( -Craft2.fOrientation, U * u);	
	
	Craft2.Pa.x = 0;
	Craft2.Pa.y = Craft2.fLength / 2;

	Target = Craft1.vPosition;
	
}
*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久免费精品高清特色大片| 国产精品国产三级国产aⅴ原创| 国产又黄又大久久| 亚洲美女免费视频| 精品毛片乱码1区2区3区| 91在线观看高清| 免费成人性网站| 一区二区日韩电影| 欧美激情一区二区三区在线| 欧美美女一区二区| 97久久精品人人爽人人爽蜜臀| 日韩黄色免费网站| 亚洲人成网站精品片在线观看 | 成人动漫一区二区在线| 日韩国产在线一| 亚洲伦理在线免费看| 国产色爱av资源综合区| 日韩欧美色综合网站| 精品视频一区三区九区| 97精品国产露脸对白| 国产91在线|亚洲| 久久99国产精品成人| 午夜精品久久久久| 樱桃视频在线观看一区| 国产精品国产三级国产三级人妇 | 开心九九激情九九欧美日韩精美视频电影 | 亚洲激情自拍偷拍| 中文字幕一区二区三区不卡在线| 精品精品国产高清a毛片牛牛| 欧美在线观看一二区| 91视频免费看| 94-欧美-setu| 9l国产精品久久久久麻豆| 国产成人免费视| 国产一区 二区 三区一级| 免费久久精品视频| 蜜桃av一区二区三区| 日韩制服丝袜av| 日韩在线一区二区三区| 五月婷婷激情综合网| 亚洲gay无套男同| 亚洲狠狠爱一区二区三区| 亚洲男人都懂的| 一区二区三区中文在线| 一区二区三区欧美视频| 一区二区三区在线播放| 亚洲午夜羞羞片| 亚洲1区2区3区4区| 热久久国产精品| 久久国产综合精品| 老司机精品视频导航| 国产精品综合二区| 懂色av一区二区在线播放| 成人av免费在线播放| 成人免费高清在线观看| 色综合色狠狠天天综合色| 在线视频观看一区| 欧美人与性动xxxx| 精品欧美久久久| 国产欧美日韩视频在线观看| 亚洲欧美综合另类在线卡通| 一区二区三区成人在线视频| 亚洲国产日韩a在线播放| 日产国产欧美视频一区精品| 在线欧美日韩国产| 欧美人伦禁忌dvd放荡欲情| 91精品国产麻豆国产自产在线| 日韩免费观看高清完整版| 国产亚洲va综合人人澡精品| 国产精品入口麻豆原神| 亚洲一区二区中文在线| 免费观看30秒视频久久| 成人蜜臀av电影| 欧美手机在线视频| 欧美成人精品3d动漫h| 欧美高清一级片在线观看| 夜夜精品视频一区二区| 紧缚奴在线一区二区三区| 波多野结衣精品在线| 欧美丝袜丝交足nylons图片| 久久人人97超碰com| 亚洲人吸女人奶水| 免费成人结看片| 99这里只有精品| 欧美一区二区不卡视频| 中文字幕制服丝袜成人av| 三级不卡在线观看| www.亚洲免费av| 欧美一级专区免费大片| 日韩一区在线免费观看| 蜜臀av一区二区| 91年精品国产| 欧美成人综合网站| 亚洲精品中文字幕乱码三区| 蜜桃精品在线观看| 在线观看视频一区| 久久久噜噜噜久久中文字幕色伊伊| 亚洲激情图片一区| 国产伦精品一区二区三区免费| 欧美在线观看视频一区二区| 国产亚洲综合av| 肉色丝袜一区二区| 色综合 综合色| 国产午夜一区二区三区| 亚洲国产一二三| 99久久精品免费| 久久婷婷国产综合精品青草| 无码av免费一区二区三区试看| av激情综合网| 国产亚洲美州欧州综合国| 欧美96一区二区免费视频| 欧洲av在线精品| 中文字幕欧美日本乱码一线二线| 蜜臀av在线播放一区二区三区| 欧美亚洲综合另类| 综合精品久久久| 风间由美一区二区三区在线观看| 日韩免费看的电影| 视频一区在线视频| 欧美亚州韩日在线看免费版国语版| 国产日韩欧美不卡| 欧美一区二区三区婷婷月色| 伊人婷婷欧美激情| 91香蕉国产在线观看软件| 中文在线资源观看网站视频免费不卡| 六月丁香婷婷色狠狠久久| 正在播放一区二区| 亚洲成人av在线电影| 欧美午夜宅男影院| 亚洲一区二区三区国产| 欧美在线观看视频在线| 一区二区三区影院| 在线精品视频一区二区三四| 一区二区三区中文字幕精品精品| 97se亚洲国产综合自在线观| 亚洲欧洲日产国码二区| 99在线热播精品免费| 中文字幕日韩欧美一区二区三区| 国产成人a级片| 亚洲国产精品精华液2区45| 国产成人精品免费在线| 欧美极品美女视频| 丰满亚洲少妇av| 国产精品久久久久久久久久久免费看| 国产精品小仙女| 中文字幕不卡一区| 99久久er热在这里只有精品66| 中文字幕在线不卡一区| 色诱视频网站一区| 视频在线观看一区| 日韩午夜电影在线观看| 韩国v欧美v日本v亚洲v| 久久男人中文字幕资源站| 国产成a人无v码亚洲福利| 国产精品三级电影| 在线亚洲欧美专区二区| 亚洲成人1区2区| 日韩欧美国产成人一区二区| 国产精品亚洲专一区二区三区 | 精品午夜一区二区三区在线观看| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 色综合天天综合网天天看片| 亚洲狠狠丁香婷婷综合久久久| 欧美日韩一级二级三级| 免费在线观看日韩欧美| 国产日韩欧美电影| 日本乱码高清不卡字幕| 日韩不卡一二三区| 国产三级精品视频| 日本丶国产丶欧美色综合| 日韩精品一级中文字幕精品视频免费观看| 欧美一区永久视频免费观看| 国产精品羞羞答答xxdd| 亚洲男女毛片无遮挡| 日韩一级片网站| 国产大陆亚洲精品国产| 亚洲一区二区三区四区在线| 欧美大片一区二区三区| 91麻豆免费观看| 青青草原综合久久大伊人精品 | 午夜欧美在线一二页| 日韩精品一区二| 一本色道久久综合精品竹菊| 蜜桃在线一区二区三区| 国产精品久久毛片av大全日韩| 欧美日韩国产色站一区二区三区| 精品亚洲免费视频| 一区二区三区在线不卡| 日韩av一二三| 亚洲欧美自拍偷拍色图| 欧美成人艳星乳罩| 欧美性受极品xxxx喷水| 丁香天五香天堂综合| 五月激情丁香一区二区三区| 国产精品福利影院| 欧美变态tickling挠脚心| 欧洲激情一区二区| 成人免费毛片aaaaa**| 免费人成精品欧美精品| 一区二区三区在线视频观看|