第五十三章 比例切割 算法初成

陳東風和李爺爺從董明竹家回來後已經快10點了。

進屋後,李爺爺對他說:“這段時間你嬸嬸不容易,她的事情你要多幫幫她。”

“當然,我是他侄子,不幫他幫誰?爺爺你放心。”陳東風肯定的說。

“那就好,你也知道,這次你文山叔叔去RB治病花了不少錢,光靠兩個人在單位裡的幾十塊工資是不夠的。她想經商的想法很好,我很支持她。”

“現在的萬元戶,哪個不是做小生意的?嬸嬸只要敢闖,現在的華國是遍地黃金。”陳東風對董明竹和李文山以後從商也是很看好的。

“那就好,我老了,不過還是可以爲她跑跑關係的。好了,你去洗漱吧,早點休息。”

陳東風現在哪裡還能輕易睡得這麼早,好不容易抓住靈感的尾巴,說什麼也不能把他丟了。

其實陳東風在航模的設計階段,不怕各種數學模型和理論計算。他最討厭的是各種葉輪的工程設計圖紙的繪製。

工程中表達葉輪表面的方法是投影圖法,通常情況下使用的圓柱座標系中的投影方法是旋轉投影以及軸面投影、平面投影。葉輪的軸面投影圖反映了葉輪的總體尺寸和特徵,而平面投影相當於三視圖裡面的俯視圖。需要葉片表面方程:Θ=(r,z)來一步步畫出空間曲線。就算你畫的再好,到了加工現場加工的時候也是晦澀難懂,需要專門的技術人員分析出一步步的運動指令,效率十分低下。

陳東風看到了貝塞爾曲線是光滑離散化成一段段的微小的直線段的實質,如果可以根據貝塞爾曲線的特徵方程,設計出一套切實可行的算法——把各種曲率的曲線通過命令來生成,那麼既可以簡化設計中製圖的複雜程度,也可以根據曲線各個離散化的座標點反推出數控加工的路徑。所以如果陳東風可以設計的出來那將是一舉兩得的。

70年代現在國際上的流行算法是(以一次方貝塞爾曲線爲例)需要在兩個定點A、B之間,在選定特定u的情況下在曲線上找到點C(u)。一個簡單的方法是把u插到每一個基函數上,計算每個其與基函數的乘積以及其相應的控制頂點,最後將其相加。

雖然這種方法很好,但是缺乏數值穩定性,尤其是在計算伯恩斯坦多項式的時候可能引進數值誤差。當然算法都是各個CAD軟件的核心,是不會輕易示人的。

還有就是一款好的CAD軟件不管是算法重要,它的控制核心也是非常重要,當然現在陳東風也沒考慮到這些,只是想先把算法設計出來。

陳東風也是發了狠,不設計出這個算法,連門都懶的出了,過年前的衛生也忘記打掃了。好在李爺爺看他鑽研辛虧,毫不計較,盡心盡力的爲他做好了後勤工作。

終於,陳東風在大年三十前把這套他自己命名的比例切割算法給設計出來了。靈感來自於華國曆史上著名的數學家祖沖之的割圓術,割圓術目的是等分圓之後取得正多邊形,而他的比例切割是取一個特定的比例來逼近一個特殊的曲線。

簡單來講比例切割算法(以一次貝塞爾曲線爲例)的基本觀點是選擇在AB中的一個點C,C將AB分爲u:1-u(A到C的距離與AB之間的距離之比是u),讓我們找到決定C在哪裡的方法。

從A到B的向量是B-A。因爲u是在0和1之間的比率,點C位於u(B-A)。將A的位置加以考慮,點C爲A+u(B-A)=(1-u)A+uB。因此,對於給定的u,(1-u)A+uB是在A和B之間的點C,將AB分爲u:1-u的兩段。

更加具有普遍性的比例切割算法的想法如下是假設我們想要找到C(u),u在【0,1】中。由第一個多段線P0-P1-P2-P3...-Pn開始,利用上面的法則找到在線段上的點P1i,P1i在P0i到P0(i+1)的連線上並且將這段線分爲u:1-u的兩部分。依次地,我們可以得到n個點10,11,12,...,1(n-1),他們定義了一個新的多段線,一共有n-1段。

新點由1i進行標記,再次利用上面的規則我們可以得到第二個多段線,具有n-1個點(20,21,...,2(n-2))和n-2條邊。從這個多段線開始,進行第三次,得到新的多段線,由n-2個點30,31,...,3(n-3)和n-3條邊組成。重複這個過程n次得到一個點n0。

以上想法只是給定了比例切割想法的幾何解釋,而實際計算需要一個具體的計算方法。

首先,對於每一對臨近的控制點,可以畫出一條右上方和右下方的箭頭(類似於楊輝三角),並且在兩個箭頭的交點處寫下一個新點。例如相鄰的兩個點分別爲ij 和i(j+1),新點是(i+1)j,右下方(相對應的左下方)的箭頭表示將其尾數ij(相對應的爲i(j+1))乘以1-u(相對應的乘以u),新的點是兩個的和。

