【正文】
多段線近似代替緩和曲線。在鐵路干線線路中都要加設(shè)緩和曲線。鐵路與公路線上采用的平面曲線主要有圓曲線和緩和曲線,如圖1所示。鐵路與公路的線路在定線中,由于受地形、地物或其他因素限制,需要改變方向。也可以用另外一個簡便方法,即利用極坐標和直角坐標之間的轉(zhuǎn)換關(guān)系,變換到直角坐標后輸入到命令行,該方法對應(yīng)的AutoLISP程序如下:(setq ii 0) (setq e low) ;設(shè)置極角θ 的初始值(while (= ii steps) (setq r (c:cal funy)) ;計算極徑r(setq x (c:cal r*cos(e))) ;由極徑r 和極角θ 轉(zhuǎn)換為直角坐標下的x 值 (setq y (c:cal r*sin(e))) ;由極徑r 和極角θ 轉(zhuǎn)換為直角坐標下的y 值(mand (list x y)) (setq ii (+ 1 ii)) (setq e (+ e step)) ;對極角遞增一個步長極坐標下參數(shù)方程曲線的繪制,同直角坐標下的參數(shù)方程曲線繪制是類似的,即增加一個用參變量表達的極角θ的計算,相應(yīng)的AutoLISP程序如下:(setq ii 0) (setq i low) ;設(shè)置參變量i 初值為下限值(while (= ii steps) (setq e (c:cal funx)) ;由表達式計算極角θ(setq r (c:cal funy)) ;由表達式計算極徑r(setq x (c:cal r*cos(e))) (setq y (c:cal r*sin(e))) (mand (list x y)) (setq ii (+ 1 ii)) (setq i (+ i step)) ;參變量遞增一個步長利用AutoCAD的表達式計算功能,編寫出繪制平面函數(shù)曲線的AutoLISP程序,根據(jù)外部輸入的函數(shù)表達式,迅速繪制出函數(shù)曲線,且可以靈活控制曲線的模擬精度,避免了以往每繪制一種曲線都要重新編寫程序的麻煩,使用起來十分方便。相應(yīng)的AutoLISP程序如下:(mand pline);啟動多義線命令(setq ii 0);循環(huán)變量ii設(shè)初值(setq x low);自變量x設(shè)初值(while (= ii steps);控制循環(huán)數(shù)目(setq y (c:cal funy));對表達式進行計算,得到y(tǒng)坐標值(mand (list x y));輸入計算出的點坐標(setq ii (+ 1 ii));循環(huán)變量ii增加1(setq x (+ x step));自變量x遞增一個步長(mand );退出多義線命令直角坐標下參數(shù)方程與直接函數(shù)表達不同的是,引入?yún)⒆兞?,坐標x和y都表達為該參變量的函數(shù),這樣,能夠表示的函數(shù)更靈活多樣,形式如下:在曲線繪制時,只需要將變量改為參變量,坐標計算時對x、y坐標都用表達式計算即可,相應(yīng)的AutoLISP程序如下:(setq ii 0);循環(huán)變量ii設(shè)初值(setq i low) ;參變量i 設(shè)初值(while (= ii steps) ;循環(huán)控制(setq x (c:cal funx)) ;由x=f(i)計算坐標x(setq y (c:cal funy)) ;由y=g(i)計算坐標y(mand (list x1 y1)) ;向命令行輸入點坐標(setq ii (+ 1 ii)) ;循環(huán)變量ii 增加1(setq i (+ i step)) ;參變量i 遞增一個步長 極坐標下函數(shù)r = f(θ)曲線繪制極坐標下函數(shù)r = f(θ )的不同之處在于輸入點的坐標時,需要用極坐標輸入方式,如2030,表示極徑為20,角度為30176。程序的第一個步驟是讀入有關(guān)的參數(shù)和控制變量。c:cal);讓命令c:cal能夠使用(princ (1)直角坐標下曲線y=f(x).\n)(princ (2)直角坐標下參數(shù)曲線x=f(i),y=g(i).\n)(princ (3)極坐標下曲線r=f(theta).\n)(princ (4)極坐標下參數(shù)曲線theta=f(i),r=g(i).\n)(setq ichoice (getint 選擇繪制曲線類型:));選擇曲線類型(if (= ichoice 1) (curve1));調(diào)用曲線繪制類型1(if (= ichoice 2) (curve2));調(diào)用曲線繪制類型2(if (= ichoice 3) (curve3));調(diào)用曲線繪制類型3(if (= ichoice 4) (curve4));調(diào)用曲線繪制類型4根據(jù)用戶選擇的曲線類型,轉(zhuǎn)到相應(yīng)的曲線類型繪制函數(shù)中,依次為直角坐標下的普通函數(shù)、參數(shù)方程,極坐標下的普通函數(shù)和參數(shù)方程??偟某绦蚨x為c:curve(),以便在AutoCAD命令行中與通常的命令一樣使用。若表達式中有變量,而該變量在程序中已設(shè)定了值,則按該值進行計算。但這個功能的實現(xiàn)比較困難,幸好AutoCAD為我們提供了CAL命令,可以對任意的表達式進行計算。由于曲線的函數(shù)表達式各種各樣,不可能用統(tǒng)一的式子來表示。假設(shè)我們計算出足夠多的點,簡單用折線連接即可,為使該曲線成為一個整體,可用多義線的方式連接。繪制時,參照曲線的手工繪制方法,需要給出曲線上的多個點,然后將它們連接起來。同時,極坐標形式可以通過:x=rcosθy=rsinθ轉(zhuǎn)換為直角坐標表達。平面函數(shù)曲線即是有簡單函數(shù)表達式的