Source code for pyleecan.Methods.Geometry.Segment.intersect_line
# -*- coding: utf-8 -*-
from numpy import abs as np_abs
from ....Functions.Geometry.inter_line_line import inter_line_line
[docs]def intersect_line(self, Z1, Z2):
"""Return a list (0, 1 or 2 complex) of coordinates of the
intersection of the segment with a line defined by two complex
Parameters
----------
self : Segment
A Segment object
Returns
-------
Z_list: list
Complex coordinates of the intersection (if any,
return [begin, end] if the segment is part of the line)
"""
Z3 = self.begin
Z4 = self.end
Z_list = inter_line_line(Z1, Z2, Z3, Z4)
if len(Z_list) == 0:
# No intersection
return []
elif len(Z_list) == 1:
# One intersect. Is it between begin and end or not ?
Z_int = Z_list[0]
Seg_len = self.comp_length()
if np_abs(Z_int - Z3) <= Seg_len and np_abs(Z_int - Z4) <= Seg_len:
return [Z_int]
elif np_abs(Z_int - Z3) <= 1e-6 or np_abs(Z_int - Z4) <= 1e-6:
# Zint is begin or end
return [Z_int]
else:
return []
elif len(Z_list) == 2:
# The segment is on the line
return [Z3, Z4]