2012-10-03 2 views
0

다음은 현재 사용중인 코드입니다.2d 회전 opengl

#define ANGLETORADIANS 0.017453292519943295769236907684886f // PI/180 
#define RADIANSTOANGLE 57.295779513082320876798154814105f // 180/PI 

rotation = rotation *ANGLETORADIANS; 

cosRotation = cos(rotation); 
sinRotation = sin(rotation); 

for(int i = 0; i < 3; i++) 
{ 
    px[i] = (vec[i].x + centerX) * (cosRotation - (vec[i].y + centerY)) * sinRotation; 
    py[i] = (vec[i].x + centerX) * (sinRotation + (vec[i].y + centerY)) * cosRotation; 
    printf("num: %i, px: %f, py: %f\n", i, px[i], py[i]); 
} 

지금까지 내가 당신에 대해 X = 0, Y = 1.25 흉내를 볼 수 있지만 내가해야 45 회전 X = 1, Y = 1의 값을 입력 말 .. 내 Y 값이 fliped되고 솔기 x = 0 y = -1.25를 얻는다.

또한 내 90도 회전은 항상 내가 단지 내 값을 중심으로 그들이 어디에서 왔는지를 다시 넣어 않을거야 알고 X = 0, Y = 0

p.s을 반환합니다. 내가 알 필요가있는 모든 것들이 내가 지금 얻고있는 가치이기 때문에 그들을 되돌릴 필요가 없다.

+0

제대로 코드 포맷을 시도 할 수 있어야한다? 그것을 읽으려고 애쓰는 그 고통 – SinisterMJ

+0

@AntonRoth 예, 미안하다, 나는 그것을 시험해보고 있었다. 이미 다른 사람이 그것을 고쳤습니다. 나는 또한 불편을 끼쳐 드려 죄송합니다. –

+0

가장 쉬운 방법은 편집기에 {}이 (가)있는 필드가 있습니다. 코드를 표시하고 해당 버튼을 누릅니다. -> 코드 세그먼트가 있습니다. – SinisterMJ

답변

2

브라켓 배치가 나에게 맞지 않습니다. 내가 기대하는 바 :

px[i] = (vec[i].x + centerX) * cosRotation - (vec[i].y + centerY) * sinRotation; 
py[i] = (vec[i].x + centerX) * sinRotation + (vec[i].y + centerY) * cosRotation; 
+0

고마워요, 일할 솔기가 있습니다 : 3 –

1

대괄호가 잘못되었습니다. 그것은

px[i] = ((vec[i].x + centerX) * cosRotation) - ((vec[i].y + centerY) * sinRotation); 
py[i] = ((vec[i].x + centerX) * sinRotation) + ((vec[i].y + centerY) * cosRotation); 

대신

+0

예. 이전 일꾼과 다소 비슷합니다. 고맙습니다. –

+0

나는 우리가 기본적으로 동시에 대답했다는 것을 안다. 마지막에 "대신"을 쓰고있을 때 다른 답변이 게시되었다고 했으므로 두 답변은 서로 몇 초 내에있었습니다. – SinisterMJ