苑志剛 YUAN Zhi-gang;梁繼東 LIANG Ji-dong
(華北地質(zhì)勘查局五一九大隊(duì),保定 071000)
(519 Team of North China Geological Exploration Bureau,Baoding 071000,China)
雙線繪制的計(jì)算方法
苑志剛 YUAN Zhi-gang;梁繼東 LIANG Ji-dong
(華北地質(zhì)勘查局五一九大隊(duì),保定 071000)
(519 Team of North China Geological Exploration Bureau,Baoding 071000,China)
在現(xiàn)代的多種行業(yè)的計(jì)算機(jī)輔助處理軟件中,圖形處理是必不可少的,然而我們實(shí)際遇到的圖形是非常復(fù)雜的,面對(duì)復(fù)雜的圖形,我們要做的首先就是對(duì)圖形進(jìn)行分析,然后對(duì)圖形進(jìn)行數(shù)學(xué)描述,在此基礎(chǔ)上進(jìn)行分析圖形的形成過(guò)程,進(jìn)而實(shí)現(xiàn)對(duì)圖形的操作,實(shí)現(xiàn)我們想要實(shí)現(xiàn)的效果。
圖形;角度;偏移
在現(xiàn)代的多種行業(yè)的計(jì)算機(jī)輔助處理軟件中,圖形處理是必不可少的,然而我們實(shí)際遇到的圖形是非常復(fù)雜的,面對(duì)復(fù)雜的圖形,我們要做的首先就是對(duì)圖形進(jìn)行分析,然后對(duì)圖形進(jìn)行數(shù)學(xué)描述,在此基礎(chǔ)上進(jìn)行分析圖形的形成過(guò)程,進(jìn)而實(shí)現(xiàn)對(duì)圖形的操作,實(shí)現(xiàn)我們想要實(shí)現(xiàn)的效果。
在比較常用的繪圖軟件中(如Autodesk CAD)都會(huì)有線段偏移或繪制雙線的功能,它的應(yīng)用非常廣泛。但是這些軟件繪制的雙線不一定能滿足我們的要求,所以我們非常有必要了解其內(nèi)部的算法,以更好在我們的工作中應(yīng)用,下面我將就繪制雙線的計(jì)算方法進(jìn)行一下說(shuō)明。
繪制雙線要求:已知折線a,折線a的不同節(jié)點(diǎn)的角度任意,要求繪制到折線a的距離為d的兩條折線,在a的不同的位置d的大小是可變的,并且要求繪制的兩條折線中間不能中斷。
首先從一般性的圖形入手,如圖1所示,由中心線a向兩側(cè)偏移指定的距離來(lái)得到兩條邊線。
首先為了使圖形便于說(shuō)明問(wèn)題,對(duì)圖形上各個(gè)節(jié)點(diǎn)進(jìn)行編號(hào),如圖2所示。
要根據(jù)中心線得到兩條輪廓線,最主要的是要得到輪廓線上各個(gè)節(jié)點(diǎn)的坐標(biāo)(如點(diǎn) A、B、C、K、L、M 等),而這些節(jié)點(diǎn)是由AB與BC或是KL與LM這樣的相鄰的直線的相交而得到的。最先要做的就是要得到AB、BC、KL、MN樣的直線。根據(jù)J、I兩點(diǎn)所在的直線依據(jù)指定的距離得到垂直于其的方向的兩條直線,這只需要根據(jù)解析幾何的公式就能直接得到。同理可以得到BC和LM兩條直線,然后做直線AB與直線BC的交點(diǎn)就能得到點(diǎn)B,做直線KL與直線LM的交點(diǎn)就能得到點(diǎn)L?,F(xiàn)在問(wèn)題出現(xiàn)了,如何分清直線AB與直線BC相交還是與直線LM相交呢?在任意給定的圖形空間中是沒(méi)有上下左右之分的。
經(jīng)過(guò)研究發(fā)現(xiàn)其中的規(guī)律,將直線AB、BC、KL、LM、JL、LH都看成是有方向的直線,則有如下結(jié)論,將點(diǎn)J看作笛卡爾直角坐標(biāo)系的原點(diǎn),設(shè)原點(diǎn)到直線JI的角度為A1,原點(diǎn)到直線JB的角度為A2,原點(diǎn)到直線JL的角度為A3。如果A1,A2,A3這三個(gè)角有的角度在第一象限,有的在第四象限,則用第四象限的這個(gè)角度減去360度,經(jīng)過(guò)這番處理后,三個(gè)角度始保持這樣的關(guān)系:A2<A1<A3。然后以點(diǎn) I為原點(diǎn),在得到角度 B1,B2,B3,根據(jù) B1,B2,B3的大小關(guān)系就可以確定哪兩條直線的交點(diǎn)才是輪廓線上正確的節(jié)點(diǎn)的坐標(biāo)。這樣將兩側(cè)的節(jié)點(diǎn)的坐標(biāo)分別記錄就得到了輪廓線的邊界。
在得到點(diǎn)B和點(diǎn)L之后,用同樣的方法,將點(diǎn)I看作是坐標(biāo)系的原點(diǎn),從而得到點(diǎn)M和點(diǎn)C,依次類推,我們就得到了折線a偏移指定距離d的兩條折線。
上述是比較理想的狀況,在實(shí)踐中還會(huì)有其他問(wèn)題。
當(dāng)距離d到a的距離在不同的位置寬度不同的時(shí)候就需要做不同的處理。如圖3所示,在點(diǎn)L處的寬度發(fā)生變化,這種情況下首先要根據(jù)一般情況下的理論,計(jì)算得到直線AB、直線FG、直線CD、直線HI,然后根據(jù)實(shí)際情況計(jì)算得出直線HC,然后通過(guò)計(jì)算直線FG與HC的交點(diǎn)得到點(diǎn)G,通過(guò)直線HI與直線HC的交點(diǎn)得到點(diǎn)H,從而得到線段HG;計(jì)算直線AB與直線HC的交點(diǎn)得到點(diǎn)B,計(jì)算線段CD與直線HC得到交點(diǎn)C,從而得到直線BC。從而得到如圖3所示的圖形。
在繪制這種偏移線的時(shí)候還有三個(gè)方向的情況,如圖4所示在點(diǎn)B處折線有三個(gè)方向,為了得到如圖所示的效果,在繪制過(guò)程中,要有不同的處理方法。首先不考慮三個(gè)方向的情況,例如先繪制折線ABC對(duì)應(yīng)的線段,但是要記錄點(diǎn)B,并且記錄與點(diǎn)B相關(guān)的直線 ML、LK、EF、IJ。當(dāng)這些完成之后,在重新繪制直線BD對(duì)應(yīng)的折線,用直線FG與HI和直線EF與IJ分別相交,并且取得交點(diǎn)F和I。然后修改這四條線段的端點(diǎn)為點(diǎn)I和點(diǎn)F。這樣就解決了三個(gè)方向的多分支問(wèn)題。如果有四個(gè)方向,可以用同樣的方法進(jìn)行解決,只不過(guò)計(jì)算的過(guò)程更加復(fù)雜一些。
下面就繪制圖形時(shí)候得一些特殊情況進(jìn)行說(shuō)明。以圖2為例,當(dāng)直線JI和直線IH之間的夾角為0時(shí),直線AB與直線BC、直線KL與直線LM之間的夾角也為0,他們就成為了同一條直線,這時(shí)采用取直線的交點(diǎn)的方法來(lái)得到點(diǎn)B和點(diǎn)L是錯(cuò)誤的。其實(shí)在將點(diǎn)I在垂直于直線JL的方向上指定距離得到的兩個(gè)點(diǎn)就是輪廓線上的節(jié)點(diǎn),只不過(guò)要分清這兩個(gè)節(jié)點(diǎn)直線JI的那一側(cè)。在應(yīng)用中還有其他的一些邊界需要考慮,如當(dāng)中心線只有兩個(gè)節(jié)點(diǎn)的情況,輪廓線的兩段如何進(jìn)行封閉等在實(shí)際應(yīng)用中都應(yīng)給予考慮。
運(yùn)用上述理論,不僅可以繪制任意的雙側(cè)折線,而且可以繪制單側(cè)的雙折線或是多條折線。
[1]GB 50026-2007,工程測(cè)量規(guī)范[S].
[2]CJJ/T8-2011,城市測(cè)量規(guī)范[S].
[3]潘志庚,胡小強(qiáng).中國(guó)圖形工程:2003[J].中國(guó)圖象圖形學(xué)報(bào),2004(06).
The Calculation Method of Double Line Drawing
In the various modern computer-aided processing soft wares,graphics processing is essential,but the graphics we actually encounter are very complex.The first thing to do is to analyze the graphic,and then mathematical description of the graphics.Based on this,the formation process of analysis graphics is carried out,and then to realize the graphics operation,thus achieving the required effect.
graphics;angle;offset
苑志剛(1979-),男,山東安丘人,工程師,研究方向?yàn)楣芫€測(cè)量及管理。
TP31
A
1006-4311(2014)11-0219-02