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

问题描述:

我试图确定一条线是否与一个圆相交,并且要这样做,我试着先计算一个点(圆心)是否在投影到该线上时处于该线的边界内。使用非标准化向量的点积将点投影到一条线上?

我发现了一个正在完成的示例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)); 

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

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

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