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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? frustum.cpp

?? 小型的3D游戲引擎
?? CPP
字號(hào):
#include <windows.h>
#include <gl/gl.h>
#include "math/math.h"
#include "math/matrix.h"
#include "frustum.h"
#include "math/aabb.h"

//////////////////////////////////////////////////////////////////////////////////

static GcFrustum *frust = NULL;

GcFrustum *ActiveFrustum()
{
    return frust;
}

//////////////////////////////////////////////////////////////////////////////////

GcFrustum::GcFrustum()
{
	frust = this;
}

//////////////////////////////////////////////////////////////////////////////////

GcFrustum::~GcFrustum()
{
	frust = NULL;
}

//////////////////////////////////////////////////////////////////////////////////

void GcFrustum::Extract()
{
	GcMatrix4 projection;
	GcMatrix4 model;
	GcMatrix4 clip;
	GcVector4 temp[6];


	// Get the projection and modelview matrix from OpenGL
	glGetFloatv(GL_PROJECTION_MATRIX, projection);
	glGetFloatv(GL_MODELVIEW_MATRIX, model);

	// Combine the two matrices
	clip = projection * model;

	// Extract the right plane
	temp[0].x = clip[ 3] - clip[ 0];
	temp[0].y = clip[ 7] - clip[ 4];
	temp[0].z = clip[11] - clip[ 8];
	temp[0].w = clip[15] - clip[12];

	// Normalize the vector
	temp[0].NormalizePlane();

	// Extract the left plane
	temp[1].x = clip[ 3] + clip[ 0];
	temp[1].y = clip[ 7] + clip[ 4];
	temp[1].z = clip[11] + clip[ 8];
	temp[1].w = clip[15] + clip[12];

	// Normalize the vector
	temp[1].NormalizePlane();

	// Extract the bottom plane
	temp[2].x = clip[ 3] + clip[ 1];
	temp[2].y = clip[ 7] + clip[ 5];
	temp[2].z = clip[11] + clip[ 9];
	temp[2].w = clip[15] + clip[13];

	// Normalize the vector
	temp[2].NormalizePlane();

	// Extract the top plane
	temp[3].x = clip[ 3] - clip[ 1];
	temp[3].y = clip[ 7] - clip[ 5];
	temp[3].z = clip[11] - clip[ 9];
	temp[3].w = clip[15] - clip[13];

	// Normalize the vector
	temp[3].NormalizePlane();

	// Extract the far plane
	temp[4].x = clip[ 3] - clip[ 2];
	temp[4].y = clip[ 7] - clip[ 6];
	temp[4].z = clip[11] - clip[10];
	temp[4].w = clip[15] - clip[14];

	// Normalize the vector
	temp[4].NormalizePlane();

	// Extract the near plane
	temp[5].x = clip[ 3] + clip[ 2];
	temp[5].y = clip[ 7] + clip[ 6];
	temp[5].z = clip[11] + clip[10];
	temp[5].w = clip[15] + clip[14];

	// Normalize the vector
	temp[5].NormalizePlane();

	for( int i = 0; i < 6; ++i )
	{
		m_frustum[i].SetPlane(GcVector3(temp[i].x, temp[i].y, temp[i].z), temp[i].w);
	}
}

//////////////////////////////////////////////////////////////////////////////////

/*bool GcFrustum::BoxInFrustum(float x, float y, float z, float size, float height)
{
	// Check to see if a box is in the frustum 

	// Loop through all planes looking to see if the point is infront of it
	for(int i = 0; i < 6; i++ )
	{
		// Check to see if any of the box's points is infront of the plane
		// If it is continue to the next plane, if none are then the box outside the frustum
		if(frustum[i].x * x + frustum[i].y * y + 
		   frustum[i].z * z + frustum[i].w > 0 ) {
			continue;
		}
		if(frustum[i].x * (x + size) + frustum[i].y * y + 
		   frustum[i].z * z	+ frustum[i].w > 0 ) {
			continue;
		}
		if(frustum[i].x * x + frustum[i].y * (y + height) + 
		   frustum[i].z * z + frustum[i].w > 0 ) {
			continue;
		}
		if(frustum[i].x * (x + size) + frustum[i].y * (y + height) + 
		   frustum[i].z * z + frustum[i].w > 0 ) {
			continue;
		}
		if(frustum[i].x * x + frustum[i].y * y + 
		   frustum[i].z * (z + size) + frustum[i].w > 0 ) {
			continue;
		}
		if(frustum[i].x * (x + size) + frustum[i].y * y + 
		   frustum[i].z * (z + size) + frustum[i].w > 0 ) {
			continue;
		}
		if(frustum[i].x * x + frustum[i].y * (y +height) + 
		   frustum[i].z * (z + size) + frustum[i].w > 0 ) {
			continue;
		}
		if(frustum[i].x * (x + size) + frustum[i].y * (y + height) + 
		   frustum[i].z * (z + size) + frustum[i].w > 0 ) {
			continue;
		}
		return false;
	}
	return true;
}
*/
//////////////////////////////////////////////////////////////////////////////////

