일반적인 아이소 매트릭 구현방식.
MoveToEx와 LineTo를 이용하여, Rectangle을 그린 다음, 각 변의 중앙을 연결하는 방식으로 그림.
하나의 Rectangle를 그린 후, 다음 사각형을 그리기도 힘들 뿐더러, 매우 복잡한 방식으로 진행됨.
[일반적인 iso metrix구현 방식 (총 2번의 MoveToEX와 8번의 LineTo를 이용하여 작업하게 된다.)]
Pivot을 지정후 아이소 매트릭 구현방식.
우선적으로 지정된 pivot으로 부터 offset되어 rectangle의 Volume을 결정할 POINT자료형 변수를 이용하여, rectangle의 Volume을 먼저 설정함.
(그려질 rectangle의 크기를 우선적으로 결정해야 함)
POINT자료형 변수 pivot을 이용하여, 사각형이 배치될 위치를 지정함.
(이때 rectangle의 volume을 감안하여 간격을 조절하도록 함.)
pivot으로 부터의 지정된 x만큼의 거리와, y만큼의 거리만으로 아이소가 제작 가능.
[pivot이라는 기준과, offset이라는 기준이 정해져 있기 때문에, 외각 rectangle은 rectangle함수로 제작하며,
내부의 마름모꼴만 LineTo로 제작 가능]
그리고 개인적으로 RECT자료형 구조체 변수에 다음과 같이 설정해 놓고 사용중이다.
|
rect.left |
= |
pivot.x - offset.x; |
|
rect.top |
= |
pivot.y - offset.y; |
|
rect.right |
= |
pivot.y - offset.y; |
|
rect.bottom |
= |
pivot.y - offset.y; |
[Syntax]
tile.rec.left = tile.pivot.x - tile.offset.x;
tile.rec.right = tile.pivot.x + tile.offset.x;
tile.rec.top = tile.pivot.y - tile.offset.y;
tile.rec.bottom = tile.pivot.y + tile.offset.y;
MoveToEx(getMemDC(),tile.rec.left, tile.pivot.y, NULL);
LineTo(getMemDC(), tile.pivot.x, tile.rec.top);
LineTo(getMemDC(), tile.rec.right, tile.pivot.y);
LineTo(getMemDC(), tile.pivot.x, tile.rec.bottom);
LineTo(getMemDC(), tile.rec.left, tile.pivot.y);
picking까지 성공
내친김에 6각형도 성공 :D
'WORK DIARY' 카테고리의 다른 글
| [WIN API] 4일차. hive tile 완성 & 문제 발견 (0) | 2015.04.15 |
|---|---|
| [WIN API] 3일차. Dreg & Drop으로 타일의 level 조절등 대규모 업데이트 (0) | 2015.03.27 |
| [WIN API] 3일차. 현재 보유중인 스프라이트시트를 활용하기위해서는.... (0) | 2015.03.24 |
| [WIN API] 2일차. 아이소 매트릭 문제 발생 (0) | 2015.03.24 |
두점간의 거리 구하는 공식
수학적 공식은 다음과 같다.
√ ( x2 - x1 )² + ( y2 - y1 )²
CODE식은 다음과 같다.
'Syntex' 카테고리의 다른 글
| [WIN API] 3항연산자. (0) | 2015.03.10 |
|---|
3항 연산자.
해당 조건을 충족시키면, A를 아니면 B를 대입시킨다.
if문을 이용한 방식
EX) a가 b보다 작으면 C에 D를 대입, 아니면 E를 대입
{
C = D
}
else
{
C = E
}
3항 연산자를 이용시 다음과 같다.
[해석]
C = (조건) ? 조건이 맞으면 이것 : 아니면 이것;
'Syntex' 카테고리의 다른 글
| [WIN API] 두 점간의 거리 구하는 공식(선분간 거리) (0) | 2015.03.11 |
|---|


