▲2019년 3월 20일 제작, 아이소매트릭 간이맵툴
기울기를 조금 더 기울여서 2:1비율을 맞추었으면 조금 더 3D느낌이 나지 않았을까 생각해봅니다.
아이소매트릭에 대한 이해, 마름모 피킹에 대한 이해도, 카메라 컬링에 대한 이해도가 필요합니다.
▲ 사각형이 실제 존재하는 위치와 카메라에 보이는 위치는 다릅니다.
보정은 매크로 함수를 통해 카메라 상대좌표를 빼는 방식으로 진행하였습니다.
▲ 일반 그리드 방식 사각형 피킹과는 달리 아이소매트릭은 다른 접근을 요구합니다.
ptInRegion 함수를 사용해도 되지만, 저는 일차방정식을 이용해 주어진 평행한 선 2개 사이에 점이 존재하는가를
계산하는 방식을 채택하여 피킹하였습니다.
bool BetweenParallelLine(POINT pt, FLOAT x1, FLOAT y1, FLOAT x2, FLOAT y2, FLOAT x3, FLOAT y3, FLOAT x4, FLOAT y4)
{
float a = (y1 - y2) / (x1 - x2);
float b1 = y1 + a * x1;
float b2 = y3 + a * x3;
float b3 = (float)pt.y + a * (float)pt.x;
return (b3 > b1 && b3 < b2);
}
▲간단한 일차방정식을 코드로 옮겼습니다.
마름모는 평행한 선 두 쌍이 이루어져서 만들어지므로, 선분 2개를 넘겨주어 계산하는식을 수행하여 피킹하였습니다
'결과물 > C,C++ Windows API' 카테고리의 다른 글
WinAPI - 일주일 팀 포트폴리오, Adventure of Pip (1) | 2020.06.23 |
---|---|
WinAPI - 일주일 개인 포트폴리오 (0) | 2020.06.23 |
WinAPI - 픽셀충돌, 포트리스 (0) | 2020.06.22 |
WinAPI - 메가맨 연습 (0) | 2020.06.22 |
WinAPI - 카메라 적용 예제 (0) | 2020.06.22 |