2012-04-15 5 views
2

C++과 cocos2d-x를 사용하여 등각 투영 게임을하기로 결정했습니다. 각 등각 타일은 X 및 Y 좌표를 가지며 타일 당 1 개씩 이동합니다. 이것은 타일을 화면 좌표로 변환하는 방법입니다.등각 투영 좌표 변환

cocos2d::CCPoint WorldPos::convertToScreen(){ 
    cocos2d::CCPoint posScreen;; 
    posScreen.x=(this->x)*(TILE_WIDTH/2) + (this->y)*-TILE_HEIGHT; 
    posScreen.y=(this->x)*(TILE_HEIGHT/2) + (this->y)*(TILE_HEIGHT/2); 

    return posScreen; 
} 

타일의 폭은 모두 40px이고 높이는 20px입니다.

이제이 세계 좌표 (등각 투영 좌표)를 화면 좌표로 다시 변환하는 함수가 필요합니다. 나는이 일을 알아낼 수 없습니다

WorldPos* WorldPos::convertToWorld(cocos2d::CCPoint &point) 

같은, 나는 모든 잘못을하고있는 중이 야 나는 위치가 diffirent 방법입니다 아니면 내가 알아낼 수 없습니다 계산의 어떤 종류가해야합니까?

+0

각각 WorldPos::x, WorldPos.y는 그냥 역 계산을한다. 너 그거 해봤 니? – Mat

+0

시도했지만 제대로 작동하도록 얻을 수 없습니다. 어떻게 반전이 같은 것을 계산할 것이라고? – Kurt

답변

0

시도 :

WorldPos WorldPos::convertToWorld(cocos2d::CCPoint &point) { 
    int x = (point.x + 2*point.y)/40; 
    int y = (2*point.y - point.x)/40; 
    return WorldPos(x, y); 
} 

논리 :

Px = 20*Wx - 20*Wy 
Py = 10*Wx + 10*Wy, thus 

Px + 2*Py = 40*Wx -> Wx = (Px + 2*Py)/40 
Px - 2*Py = -40*Wy -> Wy = (2*Py - Px)/40 

Px, Py, Wx, WyCCpoint::x, CCPoint::y,

관련 문제