def intersect_plane_plane_plane(p1c, p1n, p2c, p2n, p3c, p3n): point = None line = geometry.intersect_plane_plane(p1c, p1n, p2c, p2n) if line is not None and line[0] is not None: point = geometry.intersect_line_plane(line[0], line[0] + line[1], p3c, p3n) return point
def compute_intersect_plane_plane(params, result, gates): plane_co_a, plane_norm_a, plane_co_b, plane_norm_b = params local_result = [] plane_co_a_V = V(plane_co_a) plane_norm_a_V = V(plane_norm_a) plane_co_b_V = V(plane_co_b) plane_norm_b_V = V(plane_norm_b) inter_p = intersect_plane_plane(plane_co_a_V, plane_norm_a_V, plane_co_b_V, plane_norm_b_V) if inter_p[0]: intersect = True line_origin = list(inter_p[0]) line_direction = list(inter_p[1]) else: print("Plane Intersection Warning: Planes are parallel") intersect = False line_origin = list(plane_co_a_V) line_direction = list(plane_norm_a_V) local_result =[intersect, line_origin, line_direction] for i, r in enumerate(result): if gates[i]: r.append(local_result[i])
def _intersect_planes(p1: VectorPair, p2: VectorPair, p3: VectorPair) -> Optional[Vector]: line: VectorPair = geometry.intersect_plane_plane(*p1, *p2) if line[0] is None: return None return geometry.intersect_line_plane(line[0], line[0] + line[1], *p3)