def _predict_one(self, index, new_corners): ''' predict position of corner index @param index: @param new_corners: ''' # predicting by taking vectors form near corners along the sides # and solving linear equation for intersection L = len(new_corners) nb = (index + 1) % L b = new_corners[nb] nd = (index - 1 + L) % L d = new_corners[nd] assert isinstance(b, Corner) v1 = b.get_prediction_vector(True, self.corners[nb]) v2 = d.get_prediction_vector(False, self.corners[nd]) p1 = b.p p2 = d.p (p, _) = solve_linear(v1, v2, p1, p2) point = add(b.p, v1, p) cor = Corner([d.p, point, b.p], imgtime=b.time) cor.compute_change(self.corners[index]) cor.is_predicted = True if cor.similarity < self.avg_sim * 2: new_corners[index] = cor