风车模型与代码

这个模型使用NetLogo乌龟来重复绘制圆圈,定期转动,以便显示出类似万花筒或风车的效果。这是一个演示,展示了一组简单的代理规则如何产生复杂而美丽的图案。

内部工作原理非常简单。创建了许多乌龟,它们的笔都是放下的(无论它们走到哪里,都会留下痕迹)。在每个时刻,每只原始乌龟都会孵化出一只新的“绘画乌龟”,它的唯一工作就是画一个圆圈,然后立即死亡。在孵化之间,原始乌龟唯一要做的就是缓慢旋转。虽然模型内置了两种图案,但两种图案都遵循相同的规则,唯一的区别是PATTERN-2中一半的绘画乌龟逆时针画圆圈,而PATTERN-1中所有乌龟都顺时针画圆圈。

如何使用

NUM-TURTLES滑块实际上决定了万花筒的“臂”或“花瓣”的数量。首先将该滑块设置为所需值(10是可以的)。

接下来,将COLOR-SEP设置为某个值。 COLOR-SEP确定了乌龟(因此也是万花筒)将采用的颜色范围。值越高,范围越小。要获得一个漂亮的三色万花筒,将COLOR-SEP设置为25。COLOR-SEP与颜色范围之间的这种反比关系是因为COLOR-SEP充当一个常数,用来除以乌龟的颜色。

设置好NUM-TURTLES和COLOR-SEP后,按下SETUP按钮,准备好开始绘制模型。

然后,选择你想要的图案。每个图案都有自己的永久按钮来控制它。PATTERN-1让万花筒的“臂”都顺时针螺旋,而PATTERN-2让万花筒的“臂”顺时针和逆时针螺旋,产生了稍微复杂的设计。

最后,你可以改变这个模型展示的颜色分布。COLOR-SHIFT按钮将增加或减少乌龟使用的COLOR-SEP的值,这个值在内部保存为CURR-COLOR-SEP。因此滑块值本身并没有改变,但乌龟所查看的数字不断变化。这个数字会随机改变一小部分。INCREASE-COLOR?开关确定CURR-COLOR-SEP是增加(true)还是减少(false)。

你还有一个监视器CURR-COLOR-SEP,它会显示该变量的值,这样你就知道它已经被改变了,改变了多少。

代码

globals [ curr-color-sep ]   ; spread of the colors in the kaleidoscope

; INITIALIZATION PROCEDURES
to setup
  clear-all
  set-default-shape turtles "circle"
  ; the patterns assume evenly spaced turtles
  create-ordered-turtles num-turtles [ pen-down ]
  set curr-color-sep color-sep
  reset-ticks
end


; RUN-TIME PROCEDURES
; First Pattern
; Turn a bit right, hatch a turtle which draws a circle then dies
to pattern-1
  ask turtles [
    rt 1
    hatch 1 [
      set color 5.375 * ((count turtles - 1) / curr-color-sep) + 10
      right-circle
      die
    ]
  ]
  every 1 [ if color-shift? [ color-shift ] ]
  tick
end

; Second Pattern
; Half our turtles do Pattern 1; the other half do the same,
; except mirrored (they turn left circles)
to pattern-2
  ask turtles [
    ifelse (who mod 2) = 0 [
      rt 1
      hatch 1 [
        set color 5.375 * ((count turtles - 1) / curr-color-sep) + 10
        right-circle
        die
      ]
    ][
      lt 1
      hatch 1 [
        set color 5.375 * ((count turtles - 1) / curr-color-sep) + 10
        left-circle
        die
      ]
    ]
  ]
  every 1 [ if color-shift? [ color-shift ] ]
  tick
end

; Spin a circle, clockwise
to right-circle
  repeat 36 [
    fd 4
    rt 10
  ]
end

; Spin a circle, counterclockwise
to left-circle
  repeat 36 [
    fd 4
    lt 10
  ]
end

; Change curr-color-sep, to increase colors or decrease colors
; and cap the value at the bottom at 1 and at the top at 60
to color-shift
  ifelse increase-color? [
    set curr-color-sep curr-color-sep + random 3
    if curr-color-sep > 60 [ set curr-color-sep 60 ]
  ][
    set curr-color-sep curr-color-sep - random 3
    if curr-color-sep < 1 [ set curr-color-sep 1 ]
  ]
end


; Copyright 1998 Uri Wilensky.
; See Info tab for full copyright and license.

注意事项

首先,尝试玩耍并观察发生了什么。这个模型的目的是观看时能带来视觉上的愉悦。看看不同的NUM-TURTLES和COLOR-SEP值会产生什么样的效果,探索COLOR-SHIFT如何改变万花筒的外观。哪种效果对你来说最好呢?

