头文件:

#pragma once
#include <iostream>
//一个假的点类型
struct Vector3
{
float x;
float y;
float z;
}; class AABB
{
public:
AABB();
AABB(const AABB &aabb);
~AABB();
void add(const Vector3 &v);
void clear();
void makeAABB(Vector3 V[], int n); Vector3 min, max, center;
}; void aabbPrint(AABB &ab);

cpp文件

#include "AABB.h"

AABB::AABB()
{
} AABB::AABB(const AABB &aabb)
{
min = aabb.min;
max = aabb.max;
center = aabb.center;
} void AABB::clear()
{
min.x = min.y = min.z = FLT_MAX;
//careful: This is not FLT_MIN, 'cause FLT_MIN is a little larger than 0,
//hence not a minus value.
max.x = max.y = max.z = -FLT_MAX;
} void AABB::add(const Vector3 &v)
{
if (v.x < min.x) min.x = v.x;
if (v.y < min.y) min.y = v.y;
if (v.z < min.z) min.z = v.z;
if (v.x > max.x) max.x = v.x;
if (v.y > max.y) max.y = v.y;
if (v.z > max.z) max.z = v.z;
} //make AABB out of Vector3 points
void AABB::makeAABB(Vector3 V[], int n)
{
if (!V) return; for (int i = ; i < n; i++)
add(V[i]); center.x = (min.x + max.x) * 0.5f;
center.y = (min.y + max.y) * 0.5f;
center.z = (min.z + max.z) * 0.5f;
} AABB::~AABB()
{
} void aabbPrint(AABB &ab)
{
std::cout<<"AABB min is: ";
ab.min.x;
ab.min.y;
ab.min.z;
std::cout<<"AABB max is: ";
ab.max.x;
ab.max.y;
ab.max.z;
std::cout<<std::endl;
}

打印什么的自己看着办,没时间搞

[算法][包围盒]AABB简单类的更多相关文章

  1. 3D空间中射线与轴向包围盒AABB的交叉检测算法【转】

    引言 在上一节中,我讲述了如何实现射线与三角形的交叉检测算法.但是,我们应该知道,在游戏开发中,一个模型有很多的三角形构成,如果要对所有的物体,所有的三角形进行这种检测,就算现在的计算机运算能力,也是 ...

  2. 3D空间中射线与轴向包围盒AABB的交叉检测算法 【转】

    http://blog.csdn.net/i_dovelemon/article/details/38342739 引言 在上一节中,我讲述了如何实现射线与三角形的交叉检测算法. 但是,我们应该知道, ...

  3. 预防和避免死锁的方法及银行家算法的java简单实现

    预防死锁 (1) 摒弃"请求和保持"条件 基本思想:规定所有进程在开始运行之前,要么获得所需的所有资源,要么一个都不分配给它,直到所需资源全部满足才一次性分配给它. 优点:简单.易 ...

  4. 数据挖掘之KMeans算法应用与简单理解

    一.背景 煤矿地磅产生了一系列数据: 我想从这些数据中,取出最能反映当前车辆重量的数据(有很多数据是车辆上磅过程中产生的数据).我于是想到了聚类算法KMeans,该算法思想比较简单. 二.算法步骤 1 ...

  5. PHP扩展开发-简单类扩展

    今天来学习简单类扩展开发 实现目标为如下php的类 <?php class classext(){ private $username; CONST URL="http://www.g ...

  6. [算法][包围盒]球,AABB,OBB

    参考地址请看图片水印:http://www.cnblogs.com/iamzhanglei/archive/2012/06/07/2539751.html http://blog.sina.com.c ...

  7. 可以进行SHA-1,SHA-224,SHA-256,SHA-384,SHA-512五种算法签名的工具类,以及简单说明

    import java.security.MessageDigest; public class SignatureSHA { public static String signSHA(String ...

  8. C++实验二——函数重载、函数模板、简单类的定义和实现

    一.实验过程 函数重载编程练习 实验要求:编写重载函数add(),实现对int型,double型,complex型数据的加法.在main函数中定义不同类型的数据,调用测试. 代码实现: 先是简单的体验 ...

  9. Hash算法原理的简单分析

    哈希计算就是努力的把比较大的数据存放到相对较小的空间中.最常见的哈希算法是取模法.下面简单讲讲取模法的计算过程.比如:数组的长度是5.这时有一个数据是6.那么如何把这个6存放到长度只有5的数组中呢.按 ...

随机推荐

  1. iOS navigationbar 透明

    [self.navigationController.navigationBar setTranslucent:YES]; //    为什么要加这个呢,shadowImage 是在ios6.0以后才 ...

  2. 常用<meta>标签

    页面关键词 <meta name="keywords" content="your tags" /> 页面描述 <meta name=&quo ...

  3. Eclipse jar打包

    方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 “MANIFEST.MF”, 由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目 ...

  4. hunnu 修路

    ing········ 这题我一眼就想到二分修路的长度 可是还有一个问题,有个费用,如果没有的话就所有的边都连起来判断能否二分到最小可行的 可是,有费用... 怎么做呢... ... 有了费用后,就不 ...

  5. 转:Beautiful Soup

    Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时 ...

  6. A letter to a good guy in USA

    Hi Nick:Busy recently forgetting to check Yammer in box.Really nice of you to agree to provide help ...

  7. codeforces 520 Pangram

    http://codeforces.com/problemset/problem/520/A A. Pangram time limit per test 2 seconds memory limit ...

  8. poj 题目分类(2)

    初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj329 ...

  9. [原创] 关于quartz (spring 中的任务调度器)时间配置

    1.   CronTrigger时间格式配置说明 CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年] 序号 说明 是否必填 允许填写的值 允许的通配符 ...

  10. shell学习笔记(1)-变量

    1.shell中的变量可以自定义,shell中使用变量时用$ name="shero"echo "hi ${name}" root@shero-virtual- ...