点跟多边形的碰撞检测
来源:互联网 发布:双色球红球最简单算法 编辑:程序博客网 时间:2024/05/01 07:45
class GBPolygon {
public:
int _numVertices;
std::vector<CCPoint> _verticesVec;
};
点跟多边形的碰撞
static bool PointInPolygon(const CCPoint & p, const GBPolygon & polygon)
{
int nCross = 0;
int nCount = polygon._verticesVec.size();
for (int i =0; i<nCount; i++) {
CCPoint p1 = polygon._verticesVec[i];
CCPoint p2 = polygon._verticesVec[(i+1)%nCount];
// 求解 y=p.y 与 p1p2 的交点
if(p1.y == p2.y) continue; // p1p2 与 y=p0.y平行
if(p.y<(p1.y<p2.y?p1.y:p2.y))continue;// 交点在p1p2延长线上
if(p.y>=(p1.y>p2.y?p1.y:p2.y))continue;// 交点在p1p2延长线上
// 求交点的 X 坐标 --------------------------------------------------------------
float x = (p.y-p1.y)*(p2.x-p1.x)/(p2.y-p1.y)+p1.x;
if (x>p.x) {
nCross++;//只统计单边交点
}
}
// 单边交点为偶数,点在多边形之外 ---
return (nCross%2==1);
}
- 点跟多边形的碰撞检测
- Cocos2dx 多边形碰撞检测
- 点与点之间的碰撞检测
- 碰撞检测中函数(线与面,线与多边形,点到线的最近点) _ 转 - [叁]
- 基于2D多边形的碰撞检测和响应(一)
- 基于2D多边形的碰撞检测和响应(二)
- 基于2D多边形的碰撞检测和响应(三)
- 基于2D多边形的碰撞检测和响应(四)
- 基于2D多边形的碰撞检测和响应(五)
- 基于2D多边形的碰撞检测和响应(六)
- 基于2D多边形的碰撞检测和响应(七)
- 成功研究出多边形的碰撞检测算法
- 基于2D多边形的碰撞检测和响应
- 8.4.1.5_圆形与多边形之间的碰撞检测
- 有关于碰撞检测丢失碰撞点的bug
- 点在多边形内的检测方法
- HGE像素碰撞,像素检测,多边形碰撞检测
- cocos2dx 缩放场景以后的碰撞检测跟触摸
- 告别合服的苦恼
- word2013 论文引用参考文献
- 关于签名后的apk的优化
- 阿里校招之类实例化的顺序
- 免费的文本编辑器 (copied)
- 点跟多边形的碰撞检测
- pat 1070
- PHP中Imagick类的使用
- ARM处理器模式弹跳机制的初始化 笔记版 转载请注明出处---crosskernel@gmail.com
- windows 输出\r\n问题
- 算法概率思维导图
- C# 模拟键盘输入
- cmd 中报错:不是内部或外部命令,也不是可运行的程序
- LDA学习l