当前位置: 首页 > news >正文

信息流广告代理商的盈利模式榜单优化

信息流广告代理商的盈利模式,榜单优化,包装品牌设计公司,专业做校园文化的网站一、介绍 分离轴算法(简称SAT)通常用于检查两个简单多边形(凸边形)之间或多边形与圆之间的碰撞。本质上,如果您能够绘制一条线来分隔两个多边形,则它们不会发生碰撞,如果找不到一条线来分割两个…

一、介绍

       分离轴算法(简称SAT)通常用于检查两个简单多边形(凸边形)之间或多边形与圆之间的碰撞。本质上,如果您能够绘制一条线来分隔两个多边形,则它们不会发生碰撞,如果找不到一条线来分割两个多边形,则它们发生碰撞。

如图:

 

 

        具体做法是遍历两个多边形的所有边,求得每条边的法向轴,再求出每个多边形在法向轴上的投影,求出投影的最大值点和最小值点,通过比较两个多边形的最值点的关系得出是否碰撞。

演示:

 

 

 

 

 

 

 

 运行代码:

获取在法向轴上投影的函数:

public void ProjectPolygon(Vector2 axis, Polygon polygon, ref float min, ref float max)
{//要在轴上投影一个点,使用点积float dotProduct = Vector2.Dot(axis, polygon.Points[0]);min = dotProduct;max = dotProduct;for (int i = 0; i < polygon.Points.Count; i++){dotProduct = Vector2.Dot(polygon.Points[i], axis);if (dotProduct < min){min = dotProduct;}else{if (dotProduct > max){max = dotProduct;}}}
}

 判断是否相交函数:、

  public float IntervalDistance(float minA, float maxA, float minB, float maxB){if (minA < minB){return minB - maxA;}else{return minA - maxB;}}

检测函数:

    public bool CollisionDetection(Polygon polygonA, Polygon polygonB){int edgeCountA = polygonA.Edges.Count;int edgeCountB = polygonB.Edges.Count;Vector2 edge;// 循环遍历两个多边形的所有边for (int edgeIndex = 0; edgeIndex < edgeCountA + edgeCountB; edgeIndex++){if (edgeIndex < edgeCountA){edge = polygonA.Edges[edgeIndex];}else{edge = polygonB.Edges[edgeIndex - edgeCountA];}//查找多边形当前是否相交// 找出垂直于当前边的轴Vector2 axis = new Vector2(-edge.y, edge.x);axis.Normalize();// 求多边形在当前轴上的投影float minA = 0; float minB = 0; float maxA = 0; float maxB = 0;ProjectPolygon(axis, polygonA, ref minA, ref maxA);ProjectPolygon(axis, polygonB, ref minB, ref maxB);// 检查多边形投影当前是否相交if (IntervalDistance(minA, maxA, minB, maxB) > 0)return false;}return true;}

结果演示:

碰撞检测算法-分离轴算法

参考链接:

https://code.tutsplus.com/collision-detection-using-the-separating-axis-theorem--gamedev-169t

How 2D Game Collision Works (Separating Axis Theorem) - YouTube

Collision Detection with SAT (Math for Game Developers) - YouTube

http://www.mmbaike.com/news/61968.html

相关文章:

  • 深圳线上注册公司seo网络推广经理
  • 网上有做衣服的网站有哪些如何宣传推广自己的产品
  • 做不锈钢门的网站指数运算法则
  • 绥化安达网站建设怎样注册个人网站
  • 邢台网站建设服务热点时事新闻
  • 广告买卖网aso优化报价
  • 一个空间能否做两个网站百度营销app
  • 富阳做网站的竞价托管咨询微竞价
  • 临沂百度网站网络营销的策划方案
  • 中国最大网站建设商想要网站导航正式推广
  • 织梦做网站建立数据库网络营销推广方案前言
  • 上海做网站 公司整合营销名词解释
  • 网站活动专题页面设计深圳关键词优化软件
  • 餐饮网站建设方案书自建网站
  • 怎样做号网站优化做网络推广有前途吗
  • 公司网站制作与维护seo是哪个英文的缩写
  • 东莞网站建设 乐云seo网站seo规划
  • 自己有域名怎么做网站google永久免费的服务器
  • 政府类网站模板下载新闻发布最新新闻
  • 专题网站创意设计与实现百度站长工具查询
  • 微信开发者工具的介绍百度app关键词优化
  • 做海外市场什么网站推广企业网站设计
  • 上海市人才服务中心网首页网站优化要多少钱
  • asp网站生成静态色盲测试图及答案大全
  • 雄安网站建设重庆做网络优化公司电话
  • 上海市场监督管理局安卓优化大师旧版本下载
  • 廊坊网站制作建设线下推广方法有哪些
  • 为什么不用h5做网站无锡seo公司哪家好
  • 合肥做淘宝网站网页seo优化
  • 东莞做网站卓诚莆田seo推广公司