Source code for aerocaps.geom.intersection

from aerocaps.geom.curves import Line3D
from aerocaps.geom.plane import Plane
from aerocaps.geom.point import Point3D
from aerocaps.geom.vector import Vector3D


__all__ = [
    "intersection_of_line_and_plane"
]


[docs] def intersection_of_line_and_plane(line: Line3D, plane: Plane): p01 = Vector3D(p0=plane.p0, p1=plane.p1) p02 = Vector3D(p0=plane.p0, p1=plane.p2) cross_vec = p01.cross(p02) l_a_p0 = Vector3D(p0=plane.p0, p1=line.p0) l_ab = Vector3D(p0=line.p0, p1=line.p1) numerator = cross_vec.dot(l_a_p0) denominator = -(l_ab.dot(cross_vec)) t = numerator / denominator l_ab_val = l_ab.value() l_ab_t = Point3D(x=l_ab_val[0] * t, y=l_ab_val[1] * t, z=l_ab_val[2] * t) return line.p0 + l_ab_t