1. C++ / Говнокод #15519

    +6

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 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;
    			}

    изящно не получилось

    Запостил: TarasB, 18 Марта 2014

    Комментарии (22) RSS

    Добавить комментарий