Ответ 1
Ваша ссылка на скрипт не работала для меня из-за отсутствия интервальной скорости, также следует использовать 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
загадочного способа решить, какой из двух символов или разрыв строки добавить на страницу.
Я не совсем понимаю это с точки зрения calculus or trigonometry
.