题目 快手秋招笔试原题 没做出来orz https://leetcode.cn/problems/maximum-number-of-tasks-you-can-assign/description …
核心思想 因名可知(Forward And Backward Reaching Inverse Kinematics),FABRIK算法的本质就是向前迭代一次,再向后迭代一次; 不同于CCD需要把骨骼…
概述 最简单的IK算法; 问题 当给定一个约束点,它的解空间是两个球的交点,也就是说解出了一个圆环,在圆环上的任何一个点解都是有效的; 解决方法是给一个ReferenceVector参考向量,沿着参考…
概述 简单的两骨IK可以通过Two Bones IK解决,但实际开发中有许多多骨骼的链式IK,同时人体的不同骨骼有不同的约束,Two Bones IK难以解决,此时可以通过CCD求解; 核心思想 把节…
概述 Unity的NavMesh在生成寻路网格后,网格多边形是不规则的,要如何沿着直线前进呢?这就要用到拐角路径优化技术了,这使得物体始终朝着下一个可见拐角移动,直至到达目标。 思路 以一个简单的例子…
概述 在Unity的NavMesh官方文档中提到,转向逻辑采用下一个拐角的位置并基于该位置计算出到达目标所需的方向和速度,但使用所需的速度移动物体可能会导致与其他物体发生碰撞。 动态避障系统将选择新的…
概述 概念 红黑树也是是一种自平衡的二叉搜索树,与AVL树不同的是它在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black; 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树…
概述 平衡因子 某节点左右子树的高度差 AVL树的特点 每个节点的平衡因子只可能是1、0、-1(绝对值 ≤ 1,如果超过 1,称之为“失衡”),所以每个节点的左右子树高度差不超过1 搜索、添加、删除的…
概述 A* = Dijkstra + 启发式函数 A*是Dijkstra的启发式改进版,目的在于解决Dijkstra效率低的问题。Dijkstra不知道目标节点的位置,所以只能向所有方向扩展直到发现目…
概述 迪杰斯特拉算法是一种广为人知的最短路径算法,下面叫做Dijkstra; Dijsktra和BFS的本质区别在于BFS是按照人为预先定义好的顺序访问容器中的节点,而Dijsktra是访问当前容器中…