使用非标准化向量的点积将点投射到线上?

时间:2016-03-15 18:20:13

标签: vector 2d dot-product

我试图确定一条线是否与一个圆相交,为了做到这一点,我试图首先计算一个点(圆心)是否在该线的范围内,当投影到该线上时线。

我找到了一个完成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) );

这是我不明白的部分。我已经完成了归一化向量的点积来获得角度,但我之前从未见过点积中的非归一化向量,更不用说将结果分开了。

有人可以向我解释这是如何运作的吗?它在这做什么?

1 个答案:

答案 0 :(得分:1)

我终于找到了video来解释这背后的数学。现在有道理!