Math
文章平均质量分 89
scott.cgi
要么编程,要么被编程,编程是一种超能力
展开
-
贝塞尔三次方曲线优化, 24次乘法转换成6次加法
贝塞尔三次方的公式,涉及到4个点。如p1,p2,p3,p4,其中p1是起点,p4是重点, p2,和p3是控制点。公式如下:原创 2014-08-08 09:37:43 · 1958 阅读 · 0 评论 -
矩形旋转碰撞,OBB方向包围盒算法实现
矩形旋转碰撞,OBB方向包围盒算法实现原创 2014-08-09 16:31:13 · 11356 阅读 · 3 评论 -
C 实现射线检测多边形碰撞
以前,使用旋转分离轴实现过, 矩形旋转碰撞,OBB方向包围盒算法实现 。但这个算法,本身有点复杂,并且在边越多的时候计算量增长的会很快,扩展到3D层面会更加的复杂。而且这个算法碰撞后获取碰撞点的坐标有点繁琐。射线检测算法,是一个比较简单清晰的思路,实现起来复杂度也不高,碰撞点也容易获得,扩展到3D世界依然有效。 要用射线去检测碰撞,之前我们先从一个点开始。如果能够判断一个点是否和多原创 2016-07-08 23:17:18 · 3327 阅读 · 3 评论 -
矩阵旋转算法提高75%运算
矩阵旋转,有4种情况。绕X轴旋转绕Y轴旋转绕Z轴旋转绕任意轴旋转首先,给出通常的算法。typedef union{ float m[16]; struct { float m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15; };}原创 2016-08-22 22:49:46 · 1480 阅读 · 0 评论 -
float数值update逼近目标数值算法
有一种场景需求,一个float数值,以一定的速度,逼近一个目标数值。不使用tween和差值算法,这里我们用一个超级简单的update自己来算。float curX;float targetX;float speed;void Update(){ if (curX != targetX) { if (curX > targ原创 2017-04-08 17:09:26 · 714 阅读 · 0 评论 -
Quake3 快速开平方和开平方倒数计算优化
在Quake3中,卡马克使用了广为人知的魔数来优化,开平方和开平方倒数计算。而在Doom3中改为查表计算了。 [cpp] view plain copy /* ================ SquareRootFloat ================ */ float SquareRootFloat(floa原创 2016-02-23 08:46:47 · 3338 阅读 · 0 评论