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)开始
带坐标的点(Xe、Ye、Ze)End
带坐标的点(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(θ)我可能错了,但你得到的输入数据不可能变成圆弧吗?给定一个起点
和终点
点,中心只能是平面上与两个点的距离相等的任意点。半径
参数不是更好吗?非常感谢你的帮助