基于多控制點(diǎn)的矢量圖形上下邊界線形狀自動(dòng)調(diào)整方法
【專利摘要】本發(fā)明涉及一種基于多控制點(diǎn)的矢量圖形上下邊界線形狀自動(dòng)調(diào)整方法,采用本發(fā)明在調(diào)整矢量圖形邊界線形狀時(shí),只需要確定建模線上有限個(gè)數(shù)的控制點(diǎn)位置,所有矢量圖形的邊界線自動(dòng)依據(jù)建模線的形態(tài)調(diào)整自己的邊界線形狀,無需手動(dòng)調(diào)整邊界線上的每一個(gè)控制點(diǎn),通過該方法可以繪制平滑、美觀的邊界線,從而大大降低了工作量,進(jìn)而提高了工作效率。因此,本發(fā)明可以適用于計(jì)算機(jī)矢量圖形繪制及圖形上、下邊界線形狀的調(diào)整。
【專利說明】基于多控制點(diǎn)的矢量圖形上下邊界線形狀自動(dòng)調(diào)整方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種矢量圖形調(diào)整方法,特別是關(guān)于一種基于多控制點(diǎn)的矢量圖形上下邊界線形狀自動(dòng)調(diào)整方法。
【背景技術(shù)】
[0002]目前,計(jì)算機(jī)輔助繪制的工程地質(zhì)剖面圖是由很多的矢量圖形單元構(gòu)成。對(duì)于復(fù)雜的矢量圖形形狀,調(diào)整矢量圖形的邊界形狀時(shí),需要手工在邊界線上添加很多控制點(diǎn),通過上下左右調(diào)整這些控制點(diǎn)的位置使得矢量圖形的邊界線形狀達(dá)到想要的效果。但是,如果需要調(diào)整的邊界線很多,并且這些邊界線的形態(tài)基本是一致的情況下,手工調(diào)整邊界線上每一個(gè)控制點(diǎn)不僅需要大量的工作量,也不能保證調(diào)整后所有邊界線的形態(tài)一致。
【發(fā)明內(nèi)容】
[0003]針對(duì)上述問題,本發(fā)明的目的是提供一種不僅能夠一次調(diào)整多個(gè)矢量圖形的上下邊界線形狀,而且能夠使得所有被調(diào)整的邊界線的形態(tài)一致的基于多控制點(diǎn)的矢量圖形上下邊界線形狀自動(dòng)調(diào)整方法。
[0004]為實(shí)現(xiàn)上述目的,本發(fā)明采取以下技術(shù)方案:一種基于多控制點(diǎn)的矢量圖形上下邊界線形狀自動(dòng)調(diào)整方法,其包括以下步驟:1)在計(jì)算機(jī)顯示的視圖范圍內(nèi),在矢量圖形的外圍,任意選取控制點(diǎn),并利用貝塞爾曲線逼近算法及得到的控制點(diǎn)坐標(biāo)數(shù)據(jù)繪制建模線,且建模線經(jīng)過計(jì)算機(jī)顯示的視圖范圍內(nèi)的每個(gè)控制點(diǎn);2)通過計(jì)算機(jī)顯示的視圖范圍中顯示的建模線,循環(huán)所有矢量圖形,以得到需求的矢量圖形邊界線。
[0005]所述步驟I)中,建模線的形狀調(diào)整通過改變控制點(diǎn)上下位置,或者在兩個(gè)控制點(diǎn)之間添加新的控制點(diǎn),或者刪除已有的某個(gè)控制點(diǎn)實(shí)現(xiàn)。
[0006]所述步驟2)包括以下步驟:1、獲取計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形上、下邊界線對(duì)應(yīng)的開始端點(diǎn)startl、start2和結(jié)束端點(diǎn)endl、end2 ; I1、獲取控制計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形上、下邊界線形狀的建模線;111、獲取以startl、start2為開始端點(diǎn),以endl、end2為結(jié)束端點(diǎn)對(duì)應(yīng)的待求上、下邊界線段中控制點(diǎn)數(shù)據(jù);IV、根據(jù)控制計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形上、下邊界線形狀的建模線及上、下邊界線上的控制點(diǎn)數(shù)據(jù),對(duì)應(yīng)計(jì)算上、下邊界線的均勻加密的曲線數(shù)據(jù)點(diǎn),以得到需求的矢量圖形邊界線。
[0007]所述步驟2)的步驟II中包括以下內(nèi)容:循環(huán)計(jì)算機(jī)顯示的視圖范圍內(nèi)的所有建模線,求經(jīng)過上/下邊界的開始端點(diǎn)的垂線與對(duì)應(yīng)的每一建模線的交點(diǎn);選取所有交點(diǎn)中的Y坐標(biāo)值與上/下邊界的開始端點(diǎn)的Y坐標(biāo)值的差值最小并且交點(diǎn)的Y坐標(biāo)值大于上/下邊界的開始端點(diǎn)的Y坐標(biāo)值的交點(diǎn),該交點(diǎn)所在的建模線就是所求的控制計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形上/下邊界形狀的建模線。
[0008]所述步驟2)的步驟IV中包括以下內(nèi)容:①取上邊界線上的控制點(diǎn)數(shù)據(jù)中的第I個(gè)數(shù)據(jù)ptl、第2個(gè)數(shù)據(jù)pt2 ;②獲取控制計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形上邊界線形狀的建模線上均勻加密的數(shù)據(jù)點(diǎn);③利用建模線上均勻加密的數(shù)據(jù)點(diǎn),計(jì)算上邊界線上任意相鄰兩點(diǎn)Ptl點(diǎn)與pt2點(diǎn)之間的線段上的數(shù)據(jù)點(diǎn)取上邊界線上的控制點(diǎn)數(shù)據(jù)中的第2個(gè)數(shù)據(jù)點(diǎn)Pt2、第3個(gè)數(shù)據(jù)點(diǎn)pt3 ;重復(fù)步驟②、步驟③計(jì)算上邊界線上此兩點(diǎn)之間的均勻加密的曲線數(shù)據(jù)點(diǎn);以此類推,求出上邊界線上所有相鄰兩控制點(diǎn)之間的均勻加密的曲線數(shù)據(jù)點(diǎn),并按照先后順序保存均勻加密的曲線數(shù)據(jù)點(diǎn),形成需求的矢量圖形的上邊界線。
[0009]本發(fā)明由于采取以上技術(shù)方案,其具有以下優(yōu)點(diǎn):本發(fā)明利用貝塞爾曲線逼近算法及得到的控制點(diǎn)坐標(biāo)數(shù)據(jù)確定建模線;然后,根據(jù)建模線均勻加密的曲線數(shù)據(jù),依據(jù)三角形相似性質(zhì),計(jì)算與建模線形態(tài)一致的矢量圖形邊界線的均勻加密的曲線數(shù)據(jù)點(diǎn);再利用貝塞爾曲線逼近算法及邊界線完整的均勻加密的曲線數(shù)據(jù)點(diǎn),向當(dāng)前圖形添加邊界線曲線。因此在調(diào)整矢量圖形邊界線形狀時(shí),只需要確定建模線上有限個(gè)數(shù)的控制點(diǎn)位置,所有矢量圖形的邊界線自動(dòng)依據(jù)建模線的形態(tài)調(diào)整自己的邊界線形狀,無需手動(dòng)調(diào)整邊界線上的每一個(gè)控制點(diǎn),通過該方法可以繪制平滑、美觀的邊界線,從而大大降低了工作量,進(jìn)而提高了工作效率。因此,本發(fā)明可以適用于計(jì)算機(jī)矢量圖形繪制及圖形上、下邊界線形狀的調(diào)整。
【專利附圖】
【附圖說明】
[0010]圖1是邊界線均勻加密的曲線數(shù)據(jù)點(diǎn)的計(jì)算過程的流程圖
【具體實(shí)施方式】
[0011]下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)的描述。
[0012]計(jì)算機(jī)輔助繪制的工程地質(zhì)剖面圖是由很多的矢量圖形構(gòu)成,生成的矢量圖形的上下邊界線形狀可能與需求的形狀不一致,并且視圖中可能會(huì)有很多的矢量圖形,尤其是那些在位置上具有上下關(guān)系的矢量圖形的上下邊界線的形態(tài)是一致的,此時(shí)需要針對(duì)顯示在計(jì)算機(jī)顯示的視圖范圍內(nèi)的每一個(gè)矢量圖形的邊界線上的控制點(diǎn)進(jìn)行調(diào)整,以實(shí)現(xiàn)其邊界線的調(diào)整,進(jìn)而得到需求的最終的矢量圖形邊界線。
[0013]本發(fā)明基于多控制點(diǎn)的矢量圖形上下邊界線形狀自動(dòng)調(diào)整方法,其包括以下步驟:
[0014]I)在計(jì)算機(jī)顯示的視圖范圍內(nèi),在矢量圖形的外圍,一般是在矢量圖形的上面的空白區(qū)域,任意選取控制點(diǎn)并得到其位置坐標(biāo)。將控制點(diǎn)的位置坐標(biāo)轉(zhuǎn)換為設(shè)備坐標(biāo),并保證控制點(diǎn)的坐標(biāo)系統(tǒng)與矢量圖形的坐標(biāo)系統(tǒng)一致,以便與實(shí)際應(yīng)用情況相符。
[0015]利用貝塞爾曲線逼近算法及得到的控制點(diǎn)坐標(biāo)數(shù)據(jù),向計(jì)算機(jī)顯示的視圖范圍內(nèi)添加的一段樣條曲線,即建模線,該建模線經(jīng)過視圖范圍內(nèi)的每個(gè)控制點(diǎn)。上述建模線的形狀調(diào)整能夠通過改變控制點(diǎn)的上下位置,或者在兩個(gè)控制點(diǎn)之間添加新的控制點(diǎn),或者刪除已有的某個(gè)控制點(diǎn)實(shí)現(xiàn)。
[0016]需要說明的是,由于在計(jì)算機(jī)顯示的視圖范圍內(nèi)繪制的矢量圖形很多,如果上下兩個(gè)矢量圖形的上、下邊界線的形態(tài)不一致,就分別在兩個(gè)矢量圖形各自的上部外圍區(qū)域繪制一條建模線。如果幾個(gè)矢量圖形的上、下邊界線的形態(tài)是一致的,就在最上面的那個(gè)矢量圖形的上部外部區(qū)域繪制一條建模線,所以在計(jì)算機(jī)顯示的視圖范圍內(nèi)可能會(huì)有多條建模線,每一條建模線只是控制此建模線與下面那條建模線之間區(qū)域內(nèi)繪制的矢量圖形的上、下邊界線形狀,即每個(gè)矢量圖形的上下邊界線形狀只是被在它上面且距離最近的那條建模線控制,通常控制矢量圖形的建模線在矢量圖形的上部外圍區(qū)域。通過建模線調(diào)整矢量圖形邊界線,從而得到需求的矢量圖形邊界線。
[0017]在工程地質(zhì)剖面圖中,矢量圖形不重疊,所以繪制的這些建模線之間也不會(huì)重疊。
[0018]2)通過計(jì)算機(jī)顯示的視圖范圍內(nèi)顯示的建模線循環(huán)所有矢量圖形,以得到需求的矢量圖形邊界線。
[0019]1、獲取計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形上邊界線開始端點(diǎn)與結(jié)束端點(diǎn)startl、endl,下邊界線開始端點(diǎn)與結(jié)束端點(diǎn)start2、end2,且每個(gè)端點(diǎn)都有一對(duì)(x, y)坐標(biāo);
[0020]I1、獲取控制計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形上、下邊界線形狀的建模線;
[0021]在計(jì)算機(jī)顯示的視圖范圍內(nèi),在矢量圖形的上部外圍區(qū)域內(nèi)可能會(huì)有多條建模線,而且矢量圖形的上、下邊界線的形狀都是由選擇的建模線控制,所以在本發(fā)明中選取矢量圖形的上邊界線端點(diǎn)數(shù)據(jù)進(jìn)行計(jì)算,并得到控制計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形上、下邊界線形狀的建模線,其過程如下:
[0022]循環(huán)計(jì)算機(jī)顯示的視圖范圍內(nèi)的所有建模線,求經(jīng)過startl點(diǎn)的垂線(經(jīng)過startl點(diǎn)且與X軸垂直的直線)與每一建模線的交點(diǎn)。選取所有交點(diǎn)中的Y坐標(biāo)值與startl的Y坐標(biāo)值的差值最小并且交點(diǎn)的Y坐標(biāo)值大于startl的Y坐標(biāo)值,那么此交點(diǎn)所在的建模線就是所求的控制計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形上邊界形狀的建模線。
[0023]同理,得到控制計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形下邊界形狀的建模線。
[0024]II1、獲取以startl為開始端點(diǎn)、以endl為結(jié)束端點(diǎn)的待求上邊界線段中控制點(diǎn)數(shù)據(jù),并獲取以start2為開始端點(diǎn)、以end2為結(jié)束端點(diǎn)的待求下邊界線段中控制點(diǎn)數(shù)據(jù);以便結(jié)合開始端點(diǎn)、結(jié)束端點(diǎn)成為計(jì)算需求的邊界線上的控制點(diǎn)數(shù)據(jù);
[0025]在工程地質(zhì)剖面圖中,繪制的最初始的矢量圖形的上、下邊界線是直線段,只有開始端點(diǎn)、結(jié)束端點(diǎn),此時(shí)控制點(diǎn)個(gè)數(shù)為O。但是為了控制邊界線的形態(tài),需要在邊界線的端點(diǎn)之間其它位置上添加新的控制點(diǎn)。在端點(diǎn)與控制點(diǎn)之間的其它位置上可以添加新的控制點(diǎn),在兩個(gè)相鄰的控制點(diǎn)之間也可以添加新的控制點(diǎn),此時(shí)控制點(diǎn)個(gè)數(shù)大于O。如果在兩個(gè)相鄰的控制點(diǎn)PT1、PT2之間添加一個(gè)新的控制點(diǎn)PT3,原來以PTl為開始端點(diǎn)、以PT2為結(jié)束端點(diǎn)的直線段L就被分解為兩個(gè)新的直線段,其中一邊新的直線段以PTl為開始端點(diǎn)、以PT3為結(jié)束端點(diǎn),另一邊新的直線段以PT3為開始端點(diǎn)、以PT2為結(jié)束端點(diǎn),再通過PT3點(diǎn)將兩個(gè)新的直線段連接在一起構(gòu)成矢量圖形的邊界線,此時(shí)的邊界線由多個(gè)直線段首尾相連構(gòu)成。所以矢量圖形的邊界線可能是一條直線,也可能是一條由多個(gè)直線段首尾相連構(gòu)成的折線。然后通過改變控制點(diǎn)的上下位置,進(jìn)而調(diào)整邊界線形狀。
[0026]由于控制計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形上邊界形狀的建模線計(jì)算需求的邊界線數(shù)據(jù)時(shí),需要按照邊界線上的線段分別進(jìn)行計(jì)算,因此設(shè)端點(diǎn)startl、endl及上邊界線上添加的控制點(diǎn)數(shù)據(jù)成為后續(xù)計(jì)算需求的上邊界線上的控制點(diǎn)數(shù)據(jù);端點(diǎn)start2、end2及下邊界線上添加的控制點(diǎn)數(shù)據(jù)成為后續(xù)計(jì)算需求的下邊界線上的控制點(diǎn)數(shù)據(jù)。
[0027]IV、根據(jù)獲取控制計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形上邊界線形狀的建模線及上邊界線上的控制點(diǎn)數(shù)據(jù),計(jì)算上邊界線的均勻加密的曲線數(shù)據(jù)點(diǎn),從而得到矢量圖形需求的上邊界線,同理得到矢量圖形需求的下邊界線。
[0028]由于上、下邊界線的均勻加密的曲線數(shù)據(jù)點(diǎn)的過程相同,故只以上邊界線的均勻加密的曲線數(shù)據(jù)點(diǎn)的求解過程為例進(jìn)行說明,如圖1所示,其步驟如下:
[0029]①取上邊界線上的控制點(diǎn)數(shù)據(jù)中的第I個(gè)數(shù)據(jù)ptl、第2個(gè)數(shù)據(jù)pt2 ;
[0030]②獲取控制計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形上邊界線形狀的建模線上均勻加密的數(shù)據(jù)點(diǎn);
[0031]因?yàn)槔L制出來的原始建模線上的數(shù)據(jù)點(diǎn)是不均勻的,在計(jì)算矢量圖形邊界線的時(shí)候需要建模線上的數(shù)據(jù)點(diǎn)是均勻的,這樣計(jì)算出來的矢量圖形邊界線上的數(shù)據(jù)也是均勻的。為了獲取均勻的建模線數(shù)據(jù),首先需要在建模線的原始線條上兩側(cè)再增加更多的數(shù)據(jù)點(diǎn),形成建模線加寬后的路徑。然后,獲取建模線加寬后的繪圖路徑邊界上各點(diǎn)的數(shù)據(jù)。最后,根據(jù)獲取的建模線加寬后的繪圖路徑邊界上的各點(diǎn)數(shù)據(jù),在Ptl的X坐標(biāo)及pt2的X坐標(biāo)范圍內(nèi)的數(shù)據(jù)點(diǎn),將這些數(shù)據(jù)點(diǎn)按照每N個(gè)為一組,且N為正整數(shù),計(jì)算每組數(shù)據(jù)的X坐標(biāo)和Y坐標(biāo)的均值,每組的X均值、Y均值構(gòu)成一個(gè)曲線數(shù)據(jù)點(diǎn)temp,這些曲線數(shù)據(jù)點(diǎn)就是所求的建模線上均勻加密的數(shù)據(jù)點(diǎn)。
[0032]需要說明的是,將數(shù)據(jù)點(diǎn)以N個(gè)為標(biāo)準(zhǔn)分為一組,不是固定的,取決于繪圖的需要,也可以取每10個(gè)或者20個(gè)數(shù)據(jù)點(diǎn)為一組,但是這樣增加了計(jì)算量,同時(shí)也增加了所求數(shù)據(jù)的個(gè)數(shù)。在本發(fā)明中取每50個(gè)數(shù)據(jù)為一組就可以達(dá)到繪圖的需要。
[0033]③利用建模線上均勻加密的數(shù)據(jù)點(diǎn),計(jì)算上邊界線上任意相鄰兩點(diǎn)ptl點(diǎn)與pt2點(diǎn)之間的線段上的數(shù)據(jù)點(diǎn)。
[0034]設(shè)建模線上均勻加密的數(shù)據(jù)點(diǎn)構(gòu)成的曲線為已知曲線段;
[0035]建模線上均勻加密的數(shù)據(jù)點(diǎn)中的兩個(gè)端點(diǎn)數(shù)據(jù)構(gòu)成的直線段為已知直線段1,長(zhǎng)度為d;
[0036]ptl點(diǎn)與pt2點(diǎn)之間的直線段為已知直線段2,長(zhǎng)度為dCal ;
[0037]以ptl為起點(diǎn)、以pt2為結(jié)束點(diǎn)并且形態(tài)與已知曲線段一致的曲線為待求曲線段,其原理如下:
[0038]首先,根據(jù)X坐標(biāo)按照從小到大順序排序已知直線段2的兩個(gè)端點(diǎn)ptl、pt2,以便按照從小到大的順序。
[0039]然后,計(jì)算已知直線段2的直線距離與已知直線段I的直線段距離的比例系數(shù)ratel ;
[0040]利用已知曲線段上的均勻加密數(shù)據(jù)點(diǎn)Ci,其中,第一個(gè)數(shù)據(jù)表示為C1點(diǎn),...,最后一個(gè)數(shù)據(jù)表示為Cn點(diǎn),計(jì)算待求曲線段上與已知曲線段形態(tài)一致的均勻加密的曲線數(shù)據(jù)點(diǎn),其具體步驟如下:
[0041]a、計(jì)算已知曲線段上的數(shù)據(jù)點(diǎn)中第一個(gè)數(shù)據(jù)C1到已知直線段I的垂足intersect,過程如下:
[0042]已知直線段I的兩個(gè)端點(diǎn)分別為:點(diǎn)C1,坐標(biāo)為(Xpy1);點(diǎn)(V坐標(biāo)為(Xn,yn)。已知曲線段上的數(shù)據(jù)點(diǎn)中任意一點(diǎn),坐標(biāo)為(m, η)。
[0043]由C1, Cn 兩點(diǎn)確定的直線方程為 Ax+By+C = 0,其中,A = Yn-Y1, B = X1-Xn, C =Υι* (χη-χι) -Xi* (yn-yi)。
[0044]求已知曲線段上的數(shù)據(jù)點(diǎn)中第一個(gè)數(shù)據(jù)C1至已知直線段I的垂足intersect,垂足 intersect 的坐標(biāo)(xf,yf),其計(jì)算公式:xf = _0*D+A*C)/ (B'2+A"2),其中 D = A*n_B*m ;yf = B*(χ-m)/A+n ;
[0045]b、計(jì)算已知曲線段上的數(shù)據(jù)點(diǎn)中第一個(gè)數(shù)據(jù)C1到已知直線段I的最短距離Distance ;
[0046]已知曲線段上的數(shù)據(jù)點(diǎn)中第一個(gè)數(shù)據(jù)C1與垂足intersect的距離,已知曲線段上的數(shù)據(jù)點(diǎn)中第一個(gè)數(shù)據(jù)C1坐標(biāo)為(m, η),垂足的坐標(biāo)為(xf, yf),則采用Distance =squrt ((yf-n) '2+ (xf-m) "2)計(jì)算最短距離 Distance ;
[0047]C、計(jì)算垂足intersect與已知直線段I起點(diǎn)構(gòu)成的直線段占整個(gè)已知直線段I的比例系數(shù)rate ;
[0048]已知直線段I的兩個(gè)端點(diǎn)分別為:點(diǎn)C1,坐標(biāo)為(Xpy1),點(diǎn)(V坐標(biāo)為(xn,yn)。垂足的坐標(biāo)為(xf,yf) ο 采用 rate = squrt ((Yf-Y1) '2+(Xf-X1) ~2)/squrt ((Yn-Y1) ~2+(Xn-X1) ~2)計(jì)算比例系數(shù)rate ;
[0049]d、計(jì)算已知直線段2上,以ptl為起點(diǎn),與rate比例一致的線段長(zhǎng)度radius =dCal*rate ;
[0050]e、計(jì)算已知直線段2上與ptl的距離為radius的點(diǎn)intersectCal ;
[0051]設(shè)ptl 點(diǎn)的坐標(biāo)(Px1, Py1),pt2 點(diǎn)的坐標(biāo)(px2, py2)。點(diǎn) intersectCal 是待求曲線段上的點(diǎn)到已知直線段2的垂足,坐標(biāo)(X。,y。),此點(diǎn)同時(shí)也是已知直線段2上的點(diǎn)。通過公式(yc-pyi) ^+(Xc-PX1) '2 = radius~2 和(Yc-Py1)/ (Xc-PX1) = (Py2-Py1) / (PX2-PX1)計(jì)算點(diǎn) intersectCal 的坐標(biāo)(x。,yc);
[0052]f、計(jì)算待求曲線段上的曲線數(shù)據(jù)點(diǎn)ptCal ;
[0053]已知直線段2的兩個(gè)端點(diǎn)ptl點(diǎn)的坐標(biāo)(Px1, Py1), pt2點(diǎn)的坐標(biāo)(px2, py2),又已知垂足點(diǎn)intersectCal的坐標(biāo)(x。,y。),求曲線數(shù)據(jù)點(diǎn)ptCal,坐標(biāo)為(px3, py3),具體過程如下:
[0054]首先,求出已知直線段2的法向量V,即過點(diǎn)ptCal與點(diǎn)intersectCal直線的斜率V = (px「px2) / (Py2-Py1);
[0055]然后,利用公式(py3-yc)/(px3-xc)= V 和 Squrt ((py3-yc) '2+ (px3-xc) '2)=ratel氺distance 計(jì)算點(diǎn) ptCal ;
[0056]重復(fù)步驟a)?f),依次求出并保存已知曲線段上的數(shù)據(jù)點(diǎn)中第二個(gè)數(shù)據(jù)C2相對(duì)應(yīng)的待求曲線段上的曲線數(shù)據(jù)點(diǎn)PtCal,以此類推,直到得到待求曲線上所有的數(shù)據(jù)點(diǎn)。
[0057]④采用相同方法,取上邊界線上的控制點(diǎn)數(shù)據(jù)中的第2個(gè)數(shù)據(jù)點(diǎn)pt2、第3個(gè)數(shù)據(jù)點(diǎn)Pt3。按照第②步、第③步的方法計(jì)算上邊界線上此兩點(diǎn)之間的均勻加密的曲線數(shù)據(jù)點(diǎn)。以此類推,求出上邊界線上所有相鄰兩控制點(diǎn)之間的均勻加密的曲線數(shù)據(jù)點(diǎn),并按照先后順序保存均勻加密的曲線數(shù)據(jù)點(diǎn),這些形成需求的矢量圖形的上邊界線。同理得到需求的矢量圖形的下邊界線,從而得到需求的矢量圖形邊界線。
[0058]以上所述,僅為本發(fā)明較佳的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),根據(jù)本發(fā)明的技術(shù)方案及其發(fā)明構(gòu)思加以等同替換或改變,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種基于多控制點(diǎn)的矢量圖形上下邊界線形狀自動(dòng)調(diào)整方法,其包括以下步驟: 1)在計(jì)算機(jī)顯示的視圖范圍內(nèi),在矢量圖形的外圍,任意選取控制點(diǎn),并利用貝塞爾曲線逼近算法及得到的控制點(diǎn)坐標(biāo)數(shù)據(jù)繪制建模線,且建模線經(jīng)過計(jì)算機(jī)顯示的視圖范圍內(nèi)的每個(gè)控制點(diǎn); 2)通過計(jì)算機(jī)顯示的視圖范圍中顯示的建模線,循環(huán)所有矢量圖形,以得到需求的矢量圖形邊界線。
2.如權(quán)利要求1所述的基于多控制點(diǎn)的矢量圖形上下邊界線形狀自動(dòng)調(diào)整方法,其特征在于:所述步驟I)中,建模線的形狀調(diào)整通過改變控制點(diǎn)上下位置,或者在兩個(gè)控制點(diǎn)之間添加新的控制點(diǎn),或者刪除已有的某個(gè)控制點(diǎn)實(shí)現(xiàn)。
3.如權(quán)利要求1所述的基于多控制點(diǎn)的矢量圖形上下邊界線形狀自動(dòng)調(diào)整方法,其特征在于:所述步驟2)包括以下步驟: 1、獲取計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形上、下邊界線對(duì)應(yīng)的開始端點(diǎn)startl、start2 和結(jié)束端點(diǎn) endl、end2 ; I1、獲取控制計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形上、下邊界線形狀的建模線; II1、獲取以startl、start2為開始端點(diǎn),以endl、end2為結(jié)束端點(diǎn)對(duì)應(yīng)的待求上、下邊界線段中控制點(diǎn)數(shù)據(jù); IV、根據(jù)控制計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形上、下邊界線形狀的建模線及上、下邊界線上的控制點(diǎn)數(shù)據(jù),對(duì)應(yīng)計(jì)算上、下邊界線的均勻加密的曲線數(shù)據(jù)點(diǎn),以得到需求的矢量圖形邊界線。
4.如權(quán)利要求2所述的基于多控制點(diǎn)的矢量圖形上下邊界線形狀自動(dòng)調(diào)整方法,其特征在于:所述步驟2)包括以下步驟: 1、獲取計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形上、下邊界線對(duì)應(yīng)的開始端點(diǎn)startl、start2 和結(jié)束端點(diǎn) endl、end2 ; I1、獲取控制計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形上、下邊界線形狀的建模線; II1、獲取以startl、start2為開始端點(diǎn),以endl、end2為結(jié)束端點(diǎn)對(duì)應(yīng)的待求上、下邊界線段中控制點(diǎn)數(shù)據(jù); IV、根據(jù)控制計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形上、下邊界線形狀的建模線及上、下邊界線上的控制點(diǎn)數(shù)據(jù),對(duì)應(yīng)計(jì)算上、下邊界線的均勻加密的曲線數(shù)據(jù)點(diǎn),以得到需求的矢量圖形邊界線。
5.如權(quán)利要求3或4所述的基于多控制點(diǎn)的矢量圖形上下邊界線形狀自動(dòng)調(diào)整方法,其特征在于:所述步驟2)的步驟II中包括以下內(nèi)容:循環(huán)計(jì)算機(jī)顯示的視圖范圍內(nèi)的所有建模線,求經(jīng)過上/下邊界的開始端點(diǎn)的垂線與對(duì)應(yīng)的每一建模線的交點(diǎn);選取所有交點(diǎn)中的Y坐標(biāo)值與上/下邊界的開始端點(diǎn)的Y坐標(biāo)值的差值最小并且交點(diǎn)的Y坐標(biāo)值大于上/下邊界的開始端點(diǎn)的Y坐標(biāo)值的交點(diǎn),該交點(diǎn)所在的建模線就是所求的控制計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形上/下邊界形狀的建模線。
6.如權(quán)利要求3或4所述的基于多控制點(diǎn)的矢量圖形上下邊界線形狀自動(dòng)調(diào)整方法,其特征在于:所述步驟2)的步驟IV中包括以下內(nèi)容: ①取上邊界線上的控制點(diǎn)數(shù)據(jù)中的第I個(gè)數(shù)據(jù)ptl、第2個(gè)數(shù)據(jù)pt2; ②獲取控制計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形上邊界線形狀的建模線上均勻加密的數(shù)據(jù)點(diǎn); ③利用建模線上均勻加密的數(shù)據(jù)點(diǎn),計(jì)算上邊界線上任意相鄰兩點(diǎn)Ptl點(diǎn)與pt2點(diǎn)之間的線段上的數(shù)據(jù)點(diǎn); ④取上邊界線上的控制點(diǎn)數(shù)據(jù)中的第2個(gè)數(shù)據(jù)點(diǎn)pt2、第3個(gè)數(shù)據(jù)點(diǎn)pt3;重復(fù)步驟②、步驟③計(jì)算上邊界線上此兩點(diǎn)之間的均勻加密的曲線數(shù)據(jù)點(diǎn);以此類推,求出上邊界線上所有相鄰兩控制點(diǎn)之間的均勻加密的曲線數(shù)據(jù)點(diǎn),并按照先后順序保存均勻加密的曲線數(shù)據(jù)點(diǎn),形成需求的矢量圖形的上邊界線。
7.如權(quán)利要求5所述的基于多控制點(diǎn)的矢量圖形上下邊界線形狀自動(dòng)調(diào)整方法,其特征在于:所述步驟2)的步驟IV中包括以下內(nèi)容: ①取上邊界線上的控制點(diǎn)數(shù)據(jù)中的第I個(gè)數(shù)據(jù)ptl、第2個(gè)數(shù)據(jù)pt2; ②獲取控制計(jì)算機(jī)顯示的視圖范圍內(nèi)的矢量圖形上邊界線形狀的建模線上均勻加密的數(shù)據(jù)點(diǎn); ③利用建模線上均勻加密的數(shù)據(jù)點(diǎn),計(jì)算上邊界線上任意相鄰兩點(diǎn)Ptl點(diǎn)與pt2點(diǎn)之間的線段上的數(shù)據(jù)點(diǎn); ④取上邊界線上的控制點(diǎn)數(shù)據(jù)中的第2個(gè)數(shù)據(jù)點(diǎn)pt2、第3個(gè)數(shù)據(jù)點(diǎn)pt3;重復(fù)步驟②、步驟③計(jì)算上邊界線上此兩點(diǎn)之間的均勻加密的曲線數(shù)據(jù)點(diǎn);以此類推,求出上邊界線上所有相鄰兩控制點(diǎn)之間的均勻加密的曲線數(shù)據(jù)點(diǎn),并按照先后順序保存均勻加密的曲線數(shù)據(jù)點(diǎn),形成需求的矢量圖形的上邊界線。
【文檔編號(hào)】G06T1/00GK104200423SQ201410432790
【公開日】2014年12月10日 申請(qǐng)日期:2014年8月27日 優(yōu)先權(quán)日:2014年8月27日
【發(fā)明者】謝兄, 張維石, 史金余, 曹志英, 李輝, 翟華偉, 陳修權(quán) 申請(qǐng)人:大連海事大學(xué)