Hi, I made an animated gif and would like your advice about it. It's an animation of a spinning circle. I have built a circle with plenty of pixels, and put the coordinates in 2 arrays. Furthermore i have divided the animation in different angles, meaning that image2 is 30 gegrees, image3 is 60 degrees etc. So i have 6 images. The animation has a lot of code, 200 lines, while it looks more like a 20 line program as it is very basic. Maybe in stead off making a new image for every different angle, I could use 1 loop to go through these angles and make those images from inside this loop. Maybe I could go through these arrays once i.s.o. for every new image. Maybe using those arrays wasn't a good idea after all, etc. Anyway any comments or ideas would be highly appreciated.

use GD; use warnings; $img = new GD::Image(400,400); $white = $img->colorAllocate(0,0,0); $red=$img->colorAllocate(200,0,0); $straal = 50; for($teller=0;$teller<((3.141592*2));$teller+=0.001){ $yy = $straal * sin($teller); $xx = $straal * cos($teller); $x = 200+$xx; $y = 200+$yy; $img->setPixel($x,$y,$red); if($x<200){ push @punten1,[$x,$y];} else{ push @punten2,[$x,$y];} } $data = $img->gifanimbegin(1,0); $data.=$img->gifanimadd(1,0,0,10); $img2 = new GD::Image(400,400); $white = $img2->colorAllocate(0,0,0); $red=$img2->colorAllocate(200,0,0); $hoek=(3.141592/2)/3; for($tel=0;$tel<$#punten1;$tel++){ @een =($punten1[$tel][0],$punten1[$tel][1],0); $straal =200-$punten1[$tel][0]; $diep = $straal*sin($hoek); $breed = $straal-($straal*cos($hoek)); $een[0]+=$breed; $een[2]+=$diep; if($een[2]>0){ $x1 =$een[0] + (sqrt($een[2]**2/2)/2); $y1=$een[1] - (sqrt($een[2]**2/2)/2);} else{ $x1 =$een[0] - (sqrt($een[2]**2/2)/2); $y1=$een[1] + (sqrt($een[2]**2/2)/2);} $img2->setPixel($x1,$y1,$red); } for($tel=0;$tel<$#punten2;$tel++){ @een =($punten2[$tel][0],$punten2[$tel][1],0); $straal =$punten2[$tel][0]-200; $diep = $straal*sin($hoek); $breed = $straal-($straal*cos($hoek)); $een[0]-=$breed; $een[2]-=$diep; if($een[2]>0){ $x1 =$een[0] + (sqrt($een[2]**2/2)/2); $y1=$een[1] - (sqrt($een[2]**2/2)/2);} else{ $x1 =$een[0] - (sqrt($een[2]**2/2)/2); $y1=$een[1] + (sqrt($een[2]**2/2)/2);} $img2->setPixel($x1,$y1,$red); } $data.=$img2->gifanimadd(1,0,0,10); $img3 = new GD::Image(400,400); $white = $img3->colorAllocate(0,0,0); $red=$img3->colorAllocate(200,0,0); $hoek=((3.141592/2)/3)*2; for($tel=0;$tel<$#punten1;$tel++){ @een =($punten1[$tel][0],$punten1[$tel][1],0); $straal =200-$punten1[$tel][0]; $diep = $straal*sin($hoek); $breed = $straal-($straal*cos($hoek)); $een[0]+=$breed; $een[2]+=$diep; if($een[2]>0){ $x1 =$een[0] + (sqrt($een[2]**2/2)/2); $y1=$een[1] - (sqrt($een[2]**2/2)/2);} else{ $x1 =$een[0] - (sqrt($een[2]**2/2)/2); $y1=$een[1] + (sqrt($een[2]**2/2)/2);} $img3->setPixel($x1,$y1,$red); } for($tel=0;$tel<$#punten2;$tel++){ @een =($punten2[$tel][0],$punten2[$tel][1],0); $straal =$punten2[$tel][0]-200; $diep = $straal*sin($hoek); $breed = $straal-($straal*cos($hoek)); $een[0]-=$breed; $een[2]-=$diep; if($een[2]>0){ $x1 =$een[0] + (sqrt($een[2]**2/2)/2); $y1=$een[1] - (sqrt($een[2]**2/2)/2);} else{ $x1 =$een[0] - (sqrt($een[2]**2/2)/2); $y1=$een[1] + (sqrt($een[2]**2/2)/2);} $img3->setPixel($x1,$y1,$red); } $data.=$img3->gifanimadd(1,0,0,10); $img4 = new GD::Image(400,400); $white = $img4->colorAllocate(0,0,0); $red=$img4->colorAllocate(200,0,0); $hoek=(3.141592/2); for($tel=0;$tel<$#punten1;$tel++){ @een =($punten1[$tel][0],$punten1[$tel][1],0); $straal =200-$punten1[$tel][0]; $diep = $straal*sin($hoek); $breed = $straal-($straal*cos($hoek)); $een[0]+=$breed; $een[2]+=$diep; if($een[2]>0){ $x1 =$een[0] + (sqrt($een[2]**2/2)/2); $y1=$een[1] - (sqrt($een[2]**2/2)/2);} else{ $x1 =$een[0] - (sqrt($een[2]**2/2)/2); $y1=$een[1] + (sqrt($een[2]**2/2)/2);} $img4->setPixel($x1,$y1,$red); } for($tel=0;$tel<$#punten2;$tel++){ @een =($punten2[$tel][0],$punten2[$tel][1],0); $straal =$punten2[$tel][0]-200; $diep = $straal*sin($hoek); $breed = $straal-($straal*cos($hoek)); $een[0]-=$breed; $een[2]-=$diep; if($een[2]>0){ $x1 =$een[0] + (sqrt($een[2]**2/2)/2); $y1=$een[1] - (sqrt($een[2]**2/2)/2);} else{ $x1 =$een[0] - (sqrt($een[2]**2/2)/2); $y1=$een[1] + (sqrt($een[2]**2/2)/2);} $img4->setPixel($x1,$y1,$red); } $data.=$img4->gifanimadd(1,0,0,10); $img5 = new GD::Image(400,400); $white = $img5->colorAllocate(0,0,0); $red=$img5->colorAllocate(200,0,0); $hoek=((3.141592/2)/3)*2; for($tel=0;$tel<$#punten1;$tel++){ @een =($punten1[$tel][0],$punten1[$tel][1],0); $straal =200-$punten1[$tel][0]; $diep = $straal*sin($hoek); $breed = $straal-($straal*cos($hoek)); $een[0]+=$breed; $een[2]-=$diep; if($een[2]>0){ $x1 =$een[0] + (sqrt($een[2]**2/2)/2); $y1=$een[1] - (sqrt($een[2]**2/2)/2);} else{ $x1 =$een[0] - (sqrt($een[2]**2/2)/2); $y1=$een[1] + (sqrt($een[2]**2/2)/2);} $img5->setPixel($x1,$y1,$red); } for($tel=0;$tel<$#punten2;$tel++){ @een =($punten2[$tel][0],$punten2[$tel][1],0); $straal =$punten2[$tel][0]-200; $diep = $straal*sin($hoek); $breed = $straal-($straal*cos($hoek)); $een[0]-=$breed; $een[2]+=$diep; if($een[2]>0){ $x1 =$een[0] + (sqrt($een[2]**2/2)/2); $y1=$een[1] - (sqrt($een[2]**2/2)/2);} else{ $x1 =$een[0] - (sqrt($een[2]**2/2)/2); $y1=$een[1] + (sqrt($een[2]**2/2)/2);} $img5->setPixel($x1,$y1,$red); } $data.=$img5->gifanimadd(1,0,0,10); $img6 = new GD::Image(400,400); $white = $img6->colorAllocate(0,0,0); $red=$img6->colorAllocate(200,0,0); $hoek=((3.141592/2)/3); for($tel=0;$tel<$#punten1;$tel++){ @een =($punten1[$tel][0],$punten1[$tel][1],0); $straal =200-$punten1[$tel][0]; $diep = $straal*sin($hoek); $breed = $straal-($straal*cos($hoek)); $een[0]+=$breed; $een[2]-=$diep; if($een[2]>0){ $x1 =$een[0] + (sqrt($een[2]**2/2)/2); $y1=$een[1] - (sqrt($een[2]**2/2)/2);} else{ $x1 =$een[0] - (sqrt($een[2]**2/2)/2); $y1=$een[1] + (sqrt($een[2]**2/2)/2);} $img6->setPixel($x1,$y1,$red); } for($tel=0;$tel<$#punten2;$tel++){ @een =($punten2[$tel][0],$punten2[$tel][1],0); $straal =$punten2[$tel][0]-200; $diep = $straal*sin($hoek); $breed = $straal-($straal*cos($hoek)); $een[0]-=$breed; $een[2]+=$diep; if($een[2]>0){ $x1 =$een[0] + (sqrt($een[2]**2/2)/2); $y1=$een[1] - (sqrt($een[2]**2/2)/2);} else{ $x1 =$een[0] - (sqrt($een[2]**2/2)/2); $y1=$een[1] + (sqrt($een[2]**2/2)/2);} $img6->setPixel($x1,$y1,$red); } $data.=$img6->gifanimadd(1,0,0,10); $data.=$img6->gifanimend; binmode STDOUT; print $data;

Thank you.


In reply to advice about animated gif. by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.