This file is indexed.

/usr/share/perl5/Geometry/Primitive/Arc.pm is in libgeometry-primitive-perl 0.22-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
package Geometry::Primitive::Arc;
use Moose;
use MooseX::Storage;

with qw(Geometry::Primitive::Shape MooseX::Clone MooseX::Storage::Deferred);

use Geometry::Primitive::Point;

has 'angle_start' => (
    is => 'rw',
    isa => 'Num',
    required => 1
);
has 'angle_end' => (
    is => 'rw',
    isa => 'Num',
    required => 1
);
has 'origin' => (
    is => 'rw',
    isa => 'Geometry::Primitive::Point',
    coerce => 1
);
has 'radius' => (
    is => 'rw',
    isa => 'Num',
    required => 1
);

# Area of a sector, if it's ever needed...
# sub area {
#     my ($self) = @_;
# 
#     return (($self->radius**2 * ($self->angle_end - $self->angle_start)) / 2
#     );
# }

sub get_point_at_angle {
    my ($self, $angle) = @_;

    return Geometry::Primitive::Point->new(
        x => $self->origin->x + ($self->radius * cos($angle)),
        y => $self->origin->y + ($self->radius * sin($angle))
    );
}

sub length {
    my ($self) = @_;

    return $self->radius * ($self->angle_end - $self->angle_start);
}

sub point_end {
    my ($self) = @_;

    return $self->get_point_at_angle($self->angle_end);
}

sub point_start {
    my ($self) = @_;

    return $self->get_point_at_angle($self->angle_start);
}

sub scale {
    my ($self, $amount) = @_;

    $self->radius($self->radius * $amount);
}

__PACKAGE__->meta->make_immutable;

no Moose;
1;

__END__

=head1 NAME

Geometry::Primitive::Arc - Portion of the circumference of a Circle

=head1 DESCRIPTION

Geometry::Primitive::Arc represents a closed segment of a curve.

=head1 SYNOPSIS

  use Geometry::Primitive::Arc;

  my $arc = Geometry::Primitive::Arc->new(
      angle_start => 0,
      angle_end => 1.57079633,
      radius => 15
  );

=head1 ATTRIBUTES

=head2 angle_start

The starting angle for this arc in radians.

=head2 angle_end

The ending angle for this arc in radians.

=head2 radius

Returns the radius of the arc.

=head2 origin

Set/Get the origin of this arc.

=head1 METHODS

=head2 new

Creates a new Geometry::Primitive::Arc

=head2 get_point_at_angle

Given angle in radians returns the point at that angle on this arc.  Returns
undef if the angle falls outside this arc's range.

=head2 length

Returns the length of this arc.

=head2 point_end

Get the end point.  Provided for Shape role.

=head2 point_start

Get the start point.  Provided for Shape role.

=head2 scale ($amount)

Increases the radius by multiplying it by the supplied amount.

=head1 AUTHOR

Cory Watson <gphat@cpan.org>

=head1 COPYRIGHT & LICENSE

You can redistribute and/or modify this code under the same terms as Perl
itself.