Encyclopedia > Image:Polygon spiral.png

  Article Content

Image:Polygon spiral.png

This graphic of an approximate logarithmic spiral made up from polygonal subunits was created using the perl interface to the ImageMagick image manipulation software:

#!/usr/bin/perl

use Image::Magick; #the perl interface to the ImageMagic software
use Math::Trig;

# The points of the polygon. Arbitrary.
($x0,$y0) = (0,0);
($x1,$y1) = (10,0);
($x2,$y2) = (20,5);
($x3,$y3) = (5,15);

# length of lower side divided by length of upper side:
$factor = sqrt((($x2-$x3)**2 + ($y2-$y3)**2) / (($x1-$x0)**2 + ($y1-$y0)**2));

# angle between upper side and lower side, in radians:
$angle = atan(($y2-$y3)/($x2-$x3)) - atan(($y1-$y0)/($x1-$x0));

# Create an empty white image:
$image=Image::Magick->new(size=>'400x350');
$image->Read('xc:white');

$polygon_points = "$x0,$y0 $x1,$y1 $x2,$y2 $x3,$y3 $x0,$y0";

# Create two sample polygons 
$image->Draw(primitive=>'polygon', points=>$polygon_points, stroke=>red, translate=>"30,30");
$image->Draw(primitive=>'polygon', points=>$polygon_points, scale=>"$factor,$factor", stroke=>red, translate=>"70,30");

# Now place 5 of them side by side, appropriately stretched and turned
$stretch = 1; $turn = 0; $posX = 120; $posY = 250;
for (1..5) {
  $image->Draw(primitive=>'polygon', points=>$polygon_points, scale=>"$stretch,$stretch", stroke=>red, rotate=>$turn * 180/pi, translate=>"$posX,$posY");
  $posX = $posX + $stretch * ( cos($turn) * ($x3-$x0) - sin($turn) * ($y3-$y0));
  $posY = $posY + $stretch * ( sin($turn) * ($x3-$x0) + cos($turn) * ($y3-$y0));
  $turn = $turn + $angle;
  $stretch = $stretch * $factor;
}

# Add some text
$image->Set(font=>'-*-helvetica-medium-r-*-*-12-*-*-*-*-*-iso8859-*'); #this only works on the X window system
$image->Annotate(text=>"polygonal subunits", x=>30, y=>75, fill=>black);
$image->Annotate(text=>"approximate logarithmic spiral", x=>120, y=>310, fill=>black);
  
# Write out the image in the png format
$image->Write('polygon_spiral.png');

Image links

There are no pages that link to this image.



All Wikipedia text is available under the terms of the GNU Free Documentation License

 
  Search Encyclopedia

Search over one million articles, find something about almost anything!
 
 
  
  Featured Article
Rameses

... name means "Child of the Sun". This is a disambiguation page; that is, one that just points to other pages that might otherwise have the same name. If you ...

 
 
 
This page was created in 21.2 ms