gpt4 book ai didi

math - 计算点到线段和线段到线段的平均距离

转载 作者:行者123 更新时间:2023-12-04 12:51:15 25 4
gpt4 key购买 nike

我正在寻找一种算法来计算 3D 中点和线段之间的平均距离。因此,给定代表线段 AB 的两个点 A(x1, y1, z1) 和 B(x2, y2, z2) 和第三个点 C(x3, y3, z3),AB 上每个点之间的平均距离是多少点C?

我也对两条线段之间的平均距离感兴趣。那么给定段 AB 和 CD,从 AB 上的每个点到 CD 上最近点的平均距离是多少?

我尝试过的网络搜索没有任何运气,因此任何建议将不胜感激。

谢谢。

最佳答案

首先,两点之间的距离是坐标的两两差的平方和的平方根。
(例如,从 (0,0,0) 到 (1,1,1) 的距离是 sqrt(3) 但这适用于任意维度的任意点。)
这个距离被称为 l2-norm (小写 L)或欧几里得范数。
为点 A 和 B 之间的距离写出 norm(A,B)。

关于平均距离的有趣问题......
(请注意,找到从点到线或线段之间的最小距离是一个更常见的问题。这里有一个答案,其中包含针对该问题的很好的指针,但似乎在此期间已被删除。)

要找到从点 C 到线段 AB 的平均距离,请考虑到 A 和 B 之间任意点的距离,即 (1-k)A+kB,其中 k 的范围从 0 到 1。
这就是范数(C, (1-k)A+kB)。
所以平均距离是 norm(C, (1-k)A+kB) 从 k = 0 到 1 的积分。

Mathematica 可以对任何特定的 A、B 和 C 进行积分。

这是一个 Mathematica 实现:

avgd[A_,B_,C_] :=  Integrate[Sqrt@Dot[(1-k)*A+k*B-C, (1-k)*A+k*B-C], {k, 0, 1}]

被积函数也可以写成 Norm[(1-k)*A+k*B-C] .无论哪种方式,Mathematica 都可以针对特定点执行此操作,但无法象征性地对其进行整合,尽管显然 David 以某种方式让它这样做了。
这是评论中大卫的例子:
> avgd[{0, 0, 0}, {4, 0, 0}, {4, 3, 0}] // N

3.73594

对于两条线段之间的平均距离的问题,理论上我认为这应该有效:
avgd[A_,B_,C_,D_] := Integrate[Norm[(1-k)A+k*B - (1-j)C - j*D], {k,0,1}, {j,0,1}]

但是 Mathematica 似乎甚至对特定点都感到窒息,更不用说象征性的了。

关于math - 计算点到线段和线段到线段的平均距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2672069/

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