XLine2D Type
A type containing only static member functions for computing 2D line intersections. Some functions return Discriminated Unions from the XLine2D module.
Static members
| Static member |
Description
|
Full Usage:
XLine2D.doIntersect (lineA, lineB)
Parameters: Returns: bool
True if both lines have an intersection parameter in the range 0.0 to 1.0 (with 1e-6 tolerance).
False if the lines are parallel, coincident or at least one intersection parameter is outside of the range.
Modifiers: inline |
Checks if two 2D-lines intersect within the parameter range 0.0 to 1.0 (with 1e-6 tolerance) on both lines. This does not check for an explicit angle tolerance, so overlapping almost parallel lines may return true.
|
Full Usage:
XLine2D.doIntersect (pA, pB, vA, vB)
Parameters:
Pt
-
The start point of the first line.
pB : Pt
-
The start point of the second line.
vA : Vc
-
The direction vector of the first line.
vB : Vc
-
The direction vector of the second line.
Returns: bool
True if both lines have an intersection parameter in the range 0.0 to 1.0 (with 1e-6 tolerance).
False if the lines are parallel, coincident or at least one intersection parameter is outside of the range.
Modifiers: inline |
Checks if two 2D-lines intersect within the parameter range 0.0 to 1.0 (with 1e-6 tolerance) on both lines. This does not check for an explicit angle tolerance, so overlapping almost parallel lines may return true.
|
Full Usage:
XLine2D.doIntersect (pAx, pAy, pBx, pBy, vAx, vAy, vBx, vBy)
Parameters:
float
-
The X coordinate of the start point on the first line.
pAy : float
-
The Y coordinate of the start point on the first line.
pBx : float
-
The X coordinate of the start point on the second line.
pBy : float
-
The Y coordinate of the start point on the second line.
vAx : float
-
The X component of the vector of the first line.
vAy : float
-
The Y component of the vector of the first line.
vBx : float
-
The X component of the vector of the second line.
vBy : float
-
The Y component of the vector of the second line.
Returns: bool
True if both lines have an intersection parameter in the range 0.0 to 1.0 (with 1e-6 tolerance).
False if the lines are parallel, coincident or at least one intersection parameter is outside of the range.
Modifiers: inline |
Checks if two 2D-lines intersect within the parameter range 0.0 to 1.0 (with 1e-6 tolerance) on both lines. This does not check for an explicit angle tolerance, so overlapping almost parallel lines may return true.
|
Full Usage:
XLine2D.doOverlap (lineA, lineB, ?tolerance)
Parameters:
Line2D
-
The first line.
lineB : Line2D
-
The second line.
?tolerance : float
-
Is an optional squared distance tolerance. 1e-6 by default.
Used for checking if the distance between parallel lines is less than this value.
Returns: bool
Modifiers: inline |
Checks if 2D lines are not only parallel and coincident but are also overlapping or at least touching at their ends.
|
Full Usage:
XLine2D.doOverlap (pA, pB, vA, vB, ?tolerance)
Parameters:
Pt
-
The start point on the first line.
pB : Pt
-
The start point on the second line.
vA : Vc
-
The direction vector of the first line.
vB : Vc
-
The direction vector of the second line.
?tolerance : float
-
Is an optional squared distance tolerance. 1e-6 by default.
Used for checking if the distance between parallel lines is less than this value.
Returns: bool
Modifiers: inline |
Checks if 2D lines are not only parallel and coincident but are also overlapping or at least touching at their ends.
|
Full Usage:
XLine2D.doOverlap (pAx, pAy, pBx, pBy, vAx, vAy, vBx, vBy, ?tolerance)
Parameters:
float
-
The X coordinate of the start point on the first line.
pAy : float
-
The Y coordinate of the start point on the first line.
pBx : float
-
The X coordinate of the start point on the second line.
pBy : float
-
The Y coordinate of the start point on the second line.
vAx : float
-
The X component of the vector of the first line.
vAy : float
-
The Y component of the vector of the first line.
vBx : float
-
The X component of the vector of the second line.
vBy : float
-
The Y component of the vector of the second line.
?tolerance : float
-
Is an optional squared distance tolerance. 1e-6 by default.
Used for checking if the distance between parallel lines is less than this value.
Returns: bool
TRUE if the lines are coincident and overlap or touch.
FALSE if the lines are not coincident or do not overlap nor touch.
|
Checks if 2D lines are not only parallel and coincident but are also overlapping or at least touching at their ends.
|
Full Usage:
XLine2D.getClosestParameters (lineA, lineB, ?tangent, ?tooShortTolerance)
Parameters:
Line2D
-
The first finite line segment.
lineB : Line2D
-
The second finite line segment.
?tangent : MeasureProduct<tangent, MeasureOne>
-
This is an optional tolerance for considering lines parallel.
This is a precomputed tangent of the maximum allowed angle between the two line vectors.
The default value is '0.00436' this corresponds to approx 0.25 degree. Below this the middle point of any overlapping segment is returned.
Use the module Euclid.UtilEuclid.Tangent to set another tolerance here.
?tooShortTolerance : float
-
Is an optional length tolerance. 1e-6 by default.
If one or both lines are shorter than this, then a 'TooShort' union case is returned.
Returns: ClParams
An ClParams Discriminated Union with the following cases:
| Intersect of float*float
| Apart of parameterA:float * parameterB:float * squareDistance:float
| Parallel of float*float
| TooShortA
| TooShortB
| TooShortBoth
Modifiers: inline |
Gets the parameters on the finite lines where the lines are closest to each other. For parallel or coincident lines, this returns the midpoint of the interval spanned by the projected endpoints (which coincides with the middle of any overlapping segment when one exists).
|
Full Usage:
XLine2D.getClosestParameters (pA, pB, vA, vB, ?tangent, ?tooShortTolerance)
Parameters:
Pt
-
The start point on the first line.
pB : Pt
-
The start point on the second line.
vA : Vc
-
The direction vector of the first line.
vB : Vc
-
The direction vector of the second line.
?tangent : MeasureProduct<tangent, MeasureOne>
-
This is an optional tolerance for considering lines parallel.
This is a precomputed tangent of the maximum allowed angle between the two line vectors.
The default value is '0.00436' this corresponds to approx 0.25 degree. Below this the middle point of any overlapping segment is returned.
Use the module Euclid.UtilEuclid.Tangent to set another tolerance here.
?tooShortTolerance : float
-
Is an optional length tolerance. 1e-6 by default.
If one or both lines are shorter than this, then a 'TooShort' union case is returned.
Returns: ClParams
An ClParams Discriminated Union with the following cases:
| Intersect of float*float
| Apart of parameterA:float * parameterB:float * squareDistance:float
| Parallel of float*float
| TooShortA
| TooShortB
| TooShortBoth
Modifiers: inline |
Gets the parameters on the finite lines where the lines are closest to each other. For parallel or coincident lines, this returns the midpoint of the interval spanned by the projected endpoints (which coincides with the middle of any overlapping segment when one exists).
|
Full Usage:
XLine2D.getClosestParameters (pAx, pAy, pBx, pBy, vAx, vAy, vBx, vBy, ?tangent, ?tooShortTolerance)
Parameters:
float
-
The X coordinate of the start point on the first line.
pAy : float
-
The Y coordinate of the start point on the first line.
pBx : float
-
The X coordinate of the start point on the second line.
pBy : float
-
The Y coordinate of the start point on the second line.
vAx : float
-
The X component of the vector of the first line.
vAy : float
-
The Y component of the vector of the first line.
vBx : float
-
The X component of the vector of the second line.
vBy : float
-
The Y component of the vector of the second line.
?tangent : MeasureProduct<tangent, MeasureOne>
-
This is an optional tolerance for considering lines parallel.
This is a precomputed tangent of the maximum allowed angle between the two line vectors.
The default value is '0.00436' this corresponds to approx 0.25 degree. Below this the middle point of any overlapping segment is returned.
Use the module Euclid.UtilEuclid.Tangent to set another tolerance here.
?tooShortTolerance : float
-
Is an optional length tolerance. 1e-6 by default.
If one or both lines are shorter than this, then a 'TooShort' union case is returned.
Returns: ClParams
An ClParams Discriminated Union with the following cases:
| Intersect of float*float
| Apart of parameterA:float * parameterB:float * squareDistance:float
| Parallel of float*float
| TooShortA
| TooShortB
| TooShortBoth
|
Gets the parameters on the finite lines where the lines are closest to each other. For parallel or coincident lines, this returns the midpoint of the interval spanned by the projected endpoints (which coincides with the middle of any overlapping segment when one exists).
|
Full Usage:
XLine2D.getClosestPoints (lineA, lineB, ?tangent, ?tooShortTolerance)
Parameters:
Line2D
-
The first line.
lineB : Line2D
-
The second line.
?tangent : MeasureProduct<tangent, MeasureOne>
-
This is an optional tolerance for considering lines parallel.
This is a precomputed tangent of the maximum allowed angle between the two line vectors.
The default value is '0.00436' this corresponds to approx 0.25 degree. Below this the middle point of any overlapping segment is returned.
Use the module Euclid.UtilEuclid.Tangent to set another tolerance here.
?tooShortTolerance : float
-
Is an optional length tolerance. 1e-6 by default.
If one or both lines are shorter than this, then the 'TooShort' union case is returned.
Returns: ClPts
An ClPts Discriminated Union with the following cases:
| Intersect of Pt
| Apart of Pt * Pt * squareDistance:float
| Parallel of Pt * Pt
| TooShortA
| TooShortB
| TooShortBoth
Modifiers: inline |
Gets the point or points on the finite lines where the lines are closest to each other. For parallel or coincident lines, this returns the midpoint of the interval spanned by the projected endpoints (matching the middle of the overlapping segment when one exists). This method uses a small tolerance of 1e-6 to account for numerical inaccuracies when checking the 0..1 range.
|
Full Usage:
XLine2D.getClosestPoints (pA, pB, vA, vB, ?tangent, ?tooShortTolerance)
Parameters:
Pt
-
The start point on the first line.
pB : Pt
-
The start point on the second line.
vA : Vc
-
The direction vector of the first line.
vB : Vc
-
The direction vector of the second line.
?tangent : MeasureProduct<tangent, MeasureOne>
-
This is an optional tolerance for considering lines parallel.
This is a precomputed tangent of the maximum allowed angle between the two line vectors.
The default value is '0.00436' this corresponds to approx 0.25 degree. Below this the middle point of any overlapping segment is returned.
Use the module Euclid.UtilEuclid.Tangent to set another tolerance here.
?tooShortTolerance : float
-
Is an optional length tolerance. 1e-6 by default.
If one or both lines are shorter than this, then the 'TooShort' union case is returned.
Returns: ClPts
An ClPts Discriminated Union with the following cases:
| Intersect of Pt
| Apart of Pt * Pt * squareDistance:float
| Parallel of Pt * Pt
| TooShortA
| TooShortB
| TooShortBoth
Modifiers: inline |
Gets the point or points on the finite lines where the lines are closest to each other. For parallel or coincident lines, this returns the midpoint of the interval spanned by the projected endpoints (matching the middle of the overlapping segment when one exists). This method uses a small tolerance of 1e-6 to account for numerical inaccuracies when checking the 0..1 range.
|
Full Usage:
XLine2D.getClosestPoints (pAx, pAy, pBx, pBy, vAx, vAy, vBx, vBy, ?tangent, ?tooShortTolerance)
Parameters:
float
-
The X coordinate of the start point on the first line.
pAy : float
-
The Y coordinate of the start point on the first line.
pBx : float
-
The X coordinate of the start point on the second line.
pBy : float
-
The Y coordinate of the start point on the second line.
vAx : float
-
The X component of the vector of the first line.
vAy : float
-
The Y component of the vector of the first line.
vBx : float
-
The X component of the vector of the second line.
vBy : float
-
The Y component of the vector of the second line.
?tangent : MeasureProduct<tangent, MeasureOne>
-
This is an optional tolerance for considering lines parallel.
This is a precomputed tangent of the maximum allowed angle between the two line vectors.
The default value is '0.00436' this corresponds to approx 0.25 degree. Below this the middle point of any overlapping segment is returned.
Use the module Euclid.UtilEuclid.Tangent to set another tolerance here.
?tooShortTolerance : float
-
Is an optional length tolerance. 1e-6 by default.
If one or both lines are shorter than this, then a 'TooShort' union case is returned.
Returns: ClPts
An ClPts Discriminated Union with the following cases:
| Intersect of Pt
| Apart of Pt * Pt * squareDistance:float
| Parallel of Pt * Pt
| TooShortA
| TooShortB
| TooShortBoth
|
Gets the point or points on the finite lines where the lines are closest to each other. For parallel or coincident lines, this returns the midpoint of the interval spanned by the projected endpoints (matching the middle of the overlapping segment when one exists). This method uses a small tolerance of 1e-6 to account for numerical inaccuracies when checking the 0..1 range.
|
Full Usage:
XLine2D.getEndsTouching (a, b, ?tolerance)
Parameters:
Line2D
-
The first line.
b : Line2D
-
The second line.
?tolerance : float
-
Is an optional distance tolerance. 1e-6 by default.
Returns: XEnds
A Discriminated Union Line2D.XEnds that describes the possible cases of two finite 2D lines touching at their ends:
| NotTouching
| StartA_StartB
| EndA_EndB
| EndA_StartB
| StartA_EndB
| Identical
| IdenticalFlipped
|
Checks if the two finite 2D lines are touching each other at exactly one of their end points within the given tolerance.
|
Full Usage:
XLine2D.getIntersection (lineA, lineB, ?tangent, ?tooShortTolerance)
Parameters:
Line2D
-
First finite line segment.
lineB : Line2D
-
Second finite line segment.
?tangent : MeasureProduct<tangent, MeasureOne>
-
Is an optional tangent of the maximum allowed angle between the two line vectors.
The default value is '0.00436' this corresponds to approx 0.25 degree. Below this angle the lines are considered parallel.
Use the module Euclid.UtilEuclid.Tangent to set another tolerance here.
?tooShortTolerance : float
-
Is an optional length tolerance. 1e-6 by default.
If one or both lines are shorter than this, then the 'TooShort' union case is returned.
Returns: XPt
An XPt Discriminated Union with the following cases:
| Intersect of Pt
| Parallel
| TooShortBoth
| TooShortA
| TooShortB
Modifiers: inline |
Tries to get intersection point of two finite 2D lines.
|
Full Usage:
XLine2D.getIntersection (pA, pB, vA, vB, ?tangent, ?tooShortTolerance)
Parameters:
Pt
-
The start point of the first line.
pB : Pt
-
The start point of the second line.
vA : Vc
-
The direction vector of the first line.
vB : Vc
-
The direction vector of the second line.
?tangent : MeasureProduct<tangent, MeasureOne>
-
Is an optional tangent of the maximum allowed angle between the two line vectors.
The default value is '0.00436' this corresponds to approx 0.25 degree. Below this angle the lines are considered parallel.
Use the module Euclid.UtilEuclid.Tangent to set another tolerance here.
?tooShortTolerance : float
-
Is an optional length tolerance. 1e-6 by default.
If one or both lines are shorter than this, then the 'TooShort' union case is returned.
Returns: XPt
An XPt Discriminated Union with the following cases:
| Intersect of Pt
| Parallel
| TooShortBoth
| TooShortA
| TooShortB
Modifiers: inline |
Tries to get intersection point of two finite 2D lines.
|
Full Usage:
XLine2D.getIntersection (pAx, pAy, pBx, pBy, vAx, vAy, vBx, vBy, ?tangent, ?tooShortTolerance)
Parameters:
float
-
The X coordinate of the start point on the first line.
pAy : float
-
The Y coordinate of the start point on the first line.
pBx : float
-
The X coordinate of the start point on the second line.
pBy : float
-
The Y coordinate of the start point on the second line.
vAx : float
-
The X component of the vector of the first line.
vAy : float
-
The Y component of the vector of the first line.
vBx : float
-
The X component of the vector of the second line.
vBy : float
-
The Y component of the vector of the second line.
?tangent : MeasureProduct<tangent, MeasureOne>
-
Is an optional tangent of the maximum allowed angle between the two line vectors.
The default value is '0.00436' this corresponds to approx 0.25 degree. Below this angle the lines are considered parallel.
Use the module Euclid.UtilEuclid.Tangent to set another tolerance here.
?tooShortTolerance : float
-
Is an optional length tolerance. 1e-6 by default.
If one or both lines are shorter than this, then the 'TooShort' union case is returned.
Returns: XPt
An XPt Discriminated Union with the following cases:
| Intersect of Pt
| Parallel
| TooShortBoth
| TooShortA
| TooShortB
|
Tries to get intersection point of two finite 2D lines.
|
Full Usage:
XLine2D.getIntersectionParam (lnA, lnB, ?tangent, ?tooShortTolerance)
Parameters:
Line2D
-
First line.
lnB : Line2D
-
Second line.
?tangent : MeasureProduct<tangent, MeasureOne>
-
Is an optional tangent of the maximum allowed angle between the two line vectors.
The default value is '0.00436' this corresponds to approx 0.25 degree. Below this angle the lines are considered parallel.
Use the module Euclid.UtilEuclid.Tangent to set another tolerance here.
?tooShortTolerance : float
-
Is an optional length tolerance. 1e-6 by default.
If one or both lines are shorter than this, then the 'TooShort' union case is returned.
Returns: XParam
An XParam Discriminated Union with the following cases:
| Intersect of float*float
| Parallel
| TooShortBoth
| TooShortA
| TooShortB
Modifiers: inline |
Tries to get intersection parameters of two finite 2D-lines.
|
Full Usage:
XLine2D.getIntersectionParam (pA, pB, vA, vB, ?tangent, ?tooShortTolerance)
Parameters:
Pt
-
The start point of the first line.
pB : Pt
-
The start point of the second line.
vA : Vc
-
The direction vector of the first line.
vB : Vc
-
The direction vector of the second line.
?tangent : MeasureProduct<tangent, MeasureOne>
-
Is an optional tangent of the maximum allowed angle between the two line vectors.
The default value is '0.00436' this corresponds to approx 0.25 degree. Below this angle the lines are considered parallel.
Use the module Euclid.UtilEuclid.Tangent to set another tolerance here.
?tooShortTolerance : float
-
Is an optional length tolerance. 1e-6 by default.
If one or both lines are shorter than this, then the 'TooShort' union case is returned.
Returns: XParam
An XParam Discriminated Union with the following cases:
| Intersect of float*float
| Parallel
| TooShortBoth
| TooShortA
| TooShortB
Modifiers: inline |
Tries to get intersection parameters of two finite 2D-lines.
|
Full Usage:
XLine2D.getIntersectionParam (pAx, pAy, pBx, pBy, vAx, vAy, vBx, vBy, ?tangent, ?tooShortTolerance)
Parameters:
float
-
The X coordinate of the start point on the first line.
pAy : float
-
The Y coordinate of the start point on the first line.
pBx : float
-
The X coordinate of the start point on the second line.
pBy : float
-
The Y coordinate of the start point on the second line.
vAx : float
-
The X component of the vector of the first line.
vAy : float
-
The Y component of the vector of the first line.
vBx : float
-
The X component of the vector of the second line.
vBy : float
-
The Y component of the vector of the second line.
?tangent : MeasureProduct<tangent, MeasureOne>
-
Is an optional tangent of the maximum allowed angle between the two line vectors.
The default value is '0.00436' this corresponds to approx 0.25 degree. Below this angle the lines are considered parallel.
Use the module Euclid.UtilEuclid.Tangent to set another tolerance here.
?tooShortTolerance : float
-
Is an optional length tolerance. 1e-6 by default.
If one or both lines are shorter than this, then the 'TooShort' union case is returned.
Returns: XParam
An XParam Discriminated Union with the following cases:
| Intersect of float*float
| Parallel
| TooShortBoth
| TooShortA
| TooShortB
|
Tries to get intersection parameters of two finite 2D-lines.
|
Full Usage:
XLine2D.getRayIntersection (lineA, lineB, ?tangent, ?tooShortTolerance)
Parameters:
Line2D
-
First ray.
lineB : Line2D
-
Second ray.
?tangent : MeasureProduct<tangent, MeasureOne>
-
Is an optional tangent of the maximum allowed angle between the two line vectors.
The default value is '0.00436' this corresponds to approx 0.25 degree. Below this angle the lines are considered parallel.
Use the module Euclid.UtilEuclid.Tangent to set another tolerance here.
?tooShortTolerance : float
-
Is an optional length tolerance. 1e-6 by default.
If one or both lines are shorter than this, then the 'TooShort' union case is returned.
Returns: XRay
An XRay Discriminated Union with the following cases:
| Intersect of Pt
| Parallel
| TooShortBoth
| TooShortA
| TooShortB
Modifiers: inline |
Tries to get intersection point of two rays (rays are 2D lines extended infinitely).
|
Full Usage:
XLine2D.getRayIntersection (pA, pB, vA, vB, ?tangent, ?tooShortTolerance)
Parameters:
Pt
-
The start point of the first ray.
pB : Pt
-
The start point of the second ray.
vA : Vc
-
The direction vector of the first ray.
vB : Vc
-
The direction vector of the second ray.
?tangent : MeasureProduct<tangent, MeasureOne>
-
Is an optional tangent of the maximum allowed angle between the two line vectors.
The default value is '0.00436' this corresponds to approx 0.25 degree. Below this angle the lines are considered parallel.
Use the module Euclid.UtilEuclid.Tangent to set another tolerance here.
?tooShortTolerance : float
-
Is an optional length tolerance. 1e-6 by default.
If one or both lines are shorter than this, then the 'TooShort' union case is returned.
Returns: XRay
An XRay Discriminated Union with the following cases:
| Intersect of Pt
| Parallel
| TooShortBoth
| TooShortA
| TooShortB
Modifiers: inline |
Tries to get intersection point of two rays (rays are 2D lines extended infinitely).
|
Full Usage:
XLine2D.getRayIntersection (pAx, pAy, pBx, pBy, vAx, vAy, vBx, vBy, ?tangent, ?tooShortTolerance)
Parameters:
float
-
The X coordinate of the start point on the first ray.
pAy : float
-
The Y coordinate of the start point on the first ray.
pBx : float
-
The X coordinate of the start point on the second ray.
pBy : float
-
The Y coordinate of the start point on the second ray.
vAx : float
-
The X component of the vector of the first ray.
vAy : float
-
The Y component of the vector of the first ray.
vBx : float
-
The X component of the vector of the second ray.
vBy : float
-
The Y component of the vector of the second ray.
?tangent : MeasureProduct<tangent, MeasureOne>
-
Is an optional tangent of the maximum allowed angle between the two line vectors.
The default value is '0.00436' this corresponds to approx 0.25 degree. Below this angle the lines are considered parallel.
Use the module Euclid.UtilEuclid.Tangent to set another tolerance here.
?tooShortTolerance : float
-
Is an optional length tolerance. 1e-6 by default.
If one or both lines are shorter than this, then the 'TooShort' union case is returned.
Returns: XRay
An XRay Discriminated Union with the following cases:
| Intersect of Pt
| Parallel
| TooShortBoth
| TooShortA
| TooShortB
|
Tries to get intersection point of two rays (rays are 2D lines extended infinitely).
|
Full Usage:
XLine2D.getRayIntersectionParam (lineA, lineB, ?tangent, ?tooShortTolerance)
Parameters:
Line2D
-
First ray.
lineB : Line2D
-
Second ray.
?tangent : MeasureProduct<tangent, MeasureOne>
-
Is an optional tangent of the maximum allowed angle between the two line vectors.
The default value is '0.00436' this corresponds to approx 0.25 degree. Below this angle the lines are considered parallel.
Use the module Euclid.UtilEuclid.Tangent to set another tolerance here.
?tooShortTolerance : float
-
Is an optional length tolerance. 1e-6 by default.
If one or both lines are shorter than this, then the 'TooShort' union case is returned.
Returns: XRayParam
An XRayParam discriminated union with the following cases:
| Intersect of float*float
| Parallel
| TooShortA
| TooShortB
| TooShortBoth
Modifiers: inline |
Tries to get intersection parameters of two rays (rays are 2D lines extended infinitely).
|
Full Usage:
XLine2D.getRayIntersectionParam (pA, pB, vA, vB, ?tangent, ?tooShortTolerance)
Parameters:
Pt
-
The start point of the first ray.
pB : Pt
-
The start point of the second ray.
vA : Vc
-
The direction vector of the first ray.
vB : Vc
-
The direction vector of the second ray.
?tangent : MeasureProduct<tangent, MeasureOne>
-
Is an optional tangent of the maximum allowed angle between the two line vectors.
The default value is '0.00436' this corresponds to approx 0.25 degree. Below this angle the lines are considered parallel.
Use the module Euclid.UtilEuclid.Tangent to set another tolerance here.
?tooShortTolerance : float
-
Is an optional length tolerance. 1e-6 by default.
If one or both lines are shorter than this, then a 'TooShort' union case is returned.
Returns: XRayParam
An XRayParam discriminated union with the following cases:
| Intersect of float*float
| Parallel
| TooShortA
| TooShortB
| TooShortBoth
Modifiers: inline |
Tries to get intersection parameters of two rays (rays are 2D lines extended infinitely).
|
Full Usage:
XLine2D.getRayIntersectionParam (pAx, pAy, pBx, pBy, vAx, vAy, vBx, vBy, ?tangent, ?tooShortTolerance)
Parameters:
float
-
The X coordinate of the start point on the first ray.
pAy : float
-
The Y coordinate of the start point on the first ray.
pBx : float
-
The X coordinate of the start point on the second ray.
pBy : float
-
The Y coordinate of the start point on the second ray.
vAx : float
-
The X component of the vector of the first ray.
vAy : float
-
The Y component of the vector of the first ray.
vBx : float
-
The X component of the vector of the second ray.
vBy : float
-
The Y component of the vector of the second ray.
?tangent : MeasureProduct<tangent, MeasureOne>
-
Is an optional tangent of the maximum allowed angle between the two line vectors.
The default value is '0.00436' this corresponds to approx 0.25 degree. Below this angle the lines are considered parallel.
Use the module Euclid.UtilEuclid.Tangent to set another tolerance here.
?tooShortTolerance : float
-
Is an optional length tolerance. 1e-6 by default.
If one or both lines are shorter than this, then a 'TooShort' union case is returned.
Returns: XRayParam
An XRayParam discriminated union with the following cases:
| Intersect of float*float
| Parallel
| TooShortA
| TooShortB
| TooShortBoth
|
Tries to get intersection parameters of two rays (rays are 2D lines extended infinitely).
|
|
|
Full Usage:
XLine2D.getSqDistance (pA, pB, vA, vB)
Parameters:
Pt
-
The start point of the first line.
pB : Pt
-
The start point of the second line.
vA : Vc
-
The direction vector of the first line.
vB : Vc
-
The direction vector of the second line.
Returns: float
The squared distance between the two lines.
Modifiers: inline |
Gets the square distance between two finite lines. Works on Parallel lines too.
|
Full Usage:
XLine2D.getSqDistance (pAx, pAy, pBx, pBy, vAx, vAy, vBx, vBy)
Parameters:
float
-
The X coordinate of the start point on the first line.
pAy : float
-
The Y coordinate of the start point on the first line.
pBx : float
-
The X coordinate of the start point on the second line.
pBy : float
-
The Y coordinate of the start point on the second line.
vAx : float
-
The X component of the vector of the first line.
vAy : float
-
The Y component of the vector of the first line.
vBx : float
-
The X component of the vector of the second line.
vBy : float
-
The Y component of the vector of the second line.
Returns: float
The squared distance between the two lines.
|
Gets the square distance between two finite lines. Works on Parallel lines too.
|
Full Usage:
XLine2D.isWithinRanges (lineA, lineB, minParameterA, maxParameterA, minParameterB, maxParameterB)
Parameters:
Line2D
-
First line.
lineB : Line2D
-
Second line.
minParameterA : float
-
The minimum parameter value of the range, inclusive.
maxParameterA : float
-
The maximum parameter value of the range, inclusive.
minParameterB : float
-
The minimum parameter value of the range, inclusive.
maxParameterB : float
-
The maximum parameter value of the range, inclusive.
Returns: bool
True if both lines have an intersection parameter in the range (inclusive min and max value).
False if the lines are parallel, coincident or at least one intersection parameter is outside of the range.
Modifiers: inline |
Checks if two 2D-lines both have intersection parameters within the given ranges for each line
|
Full Usage:
XLine2D.isWithinRanges (pA, pB, vA, vB, minParameterA, maxParameterA, minParameterB, maxParameterB)
Parameters:
Pt
-
The start point of the first line.
pB : Pt
-
The start point of the second line.
vA : Vc
-
The direction vector of the first line.
vB : Vc
-
The direction vector of the second line.
minParameterA : float
-
The minimum parameter value of the range, inclusive.
maxParameterA : float
-
The maximum parameter value of the range, inclusive.
minParameterB : float
-
The minimum parameter value of the range, inclusive.
maxParameterB : float
-
The maximum parameter value of the range, inclusive.
Returns: bool
True if both lines have an intersection parameter in the range (inclusive min and max value).
False if the lines are parallel, coincident or at least one intersection parameter is outside of the range.
Modifiers: inline |
Checks if two 2D-lines both have intersection parameters within the given ranges for each line
|
Full Usage:
XLine2D.isWithinRanges (pAx, pAy, pBx, pBy, vAx, vAy, vBx, vBy, minParameterA, maxParameterA, minParameterB, maxParameterB)
Parameters:
float
-
The X coordinate of the start point on the first line.
pAy : float
-
The Y coordinate of the start point on the first line.
pBx : float
-
The X coordinate of the start point on the second line.
pBy : float
-
The Y coordinate of the start point on the second line.
vAx : float
-
The X component of the vector of the first line.
vAy : float
-
The Y component of the vector of the first line.
vBx : float
-
The X component of the vector of the second line.
vBy : float
-
The Y component of the vector of the second line.
minParameterA : float
-
The minimum parameter value of the range, inclusive.
maxParameterA : float
-
The maximum parameter value of the range, inclusive.
minParameterB : float
-
The minimum parameter value of the range, inclusive.
maxParameterB : float
-
The maximum parameter value of the range, inclusive.
Returns: bool
True if both lines have an intersection parameter in the range (inclusive min and max value).
False if the lines are parallel, coincident or at least one intersection parameter is outside of the range.
Modifiers: inline |
Checks if two 2D-lines both have intersection parameters within the given ranges for each line
|
Full Usage:
XLine2D.parameterA (lineA, lineB)
Parameters: Returns: float
The parameter on lineA at the intersection with lineB.
NaN if both start points coincide and vectors are exactly parallel (0.0/0.0).
Positive/Negative Infinity for almost parallel lines.
Modifiers: inline |
Returns the intersection parameter on the first ray (A) where ray A and ray B intersect. Returns NaN or Infinity for zero length or parallel lines.
|
Full Usage:
XLine2D.parameterA (pA, pB, vA, vB)
Parameters:
Pt
-
The start point of the first ray.
pB : Pt
-
The start point of the second ray.
vA : Vc
-
The direction vector of the first ray.
vB : Vc
-
The direction vector of the second ray.
Returns: float
The parameter on line A at the intersection with line B.
NaN if both points coincide and vectors are exactly parallel (0.0/0.0).
Positive/Negative Infinity for almost parallel lines.
Modifiers: inline |
Returns the intersection parameter on the first ray (A) where ray A and ray B intersect. Returns NaN or Infinity for zero length or parallel lines.
|
Full Usage:
XLine2D.parameterA (pAx, pAy, pBx, pBy, vAx, vAy, vBx, vBy)
Parameters:
float
-
The X coordinate of the start point on the first ray.
pAy : float
-
The Y coordinate of the start point on the first ray.
pBx : float
-
The X coordinate of the start point on the second ray.
pBy : float
-
The Y coordinate of the start point on the second ray.
vAx : float
-
The X component of the vector of the first ray.
vAy : float
-
The Y component of the vector of the first ray.
vBx : float
-
The X component of the vector of the second ray.
vBy : float
-
The Y component of the vector of the second ray.
Returns: float
The parameter at which the two rays intersect on line A,
This is NaN if A and B points are identical and the vectors are exactly parallel (zero divided by zero).
This is positive or negative Infinity for almost parallel lines.
Modifiers: inline |
Returns the intersection parameter on the first ray (A) where ray A and ray B intersect. Returns NaN or Infinity for zero length or parallel lines.
|
Full Usage:
XLine2D.parameters (lineA, lineB)
Parameters: Returns: float * float
A (t,u) tuple where t is the parameter on line A and u on line B at their intersection.
These are NaN if A and B points are identical and the vectors are exactly parallel (zero divided by zero).
These are positive or negative Infinity for almost parallel lines.
Modifiers: inline |
Returns the intersection parameters on both rays. Returns NaN or Infinity for zero length or parallel lines.
|
Full Usage:
XLine2D.parameters (pA, pB, vA, vB)
Parameters:
Pt
-
The start point of the first ray.
pB : Pt
-
The start point of the second ray.
vA : Vc
-
The direction vector of the first ray.
vB : Vc
-
The direction vector of the second ray.
Returns: float * float
A (t,u) tuple where t is the parameter on line A and u on line B at their intersection.
These are NaN if A and B points are identical and the vectors are exactly parallel (zero divided by zero).
These are positive or negative Infinity for almost parallel lines.
Modifiers: inline |
Returns the intersection parameters on both rays A and B. Returns NaN or Infinity for zero length or parallel lines.
|
Full Usage:
XLine2D.parameters (pAx, pAy, pBx, pBy, vAx, vAy, vBx, vBy)
Parameters:
float
-
The X coordinate of the start point on the first ray.
pAy : float
-
The Y coordinate of the start point on the first ray.
pBx : float
-
The X coordinate of the start point on the second ray.
pBy : float
-
The Y coordinate of the start point on the second ray.
vAx : float
-
The X component of the vector of the first ray.
vAy : float
-
The Y component of the vector of the first ray.
vBx : float
-
The X component of the vector of the second ray.
vBy : float
-
The Y component of the vector of the second ray.
Returns: float * float
A (t,u) tuple where t is the parameter on line A and u on line B at their intersection.
These are NaN if A and B points are identical and the vectors are exactly parallel (zero divided by zero).
These are positive or negative Infinity for almost parallel lines.
Modifiers: inline |
Returns the intersection parameters on both rays A and B. Returns NaN or Infinity for zero length or parallel lines.
|
|
Returns the intersection point of two finite line segments if they intersect. This method uses a small tolerance of 1e-6 to account for numerical inaccuracies when checking the 0..1 range.
|
Full Usage:
XLine2D.tryIntersect (pA, pB, vA, vB)
Parameters:
Pt
-
The start point of the first line.
pB : Pt
-
The start point of the second line.
vA : Vc
-
Vector from pA to the other end of line A (its length defines the domain 0..1).
vB : Vc
-
Vector from pB to the other end of line B (its length defines the domain 0..1).
Returns: Pt option
The intersection point if both parameters are within 0.0 to 1.0;
None otherwise or if parallel/coincident.
Modifiers: inline |
Returns the intersection point of two finite line segments if they intersect. This method uses a small tolerance of 1e-6 to account for numerical inaccuracies when checking the 0..1 range.
|
Full Usage:
XLine2D.tryIntersect (pAx, pAy, pBx, pBy, vAx, vAy, vBx, vBy)
Parameters:
float
-
The X coordinate of the start point on the first line.
pAy : float
-
The Y coordinate of the start point on the first line.
pBx : float
-
The X coordinate of the start point on the second line.
pBy : float
-
The Y coordinate of the start point on the second line.
vAx : float
-
The X component of the vector of the first line.
vAy : float
-
The Y component of the vector of the first line.
vBx : float
-
The X component of the vector of the second line.
vBy : float
-
The Y component of the vector of the second line.
Returns: Pt option
The intersection point if both parameters are within 0.0 to 1.0;
None otherwise or if parallel/coincident.
Modifiers: inline |
Returns the intersection point of two finite line segments if they intersect. This method uses a small tolerance of 1e-6 to account for numerical inaccuracies when checking the 0..1 range.
|
Full Usage:
XLine2D.tryIntersectInRangeA (lineA, lineB, minParameterA, maxParameterA)
Parameters:
Line2D
-
First line.
lineB : Line2D
-
Second line.
minParameterA : float
-
The minimum parameter value of the range, inclusive.
maxParameterA : float
-
The maximum parameter value of the range, inclusive.
Returns: Pt option
A point if lineA has an intersection parameter in the range (inclusive min and max value).
None if the lines are parallel, coincident or the intersection parameter is outside of the range.
Modifiers: inline |
Returns the intersection point of two rays if it is within the given parameter range for line A.
|
Full Usage:
XLine2D.tryIntersectInRangeA (pA, pB, vA, vB, minParameterA, maxParameterA)
Parameters:
Pt
-
The start point of the first line.
pB : Pt
-
The start point of the second line.
vA : Vc
-
The direction vector of the first line.
vB : Vc
-
The direction vector of the second line.
minParameterA : float
-
The minimum parameter value of the range, inclusive.
maxParameterA : float
-
The maximum parameter value of the range, inclusive.
Returns: Pt option
A point if lineA has an intersection parameter in the range (inclusive min and max value).
None if the lines are parallel, coincident or the intersection parameter is outside of the range.
Modifiers: inline |
Returns the intersection point of two rays if it is within the given parameter range for line A.
|
Full Usage:
XLine2D.tryIntersectInRangeA (pAx, pAy, pBx, pBy, vAx, vAy, vBx, vBy, minParameterA, maxParameterA)
Parameters:
float
-
The X coordinate of the start point on the first line.
pAy : float
-
The Y coordinate of the start point on the first line.
pBx : float
-
The X coordinate of the start point on the second line.
pBy : float
-
The Y coordinate of the start point on the second line.
vAx : float
-
The X component of the vector of the first line.
vAy : float
-
The Y component of the vector of the first line.
vBx : float
-
The X component of the vector of the second line.
vBy : float
-
The Y component of the vector of the second line.
minParameterA : float
-
The minimum parameter value of the range, inclusive.
maxParameterA : float
-
The maximum parameter value of the range, inclusive.
Returns: Pt option
A point if lineA has an intersection parameter in the range (inclusive min and max value).
None if the lines are parallel, coincident or the intersection parameter is outside of the range.
Modifiers: inline |
Returns the intersection point of two rays if it is within the given parameter range for line A.
|
Full Usage:
XLine2D.tryIntersectInRanges (lineA, lineB, minParameterA, maxParameterA, minParameterB, maxParameterB)
Parameters:
Line2D
-
First line.
lineB : Line2D
-
Second line.
minParameterA : float
-
The minimum parameter value of the range, inclusive.
maxParameterA : float
-
The maximum parameter value of the range, inclusive.
minParameterB : float
-
The minimum parameter value of the range, inclusive.
maxParameterB : float
-
The maximum parameter value of the range, inclusive.
Returns: Pt option
A point if both lines have an intersection parameter in the range (inclusive min and max value).
None if the lines are parallel, coincident or at least one intersection parameter is outside of the range.
Modifiers: inline |
Returns the intersection point of two rays if it is within the given parameter ranges for line A and line B.
|
Full Usage:
XLine2D.tryIntersectInRanges (pA, pB, vA, vB, minParameterA, maxParameterA, minParameterB, maxParameterB)
Parameters:
Pt
-
The start point of the first line.
pB : Pt
-
The start point of the second line.
vA : Vc
-
The direction vector of the first line.
vB : Vc
-
The direction vector of the second line.
minParameterA : float
-
The minimum parameter value of the range, inclusive.
maxParameterA : float
-
The maximum parameter value of the range, inclusive
minParameterB : float
-
The minimum parameter value of the range, inclusive.
maxParameterB : float
-
The maximum parameter value of the range, inclusive.
Returns: Pt option
A point if both lines have an intersection parameter in the range (inclusive
min and max value). None if the lines are parallel, coincident or at least one intersection parameter is outside of the range.
Modifiers: inline |
Returns the intersection point of two rays if it is within the given parameter ranges for line A and line B.
|
Full Usage:
XLine2D.tryIntersectInRanges (pAx, pAy, pBx, pBy, vAx, vAy, vBx, vBy, minParameterA, maxParameterA, minParameterB, maxParameterB)
Parameters:
float
-
The X coordinate of the start point on the first line.
pAy : float
-
The Y coordinate of the start point on the first line.
pBx : float
-
The X coordinate of the start point on the second line.
pBy : float
-
The Y coordinate of the start point on the second line.
vAx : float
-
The X component of the vector of the first line.
vAy : float
-
The Y component of the vector of the first line.
vBx : float
-
The X component of the vector of the second line.
vBy : float
-
The Y component of the vector of the second line.
minParameterA : float
-
The minimum parameter value of the range, inclusive.
maxParameterA : float
-
The maximum parameter value of the range, inclusive.
minParameterB : float
-
The minimum parameter value of the range, inclusive.
maxParameterB : float
-
The maximum parameter value of the range, inclusive.
Returns: Pt option
A point if both lines have an intersection parameter in the range (inclusive min and max value).
None if the lines are parallel, coincident or at least one intersection parameter is outside of the range.
Modifiers: inline |
Returns the intersection point of two rays if it is within the given parameter ranges for line A and line B.
|
Full Usage:
XLine2D.tryIntersectRay (lineA, lineB, ?tangent)
Parameters:
Line2D
-
First ray.
lineB : Line2D
-
Second ray.
?tangent : MeasureProduct<tangent, MeasureOne>
-
Is an optional tangent of the maximum allowed angle between the two line vectors.
The default value is '0.00436' this corresponds to approx 0.25 degree. Below this angle the lines are considered parallel.
Use the module Euclid.UtilEuclid.Tangent to set another tolerance here.
Returns: Pt option
The point at which the two rays intersect or None.
Modifiers: inline |
Tries to get intersection point of two rays (rays are 2D lines extended infinitely). If the lines are parallel or coincident (within the tangent tolerance), or too short, None is returned.
|
Full Usage:
XLine2D.tryIntersectRay (pA, pB, vA, vB, ?tangent)
Parameters:
Pt
-
The start point of the first ray.
pB : Pt
-
The start point of the second ray.
vA : Vc
-
The direction vector of the first ray.
vB : Vc
-
The direction vector of the second ray.
?tangent : MeasureProduct<tangent, MeasureOne>
-
Is an optional tangent of the maximum allowed angle between the two line vectors.
The default value is '0.00436' this corresponds to approx 0.25 degree. Below this angle the lines are considered parallel.
Use the module Euclid.UtilEuclid.Tangent to set another tolerance here.
Returns: Pt option
The point at which the two rays intersect or None.
Modifiers: inline |
Tries to get intersection point of two rays (rays are 2D lines extended infinitely). If the lines are parallel or coincident (within the tangent tolerance) or too short, None is returned.
|
Full Usage:
XLine2D.tryIntersectRay (pAx, pAy, pBx, pBy, vAx, vAy, vBx, vBy, ?tangent)
Parameters:
float
-
The X coordinate of the start point on the first ray.
pAy : float
-
The Y coordinate of the start point on the first ray.
pBx : float
-
The X coordinate of the start point on the second ray.
pBy : float
-
The Y coordinate of the start point on the second ray.
vAx : float
-
The X component of the vector of the first ray.
vAy : float
-
The Y component of the vector of the first ray.
vBx : float
-
The X component of the vector of the second ray.
vBy : float
-
The Y component of the vector of the second ray.
?tangent : MeasureProduct<tangent, MeasureOne>
-
Is an optional tangent of the maximum allowed angle between the two line vectors.
The default value is '0.00436' this corresponds to approx 0.25 degree. Below this angle the lines are considered parallel.
Use the module Euclid.UtilEuclid.Tangent to set another tolerance here.
Returns: Pt option
The point at which the two rays intersect or None.
Modifiers: inline |
Tries to get intersection point of two rays (rays are 2D lines extended infinitely). If the lines are parallel or coincident (within the tangent tolerance) or too short, None is returned.
|
Full Usage:
XLine2D.tryParameterA (lineA, lineB)
Parameters: Returns: float option
The parameter on lineA at the intersection with lineB if it is smaller than 1e12 in absolute value,
or None if the parameter is bigger than 1e12 or if they are parallel or coincident.
Modifiers: inline |
Returns the intersection parameter on the first ray (A) where ray A and ray B intersect.
|
Full Usage:
XLine2D.tryParameterA (pA, pB, vA, vB)
Parameters:
Pt
-
The start point of the first ray.
pB : Pt
-
The start point of the second ray.
vA : Vc
-
The direction vector of the first ray.
vB : Vc
-
The direction vector of the second ray.
Returns: float option
The parameter on line A at the intersection with line B if it is smaller than 1e12 in absolute value,
or None if the parameter is bigger than 1e12 or if they are parallel or coincident.
Modifiers: inline |
Returns the intersection parameter on the first ray (A) where ray A and ray B intersect.
|
Full Usage:
XLine2D.tryParameterA (pAx, pAy, pBx, pBy, vAx, vAy, vBx, vBy)
Parameters:
float
-
The X coordinate of the start point on the first ray.
pAy : float
-
The Y coordinate of the start point on the first ray.
pBx : float
-
The X coordinate of the start point on the second ray.
pBy : float
-
The Y coordinate of the start point on the second ray.
vAx : float
-
The X component of the vector of the first ray.
vAy : float
-
The Y component of the vector of the first ray.
vBx : float
-
The X component of the vector of the second ray.
vBy : float
-
The Y component of the vector of the second ray.
Returns: float option
The parameter at which the two rays intersect on line A if it is smaller than 1e12 in absolute value,
or None if the parameter is bigger than 1e12 or if they are parallel or coincident.
Modifiers: inline |
Returns the intersection parameter on the first ray (A) where ray A and ray B intersect.
|
Euclid