2017-01-11 8 views
1

私はちょっとした試合をしており、現在は「レーダー」に取り組んでいます。これを行うには、ポイントが中心点を中心にどのくらい回転したかに基づいて2つのポイントを見つける必要があります。ポイントが中心点をどれだけ回転したかに基づいて2つのポイントを見つける

image

ACの周りを回転する予定です。 Aとして

周りCB & DAと一緒に移動し、Aである場合のオフに基づいて同一の「位置」に留まる回転します。 AC 90度の周りを回転する場合

したがって、たとえば、Bは& Dはその後移動し、この位置

image

になるしかし、私は三角で非常によくないです、私は本当にないだろう見つけ出すために私が必要とする数学を知っているB & DAがどれくらい回転したかに基づいてCを回しています。私はCを中心に回転しているどのくらいのAのオフに基づいてB & Dを見つけるにはどうすればよい

私は画像の最終数学はこれと少し似て見えるでしょう:

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]; 
+0

http://stackoverflow.com/questions/2259476/rotating-a-point-about-another-point-2d – SingerOfTheFall

+0

AがCの周りを回転する角度を知っていますか? – acraig5075

答えて

1

ですから、C.にAの相対的な2D位置に関しては、それが(AX、AY)であると言うことができます知っています。

た場合(斧は、AY、0)あなたは(DX、DY、0)

D =(dxのようなものになりますDの相対的な位置を見つけるとあなたの外積(0,0,1) 、DY)を Bも

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

4

を-dさあなたが転換点(x0, y0)ための以下の式を与える単純な行列乗算を行うことにより、原点を中心点(x, y)を回転させることができるDの相対位置であります:

x0 = x * cos(theta) - y * sin(theta); 
y0 = x * sin(theta) + y * cos(theta); 
関連する問題