gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:30:21 29 4
gpt4 key购买 nike

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

  • 起始点坐标(Xs、Ys、Zs)
  • 结束点及坐标(Xe、Ye、Ze)
  • 中心点及坐标(Xc、Yc、Zc)
  • Axis 向量,包含分量(Xa、Ya、Za)

ArcStart 点开始,在 End 点结束,半径等于 DistanceBetween(Center, Start) DistanceBetween(Center, End) 以及他的方向由 Axis 向量定义。

示例:

Arc {  Start   { -18.123, -11.805, 0 },  End     { -17.167,  -0.553, 0 },  Center  {  -9.421,  -6,877, 0 },  Axis    { 0, 0, -1 }}

注意:在本例中,圆弧具有顺时针方向

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

欢迎提供一些帮助。

最佳答案

假设您的数据都是自洽的(中心必须与起点和终点等距,并且轴应垂直于包含起点、终点和中心的平面),则弧长是以弧度为单位的度量角度 Start -> Center -> End 乘以半径(从 Center 到 Start 的距离,或等效地,从 Center 到 End 的距离)。角度的测量可以通过余弦定律找到:C^2 = A^2 + B^2 - 2AB cos theta哪里C是从起点到终点的距离,A是从中心到起点的距离,B是从中心到末端的距离。在这种情况下,公式可以简化为 C^2 = 2R^2 - 2R^2 cos theta可以解决 cos theta然后取反余弦得到theta .

如果我理解正确的话,你已经走到这一步了,但问题是 cos 的倒数通常有两个值。 ,对应起点和终点之间的短弧和长弧,你不知道该选哪个。

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

我推荐的方法是使用cross product 。利息公式为

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

哪里a是矢量开始 - 中心,b是向量End - Center , |a|=|b|=R ,和n是由轴确定的单位向量。您已经或多或少地根据余弦定律获得了角度 theta,因此您不需要计算 arcsin ;此时您真正感兴趣的是 sin(theta) 的符号。如果a x bn方向相同,sin(theta)>0然后你取由余弦定律确定的短弧。如果a x bn方向相反,sin(theta)<0 ,然后取由余弦定律确定的长弧。

您可以判断是否 a x bn通过取它们的点积,它们的方向相同或相反。如果点积为正,则它们的方向相同。如果点积为负,则它们的方向相反。

关于math - 使用起点/终点/中心点和轴计算弧长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31680693/

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