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

dede网站转移如何做网站运营

dede网站转移,如何做网站运营,注册了微信小程序怎么登录,没有备案的网站 公司服务器 查到会怎么样一、介绍 分离轴算法(简称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.yayakq.cn/news/457799/

相关文章:

  • 泉州网站制作维护做网站模板链接放哪里
  • iis网站后台登不进做盗版网站的
  • 网站建设都包含什么步骤网站建设SEO优化哪家好
  • 装修网站平台排行榜代理主要干什么
  • 手机号注册的网站wordpress链接样式设置方法
  • 杭州 企业门户网站建设芜湖网站建设芜湖
  • 连云港网站优化泉州手机模板建站
  • 企业网站推广渠道有哪些品牌网站都有哪些
  • 深圳网站建设现中信建设海南有限责任公司
  • wang域名注册网站wordpress加底部进度条
  • html5自适应网站源码一分钟新闻口播稿
  • 个人备案网站可以做论坛吗学校网站设计方案模板
  • 保险咨询网站建设关于网站建设的请示范文
  • 东营建设信息网站电话网站的发展历史
  • 公司网站制作设计价格论坛类网站可以做移动端吗
  • 长春网站制作小程序wordpress替换百度站内搜索
  • 医疗网站建设新闻做网站宣传语
  • 南通网站设计公司网页设计素材制作
  • 建网站建设哈尔滨建站系统报价
  • 天河定制型网站建设织梦模板安装到wordpress
  • 佛山网站优化包年网站公司销售怎么做
  • 手机网站描述深圳谷歌优化seo
  • 知名商城网站建设报价网站设置密码进入
  • 如何推广网站业务度更新网站
  • 网站内链怎么优化WordPress前端分离
  • 网站的二维码怎么变小wordpress商城文章
  • 如何做网站运营呢乐云seo模板网站建设
  • 网站建设公司宣传册网站建设规划书企业网站
  • 网站建设中应该注意什么手机网站建设yu
  • 网站的开发语言有哪些系统门窗品牌10大品牌排行