NAME
Shape::RegularPolygon - Object that treats the shape of the regular polygon
SYNOPSIS
use Shape::RegularPolygon;
# Create a regular polygon
$polygon = new Shape::RegularPolygon;
$polygon->center(100, 50);
$polygon->sides(3);
$polygon->radius(100);
$polygon->angle(3.14 / 6);
# By named parameter
$polygon = new Shape::RegularPolygon(CenterX => 100,
CenterY => 50,
Sides => 3,
Radius => 100,
Angle => 3.14 / 6);
# get vertexes
@points = $polygon->points
DESCRIPTION
Shape::RegularPolygon is a class that treats the shape of the regular polygon. This object creates and returns vertex list of specified regular polygon.
Construction
- Simple construction
-
new Shape::RegularPolygon;
When the parameter is omitted, the equilateral triangle is made in default. The parameter can be set later by using method.
- Construction with named parameters
-
new Shape::RegularPolygon(named parameters);
When you construct object, you can specify some parameters. See below about named parameters.
Parameters
- CenterX, CenterY
-
Position of regular polygon
- Sides
-
Building n-sides polygon. When four is specified, square is made. It must be a value of three or more.
- Radius
-
Circumradius of regular polygon
- Angle
-
Rotate a polygon in radians (clockwise).
METHODS
- center(x, y)
-
Set position of polygon. Returns current position, when parameters are omitted.
$shape->center(100, 200); ($x, $y) = $shape->center;
- sides(n)
-
Set the number of sides. Returns the number of sides, when parameters are omitted.
$shape->sides(5); $n = $shape->sides;
- radius(r)
-
Set circumradius of polygon. Returns current circumradius, when parameters are omitted.
$shape->radius(100); $r = $shape->radius;
- angle(rad)
-
Set rotation angle. Returns current angle, when parameters are omitted. The rad is in radian. and clockwise.
$shape->angle(3.14 / 6); # 30 degree $rad = $shape->angle;
- points()
-
Returns vertexes list of polygon as follows.
( {x => x0, y => y0}, # Vertex0 {x => x1, y => y1}, # Vertex1 : : )
Example
The following script builds png image file that regular pentagon was drawn.
#!/usr/bin/perl
use strict;
use warnings;
use Shape::RegularPolygon;
use GD;
my $shape = new Shape::RegularPolygon;
$shape->center(150, 100);
$shape->sides(5);
my $im = new GD::Image(300, 200);
$im->fill(0, 0, $im->colorAllocate(0xff, 0xff, 0xff));
my $poly = new GD::Polygon;
$poly->addPt($_->{x}, $_->{y}) foreach $shape->points;
$im->filledPolygon($poly, $im->colorAllocate(0x80, 0xe0, 0x80));
binmode STDOUT;
print $im->png;
SEE ALSO
None
AUTHOR
Kazuyoshi Tomita, <kztomita@bit-hive.com>
COPYRIGHT AND LICENSE
Copyright (C) 2007 by Kazuyoshi Tomita
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.