eukleides/drawing.txt

35 lines
1.2 KiB
Text
Raw Normal View History

2025-02-09 20:33:33 +00:00
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)
]
)
)
)