回転
Posted: 2010年11月15日(月) 00:13
プレイヤ-を中心にして周囲のオブジェを回転させようとしたのですが、うまくいきません。
//↓include
#include"DxLib.h"
#include"math.h"
//↓グロ-バル変数
double player_x;
double player_y;
double angle; //rad単位
//↓回転関数
void rotateXY(double* x,double* y,double angle){
double cos,sin;
cos = cos(angle);
sin = sin(angle);
*x = (cos * *x) * (-sin * *y);
*y = (sin * *x) * ( cos * *y);
}
//↓Objectクラス
Class Object{
private:
double x;
double y;
int hImg;
public:
void show();
}
void Object::show(){
int ax,ay;
ax = x - player_x;
ay = y - player_y;
rotateXY(&ax,&ay,angle);
DrawGraph((int)ax,(int)ay,hImg,true);
}
座標(x,y) = (player_x,player_y)を中心にしてObjectクラスで作成したオブジェクトの座標x,yを
angle(rad単位)分だけ回転させて画面に表示させたいのですが、中心がプレイヤーの座標ではなくおかしな
方向に回転してしまいます。
一応、目標としてはアクションゲームを作ろうと思っています。
プグラミング暦は最近で、Visual C++2010を使っています。
OSはWindows7です。
どなたか分かる方がいらっしゃいましたらご教授お願いします。
//↓include
#include"DxLib.h"
#include"math.h"
//↓グロ-バル変数
double player_x;
double player_y;
double angle; //rad単位
//↓回転関数
void rotateXY(double* x,double* y,double angle){
double cos,sin;
cos = cos(angle);
sin = sin(angle);
*x = (cos * *x) * (-sin * *y);
*y = (sin * *x) * ( cos * *y);
}
//↓Objectクラス
Class Object{
private:
double x;
double y;
int hImg;
public:
void show();
}
void Object::show(){
int ax,ay;
ax = x - player_x;
ay = y - player_y;
rotateXY(&ax,&ay,angle);
DrawGraph((int)ax,(int)ay,hImg,true);
}
座標(x,y) = (player_x,player_y)を中心にしてObjectクラスで作成したオブジェクトの座標x,yを
angle(rad単位)分だけ回転させて画面に表示させたいのですが、中心がプレイヤーの座標ではなくおかしな
方向に回転してしまいます。
一応、目標としてはアクションゲームを作ろうと思っています。
プグラミング暦は最近で、Visual C++2010を使っています。
OSはWindows7です。
どなたか分かる方がいらっしゃいましたらご教授お願いします。