I'll show you what i've been doing. I managed to make my program work, but i'm not gonna continue with the same way. So here's the code, i hope you're not going to laugh. Let's call this a robust attempt:
use GD;
use constant PI => 4 * atan2(1, 1);
$ima = new GD::Image(800,800);
$black = $ima->colorAllocate(0,0,0);
$green=$ima->colorAllocate(0,255,0);
$ima->setThickness(3);
$data = $ima->gifanimbegin(1,0);
$im = new GD::Image(800,800);
$black = $im->colorAllocate(0,0,0);
$green=$im->colorAllocate(0,255,0);
$white=$im->colorAllocate(0,0,0);
$im->setThickness(3);
@een=(360,360,80);
@twee=(440,360,80);
@drie=(440,360,0);
@vier=(360,360,0);
$x1 =$een[0] + sqrt($een[2]**2/2);
$y1=$een[1] - sqrt($een[2]**2/2);
$x2 =$twee[0] + sqrt($twee[2]**2/2);
$y2=$twee[1] - sqrt($twee[2]**2/2);
$x3 =$drie[0] + sqrt($drie[2]**2/2);
$y3=$drie[1] - sqrt($drie[2]**2/2);
$x4 =$vier[0] + sqrt($vier[2]**2/2);
$y4=$vier[1] - sqrt($vier[2]**2/2);
$xx1=$x1;
$xx2=$x2;
$xx3=$x3;
$xx4=$x4;
$yy1=$y1+80;
$yy2=$y2+80;
$yy3=$y3+80;
$yy4=$y4+80;
$im->line($x1,$y1,$x2,$y2,$green);
$im->line($x2,$y2,$x3,$y3,$green);
$im->line($x3,$y3,$x4,$y4,$green);
$im->line($x4,$y4,$x1,$y1,$green);
$im->line($xx1,$yy1,$xx2,$yy2,$green);
$im->line($xx2,$yy2,$xx3,$yy3,$green);
$im->line($xx3,$yy3,$xx4,$yy4,$green);
$im->line($xx4,$yy4,$xx1,$yy1,$green);
$im->line($x1,$y1,$xx1,$yy1,$green);
$im->line($x2,$y2,$xx2,$yy2,$green);
$im->line($x3,$y3,$xx3,$yy3,$green);
$im->line($x4,$y4,$xx4,$yy4,$green);
$data.=$im->gifanimadd(0,0,0,1);
$teller = 0;
again:
for($x=PI/4;$x<=PI/2;$x+=PI/8){
$img = new GD::Image(800,800);
$black = $img->colorAllocate(0,0,0);
$green=$img->colorAllocate(0,255,0);
$white=$img->colorAllocate(0,0,0);
$img->setThickness(3);
@een=(360,360,80);
@twee=(440,360,80);
@drie=(440,360,0);
@vier=(360,360,0);
$straal = sqrt((40*40)+(40*40));
$yh = $straal * sin($x);
$hoogte =$yh-40;
$xv = sqrt($straal**2-$yh**2);
$xver = 40 - $xv;
$een[0]+=$xver;
$een[2]+=$hoogte;
$twee[0]+=$hoogte;
$twee[2]-=$xver;
$drie[0]-=$xver;
$drie[2]-=$hoogte;
$vier[0]-=$hoogte;
$vier[2]+=$xver;
if($een[2]>0){
$x1 =$een[0] + sqrt($een[2]**2/2);
$y1=$een[1] - sqrt($een[2]**2/2);}
else{
$x1 =$een[0] - sqrt($een[2]**2/2);
$y1=$een[1] + sqrt($een[2]**2/2);}
if($twee[2]>0){
$x2 =$twee[0] + sqrt($twee[2]**2/2);
$y2=$twee[1] - sqrt($twee[2]**2/2);}
else{
$x2 =$twee[0] - sqrt($twee[2]**2/2);
$y2=$twee[1] + sqrt($twee[2]**2/2);}
if($drie[2]>0){
$x3 =$drie[0] + sqrt($drie[2]**2/2);
$y3=$drie[1] - sqrt($drie[2]**2/2);}
else{
$x3 =$drie[0] - sqrt($drie[2]**2/2);
$y3=$drie[1] + sqrt($drie[2]**2/2);}
if($vier[2]>0){
$x4 =$vier[0] + sqrt($vier[2]**2/2);
$y4=$vier[1] - sqrt($vier[2]**2/2);}
else{
$x4 =$vier[0] - sqrt($vier[2]**2/2);
$y4=$vier[1] + sqrt($vier[2]**2/2);}
$xx1=$x1;
$xx2=$x2;
$xx3=$x3;
$xx4=$x4;
$yy1=$y1+80;
$yy2=$y2+80;
$yy3=$y3+80;
$yy4=$y4+80;
$img->line($x1,$y1,$x2,$y2,$green);
$img->line($x2,$y2,$x3,$y3,$green);
$img->line($x3,$y3,$x4,$y4,$green);
$img->line($x4,$y4,$x1,$y1,$green);
$img->line($xx1,$yy1,$xx2,$yy2,$green);
$img->line($xx2,$yy2,$xx3,$yy3,$green);
$img->line($xx3,$yy3,$xx4,$yy4,$green);
$img->line($xx4,$yy4,$xx1,$yy1,$green);
$img->line($x1,$y1,$xx1,$yy1,$green);
$img->line($x2,$y2,$xx2,$yy2,$green);
$img->line($x3,$y3,$xx3,$yy3,$green);
$img->line($x4,$y4,$xx4,$yy4,$green);
$data.=$img->gifanimadd(0,0,0,1);
}
$img = new GD::Image(800,800);
$black = $img->colorAllocate(0,0,0);
$green=$img->colorAllocate(0,255,0);
$white=$img->colorAllocate(0,0,0);
$img->setThickness(3);
@een=(360,360,80);
@twee=(440,360,80);
@drie=(440,360,0);
@vier=(360,360,0);
$yh = $straal * sin((PI/8)*5);
$hoogte =$yh-40;
$xv = sqrt($straal**2-$yh**2);
$xver = 40 + $xv;
$een[0]+=$xver;
$een[2]+=$hoogte;
$twee[0]+=$hoogte;
$twee[2]-=$xver;
$drie[0]-=$xver;
$drie[2]-=$hoogte;
$vier[0]-=$hoogte;
$vier[2]+=$xver;
if($een[2]>0){
$x1 =$een[0] + sqrt($een[2]**2/2);
$y1=$een[1] - sqrt($een[2]**2/2);}
else{
$x1 =$een[0] - sqrt($een[2]**2/2);
$y1=$een[1] + sqrt($een[2]**2/2);}
if($twee[2]>0){
$x2 =$twee[0] + sqrt($twee[2]**2/2);
$y2=$twee[1] - sqrt($twee[2]**2/2);}
else{
$x2 =$twee[0] - sqrt($twee[2]**2/2);
$y2=$twee[1] + sqrt($twee[2]**2/2);}
if($drie[2]>0){
$x3 =$drie[0] + sqrt($drie[2]**2/2);
$y3=$drie[1] - sqrt($drie[2]**2/2);}
else{
$x3 =$drie[0] - sqrt($drie[2]**2/2);
$y3=$drie[1] + sqrt($drie[2]**2/2);}
if($vier[2]>0){
$x4 =$vier[0] + sqrt($vier[2]**2/2);
$y4=$vier[1] - sqrt($vier[2]**2/2);}
else{
$x4 =$vier[0] - sqrt($vier[2]**2/2);
$y4=$vier[1] + sqrt($vier[2]**2/2);}
$xx1=$x1;
$xx2=$x2;
$xx3=$x3;
$xx4=$x4;
$yy1=$y1+80;
$yy2=$y2+80;
$yy3=$y3+80;
$yy4=$y4+80;
$img->line($x1,$y1,$x2,$y2,$green);
$img->line($x2,$y2,$x3,$y3,$green);
$img->line($x3,$y3,$x4,$y4,$green);
$img->line($x4,$y4,$x1,$y1,$green);
$img->line($xx1,$yy1,$xx2,$yy2,$green);
$img->line($xx2,$yy2,$xx3,$yy3,$green);
$img->line($xx3,$yy3,$xx4,$yy4,$green);
$img->line($xx4,$yy4,$xx1,$yy1,$green);
$img->line($x1,$y1,$xx1,$yy1,$green);
$img->line($x2,$y2,$xx2,$yy2,$green);
$img->line($x3,$y3,$xx3,$yy3,$green);
$img->line($x4,$y4,$xx4,$yy4,$green);
$data.=$img->gifanimadd(0,0,0,1);
if($teller<20){
$teller++;
goto again;}
$data.=$im->gifanimend;
binmode STDOUT;
print $data;
have a good day
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.