Name
Math::Intersection::Circle::Line - Find the points at which a circle
intersects a line.
Synopsis
use Math::Intersection::Circle::Line;
intersectionCircleLine
{printf "Intersects at:\n%d, %d\n%d, %d\n", @_ if @_ == 4}
1, 1, 1, # Circle at (1,1) with radius 1
-1, 1, 1, 1; # x, y coordinates of two points on a diagonally crossing line
# Intersects at:
# 0, 1
# 2, 1
intersectionCircleLine
{printf "Tangents touches at\n%d, %d\n", @_ if @_ == 2}
0, 0, 1, # Circle centered on origin with radius 1
-1, 1, 1, 1; # Line along y == 1
# Tangents touches at
# 0, 1
intersectionCircleLine
{print "No intersection\n" unless @_}
0, 0, 1, # Circle at origin with radius 1
-2, 2, 2, 2; # Line along y == 2
# No intersection
Description
Find the points at which a circle intersects a line in two dimensions.
In two dimensional real space a line intersects the circumference of a
circle at two points if the line crosses the circle or at one point if
the line is a tangent to the circle or at zero points if the line misses
the circle completely.
Given a circle specified by the coordinates of its centre and its radius
and a line specified by the coordinates of two separate points on the
line, "intersectionCircleLine()" calls the subroutine supplied as the
first parameter with the coordinates of the points at which the line and
circle intersect. If there are two intersection points, 2 pairs of
numbers are supplied as parameters. If there is only one intersection
point, one pair of numbers is supplied. If there are no intersection
points, an empty parameter list is supplied.
"intersectionCircleLine()" is easy to use and fast. It is written in
100% Pure Perl.
Export
The "intersectionCircleLine()" function is exported.
Installation
Standard Module::Build process for building and installing modules:
perl Build.PL
./Build
./Build test
./Build install
Or, if you're on a platform (like DOS or Windows) that doesn't require
the "./" notation, you can do this:
perl Build.PL
Build
Build test
Build install
Author
Philip R Brenan at gmail dot com
http://www.appaapps.com
Copyright
Copyright (c) 2015 Philip R Brenan.
This module is free software. It may be used, redistributed and/or
modified under the same terms as Perl itself.