2013-07-08 4 views
-1

원의 4 분의 1을 모두 따로 따로 원하지만 내 창 설정의 경우 원점은 왼쪽 상단 (0, 0)에 그립니다. 어쨌든 이 아닌으로 돌아갈 수 있습니까? 난 그냥 위의 그림을 만들기 위해 (270) 360에서 회전을 시작하면원의 드로잉 사분면

//nX: x 
//nY: y 
//nR: radius 
//verts: std::vector<int> 
//indices: std::vector<uint32_t> 

verts.push_back(nX + nR); verts.push_back(nY + nR); 
for (int i = 270; i >= 360; i -= slice_count) 
{ 
    verts.push_back(nX + cos(DEG_TO_RAD * i) * nR); 
    verts.push_back(nY + sin(DEG_TO_RAD * i) * nR); 
} 


//... 
//rest of the code are index manipulation 

glDrawElements(GL_TRIANGLE_STRIP, indices.size(), GL_UNSIGNED_INT, &indices[0]); 

이것은 단지 그것은 나를 혼란

| - 
|  - 
|  - 
|   - 
|    - 
|    - 
|    - 
|     - 
|     - 
|     - 
|____________________ 

을 그릴 것입니다 :

내 현재의 구현이입니다. 내 혼란을 덜어주기 위해 어떤 방법을 제안 할 수 있습니까? 또한 논리적으로 올바르지 않습니다.


여기에 제가 작성한 새로운 테스트 코드가 있습니다.

glBegin(GL_TRIANGLE_FAN); 
    glVertex2i(500, 400); 
    for (int i = 360; i >= 270; --i) 
    { 
     int ax = (500 + cos(DEG_TO_RAD * i) * 100); 
     int ay = (400 + sin(DEG_TO_RAD * i) * 100); 
     glVertex2i(ax, -ay); 
    } 
glEnd(); 

답변

1

음, (0, 0)가 왼쪽 상단 화면의 (보통 수학 표현과 일치) 오른쪽으로 양의 X를 만드는에서,하지만 (양의 Y 아래쪽으로 갈 수 있다는 사실 이는 일반적인 수학 표현과 일치하지 않습니다. 0º-90º 구면 사분면이 오른쪽 상단에 놓이는 일반적인 함수 그리기 수학 함수를 모방하려면 Y 좌표를 반전시킬 수 있습니다. 즉

, 시도 : 그것은 작동하지 않습니다

verts.push_back(nY - (sin(DEG_TO_RAD * i) * nR)); 
+0

? 방금 버텍스 콜 방식으로 시도했습니다. – mr5

+0

mmm 코드 조각으로 볼 수없는 구현 세부 사항이있을 수 있습니다. 이론적으로 그렇게한다면 Y 좌표가 바뀌어야합니다. 효과가 있다면 0과 90으로 전환해도 여전히 같은 그림을 볼 수 있습니다. – h4lc0n

+0

w8 내 게시물에 코드를 추가합니다. 새로운 하나 – mr5