gpt4 book ai didi

C++ 获取到给定点的最短距离的 3D vector 上的点

转载 作者:行者123 更新时间:2023-11-28 06:08:59 26 4
gpt4 key购买 nike


我给出了一条 3D 线,它用两个 3D vector (起点、端点)表示,全部在 C++

vec3 x1 = [x,y,z]
vec3 x2 = [x,y,z]

我还有一个 3D 点

vec3 x0 = [x,y,z]

我想找到点p,它从我给定的线到我的点x0距离最短d
这是一个图像示例:

Get Point **P** on given Line Segment

感谢您的帮助!

最佳答案

取你的直线方程

p = x1 + t (x2 - x1)

最近的点 p 使得 vector x0 - p 垂直于直线。 (您可以用毕达哥拉斯/初等微积分来证明这一点)。

所以你需要

(p - x0) 。 (x2 - x1) = 0

哪里。是点积。

(x1 - x0 + t (x2 - x1)) 。 (x2 - x1) = 0

t = - [ (x1 - x0) 。 (x2 - x1) ]/|x2 - x1|^2

其中 |x2 - x1|是幅度。

将其代入第一个等式以找到您想要的 p。

(PS 对不起,我无法格式化方程式)

关于C++ 获取到给定点的最短距离的 3D vector 上的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31696533/

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