我试图确定一条线是否与一个圆相交,为了做到这一点,我试图首先计算一个点(圆心)是否在该线的范围内,当投影到该线上时线。
我找到了一个完成here的例子,但我很难理解其中的一部分。它创建了两个向量,从线的一端到点,从线的一端到另一端。没关系。
vec2 vecToPoint = point - lineA;
vec2 vecLine = lineB - lineA;
然后它取这两个向量的点积并将它们分开,使用结果作为沿投影点的线的偏移量。
float coef = dot(vecToPoint,vecLine) / dot(vecLine,vecLine);
return vec2( lineA.x + (coef * vecLine.x), lineA.y + (coef * vecLine.y) );
这是我不明白的部分。我已经完成了归一化向量的点积来获得角度,但我之前从未见过点积中的非归一化向量,更不用说将结果分开了。
有人可以向我解释这是如何运作的吗?它在这做什么?