sub rotate { my ( $self, $ang, $canvas ) = @_; my ( $x0, $y0 ) = $self->{Center}; my @sideX = @{$self->{x}}; my @sideY = @{$self->{y}}; for ( my $i = 0; $i < (@sideX / 2); $i += 2 ) { # $x0 and $y0 = center; ($x2, $y2) = point 1; ($x3, $y3) = point 2; my $x2 = int( cos($ang) * ($sideX[$i] - $x0) - sin($ang) * ($sideY[$i] - $y0) + $x0 ); my $y2 = int( sin($ang) * ($sideX[$i] - $x0) + cos($ang) * ($sideY[$i] + $y0) ); my $x3 = int( cos($ang) * ($sideX[$i+1] - $x0) - sin($ang) * ($sideY[$i+1] - $y0) + $x0 ); my $y3 = int( sin($ang) * ($sideX[$i+1] - $x0) + cos($ang) * ($sideY[$i+1] + $y0) ); $canvas->line( $x2, $y2, $x3, $y3 ); } }