四元数
四元数是复数向三维的扩充扩展,使用复数乘法来实现旋转。具体参考如下:
Understanding Quaternions
Understanding Quaternions 中文翻译
四叉树
其实就是将二维空间使用矩形大小来表示,每个结点分为 0:LeftUp, 1:LeftDown, 2:RightUp, 3:RightDown,然后递归存储数据,一般数据存储在叶子节点,也可以进行改进,可参考如下:
#include <list>
using std::list;
#define TREE_DEPTH 3
#define MIN_NODE_SIZE 0.1
#define SAFE_DELETE(p) do {delete (p); (p) = NULL;} while (false)
template<typename T> class QuadNode
{
protected:
float m_left, m_right, m_up, m_down;
list<T*> m_dataList;
QuadNode* m_child[4] = { NULL, NULL, NULL, NULL }; //0:LeftUp, 1:LeftDown, 2:RightUp, 3:RightDown
public:
QuadNode(float left, float right, float up