资源简介
一个外国人写的,用C++语言实现了R树,代码质量很高,注释也很到位,很值得参考学习!!
代码片段和文件信息
#include
#include
#include
#include “RTree.h“
//
// MemoryTest.cpp
//
// This demonstrates a use of RTree
//
// Use CRT Debug facility to dump memory leaks on app exit
#ifdef WIN32
// These two are for MSVS 2005 security consciousness until safe std lib funcs are available
#pragma warning(disable : 4996) // Deprecated functions
#define _CRT_SECURE_NO_DEPRECATE // Allow old unsecure standard library functions Disable some ‘warning C4996 - function was deprecated‘
// The following macros set and clear respectively given bits
// of the C runtime library debug flag as specified by a bitmask.
#ifdef _DEBUG
#define SET_CRT_DEBUG_FIELD(a) \
_CrtSetDbgFlag((a) | _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG))
#define CLEAR_CRT_DEBUG_FIELD(a) \
_CrtSetDbgFlag(~(a) & _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG))
#else
#define SET_CRT_DEBUG_FIELD(a) ((void) 0)
#define CLEAR_CRT_DEBUG_FIELD(a) ((void) 0)
#endif
#endif //WIN32
//
// Get a random float b/n two values
// The returned value is >= min && < max (exclusive of max)
// Note this is a low precision random value since it is generated from an int.
//
static float RandFloat(float a_min float a_max)
{
const float ooMax = 1.0f / (float)(RAND_MAX+1);
float retValue = ( (float)rand() * ooMax * (a_max - a_min) + a_min);
ASSERT(retValue >= a_min && retValue < a_max); // Paranoid check
return retValue;
}
/// Simplify handling of 3 dimensional coordinate
struct Vec3
{
/// Default constructor
Vec3() {}
/// Construct from three elements
Vec3(float a_x float a_y float a_z)
{
v[0] = a_x;
v[1] = a_y;
v[2] = a_z;
}
/// Add two vectors and return result
Vec3 operator+ (const Vec3& a_other) const
{
return Vec3(v[0] + a_other.v[0]
v[1] + a_other.v[1]
v[2] + a_other.v[2]);
}
float v[3]; ///< 3 float components for axes or dimensions
};
static bool BoxesIntersect(const Vec3& a_boxMinA const Vec3& a_boxMaxA
const Vec3& a_boxMinB const Vec3& a_boxMaxB)
{
for(int axis=0; axis<3; ++axis)
{
if(a_boxMinA.v[axis] > a_boxMaxB.v[axis] ||
a_boxMaxA.v[axis] < a_boxMinB.v[axis])
{
return false;
}
}
return true;
}
/// A user type to test with instead of a simple type such as an ‘int‘
struct SomeThing
{
SomeThing()
{
++s_outstandingAllocs;
}
~SomeThing()
{
--s_outstandingAllocs;
}
int m_creationCounter; ///< Just a number for identifying within test program
Vec3 m_min m_max; ///< Minimal bounding rect values must be known and constant in order to remove from RTree
static int s_outstandingAllocs; ///< Count how many outstanding objects remain
};
/
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7699 2009-12-03 16:41 RTreeTemplate\MemoryTest.cpp
文件 1247 2010-01-05 16:04 RTreeTemplate\README.TXT
文件 45267 2010-01-05 15:55 RTreeTemplate\RTree.h
文件 2171 2009-12-03 16:41 RTreeTemplate\Test.cpp
- 上一篇:CDib类MFC图像编程必备
- 下一篇:简易学生管理系统(C++)
相关资源
- MFC程序设计-画图板
- c/c++实现的基于文件的RSA加解密
- c/c++实现的基于文件的DES加解密
- 程序流程图生成器支持C/C++
- 基于VS2008和IVF11的C/C++和Fortran混合编程
- c/c++采用编码转换表实现gbk与unicode互
- C/C++快件管理系统
- 最优装载问题 计算机算法 c/c++语言
- 基于C语言实现的贪吃蛇
- c/c++控制台游戏
- 基于C++的实时数据库的设计与实现
- linux C/C++实现的通过url访问网页提取网
- 双目视觉标定棋盘格模板程序
- C语言 个人通讯录管理系统
- g711音频编解码(C/C++)实现
- ini文件读取源代码
- C/C++实现FAT文件系统的读写
- C++制作加密解密系统
- 椭圆曲线密码ECC算法实现源码C++
- 图像处理 逆滤波处理 C/C++语言实现
- c/c++实现银行家算法模拟
- 操作系统的模拟实现 C++编写
- C/C++课程设计-学生成绩管理系统
- 大一C语言基础学习练习例题大部分考
- 林锐 《高质量C/C++编程》
- R树的C++实现
- 掌纹识别c/c++代码
- 传智播客c/c++教程
- 基于C/C++基础的物品竞拍系统
- 计算无向图中桥的数量环算法超快
评论
共有 条评论