Math 使用起点/终点/中心点和轴计算弧长

Math 使用起点/终点/中心点和轴计算弧长,math,Math,我需要用一些数据计算弧长: 开始用坐标点(Xs、Ys、Zs) End带坐标的点(Xe、Ye、Ze) 中心带坐标的点(Xc、Yc、Zc) 轴带组件的向量(Xa、Ya、Za) 弧始于起点点,止于终点点,半径等于距离(中心,起点)和距离(中心,终点),其方向由轴矢量定义 示例: Arc { Start { -18.123, -11.805, 0 }, End { -17.167, -0.553, 0 }, Center { -9.421, -6,877, 0 },

我需要用一些数据计算弧长:

  • 开始
    用坐标点(Xs、Ys、Zs)
  • End
    带坐标的点(Xe、Ye、Ze)
  • 中心
    带坐标的点(Xc、Yc、Zc)
  • 带组件的向量(Xa、Ya、Za)
始于
起点
点,止于
终点
点,半径等于
距离(中心,起点)
距离(中心,终点)
,其方向由
矢量定义

示例:

Arc { Start { -18.123, -11.805, 0 }, End { -17.167, -0.553, 0 }, Center { -9.421, -6,877, 0 }, Axis { 0, 0, -1 } } 弧{ 开始{-18.123,-11.805,0}, 完{17.167,-0.553,0}, 中心{-9.421,-6877,0}, 轴{0,0,-1} } 注意:在本例中,圆弧为顺时针方向

我的问题是:我可以计算大长度或小长度,但我无法根据轴的方向确定好的值


欢迎提供一些帮助。

假设您的数据都是自洽的(中心必须与起点和终点等距,且轴应垂直于包含起点、终点和中心的平面),弧长是角度起点->中心->终点的弧度乘以半径(从中心到起点的距离,或相当于从中心到终点的距离)角度的度量可以通过余弦定律找到:
C^2=A^2+B^2-2AB cos theta
其中
C
是从起点到终点的距离,
A
是从中心到起点的距离,
B
是从中心到终点的距离。在这种情况下,公式可以简化为
C^2=2R^2-2R^2 cos theta
可以对
cosθ
进行求解,然后取反余弦得到
theta

如果我理解正确的话,您已经走了这么远,但问题是,
cos
的倒数通常有两个值,对应于开始和结束之间的短弧和长弧,您不知道选择哪一个

逆余弦的主分支,即使用库函数
arccos
得到的分支,将始终给出短角度。您需要另一种方法来确定正确的角度是短还是长

我推荐的方法是使用

a x b = |a| |b| sin(\theta) n

其中,
a
是向量的起点中心,
b
是向量的终点中心,
a |=| b |=R
n
是由轴确定的单位向量。你已经有了角度θ,或多或少,来自余弦定律,所以你不需要计算
弧心
;你真正感兴趣的是在这一点上,n是sin(θ)的符号。如果
a x b
n
在同一个方向上,
sin(θ)>0
取由余弦定律确定的短弧。如果
a x b
n
在相反的方向上,
sin(θ)我可能错了,但你得到的输入数据不可能变成圆弧吗?给定一个
起点
终点
点,中心只能是平面上与两个点的距离相等的任意点。
半径
参数不是更好吗?非常感谢你的帮助