查看完整版本: [-- [Laser系列]补充一下今天想到的LASER的轨迹实现 --]

-> 同人游戏创作/Doujin Games Workshop -> [Laser系列]补充一下今天想到的LASER的轨迹实现 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

littlewater 2010-03-11 21:49

[Laser系列]补充一下今天想到的LASER的轨迹实现

考虑到轨迹的多样性,也许交流的时候会有些麻烦,总结了一下^-^,希望有帮助,也算是这次弄的LASER系列的小结吧~
照例上(草)图~

[attachment=79466]

通过实践觉得基本上可以用以下的方法来作:
(1)  首先列好你要的移动轨迹方程,通常如果不是基本曲线的话,请先使用分割的方式列出N组,使得其符合一阶可导要求,
e.g. y = sinx 是正弦曲线方程,那么在任意点都连续可导,导数就是 y' = cosx;
(2)  第二步是分点,目标为得到(x, y, theta),首先从任意位置取单点作为开始点,随后根据导数得到一个该点的方向k1,通过k1实际上就知道该点的瞬时运动方向了,然后逆向L/2长度,那就是下一个点的开始点,重复以上步骤,只是随后都取L的长度作为下一个点的开始点,所有步骤的总次数和你对laser的分段数目有关系^^,水水是16个;
(3)  第三步就是把(xn, yn, thetan)的阵列提交到显示计算,这一步每一个小方块只需要根据平移、旋转、拉伸、插值去相应处理即可,GPU CPU都可以^-^

随手花了一张草图^-^,如果有不清楚的,或者有反对的什么的……欢迎跟帖~^-^

littlewater 2010-03-11 21:57
想了一下,倒推L/2或者L的时候一般不会相交,可以使用的是L/2在X轴上的投影,这样再去根据X的数值计算Y即可

以及发现 SIN的曲线画反了- - OTL

同意注册 2010-03-11 21:57
学习,一切皆数学啊。

littlewater 2010-03-11 22:06
并不复杂……水水通常也不太懂那些高深的数学,这里方程也没太多,太多反而会影响到你计算的

有空的时候研究,其实真的不复杂~^-^ 把问题细化,这里就是如何取点的部分,至于平移、拉伸、旋转、插值什么的,都不必在这里考虑^-^~


查看完整版本: [-- [Laser系列]补充一下今天想到的LASER的轨迹实现 --] [-- top --]


Powered by phpwind v8.7 Code ©2003-2011 phpwind
Time 0.061550 second(s),query:2 Gzip enabled