2015-01-01(e)an
SVG Polygon circle animation
Je pose ici un petit script que je viens de creer pour animer un point d'un polygone SVG, qui parcourt un cercle.
Notez que ce script a quelques parametres:
- $svg: contient les points du polygone initial
- $move_dot_number: le point a deplacer (1: premier point)
- $num_dots_to_generate: nombre de points a generer. Plus le nombre est important, moins l'animation sera sacadee)
- $radius: taille du cercle parcouru
#!/usr/bin/perl -w
use Math::Trig;
#
#
my $i;
my $svg = "20,20 20,40 40,40 40,20";
my $move_dot_number = 3;
my $num_dots_to_generate = 60;
my $radius = 3;
my $regex_x = "";
for($i=1; $i<$move_dot_number; $i++)
{
$regex_x .= "[\d\.]+,[\d\.]+ ";
}
my $regex_y = $regex_x;
my $get_x = "^$regex_x([\d\.]+)";
$regex_x = "^($regex_x)[\d\.]+";
my $get_y = "^".$regex_y."[\d\.]+,([\d\.]+)";
$regex_y = "^(".$regex_y."[\d\.]+,)[\d\.]+";
my ($center_x) = ($svg=~ /$get_x/);
my ($center_y) = ($svg=~ /$get_y/);
print "CENTER $center_x / $center_y
";
my @values=();
my @values2=();
my $angle=0;
my $temp_value=0;
$num=0;
while($angle<360)
{
my $dup_svg = $svg;
my $x = $center_x + $radius * cos($angle);
$x=~ s/(.d{4}).*/$1/g;
my $y = $center_y + $radius * sin($angle);
$y=~ s/(.d{4}).*/$1/g;
$dup_svg =~ s/$regex_x/$1$x/;
$dup_svg =~ s/$regex_y/$1$y/;
$angle+=360 / $num_dots_to_generate;
push(@values, $dup_svg);
$temp_value= $num/($num_dots_to_generate-1);
$temp_value=~ s/(.d{4}).*/$1/;
push(@values2, $temp_value);
$num++;
}
print "
<animate
id=""to-right"
Tfe