bool GcFrustum::Contains(GcAABB & aabb)
{
	for(int i = 0; i < 6; ++i)
	{
		if(m_frustum[i].Distance(aabb.Point(0)) > 0) continue;
		if(m_frustum[i].Distance(aabb.Point(1)) > 0) continue;
		if(m_frustum[i].Distance(aabb.Point(2)) > 0) continue;
		if(m_frustum[i].Distance(aabb.Point(3)) > 0) continue;
		if(m_frustum[i].Distance(aabb.Point(4)) > 0) continue;
		if(m_frustum[i].Distance(aabb.Point(5)) > 0) continue;
		if(m_frustum[i].Distance(aabb.Point(6)) > 0) continue;
		if(m_frustum[i].Distance(aabb.Point(7)) > 0) continue;

		// Ok, give up. The point isn't in the frustum
		return false;
	}

	return true;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩三级电影网址| 国产成人精品影视| 亚洲综合激情网| 欧美国产精品一区二区三区| 欧美日韩一区二区在线观看| 成人免费视频视频| 国产一区在线观看视频| 日本不卡123| 日韩av一区二区在线影视| 亚洲色图一区二区| 中文字幕一区视频| 国产精品久久久久aaaa| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲精品在线一区二区| 精品国产99国产精品| 精品免费99久久| 精品久久久久久最新网址| 欧美r级电影在线观看| 日韩欧美第一区| 欧美一级日韩免费不卡| 欧美日韩1234| 日韩一区二区三区在线| 日韩精品在线网站| 亚洲精品一区在线观看| 欧美激情综合五月色丁香| 国产精品美女久久久久久久久久久| 国产精品久久久久影视| 一区二区成人在线视频| 日本伊人午夜精品| 国产一区二区三区在线观看免费| 中文在线资源观看网站视频免费不卡| 欧美天堂亚洲电影院在线播放| 欧洲国内综合视频| 欧美日韩一区久久| 日韩精品一区二区三区视频播放| 精品国产第一区二区三区观看体验 | 日韩西西人体444www| 成人一道本在线| 免费视频一区二区| 国产馆精品极品| 午夜激情综合网| 免费日韩伦理电影| 精品欧美乱码久久久久久 | 韩国欧美国产1区| 国产露脸91国语对白| 91浏览器入口在线观看| 欧美一区二区久久| 中文字幕一区免费在线观看| 午夜电影久久久| 成人久久18免费网站麻豆| 久久aⅴ国产欧美74aaa| 成人精品小蝌蚪| 1区2区3区国产精品| 亚洲欧洲日本在线| 人禽交欧美网站| 亚洲综合色区另类av| 亚洲国产成人av网| 成人av网站在线观看免费| 欧美日韩国产高清一区二区三区| 国产精品久久夜| 国产在线精品一区二区不卡了 | 久久夜色精品一区| 亚洲成人免费看| 一本大道久久a久久综合婷婷| 95精品视频在线| 久久久精品综合| 麻豆精品新av中文字幕| 欧美久久高跟鞋激| 国产午夜精品一区二区三区视频| 欧美专区日韩专区| 久久久久97国产精华液好用吗| 亚洲愉拍自拍另类高清精品| 国产麻豆精品95视频| 日韩亚洲欧美综合| 亚洲在线成人精品| 波多野洁衣一区| 久久蜜桃av一区精品变态类天堂| 日日夜夜一区二区| 在线观看精品一区| 亚洲人精品午夜| 成人美女在线观看| 久久精品日韩一区二区三区| 国产日韩精品一区| 久久品道一品道久久精品| 国精产品一区一区三区mba桃花| 欧洲一区二区三区在线| 国产精品美女久久久久aⅴ| 国产成人一级电影| 日韩美女主播在线视频一区二区三区 | 午夜私人影院久久久久| 欧美性色黄大片| 精品日韩99亚洲| 蜜乳av一区二区三区| 欧美一区二区久久久| 美女高潮久久久| 久久久国产午夜精品| 国产一区二区三区| 粉嫩高潮美女一区二区三区| 91国产免费看| 中文字幕中文乱码欧美一区二区| av在线这里只有精品| 亚洲美女区一区| 欧美偷拍一区二区| 天天影视涩香欲综合网| 日韩女优视频免费观看| 国产一区二区三区美女| 中文幕一区二区三区久久蜜桃| 白白色 亚洲乱淫| 日韩高清在线观看| 久久久久国产一区二区三区四区| www.性欧美| 欧美国产国产综合| 精品久久久久久综合日本欧美| 91精品国产欧美一区二区18 | 免费观看在线综合| 在线观看国产日韩| www.色综合.com| 国产精品 日产精品 欧美精品| 亚洲美女少妇撒尿| 国产欧美在线观看一区| 制服丝袜中文字幕一区| 色婷婷国产精品久久包臀| 色久综合一二码| 一区二区三区在线不卡| 久久亚洲一区二区三区明星换脸| 欧美怡红院视频| 92精品国产成人观看免费| 久久av资源网| 久久精品在线观看| 欧美一区二区三区视频在线观看| 色哟哟在线观看一区二区三区| 国产成人av电影免费在线观看| 免费欧美在线视频| 亚洲bt欧美bt精品777| 亚洲va韩国va欧美va精品| 北岛玲一区二区三区四区| 免费不卡在线观看| 五月婷婷综合在线| 亚洲视频一二区| 国产欧美一区视频| 久久嫩草精品久久久久| 欧美成人综合网站| 日韩一区二区在线免费观看| 欧美日韩国产综合久久 | 欧美在线观看视频在线| 色婷婷精品大在线视频| 欧美亚洲国产一区二区三区| 午夜国产精品影院在线观看| 亚洲电影你懂得| 无码av免费一区二区三区试看| 一区二区三区四区视频精品免费 | 国产传媒欧美日韩成人| 国产一区在线不卡| 国产精品亚洲一区二区三区妖精| 国产超碰在线一区| 91在线视频网址| 在线观看日韩电影| 欧美一区二区免费观在线| 精品国产伦理网| 国产精品久久久久影院亚瑟| 亚洲图片另类小说| 日本不卡123| 天堂久久一区二区三区| 国产精品888| 国产福利一区在线观看| 亚洲国产综合人成综合网站| 人人爽香蕉精品| 国产成人亚洲综合色影视| 色婷婷av一区二区三区gif| 91精品国产高清一区二区三区 | 午夜精彩视频在线观看不卡| 国产呦萝稀缺另类资源| 91浏览器打开| 国产午夜精品一区二区三区视频| 一区二区在线观看视频在线观看| 日韩制服丝袜av| 粉嫩av一区二区三区在线播放| 欧美色视频在线| 久久精品免费在线观看| 亚洲午夜一区二区三区| 国产成人自拍网| 日韩亚洲欧美一区二区三区| 亚洲免费av网站| 成人听书哪个软件好| 91精品国产综合久久久久久久久久| 国产精品免费aⅴ片在线观看| 日韩av在线免费观看不卡| 欧美三级日韩在线| 久久久久久**毛片大全| 日韩中文字幕不卡| 91麻豆精品国产无毒不卡在线观看| 亚洲人成人一区二区在线观看| 成人免费观看视频| 国产精品嫩草99a| 风间由美中文字幕在线看视频国产欧美 | 久久久久久久久岛国免费| 粉嫩欧美一区二区三区高清影视| 亚洲一区在线观看免费观看电影高清| 99精品1区2区| 成人av免费在线播放|