最简计算2D射线与直线的交点
输入:
一条数学意义直线,转化成点向式line(point,dir),方向符号无所谓。
一个Ray2D ray(origin,dir)
输出:
情况1:平行。
情况2:沿着ray.dir抵达直线的距离。可为0,可为负。
推导步骤:
就是构建垂线,然后构建向量点乘为0解方程。
O为ray.origin,配合line算出O在line上的映射点A。
D为ray.dir。
设所求为T,则交点B=O+T*D;
根据dot(OA,AB)=0,解方程求出
T=(OA^2)/dot(OA,D)
参考代码: