我在 3D 空间的有向线 AB 上有 2 个点 P 和 Q。它们可以在线上的任何位置,即不一定在 A 和 B 之间。
毕达哥拉斯显然给了你距离,但是我如何计算从 P 到 Q 的有向距离的符号?
取AB和PQ的点积。正=> 同方向,负=> 反方向。
将 QP 和 BA 的差值视为向量AB和PQ,符号由向量的点积的符号给出。
符号(有符号距离)=符号(PQ · AB)
在哪里
[x,y,z] · [ p,q,r ] = x✕p + y✕q + z✕r
如果您通过将向量AB除以其大小(点积与其自身的 sqrt )来归一化向量 AB,
N = AB / | AB |
那么沿 AB 方向的有符号距离将是
有符号距离 = PQ · N
这意味着如果 A 和 B 不变,您只需要执行一次 sqrt。
对于每个维度 (x,y,z),对于 A->B,它将增加、减少或恒定。这可以通过做 BA (xB-xA, yB-yA, zB-zA) 找到。为您的积分计算 QP 的等效值。如果 x(或 y 或 z)中的符号与 BA 中的符号相同,则方向与 AB 相同,否则方向不同。
您只需要查看 x、y 或 z 中的 1 个,但如果 AB 在 x、y 或 z 中是常数,则您需要选择另一个维度。
听起来你在问向量。我不知道你是否研究过它们,但它们是既有大小又有方向的量。
如果您在空间中的两个点是 (p1, p2, p3) 和 (q1, q2, q3),您可以在 3D 空间中形成从 P 指向 Q 的向量,如下所示:
V = (q1-p1)*i + (q2 - p2)*j + (q3 - p3)*k
其中 (i, j, k) 分别是 x、y 和 z 方向上大小为 1 的向量。
从P到Q的幅度(例如,距离)是分量平方和的平方根。
这些点在线 AB 上,您需要从 P 到 Q 的距离。
该线从 A 指向 B,因此您可以定义一个 alpha,使得:
Point = alpha (B-A) + A
求 P 和 Q 的 alpha,如果 P 的 alpha 大于 Q 的 alpha,则符号为负。