プログラマーの卵の日記

備忘録になってます!小難しそうなことから超簡単なことまでやってます!!

【C++】ただただ回転させたい【2D】

構成


物体を回転させたい







        物体を回転させたい


 ぶっちゃけ説明すべきことが特に思いつかないのでもうコード載せる。


void Move(float& t_x, float& t_y, float& t_moveX, float& t_moveY, float& t_rotaX, float& t_rotaY, const float t_areaX, const float t_areaY, const float t_turnFrameTime)
{
	t_rotaX += t_moveX;
	t_rotaY += t_moveY;

	t_moveX += -(2.0f * M_PI / t_turnFrameTime) * (2.0f * M_PI / t_turnFrameTime) * t_rotaX;
	t_moveY += -(2.0f * M_PI / t_turnFrameTime) * (2.0f * M_PI / t_turnFrameTime) * t_rotaY;

	t_x = t_rotaX + t_areaX;
	t_y = t_rotaY + t_areaY;
}


テスト用のために使ったDxLibの一部


	const float size = 64;
	const float radius = 45.0f;
	const float areaX = (640 - size) / 2.0f;
	const float areaY = (480 - size) / 2.0f;
	const float frameTurn = 60.0f;

	float vx = 0.0f;
	float vy = radius * (2.0f * M_PI / frameTurn);
	float rx = radius;
	float ry = 0.0f;
	float x = rx + areaX;
	float y = ry + areaY;

	// メインループ
	while (!ScreenFlip() && !ProcessMessage() && !ClearDrawScreen() && !CheckHitKey(KEY_INPUT_ESCAPE))
	{
		Move(x, y, vx, vy, rx, ry, areaX, areaY, frameTurn);
		DrawCircle(x, y, size / 2, GetColor(255, 0, 0));


ある程度自由度を高めるために引数が多くなっています。簡単に言えば(0,0)のところを半径1で回転しているものに調整して動かしている感じです。

f:id:yutateno:20191121232935g:plain