方程式曲線是ProE和Creo中一種特殊形式的曲線。和其他方式創建基準曲線不同,方程式曲線是通過數學參數方程來創建的,這個特殊性也決定了它的特殊用途,在一些特殊的應用場合有着不可取代的作用。本文通過詳細講解在Creo中從簡單的方程式曲線開始進行逐步演化,逐步深入,實現創建各種常見的方程式曲線的方法,務求讓數學基礎不太好的讀者能更好地理解如何在Creo中創建自己想要而又相對複雜的方程式曲線,而非機械記住某些方程式曲線的方程。
1. 方程式曲線的創建
在Creo中,可以通過【模型】選項卡下的【基準】溢出菜單選擇【曲線】菜單項,然後選擇【來自方程的曲線】打開方程式曲線創建的操控面闆。
要創建方程式曲線,首先要選擇一種坐标系統,可以選擇的坐标系統包括笛卡爾坐标、柱坐标系和球坐标系。不同的坐标系統在創建不同的參數方程時都有各自的便利性,用戶需要根據方程本身的特點來選擇合适的坐标系統來創建,就可以簡化創建工作。
不管哪個坐标系統,都必須選擇一個坐标系作為參數方程的參考,選擇了坐标系後就可以進入方程式的編輯環境。第一次進入方程式曲線編輯環境時,可能會彈出有關方程式曲線編寫的一些參數說明以幫助用戶了解關系編寫指導,你也可以随時點擊頂部最右側的信息按鈕顯示。
在這個編輯器中,你就可以輸入你的方程式了。系統默認的設置一般方程式的編輯器是Creo自帶的Pro/Tab編輯器,如果想改用系統默認的記事本來編輯,你可以設定config選項:relation_file_editor的值為editor。
2. 方程式的含義和編寫
在Creo中,方程式的編寫規則和關系式的是一樣的,并且可以使用關系式的所有函數,實際上方程式本身就是關系式。
在所有的坐标系形式中,都有一個共用的可變參數t,這個實際就是用來确定方程式定義域也就是參數的取值範圍的,同時也是用它來驅動方程式的生成曲線的。它的變動範圍在ProE中是0~1,在Creo中用戶可以自己定義。如果你對數學的參數方程式足夠熟悉的話,那麼理解曲線的方程式是毫無障礙的。如果你不熟悉,可以這樣來看待方程式:
把方程式看成是計算某一個給定變量t所對應點的坐标值,通過t的變化實際就是産生一系列的點。連續的點就構成了實際的曲線。
2.1. 坐标系的表達方式
對于同一方程式曲線,在Creo中你都可以從三個坐标系表示方式中選擇一個作為方程式的編寫坐标系。三個坐标系的不同之處是确定一個點的表示方式不一樣而已。
笛卡爾坐标系使用點的三個軸的坐标值(x,y,z)來确定一個點(;圓柱坐标系使用半徑r,和x軸的夾角theta和高度z來表示;而球坐标系則使用球半徑rho,原點到點的向量和Z軸的夾角theta和向量在xy平面上和X軸的夾角phi來表示。
2.2. 方程式中的常用函數
主要使用的是一些數學函數。
sin 正弦函數 sqrt 開平方根
cos 餘弦函數 abs 取絕對值
tan 正切函數 pi 圓周率3.1415926…
3. 實例方程式曲線剖析和演化
我們就從一個簡單圓開始。我們都用笛卡爾坐标系(Cartesian)坐标系來寫。我們知道正弦和餘弦函數是周期變化的函數,所以我們如果要實現周期變化就要借助這兩個函數的幫助。而要實現值的變化,自然需要使用t來輔助了。基本上很多貌似複雜的效果都是周期變化加上大小變化的疊加。
下面我們就從一個簡單的圓曲線開始,講解如何通過各種參數的變形組合來實現更多複雜的曲線方程的。在下面的案例中,都采用默認的t從0到1的變化範圍。而為了方便大家觀察,曲線都掃描成了類似電纜的實體。
對于一個平面圓來說,顯然z始終為恒定值,隻需變化X和Y便可,以笛卡爾坐标系為例,對應的參數方程如下:(在XY平面上創建一個以原點為圓心,半徑為10的圓)
x=10*cos(t*360)
y=10*sin(t*360)
z=0
圓的方程式
當然如果z給定一個值的話,就是圓的平面的高度了。t*360是實現角度從0到360度變化(一周)的關鍵。
上面的半徑是維持恒定的10,如果我們添加一些變量使得半徑發生周期變化,比如正弦周期變化,比如下面的方程式:
x=(10 2*sin(t*360*12))*cos(t*360)
y=(10*2*sin(t*360*12))*sin(t*360)
z=0
其中(10 2*sin(t*360*12))正是實現半徑的周期變化部分,sin(t*360*12)在t從0到1的變化過程中實現了12個從-1到1的周期的變化。
而如果我們把上一步中的周期變化部分加到高度Z而不是半徑上,那就實現了圓周波浪線的創建。因為半徑始終保持不變,但圓周上的點高度則發生了周期變化。
x=10*cos(t*360)
y=10*sin(t*360)
z=2*sin(t*360*12)
z部分的值代表了高度值在一周内實現12個周期變化,在-2和2直接實現正弦變化。
如果把上兩步的變化組合起來,我們就可以得到一個錐形的波浪線。那是因為半徑和圓周上的點發生了同步的周期變化
x=(10 2*sin(t*360*12))*cos(t*360)
y=(10 2*sin(t*360*12))*sin(t*360)
z=2*sin(t*360*12)
分析很簡單,顯然當z處于最低的時候,圓的半徑也是最小的,反之也亦然,因為他們的變化是同步的,所以就出現了這樣的錐形效果
而如果我們把上一步中z的表達式改為2*cos(t*360*12),那麼高度和半徑的變化的波峰和波谷正好錯開,這樣就可以得到了一個圓周的螺旋線圈。
x=(10 2*sin(t*360*12))*cos(t*360)
y=(10 2*sin(t*360*12))*sin(t*360)
z=2*cos(t*360*12)
上面的變化都是x和y方向的參數值都是一樣的,因此在XY平面上的投影是一個正圓,如果我們改成不一樣的,就可以實現橢圓周的變化了。
x=(15 2*sin(t*360*12))*cos(t*360)
y=(10 2*sin(t*360*12))*sin(t*360)
z=2*cos(t*360*12)
前面我們的變化都是封閉的,也就是說終點和起點是重合的,如果我們前面平面圓的方程稍微改一下,讓z的值跟随t實現線性增加,就可以實現螺旋變化。
x=10*cos(t*360*12)
y=10*sin(t*360*12)
z=12*2*t
因為對螺旋線來說,高度是一直在線性增加的,而x,y是多個周期變化的。
同樣,我們如果把x和y的半徑紙改為不一樣的就可以實現橢圓螺旋線的創建。(圖eqcurve.3.08)
x=15*cos(t*360*12)
y=10*sin(t*360*12)
z=12*2*t
而如果我們再加上半徑的大小變化,讓它随着高度逐漸變小,就可以實現錐形變化,得到橢圓錐螺旋線
x=(15-14*t)*cos(t*360*12)
y=(10-9*t)*sin(t*360*12)
z=12*2*t
當然,如果讓半徑随高度實現正弦變化,就可以得到類似花瓶狀的螺旋線。
x=(10 4*sin(t*360))*cos(t*360*12)
y=(10 4*sin(t*360))*sin (t*360*12)
z=24*t
通過上面我們的演變和疊加,相信大家對于曲線方程式的概念和編寫有了一定的概念了。上面我們的方程都是用笛卡爾坐标來進行編寫方程式的,其實有一些我們應用其它的坐标方式來寫的話就會更直接和直觀,比如對于圓螺旋,我們如果用圓柱坐标系來寫的話,就可以這樣:
r=10
theta=t*360*12
z=24*t
這是不是比上面的笛卡爾坐标系的寫法簡單和直觀的多呢?同樣對于另外的方程式曲線,我們用球坐标的方式來寫就可以收到奇效
例如對半球螺旋線,如果我們用球坐标的方式來寫,就可以寫成這樣:
rho=10
theta=t*90
phi=t*360*12
這樣是不是更為直觀些呢?
而假設在theta角度上添加一些變化,又可以實現新的效果疊加
rho=30
theta=20 70*t sin(t*360*1000)
phi=t*360*12
在這個方程式中,角度theta會在生成過程中發生幅度為1的正弦變化。最後累加成如圖右邊的效果。因為對于每一個圓周跳動的頻率都是固定的所以越是靠近頂部顯得越為密集。
rho=30
theta=20 70*t sin(t*(500 600*t)*360)
phi=t*360*12
為了把在每一周上的密集度都顯得差不多,可以考慮把跳動的頻率越往下便相應增加,因此添加500 600*t的關系,表示從開始是500,到最後是1100,這樣可以在一定程度上抵消因為半徑變化所帶來的密集程度的變化以實現更均勻的效果。
4.特殊曲線的方程式
其實方程式曲線的用途通常是用于創建一些有特殊幾何意義的曲線的,不過,實際上這些曲線的創建已經不再是軟件上的事情了,更多的是數學和幾何上的意義了,我們要做的隻是把它的數學公式照搬下來的體力勞動了。下面我們就來看看一些典型的曲線的方程式表示。
抛物線:數學函數是y^2=2*p*x;焦距:p/2
x=10*t
y=sqrt(2*4*x)
z=0
抛物線常用于燈具的反光杯,使用方程式創建可以直接根據實際需要的參數來确定方程。
阿基米德螺旋線:
k=pi/180
theta=t*360
r=k*theta*3
注意的是,這裡的角度是實數,所以要注意轉換一下。
漸開線:
k=pi/180
u=t*90
x=20*cos(u)-20*k*u*sin(u)
y=20*sin(u) 20*k*u*cos(u)
z=0
20是漸開線的基圓半徑,u也是實數角度值.漸開線通常用于繪制齒輪。
三葉玫瑰線:
theta=t
r=6*sin(3*theta)
z=0
三葉玫瑰線
以上内容為黃光輝IceFai原創作品,歡迎大家閱讀和留言評論,如果覺得對你有幫助,順手點贊以示支持,謝謝!
,