对于每个齿轮,我有以下属性:
- 半径:齿轮中心和边缘之间的长度。
- OffsetAngle :此齿轮与父齿轮的角度。0 没有父母。
- CenterX :齿轮的中心。
- CenterY:齿轮的中心。
- NumberOfTeeth :此齿轮的总齿数。
- ToothInterval :每个牙齿之间的角度。
- Parent :包含此齿轮连接到的齿轮的所有上述属性。
我需要计算每个齿轮的正确偏移旋转,以便齿正确对齐。有关视觉指南,请参见附图。旋转需要参考父级的旋转,当没有父级时(图片中间的32齿齿轮)旋转为0。
我无法为我的一生制定一个适用于此的公式 - 任何帮助将不胜感激。
解决方案:
this.rotation = function() {
if (this.parent) {
return -this.parent.rotation()*this.ratio() + this.toothsize()/2;
} else { return gearRot; }
}