35 lines
No EOL
1.2 KiB
Text
35 lines
No EOL
1.2 KiB
Text
let(
|
||
margin, 0.1,
|
||
eukleides("",-0.1-margin,-margin,sqrt(2)+0.1+margin,1+margin,
|
||
let(
|
||
ease, x -> if(x<0.5, 4x^3, 1 - ((2-2x)^3)/2),
|
||
frame, (from,to) -> ease(clamp((time-from)/(to-from), 0, 1)),
|
||
frame_lengths, [3,1,1,5],
|
||
frame_times, foldl((a,b) -> a+[a[-1]+b], [0], frame_lengths),
|
||
frame_number, (take(1, i -> frame_times[i]>=time, 0..len(frame_times)-1)+[len(frame_times)])[0]-1,
|
||
frames, frame(x,y) for: [x,y] of: zip(frame_times, frame_times[2..len(frame_times)]),
|
||
[a,b,c,d], rectangle(sqrt(2),1),
|
||
e, point(1,0),
|
||
f, point(1,1),
|
||
square_label, center(a..e..f..d) text("210×210") size(0.5),
|
||
strip_label, center(e..b..c..f) text("87×210") size(0.5),
|
||
[
|
||
switch(
|
||
frame_number<3,
|
||
[a..b..c..d
|
||
, (e..f) opacity(frames[0])
|
||
, [square_label, strip_label
|
||
] * opacity(frames[1])
|
||
]
|
||
, [ [(a..e..f..d), square_label] - vector(frames[3]*0.1, 0)
|
||
, (x + vector(frames[3]*0.1, 0)) for: x of: [(e..b..c..f), strip_label]
|
||
]
|
||
)
|
||
//, point(0.7,0.7) text(jme_string(frame_times)) size(0.4)
|
||
//, point(0.7,0.5) text(jme_string(frames)) size(0.4)
|
||
//, point(0.5,0.3) text(jme_string(frame_number)) size(0.5)
|
||
//, point(0.5,0.1) text(jme_string(time)) size(0.5)
|
||
]
|
||
)
|
||
)
|
||
) |