分享

Rhino下实现物理实验传感测量的视觉表达

 新用户5228KeDY 2024-07-14 发布于北京

这是一个极为偶然的探索。本来是干活儿的间隙里作为休息的学习,随手做个小模型,作为休息。结果产生一个偶然的发现。

这个发现能实用,但目前还没用。未来作为引起学生学习物理的乐趣,可以用一用。

其实现涉及的技术领域有点儿多:Rhino建模、Grasshopper参数化编程、python语言、Micro:bit串口通信以及Makecode块语言。

这里只是笔记式简略记录。

一、RhinoGrasshoper参数化

Rhino是著名的三维建模软件,具有极为精准而强大的Nurbs建模能力,常用于专业水平的工业设计、产品制作、珠宝创作等领域。Rhino功能极为繁复,学习较为困难。

GrasshoperRhino之中的一个通过参数化编程进行复杂建模的模块,常用于自动化、智能化的精准参数化建模。

Grasshopper支持胶合python语言,应该也支持C#Basic.Net(因为有这俩模块)Grasshopper自带的python模块是完备的python环境,如果安装时为默认目录,其位置在C:\用户\用户名\.rhinocode\py39-rh8目录下。

二、Python的串口库

Python是当前在众多领域普遍使用的通用脚本语言。Python通过安装第三方支持库的方式可以进行功能的几乎任意程度的扩展。Python本身不支持串口通信,但是安装pySerial库之后能够正常支持串口功能。

重要!pySerial不是Python普遍的发行版内建支持库,需要自己安装。但是Grasshopper下似乎并能通过pip安装。解决办法是,从官网下载回来pyserial-3.5-py2.py3-none-any.whl,把它的扩展名改成zip,也就是pyserial-3.5-py2.py3-none-any.zip,解压缩之后,把serial目录放在py39-rh8\Lib下的就可以使用。有一点儿不便之处,是未来到Grasshopper里面写代码时,代码提示时灵时不灵。但Python串口使用就那几句代码,影响也不大。

三、Micro:bit串口

Micro:bit是英国BBC领导开发的面向青少年的积木式单片机。虽然名字叫做“单片机”,但是由于硬件封装的好,使用者根本碰不到硬件内部原理的知识,周边软件生态极为出色,甚至微软也在站台,使得几岁的小朋友都能搞创新创作。

Micro:bit有两种串口通信方式,一种是串口重定向到USB,一种是重定向到指定的TXRX引脚。本质上这两个重定向是一样的,重定向到USB只能支持板载传感器:加速度、温度、亮度、磁力和角度。通过串口,一条可传输数据的安卓线就可以把外来传感器的数据送给电脑了,Rhino借助Grasshopperpython把数据接收过来,一切就顺理成章了。

四、Makecode编程Micro:bit

Makecode是微软为编程Micro:bit搞的平台,它有网页版和离线版。由于网速的原因,我一直在用离线版,其官方版本已经到了6.0.19.0了。

Makecode使用块Blocks语言,零门槛,在使用者不知情的情况下已经让用户会编程了。当然它也支持jspython方式,区别不大。

五、实现传感测量的视觉表达

()测量环境光亮度,通过Micro:bit送给串口

打开Micro:bit(当开机时)Micro:bit打开串口。Micro:bit在重定向串口USB时,默认波特率为115200,停止位、奇偶校验等等这些都是默认常用的,无需设置。

接着持续不断地每隔200毫秒把环境亮度级别写入串口。

()Grasshopper接收串口数据

保险起见,查询一下串口。

获取串口数据。

()实现光亮度视觉表达

现在把串口送来的数值作为圆柱体的高度和旋转角度。

逻辑是这样的:

①先用R=8在工作平面上生成一个Circle圆曲线;

②用圆曲线生成圆面Boudary Surface

③挤压Extrude圆面为圆柱体。挤压时,沿z单位向量的方向,向量长度通过Python3 Script获取串口过来的光亮度测量值。

④光亮度不但表现在圆柱体的高度上,同时,在XZ平面上把圆柱体旋转Rotate环境的光亮度大小的角度。

Grasshopper获取的串口数据会仅运行1(如果不使用串口数据,则永久运行),为触发程序时时运行,通过Control Knob送给Python模块一个x参数。这个x参数没有任何运算,什么用也没有,只有触发的功能。理论上来说,我们可以通过Grasshopper的与非门实现一个无限持续的“死循环”,但是我发现无论是在Python模块里、还是Grasshopper的与非门里,一旦逻辑“死循环”出现,Rhino就没反应了。

这种物理量测量值的表达方式,基于解释语言,随改随用,极其方便,比如有些物理测量需要表达三维图像时,显然是绝大多数曲线图绘制工具不易做到的。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多