Posts Tagged with "BSV"

既に発行済みのブログであっても適宜修正・追加することがあります。
We may make changes and additions to blogs already published.

Pongの開発 (9)

posted by sakurai on December 1, 2023 #707

You

正解です。それではA°のときが画面上の座標44に相当し、A+B°のときが座標186のときに相当するとき、ある角度A+x°のときの座標を計算してください。

Bluespec Expert
与えられた条件に基づいて、角度A+x°のときの座標を計算するためには、角度と座標の間の線形関係を確立する必要があります。A°が座標44に、A+B°が座標186に対応するとします。この関係から、角度と座標の変換式を導き出し、それを使って任意の角度A+x°のときの座標を求めます。

  1. 角度と座標の変換係数の計算:

    • 角度の変化量は B、対応する座標の変化量は 186 - 44 です。
    • したがって、1°あたりの座標の変化量は (186 - 44) / B です。
  2. 任意の角度A+x°の座標の計算:

  • A°のときの座標は44なので、A+x°のときの座標は 44 + x * ((186 - 44) / B) となります。

この計算には、角度の増加量 x とBの具体的な値が必要です。しかし、これらの値が提供されていないため、具体的な座標を計算することはできません。もしこれらの値を提供いただければ、具体的な座標を計算することが可能です。

You

ゲーム中にxは毎秒変化するから具体的な値は与えられません。以上から、ADCの値から座標値へ変換する式を求めてください。

Bluespec Expert
ADCの値からゲーム画面上の座標値への変換式は以下の通りです:

$$座標 = 44 + ((((\text{adc_value} / 4096 - 0.2) / 0.74) * 300 - A) * ((186 - 44) / B))$$

この式では、まずADC値 (adc_value) から対応する角度への変換を行い、その後その角度を基にして座標値に変換しています。ただし、この式はBの具体的な値に依存します。Bは角度AからA+Bまでの変化量を示しており、これによって角度と座標の関係が決定されます。

You

事前に演算できる定数をまとめてください。

Bluespec Expert
確かに、定数同士の除算も事前に計算して定数として扱うことができます。式内のすべての定数同士の乗算と除算を事前に行い、式をさらに簡略化してみましょう。式は次のようになります:

$$座標 = 44 + \frac{\text{adc_value} \times 14.05}{B} - \frac{11513.36}{B} - \frac{A \times 142}{B}$$

これで、式は定数計算をすべて事前に行った状態で、より簡略化されています。これを使って、特定の $\text{adc_value}$、$A$、$B$ の値に対する座標を計算できます。


ChatGPTに計算してもらった式を固定小数点演算化するために分母分子を16倍します。すると、 $$座標 = 44 + \frac{\text{adc_value} \times 225}{16B} - \frac{184214}{16B} - \frac{A \times 2272}{16B}$$ となり、前記事の式と有効数字5桁で一致しました。


左矢前のブログ 次のブログ右矢


ページ: