關于Rhino開發(fā)中螺旋線的使用
Rhino是我們的好幫手,在有了RhinoinXXX這樣的插件后,我們可以借用Rhino中便捷的曲線曲面修改來進行 各種異型建筑的創(chuàng)建,根據(jù)特定要求來開發(fā)指定的電池就顯得比較重要了。
一、螺旋線
? 在Rhino中,提供了螺旋線的創(chuàng)建指令,同時也提供了兩種螺旋線的創(chuàng)建API方法:


? 在使用API之前,我們最好先了解一下Rhino中螺旋線的使用方式:
先繪制一條直線

2.再指定另一個點

3.可以在上方設置螺旋線的圈數(shù)、直徑、螺距、是否反向扭轉

其中,當我們在第二步指定另一個點的時候,這個點距離曲線起點的距離就會被判定為螺旋線的半徑。
?二、開發(fā)中的API
? 下面我們來看一下官方提供的兩種方法:

? 其中讓我們輸入的幾個參數(shù),分別是起點,螺旋線的軸的法向量、半徑點、螺距、圈數(shù)、半徑1、半徑2;以上方法中,起點為(0,0,0),法向量為朝向X軸,半徑點為垂直于X軸,螺距為1,圈數(shù)為10,起點半徑和終點半徑均為1;
? 以上方法中,我們是無法根據(jù)指定路徑來創(chuàng)建螺旋線的,我們來看第二個方法:

? 以上需要我們輸入的參數(shù)為,導向曲線、導向曲線的起點值、導向曲線的終點值、半徑點、螺距、圈數(shù)、起點半徑、終點半徑、轉彎點數(shù);
? 在以上方法中,導向曲線是比較好理解的,螺旋線會直接沿著輸入的曲線來進行生成,圈數(shù)也是比較好理解的,在固定的線段長度下,圈數(shù)會決定螺旋線看起來的疏密感,起點半徑和終點半徑也就是螺旋線開口和閉口的半徑大?。?/p>
??

? 以上是一段直線生成的,圈數(shù)都為10,半徑為1和半徑為2的螺旋線;
? 起點數(shù)值直接拿到直線的Domain的的Max和Min就可以,下面問題來了,這里的點,也就是輸入的第三個參數(shù)到底有什么用呢?
? 在官方的解釋中,我們應該輸入一個垂直與直線的點。
? 測試1:創(chuàng)建兩條螺旋線,一個輸入線的起點,其Z值進行隨意增加,另一個輸入線的終點,其Z值進行隨意增加;

? 結果:兩條螺旋線會重合,且Z值的增加或減少不會更改螺旋線的任何狀態(tài)。
測試2:創(chuàng)建兩條螺旋線,一個輸入起點方向的單位法向量,向量大小進行隨意增加,另一個輸入終點的單位法向量,向量大小進行隨意增加;

? 結果:螺旋線創(chuàng)建失敗;
? 測試3:我們綜合上兩種,在修改點的平面位置的時候同事來修改點的Z軸位置;

? 結果:螺旋線創(chuàng)建成功,但是任何值的更改都不會影響螺旋線。
? 測試3:Z軸一個輸入正值,一個輸入負值;

? 結果:兩條螺旋線進行了交錯;

? 綜上所述,我們得到了一條結論,在平面上創(chuàng)建以直線為軸的螺旋線時,其指定的半徑點的XY平面位置不會影響螺旋線的生成,而Z值的大小也不會影響螺旋線的生成,Z值的正負會修改螺旋線時正轉還是翻轉。
三、曲線為軸螺旋線
? 這時,我們將測試對象換成一條平面曲線。
? 測試一:創(chuàng)建兩條螺旋線,一個輸入線的起點,其Z值進行隨意增加,另一個輸入線的終點,其Z值進行隨意增加;

? 結果:有趣的現(xiàn)象來了,當我們區(qū)修改起點的Z值時,我們發(fā)現(xiàn)螺旋線無任何變化,當我去修改終點的Z值時,螺旋線會發(fā)生旋轉上的偏移,即螺旋的長度保持不變,起點和終點會的角度會發(fā)生變化,且在數(shù)值越小時發(fā)生的偏移越大。
測試二:向著螺旋線的法線方向進行偏移;

? 結果:向著終點法向量進行偏移時才有效果,起點坐標進行按法向量方向移動,螺旋線會無法創(chuàng)建,而終點方向的法向量移動值只有超過70之后才有一次變化;
測試三:同時進行改變;

? 結果:起點在擁有Z值偏移后,螺旋線可以正常創(chuàng)建,但是修改數(shù)值并不會引起螺旋線的變化;而終點值在Z值和平面同事偏移后,70會成為臨界點,小于70且小于零會大幅度向逆時針方向進行旋轉,大于70且小于400會小幅度向順時針方向進行旋轉。

? 綜上所述,在導向曲線為平面曲線時,修改曲線起點的Z或者平面位置不會引發(fā)螺旋線的變化,而在終點時,修改其Z值向較小值方向移動可以控制螺旋線的旋轉。

? 以上探究主要還是向用代碼能夠方便的控制,空間曲線為導向曲線時,螺旋線的旋轉變化,但是最后還是沒能找到很好的方法,假如有大佬知道歡迎在評論區(qū)留言。