Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

3냥 집사이면서 게임 개발자입니다.

극좌표계 (실습) 본문

게임 수학

극좌표계 (실습)

훙이야 2025. 1. 3. 16:56
// 렌더링 로직을 담당하는 함수
void SoftRenderer::Render2D()
{
	...

	float sin = 0.f, cos = 0.f;
	Math::GetSinCos(sin, cos, currentDegree);

	// 현재 화면의 크기로부터 길이를 비교할 기준양 정하기
	static float maxLength = Vector2(_ScreenSize.X, _ScreenSize.Y).Size() * 0.5f;


	// 원을 구성하는 점 그리기
	HSVColor hsv(0.f, 1.f, 0.85f);
	for (auto const& v : squares)
	{
		// 극좌표계로 변경
		Vector2 polarV = v.ToPolarCoordinate();

		// 극좌표계의 각 정보로부터 색상을 결정한다.
		if (polarV.Y < 0.f)
		{
			polarV.Y += Math::TwoPI;
		}
		hsv.H = polarV.Y / Math::TwoPI;

		// 극좌표계의 크기 정보로부터 회전량을 결정한다.
		float ratio = polarV.X / maxLength;
		float weight = Math::Lerp(1.f, 5.f, ratio);

		// 극좌표계를 사용해 회전을 부여한다.
		polarV.Y += Math::Deg2Rad(currentDegree) * weight;

		// 최종 값을 데카르트 좌표계로 변환한다.
		Vector2 cartesianV = polarV.ToCartesianCoordinate();
		r.DrawPoint(cartesianV, hsv.ToLinearColor());
	}

	// 현재 각도를 화면에 출력
	r.PushStatisticText(std::string("Degree : ") + std::to_string(currentDegree));
}

 

정사각형의 형태를 가지는 벡터의 묶음을 Home키를 눌렀을 때 모든 벡터에 회전시키는 작업을 수행한다. 

좀 더 과장된 효과를 보여주기 위해서 중심에서 멀어지는 점들에 더 많은 회전량을 부여한다.

 

 

'게임 수학' 카테고리의 다른 글

극좌표계  (0) 2025.01.03
삼각 함수의 역함수  (0) 2025.01.03
삼각함수를 활용한 물체의 회전 (실습)  (0) 2024.11.29
삼각 함수를 활용한 물체의 회전(개념)  (0) 2024.11.29
삼각함수(실습)  (0) 2024.11.29