欢迎来到我的空间
寻路和避障算法最近需要实现一个后端控制逻辑的多人多兵种的自动战斗机器人。其中就需要涉及到寻路和避障的问题。这里简单记录一下遇到的问题和解决方案。
寻路说到寻路,首先想到星寻路算法,我们把地图抽象成了格子就像图中所示至于星寻路算法算法如何编写已经他的原理就不再赘述。我一开始对多物体寻路的做法是,把所有物体也看做障碍物,这样多物体之间就不会发生碰撞。这样的好处是代码逻辑非常简单,缺点是增加了地图的复杂度,即使在小地图上星寻路算法的成本也很高。用性能诊断工具在一个40*45的地图上,200个战斗单位每个物体每次寻路需要耗费1000多微秒(虽然开启了性能诊断工具检测性能程序会比平时运行慢很多)也就是1毫秒左右,这样如果50毫秒为1帧,每帧只能寻路50个单位,这样是不满足需求的。所以把所有物体也看做障碍物这样是不不可行的。
避障如果不允许把单位看成障碍物,那物体之间就要用到避障算法,由于之前没有接触过这个话题,所以只能在网上查找到好的做法。一番查找后我选择了避障算法,这种算法把物体抽象成圆形物体,有半径和速度,通过速度和半径预判两物体是否相撞,如果相撞就转变方向,从而实现避障。用了避障算法后就不 ...
快随入门搭建一个轻量博客
快随入门搭建一个轻量博客配置环境安装脚本工具(必须)
作用:用来生成静态页面的
到脚本工具官网下载相应平台的最新版本,一路安装即可。
安装版本管理(必须)
作用:把本地的轻量博客内容提交到版本管理工具上去.
安装编辑器就自带有版本管理,我就不多说了。
申请版本管理工具(必须)
作用:是用来做博客的远程创库、域名、服务器之类的,怎么与本地轻量博客建立连接等下讲。
版本管理工具账号我也不再啰嗦了,没有的话直接申请就行了,跟一般的注册账号差不多,密钥,看你自己了,可以不配制,不配置的话以后每次对自己的博客有改动提交的时候就要手动输入账号密码,配置了就不需要了,怎么配置我就不多说了,网上有很多教程。
正式安装轻量博客脚本工具和版本管理都安装好后,首先创建一个文件夹,如博客文件,用户存放轻量博客的配置文件,然后进入博客文件里安装轻量博客。
网上会有很多说法,有的类型是版本管理工具, 还有知识库最后面的后缀也不一样,我也踩了很多坑,我现在的版本是轻量博客: 3.1.1,执行命令轻量博客 版本就出来了,貌似3.0后全部改成我上面这种格式了。
忘了说了,我没用密钥如果你用了密钥的话直接在版本管理工具里 ...
性能优化
针对手机端浏览器性能问题的解决方案经过验证,此问题波及 苹果 14 上的所有浏览器、 运行环境,小游戏和原生游戏不受影响。引擎组立即着手调试,经过一天的排查,发现这个问题的症结在 虚拟拷贝 的共享上。为优化性能,创建多个渲染之间会共享同一份 虚拟拷贝,每个渲染使用一个偏移值在共享 虚拟拷贝 中找到本次渲染的数据,但是经过我们验证后发现,共享 虚拟拷贝 会导致在 苹果 14 上性能下降非常严重。
打造个性化网站程序
打造个性化网站程序看到有些博客的网站很炫酷,那么是怎么配置的呢?接下来我会讲一讲如何实现一些炫酷的效果
主要有以下方法
添加动态背景
实现点击出现桃心效果
修改文章内链接文本样式
修改文章底部的那个带#号的标签
在每篇文章末尾统一添加“本文结束”标记
修改作者头像并旋转
博文压缩
修改``代码块自定义样式
侧边栏社交小图标设置
主页文章添加阴影效果
在网站底部加上访问量
添加热度
网站底部字数统计
设置网站的图标
实现统计功能
添加顶部加载条
在文章底部增加版权信息
添加网易云跟帖(跟帖关闭,已失效,改为来必力)
修改网页底部的桃心
文章加密访问
添加分享
博文置顶
修改字体大小
修改打赏字体不闪动
自定义鼠标样式
为博客加上萌萌的宠物
点击爆炸效果
常见算法总结
常见算法总结前言:本篇文章总结中用到很多其他博客内容,本来想附上原作链接,但很久了未找到,这里关于原创性均来源于原作者。
分治法分治策略的思想:顾名思义,分治是将一个原始问题分解成多个子问题,而子问题的形式和原问题一样,只是规模更小而已,通过子问题的求解,原问题也就自然出来了。总结一下,大致可以分为这样的三步:
分解:将原问题划分成形式相同的子问题,规模可以不等,对半或2/3对1/3的划分。
解决:对于子问题的解决,很明显,采用的是递归求解的方式,如果子问题足够小了,就停止递归,直接求解。
合并:将子问题的解合并成原问题的解。
这里引出了一个如何求解子问题的问题,显然是采用递归调用栈的方式。因此,递归式与分治法是紧密相连的,使用递归式可以很自然地刻画分治法的运行时间。所以,如果你要问我分治与递归的关系,我会这样回答:分治依托于递归,分治是一种思想,而递归是一种手段,递归式可以刻画分治算法的时间复杂度。所以就引入本章的重点:如何解递归式?
分治法适用的情况分治法所能解决的问题一般具有以下几个特征:
该问题的规模缩小到一定的程度就可以容易地解决
该问题可以 ...
小程序-图形学基础知识点
小程序-图形学基础知识点认识 什么是顶点 顶点函数的作用一个三角面由三个顶点 如图
渲染模型的时候 每一个顶点都会去经过顶点函数的处理 把 模型空间转换到剪裁空间 因为必须知道这些顶点在屏幕上是什么样子后才知道把这个模型渲染到屏幕哪里 第一步先把模型转换到视野里面确定到他在视野屏幕上的一个位置 这个就是顶点函数的作用 也是它最基本的作用 在这个基本作用的基础之上还可以做一些其他的扩展
什么是模型空间 ?答:每个模型都有一个Mesh 这里存储了它的顶点信息 这个顶点信息就是他的顶点坐标 这个顶点坐标是相对于这个模型的自身中心来说的 这个中心是建模的时候设定的 这个中心是用来计算所有顶点坐标的一个坐标系 这个坐标系称为模型空间和模型坐标系 (模型空间的一个坐标系)
什么是剪裁空间 ?答:(暂时理解为转换到二维的屏幕空间 真实不是这样的 便于理解) 现在的顶点坐标是三维的 把这个三维坐标转换成屏幕的二维坐标 在转换二维坐标的时候可以在顶点里面存储一些颜色和我们需要的一些信息或者我们稍微对顶点做一些变换 这样这个模型会有一些变形的效果
认识 什么是片元 片元函数的作用片元理解为是一个像 ...
最大堆最小堆
最大堆最小堆堆堆给人的感觉是一个二叉树,但是其本质是一种数组对象,因为对堆进行操作的时候将堆视为一颗完全二叉树,树种每个节点与数组中的存放该节点值的那个元素对应。所以堆又称为二叉堆,堆与完全二叉树的对应关系如下图所示:
通常给定节点i,可以根据其在数组中的位置求出该节点的父亲节点、左右孩子节点,这三个过程一般采用宏或者内联函数实现。书上介绍的时候,数组的下标是从1开始的
根据节点数值满足的条件,可以将分为最大堆和最小堆。把堆看成一个棵树,有如下的特性:
保持堆的性质堆个关键操作过程是如何保持堆的特有性质,给定一个节点i,要保证以i为根的子树满足堆性质。书中以最大堆作为例子进行讲解,并给出了递归形式的保持最大堆性的操作过程。先从看一个例子,操作过程如下图所示:
从图中可以看出,在节点i=2时,不满足最大堆的要求,需要进行调整,选择节点2的左右孩子中最大一个进行交换,然后检查交换后的节点i=4是否满足最大堆的要求,从图看出不满足,接着进行调整,直到没有交换为止。
建堆建立最大堆的过程是自底向上地调用最大堆调整程序将一个数组A[1…N]变成一个最大堆。将数组视为一颗 ...