Init()

점 찍기

점 기준으로 세팅을 해줘야 한다.

왜냐하면 만약 위치 값까지 잡혀있다면 자전이 아닌 공전이 나오기 때문이다. 

// 좌상단 
m_vP[0] = { -m_tInfo.vSize.x * 0.5f, -m_tInfo.vSize.y * 0.5f, 0.f };

// 우 상단
m_vP[1] = { m_tInfo.vSize.x * 0.5f, -m_tInfo.vSize.y * 0.5f, 0.f };

// 우하단 
m_vP[2] = { m_tInfo.vSize.x * 0.5f, m_tInfo.vSize.y * 0.5f, 0.f };

// 좌하단
m_vP[3] = { -m_tInfo.vSize.x * 0.5f, m_tInfo.vSize.y * 0.5f, 0.f };

 

회전 행렬 공식

Q.x = X * cos@ - Y * sin@; 
Q.y = X * sin@ + Y * cos@;

 

 

Update()

회전 행렬 적용

for (int i = 0 ; i < 4 ; ++i)
{	
	m_vQ[i].x = m_vP[i].x * cosf(D3DXToRadian(m_fAngle)) - m_vP[i].y * -sinf(D3DXToRadian(m_fAngle)); 
	m_vQ[i].y = m_vP[i].x * -sinf(D3DXToRadian(m_fAngle)) + m_vP[i].y * cosf(D3DXToRadian(m_fAngle)); 
	m_vQ[i] += m_tInfo.vPos; 
}

 

Render()

사각형 그리기

MoveToEx(hDC, m_vQ[0].x, m_vQ[0].y, nullptr); 

for (int i = 1; i < 4;++i )
	LineTo(hDC, m_vQ[i].x, m_vQ[i].y); 
    
LineTo(hDC, m_vQ[0].x, m_vQ[0].y);

+ Recent posts