我正在使用在互联网(here)上找到的一段代码来计算点与线段之间的距离。这是代码:
float
dist_Point_to_Segment( Point P, Segment S)
{
Vector v = S.P1 - S.P0;
Vector w = P - S.P0;
double c1 = dot(w,v);
if ( c1 <= 0 )
return d(P, S.P0);
double c2 = dot(v,v);
if ( c2 <= c1 )
return d(P, S.P1);
double b = c1 / c2;
Point Pb = S.P0 + b * v;
return d(P, Pb);
}
计算double时b = c1 / c2; c2是dot(v,v)(因此,v的范数平方)。我们不应该使用norm(v)吗?这不是向量在另一个向量上的投影的正确定义吗?
谢谢。
最佳答案
实际上,定义是与norm(v)平方成正比的。所以dot(v,v)是正确的。
这里有一个简短的解释:
http://math.oregonstate.edu/home/programs/undergrad/CalculusQuestStudyGuides/vcalc/dotprod/dotprod.html
关于c++ - “点-段”距离:此代码不应该使用规范而不是规范平方吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55766839/