Netlogo была черепахи, оставляя след, который исчезает со временем

pen-down), но поскольку черепах много, вид быстро заполняется старыми тропами. Решением могут быть следы, которые длятся всего несколько тиков, прежде чем они рассеются. Но я не знаю, как этого добиться.

чтобы быть более конкретным: 1) есть техника проведения линии, проведенной послеpen-down команда постепенно исчезает в течение периода некоторых тиков? 2) Если нет, есть ли способ удалить линию, нарисованную с помощью пера через несколько тиков после того, как она была нарисована? 3) Если нет, есть ли какая-то другая техника, которая имела бы аналогичный визуальный эффект?

3 ответов


С течением времени следы в слое чертежа не исчезают. Если вы хотите тропы, которые исчезают, вам нужно будет представить тропы, используя черепах вместо этого.

вот пример кода для черепах с "головой", которые следуют за десятью "хвостами" черепах:

breed [heads head]
breed [tails tail]
tails-own [age]

to setup
  clear-all
  set-default-shape tails "line"
  create-heads 5
  reset-ticks
end

to go
  ask tails [
    set age age + 1
    if age = 10 [ die ]
  ]
  ask heads [
    hatch-tails 1
    fd 1
    rt random 10
    lt random 10
  ]
  tick
end

Я просто убиваю старые тропы прямо, но вы также можете добавить код, который со временем выцветает. (Примером модели, которая делает это, является модель огня в разделе науки о Земле Модели Netlogo Была Библиотека.)


вот версия, основанная на том же принципе, что и @SethTisue, но хвосты исчезают:

globals [ tail-fade-rate ]
breed [heads head]    ; turtles that move at random
breed [tails tail]    ; segments of tail that follow the path of the head

to setup
  clear-all              ;; assume that the patches are black
  set-default-shape tails "line"
  set tail-fade-rate 0.3 ;; this would be better set by a slider on the interface
  create-heads 5
  reset-ticks
end

to go
  ask tails [
    set color color - tail-fade-rate ;; make tail color darker
    if color mod 10 < 1  [ die ]     ;; die if we are almost at black
  ]
  ask heads [
    hatch-tails 1        
    fd 1
    rt random 10
    lt random 10
  ]
  tick
end

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

в этом подходе каждая черепаха сохраняет список фиксированной длины предыдущих местоположений и заголовков и штампует последнюю позицию. Есть некоторые нежелательные артефакты с таким подходом и не так гибки, как использование дополнительных черепах, но я думаю, что он использует меньше памяти, которая может помочь на больших моделях.

turtles-own [tail]

to setup
  ca
  crt 5 [set tail n-values 10 [(list xcor ycor heading)] ] 
end

to go
  ask turtles [
    rt random 90 - 45 fd 1
    stamp

    ; put current position and heading on head of tail
    set tail fput (list xcor ycor heading) but-last tail

    ; move to end of tail and stamp the pcolor there
    let temp-color color
    setxy (item 0 last tail) (item 1 last tail)
    set heading (item 2 last tail)
    set color pcolor set size 1.5   stamp

    ; move back to head of tail and restore color, size and heading
    setxy (item 0 first tail) (item 1 first tail) 
    set heading item 2 first tail
    set size 1  set color temp-color
    ]
end