Found this
Made that
With an empty inverted polygon layer, the canvas on 0 0,
with_variable(
'line_star',
collect_geometries(
with_variable(
'buffered_point_array',
geometries_to_array(
nodes_to_points(
buffer(make_point(0,0), distance:=100, segments:=42),
ignore_closing_nodes:=True
)
),
array_foreach(
@buffered_point_array,
make_line(
@canvas_cursor_point,
@element
)
)
)
),
with_variable(
'donut_line_star',
difference(
@line_star,
buffer(
@canvas_cursor_point,
distance:=sin(scale_linear(epoch(now())%10000/100, 0, 100, -pi(), pi()))*30+30, -- %10000/100 = 0-100
segments:=42
)
),
collect_geometries(
@donut_line_star,
intersection(
rotate(@donut_line_star, 1),
translate(
buffer(
@canvas_cursor_point,
distance:=sin(scale_linear(epoch(now())%10000/100, 0, 100, -pi(), pi()))*50+50, -- %10000/100 = 0-100
segments:=42
),
sin(scale_linear(epoch(now())%10000/100, 0, 100, -pi(), pi())), -- %10000/100 = 0-100
0
)
)
)
)
)
and an arrow style with feature blending.