Может ли патч в логотипе net иметь два цвета, и один из них иногда скрыт?

#netlogo

#netlogo

Вопрос:

Я выращиваю дерево в net logo, мне нужно реализовать скрытый ствол. Но как я могу назначить патчу цвет ствола, когда нет листа, а иногда он скрыт за листьями и показывает цвет листа?

Когда мы стоим перед деревом, мы иногда не можем видеть верхнюю часть ствола из-за листьев. Это то, что я сейчас собираюсь смоделировать.

Комментарии:

1. Цвет патча задается переменной pcolor . Вы можете просто ask установить цвет патча на основе любых условий, которые вы используете, чтобы судить, видна ли магистраль.

Ответ №1:

Возможно, это не тот ответ, который вы надеялись получить, но он может быть тем, который поможет вам больше всего в долгосрочной перспективе:

Листья дерева не должны быть представлены патчами. Они должны быть представлены черепахами.

Если вы используете turtles, вы получаете свойство «скрывать то, что позади» бесплатно, но это всего лишь одна из причин использования turtles.

Новички NetLogo склонны прибегать к патчам в качестве «готовых» средств, потому что они кажутся более простыми в использовании, но это ловушка. Черепашки намного более гибкие, и в долгосрочной перспективе их использование окупается, даже если вы не собираетесь их перемещать.

Несколько примеров:

  • Патчи — это просто цветные квадраты, но черепашки могут быть любой формы, которую вы хотите, что обычно выглядит приятнее. В вашем случае вы могли бы использовать "leaf" форму, которая поставляется с NetLogo.
  • Черепахи могут быть разных пород. Даже если вы планируете использовать только одну породу черепах, это делает ваш код более читаемым, а также более гибким.
  • У вас не может быть ссылок между патчами, но у вас могут быть ссылки между черепашками. Даже если ваша модель явно не является сетевой моделью, ссылки NetLogo являются удивительно полезным способом представления отношений между агентами.
  • Черепах можно создавать и убивать. Часто это гораздо лучший подход, чем пытаться изменить состояние патча, чтобы отразить тот факт, есть там что-то или нет. Это относится непосредственно к вашей проблеме: вместо изменения цвета патча, чтобы сигнализировать о том, что на нем есть лист, просто попросите свой патч сделать это sprout-leaves 1 .

Так что сделайте себе одолжение и начните свою модель с:

 breed [ leaves leaf ]

to setup
  clear-all
  set-default-shape leaves "leaf"
  ; ...
  reset-ticks
end
  

Вы сделаете свою собственную жизнь намного проще.