要用射线去检测碰撞,之前我们先从一个点开始。如果能够判断一个点是否和多边形碰撞,那么就可以轻易的扩展到,线和多边形,多边形和多边形的碰撞。点与多边形的碰撞是基于这个实现,PNPOLY – Point Inclusion in Polygon Test。
C 实现射线检测多边形碰撞
C++ 标准库中的那些大坑
变量初始化
这是使用 C++11 codecvt 时遇到的一个坑,转换编码时,mbstate_t 这个中间状态变量,必须初始化为0,否则运行出错,即:
// 不可以!
mbstate_t mbst;
// 这样可以
mbstate mbst = {0};
// 这样也行
mbstate mbst = mbstate_t();
// 不可以!
mbstate_t mbst;
// 这样可以
mbstate mbst = {0};
// 这样也行
mbstate mbst = mbstate_t();
这是第一个坑,并不算太坑,还比较容易调试和发现,也怪自己大意了。
C++11 随机数库
简介
之前,C++中的随机数生成都依赖于一个简单的rand函数。这个函数产生一定范围内的一个均匀随机整数。如果需要其他随机分布或者其他范围的随机数,就需要根据rand函数产生的随机数进行再加工,不过这时,就容易引入非随机性了。