随笔分类 - 游戏中的数学
摘要:1.重心坐标 三角形重心坐标(Barycentric Coordinates)可以通过alpha、beta、gamma三个权重总和为1的插值系数得到 三角形内任意一点,可以用此求出某点的重心坐标系数,或是给出系数得到一点: public class Test : MonoBehaviour { pu
阅读全文
摘要:在处理UV重叠、CPU的ZFighting检测时会遇到2D空间中的三角形相交问题, 网上普遍是3D空间的相交解法,因此写本文研究下,不过虽然实现了需求, 但解法较为暴力。 效果如图: (鼠标拖动区域处有一小三角形,与外部大三角形进行相交包含演示) 若两三角形存在线段相交,则两三角形相交,但三点都包含
阅读全文
摘要:参考文章:https://www.cnblogs.com/zhiyishou/p/4430017.html 本文使用逐点插入法进行剖分,并使用Unity3D实现。 通过阅读文章《Triangulate》给出的伪代码进行具体编写,我加了些注释: subroutine triangulate input
阅读全文
摘要:OBB全称Oriented bounding box,方向包围盒算法。其表现效果与Unity的BoxCollider并无二致。由于3D空间的OBB需要多考虑一些情况 这里仅关注2D空间下的OBB。 实现效果: 网上有许多OBB的讲解,具体步骤也未必一样,我的做法: 在两个凸多边形中找到一根轴,凸多边
阅读全文
摘要:(注意 取的是中心点位置来计算边界点,而非投影点位置。可以自行修改为投影点) 之前想做一些体积碰撞的效果但是遇到点问题,胶囊边界点检测这个涉及到球体的交点检测以及圆柱的交点检测 觉得可以放上来,相交检测的代码逻辑来源于网络。 using System.Collections; using Syste
阅读全文
摘要:出处: https://answers.unity.com/questions/366802/get-intersection-of-a-line-and-a-circle.html 测试脚本(返回值为交点数量):
阅读全文
摘要:出处:https://stackoverflow.com/questions/19916880/sphere-sphere-intersection-c-3d-coordinates-of-collision-points 修改(加入包含和不相交情况的判断):
阅读全文
摘要:参考自《游戏编程精粹1》多边形相交部分,用该方法除了知道是否相交以外还可以得到相交点,从而用于其他判断。 原文用到了平面方程的基本式Ax+By+Cz+D=0,求出线段2点p0和p1的D值,用D值转换成比值最后插值得到坐标 不用平面方程其实也可以用向量投影解释。 其中一些公式计算直接做了优化,没有生搬
阅读全文
摘要:最近无意中拓展出这个东西,基于之前写的2D多边形检测: http://www.cnblogs.com/hont/p/6105997.html 而判断两条线相交的方法替换成了我后来写的差乘判断: http://www.cnblogs.com/hont/p/6106043.html 该功能在多边形选区与
阅读全文
摘要:参考文章:http://www.cnblogs.com/SkyD/archive/2008/09/05/1284778.html 主要依据胡克公式F=-k·x。这里k是倔度系数,可以理解为k值越大弹性越强。 实际运用不能照搬胡克公式,可以作为速率使用,具体看参考文章。 k值较低的效果: k值较高的效
阅读全文
摘要:朋友那边最近有个需求,需要框选一个选区,然后根据选区中的点求出面积。并且让我尝试用Delaunay来解决 似乎音译过来应该是德诺类 大致如下: 我在github上找了一个可以用的Delaunay库 https://gist.github.com/miketucker/3795318 (补充:我的De
阅读全文
摘要:要注意如果是XY坐标轴的2D空间,要取差乘分量z而不是y。 实现原理是,将三角形ABC三个边(AB,BC,CA)分别与比较点判断差乘,如果这3个差乘结果表示的方向一致,说明就在三角形内。 效果: 代码(Unity3D): 为了加误差,所以多做了3次差乘。不过使用起来还算可以
阅读全文
摘要:之前一篇文章里写了一种差乘判断方法:http://www.cnblogs.com/hont/p/6105997.html 虽然用3D空间的差乘,但是只适用于2D空间 //线段ab与线段cd进行(Unity XZ空间)相交检测 bool IsIntersect(Vector3 a, Vector3 b
阅读全文
摘要:参考自这篇博文:http://www.cnblogs.com/dabiaoge/p/4491540.html 一开始没仔细看做法,浪费了不少时间。下面是最终实现的效果: 大致流程: 1.随便选取多边形上任意一条边,以比较点和边的中心点做一条射线(这里用的伪射线) 2.用这条射线与其他所有边判断是否相
阅读全文
摘要:由于Unity只有4x4矩阵,今天要做一个2x2矩阵的旋转,居然忘了顺序。故写下作为模版记录。 顺序: 下面是使用其进行旋转的C#代码:
阅读全文
摘要:官方例图 测试: code: 官方论坛扩展阅读LINK
阅读全文