在圆柱表面上找到最接近c ++中给定线的点

问题描述 投票:0回答:2

假设我有一个圆柱体,该圆柱体的半径为Z,半径为R,半径为一半,Z轴为中心,一条(无限)直线由两个3D点A和B定义。最佳的计算方法是最接近此线的圆柱面,特别是在c ++中?

c++ geometry intersection
2个回答
0
投票

考虑3D的斜线-z轴和您的线。

在它们之间建立最短的线(垂直于两条线)。

[此计算的数学方法在“最短线”部分here中进行了描述,实现的示例是here

如果z轴上的点S(最短的线与z轴相交)在圆柱体的外部,则最接近的点位于圆柱体顶部或底部的圆周上(使用下面介绍的方向矢量,z分量为零)] >

否则,计算最短线方向的单位向量,将其乘以圆柱体半径,然后加到点S

还检查距离的情况


© www.soinside.com 2019 - 2024. All rights reserved.