intersection_segmentsintersection_segmentsIntersectionSegmentsIntersectionSegments (Operator)
Name
intersection_segmentsintersection_segmentsIntersectionSegmentsIntersectionSegments
— Calculate the intersection point of two line segments
Signature
Herror intersection_segments(double Segment1Row1, double Segment1Column1, double Segment1Row2, double Segment1Column2, double Segment2Row1, double Segment2Column1, double Segment2Row2, double Segment2Column2, double* Row, double* Column, Hlong* IsOverlapping)
Herror T_intersection_segments(const Htuple Segment1Row1, const Htuple Segment1Column1, const Htuple Segment1Row2, const Htuple Segment1Column2, const Htuple Segment2Row1, const Htuple Segment2Column1, const Htuple Segment2Row2, const Htuple Segment2Column2, Htuple* Row, Htuple* Column, Htuple* IsOverlapping)
void IntersectionSegments(const HTuple& Segment1Row1, const HTuple& Segment1Column1, const HTuple& Segment1Row2, const HTuple& Segment1Column2, const HTuple& Segment2Row1, const HTuple& Segment2Column1, const HTuple& Segment2Row2, const HTuple& Segment2Column2, HTuple* Row, HTuple* Column, HTuple* IsOverlapping)
static void HOperatorSet.IntersectionSegments(HTuple segment1Row1, HTuple segment1Column1, HTuple segment1Row2, HTuple segment1Column2, HTuple segment2Row1, HTuple segment2Column1, HTuple segment2Row2, HTuple segment2Column2, out HTuple row, out HTuple column, out HTuple isOverlapping)
Description
intersection_segmentsintersection_segmentsIntersectionSegmentsIntersectionSegmentsIntersectionSegments
calculates the intersection point of two
line segments, which are defined by their endpoints
(Segment1Row1Segment1Row1Segment1Row1Segment1Row1segment1Row1
,Segment1Column1Segment1Column1Segment1Column1Segment1Column1segment1Column1
),
(Segment1Row2Segment1Row2Segment1Row2Segment1Row2segment1Row2
,Segment1Column2Segment1Column2Segment1Column2Segment1Column2segment1Column2
), and
(Segment2Row1Segment2Row1Segment2Row1Segment2Row1segment2Row1
,Segment2Column1Segment2Column1Segment2Column1Segment2Column1segment2Column1
),
(Segment2Row2Segment2Row2Segment2Row2Segment2Row2segment2Row2
,Segment2Column2Segment2Column2Segment2Column2Segment2Column2segment2Column2
) respectively.
The intersection point, if it exists, is returned in
(RowRowRowRowrow
,ColumnColumnColumnColumncolumn
).
If both segments have a part in common, IsOverlappingIsOverlappingIsOverlappingIsOverlappingisOverlapping
returns the
value 1, otherwise 0 is returned.
In this case the endpoints of the mutual segment are
returned in (RowRowRowRowrow
,ColumnColumnColumnColumncolumn
).
Execution Information
- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Processed without parallelization.
Parameters
Segment1Row1Segment1Row1Segment1Row1Segment1Row1segment1Row1
(input_control) point.y →
HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Row coordinate of the first point
of the first segment.
Segment1Column1Segment1Column1Segment1Column1Segment1Column1segment1Column1
(input_control) point.x →
HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Column coordinate of the first point
of the first segment.
Segment1Row2Segment1Row2Segment1Row2Segment1Row2segment1Row2
(input_control) point.y →
HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Row coordinate of the second point
of the first segment.
Segment1Column2Segment1Column2Segment1Column2Segment1Column2segment1Column2
(input_control) point.x →
HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Column coordinate of the second point
of the first segment.
Segment2Row1Segment2Row1Segment2Row1Segment2Row1segment2Row1
(input_control) point.y →
HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Row coordinate of the first point
of the second segment.
Segment2Column1Segment2Column1Segment2Column1Segment2Column1segment2Column1
(input_control) point.x →
HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Column coordinate of the first point
of the second segment.
Segment2Row2Segment2Row2Segment2Row2Segment2Row2segment2Row2
(input_control) point.y →
HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Row coordinate of the second point
of the second segment.
Segment2Column2Segment2Column2Segment2Column2Segment2Column2segment2Column2
(input_control) point.x →
HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Column coordinate of the second point
of the second segment.
RowRowRowRowrow
(output_control) point.y(-array) →
HTupleHTupleHtuple (real) (double) (double) (double)
Row coordinate of the intersection point.
ColumnColumnColumnColumncolumn
(output_control) point.x(-array) →
HTupleHTupleHtuple (real) (double) (double) (double)
Column coordinate of the intersection point.
IsOverlappingIsOverlappingIsOverlappingIsOverlappingisOverlapping
(output_control) integer →
HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Do both segments have a part in common?
Result
If the parameters are valid, the operator intersection_segmentsintersection_segmentsIntersectionSegmentsIntersectionSegmentsIntersectionSegments
returns the value 2 (H_MSG_TRUE).
Alternatives
intersection_segment_contour_xldintersection_segment_contour_xldIntersectionSegmentContourXldIntersectionSegmentContourXldIntersectionSegmentContourXld
,
intersection_contours_xldintersection_contours_xldIntersectionContoursXldIntersectionContoursXldIntersectionContoursXld
See also
intersection_segment_lineintersection_segment_lineIntersectionSegmentLineIntersectionSegmentLineIntersectionSegmentLine
,
intersection_linesintersection_linesIntersectionLinesIntersectionLinesIntersectionLines
,
intersection_line_contour_xldintersection_line_contour_xldIntersectionLineContourXldIntersectionLineContourXldIntersectionLineContourXld
Module
Foundation