- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
// функция квадрата расстояния на гексагональном поле
Fixed SDist2 (Fixed dx, Fixed dy)
{
return (dx*dx+dy*dy+dx*dy);
}
// а теперь типа находим ближайшее целое, ближайшее в гексагональном смысле
const Fixed rx = int(rtx), ry = int(rty);
const Fixed
d00 = SDist2(rx -rtx, ry -rty),
d10 = SDist2(rx+fx1-rtx, ry -rty),
d01 = SDist2(rx -rtx, ry+fx1-rty),
d11 = SDist2(rx+fx1-rtx, ry+fx1-rty);
int x,y;
if (d00<d10 && d00<d01 && d00<d11)
{
x=int(rx); y=int(ry);
} else if (d10<d01 && d10<d11)
{
x=int(rx)+1; y=int(ry);
} else if (d01<d11)
{
x=int(rx); y=int(ry)+1;
} else
{
x=int(rx)+1; y=int(ry)+1;
}
для таких как я - которые "сток" считают index-страницей
А ещё на говнотубе так само делается.
Не напоминай мне о super hexagon...