++ed by:

1 non-PAUSE user.

Lutz Gehlen
and 1 contributors

# NAME

Math::Geometry::Construction::Line - line through two points

Version 0.024

# SYNOPSIS

my \$p1 = \$construction->add_point('x' => 100, 'y' => 90);
my \$p2 = \$construction->add_point('x' => 120, 'y' => 150);
my \$l1 = \$construction->add_line(support => [\$p1, \$p2]);

my \$p3 = \$construction->add_point('x' => 200, 'y' => 50);
my \$p4 = \$construction->add_point('x' => 250, 'y' => 50);

my \$l2 = \$construction->add_line(support        => [\$p3, \$p4],
extend         => 10,
label          => 'g',
label_offset_y => 13);

# DESCRIPTION

An instance of this class represents a line defined by two points. The points can be either points defined directly by the user (Math::Geometry::Construction::Point objects) or so-called derived points (Math::Geometry::Construction::DerivedPoint objects), e.g. intersection points. This class is not supposed to be instantiated directly. Use the add_line method of Math::Geometry::Construction instead.

# INTERFACE

## Public Attributes

### support

Holds an array reference of the two points that define the line. Must be given to the constructor and should not be touched afterwards (the points can change their positions, of course). Must hold exactly two points.

### extend

Often it looks nicer if the visual representation of a line extends somewhat beyond its end points. The length of this extent is set here. Internally, this is an array reference with two entries containing the exent in backward in forward direction. If a single value x is provided it is turned into [x, x]. Defaults to [0, 0].

Take care if you are reading this attribute. You get the internal array reference, so manipulating it will affect the values stored in the object.

## Methods

### direction

Returns the unnormalized difference vector between the two support points as a Math::Vector::Real. Issues a warning and returns undef if one of the support points has an undefined position. If the support points have identical positions the 0 vector is returned without warning.

### parallel

Returns a Math::Vector::Real of length 1 that is parallel to the line. Issues a warning and returns undef if one of the support points has an undefined position or if the two positions are identical.

### normal

Returns a Math::Vector::Real of length 1 that is orthogonal to the line. Issues a warning and returns undef if one of the support points has an undefined position or if the two positions are identical.

### draw

Called by the Construction object during output generation. Draws a line between the most extreme points on this line (including both support points and points derived from this line). The line is extended by length of extend beyond these points.

### id_template

Class method returning \$ID_TEMPLATE, which defaults to 'L%09d'.

# AUTHOR

Lutz Gehlen, <perl at lutzgehlen.de>