안녕하세요 여러분, 회전 된 사각형 (2D)의 정점을 계산하려고합니다.회전 된 사각형의 정점 계산
직사각형이 회전되지 않았 으면 충분합니다. 그 부분을 알아낼 수 있습니다.
사각형이 회전 된 경우 꼭지점을 계산할 수있는 두 가지 방법이 있다고 생각했습니다. 1) 로컬/오브젝트/모델 공간 (아래에서 알아 낸 것들)에서 월드 공간으로 버텍스를 변환하는 방법을 찾아보십시오. 나는 솔직히 아무런 단서도없고, 그것이 최선의 방법이라면 나는 그것을 알아낼 수 있다면 많이 배울 것 같은 기분이 든다. ...
2) trig를 사용하여 어떻게 든 그 끝점을 알아 낸다. 직사각형은 월드 공간에서 직사각형의 위치에 상대적입니다. 이것은 내가 지금까지 해보려고했던 방식이었고, 나는 단지 방법을 알아 내지 못했습니다.
여기에, 어떤 도움void Rect::calculateVertices()
{
if(m_orientation == 0) // if no rotation
{
setVertices(
&Vertex((m_position.x - (m_width/2) * m_scaleX), (m_position.y + (m_height/2) * m_scaleY), m_position.z),
&Vertex((m_position.x + (m_width/2) * m_scaleX), (m_position.y + (m_height/2) * m_scaleY), m_position.z),
&Vertex((m_position.x + (m_width/2) * m_scaleX), (m_position.y - (m_height/2) * m_scaleY), m_position.z),
&Vertex((m_position.x - (m_width/2) * m_scaleX), (m_position.y - (m_height/2) * m_scaleY), m_position.z));
}
else
{
// if the rectangle has been rotated..
}
//GLfloat theta = RAD_TO_DEG(atan(((m_width/2) * m_scaleX)/((m_height/2) * m_scaleY)));
//LOG->writeLn(&theta);
}
+1에 근무중인 파이썬 (거북이) 코드 - 나는 다시 돌아가는 것을 선호하고 어떤 일을하는 것이 더 쉽습니다. –
회전 된 정점을 계산하기 전에'cos (t)'와'sin (t)'의 결과를 저장하면 2 trig 연산 만 수행하면됩니다. – jnylen
이 수식은 시계 방향으로 어떻게 회전합니까? –