資源簡(jiǎn)介
基于OpenGL的3D賽車游戲的研究與實(shí)現(xiàn)
代碼片段和文件信息
//?AABBTree.cpp:?implementation?of?the?CAABBTree?class.
//
//////////////////////////////////////////////////////////////////////
#include?“stdafx.h“
#include?“AABBTree.h“
#ifdef?_DEBUG
#undef?THIS_FILE
static?char?THIS_FILE[]=__FILE__;
//#define?new?DEBUG_NEW
#endif
#include?
//////////////////////////////////////////////////////////////////////
//?Construction/Destruction
//////////////////////////////////////////////////////////////////////
CAABBTree::CAABBTree()
{
root?=?NULL;
//?關(guān)于頂點(diǎn)
pVerts?=?NULL; //?對(duì)象的頂點(diǎn)列表
pNormals?=?NULL; //?面的法向量列表
numOfVerts?=?0;? //?對(duì)象中頂點(diǎn)的數(shù)目
//?關(guān)于面
pFaces?=?NULL; //?面信息
numOfFaces?=?0?; //?對(duì)象中面數(shù)目
nFacesPerBox=10;
ClearCollideResults(?);
}
CAABBTree::~CAABBTree()
{
DetroyAABBTree(?);
ClearCollideResults(?);
}
//?銷毀當(dāng)前層次AABB包圍盒樹
void?CAABBTree::DetroyAABBTree1(AABBBoxNode?*?node)
{
if?(node->left?!=?NULL?) //?釋放左子樹
DetroyAABBTree1(node->left);
if?(node->right?!=?NULL?) //?釋放右子樹
DetroyAABBTree1(node->right);
//?釋放根結(jié)點(diǎn)
delete?[]node->pfaces;
delete?node;
node?=?NULL;
}
//?銷毀當(dāng)前層次AABB包圍盒樹
void?CAABBTree::DetroyAABBTree()
{
//?釋放原始數(shù)據(jù)
if?(pVerts?!=?NULL)
delete?[]pVerts;
if?(pNormals?!=?NULL)
delete?[]pNormals;
if?(pFaces?!=?NULL)
delete?[]pFaces;
if?(root!=NULL)
DetroyAABBTree1(root);
}
//?復(fù)制頂點(diǎn)
void?CAABBTree::SetVerts(VECTOR3?*?verts?int?num)
{
numOfVerts?=?num;?//?頂點(diǎn)數(shù)
//pVerts?=?(VECTOR3*?)calloc(numsizeof(VECTOR3));
pVerts?=?new?VECTOR3?[num];
for?(int?i=0;i pVerts[i]?=?verts[i];
}
//?復(fù)制面的法線
void?CAABBTree::SetNormals(VECTOR3?*?normals?int?num)
{
pNormals?=?new?VECTOR3?[num];
for?(int?i=0;i pNormals[i]?=?normals[i];
}
//?復(fù)制面
void?CAABBTree::SetFaces(TRI_FACE?*?faces?int?num)
{
numOfFaces?=?num;?//?面數(shù)
pFaces?=?new?TRI_FACE?[num];
for?(int?i=0;i pFaces[i]?=?faces[i];
}
double??CAABBTree::MinValue3(double?val1double?val2double?val3)
{
if?(val1>val2)
val1=val2;
if?(val1>val3)
val1=val3;
return?val1;
}
double??CAABBTree::MaxValue3(double?val1double?val2double?val3)
{
if?(val1 val1=val2;
if?(val1 val1=val3;
return?val1;
}
double??CAABBTree::MinValue2(double?val1double?val2)
{
if?(val1>val2)
val1=val2;
return?val1;
}
double??CAABBTree::MaxValue2(double?val1double?val2)
{
if?(val1 val1=val2;
return?val1;
}
double?CAABBTree::DotProduct3(const?VECTOR3&?v1?const?VECTOR3&?v2)
{
???return?v1.x*v2.x?+?v1.y?*?v2.y?+?v1.z?*?v2.z;
}
VECTOR3?CAABBTree::CrossProduct3(const?VECTOR3&?v1?const?VECTOR3&?v2)
{
VECTOR3?v;
v.x?=?v1.y?*?v2.z?-?v2.y?*?v1.z;
v.y?=?v2.x?*?v1.z?-?v1.x?*?v2.z;
v.z?=?v1.x?*?v2.y?-?v2.x?*?v1.y;
???return?v;
}
//?向量正交化
void?CAABBTree::Normalize(VECTOR3&?v)
{
double?d;
//?矢量長(zhǎng)度
d?=?sqrt(v.x?*?v.x?+?v.y?*?v.y?+?v.z?*?v.z);
//?單位化
v.x?=?v.x?/?d;?
v.y?=?v.y?/?d;?
v.z?=?v.z?/?d;?
}
//?創(chuàng)建AABB包圍盒樹
v
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件?????????906??2012-06-18?10:28??源碼\OpenGLProgram.sln
?????目錄???????????0??2012-06-18?13:33??源碼\OpenGLProgram\
?????文件????????5186??2011-10-14?08:40??源碼\OpenGLProgram\3D_Structure.h
?????文件???????75064??2011-10-13?19:13??源碼\OpenGLProgram\AABBTree.cpp
?????文件????????3721??2008-10-08?11:24??源碼\OpenGLProgram\AABBTree.h
?????文件?????3636916??2011-10-21?21:09??源碼\OpenGLProgram\Beyond.mp3
?????文件???????10739??2012-06-17?11:00??源碼\OpenGLProgram\C3DSCar.cpp
?????文件????????1206??2012-06-17?10:03??源碼\OpenGLProgram\C3DSCar.h
?????文件???????16659??2011-10-15?19:50??源碼\OpenGLProgram\C3DSLoader.cpp
?????文件????????1234??2011-10-15?19:52??源碼\OpenGLProgram\C3DSLoader.h
?????文件????????4136??2011-11-04?15:29??源碼\OpenGLProgram\C3DSob
?????文件?????????789??2011-11-04?15:29??源碼\OpenGLProgram\C3DSob
?????文件????????8785??2012-06-17?11:53??源碼\OpenGLProgram\C3DSScene.cpp
?????文件?????????893??2012-06-17?10:03??源碼\OpenGLProgram\C3DSScene.h
?????目錄???????????0??2012-06-18?13:33??源碼\OpenGLProgram\Data\
?????文件??????152044??2011-10-22?01:48??源碼\OpenGLProgram\Data\impact.wav
?????文件??????161862??2008-08-02?00:23??源碼\OpenGLProgram\Data\Ship‘s?Wheel.ico
?????文件??????382444??2011-10-22?02:03??源碼\OpenGLProgram\Data\two.wav
?????文件??????284368??2010-05-20?06:37??源碼\OpenGLProgram\dinput8.lib
?????文件?????6467584??2011-09-24?22:38??源碼\OpenGLProgram\ep.mp3
?????文件?????5175296??2010-06-04?17:51??源碼\OpenGLProgram\f.mp3
?????文件???????12024??2005-04-14?17:54??源碼\OpenGLProgram\GLAUX.H
?????文件?????1312394??2005-10-19?15:32??源碼\OpenGLProgram\GLAUX.LIB
?????文件??????234006??2011-10-06?12:12??源碼\OpenGLProgram\glext.h
?????文件???????20759??2012-06-17?12:34??源碼\OpenGLProgram\GLFont.cpp
?????文件????????1282??2012-06-17?12:34??源碼\OpenGLProgram\GLFont.h
?????文件???????15111??2011-10-15?11:17??源碼\OpenGLProgram\glfr
?????文件????????2084??2012-06-16?11:19??源碼\OpenGLProgram\MainFrm.cpp
?????文件?????????669??2011-10-15?17:56??源碼\OpenGLProgram\MainFrm.h
?????文件???????33485??2011-09-07?13:09??源碼\OpenGLProgram\math3d.cpp
?????文件???????27255??2011-10-16?00:50??源碼\OpenGLProgram\math3d.h
............此處省略53個(gè)文件信息
評(píng)論
共有 條評(píng)論