这里需要注意的一件重要的事情是COUNT-TURTLES中的数字。它立即变得比NUM-TURTLES大得多,但很快就会定型成一个很大的数字。看看Procedures窗口。这里实际上有两个级别的乌龟命令。最初,在设置时,有NTURTLES数量的乌龟。一旦按下图案按钮之一,这些乌龟(组成了万花筒的“臂”)会重复孵化一个新的乌龟并转动一度。新孵化的乌龟开始绘制圆圈,完成后自毁。由于“臂”乌龟执行命令的速度比孵化的乌龟快得多,它们在一个圆圈的循环中会产生许多乌龟;然而,最终乌龟开始死亡。此时,出生的乌龟数量大致等于任何给定步骤中死亡的乌龟数量。

你还应该注意COLOR-SEP(或者实际上是CURR-COLOR-SEP)如何改变万花筒的外观。打开COLOR-SHIFT?,让CURR-COLOR-SEP变得非常大。然后看看它变小时会发生什么,也许是零或一些负数。

尝试

尝试在代码标签中更改代码。增加每只乌龟绘制的圆圈的大小,或者尝试改变每只乌龟转动的角度大小。

每个乌龟移动或转动一定量,那么让它移动一小段随机量呢(就像COLOR-SHIFT中对curr-color-sep的更改)。你可以添加多少随机性,而仍然保持某种整体结构?

扩展模型

每当“臂”乌龟孵化出一只乌龟时,它会开始绘制一个圆圈。更改hatch命令列表,使其绘制其他一些形状或图案。试着预测出会出现什么整体形状。

目前,两种图案的唯一区别是PATTERN-2让一半的“臂”乌龟画左边的圆圈,另一半画右边的圆圈。编写自己的图案--即,为这些乌龟编写一个新的命令或一组命令。

尝试编写一个完全新的类似模型。在当前模型中,乌龟从NTURTLES乌龟的中心核心中分裂出来。在你的新模型中,也许绘画的乌龟可以围绕某个固定(或移动)的点轨道运动,就像在StarLogoT模型N Bodies和Gravitation中一样。

NETLOGO功能

这很好地利用了乌龟原语hatch。每当孵化一只乌龟时,它会执行hatch命令后面的命令列表。在大多数情况下,这通常只是用来改变新乌龟的颜色或改变一些变量。但并没有理由它不能运行其他一些,可能是很长的,过程,这正是这里发生的事情。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/294092.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电子化学品,预计2025年会增长到4302亿美元

电子化学品市场是一个庞大的细分市场&#xff0c;它包括了广泛的化学品种类&#xff0c;如涂料、塑料、精细化学品、农药和医药等。这个市场的发展相当迅速&#xff0c;下面我们将从全球市场和中国市场两个方面对其发展趋势进行分析。全球市场分析&#xff1a; 从全球市场的角度…

【HBase】——优化

1 RowKey设计 重要&#xff1a;一条数据的唯一标识就是 rowkey&#xff0c;那么这条数据存储于哪个分区&#xff0c;取决于 rowkey 处于 哪个一个预分区的区间内&#xff0c;设计 rowkey的主要目的 &#xff0c;就是让数据均匀的分布于所有的 region 中&#xff0c;在一定程度…

Java重修第二天—学习”方法“

通过学习本篇文章可以掌握如下知识 1、方法的定义 2、方法在计算机中的执行流程。 3、方法使用时常见问题 4、Java中方法的参数传递机制 5、方法重载 1 方法是什么 方法是一种语法结构&#xff0c;它可以把一段代码实现的某种功能封装起来&#xff0c;以便重复利用。 方…

杰发科技AC7801——IO模拟IIC注意事项

7801的参考手册没有说清楚 7840说明了用开漏 使用办法

Java 支持表情包存储 Incorrect string value: ‘\\xF0\\x9F\\x98\\x8A\\xF0\\x9F...‘

一&#xff0c;前言 最近测试提出了一个比较刁钻的bug 在提交表单数据的时候&#xff0c;支持表情输入&#xff0c;如下 看了一下前端参数&#xff0c;也是正常传递 但是调用接口的时候&#xff0c;后端却报错 Cause: java.sql.SQLException: Incorrect string value: \\xF0…

梯度、散度、旋度

目录 梯度Gradient —— Scalar -> Vector 散度Divergence —— Vector -> Scalar 旋度Curl —— Vector -> Vector 梯度Gradient —— Scalar -> Vector 即函数在该点处沿着该方向&#xff08;此梯度的方向&#xff09;变化最快&#xff0c;变化率最大&#x…

绿色物流:跨境电商的可持续发展之路

随着跨境电商的迅猛发展&#xff0c;物流体系的可持续性问题引起了广泛关注。绿色物流作为一种可持续发展的解决方案&#xff0c;在实现商品流通的同时&#xff0c;致力于减少环境影响。本文将深入探讨跨境电商在绿色物流方面的挑战和可行性&#xff0c;探寻可持续发展的路径。…

