(我不知道很多齿轮类型术语...)

我要啮合两个齿轮(齿轮A和B)。

有用的东西
我已经成功编写了代码,以确保齿轮彼此之间的距离正确,并且可以根据此数字以适当的速度旋转齿轮数量不同的齿轮。

问题
我很难计算将齿轮B放在齿轮A旁边时应该使齿轮B处于什么旋转状态,以使齿轮上的齿轮啮合在一起(两个齿轮的齿轮尺寸相同)。

齿轮A的中心位于x1,y1处,并旋转q度。齿轮B的中心位于x2,y2处,并且与齿轮A的距离为d。齿轮上两个齿轮之间的距离为c。

我使用Math.atan2(y2-y1, x2-x1) *(180/Math.PI);来计算两个齿轮相对于原点的角度,但并非总是能得到良好的结果(可能在我的其他地方的代码中有问题,不确定...)我的想法是使用该角度并q来计算齿轮B的旋转值。

我可能可以使用q%c来获得齿轮B的更精确/更小的旋转值,但不确定如何进行。

最佳答案

考虑一个带有n个嵌齿轮的齿轮。如果n是偶数,则相对于每个齿轮是另一个齿轮。如果n为奇数,则每个cog都为一个凹口(或任何正确的项)。在任何一种情况下,如果将齿轮旋转2π/ n弧度,则其外观将与之前相同-每个齿轮都“移开了”。因此角度仅对2π/ n取模。

考虑两个相同的啮合齿轮,均以x轴为中心(y = 0)。如果n为奇数,则它们的角度可以相等(当一个齿轮指向x方向时,我们可以将该角度称为0),并且通常,如果一个齿轮的角度为a,则另一个齿轮的角度为-a。 。如果n是偶数,则当一个齿轮处于0时,另一个齿轮将处于π/ n,通常,当一个齿轮处于另一个齿轮时,它将处于π/ n-a。

现在,假设左侧的齿轮(“齿轮A”)具有n齿,而右侧的齿轮(“齿轮B”)具有m齿。如果m为奇数,则当齿轮B处于am时,齿轮A处于-an。如果m为偶数,则当齿轮B处于am时,齿轮A处于π/ n-an。

现在假设它们的中心不在相同的y值上,因此齿轮B的中心与齿轮A的中心成角度b。现在,从每个齿轮的旋转角度减去该角度,可以减小问题到上一个。

关于javascript - 如何使Gears啮合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7382954/

10-11 18:17