2016-09-11 8 views
0

나는 오랜 시간 동안 아무런 결과없이 이것을 찾고 있었고, 약 1 주일 동안 + 수학을 계산하려고 노력 해왔다.C++ 로테이션 큐브 좌표 (무연)

제 목표는 OpenGL 회전 큐브 테두리 상자처럼 회전 큐브를 만드는 방식으로 커서 위치를 설정하는 것입니다.

OpenGL에는 회전 기능이 내장되어 있으므로 실제로 적응할 수있는 것이 아닙니다. 누구든지 내가 어떻게 생각하는지 궁금해합니다. 이 점이 무엇인지 궁금하다면, 생성 된 각 프레임 (큐브 회전 지점)에는 MsPaint에 그려진 내용을 지우는 기능이 있습니다. 그리고 다음 위치는 기본적으로 그려지는 회전 큐브를 만들기 위해 그리기를 시작합니다.

+0

지금은 확장 게시물을 작성하고 싶지는 않지만 https://en.wikipedia.org/wiki/Rotation_matrix를 참조하십시오. glm (OpenGL 수학) 라이브러리를 살펴볼 수도 있습니다. –

+0

이것은 분명하지 않습니다. 커서, 회전 큐브 및 MS 페인트 사이의 연결은 무엇입니까? 그리고 어떤 커서를 설정하려고합니까? – molbdnilo

+0

여기에서 시작할 수 있습니다 : https://en.wikipedia.org/wiki/Affine_transformation. –

답변

0

특수 라이브러리의 도움없이 C에서 큐브를 회전하려고하면 매트릭스 작업을 사용하여 좌표를 변환해야합니다. 당신은 roatation 행렬을 얻을 sohuld

  1. 당신은 당신의 좌표 벡터에 M를 곱해야한다 (의이 M를 부르 자) - 결과가 새로운 좌표입니다.

    |cos f +-sin f| |x| |x'| 
    |    | | | = | | 
    |+-sin f cos f| |y| |y'| 
    

    는 3D 회전을 위해, 당신은 3 × 3 marix를 사용해야합니다 : 2D 회전, 예를 들어

(- - 회전 각도, + F는 회전 방향입니다). (x 축 중심으로 회전)

MX : 당신이 축을 회전한다에서도 연산자, 그것에 따라 당신은 매트릭스 M을 선택해야

|1  0  0 ||x| |x'| 
|0 cos f -sin f||y| = |y'|      
|0 sin f cos f||z| |z'| 

(y 축 중심으로 회전) :

|cos f  0  sin f ||x| |x'| 
| 0   1  0  ||y| = |y'|      
|-sin f  0  cos f ||z| |z'| 

에서 Mz (Z 축 주위의 회전)

,536,
| cos f -sin f 0 ||x| |x'| 
| sin f cos f  0 ||y| = |y'|      
| 0  0  1 ||z| |z'|