@@ -787,7 +787,6 @@ impl LayerAlphas {
787
787
788
788
struct AnimationParameters {
789
789
// --- General ---
790
- uv : Vec2 ,
791
790
aa_width : f32 ,
792
791
793
792
// --- Debugging ---
@@ -799,35 +798,52 @@ struct AnimationParameters {
799
798
start_circle_stroke : f32 ,
800
799
num_circles : i32 ,
801
800
angle_between_circles : f32 ,
801
+ middle_circle_start_radius : f32 ,
802
802
}
803
803
804
- fn anim_discrete_circle_transition (
804
+ struct AnimMid {
805
+ center : Vec2 ,
806
+ }
807
+
808
+ /// Terminus animation.
809
+ fn anim_discrete_circle_terminus (
805
810
layers : & mut LayerAlphas ,
806
811
params : & AnimationParameters ,
807
812
t_master : f32 ,
808
- middle_circle_radius : f32 ,
813
+ uv : Vec2 ,
809
814
) {
810
- let uv = params. uv ;
811
815
let aa_width = params. aa_width ;
812
816
813
817
let & mut LayerAlphas {
814
818
ref mut alpha_black,
815
819
..
816
820
} = layers;
817
821
818
- let start_circle_radius = params. start_circle_radius ;
819
- let start_circle_stroke = params. start_circle_stroke ;
820
- let num_circles = params. num_circles ;
821
- let angle_between_circles = params. angle_between_circles ;
822
+ let & AnimationParameters {
823
+ start_circle_radius,
824
+ start_circle_stroke,
825
+ num_circles,
826
+ angle_between_circles,
827
+ middle_circle_start_radius,
828
+ ..
829
+ } = params;
822
830
823
- let t_rotation = exp_time ( t_master, 0.8 ) ;
824
- let t_trail_delayed = remap_time ( t_master, 0.4 , 1.0 ) ;
831
+ let t_radii = ( remap_time ( t_master, 0.0 , 0.9 ) . powf ( 2.0 )
832
+ + exp_time ( remap_time ( t_master, 0.3 , 1.0 ) , 0.2 ) * 0.5 )
833
+ . clamp ( 0.0 , 1.0 ) ;
834
+ let t_rotation = remap_time ( t_master, 0.4 , 1.0 ) . powf ( 2.5 ) ;
835
+ let t_trail_delayed = remap_time ( t_master, 0.6 , 1.0 ) ;
825
836
let t_trail = exp_time ( t_trail_delayed, 0.4 ) ;
826
- let t_assist_circle_delayed = remap_time ( t_master, 0.5 , 0.95 ) ;
827
- let t_assist_circle = exp_time ( t_assist_circle_delayed, 0.4 ) ;
828
- let t_border_circle_radii = exp_time ( remap_time ( t_master, 0.3 , 1.0 ) , -0.4 ) ;
829
837
830
- let outer_circle_outer_radius = mix ( start_circle_radius, 0.0 , t_border_circle_radii) ;
838
+ let t_assist_circle_delayed = remap_time ( t_master, 0.65 , 0.98 ) ;
839
+ let t_assist_circle = exp_time ( t_assist_circle_delayed, 0.5 ) ;
840
+
841
+ //let t_rotation = 0.0;
842
+ //let t_trail = 0.0;
843
+ //let t_assist_circle = 0.0;
844
+
845
+ let middle_circle_radius = mix ( middle_circle_start_radius, start_circle_radius, t_radii) ;
846
+ let outer_circle_outer_radius = mix ( start_circle_radius, 0.0 , t_radii) ;
831
847
let trail_angular_extent = mix ( 0.0 , angle_between_circles, t_trail) ;
832
848
let outer_circle_fade = mix ( 1.0 , 0.4 , t_trail) ;
833
849
@@ -836,7 +852,7 @@ fn anim_discrete_circle_transition(
836
852
let outer_discrete_circle = rotating_discrete_circle (
837
853
Vec2 :: ZERO ,
838
854
middle_circle_radius,
839
- -t_master * PI - t_rotation * TWO_PI * 5 .0,
855
+ -t_master * PI - t_master * t_rotation * TWO_PI * 2 .0,
840
856
num_circles,
841
857
i,
842
858
) ;
@@ -951,9 +967,6 @@ impl Inputs {
951
967
)
952
968
. position ;
953
969
954
- // TODO FIXME MATHSE
955
- let middle_circle_radius = middle_circle_position. y . abs ( ) . max ( start_circle_radius) ;
956
-
957
970
if debug {
958
971
let m_middle_circle_position_path = sdf_circle_filled (
959
972
uv - ( middle_circle_start_position / 2.0 ) ,
@@ -963,18 +976,7 @@ impl Inputs {
963
976
layers
964
977
. alpha_blue
965
978
. draw_sdf ( m_middle_circle_position_path, aa_width) ;
966
- }
967
-
968
- let middle_circle_moved_distance =
969
- ( middle_circle_start_position - middle_circle_position) . length ( ) ;
970
- // (middle_circle_start_radius + target_radius)
971
- // - (middle_circle_radius + middle_circle_moved_distance);
972
979
973
- // y adjust to follow the middle circle
974
- //middle_circle_position.y -=
975
- // (middle_circle_position.y + middle_circle_radius) * (1.0 - t_master);
976
-
977
- if debug {
978
980
let m_start_circle =
979
981
sdf_circle_filled ( uv, start_circle_radius) . to_outline ( start_circle_stroke) ;
980
982
layers. alpha_red . draw_sdf ( m_start_circle, aa_width) ;
@@ -995,17 +997,26 @@ impl Inputs {
995
997
}
996
998
997
999
let params = AnimationParameters {
998
- uv,
999
1000
aa_width,
1000
1001
debug,
1001
1002
debug_stroke,
1002
1003
start_circle_radius,
1003
1004
start_circle_stroke,
1004
1005
num_circles,
1005
1006
angle_between_circles,
1007
+ middle_circle_start_radius,
1006
1008
} ;
1007
1009
1008
- anim_discrete_circle_transition ( & mut layers, & params, t_master, middle_circle_radius) ;
1010
+ /*anim_discrete_circle_transition(
1011
+ &mut layers,
1012
+ ¶ms,
1013
+ mix(0.0, 1.0, remap_time(t_master, 0.0, 0.9)),
1014
+ uv,
1015
+ );*/
1016
+
1017
+ const DEPTH : usize = 20 ;
1018
+
1019
+ anim_discrete_circle_terminus ( & mut layers, & params, t_master, uv - middle_circle_position) ;
1009
1020
1010
1021
if debug && false {
1011
1022
let sdf_arc_test = sdf_arc_outline ( uv, -PI / 4.0 , PI / 4.0 , 1.0 , 0.0 , 0.5 , -PI / 4.0 , 1.0 ) ;
0 commit comments