gpt4 book ai didi

c++ - "Point-Segment"距离 : shouldn't this code use the norm instead of the norm squared?

转载 作者:行者123 更新时间:2023-11-27 23:40:12 26 4
gpt4 key购买 nike

我正在使用我在互联网上找到的一段代码 ( 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) 吗?这不是一个 vector 在另一个 vector 上的投影的正确定义吗?

谢谢。

最佳答案

实际上定义是用 norm(v) 的平方。所以 dot(v, v) 是正确的。

这里有一个简短的解释: http://math.oregonstate.edu/home/programs/undergrad/CalculusQuestStudyGuides/vcalc/dotprod/dotprod.html

关于c++ - "Point-Segment"距离 : shouldn't this code use the norm instead of the norm squared?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55766839/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com