爬虫网易易盾滑块案例:某乎

声明&#xff1a; 该文章为学习使用&#xff0c;严禁用于商业用途和非法用途&#xff0c;违者后果自负&#xff0c;由此产生的一切后果均与作者无关 一、滑块初步分析 js运行 atob(‘aHR0cHM6Ly93d3cuemhpaHUuY29tL3NpZ25pbg’) 拿到网址&#xff0c;浏览器打开网站&#xff0…

Go使用vscode开发,必备的插件及最常用快捷键和代码自动补全

一、vscode必备插件 1.Go、Code Runner 2.Markdown All in One、Markdown Preview Enhanced、Paste Image 为进行Markdown文档编写提供很多快捷键和自动补全功能&#xff0c;使vscode可以完全代替Typora。 边写边看到Markdown渲染之后的样子&#xff0c;在 Preview 界面按住鼠…

添加一个编辑的小功能(PHP的Laravel)

一个编辑的按钮可以弹出会话框修改断更天数 前台 加一个编辑按钮的样式&#xff0c;他的名字是固定好的 之前有人封装过直接用就好&#xff0c;但是一定放在class里面&#xff0c;不要放在id里面 看见不认识的方法一定要去看里面封装的是什么 之前就是没有看&#xff0c;所以…

透明OLED屏,应用范围极其广泛,看看您在的行业是否存在

随着科技的飞速发展&#xff0c;显示技术也在不断创新。其中&#xff0c;透明OLED屏作为一种新型显示技术&#xff0c;以其独特的透明特性和优秀的画质表现&#xff0c;正逐渐在各个领域崭露头角。作为一名在尼伽OLED透明屏部门&#xff0c;专注于OLED技术研发的工程师&#xf…

2024年软件测试行业如何发展呢?测试人该怎么办?

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、表面"衰落…

编译 nccl-tests 项目

1&#xff0c;编译 下载源代码 git clone --recursive https://github.com/NVIDIA/nccl-tests.git 编译源代码 cd nccl-tests/ make -j 2&#xff0c;运行 cd ./build/ ./all_reduce_perf --help ./all_reduce_perf -b 8 -e 256M -f 2 -g 4 效果图&#xff1a; 3&#…

BUG汇总

20240103 通用&#xff0c;驼峰命名法&#xff0c;mybatis。 mybatis入门程序中&#xff0c; // 获取对象的顺序为&#xff1a;SqlSessionFactoryBuild-》SqlSessionFactory-》SqlSessionSqlSessionFactoryBuilder sqlSessionFactoryBuilder new SqlSessionFactoryBuilder();I…

相机同步遇到的小问题

出现问题 在进行两个相机显示的时候&#xff0c;出现了相机显示不同步的情况&#xff0c;具体情况如下视频所示&#xff1a; 华睿/大华相机左右相机显示不同步 可以见到视频之中&#xff0c;右相机是比左相机更快一点的&#xff0c;但是有的时候就是同步的。我调用的代码是现成…

python scoket

import socket# 监听本机的IP和端口 sock socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.bind((10.10.10.170, 9000))sock.listen(10) while True:# 3.等待连接请求的申请&#xff0c;有人来连接&…

QC/PD快充电源产品MOS选型分析

• 原边650-700V SJ MOSFET采用低FOM值的ESM 技术&#xff0c;有利于提高系统效 率&#xff0c; 以及更佳的EAS和EMI等特性&#xff0c;对于一些不含PFC电路的系统更友好。 • 副边采用低FOM值的SGT同步整流电路&#xff0c;相比肖特基二极管整流能有更低的 损耗&#xff0c;有…

一网打尽所有主流平台的实时热榜

今日热榜 一网打尽所有主流平台的实时热榜https://tophub.today

电脑视频剪辑软件哪个好用

电脑视频剪辑软件是当今创作者不可或缺的工具之一&#xff0c;它们能够帮助我们在电脑上对视频进行编辑、剪辑、特效添加等操作&#xff0c;使我们的作品更加专业、精美。然而&#xff0c;在众多的视频剪辑软件中&#xff0c;该选择哪一个呢&#xff1f;本文将为你推荐2款非常好…

知虾电商(Shopee):东南亚领先电商平台的十大关键特点**

知虾电商&#xff08;Shopee&#xff09;作为东南亚地区领先的电子商务平台&#xff0c;由Sea Group&#xff08;前称Garena&#xff09;在2015年创立。知虾电商以移动优先的策略迅速崛起&#xff0c;为用户提供了一个便捷、安全的在线购物环境。以下是知虾电商的一些关键特点&…