def intersect(self, segment):
""" point_sur_segment return
p: point d'intersection
u: param t de l'intersection sur le segment courant
v: param t de l'intersection sur le segment segment
"""
v2d = self.vect_2d
c2 = np.cross(segment.vect_2d, (0, 0, 1))
d = np.dot(v2d, c2)
if d == 0:
# segments paralleles
segment._point_sur_segment(self.c0)
segment._point_sur_segment(self.c1)
self._point_sur_segment(segment.c0)
self._point_sur_segment(segment.c1)
return False, 0, 0, 0
c1 = np.cross(v2d, (0, 0, 1))
v3 = self.c0.vect(segment.c0)
v3[2] = 0.0
u = np.dot(c2, v3) / d
v = np.dot(c1, v3) / d
co = self.lerp(u)
return True, co, u, v
评论列表
文章目录