对于每个Gear,我有以下属性:
我需要计算每一个齿轮的正确的偏移旋转,以使牙齿正确排列。请参阅附件中的图像以获得视觉指南。旋转将需要参考父母的旋转,当没有父母(在图片中间的32齿齿轮)旋转是0。

我不能为我的一生想出一个公式来解决这个问题--任何帮助都是非常感激的。
解决方案:
this.rotation = function() {
if (this.parent) {
return -this.parent.rotation()*this.ratio() + this.toothsize()/2;
} else { return gearRot; }
}发布于 2012-11-19 17:16:07
将每个齿轮标记为“偶数”或“奇数”。限制您的齿轮,使任何齿轮都不能连接到一个具有相同的标签。也就是说,除了“奇数”齿轮之外,“偶数”齿轮不能与任何齿轮连接,而“奇数”齿轮只能与“偶数”齿轮连接。这将对应于数据结构中齿轮深度的奇偶性,这也将有助于确定齿轮相对于彼此的实际转动方向。
将所有“奇数”齿轮旋转一个周期的1/2。所以如果你有32颗牙齿,每个周期是2π/32 =π/16弧度,那么加上2π/64 =π/32弧度的旋转因子。
发布于 2013-06-29 15:21:02
您提供的公式,作为解决方案,只适用于齿轮位置,其中两个连接齿轮的齿轮旋转0是完全对齐的情况下,在你的形象。对于任意位置,还需要计算两个中心之间的角度,并按该值旋转一个齿轮,最后,如@和并指出,如果旋转齿轮有奇数齿,则为“半齿”。不久前,我写了一个类似的设备演示:
JavaScript齿轮
查看源代码中的GearView.setPos()。改变齿数与?,“,”或鼠标轮。
https://stackoverflow.com/questions/13456603
复制相似问题