まわるまわる俺たち(ry

アバター
大白定義
記事: 14
登録日時: 14年前
住所: 三重県

まわるまわる俺たち(ry

投稿記事 by 大白定義 » 14年前

座標の回転を計算するプログラムを書いてみた。
…まぁ、公式さえ読めば行列云々はそこまで気にしなくていいし、ぶっちゃけ難しくもなんともないんですが。
参考にしたサイトは以下
http://w3e.kanazawa-it.ac.jp/math/categ ... ml#pagetop

CODE:

#include 
#include 
 
#define PI		3.141592
#define RADIAN(x)	((PI / 180) * x)
 
double getRotateX(double x1, double y, double x2, double angle){
	double xx;
 
	xx = x1 * cos(RADIAN(angle)) - y * sin(RADIAN(angle));
	xx += x2;
 
	return xx;
}
 
double getRotateY(double x, double y1, double y2, double angle){
	double yy;
 
	yy = x * sin(RADIAN(angle)) + y1 * cos(RADIAN(angle));
	yy += y2;
 
	return yy;
}
 
int main(void){
	double ax, ay, bx, by, cx, cy;
	double angle;
 
	ax = 1;
	ay = 1;
	bx = 1;
	by = 0;
	angle = 45;
 
	cx = getRotateX(bx, by, ax, angle);
	cy = getRotateY(bx, by, ay, angle);
 
	printf("原点X:%f\n", ax);
	printf("原点Y:%f\n", ay);
	printf("回転前X:%f\n", (bx + ax));
	printf("回転前Y:%f\n", (by + ay));
	printf("回転後X:%f\n", cx);
	printf("回転後Y:%f\n", cy);
 
	return 0;
}

これが何に使えるの? というと、画像が回転したときの当たり判定の円の中心の座標の変換に使えるのではないかなと。

正方形(正円)の弾であれば回転する必要はありませんが、長方形だと楕円形の当たり判定は…作れなくは無いかもしれませんがそれだったら正円を並べる方が楽なんじゃないかなと思うわけです。
その代わり処理は重くなるかもしれませんが。

画像が回転させ、見た目どおりの当たり判定を持たせるためには、
正方形である場合は中心に1個判定を置くだけでいいので当たり判定を弄る必要はありません。(というか正円とか回転させる意味があるのかどうかすら怪しい)
しかし、長方形である場合の判定は、例えば縦長である場合は縦に2個当たり判定を置くため、画像の回転した角度と同じだけ座標を回転させてやる必要があるのではないかなと。

そんな感じで、失礼します。

コメントはまだありません。