因此,從初始的第0列開始,我們計算第1列。之後從第1列得到第2列。最終,在n次計算之後我們最終到達了一個單個的點n0並且這個點就是在曲線上的點。下面的算法總結了上面我們討論的內容,輸入的是具有n+1個點的數列P和在0到1之間的u,最終得到在貝塞爾曲線上的點C(u)。

這個計算過程可以用遞歸的方法表示,對於j=0,1,...,n用P0,j表示Pj,也就是P0,j是第0列的第j項元素,在第i列計算第j項如下:P(i,j)=(1-u)P(i-1,j)+uP(i-1,j+1),(i=1,2....,n;j=0,1,2...,n-i)

元素Pi,j是(1-u)Pi-1,j(左上方元素)和 uPi-1,j+1(左下方元素)的和,最終的結果(在曲線上的點)是Pn,0.在這種想法的基礎上,通過編程就可以得到基本的算法程序。

在這個基本算法的基礎上,陳東風還需要對螺旋線、球面螺旋線、雙弧外擺線和星行線、心臟線、圓內螺旋線、正弦曲線、太陽線和費馬曲線等等幾百種曲線給出需要選定的控制點數量和控制比例u。這個工作如果沒有計算機的幫助的話,估計他這輩子都得耗在這上面了。

“好在,通用的算法以及計算出來了,可能有迭代算法效率的不高的問題,但是計算機應該可以克服。”陳東風一邊自言自語,一邊站了起來,往窗外一看天快黑了,正好肚子有點餓,把桌子上堆成小山的草稿紙整理下後,就出了房間。

第八十二章 考察飛龍第七十四章 計算機難題第六章 組團複習 團隊初成第一一七章 特殊採購第八十一章 兵圍西工大第一五六章 方向第六十四章 方案研討 李組折服第一四五章 賽後第三十章 特技設計 飛行訓練第三十五章 橫空出世 橫掃比賽第六十一章 飛龍航發 點火實驗第九十章 實彈試射第三十五章 橫空出世 橫掃比賽第一五二章 計算機曙光第五十五章 商業天賦 合作深化第三十五章 橫空出世 橫掃比賽第五章 初識學霸 猶如神助第九十三章 偵察演習1第七十七章 組裝完成 試飛計劃第一三八章 人才問題第七十二章 鷹眼缺陷第一一八章 序幕第四十六章 設計複雜 開始建模第二十五章 核心機點火 艱難測試第一百四十八章 感受工程藝術之美第九十章 實彈試射第一二七章 支援2第十四章 瘋狂模式 鯨吞虎噬第一三零章 不輕鬆的會議2第一三四章 抵達第九十一章 209的軍演準備第一五零章 青眼有加第一三四章 抵達第一一二章 請君入甕第一一九章 提前開始第六十四章 方案研討 李組折服第一五五章 CAX討論第七十三章 微波信號第一五六章 方向第二十五章 核心機點火 艱難測試第四十章 列車臥談 籌劃生產第一五零章 青眼有加第一二三章 大勝第三十四章 賽前準備 驚豔亮相第四十七章 模型設計 基本完成第四十七章 模型設計 基本完成第一五三章 IBM代理商第一三四章 抵達第一二四章 結束第四十二章 新的計劃 ‘飛龍’在天第一三二章 鵬城消息2第一二七章 支援2第一五零章 青眼有加第二十一章 控制系統 進退維谷第一一九章 提前開始第九十六章 驪山軍演2第一五六章 方向第一零七章 傳音第一五一章 航模協會第一三七章 設計第一五一章 航模協會第九十一章 209的軍演準備第六十三章 放下芥蒂 合作研發第一四零章 故人第三十一章 院長帶隊 奔赴金陵第一一五章 反火炮鷹眼第一二五章 戰後第一五九章 專業跑項目第一一七章 特殊採購第一五四章 方向第一四二章 賽前2第三十六章 內部商議 籌劃外銷第一零八章 傳音2第一一五章 反火炮鷹眼第九十章 實彈試射第三十七章 推銷航模 達成協議第一五八章 問題越來越多第十七章 核心機 結構設計第九十九章 情況交流第四十六章 設計複雜 開始建模第八十四章 與軍方會議第五十章 考試結束 學校頒獎第一一四章 風雲再起第一三六章 新型電機第一一六章 功能測試第二十八章 航模首飛 試飛成功第一一七章 特殊採購第一四二章 賽前2第一五九章 專業跑項目第三十八章 夜訪嬸嬸 合作外貿第六十五章 修改方案第一三二章 鵬城消息2第四十二章 新的計劃 ‘飛龍’在天第一零一章 採購計劃第一零四章 抵達滇省第一六零章 繼續找幫手第二十七章 院長三招 整機裝配第一五九章 專業跑項目第四十二章 新的計劃 ‘飛龍’在天