Source code for pyleecan.Functions.Geometry.inter_line_line

# -*- coding: utf-8 -*-


[docs]def inter_line_line(Z1, Z2, Z3, Z4): """INTER_LINE_LINE find the intersection between two lines defined by two complex Parameters ---------- Z1 : complex Complex coordinate of a point on the first line Z2 : complex Complex coordinate of another point on the first line Z3 : complex Complex coordinate of a point on the second line Z4 : complex Complex coordinate of another point on the second line Returns ------- Zlist: list List of the complex coordinates of the intersection return [Z1, Z2] if the 4 points are aligned """ # Check if the points are aligned Z12 = Z1 - Z2 Z13 = Z1 - Z3 Z14 = Z1 - Z4 if ( Z12.real * Z13.imag - Z12.imag * Z13.real == 0 and Z12.real * Z14.imag - Z12.imag * Z14.real == 0 ): return [Z1, Z2] # Compute the line equation (A1, B1, C1) = find_line_eq(Z1, Z2) (A2, B2, C2) = find_line_eq(Z3, Z4) # Compute the intersection D = A1 * B2 - B1 * A2 Dx = C1 * B2 - B1 * C2 Dy = A1 * C2 - C1 * A2 if D != 0: x = Dx / D y = Dy / D return [x + 1j * y] else: return []
[docs]def find_line_eq(Z1, Z2): """Find the line equation (Ax+By=C) Parameters ---------- Z1 : complex Complex coordinate of a point on the line Z2 : complex Complex coordinate of another point on the line Returns ------- A, B, C : (float, float, float) Line equation parameters """ A = Z1.imag - Z2.imag B = Z2.real - Z1.real C = Z1.real * Z2.imag - Z2.real * Z1.imag return (A, B, -C)