曲线参数化的Javascript实现(理论篇)
摘要:在关键帧动画的制作过程中,动画师在k物体运动的过程中,一般要确定2个参数: 1)运动轨迹(表示物体运动的路径); 2)速度曲线(表示物体随时间的速度变化)。 对于运动轨迹通常选用一定的样条曲线,通过动画师给出关键点位置,通过曲线插值产生,如之前介绍的一种Cardinal样条曲线。速度曲线就是速度根据时间变化的曲线,速度曲线在一段时间上的积分累加就是运动过的路程(不是位移)。对于简单的运动类型如匀速直线运动(速度曲线是一个常数),匀加速直线运动(速度曲线是一条加速度为斜率的直线方程)都可以直接获得路程随时间变化的方程,从而得到每个时间点在曲线上通过的路径长度。因此就需要在样条曲...
阅读全文
Cardinal样条曲线的Javascript实现(代码篇)
摘要:由上一篇文章得到了Cardinal曲线的矩阵表达式,下面就这个矩阵表达式就可以来对曲线进行插值了。这里选用了JS来实现,完全是因为之前交作业的时候还不知道怎么在Xcode里建完整的C++OpenGL的项目,所以就用js在浏览器这个最大的跨平台UI上写。。先看之前得到的Cardinal插值的样条曲线的矩阵,对每一段曲线PkPk+1来说,都可以通过拟合一个被参数化为P(u)函数(0<= u <=1)的图形的形式:,其中同样,M*P得到的是系数矩阵[a b c d]的转置,s是引入的表示每个连接点处曲线尖锐程度的变量-张量所以我们现在的期望是输入:n个控制点的xy轴坐标数组x[],y[]
阅读全文
Cardinal样条曲线的Javascript实现(理论篇)
摘要:首先,要对样条曲线进行插值的原因是:希望通过给定的关键帧点生成一条希望的直线或者曲线。1.直线插值 生成一条直线,给定直线首尾的关键点P0,P1,就能确定这条直线的特性,比如y=kx+b中的斜率k和y轴偏移值b。通过线性(P0,P1线性相关)插值(线性的给中间插上一定数量的点使看起来连续)的方式就可以得到我们要的线段。 图1.12.曲线插值 但是对于曲线来说比较难确定,我们要对于给定的参数生成唯一的一条曲线并且可以进行方便的调整。这里要确定每一小段曲线,我们需要4个参数,首尾点的位置(参数化后的P(u))及他们的方向(在代数上表现为一阶导数P'(u)的值),并进行平滑...
阅读全文
Xcode下搭建opencv环境碰到的一些问题
摘要:写了一学期py-opencv了都快结束了突然又要折腾起c++下来,真实给自己跪了,不过环境基本都搞定了,中间碰到了一些问题这里总结一下:usr/local/include和usr/local/lib的问题就不说了,编译之前要把头文件和动态库都连进去否则会产生dyld: Library not loaded的错误dyld: Library not loaded: cv2.so,有放到cv2.so檔案的, 則是要記得到Build Phases(project target下)內,把選項改為optionalUndefined symbols for architecture x86_64: &quo
阅读全文
汇编与反汇编
摘要:对于一段nasm的汇编代码section .textglobal mystart ; make the main function externally visiblemystart:xor bx,bxstart: mov ax,1add ax,bxjmp short nextnopnopnopnext: mov bx,ax; 2 exit the program; 2a prepare the argument for the sys call to exitpush dword 0 ; exit status returned to the operating system; 2b mak
阅读全文