1

私は小さなゲームを作っており、現在「レーダー」に取り組んでいます。これを行うには、点が中心点を中心に回転した量に基づいて 2 つの点を見つける必要があります。

画像

Aが回転しCます。

Aが周りを回転すると、C&BD一緒に移動Aし、どこにあるかに基づいて同じ「位置」にとどまりAます。

たとえば、 が90 度A回転すると、移動してこの位置になりますCBD

画像

Bしかし、私は三角法があまり得意ではないので、DどれだけA回転したかを見つけてそれに基づいて計算するために必要な数学がよくわかりませんC

どのくらい回転したかを見つけてベースにするにはどうすればよいBですか?DAC

最終的な計算は次のようになると思います。

float * returnB(float * APoint, float * CPoint)
{
    float B_Out[2];
    //calculate where B is based off A & C
    B_Out[0] = B_X;
    B_Out[1] = B_Y;
    return B_Out;
}

float B[2];
B[0] = returnB(A,C)[0];
B[1] = returnB(A,C)[1];

float * returnD(float * APoint, float * CPoint)
{
    float D_Out[2];
    //calculate where D is based off A & C
    D_Out[0] = D_X;
    D_Out[1] = D_Y;
    return D_Out;
}

float D[2];
D[0] = returnD(A,C)[0];
D[1] = returnD(A,C)[1];
4

2 に答える 2

1

したがって、C に対する A の相対的な 2 次元位置がわかります。それが (ax, y) であるとしましょう。

product(0,0,1) と (ax, ay, 0) をクロスすると、(dx, dy, 0) のような D の相対位置が見つかります。

d = (dx, dy) は D の相対位置です。b も -d です。

https://en.wikipedia.org/wiki/Cross_product

于 2017-01-11T06:00:24.857 に答える