在此模拟中,处理中的"r=r=>"打算做什么?



我试图从表面上理解这里张贴的这段漂亮代码中的语法:

t=0,draw=e=>{for(t++||createCanvas(w=400,w,WEBGL),background(w),fill(x=0),rotateX(d=t/120),rotateY(d),rotateZ(d);x<1331;)push(r=r=>(r-5)*(10+w*(o=1-sin(t%120/240*PI)))),translate(r(a=x%11),r(b=x%121/11|0),r(c=x++/121|0)),pop(box(10+o*(666==x?90:-10)))};//

我认为这是因为Twitter对字符数量的限制,它被发布为单行,并使用一些快捷方式来循环。我问的部分可能是一个循环。我尝试将代码展开为更易于阅读的内容,如下所示:

t=0,draw=e=>{for(t++||
createCanvas(w = windowWidth,w,WEBGL), background(w), fill(x=0),
rotateX(d=t/120),
rotateY(d),
rotateZ(d);
x<1331;)
push(r=r=>(r-5) * (10 + w * (z = 1 - sin(t%120/240*PI)))),
translate(r(a=x%11),
r(b=x%121/11|0),
r(c=x++/121|0)),
pop(box(10+z*(666==x?90:-10)))};//

r=r=>(r-5)的目的是什么?我查了push()pop(),我有一个模糊的概念,但那个表达式令人困惑。

整个回调从t=0,draw=e=>开始这个e可能是一个事件,字母e通常用来表示事件

这是一个回调函数,赋值给'r'

r = (r) => (r * 5) * (10 + w * (z = 1 - sin(t%120/240*PI)))),
translate(r(a=x%11),
r(b=x%121/11|0),
r(c=x++/121|0)),
pop(box(10+z*(666==x'90:-10))};

就像

number = (num) => num * 2
number(4) // will multiply four by two

相关内容

最新更新