나는 중심점을 중심으로 삼각형을 회전하려고합니다. 중간 점을 원점으로 변환 한 다음 회전하고 뒤쪽으로 번역해야하므로 OpenGL이 원점을 중심으로 회전한다는 것을 알고 있습니다. 나는 그것이 최소한 원점의 중심을 중심으로 회전하도록이 마지막 줄을 주석 처리했습니다. 그렇지 않습니다. 번역에도 불구하고 오래된 원점을 중심으로 회전하는 것처럼 보입니다 ... ccc4와 ccp는 수레를 생성합니다. 여기OpenGL에서 트라이앵글 회전
ccColor4B colors[] = {
ccc4(255, 0, 0, 255),
ccc4(0, 255, 0, 255),
ccc4(0, 0, 255, 255)
};
CGPoint vertices[] = {
ccp(0,0),
ccp(50,100),
ccp(100,0),
};
CGPoint middle[] = {ccp(50,50)};
CGPoint origin[] = {ccp(0,0)};
// Rotate the triangle
glPushMatrix();
glTranslatef(-50, -50, 0);
glRotatef(45, 0, 0, 1.0);
// glTranslatef(50, 50, 0);
// Draw the triangle
glLineWidth(2);
glVertexPointer(2, GL_FLOAT, 0, vertices);
glColorPointer(4, GL_UNSIGNED_BYTE, 0, colors);
glColor4ub(0, 0, 255, 255);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
// Revert rotation, we only want triangle to rotate
glPopMatrix();
// Draw the points
glDisableClientState(GL_COLOR_ARRAY);
glPointSize(5);
glColor4ub(255, 255, 255, 255);
glVertexPointer(2, GL_FLOAT, 0, middle);
glDrawArrays(GL_POINTS, 0, 1);
glPointSize(5);
glColor4ub(0, 255, 0, 255);
glVertexPointer(2, GL_FLOAT, 0, origin);
glDrawArrays(GL_POINTS, 0, 1);
glEnableClientState(GL_COLOR_ARRAY);
// End points
를 출력입니다 : 여기 내 코드는
이제 삼각형이 눈에 띄지 않게되었습니다. 나는 equilateral의 중심점에 대해 sqrt (3)/6을 계속 유지합니다 ... –
증명에 대한 링크가 있습니까? –
@AramKocharyan : 미안하지만, 내가 너에게 부랑자를 줬어. 그것은 삼각형의 높이입니다. 중심은 아닙니다. Vyktor의 설명에 따라 y 축에서 단지 1/3 인 중심입니다. –