• 大小: 24.03MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-28
  • 语言: 其他
  • 标签: OpenGL  3D  赛车游戏  

资源简介

基于OpenGL的3D赛车游戏的研究与实现

资源截图

代码片段和文件信息

// 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;
// 关于顶点
pVerts = NULL; // 对象的顶点列表
pNormals = NULL; // 面的法向量列表
numOfVerts = 0;  // 对象中顶点的数目
// 关于面
pFaces = NULL; // 面信息
numOfFaces = 0 ; // 对象中面数目

nFacesPerBox=10;

ClearCollideResults( );
}

CAABBTree::~CAABBTree()
{
DetroyAABBTree( );
ClearCollideResults( );
}

// 销毁当前层次AABB包围盒树
void CAABBTree::DetroyAABBTree1(AABBBoxNode * node)
{
if (node->left != NULL ) // 释放左子树
DetroyAABBTree1(node->left);
if (node->right != NULL ) // 释放右子树
DetroyAABBTree1(node->right);

// 释放根结点
delete []node->pfaces;
delete node;

node = NULL;
}

// 销毁当前层次AABB包围盒树
void CAABBTree::DetroyAABBTree()
{
// 释放原始数据
if (pVerts != NULL)
delete []pVerts;

if (pNormals != NULL)
delete []pNormals;

if (pFaces != NULL)
delete []pFaces;

if (root!=NULL)
DetroyAABBTree1(root);
}

// 复制顶点
void CAABBTree::SetVerts(VECTOR3 * verts int num)
{
numOfVerts = num; // 顶点数
//pVerts = (VECTOR3* )calloc(numsizeof(VECTOR3));
pVerts = new VECTOR3 [num];
for (int i=0;i pVerts[i] = verts[i];
}

// 复制面的法线
void CAABBTree::SetNormals(VECTOR3 * normals int num)
{
pNormals = new VECTOR3 [num];
for (int i=0;i pNormals[i] = normals[i];
}

// 复制面
void CAABBTree::SetFaces(TRI_FACE * faces int num)
{
numOfFaces = num; // 面数
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;
// 矢量长度
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; 
}

// 创建AABB包围盒树
v

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件         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\C3DSobject.cpp
     文件         789  2011-11-04 15:29  源码\OpenGLProgram\C3DSobject.h
     文件        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\glframe.h
     文件        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个文件信息

评论

共有 条评论