Со времени прошлого поста я изменил технологии программирования и добавил несколько фич в модель, таких как ДНК.
Теперь вместо CPython + GTK я использую IronPython + WPF. Выбор в первую очередь был основан на том, что в IronPython реализуется действительная многопоточность, и при работе с этим интерпритатором очень удобно работать с gui.
Ну да не будем заморачиваться технологическими вопросами и перейдём к главному.
Описание модели
На 2D-поле имеются агенты (зеленые и красные) и пища (серая) (см. рис. 2.1).
Рис. 2.1 Общий вид
Агент способны перемещаться вперед\назад относительно текущего угла поворота и изменять его, т.е. поворачиваться по или против часовой стрелки. А значит, его действие в конкретный момент времени можно выразить в виде вектора в полярной системе координат.