3

ギアごとに、次のプロパティがあります。

  • 半径:歯車の中心と端の間の長さ。
  • OffsetAngle:親歯車に対するこの歯車の角度。親がない場合は0。
  • CenterX:歯車の中心。
  • CenterY:歯車の中心。
  • NumberOfTeeth:この歯車の歯の総数。
  • ToothInterval:各歯を分離する角度。
  • 親:この歯車が接続されている歯車の上記のすべてのプロパティが含まれます。

歯が正しく整列するように、各ギアの正しいオフセット回転を計算する必要があります。ビジュアルガイドについては、添付の画像を参照してください。回転は親の回転を参照する必要があり、親がない場合(写真の中央にある32歯の歯車)、回転は0です。

ギアの位置を示す視覚補助

私は私の人生のためにこれのために働くであろう公式を考え出すことができません-どんな助けでも大いに感謝されるでしょう。

解決:

this.rotation  = function() { 
    if (this.parent) {
        return -this.parent.rotation()*this.ratio() + this.toothsize()/2;
    } else { return gearRot; }
}
4

2 に答える 2

2

各ギアに「偶数」または「奇数」のタグを付けます。同じタグのギアに接続できないようにギアを制限します。つまり、「偶数」の歯車は「奇数」の歯車以外の歯車には接続できず、「奇数」の歯車は「偶数」の歯車にのみ接続できます。これは、データ構造内の歯車の深さのパリティに対応します。全体的な構造を説明するために再使用します。また、歯車が実際に相互にどの方向に回転するかを判断するのにも役立ちます。

すべての「奇数」ギアを1/2サイクル回転させます。したがって、32の歯がある場合、各サイクルの長さは2π/ 32=π/16ラジアンであるため、2π/64=π/32ラジアンの回転係数を追加します。

于 2012-11-19T17:16:07.457 に答える
2

ソリューションとして提供した式は、回転0の2つの接続された歯車の歯が、画像の状況のように完全に整列している歯車の位置に対してのみ機能します。任意の位置については、両方の中心間の角度を計算し、その値に加えて、回転した歯車の歯数が奇数の場合は最終的に-@andが指摘したように-「半分の歯」で歯車の1つを回転させる必要があります。少し前に、私は同様のギアのデモを書きました:

JavaScriptギア

ソースコードのGearView.setPos()を見てください。»、«、»。«またはマウスホイールで歯の数を変更します。

于 2013-06-29T15:21:02.393 に答える