欢迎光临散文网 会员登陆 & 注册

关于Rhino开发中螺旋线的使用

2023-07-13 11:34 作者:丶上清  | 我要投稿

Rhino是我们的好帮手,在有了RhinoinXXX这样的插件后,我们可以借用Rhino中便捷的曲线曲面修改来进行 各种异型建筑的创建,根据特定要求来开发指定的电池就显得比较重要了。

一、螺旋线

  在Rhino中,提供了螺旋线的创建指令,同时也提供了两种螺旋线的创建API方法:

指令
API

  在使用API之前,我们最好先了解一下Rhino中螺旋线的使用方式:

  1. 先绘制一条直线


2.再指定另一个点

3.可以在上方设置螺旋线的圈数、直径、螺距、是否反向扭转

其中,当我们在第二步指定另一个点的时候,这个点距离曲线起点的距离就会被判定为螺旋线的半径。


 二、开发中的API

  下面我们来看一下官方提供的两种方法:

第一种

  其中让我们输入的几个参数,分别是起点,螺旋线的轴的法向量、半径点、螺距、圈数、半径1、半径2;以上方法中,起点为(0,0,0),法向量为朝向X轴,半径点为垂直于X轴,螺距为1,圈数为10,起点半径和终点半径均为1;

  以上方法中,我们是无法根据指定路径来创建螺旋线的,我们来看第二个方法:

第二种

  以上需要我们输入的参数为,导向曲线、导向曲线的起点值、导向曲线的终点值、半径点、螺距、圈数、起点半径、终点半径、转弯点数;

  在以上方法中,导向曲线是比较好理解的,螺旋线会直接沿着输入的曲线来进行生成,圈数也是比较好理解的,在固定的线段长度下,圈数会决定螺旋线看起来的疏密感,起点半径和终点半径也就是螺旋线开口和闭口的半径大小:

  

  以上是一段直线生成的,圈数都为10,半径为1和半径为2的螺旋线;

  起点数值直接拿到直线的Domain的的Max和Min就可以,下面问题来了,这里的点,也就是输入的第三个参数到底有什么用呢?

  在官方的解释中,我们应该输入一个垂直与直线的点。

  测试1:创建两条螺旋线,一个输入线的起点,其Z值进行随意增加,另一个输入线的终点,其Z值进行随意增加;

  结果:两条螺旋线会重合,且Z值的增加或减少不会更改螺旋线的任何状态。

测试2:创建两条螺旋线,一个输入起点方向的单位法向量,向量大小进行随意增加,另一个输入终点的单位法向量,向量大小进行随意增加;

  结果:螺旋线创建失败;

  测试3:我们综合上两种,在修改点的平面位置的时候同事来修改点的Z轴位置;

  结果:螺旋线创建成功,但是任何值的更改都不会影响螺旋线。

  测试3:Z轴一个输入正值,一个输入负值;

  结果:两条螺旋线进行了交错;

  综上所述,我们得到了一条结论,在平面上创建以直线为轴的螺旋线时,其指定的半径点的XY平面位置不会影响螺旋线的生成,而Z值的大小也不会影响螺旋线的生成,Z值的正负会修改螺旋线时正转还是翻转。

三、曲线为轴螺旋线

  这时,我们将测试对象换成一条平面曲线。

  测试一:创建两条螺旋线,一个输入线的起点,其Z值进行随意增加,另一个输入线的终点,其Z值进行随意增加;

  结果:有趣的现象来了,当我们区修改起点的Z值时,我们发现螺旋线无任何变化,当我去修改终点的Z值时,螺旋线会发生旋转上的偏移,即螺旋的长度保持不变,起点和终点会的角度会发生变化,且在数值越小时发生的偏移越大。

测试二:向着螺旋线的法线方向进行偏移;

  结果:向着终点法向量进行偏移时才有效果,起点坐标进行按法向量方向移动,螺旋线会无法创建,而终点方向的法向量移动值只有超过70之后才有一次变化;

测试三:同时进行改变;

  结果:起点在拥有Z值偏移后,螺旋线可以正常创建,但是修改数值并不会引起螺旋线的变化;而终点值在Z值和平面同事偏移后,70会成为临界点,小于70且小于零会大幅度向逆时针方向进行旋转,大于70且小于400会小幅度向顺时针方向进行旋转。

  综上所述,在导向曲线为平面曲线时,修改曲线起点的Z或者平面位置不会引发螺旋线的变化,而在终点时,修改其Z值向较小值方向移动可以控制螺旋线的旋转。

  以上探究主要还是向用代码能够方便的控制,空间曲线为导向曲线时,螺旋线的旋转变化,但是最后还是没能找到很好的方法,假如有大佬知道欢迎在评论区留言。

关于Rhino开发中螺旋线的使用的评论 (共 条)

分享到微博请遵守国家法律