https://youtu.be/NgJA5iPzXMU

▲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개를 넘겨주어 계산하는식을 수행하여 피킹하였습니다

+ Recent posts