2014-01-12 4 views
11

Ich habe Schildkröten bewegen über die Aussicht, und ich würde in der Lage sein zu folgen, wo sie gehen, indem sie hinter ihnen eine Spur hinterlassen, als ob sie Rauch als sie emittieren ging. Natürlich könnte ich den Turtle Pen (pen-down) benutzen, aber da es viele Schildkröten gibt, füllt sich der Blick schnell mit alten Trails. Die Lösung könnten Spuren sein, die nur für ein paar Ticks reichen, bevor sie sich auflösen. Aber ich weiß nicht, wie ich das erreichen soll.NetLogo Schildkröten verlassen eine Spur, die mit der Zeit verblasst

Um genauer zu sein: 1) Gibt es eine Technik, um die Linie nach einem pen-down Befehl allmählich über die Zeit von einigen Ticks verblassen zu lassen? 2) Wenn nicht, gibt es eine Möglichkeit, die mit dem Stift gezeichnete Linie ein paar Ticks nach dem Zeichnen zu entfernen? 3) Wenn nicht, gibt es eine andere Technik, die einen ähnlichen visuellen Effekt hat?

Antwort

6

Es gibt keine Möglichkeit, die Spuren in der Zeichnungsebene im Laufe der Zeit auszublenden. Wenn du Trails willst, die verblassen, musst du die Trails stattdessen mit Schildkröten darstellen.

Hier ist Beispielcode für „Kopf“ Schildkröten hat, die zehn-Schildkröte „Schwänze“ hinter ihnen nachlaufen:

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 

ich töten nur die alten Pfade geradezu, aber man könnte auch Code, der Blendungen hinzufügen ihre Farbe im Laufe der Zeit. (Ein Beispiel für ein Modell, das das ist, ist das Fire-Modell im Abschnitt Geowissenschaften der NetLogo-Modellbibliothek.)

+0

Ich glaube, Sie auch das Innere fragen Köpfe verwenden können: fragen pflaster hier [Sprout-Schwänze 1] – Marzy

+0

für Farbe, wenn Sie Schildkröte ‚s ursprüngliche Farbe weiß gesetzt, in jeder Bewegung, die Sie Farbe einstellen - 1 was einen verblassenden Effekt zeigt – Marzy

+1

Wenn man den Patch anfordert zu "spriessen", verliert der Schwanz die Überschrift und die genaue Xcor und Ycor, die "Luke" erhalten. –

4

Hier ist eine Version, die auf dem gleichen Prinzip wie die von @SethTisue basiert, aber die Schwänze verschwinden :

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 
2

Hier ist ein weiterer Ansatz, aber ohne zusätzliche Schildkröten. Ich nehme es aus Gründen der Vielfalt auf - ich würde Seths Ansatz zuerst empfehlen.

Bei diesem Ansatz behält jede Schildkröte eine Liste fester Länge von vorherigen Positionen und Überschriften und stempelt die letzte Position aus. Es gibt einige unerwünschte Artefakte bei diesem Ansatz und ist nicht so flexibel wie die Verwendung zusätzlicher Schildkröten, aber ich denke, dass es weniger Speicher benötigt, was bei größeren Modellen helfen kann.

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