def find_occlusion(coor): u = panostretch.coorx2u(coor[:, 0]) v = panostretch.coory2v(coor[:, 1]) x, y = panostretch.uv2xy(u, v, z=-50) occlusion = [] for i in range(len(x)): raycast = LineString([(0, 0), (x[i], y[i])]) other_layout = [] for j in range(i + 1, len(x)): other_layout.append((x[j], y[j])) for j in range(0, i): other_layout.append((x[j], y[j])) other_layout = LineString(other_layout) occlusion.append(raycast.intersects(other_layout)) return np.array(occlusion)
def cor2xybound(cor): ''' Helper function to clip max/min stretch factor ''' corU = cor[0::2] corB = cor[1::2] zU = -50 u = panostretch.coorx2u(corU[:, 0]) vU = panostretch.coory2v(corU[:, 1]) vB = panostretch.coory2v(corB[:, 1]) x, y = panostretch.uv2xy(u, vU, z=zU) c = np.sqrt(x**2 + y**2) zB = c * np.tan(vB) xmin, xmax = x.min(), x.max() ymin, ymax = y.min(), y.max() S = 3 / abs(zB.mean() - zU) dx = [abs(xmin * S), abs(xmax * S)] dy = [abs(ymin * S), abs(ymax * S)] return min(dx), min(dy), max(dx), max(dy)