Microsoft DirectX 8.0 (C++)

ジョイスティック軸データの解釈

ジョイスティックの軸値は、マウスの軸値と同様である。スティックを右に動かすと x 軸の戻り値が増し、スティックを手前に引き倒すと y 軸の値が増す。

ジョイスティック軸のデータは、軸の範囲プロパティにより任意の単位に決定される。たとえば、ジョイスティックの x 軸の範囲が 0 から 10,000 までの場合には、単位はジョイスティックの左右の移動の 10,000 分の 1 となり、中心位置は 5,000 となる。軸によっては、細分度プロパティが 1 より大きい場合もあり、その場合には値は丸められる。たとえば、細分度が 10 の場合には、値は 0、10、20 などのように報告される。

軸データは、無効ゾーンという、動作が無視される中心位置の周辺領域によっても影響を受ける。無効ゾーンは、ジョイスティックの少なくとも一方の軸に対する真の中心位置からの小さなずれに対する許容範囲となる。無効ゾーン内の軸の値は、真の中心として報告される。

軸の飽和プロパティとは、範囲の最大値および最小値の許容ゾーンのことである。このゾーン内の軸値は、最小値または最大値として報告される。飽和プロパティの目的は、たとえば、ジョイスティックの頂部の左位置と底部の左位置で報告される最小 x 軸間のわずかな差違を許容することにある。

次の図は、無効ゾーンと飽和ゾーンのエフェクトを示したものである。垂直軸は、軸の戻り値を表す。ここで、min max は報告された範囲の下限と上限であり、ctr は報告された中心である。水平軸は、ジョイスティックの物理的な位置を示す。ここで、pmin pmax は、物理的な範囲の限界、pctr は軸の中立点、dmin dmax は無効ゾーンの限界値、そして smin smax は上下の飽和ゾーンの境界である。下位飽和ゾーンは pmin smin の間に存在し、上位飽和ゾーンは smax pmax の間に存在し、無効ゾーンは dmin dmax の間に存在する。

ジョイスティック プロパティの詳細については、以下を参照すること。

ジョイスティックから返される軸座標は、相対でも絶対でもよい (「相対座標と絶対座標」を参照すること)。ジョイスティックは絶対デバイスなので (マウスとは異なり、軸にそって無限には移動できない)、デフォルトでは絶対データが返される。ジョイスティックの軸モードが "相対" に設定されている場合には、軸座標は、最後の値が返されてから以降の軸にそった移動の単位数を表す。

軸モードは、相対データまたは絶対データのどちらを返すかを指定するものであるが、デバイスを取得する前に変更できるプロパティである (「デバイス プロパティ」を参照すること)。軸モードを "相対" に設定するには、rguidProp パラメータに DIPROP_AXISMODE 値を指定し、DIPROPDWORD 構造体の dwData メンバに DIPROPAXISMODE_REL を指定して、IDirectInputDevice8::SetProperty メソッドを呼び出す。