资源简介
基于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\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个文件信息
相关资源
- Unity3D VText 2.0.2
- OpenGL绘制一个多边形 添加颜色
- 乐涛3D16光立方DIY全套资料包20171112版
- 3d动画签到墙
- 各种规格的 开关 按键 封装库3D封装文
- Unity 烟花特效
- unity带AI的赛车游戏源码
- OpenGL三维图形系统开发与实用技术 基
- 实现3D机房效果
- 传智播客Unity3D视频教程—3-案例:地
- 《Unity3D ShaderLab开发实战详解》源代码
- 拨码开关封装 pcb封装 各种拨码开关封
- Unity3D特效包 100种unity特效
- 三维瓦片数据3d-tiles)
- unity3d小游戏源码
- OpenGL鼠标交互3D模型
- 图形学的几道基础练习计算机图形学
- 交互式计算机:图形学基于OpenGL着色
- 次表面散射玉石
- 基于opencv与opengl实现增强现实
- 3D MAX 9(2009) FBX插件 官方版
- OpenGl三维镂垫绘制附使用说明
- AD常用3D封装保证最全
- unity3d解包工具
- 3dsmax小动画纸盒人街道步行
- 各种规格 纽扣电池座子 封装库3D封装
- IE3D破解版1同2一起
- SALSA with RandomEyes for unity3d
- Unity3D坦克大战 源代码3D游戏开发
- unity简单的2D飞机大战
评论
共有 条评论