I (원점이 왼쪽 상단 구석에 있고, 이것은 모든 직교 모드이고, x는 오른쪽에 긍정적이고, Y는 Y 축 아래쪽 양수) 월드 공간에서 회전 m_rotation (도)을 가질 수있는 직사각형을가집니다.
사각형으로 잘 작업 할 수 있고, 회전하고, 크기를 조절하고, 원하는 모든 작업을 수행 할 수 있습니다.
정말 혼란스러워지는 부분은 로컬 좌표에서 직사각형 좌표를 계산하는 것입니다. ,
//GLfloat Ax = getLocalVertices()[BOTTOM_LEFT].x * cosf(DEG_TO_RAD(m_orientation)) - getLocalVertices()[BOTTOM_LEFT].y * sinf(DEG_TO_RAD(m_orientation));
//GLfloat Ay = getLocalVertices()[BOTTOM_LEFT].x * sinf(DEG_TO_RAD(m_orientation)) + getLocalVertices()[BOTTOM_LEFT].y * cosf(DEG_TO_RAD(m_orientation));
//Vector3D BL = Vector3D(Ax,Ay,0);
내가 번역 된 점에 벡터를 만들려면 사각형에 저장 :
x' = x*cos(t) - y*sin(t)
y' = x*sin(t) + y*cos(t)
where (x, y) are the original points,
(x', y') are the rotated coordinates,
and t is the angle measured in radians
from the x-axis. The rotation is
counter-clockwise as written.
-credits duffymo
이 같은 공식을 구현하는 시도 : 나는 공식을 사용하려고했습니다
world_vertice 멤버 변수. 괜찮아. 그러나, 내 주요 그리기 루프에서 벡터 BL, (0,0,0)에서 선을 그릴 및 선이 사각형 (지점 왼쪽 된 아래 구석에있는 지점에서 원으로 갈 것처럼 보인다) 세계 좌표의 기원을 중심으로
기본적으로 m_orientation이 커지면 (0,0,0) 세계 좌표계에서 큰 원이 그려집니다. 편집 : m_orientation = 360, 그것은 0
나는이 부분의 잘못을하고있는 중이 야 기분으로 다시 설정됩니다 때
t는 x 축에서 라디안 에서 측정 된 각도입니다.
아마도이 공식에서 m_orientation (직사각형 회전 각도)을 사용하지 않아도 될까요?
감사합니다.
편집 :이 작업을 수행하는 이유는 충돌 감지입니다. 직사각형의 좌표 (곧 강체가 될 좌표)가 충돌 감지를 위해 세계 좌표 장소에 있는지 알아야합니다. 당신이 무엇
감사합니다. 나는 오늘 밤에 나중에 이것에 대해 연구 할 것이다! :) –
OpenGL은 선형 대수 연산이 아닌 그래픽을 처리합니다. 그가 충돌 탐지를 위해 변형 된 좌표를 필요로한다면, 그것은 내 의견으로는 나쁜 조언이다. 그러나 좋은 설명을 위해 +1. OpenGL을 사용하여 실제 렌더링하는 동안 메쉬를 변형하는 경우 Z 축을 중심으로 회전해야합니다. –