【发布时间】:2018-12-30 21:03:15
【问题描述】:
我有一条线 AB。我想画一条线BC,垂直于AB。我知道点 A 和 B 的 xyz,我也知道 B 和 C 之间的距离 N。如何找到适合给定参数的任意点 C?计算应在 3-D 中完成。任何垂直于AB的点都可以是点C,如果它到B的距离等于N。
这里给出了一个几乎相同的问题,但我想知道在 3-D 中如何完成同样的事情:How do you find a point at a given perpendicular distance from a line?
上面的链接中给出了适用于我的二维计算:
dx = A.x-B.x
dy = A.y-B.y
dist = sqrt(dx*dx + dy*dy)
dx /= dist
dy /= dist
C.x = B.x + N*dy
C.y = B.y - N*dx
我尝试像这样添加 Z 轴:
dz = A.z - B.z
dist = sqrt(dx*dx + dy*dy + dz*dz)
dz /=dist
C.z = .... at this point it becomes a mystery to me
如果我将“C.z - N*dz”之类的东西放入 C.z 中,距离仅在某些旋转角度上是准确的,我想知道正确的解决方案。我可以想象,在 3-D 中,它的计算方式完全不同。
澄清
- C 点不是唯一的。它可以是 circle 上的任意点,其 以 B 为中心,以 N 为半径。圆垂直于 AB
【问题讨论】:
-
如果我正确理解您的问题,
C与N距离B的点并不是唯一的。实际上是以B为圆心,N为半径的圆上的所有点。 -
@Aziz,是的,你是对的。点 C 可以是该圆上的任何点。
-
你对 3D 向量有足够的了解来实现我刚刚在我的答案中给出的向量算法吗?
-
@Rory,非常感谢您的回答。如果你能在代码中展示它是如何完成的,那将会很有帮助。
标签: math graphics 3d geometry language-agnostic