风车模型与代码

这个模型使用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 setupclear-allset-default-shape turtles "circle"; the patterns assume evenly spaced turtlescreate-ordered-turtles num-turtles [ pen-down ]set curr-color-sep color-sepreset-ticks
end; RUN-TIME PROCEDURES
; First Pattern
; Turn a bit right, hatch a turtle which draws a circle then dies
to pattern-1ask turtles [rt 1hatch 1 [set color 5.375 * ((count turtles - 1) / curr-color-sep) + 10right-circledie]]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-2ask turtles [ifelse (who mod 2) = 0 [rt 1hatch 1 [set color 5.375 * ((count turtles - 1) / curr-color-sep) + 10right-circledie]][lt 1hatch 1 [set color 5.375 * ((count turtles - 1) / curr-color-sep) + 10left-circledie]]]every 1 [ if color-shift? [ color-shift ] ]tick
end; Spin a circle, clockwise
to right-circlerepeat 36 [fd 4rt 10]
end; Spin a circle, counterclockwise
to left-circlerepeat 36 [fd 4lt 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-shiftifelse increase-color? [set curr-color-sep curr-color-sep + random 3if curr-color-sep > 60 [ set curr-color-sep 60 ]][set curr-color-sep curr-color-sep - random 3if 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命令后面的命令列表。在大多数情况下,这通常只是用来改变新乌龟的颜色或改变一些变量。但并没有理由它不能运行其他一些,可能是很长的,过程,这正是这里发生的事情。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

独立站的移动端优化:确保网站在手机和平板设备上具有良好的用户体验和交互效果

独立站的移动端优化是至关重要的&#xff0c;因为越来越多的用户通过手机和平板设备访问网站。为了确保在移动设备上具备良好的用户体验和交互效果&#xff0c;以下是一些建议&#xff1a; 响应式设计&#xff1a;使用响应式网页设计&#xff0c;使网站能够根据不同的设备屏幕…

进程是什么样子

你心中的进程长什么样子 进程是一个执行的过程。 1.进程的组成 1.1 进程控制块&#xff08;PCB&#xff09;&#xff1a;是进程存在的唯一标识&#xff0c;是进程的灵魂 1.2 进程实体&#xff1a;程序、程序要处理的数据集合。 2.进程控制块 3.进程的调度状态

透明触摸屏展示柜的安装,需要注意什么

透明触摸屏展示柜的安装需要注意以下几个方面&#xff1a; 确定安装位置&#xff1a;选择一个合适的位置&#xff0c;确保展示柜的摆放位置合理&#xff0c;便于观看和管理。同时&#xff0c;要考虑到电源和信号线的连接&#xff0c;以及展示柜与周围环境的协调性。 检查透明触…

当试图回复传入消息时,消息应用程序会闪烁

问题描述&#xff1a; Actual Results: Unable to reply for incoming message as Messaging app flickers and closes. Expected Results: User should be able to send reply for incoming messages. Reproduction Steps: Stay in home screen. Receive an incoming mes…

5年经验之谈 —— 探索自动化测试用例设计粒度!

自动化测试用例的粒度指的是测试用例的细致程度&#xff0c;即每个测试用例检查的功能点的数量和范围。 通常&#xff0c;根据测试用例的粒度&#xff0c;可以被分为3种不同的层次&#xff0c;从更低层次的细粒度到更高层次的粗粒度。 第一种&#xff1a;单元测试 - 细粒度 单…

最常用的自动化测试框架汇总

在开始学习python自动化测试之前&#xff0c;先了解目前市场上的自动化测试框架有哪些&#xff1f; 随着技术的不断迭代更新&#xff0c;优胜劣汰也同样发展下来。从一开始工具型自动化&#xff0c;到现在的框架型&#xff1b;从一开始的能用&#xff0c;到现在的不仅能用&…

go构建项目与打包

环境搭建 使用的组件及版本 operator-sdk v1.22.0go 1.20.0 linux/amd64git 1.8.3.1k8s 1.18.5docker 20.10.5 前期配置 安装Git yum install git安装docker yum install docker-ce安装go 官网下载 tar -C /usr/local/ -xvf go1.20.linux-amd64.tar.gz 环境配置 // 将go配置…

手机卡丢了不要急,全新补卡攻略赶紧收藏!

最近收到一些小伙伴的留言&#xff0c;手机卡办了好几张&#xff0c;所以就出现了手机卡丢失的现象。手机卡丢失补办更是让一些小伙伴们摸不着头脑。怎么补&#xff1f;如何补&#xff1f;需要哪些资料等等一系列的问题&#xff0c;让许多小伙伴都无从下手。今天小编就给大家整…

内网穿透的应用-使用Docker本地部署可编辑导航页结合内网穿透实现远程访问

文章目录 1. 使用Docker搜索镜像2. 下载镜像3. 查看镜像4. 启动容器5. 浏览器访问6. 远程访问6.1 内网穿透工具安装6.2 创建远程连接公网地址6.3 使用固定二级子域名地址远程访问 今天和大家分享如何使用Docker本地部署一个开源的简约风格网址导航页&#xff0c;支持五种搜索引…

Selenuim实现自动登录社交媒体账号和自动发布文章

在当今社交媒体盛行的时代&#xff0c;程序员们经常需要在不同的平台上自动执行一些任务&#xff0c;比如登录社交媒体账号并发布文章。本文将介绍如何利用Selenium浏览器自动化框架实现这一任务&#xff0c;同时结合万媒易发多平台内容同步助手&#xff0c;提高文章发布的效率…

矢量,矢量化的梯度下降以及多元线性回归

一、矢量 定义&#xff1a;按照特定顺序排列的元素集合。可以被视为一维数组。 在机器学习中的作用&#xff1a; 特征表示&#xff1a;在机器学习任务中&#xff0c;输入数据通常以矢量的形式表示。例如&#xff0c;图像可以表示为像素值的矢量&#xff0c;文本可以表示为词…

TinyTu-跨平台图片压缩软件

我平时压缩图片通常会使用类似tinify这样的在线图片压缩网站&#xff0c;这些网站有很多&#xff0c;但使用起来总是感觉不太舒爽&#xff0c;似乎差了点什么&#xff0c;仔细想想它们或多或少有这些缺点&#xff1a; 有的网站需要收费或者半收费。支持图片格式不全&#xff0…