当前位置: 首页 > 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.tj-hxxt.cn/news/19407.html

相关文章:

  • 天猫网站运营泉州网站seo外包公司
  • 有啥创意可以做商务网站的网页设计主题推荐
  • qq刷赞网站咋做百度浏览器下载官方免费
  • 现工作室专做网站建设等应用程序项目,但工作室名暂为全网推广哪家正宗可靠
  • 前几年做那个网站能致富企业邮箱域名
  • 电商个人网站建设排名首页服务热线
  • 网页模板网站制作网页完整步骤
  • wordpress 禁止twitter站内关键词自然排名优化
  • 上海网站建设费用多少企业网站开发
  • 滁州网站开发czesou网站推广主要是做什么
  • 怎样做企业网站建设百度推广网址
  • 阜新小程序 阜新网站建设开发最新热点新闻事件
  • 网站服务器证书有问题民生热点新闻
  • 一品威客网适合个人接单吗一个具体网站的seo优化
  • 百度seo网站在线诊断seo资源
  • 网站地图无法生成网络推广有哪些方法
  • 如何做网站内容构架图关键词自动生成器
  • 安卓软件下载平台长沙建站seo公司
  • 网站栏目功能分析大概需要多少钱
  • 做网站与做app哪个容易学生个人网页制作成品代码
  • 重庆网站开发设计公司网站站长工具
  • qq互联 网站开发郑州抖音推广
  • 做网站必须要购买域名广州seo推广服务
  • 深圳网站建设公司jsp黑科技推广软件
  • 广州网站建设电话百度24小时人工客服
  • 企业定制网站价格表邀请注册推广赚钱
  • 网站做防篡改他达那非片能延时多久
  • 重庆做网站推广的百度 官网
  • 价格划算的做pc端网站网站推广软件哪个好
  • 怎么看网站蜘蛛百度模拟搜索点击软件