我已将this animation取消模糊并简化为可用的jsfiddle here。尽管如此,我仍然不太了解它背后的数学。
有人有解释动画的见解吗?
答案 0 :(得分:10)
由于缺少间隔速度,您的小提琴链接对我不起作用,也应该使用getElementById
(因为它在Internet Explorer中有效并不能使其跨浏览器)。
在这里,我分叉了,改用它:
http://jsfiddle.net/spechackers/hJhCz/
我还清理了第一个链接中的代码:
<pre id="p">
<script type="text/javascript">
var charMap=['p','.'];
var n=0;
function myInterval()
{
n+=7;//this is the amount of screen to "scroll" per interval
var outString="";
//this loop will execute exactly 4096 times. Once for each character we will be working with.
//Our display screen will consist of 32 lines or rows and 128 characters on each line
for(var i=64; i>0; i-=1/64)
{
//Note mod operations can result in numbers like 1.984375 if working with non-integer numbers like we currently are
var mod2=i%2;
if(mod2==0)
{
outString+="\n";
}else{
var tmp=(mod2*(64/i))-(64/i);//a number between 0.9846153846153847 and -4032
tmp=tmp+(n/64);//still working with floating points.
tmp=tmp^(64/i);//this is a bitwise XOR operation. The result will always be an integer
tmp=tmp&1;//this is a bitwise AND operation. Basically we just want to know if the first bit is a 1 or 0.
outString+=charMap[tmp];
}
}//for
document.getElementById("p").innerHTML=outString;
}
myInterval();
setInterval(myInterval,64);
</script>
</pre>
您提供的两个链接中的代码结果彼此非常不同。
但是代码中的逻辑非常相似。两者都使用for循环遍历所有字符,对非整数进行mod操作,并使用bitwise
xor操作。
这一切是如何运作的,基本上都是I can tell you is to pay attention to the variables changing as the input and output change
。
所有逻辑似乎都是某种bitwise
神秘的方式来决定将2个字符或换行符中的哪一个添加到页面中。
我并不是从calculus or trigonometry
的角度来看自己。
答案 1 :(得分:6)
考虑到扫过矩形区域的每条线实际上是围绕固定原点的(4?)线的旋转。
根据视错觉,背景似乎“移动”。实际发生的是扫描线之间的区域在线条旋转时在两个焦点之间切换。
以下是2维的旋转方程式:
首先,在旋转(运动)之前和之后,在其中一行中可视化(x,y)坐标对:
因此,您可以为每一行创建一个点集合,并根据您想要动画的“平滑”程度将它们旋转到任意大小的角度。
答案 2 :(得分:2)
我上面的答案着眼于用给定公式转换的整个平面。
我试图在这里简化它 - 上面的公式是旋转的三角方程,它更简单地解决了 用矩阵。
x1是旋转变换(或运算符)动作之前的x坐标。
对于y1,同样如此。比如x1 = 0和y1 = 1.这些是结尾的x,y坐标 矢量在xy平面 - 目前是你的屏幕。如果您插入任何角度,您将获得新的 与矢量“尾部”的坐标固定在相同的位置。如果你多次这样做(次数取决于你选择的角度),你会回到0 x = 0和y = 1。
对于按位操作 - 我没有任何关于为什么使用它的原因。
每次迭代,按位操作用于决定是否绘制平面的点。注意k k的功效如何改变结果。
进一步阅读 -
http://en.wikipedia.org/wiki/Linear_algebra#Linear_transformations
http://www.youtube.com/user/khanacademy/videos?query=linear+algebra